From ac307683e0456ef2acd4ddfd3bc3b97b8fc75d8c Mon Sep 17 00:00:00 2001 From: ajaysi Date: Wed, 24 Sep 2025 16:08:24 +0530 Subject: [PATCH] Alpha Subscription Implementation Plan --- GSC_INTEGRATION_README.md | 268 ---- .../ai_blog_writer/ai_blog_generator.py | 639 --------- .../ai_blog_writer/ai_blog_generator_utils.py | 867 ----------- .../ai_blog_writer/blog_ai_research_utils.py | 420 ------ .../ai_blog_writer/blog_from_google_serp.py | 199 --- .../ai_blog_writer/blog_writer_styles.py | 252 ---- .../keywords_to_blog_streamlit.py | 864 ----------- .../ai_letter_writer/business_letters.py | 1271 ----------------- .../ai_letter_writer/cover_letters.py | 1135 --------------- .../ai_letter_writer/formal_letters.py | 1184 --------------- .../ai_letter_writer/letter_templates.py | 758 ---------- .../ai_writers/ai_letter_writer/main.py | 236 --- .../ai_letter_writer/personal_letter.py | 1121 --------------- .../ai_letter_writer/utils/letter_analyzer.py | 493 ------- .../utils/letter_formatter.py | 545 ------- .../utils/letter_templates.py | 988 ------------- .../ai_writers/ai_outline_writer/README.md | 557 -------- .../ai_outline_writer/get_blog_outline.py | 317 ---- .../ai_outline_writer/outline_ui.py | 739 ---------- .../blog_rewriter_updater/README.md | 163 --- .../blog_rewriter_updater/ai_blog_rewriter.py | 11 - .../blog_rewriter_updater/blog_rewriter_ui.py | 624 -------- .../blog_rewriter_utils.py | 595 -------- ToBeMigrated/blog_metadata/README.md | 47 - .../blog_metadata/get_blog_metadata.py | 435 ------ ToBeMigrated/chatbot_custom/README.md | 222 --- ToBeMigrated/chatbot_custom/core/__init__.py | 21 - .../chatbot_custom/core/context_manager.py | 413 ------ .../chatbot_custom/core/intent_analyzer.py | 413 ------ .../chatbot_custom/core/tool_router.py | 285 ---- .../chatbot_custom/core/workflow_engine.py | 171 --- .../enhanced_alwrity_chatbot.py | 1156 --------------- ToBeMigrated/chatbot_custom/ui/__init__.py | 12 - ToBeMigrated/chatbot_custom/ui/sidebar.py | 396 ----- ToBeMigrated/database/__init__.py | 164 --- ToBeMigrated/database/models.py | 105 -- ToBeMigrated/database/twitter_init.py | 524 ------- ToBeMigrated/database/twitter_models.py | 791 ---------- ToBeMigrated/database/twitter_service.py | 766 ---------- ToBeMigrated/utils/ai_research.py | 99 -- .../utils/api_key_manager/__init__.py | 54 - .../utils/api_key_manager/ai_research.py | 42 - .../api_key_manager/components/README.md | 178 --- .../api_key_manager/components/__init__.py | 22 - .../api_key_manager/components/ai_research.py | 137 -- .../components/personalization.py | 188 --- ToBeMigrated/utils/content_generators.py | 79 - ToBeMigrated/utils/take_url_screenshot.py | 113 -- ToBeMigrated/utils/website_analyzer/README.md | 181 --- .../utils/website_analyzer/__init__.py | 6 - .../utils/website_analyzer/analyzer.py | 697 --------- .../website_analyzer/content_gap_analyzer.py | 134 -- ToBeMigrated/workspace/AskAlwrity-min.ico | Bin 80525 -> 0 bytes ToBeMigrated/workspace/alwrity_ai_writer.png | Bin 275955 -> 0 bytes .../workspace/alwrity_blog_post_writer.gif | Bin 1378811 -> 0 bytes ToBeMigrated/workspace/alwrity_logo.png | Bin 192304 -> 0 bytes tatus | 5 - 57 files changed, 22102 deletions(-) delete mode 100644 GSC_INTEGRATION_README.md delete mode 100644 ToBeMigrated/ai_writers/ai_blog_writer/ai_blog_generator.py delete mode 100644 ToBeMigrated/ai_writers/ai_blog_writer/ai_blog_generator_utils.py delete mode 100644 ToBeMigrated/ai_writers/ai_blog_writer/blog_ai_research_utils.py delete mode 100644 ToBeMigrated/ai_writers/ai_blog_writer/blog_from_google_serp.py delete mode 100644 ToBeMigrated/ai_writers/ai_blog_writer/blog_writer_styles.py delete mode 100644 ToBeMigrated/ai_writers/ai_blog_writer/keywords_to_blog_streamlit.py delete mode 100644 ToBeMigrated/ai_writers/ai_letter_writer/business_letters.py delete mode 100644 ToBeMigrated/ai_writers/ai_letter_writer/cover_letters.py delete mode 100644 ToBeMigrated/ai_writers/ai_letter_writer/formal_letters.py delete mode 100644 ToBeMigrated/ai_writers/ai_letter_writer/letter_templates.py delete mode 100644 ToBeMigrated/ai_writers/ai_letter_writer/main.py delete mode 100644 ToBeMigrated/ai_writers/ai_letter_writer/personal_letter.py delete mode 100644 ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_analyzer.py delete mode 100644 ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_formatter.py delete mode 100644 ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_templates.py delete mode 100644 ToBeMigrated/ai_writers/ai_outline_writer/README.md delete mode 100644 ToBeMigrated/ai_writers/ai_outline_writer/get_blog_outline.py delete mode 100644 ToBeMigrated/ai_writers/ai_outline_writer/outline_ui.py delete mode 100644 ToBeMigrated/ai_writers/blog_rewriter_updater/README.md delete mode 100644 ToBeMigrated/ai_writers/blog_rewriter_updater/ai_blog_rewriter.py delete mode 100644 ToBeMigrated/ai_writers/blog_rewriter_updater/blog_rewriter_ui.py delete mode 100644 ToBeMigrated/ai_writers/blog_rewriter_updater/blog_rewriter_utils.py delete mode 100644 ToBeMigrated/blog_metadata/README.md delete mode 100644 ToBeMigrated/blog_metadata/get_blog_metadata.py delete mode 100644 ToBeMigrated/chatbot_custom/README.md delete mode 100644 ToBeMigrated/chatbot_custom/core/__init__.py delete mode 100644 ToBeMigrated/chatbot_custom/core/context_manager.py delete mode 100644 ToBeMigrated/chatbot_custom/core/intent_analyzer.py delete mode 100644 ToBeMigrated/chatbot_custom/core/tool_router.py delete mode 100644 ToBeMigrated/chatbot_custom/core/workflow_engine.py delete mode 100644 ToBeMigrated/chatbot_custom/enhanced_alwrity_chatbot.py delete mode 100644 ToBeMigrated/chatbot_custom/ui/__init__.py delete mode 100644 ToBeMigrated/chatbot_custom/ui/sidebar.py delete mode 100644 ToBeMigrated/database/__init__.py delete mode 100644 ToBeMigrated/database/models.py delete mode 100644 ToBeMigrated/database/twitter_init.py delete mode 100644 ToBeMigrated/database/twitter_models.py delete mode 100644 ToBeMigrated/database/twitter_service.py delete mode 100644 ToBeMigrated/utils/ai_research.py delete mode 100644 ToBeMigrated/utils/api_key_manager/__init__.py delete mode 100644 ToBeMigrated/utils/api_key_manager/ai_research.py delete mode 100644 ToBeMigrated/utils/api_key_manager/components/README.md delete mode 100644 ToBeMigrated/utils/api_key_manager/components/__init__.py delete mode 100644 ToBeMigrated/utils/api_key_manager/components/ai_research.py delete mode 100644 ToBeMigrated/utils/api_key_manager/components/personalization.py delete mode 100644 ToBeMigrated/utils/content_generators.py delete mode 100644 ToBeMigrated/utils/take_url_screenshot.py delete mode 100644 ToBeMigrated/utils/website_analyzer/README.md delete mode 100644 ToBeMigrated/utils/website_analyzer/__init__.py delete mode 100644 ToBeMigrated/utils/website_analyzer/analyzer.py delete mode 100644 ToBeMigrated/utils/website_analyzer/content_gap_analyzer.py delete mode 100644 ToBeMigrated/workspace/AskAlwrity-min.ico delete mode 100644 ToBeMigrated/workspace/alwrity_ai_writer.png delete mode 100644 ToBeMigrated/workspace/alwrity_blog_post_writer.gif delete mode 100644 ToBeMigrated/workspace/alwrity_logo.png delete mode 100644 tatus diff --git a/GSC_INTEGRATION_README.md b/GSC_INTEGRATION_README.md deleted file mode 100644 index 22983d2f..00000000 --- a/GSC_INTEGRATION_README.md +++ /dev/null @@ -1,268 +0,0 @@ -# Google Search Console (GSC) Integration for ALwrity - -This document describes the complete Google Search Console integration implemented for ALwrity, allowing users to connect their GSC accounts and fetch real website analytics data. - -## ๐Ÿš€ Features - -### Backend Features -- **OAuth2 Authentication**: Secure Google OAuth2 flow for GSC access -- **User Credential Management**: Encrypted storage of user OAuth tokens -- **Data Caching**: SQLite-based caching system for GSC data -- **Multi-user Support**: Each user can connect their own GSC account -- **Real-time Analytics**: Fetch live search analytics, sitemaps, and site data -- **Comprehensive Logging**: Detailed logging throughout the system - -### Frontend Features -- **GSC Login Button**: Seamless OAuth connection flow -- **Status Management**: Real-time connection status display -- **Popup Authentication**: Secure OAuth flow in popup window -- **Error Handling**: Comprehensive error management and user feedback -- **Responsive UI**: Material-UI components matching existing dashboard style - -## ๐Ÿ“ File Structure - -### Backend Files -``` -backend/ -โ”œโ”€โ”€ services/ -โ”‚ โ””โ”€โ”€ gsc_service.py # Core GSC service with OAuth and data management -โ”œโ”€โ”€ routers/ -โ”‚ โ””โ”€โ”€ gsc_auth.py # FastAPI router for GSC endpoints -โ”œโ”€โ”€ middleware/ -โ”‚ โ””โ”€โ”€ auth_middleware.py # Clerk authentication middleware -โ”œโ”€โ”€ gsc_credentials.json # Google OAuth2 client credentials -โ”œโ”€โ”€ env_template.txt # Environment variables template -โ””โ”€โ”€ requirements.txt # Updated with GSC dependencies -``` - -### Frontend Files -``` -frontend/src/ -โ”œโ”€โ”€ api/ -โ”‚ โ””โ”€โ”€ gsc.ts # GSC API client -โ”œโ”€โ”€ components/SEODashboard/components/ -โ”‚ โ”œโ”€โ”€ GSCLoginButton.tsx # GSC connection UI component -โ”‚ โ””โ”€โ”€ GSCAuthCallback.tsx # OAuth callback handler -โ”œโ”€โ”€ env_template.txt # Frontend environment template -โ””โ”€โ”€ package.json # Updated with Clerk dependencies -``` - -## ๐Ÿ”ง API Endpoints - -### GSC Authentication & Management -- `GET /gsc/auth/url` - Get OAuth authorization URL -- `GET /gsc/callback` - Handle OAuth callback -- `GET /gsc/status` - Check GSC connection status -- `DELETE /gsc/disconnect` - Revoke GSC access - -### GSC Data Retrieval -- `GET /gsc/sites` - Get user's GSC sites -- `POST /gsc/analytics` - Fetch search analytics data -- `GET /gsc/sitemaps/{site_url}` - Get sitemaps for a site -- `GET /gsc/health` - Health check endpoint - -## ๐Ÿ—„๏ธ Database Schema - -### GSC Credentials Table -```sql -CREATE TABLE gsc_credentials ( - user_id TEXT PRIMARY KEY, - credentials_json TEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -); -``` - -### GSC Data Cache Table -```sql -CREATE TABLE gsc_data_cache ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - user_id TEXT NOT NULL, - site_url TEXT NOT NULL, - data_type TEXT NOT NULL, - data_json TEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, - expires_at TIMESTAMP NOT NULL, - FOREIGN KEY (user_id) REFERENCES gsc_credentials (user_id) -); -``` - -## ๐Ÿ” Authentication Flow - -1. **User clicks "Connect GSC"** โ†’ Frontend requests OAuth URL -2. **Backend generates OAuth URL** โ†’ Returns Google authorization URL -3. **User authorizes in popup** โ†’ Google redirects to callback -4. **Backend handles callback** โ†’ Exchanges code for tokens -5. **Credentials stored securely** โ†’ User can now access GSC data -6. **Real data replaces mock data** โ†’ Dashboard shows live analytics - -## ๐Ÿ› ๏ธ Setup Instructions - -### 1. Backend Setup - -1. **Install Dependencies**: - ```bash - cd backend - pip install -r requirements.txt - ``` - -2. **Configure Environment**: - ```bash - cp env_template.txt .env - # Edit .env with your actual values - ``` - -3. **Google OAuth Setup**: - - Copy your Google OAuth credentials to `gsc_credentials.json` - - Ensure redirect URIs include both backend and frontend URLs - -4. **Start Backend**: - ```bash - python app.py - ``` - -### 2. Frontend Setup - -1. **Install Dependencies**: - ```bash - cd frontend - npm install - ``` - -2. **Configure Environment**: - ```bash - cp env_template.txt .env - # Edit .env with your actual values - ``` - -3. **Start Frontend**: - ```bash - npm start - ``` - -## ๐Ÿ”‘ Environment Variables - -### Backend (.env) -```env -# Clerk Authentication -CLERK_SECRET_KEY=your_clerk_secret_key_here - -# Google Search Console -GSC_REDIRECT_URI=http://localhost:8000/gsc/callback - -# Development Settings -DISABLE_AUTH=false -``` - -### Frontend (.env) -```env -# Clerk Authentication -NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key_here - -# CopilotKit -REACT_APP_COPILOTKIT_API_KEY=your_copilotkit_api_key_here -``` - -## ๐Ÿ“Š Data Types Retrieved - -### Search Analytics -- **Clicks**: Number of clicks from search results -- **Impressions**: Number of times site appeared in search -- **CTR**: Click-through rate percentage -- **Position**: Average position in search results - -### Site Information -- **Site URLs**: List of verified sites in GSC -- **Permission Levels**: User's access level for each site - -### Sitemaps -- **Sitemap Paths**: URLs of submitted sitemaps -- **Submission Dates**: When sitemaps were last submitted -- **Index Status**: Which pages are indexed - -## ๐Ÿ”’ Security Features - -- **OAuth2 Security**: Google's secure authorization protocol -- **Token Encryption**: Credentials stored securely in database -- **User Isolation**: Each user's data is completely separate -- **Token Refresh**: Automatic token refresh when expired -- **Access Revocation**: Users can disconnect at any time - -## ๐Ÿงช Testing - -### Backend Testing -```bash -cd backend -python -m pytest test_gsc_*.py -``` - -### Frontend Testing -```bash -cd frontend -npm test -``` - -### Integration Testing -1. Start both backend and frontend servers -2. Navigate to SEO Dashboard -3. Click "Connect GSC" -4. Complete OAuth flow -5. Verify real data appears in dashboard - -## ๐Ÿ› Troubleshooting - -### Common Issues - -1. **"Not Found" Error**: - - Check API endpoint paths match between frontend and backend - - Ensure backend server is running - -2. **"Not Authenticated" Error**: - - Verify Clerk API keys are correct - - Check environment variables are loaded - -3. **OAuth Popup Blocked**: - - Allow popups for localhost - - Check browser popup settings - -4. **GSC Data Not Loading**: - - Verify Google OAuth credentials - - Check user has verified sites in GSC - - Review backend logs for errors - -## ๐Ÿ“ˆ Performance Optimizations - -- **Data Caching**: GSC data cached for 1 hour to reduce API calls -- **Lazy Loading**: Components load data only when needed -- **Error Boundaries**: Graceful error handling prevents crashes -- **Connection Pooling**: Efficient database connections - -## ๐Ÿ”„ Future Enhancements - -- **Real-time Updates**: WebSocket-based live data updates -- **Advanced Analytics**: More detailed GSC metrics and insights -- **Bulk Operations**: Analyze multiple sites simultaneously -- **Export Features**: Export GSC data to CSV/Excel -- **Scheduled Reports**: Automated GSC reports via email - -## ๐Ÿ“ Logging - -The system includes comprehensive logging at all levels: - -- **Backend**: Detailed logs for OAuth flow, data retrieval, and errors -- **Frontend**: Console logs for API calls and user interactions -- **Database**: Query logging for debugging data issues - -## ๐Ÿค Contributing - -When contributing to the GSC integration: - -1. Follow existing code patterns and style -2. Add comprehensive logging for new features -3. Include error handling for all API calls -4. Update tests for any new functionality -5. Document any new environment variables or setup steps - -## ๐Ÿ“„ License - -This GSC integration is part of the ALwrity project and follows the same licensing terms. diff --git a/ToBeMigrated/ai_writers/ai_blog_writer/ai_blog_generator.py b/ToBeMigrated/ai_writers/ai_blog_writer/ai_blog_generator.py deleted file mode 100644 index 287788a0..00000000 --- a/ToBeMigrated/ai_writers/ai_blog_writer/ai_blog_generator.py +++ /dev/null @@ -1,639 +0,0 @@ -import os -import streamlit as st -from loguru import logger - -from lib.utils.voice_processing import record_voice -from lib.ai_writers.ai_blog_writer.blog_writer_styles import apply_blog_writer_styles -from lib.ai_writers.ai_blog_writer.ai_blog_generator_utils import ( - CONFIG_PATH, - load_config, - get_search_params_from_config, - get_blog_characteristics_from_config, - get_blog_images_from_config, - get_llm_options_from_config, - process_input, - handle_content_generation -) - -apply_blog_writer_styles() - -def display_input_section(): - """Display the input section with text area, file upload, and voice recording options.""" - # Main container with columns for better organization - col1, col2, col3 = st.columns([2, 1.5, 0.5]) - - # First column: Keywords input - with col1: - st.markdown("### ๐Ÿ“Œ Content Source") - user_input = st.text_area( - 'Power your content with keywords or a website URL', - help='Provide keywords, a blog title, YouTube link, or web URL to generate targeted content.', - placeholder="Examples:\n- Keywords: AI tools, digital marketing\n- Blog Title: The Future of AI in Marketing\n- YouTube Link: https://youtube.com/...\n- Web URL: https://example.com/...", - height=150 - ) - - # Second column: File uploader - with col2: - st.markdown("### ๐Ÿ“ File Upload") - uploaded_file = st.file_uploader( - "Add files to enhance your content", - type=["txt", "pdf", "docx", "jpg", "jpeg", "png", "mp3", "wav", "mp4", "mkv", "avi"], - help='Upload documents, images, or media files to incorporate additional information in your blog.' - ) - - # Third column: Voice input - with col3: - st.markdown("### ๐ŸŽค Voice") - audio_input = record_voice() - if audio_input: - st.success("Voice recorded!") - - return user_input, uploaded_file, audio_input - - -def display_content_type_selection(inside_expander=False): - """Display the content type selection section and return the selected type. - - Args: - inside_expander (bool): If True, adjust heading levels for display inside an expander. - """ - # Content options in a cleaner layout - if not inside_expander: - st.markdown("### ๐Ÿ”ง Content Configuration") - st.markdown("#### Select Content Type") - else: - st.markdown("#### Content Type") - - # Content type selection with better UI - content_type = st.radio( - "Choose the format and length of your blog content", - ["Standard Blog Post", "Comprehensive Long-form", "AI Agent Team (Beta)"], - horizontal=True, - help="Standard: 800-1200 words | Long-form: 1500+ words | AI Agent: Experimental multi-perspective content" - ) - - # Map the friendly content type names to the original options - content_type_map = { - "Standard Blog Post": "Normal-length content", - "Comprehensive Long-form": "Long-form content", - "AI Agent Team (Beta)": "Experimental - AI Agents team" - } - - return content_type, content_type_map[content_type] - - -def display_content_characteristics_tab(): - """Display the Content Characteristics tab and return the selected options.""" - st.markdown("#### Blog Content Characteristics") - - # Load default values from configuration - config_blog_chars = get_blog_characteristics_from_config() - - # Blog length - blog_length = st.number_input( - "Blog Length (words)", - min_value=500, - max_value=5000, - value=int(config_blog_chars.get("blog_length", 2000)), - step=100, - help="Target word count for your blog post" - ) - - # Blog tone - tone_options = ["Professional", "Casual", "Formal", "Conversational", "Authoritative", "Friendly"] - default_tone = config_blog_chars.get("blog_tone", "Professional") - default_tone_index = tone_options.index(default_tone) if default_tone in tone_options else 0 - - blog_tone = st.selectbox( - "Blog Tone", - options=tone_options, - index=default_tone_index, - help="The overall tone and style of your blog content" - ) - - # Blog demographic - demographic_options = ["Professional", "General", "Technical", "Beginner", "Expert", "Student"] - default_demo = config_blog_chars.get("blog_demographic", "Professional") - default_demo_index = demographic_options.index(default_demo) if default_demo in demographic_options else 0 - - blog_demographic = st.selectbox( - "Target Audience", - options=demographic_options, - index=default_demo_index, - help="Who your blog content is primarily written for" - ) - - # Blog type - type_options = ["Informational", "How-to", "List", "Review", "Tutorial", "Opinion"] - default_type = config_blog_chars.get("blog_type", "Informational") - default_type_index = type_options.index(default_type) if default_type in type_options else 0 - - blog_type = st.selectbox( - "Blog Type", - options=type_options, - index=default_type_index, - help="The format and purpose of your blog content" - ) - - # Blog language - language_options = ["English", "Spanish", "French", "German", "Italian", "Portuguese"] - default_lang = config_blog_chars.get("blog_language", "English") - default_lang_index = language_options.index(default_lang) if default_lang in language_options else 0 - - blog_language = st.selectbox( - "Blog Language", - options=language_options, - index=default_lang_index, - help="The language your blog will be written in" - ) - - # Blog output format - format_options = ["markdown", "html", "plain text"] - default_format = config_blog_chars.get("blog_output_format", "markdown").lower() - default_format_index = format_options.index(default_format) if default_format in format_options else 0 - - blog_output_format = st.selectbox( - "Output Format", - options=format_options, - index=default_format_index, - help="The format in which the blog content will be generated" - ) - - # Show current configuration source - if os.path.exists(CONFIG_PATH): - st.success(f"โœ… Using blog characteristics from configuration file") - else: - st.info("โ„น๏ธ Using default blog characteristics (no configuration file found)") - - return { - "blog_length": blog_length, - "blog_tone": blog_tone, - "blog_demographic": blog_demographic, - "blog_type": blog_type, - "blog_language": blog_language, - "blog_output_format": blog_output_format - } - - -def display_content_analysis_tab(): - """Display the Content & Analysis Options tab and return the selected options.""" - st.markdown("#### Content & Analysis Options") - - # Create two columns for better organization - col1, col2 = st.columns(2) - - with col1: - st.markdown("**Content Enhancements**") - create_seo_tags = st.checkbox( - 'โœ… Generate SEO metadata', - value=True, - help='Create schema markup, meta tags, and social media metadata' - ) - generate_social_media = st.checkbox( - 'โœ… Create social media posts', - value=False, - help="Generate matching social content for Facebook, Twitter, and LinkedIn" - ) - add_table_of_contents = st.checkbox( - 'โœ… Add table of contents', - value=True, - help="Include an auto-generated table of contents at the beginning of the blog" - ) - - with col2: - st.markdown("**Analysis & Improvement**") - content_analysis = st.checkbox( - 'โœ… Perform content analysis', - value=False, - help="Include proofreading, readability score, and improvement suggestions" - ) - enhance_readability = st.checkbox( - 'โœ… Enhance readability', - value=True, - help="Optimize sentence structure and vocabulary for better readability" - ) - fact_checking = st.checkbox( - 'โœ… Basic fact verification', - value=False, - help="Verify key facts from multiple sources when possible" - ) - - st.markdown("---") - st.markdown("**Formatting Options**") - - # Create two columns for formatting options - fmt_col1, fmt_col2 = st.columns(2) - - with fmt_col1: - section_headings = st.checkbox( - 'โœ… Use section headings', - value=True, - help="Include clear section headings throughout the blog" - ) - include_lists = st.checkbox( - 'โœ… Use bullet points and lists', - value=True, - help="Format appropriate content as bullet points or numbered lists" - ) - - with fmt_col2: - include_quotes = st.checkbox( - 'โœ… Include relevant quotes', - value=False, - help="Add expert quotes or important statements as blockquotes" - ) - use_subheadings = st.checkbox( - 'โœ… Use subheadings', - value=True, - help="Break down sections with descriptive subheadings" - ) - - return { - "create_seo_tags": create_seo_tags, - "generate_social_media": generate_social_media, - "add_table_of_contents": add_table_of_contents, - "content_analysis": content_analysis, - "enhance_readability": enhance_readability, - "fact_checking": fact_checking, - "section_headings": section_headings, - "include_lists": include_lists, - "include_quotes": include_quotes, - "use_subheadings": use_subheadings - } - - -def display_blog_images_tab(): - """Display the Blog Images Details tab and return the selected options.""" - st.markdown("#### Blog Images Settings") - - # Load default values from configuration - config_images = get_blog_images_from_config() - - # Image generation model selection - model_options = ["stable-diffusion", "dall-e", "midjourney", "imagen"] - default_model = config_images.get("image_model", "stable-diffusion") - default_model_index = model_options.index(default_model) if default_model in model_options else 0 - - image_model = st.selectbox( - "Image Generation Model", - options=model_options, - index=default_model_index, - help="AI model used to generate blog images" - ) - - # Number of blog images - num_images = st.number_input( - "Number of Blog Images", - min_value=0, - max_value=10, - value=config_images.get("num_images", 1), - step=1, - help="Number of images to generate for the blog" - ) - - # Image style - style_options = ["Realistic", "Artistic", "Cartoon", "Minimalist", "Corporate", "Vibrant"] - default_style = config_images.get("image_style", "Realistic") - default_style_index = style_options.index(default_style) if default_style in style_options else 0 - - image_style = st.selectbox( - "Image Style", - options=style_options, - index=default_style_index, - help="Visual style of the generated images" - ) - - # Additional image options - st.markdown("**Additional Image Options**") - - col1, col2 = st.columns(2) - - with col1: - generate_featured = st.checkbox( - 'โœ… Generate featured image', - value=True, - help="Create a featured header image for the blog" - ) - add_captions = st.checkbox( - 'โœ… Add image captions', - value=True, - help="Generate descriptive captions for each image" - ) - - with col2: - use_alt_text = st.checkbox( - 'โœ… Generate alt text', - value=True, - help="Create accessibility alt text for all images" - ) - optimize_images = st.checkbox( - 'โœ… Optimize image placement', - value=True, - help="Intelligently place images throughout the content" - ) - - # Show current configuration source - if os.path.exists(CONFIG_PATH): - st.success(f"โœ… Using image settings from configuration file") - else: - st.info("โ„น๏ธ Using default image settings (no configuration file found)") - - return { - "image_model": image_model, - "num_images": num_images, - "image_style": image_style, - "generate_featured": generate_featured, - "add_captions": add_captions, - "use_alt_text": use_alt_text, - "optimize_placement": optimize_images - } - - -def display_llm_options_tab(): - """Display the LLM Options tab and return the selected options.""" - st.markdown("#### Language Model Settings") - - # Load default values from configuration - config_llm = get_llm_options_from_config() - - # LLM provider selection - provider_options = ["google", "openai", "anthropic", "local"] - default_provider = config_llm.get("provider", "google") - default_provider_index = provider_options.index(default_provider) if default_provider in provider_options else 0 - - llm_provider = st.selectbox( - "AI Provider", - options=provider_options, - index=default_provider_index, - help="The AI provider to use for content generation" - ) - - # Model selection (dynamic based on provider) - if llm_provider == "google": - model_options = ["gemini-1.5-flash-latest", "gemini-1.5-pro-latest", "gemini-pro"] - elif llm_provider == "openai": - model_options = ["gpt-4o", "gpt-4-turbo", "gpt-3.5-turbo"] - elif llm_provider == "anthropic": - model_options = ["claude-3-opus", "claude-3-sonnet", "claude-3-haiku"] - else: - model_options = ["llama-3-70b", "mistral-large", "local-model"] - - default_model = config_llm.get("model", "gemini-1.5-flash-latest") - default_model_index = 0 - if default_model in model_options: - default_model_index = model_options.index(default_model) - - llm_model = st.selectbox( - "AI Model", - options=model_options, - index=default_model_index, - help="The specific AI model to use for content generation" - ) - - # Create two columns for temperature and max tokens - col1, col2 = st.columns(2) - - with col1: - # Temperature setting - temperature = st.slider( - "Temperature", - min_value=0.0, - max_value=1.0, - value=config_llm.get("temperature", 0.7), - step=0.1, - help="Controls randomness: lower values are more deterministic, higher values more creative" - ) - - with col2: - # Max tokens - max_tokens = st.number_input( - "Max Tokens", - min_value=1000, - max_value=32000, - value=config_llm.get("max_tokens", 4000), - step=1000, - help="Maximum length of generated content (in tokens)" - ) - - # Advanced LLM options - st.markdown("---") - st.markdown("**Advanced LLM Options**") - show_advanced_llm = st.checkbox("Show advanced LLM parameters", value=False) - - advanced_params = {} - if show_advanced_llm: - # Top-p (nucleus sampling) - top_p = st.slider( - "Top-p (Nucleus Sampling)", - min_value=0.1, - max_value=1.0, - value=0.9, - step=0.1, - help="Controls diversity via nucleus sampling: 1.0 considers all tokens, lower values restrict to more likely tokens" - ) - - # Top-k - top_k = st.slider( - "Top-k", - min_value=1, - max_value=100, - value=40, - step=1, - help="Controls diversity by limiting to top k tokens: higher values allow more diversity" - ) - - # Presence penalty - presence_penalty = st.slider( - "Presence Penalty", - min_value=-2.0, - max_value=2.0, - value=0.0, - step=0.1, - help="Penalizes repeated tokens: positive values discourage repetition" - ) - - advanced_params = { - "top_p": top_p, - "top_k": top_k, - "presence_penalty": presence_penalty - } - - # Show current configuration source - if os.path.exists(CONFIG_PATH): - st.success(f"โœ… Using LLM settings from configuration file") - else: - st.info("โ„น๏ธ Using default LLM settings (no configuration file found)") - - return { - "provider": llm_provider, - "model": llm_model, - "temperature": temperature, - "max_tokens": max_tokens, - **advanced_params - } - - -def display_search_settings_tab(): - """Display the Search Settings tab and return the selected options.""" - st.markdown("#### AI Search Configuration") - st.markdown("Control how the AI researches your topic") - - # Load default values from configuration - config_search_params = get_search_params_from_config() - - # Number of search results - max_results = st.slider( - "Maximum Results", - min_value=5, - max_value=30, - value=config_search_params.get("max_results", 10), - step=5, - help="Maximum number of search results to use for research" - ) - - # Search depth - search_depth = st.radio( - "Search Depth", - options=["basic", "advanced"], - index=0, - horizontal=True, - help="Basic: Faster but less comprehensive. Advanced: More thorough but slower." - ) - - # Include domains - include_domains = st.text_input( - "Include Domains (Optional)", - value="", - help="Comma-separated list of domains to prioritize in search (e.g., wikipedia.org,nih.gov)" - ) - - # Time range - use value from config - time_options = ["day", "week", "month", "year", "all"] - default_time_index = time_options.index(config_search_params.get("time_range", "year")) if config_search_params.get("time_range", "year") in time_options else 3 # Default to "year" (index 3) - - time_range = st.select_slider( - "Time Range", - options=time_options, - value=time_options[default_time_index], - help="Limit search results to a specific time period" - ) - - # Show current configuration source - if os.path.exists(CONFIG_PATH): - st.success(f"โœ… Using search defaults from configuration file") - else: - st.info("โ„น๏ธ Using default search settings (no configuration file found)") - - # Replace expander with checkbox for configuration display - show_config = st.checkbox("Show configuration details", value=False) - if show_config: - st.markdown(""" - **Configuration File Location** - Search parameters are loaded from the main configuration file at: - `lib/workspace/alwrity_config/main_config.json` - - You can modify this file to change the default search settings. - """) - - if os.path.exists(CONFIG_PATH): - try: - with open(CONFIG_PATH, 'r') as f: - config_content = f.read() - st.code(config_content, language="json") - except: - st.warning("Could not read configuration file") - - st.info("These settings control how the AI performs web research for your content. More thorough searches may take longer but produce better results.") - - # Process include_domains from string to list if provided - domains_list = [] - if include_domains: - domains_list = [domain.strip() for domain in include_domains.split(",") if domain.strip()] - - return { - "max_results": max_results, - "search_depth": search_depth, - "time_range": time_range, - "include_domains": domains_list - } - - -def display_advanced_options(): - """Display all advanced options tabs and return the selected configurations.""" - - with st.expander("โš™๏ธ Advanced Options for Personalization, Analysis, Images, LLM, and Search", expanded=False): - content_type, selected_content_type = display_content_type_selection(inside_expander=True) - - tabs = st.tabs(["Personalization", "Analysis Options", "Blog Images Details", "LLM Options", "Search Settings"]) - - with tabs[0]: # Content Characteristics - blog_params = display_content_characteristics_tab() - - with tabs[1]: # Combined Content & Analysis Options - content_analysis_params = display_content_analysis_tab() - - with tabs[2]: # Blog Images Details - image_params = display_blog_images_tab() - - with tabs[3]: # LLM Options - llm_params = display_llm_options_tab() - - with tabs[4]: # Search Settings - search_params = display_search_settings_tab() - - return content_type, selected_content_type, blog_params, content_analysis_params, image_params, llm_params, search_params - - -def blog_from_keyword(): - """Input blog keywords, research and write a factual blog with enhanced UI.""" - - # Get user inputs - user_input, uploaded_file, audio_input = display_input_section() - - # Display advanced options and get configurations - content_type, selected_content_type, blog_params, content_analysis_params, image_params, llm_params, search_params = display_advanced_options() - - # Generate button with icon and clearer purpose - st.markdown("") # Add spacing - generate_pressed = st.button("โœจ Generate Blog Content", use_container_width=True) - - # Processing logic - if generate_pressed: - st.empty() - - if not uploaded_file and not user_input and not audio_input: - st.error("Please provide at least one input source (keywords, file, or voice recording)") - st.stop() - - input_type = process_input(user_input, uploaded_file) - - # Use the utility function to handle content generation - handle_content_generation(input_type, user_input, uploaded_file, search_params, blog_params, selected_content_type) - - -def ai_blog_writer_page(): - """Render the AI Blog Writer page with enhanced styling.""" - logger.info("Rendering AI Blog Writer page") - - # Apply shared blog writer styles - apply_blog_writer_styles() - - # Back button with icon - if st.button("โ† Back to Dashboard", key="back_to_dashboard"): - logger.info("User clicked back button, returning to ai writer dashboard") - st.query_params.clear() - st.rerun() - - # Enhanced header with icon - st.markdown(""" - - """, unsafe_allow_html=True) - - # Call the blog generator function with enhanced UI - logger.info("Calling blog_from_keyword function") - blog_from_keyword() - - logger.info("Finished rendering AI Blog Writer page") \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/ai_blog_writer/ai_blog_generator_utils.py b/ToBeMigrated/ai_writers/ai_blog_writer/ai_blog_generator_utils.py deleted file mode 100644 index cfe778e9..00000000 --- a/ToBeMigrated/ai_writers/ai_blog_writer/ai_blog_generator_utils.py +++ /dev/null @@ -1,867 +0,0 @@ -import re -import os -import json -import asyncio -from loguru import logger -import PyPDF2 -import streamlit as st -import tiktoken -import openai -from datetime import datetime - -from lib.gpt_providers.text_generation.main_text_generation import llm_text_gen -# Remove the circular import -# from lib.ai_writers.ai_blog_writer.keywords_to_blog_streamlit import write_blog_from_keywords -from lib.ai_writers.speech_to_blog.main_audio_to_blog import generate_audio_blog -from lib.ai_writers.long_form_ai_writer import long_form_generator -from lib.ai_writers.web_url_ai_writer import blog_from_url -from lib.ai_writers.image_ai_writer import blog_from_image -from .blog_from_google_serp import write_blog_google_serp -from lib.blog_metadata.get_blog_metadata import blog_metadata -from lib.gpt_providers.text_to_image_generation.main_generate_image_from_prompt import generate_image - -# Constants -CONFIG_PATH = os.path.join("lib", "workspace", "alwrity_config", "main_config.json") -DEFAULT_CONFIG = { - "Search Engine Parameters": { - "Geographic Location": "us", - "Search Language": "en", - "Number of Results": 10, - "Time Range": "year" - } -} - -# Function to load configuration from JSON file -def load_config(): - """Load configuration from the main config JSON file.""" - try: - if os.path.exists(CONFIG_PATH): - with open(CONFIG_PATH, 'r') as f: - config = json.load(f) - logger.info(f"Loaded configuration from {CONFIG_PATH}") - return config - else: - logger.warning(f"Configuration file not found at {CONFIG_PATH}, using defaults") - return DEFAULT_CONFIG - except Exception as e: - logger.error(f"Error loading configuration: {str(e)}") - return DEFAULT_CONFIG - -# Function to get search parameters from config -def get_search_params_from_config(): - """Extract search parameters from the main configuration.""" - config = load_config() - search_params = config.get("Search Engine Parameters", {}) - - # Map config values to expected parameter names - result = { - "max_results": search_params.get("Number of Results", 10), - "time_range": search_params.get("Time Range", "year").lower(), - "geo": search_params.get("Geographic Location", "us"), - "language": search_params.get("Search Language", "en") - } - - # Normalize time_range to match our options - time_map = { - "day": "day", - "week": "week", - "month": "month", - "year": "year", - "anytime": "all", - "all": "all" - } - result["time_range"] = time_map.get(result["time_range"].lower(), "year") - - logger.info(f"Using search parameters from config: {result}") - return result - -# Function to get blog content characteristics from config -def get_blog_characteristics_from_config(): - """Extract blog content characteristics from the main configuration.""" - config = load_config() - blog_characteristics = config.get("Blog Content Characteristics", {}) - - # Map config values to expected parameter names - result = { - "blog_length": blog_characteristics.get("Blog Length", "2000"), - "blog_tone": blog_characteristics.get("Blog Tone", "Professional"), - "blog_demographic": blog_characteristics.get("Blog Demographic", "Professional"), - "blog_type": blog_characteristics.get("Blog Type", "Informational"), - "blog_language": blog_characteristics.get("Blog Language", "English"), - "blog_output_format": blog_characteristics.get("Blog Output Format", "markdown") - } - - logger.info(f"Using blog characteristics from config: {result}") - return result - -# Function to get blog image details from config -def get_blog_images_from_config(): - """Extract blog image details from the main configuration.""" - config = load_config() - blog_images = config.get("Blog Images Details", {}) - - # Map config values to expected parameter names - result = { - "image_model": blog_images.get("Image Generation Model", "stable-diffusion"), - "num_images": int(blog_images.get("Number of Blog Images", 1)), - "image_style": blog_images.get("Image Style", "Realistic") - } - - logger.info(f"Using blog image details from config: {result}") - return result - -# Function to get LLM options from config -def get_llm_options_from_config(): - """Extract LLM options from the main configuration.""" - config = load_config() - llm_options = config.get("LLM Options", {}) - - # Map config values to expected parameter names - result = { - "provider": llm_options.get("GPT Provider", "google"), - "model": llm_options.get("Model", "gemini-1.5-flash-latest"), - "temperature": float(llm_options.get("Temperature", 0.7)), - "max_tokens": int(llm_options.get("Max Tokens", 4000)) - } - - logger.info(f"Using LLM options from config: {result}") - return result - -# Split a text into smaller chunks of size n, preferably ending at the end of a sentence -def create_chunks(text, n, tokenizer): - tokens = tokenizer.encode(text) - """Yield successive n-sized chunks from text.""" - i = 0 - while i < len(tokens): - # Find the nearest end of sentence within a range of 0.5 * n and 1.5 * n tokens - j = min(i + int(1.5 * n), len(tokens)) - while j > i + int(0.5 * n): - # Decode the tokens and check for full stop or newline - chunk = tokenizer.decode(tokens[i:j]) - if chunk.endswith(".") or chunk.endswith("\n"): - break - j -= 1 - # If no end of sentence found, use n tokens as the chunk size - if j == i + int(0.5 * n): - j = min(i + n, len(tokens)) - yield tokens[i:j] - i = j - - -def extract_chunk(document, template_prompt): - """ Chunking for large documents, exceed context window""" - prompt = template_prompt.replace('', document) - - try: - response = llm_text_gen(prompt) - return response - except Exception as err: - logger.error(f"Failed to get response from LLM: {err}") - raise - - -def blog_from_pdf(pdf_text): - """ - Load in a long PDF and extract key information. - Chunk up document and process each chunk, then combine them. - """ - template_prompt=f'''Extract key pieces of information from the given document. - - When you extract a key piece of information, include the closest page number. - Ex: Extracted Information (Page number) - \n\nDocument: \"\"\"\"\"\"\n\n''' - - # Initialize tokenizer - tokenizer = tiktoken.get_encoding("cl100k_base") - results = [] - - chunks = create_chunks(pdf_text, 1000, tokenizer) - text_chunks = [tokenizer.decode(chunk) for chunk in chunks] - - for chunk in text_chunks: - try: - results.append(extract_chunk(chunk, template_prompt)) - except Exception as e: - logger.error(f"Error processing chunk: {e}") - # Continue with other chunks even if one fails - continue - - return results - - -# Input validation functions -def is_youtube_link(text): - """Check if text is a valid YouTube link.""" - if text is not None: - youtube_regex = re.compile(r'(https?://)?(www\.)?(youtube|youtu|youtube-nocookie)\.(com|be)/(watch\?v=|embed/|v/|.+\?v=)?([^&=%\?]{11})') - return youtube_regex.match(text) - return False - - -def is_web_link(text): - """Check if text is a valid web link.""" - if text is not None: - web_regex = re.compile(r'(https?://)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)') - return web_regex.match(text) - return False - - -def process_input(input_text, uploaded_file): - """ - Determine the type of input provided by the user. - - Args: - input_text (str): The text input from the user - uploaded_file: The file uploaded by the user - - Returns: - str: The determined input type ("youtube_url", "web_url", "keywords", "PDF_file", "image_file", "audio_file", "video_file", or None) - """ - # Process text input - if input_text: - if is_youtube_link(input_text): - if input_text.startswith("https://www.youtube.com/") or input_text.startswith("http://www.youtube.com/"): - return "youtube_url" - else: - st.error("Invalid YouTube URL. Please enter a valid URL.") - return None - elif is_web_link(input_text): - return "web_url" - else: - return "keywords" - - # Process file input - if uploaded_file is not None: - file_details = {"filename": uploaded_file.name, "filetype": uploaded_file.type} - st.write(file_details) - - # Handle different file types - if uploaded_file.type.startswith("text/"): - content = uploaded_file.read().decode("utf-8") - st.text(content) - return "text_file" - elif uploaded_file.type == "application/pdf": - return "PDF_file" - elif uploaded_file.type in ["application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/msword"]: - st.write("Word document uploaded. Add your DOCX processing logic here.") - return "word_file" - elif uploaded_file.type.startswith("image/"): - st.image(uploaded_file) - return "image_file" - elif uploaded_file.type.startswith("audio/"): - st.audio(uploaded_file) - return "audio_file" - elif uploaded_file.type.startswith("video/"): - st.video(uploaded_file) - return "video_file" - - return None - - -# Content processing functions -def process_keywords_input(user_input, search_params, blog_params, selected_content_type): - """Process keywords input and generate content based on the selected options.""" - if not user_input or len(user_input.split()) < 2: - st.error('Please provide at least two keywords for best results') - return False - - # Check for dialog states and handle them directly - if st.session_state.get("show_title_dialog", False): - st.warning("Please use the main function to handle title refinement dialog") - # Clear the dialog state to avoid getting stuck - st.session_state.show_title_dialog = False - return False - - if st.session_state.get("show_meta_dialog", False): - st.warning("Please use the main function to handle meta description refinement dialog") - # Clear the dialog state to avoid getting stuck - st.session_state.show_meta_dialog = False - return False - - if st.session_state.get("show_snippet_dialog", False): - st.warning("Please use the main function to handle structured data dialog") - # Clear the dialog state to avoid getting stuck - st.session_state.show_snippet_dialog = False - return False - - try: - if selected_content_type == "Normal-length content": - st.subheader("Your Generated Blog Post") - logger.info(f"Generating standard blog post with parameters: {blog_params}") - - # Use a direct approach to generate blog content to avoid nested expanders - # Instead of importing write_blog_from_keywords which contains many expanders - try: - # Show simplified progress UI - progress_container = st.container() - with progress_container: - progress_bar = st.progress(0) - status_text = st.empty() - - # Step 1: Initialize and show progress - status_text.info("Initializing blog generation...") - progress_bar.progress(0.1) - - # Initialize parameters - from .blog_ai_research_utils import initialize_parameters - search_params, blog_params = initialize_parameters(search_params, blog_params) - - # Step 2: Research phase - status_text.info("Researching your topic...") - progress_bar.progress(0.2) - - # Perform research using direct function calls - from .blog_ai_research_utils import do_google_serp_search, do_tavily_ai_search - - # Do Google search - status_text.info("Searching Google for relevant information...") - google_result = do_google_serp_search(user_input, max_results=search_params.get("max_results", 10)) - google_success = google_result and 'results' in google_result and google_result['results'] - progress_bar.progress(0.4) - - # Do Tavily search if needed - tavily_result = None - tavily_success = False - if not google_success: - status_text.info("Performing additional research with Tavily...") - tavily_result, _, _ = do_tavily_ai_search( - user_input, - max_results=search_params.get("max_results", 10), - search_depth=search_params.get("search_depth", "basic") - ) - tavily_success = tavily_result is not None - progress_bar.progress(0.5) - - # Step 3: Generate content - status_text.info("Generating blog content...") - progress_bar.progress(0.6) - - # Generate content based on search results - from .blog_from_google_serp import write_blog_google_serp - - if google_success: - blog_content = write_blog_google_serp(user_input, google_result['results'], blog_params=blog_params) - elif tavily_success: - blog_content = write_blog_google_serp(user_input, tavily_result, blog_params=blog_params) - else: - status_text.error("Failed to gather research data. Please try again.") - return False - - # Step 4: Generate metadata and image - status_text.info("Adding metadata and final touches...") - progress_bar.progress(0.8) - - # Import functions from keywords_to_blog_streamlit - from .keywords_to_blog_streamlit import generate_audio_version - - # Define a simple update_progress function for compatibility - def simple_update_progress(step, total, message): - status_text.info(message) - progress_bar.progress(step / total) - - # Generate metadata and image - # Import only essential functions needed for core processing - from .ai_blog_generator_utils import generate_blog_metadata, generate_blog_image - try: - # Create a proper status object - with st.status("Generating metadata and image...", expanded=True) as status: - # Generate metadata - blog_title, blog_meta_desc, blog_tags, blog_categories, blog_hashtags, blog_slug = generate_blog_metadata( - blog_content, user_input, status) - - # Generate featured image if metadata is available - generated_image_filepath = None - if blog_title and blog_meta_desc: - generated_image_filepath = generate_blog_image( - blog_title, blog_meta_desc, blog_content, status, blog_tags) - - # Save blog content to file - saved_blog_to_file = None - from ...blog_postprocessing.save_blog_to_file import save_blog_to_file - if blog_title and blog_meta_desc: - saved_blog_to_file = save_blog_to_file( - blog_content, blog_title, blog_meta_desc, blog_tags, - blog_categories, generated_image_filepath) - - # Create metadata dictionary with string conversions for table display - metadata = { - "blog_title": blog_title or "", - "blog_meta_desc": blog_meta_desc or "", - "blog_tags": ", ".join(blog_tags) if isinstance(blog_tags, list) else str(blog_tags or ""), - "blog_categories": ", ".join(blog_categories) if isinstance(blog_categories, list) else str(blog_categories or ""), - "blog_hashtags": blog_hashtags or "", - "blog_slug": blog_slug or "" - } - except Exception as e: - logger.error(f"Error generating metadata or image: {e}") - metadata = { - "blog_title": "Generated Blog", - "blog_meta_desc": "", - "blog_tags": "", - "blog_categories": "", - "blog_hashtags": "", - "blog_slug": "" - } - generated_image_filepath = None - saved_blog_to_file = None - - # Clear progress indicators - progress_bar.empty() - status_text.empty() - - # Final message - final_message = st.empty() - final_message.success("Blog generation complete!") - - # Display blog content first (without using expanders) - st.markdown("## Content") - st.markdown(blog_content) - - # Show file save information if available - if saved_blog_to_file: - st.success(f"โœ… Blog saved to: {saved_blog_to_file}") - - # Add the audio generation button - st.markdown("---") - audio_col1, audio_col2 = st.columns([1, 3]) - with audio_col1: - generate_audio_button = st.button("๐Ÿ”Š Generate Audio Version", use_container_width=True) - - with audio_col2: - if generate_audio_button: - generate_audio_version(blog_content) - - # Display metadata success message - if metadata["blog_title"]: - st.success(f"โœ… Generated metadata for: {metadata['blog_title']}") - - # Display metadata table (without nesting expanders) - st.markdown("---") - st.subheader("๐Ÿท๏ธ Blog SEO Metadata") - st.table({ - "Metadata": ["Blog Title", "Meta Description", "Tags", "Categories", "Hashtags", "Slug"], - "Value": [ - metadata["blog_title"], - metadata["blog_meta_desc"], - metadata["blog_tags"], - metadata["blog_categories"], - metadata["blog_hashtags"], - metadata["blog_slug"] - ] - }) - - # Display image if available - if generated_image_filepath: - st.subheader("๐Ÿ–ผ๏ธ Featured Image") - st.image(generated_image_filepath, caption=metadata["blog_title"] or "Featured Image", use_column_width=True) - - # Add regenerate button - if st.button("๐Ÿ”„ Regenerate Image", key="regenerate_image_simplified"): - # Use the function directly to avoid any nested expanders - new_image_path = regenerate_blog_image( - metadata["blog_title"], - metadata["blog_meta_desc"], - blog_content, - metadata["blog_tags"] - ) - if new_image_path: - st.success("โœ… Image regenerated successfully!") - st.image(new_image_path, caption=metadata["blog_title"], use_column_width=True) - else: - st.subheader("๐Ÿ–ผ๏ธ Featured Image") - st.info("No image was generated. Try regenerating the blog.") - - # Add refinement buttons directly, without using helper functions - col1, col2 = st.columns(2) - with col1: - if st.button("๐Ÿ”„ Refine Blog Title", key="refine_title_simplified", use_container_width=True): - st.session_state.show_title_dialog = True - st.rerun() - with col2: - if st.button("๐Ÿ”„ Refine Meta Description", key="refine_meta_simplified", use_container_width=True): - st.session_state.show_meta_dialog = True - st.rerun() - - # Add structured data section directly, without using helper functions - st.markdown("---") - st.markdown("### Get Structured Data") - - structured_data_col1, structured_data_col2 = st.columns([3, 1]) - with structured_data_col1: - st.info("Rich snippets boost visibility and click-through rates in search results.") - with structured_data_col2: - if st.button("๐Ÿ“Š Generate Rich Snippet", key="snippet_simplified", use_container_width=True): - st.session_state.show_snippet_dialog = True - st.rerun() - - # Clear the success message after a delay - import time - time.sleep(3) - final_message.empty() - - return True - - except Exception as inner_err: - logger.error(f"Error in simplified blog generation: {inner_err}") - st.error(f"Failed to generate blog content: {inner_err}") - return False - - elif selected_content_type == "Long-form content": - logger.info(f"Generating long-form content with parameters: {blog_params}") - - # Ensure all blog parameters are properly passed to long-form generator - long_form_generator( - user_input, - search_params=search_params, - blog_params=blog_params - ) - - # Show success message briefly then clear it - success_msg = st.empty() - success_msg.success(f"Successfully generated long-form content for: {user_input}") - # Clear the message after 3 seconds - import time - time.sleep(3) - success_msg.empty() - - return True - - else: - info_msg = st.empty() - info_msg.info("AI Agent Team feature is coming soon! This will provide multi-perspective content with different AI experts collaborating on your blog.") - return False - - except Exception as err: - logger.error(f"An error occurred while generating content: {err}") - st.error(f"An error occurred while generating content: {err}") - return False - - -def process_pdf_input(uploaded_file): - """Process a PDF file and generate content.""" - # Replace expander with a container to avoid nested expanders - pdf_container = st.container() - with pdf_container: - st.subheader("Processing PDF Document") - pdf_reader = PyPDF2.PdfReader(uploaded_file) - text = "" - combined_result = "" - - # Show progress with better UI - progress_text = st.empty() - progress_bar = st.progress(0) - - total_pages = len(pdf_reader.pages) - for page_num, page in enumerate(pdf_reader.pages): - progress_text.text(f"Processing page {page_num+1}/{total_pages}") - text += page.extract_text() - text = text.replace("\n", " ") - text = re.sub(r"(\w)([A-Z])", r"\1 \2", text) - - results = blog_from_pdf(text) - progress_percent = (page_num + 1) / total_pages - progress_bar.progress(progress_percent) - combined_result += str(results[-1]) - - progress_text.empty() - progress_bar.empty() - - st.subheader("Generated Content from PDF") - st.markdown(combined_result) - return True - - -def process_youtube_or_audio(user_input): - """Process a YouTube URL or audio file and generate content.""" - if not generate_audio_blog(user_input): - return False - return True - - -def process_web_url(user_input): - """Process a web URL and generate content.""" - blog_from_url(user_input) - return True - - -def process_image_input(user_input, uploaded_file): - """Process an image file and generate content.""" - blog_from_image(user_input, uploaded_file) - return True - - -def handle_content_generation(input_type, user_input, uploaded_file, search_params, blog_params, selected_content_type): - """ - Handle content generation based on the input type. - - Args: - input_type: The type of input ("youtube_url", "web_url", etc.) - user_input: The text input from the user - uploaded_file: The uploaded file (if any) - search_params: Search parameters - blog_params: Blog content parameters - selected_content_type: The selected content type - - Returns: - bool: True if content generation was successful, False otherwise - """ - # Create a status placeholder instead of a permanent message - status_message = st.empty() - status_message.info("Crafting your blog content... Please wait.") - - try: - if input_type == "keywords": - result = process_keywords_input(user_input, search_params, blog_params, selected_content_type) - # Clear the status message when done - status_message.empty() - return result - - elif input_type == "youtube_url" or input_type == "audio_file": - result = process_youtube_or_audio(user_input) - status_message.empty() - return result - - elif input_type == "web_url": - result = process_web_url(user_input) - status_message.empty() - return result - - elif input_type == "image_file": - result = process_image_input(user_input, uploaded_file) - status_message.empty() - return result - - elif input_type == "PDF_file": - result = process_pdf_input(uploaded_file) - status_message.empty() - return result - - else: - status_message.empty() - st.error(f"Unsupported input type: {input_type}") - return False - except Exception as e: - status_message.empty() - st.error(f"An error occurred during content generation: {str(e)}") - return False - - -def generate_blog_content(search_keywords, google_search_result, tavily_search_result, - google_search_success, tavily_search_success, blog_params, status): - """ - Generate blog content using either Google or Tavily search results. - - Args: - search_keywords (str): Search keywords - google_search_result: Results from Google search - tavily_search_result: Results from Tavily search - google_search_success (bool): Whether Google search was successful - tavily_search_success (bool): Whether Tavily search was successful - blog_params (dict): Blog parameters - status: Streamlit status object - - Returns: - str: Generated blog content or None if generation failed - """ - # Check if both searches failed - if so, stop the process - if not google_search_success and not tavily_search_success: - st.error("โ›” Both Google SERP and Tavily AI searches failed. Unable to generate blog content.") - st.warning("Please check your API keys in the environment settings and try again.") - return None - - # Try Google results first if available - if google_search_success and 'results' in google_search_result: - try: - status.update(label=f"โœ๏ธ Writing blog from Google Search results...") - # Pass blog parameters to the blog writing function - blog_style_info = f""" - Length: {blog_params.get('blog_length')} words - Tone: {blog_params.get('blog_tone')} - Target Audience: {blog_params.get('blog_demographic')} - Blog Type: {blog_params.get('blog_type')} - Language: {blog_params.get('blog_language')} - """ - status.update(label=f"โœ๏ธ Writing {blog_params.get('blog_tone')} {blog_params.get('blog_type')} blog for {blog_params.get('blog_demographic')} audience...") - blog_markdown_str = write_blog_google_serp(search_keywords, google_search_result['results'], blog_params=blog_params) - status.update(label="โœ… Generated content from Google search results", state="complete") - return blog_markdown_str - except Exception as err: - status.update(label=f"โŒ Failed to generate content from Google results: {str(err)}", state="error") - st.error(f"Failed to generate content from Google results: {err}") - logger.error(f"Failed to process Google search results: {err}") - - # If Google failed or had no results, try Tavily - if tavily_search_success and tavily_search_result: - try: - status.update(label=f"โœ๏ธ Writing blog from Tavily search results...") - status.update(label=f"โœ๏ธ Writing {blog_params.get('blog_tone')} {blog_params.get('blog_type')} blog for {blog_params.get('blog_demographic')} audience...") - blog_markdown_str = write_blog_google_serp(search_keywords, tavily_search_result, blog_params=blog_params) - status.update(label="โœ… Generated content from Tavily search results", state="complete") - return blog_markdown_str - except Exception as err: - status.update(label=f"โŒ Failed to generate content from Tavily results: {str(err)}", state="error") - st.error(f"Failed to generate content from Tavily results: {err}") - logger.error(f"Failed to process Tavily search results: {err}") - - # If we still don't have content, show error - st.error("โ›” Failed to generate any blog content from the research results.") - return None - - -def generate_blog_metadata(blog_markdown_str, search_keywords, status): - """ - Generate metadata for the blog content. - - Args: - blog_markdown_str (str): Blog content - search_keywords (str): Original search keywords - status: Streamlit status object - - Returns: - tuple: (blog_title, blog_meta_desc, blog_tags, blog_categories, blog_hashtags, blog_slug) - """ - status.update(label="๐Ÿ” Generating title, meta description, tags, categories, hashtags, and slug...") - try: - # Get all 6 metadata values from blog_metadata - blog_title, blog_meta_desc, blog_tags, blog_categories, blog_hashtags, blog_slug = asyncio.run(blog_metadata(blog_markdown_str)) - status.update(label="โœ… Generated blog metadata successfully") - return blog_title, blog_meta_desc, blog_tags, blog_categories, blog_hashtags, blog_slug - except Exception as err: - st.error(f"Failed to get blog metadata: {err}") - logger.error(f"Failed to get blog metadata: {err}") - status.update(label="โŒ Failed to get blog metadata", state="error") - return None, None, None, None, None, None - - -def generate_blog_image(blog_title, blog_meta_desc, blog_markdown_str, status, blog_tags=None): - """ - Generate a featured image for the blog. - - Args: - blog_title (str): Blog title - blog_meta_desc (str): Blog meta description - blog_markdown_str (str): Blog content - status: Streamlit status object - blog_tags (list, optional): Blog tags to use for image prompt enhancement - - Returns: - str: Path to the generated image or None if generation failed - """ - try: - status.update(label="๐Ÿ–ผ๏ธ Generating featured image for blog...") - - # Create a better prompt for image generation - if blog_title and blog_meta_desc: - # If we have both title and description, use them - text_to_image = f"{blog_title}: {blog_meta_desc}" - elif blog_title: - # If we only have title, use it - text_to_image = blog_title - elif blog_meta_desc: - # If we only have description, use it - text_to_image = blog_meta_desc - else: - # Fallback to first 200 chars of content - text_to_image = blog_markdown_str[:200] - - # Ensure the prompt is of reasonable length - if len(text_to_image) > 300: - text_to_image = text_to_image[:300] - - # Log the prompt being used - logger.info(f"Generating image with prompt: {text_to_image}") - status.update(label=f"๐Ÿ–ผ๏ธ Creating image with prompt: \"{text_to_image[:50]}...\"") - - # Extract blog tags if available - blog_tags_list = blog_tags if isinstance(blog_tags, list) else [] - - # Attempt image generation with all available parameters - generated_image_filepath = generate_image( - user_prompt=text_to_image, - title=blog_title, - description=blog_meta_desc, - tags=blog_tags_list, - content=blog_markdown_str[:2000] # Limit content length to avoid too large payloads - ) - - # If first attempt failed, try with a simplified prompt - if not generated_image_filepath: - logger.warning("First image generation attempt failed, trying with simplified prompt") - status.update(label="โš ๏ธ First image attempt failed, trying again with simplified prompt...") - - # Create a simpler prompt - simplified_prompt = " ".join(text_to_image.split()[:10]) - generated_image_filepath = generate_image( - user_prompt=simplified_prompt, - title=blog_title, - description=blog_meta_desc, - tags=blog_tags_list, - content=blog_markdown_str[:1000] # Use even shorter content for the retry - ) - - if generated_image_filepath: - status.update(label="โœ… Successfully generated featured image") - return generated_image_filepath - else: - status.update(label="โŒ Image generation failed - no image created", state="error") - return None - - except Exception as err: - st.warning(f"Failed in Image generation: {err}") - logger.error(f"Failed in Image generation: {err}") - status.update(label="โŒ Image generation failed - no image created", state="error") - return None - - -def regenerate_blog_image(blog_title, blog_meta_desc, blog_markdown_str, blog_tags=None): - """ - Regenerate a blog image on demand. - - Args: - blog_title (str): Blog title - blog_meta_desc (str): Blog meta description - blog_markdown_str (str): Blog content - blog_tags (list, optional): Blog tags to use for image prompt enhancement - - Returns: - str: Path to the generated image or None if generation failed - """ - with st.status("Regenerating image...", expanded=True) as status: - try: - # Use keywords from title or description - if blog_title: - keywords = " ".join(blog_title.split()[:6]) - prompt = f"Blog illustration for: {keywords}" - elif blog_meta_desc: - keywords = " ".join(blog_meta_desc.split()[:6]) - prompt = f"Blog illustration for: {keywords}" - else: - keywords = blog_markdown_str.split()[:50] - prompt = f"Blog illustration based on: {' '.join(keywords[:6])}" - - status.update(label=f"๐Ÿ–ผ๏ธ Generating new image with prompt: \"{prompt}\"") - - # Extract any tags if available - will be passed as empty list otherwise - blog_tags_list = blog_tags if isinstance(blog_tags, list) else [] - - # Generate the image with all parameters - generated_image_filepath = generate_image( - user_prompt=prompt, - title=blog_title, - description=blog_meta_desc, - tags=blog_tags_list, - content=blog_markdown_str[:2000] # Limit content length to avoid too large payloads - ) - - if generated_image_filepath: - status.update(label="โœ… Successfully generated new image", state="complete") - return generated_image_filepath - else: - status.update(label="โŒ Image regeneration failed", state="error") - return None - - except Exception as err: - st.error(f"Failed to regenerate image: {err}") - logger.error(f"Image regeneration error: {err}") - status.update(label="โŒ Image regeneration failed", state="error") - return None \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/ai_blog_writer/blog_ai_research_utils.py b/ToBeMigrated/ai_writers/ai_blog_writer/blog_ai_research_utils.py deleted file mode 100644 index 1582d14f..00000000 --- a/ToBeMigrated/ai_writers/ai_blog_writer/blog_ai_research_utils.py +++ /dev/null @@ -1,420 +0,0 @@ -import sys -import os -import streamlit as st -from loguru import logger -from dotenv import load_dotenv -from pathlib import Path -import time - -# Load environment variables -load_dotenv(Path('../../../.env')) - -# Import necessary modules -from ...ai_web_researcher.gpt_online_researcher import ( - do_google_serp_search as gpt_do_google_serp_search, - do_tavily_ai_search as gpt_do_tavily_ai_search -) -from ...ai_web_researcher.tavily_ai_search import do_tavily_ai_search as tavily_direct_search - - -def initialize_parameters(search_params=None, blog_params=None): - """ - Initialize and validate search and blog parameters with defaults. - - Args: - search_params (dict, optional): Search parameters - blog_params (dict, optional): Blog parameters - - Returns: - tuple: (search_params, blog_params) with defaults applied - """ - # Initialize search params if not provided - if search_params is None: - search_params = {} - - # Initialize blog params if not provided - if blog_params is None: - blog_params = {} - - # Provide default values only for missing keys - # This ensures we don't override values that were intentionally set to 0 or other falsy values - if "max_results" not in search_params: - search_params["max_results"] = 10 - if "search_depth" not in search_params: - search_params["search_depth"] = "basic" - if "time_range" not in search_params: - search_params["time_range"] = "year" - if "include_domains" not in search_params: - search_params["include_domains"] = [] - - # Provide default values only for missing blog parameter keys - if "blog_length" not in blog_params: - blog_params["blog_length"] = 2000 - if "blog_tone" not in blog_params: - blog_params["blog_tone"] = "Professional" - if "blog_demographic" not in blog_params: - blog_params["blog_demographic"] = "Professional" - if "blog_type" not in blog_params: - blog_params["blog_type"] = "Informational" - if "blog_language" not in blog_params: - blog_params["blog_language"] = "English" - if "blog_output_format" not in blog_params: - blog_params["blog_output_format"] = "markdown" - - # Log the parameters for debugging - logger.info(f"Using search parameters: {search_params}") - logger.info(f"Using blog parameters: {blog_params}") - - return search_params, blog_params - - -def perform_google_search(search_keywords, search_params, status, status_container, progress_bar): - """ - Perform Google SERP search for the given keywords. - - Args: - search_keywords (str): Keywords to search for - search_params (dict): Search parameters - status: Streamlit status object - status_container: Streamlit container for status messages - progress_bar: Streamlit progress bar - - Returns: - tuple: (google_search_result, g_titles, success_flag) - """ - def update_progress(message, progress=None, level="info"): - """Helper function to update progress in Streamlit UI""" - if progress is not None: - progress_bar.progress(progress) - - if level == "error": - status_container.error(f"๐Ÿšซ {message}") - elif level == "warning": - status_container.warning(f"โš ๏ธ {message}") - elif level == "success": - status_container.success(f"โœ… {message}") - else: - status_container.info(f"๐Ÿ”„ {message}") - logger.debug(f"Progress update [{level}]: {message}") - - try: - # Update the function call to include the required parameters and search_params - status.update(label=f"Starting Google SERP search for: {search_keywords}") - - # Add search params to the Google SERP search - google_search_params = { - "max_results": search_params.get("max_results", 10) - } - - # Include domains if provided - if search_params.get("include_domains"): - google_search_params["include_domains"] = search_params.get("include_domains") - - google_search_result = do_google_serp_search( - search_keywords, - status_container=status_container, - update_progress=update_progress, - **google_search_params - ) - - if google_search_result and google_search_result.get('titles') and len(google_search_result.get('titles', [])) > 0: - status.update(label=f"โœ… Finished with Google web for Search: {search_keywords}") - g_titles = google_search_result.get('titles', []) - return google_search_result, g_titles, True - else: - # Check if there's an error message in the result - if google_search_result and 'summary' in google_search_result and 'Error' in google_search_result['summary']: - error_msg = google_search_result['summary'] - status.update(label=f"โŒ Google search failed: {error_msg}", state="error") - st.error(f"Google SERP search failed: {error_msg}") - else: - status.update(label="โŒ Failed to get Google SERP results. No valid data returned.", state="error") - st.error("Google SERP search failed to return valid results.") - return google_search_result, [], False - except Exception as err: - status.update(label=f"โŒ Google search error: {str(err)}", state="error") - st.error(f"Google web research failed: {err}") - logger.error(f"Failed in Google web research: {err}") - return None, [], False - - -def perform_tavily_search(search_keywords, search_params, status): - """ - Perform Tavily AI search for the given keywords. - - Args: - search_keywords (str): Keywords to search for - search_params (dict): Search parameters - status: Streamlit status object - - Returns: - tuple: (tavily_search_result, success_flag) - """ - try: - status.update(label=f"๐Ÿ” Starting Tavily AI research: {search_keywords}") - - # Pass the search parameters to Tavily - tavily_result_tuple = do_tavily_ai_search( - search_keywords, - max_results=search_params.get("max_results", 10), - search_depth=search_params.get("search_depth", "basic"), - include_domains=search_params.get("include_domains", []), - time_range=search_params.get("time_range", "year") - ) - - if tavily_result_tuple and len(tavily_result_tuple) == 3: - tavily_search_result, t_titles, t_answer = tavily_result_tuple - # If we have either titles or an answer, consider it a success - if (t_titles and len(t_titles) > 0) or (t_answer and len(t_answer) > 10): - status.update(label=f"โœ… Finished Tavily AI Search on: {search_keywords}", state="complete") - return tavily_search_result, True - else: - status.update(label="โŒ Tavily search returned empty results", state="error") - st.warning("Tavily search didn't find relevant information.") - return tavily_search_result, False - else: - status.update(label="โŒ Tavily search returned incomplete results", state="error") - st.error("Tavily search failed to return valid results.") - return None, False - - except Exception as err: - status.update(label=f"โŒ Tavily search error: {str(err)}", state="error") - st.error(f"Failed in Tavily web research: {err}") - logger.error(f"Failed in Tavily web research: {err}") - return None, False - - -def do_google_serp_search(search_keywords, status_container=None, update_progress=None, **kwargs): - """ - Wrapper function to handle the parameter mismatch with the original function. - """ - try: - if status_container is None: - status_container = st.empty() - - if update_progress is None: - def update_progress(message, progress=None, level="info"): - if level == "error": - status_container.error(message) - elif level == "warning": - status_container.warning(message) - else: - status_container.info(message) - - # Create a fixed update_progress function that handles any progress type - def safe_update_progress(message, progress=None, level="info"): - try: - # Handle progress value of different types - if progress is not None: - if isinstance(progress, str): - # Try to convert string to float if it represents a number - try: - progress = float(progress) - except ValueError: - # If conversion fails, just log the message without updating progress - progress = None - - # Call the original update_progress with sanitized values - update_progress(message, progress, level) - except Exception as err: - # If there's an error in the progress function, just log to console - logger.error(f"Error in progress update: {err}") - # Try one more time with just the message - try: - update_progress(message, None, level) - except: - pass - - # Set default search parameters - fix the parameter to use 'max_results' not 'num_results' - search_params = { - "max_results": kwargs.get("max_results", 10), - "include_domains": kwargs.get("include_domains", []), - "search_depth": kwargs.get("search_depth", "basic") - } - - # Update status to indicate we're checking API keys - status_container.info("๐Ÿ”‘ Checking required API keys...") - - # Call the original function with the required parameters - result = gpt_do_google_serp_search(search_keywords, status_container, safe_update_progress, **search_params) - return result - - except Exception as e: - error_msg = str(e) - logger.error(f"Error in do_google_serp_search wrapper: {error_msg}") - - # Check for common error patterns and display user-friendly messages - if "SERPER_API_KEY is missing" in error_msg: - status_container.error("๐Ÿ”‘ Google search API key (SERPER_API_KEY) is missing. Please check your environment settings.") - st.error("Google SERP search failed: API key is missing. Using alternative methods.") - elif "Progress Value has invalid type" in error_msg: - # This is an internal error, log it but show a more user-friendly message - status_container.warning("โš ๏ธ Internal progress tracking error. Continuing with search.") - else: - # For unknown errors, show the full error message - status_container.error(f"๐Ÿšซ Google search error: {error_msg}") - st.error(f"Google SERP search failed: {error_msg}") - - # Return a minimal result structure to prevent downstream errors - return { - 'results': {}, - 'titles': [], - 'summary': f"Error occurred during search: {error_msg}", - 'stats': { - 'organic_count': 0, - 'questions_count': 0, - 'related_count': 0 - } - } - - -def do_tavily_ai_search(keywords, max_results=10, search_depth="basic", include_domains=None, time_range="year"): - """ - Wrapper function for Tavily search to handle parameter differences. - - Args: - keywords (str): Keywords to search for - max_results (int): Maximum number of search results to return - search_depth (str): "basic" or "advanced" search depth - include_domains (list): List of domains to prioritize in search - time_range (str): Time range for results ("day", "week", "month", "year", "all") - """ - status_container = st.empty() - - if include_domains is None: - include_domains = [] - - try: - # Show status message - status_container.info(f"๐Ÿ” Preparing Tavily AI search with {search_depth} depth...") - - # FIXED: Ensure all parameters have correct types to prevent comparison errors - tavily_params = { - 'max_results': int(max_results), # Explicitly convert to int - 'search_depth': str(search_depth), # Ensure this is a string - 'include_domains': include_domains, - 'time_range': str(time_range) - } - - # Log the parameters for debugging - logger.info(f"Tavily search parameters: {tavily_params}") - - # Check for API key before making the request - tavily_api_key = os.environ.get("TAVILY_API_KEY") - if not tavily_api_key: - status_container.error("๐Ÿ”‘ Tavily API key (TAVILY_API_KEY) is missing. Please check your environment settings.") - st.error("Tavily search failed: API key is missing. Using alternative methods.") - return None, [], "API key missing" - - status_container.info(f"๐Ÿ” Searching with Tavily AI using {search_depth} depth for: {keywords}") - - # Direct implementation without calling gpt_do_tavily_ai_search to avoid type issues - try: - # Call the function directly with correct parameter types - tavily_raw_results = tavily_direct_search( - keywords, - max_results=tavily_params['max_results'], - search_depth=tavily_params['search_depth'], - include_domains=tavily_params['include_domains'], - time_range=tavily_params['time_range'] - ) - - # Extract the needed information - if isinstance(tavily_raw_results, tuple) and len(tavily_raw_results) == 3: - # If already in the right format, use it directly - return tavily_raw_results - - # Process the results to extract titles and answer - t_results = tavily_raw_results - t_titles = [] - t_answer = "" - - # Extract titles from results if available - if isinstance(t_results, dict): - if 'results' in t_results and isinstance(t_results['results'], list): - t_titles = [r.get('title', '') for r in t_results['results']] - status_container.success(f"โœ… Found {len(t_titles)} relevant articles") - if 'answer' in t_results: - t_answer = t_results['answer'] - status_container.success("โœ… Generated a summary answer") - - return t_results, t_titles, t_answer - - except ImportError: - # Fall back to the original function if direct import fails - status_container.warning("โš ๏ธ Using fallback Tavily search method...") - logger.warning("Using fallback Tavily search method") - - # FIXED: Alternative approach - wrap the call in try/except to handle type errors - try: - tavily_result = gpt_do_tavily_ai_search(keywords, **tavily_params) - - # Format the result to match what the blog writer expects - if isinstance(tavily_result, tuple) and len(tavily_result) == 3: - status_container.success("โœ… Tavily search completed successfully") - return tavily_result - - # If not a tuple with expected values, try to extract what we need - t_results = tavily_result - - # Extract titles and answer if available - t_titles = [] - t_answer = "" - - if isinstance(t_results, dict): - if 'results' in t_results and isinstance(t_results['results'], list): - t_titles = [r.get('title', '') for r in t_results['results']] - status_container.success(f"โœ… Found {len(t_titles)} relevant articles") - if 'answer' in t_results: - t_answer = t_results['answer'] - status_container.success("โœ… Generated a summary answer") - - return t_results, t_titles, t_answer - - except TypeError as type_err: - # Handle the specific type error more gracefully - error_msg = str(type_err) - logger.error(f"Type error in Tavily search: {error_msg}") - - if "'>' not supported" in error_msg: - status_container.error("๐Ÿšซ Tavily search parameter type error. Trying alternative approach...") - - # Try a simpler approach with minimal parameters - try: - # Call with only the keyword and fixed max_results - tavily_result = gpt_do_tavily_ai_search(keywords, max_results=10) - - # Minimal processing to extract titles and answer - t_results = tavily_result - t_titles = [] - t_answer = "" - - if isinstance(t_results, dict): - if 'results' in t_results and isinstance(t_results['results'], list): - t_titles = [r.get('title', '') for r in t_results['results']] - if 'answer' in t_results: - t_answer = t_results['answer'] - - return t_results, t_titles, t_answer - except Exception as inner_err: - logger.error(f"Alternative Tavily approach also failed: {inner_err}") - raise - else: - # Re-raise other type errors - raise - - except Exception as e: - error_msg = str(e) - logger.error(f"Error in do_tavily_ai_search wrapper: {error_msg}") - - # Display user-friendly error message - status_container.error(f"๐Ÿšซ Tavily search error: {error_msg}") - st.error(f"Tavily AI search failed: {error_msg}") - - # Return empty results to prevent downstream errors - return None, [], f"Error: {error_msg}" - - finally: - # Clear the status container after a delay - time.sleep(2) - status_container.empty() \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/ai_blog_writer/blog_from_google_serp.py b/ToBeMigrated/ai_writers/ai_blog_writer/blog_from_google_serp.py deleted file mode 100644 index adb6e1f3..00000000 --- a/ToBeMigrated/ai_writers/ai_blog_writer/blog_from_google_serp.py +++ /dev/null @@ -1,199 +0,0 @@ -import os -import sys -import json -from pathlib import Path - -from loguru import logger -logger.remove() -logger.add(sys.stdout, - colorize=True, - format="{level}|{file}:{line}:{function}| {message}" - ) - -from ...gpt_providers.text_generation.main_text_generation import llm_text_gen - - -def write_blog_google_serp(keywords, search_results, blog_params=None): - """ - Write a blog post using search results from Google SERP. - - Args: - keywords (str): The keywords or topic for the blog - search_results (dict): Results from Google SERP search - blog_params (dict, optional): Blog content characteristics: - - blog_length: Target word count - - blog_tone: Content tone - - blog_demographic: Target audience - - blog_type: Type of blog post - - blog_language: Language for the blog - - Returns: - str: The generated blog content in markdown format - """ - # If no blog parameters are provided, use defaults - if blog_params is None: - blog_params = { - "blog_length": 2000, - "blog_tone": "Professional", - "blog_demographic": "Professional", - "blog_type": "Informational", - "blog_language": "English" - } - - # Ensure all parameters have default values - blog_length = blog_params.get("blog_length", 2000) - blog_tone = blog_params.get("blog_tone", "Professional") - blog_demographic = blog_params.get("blog_demographic", "Professional") - blog_type = blog_params.get("blog_type", "Informational") - blog_language = blog_params.get("blog_language", "English") - - logger.info(f"Generating {blog_tone} {blog_type} blog of {blog_length} words for {blog_demographic} audience in {blog_language}") - - try: - # Build a prompt based on search results - prompt_parts = [ - f"You are a specialized blog writer who writes in a {blog_tone} tone for a {blog_demographic} audience. " - f"Create a {blog_type} blog post that is approximately {blog_length} words in {blog_language}.", - f"The blog should be about: {keywords}", - "Use the following search results to create an informative, accurate, and well-structured blog post:" - ] - - # Add organic search results - if 'organic' in search_results: - prompt_parts.append("\nSearch results:") - for i, result in enumerate(search_results['organic'][:5], 1): - title = result.get('title', 'No title') - snippet = result.get('snippet', 'No snippet') - prompt_parts.append(f"{i}. {title}: {snippet}") - - # Add people also ask questions if available - if 'peopleAlsoAsk' in search_results and search_results['peopleAlsoAsk']: - prompt_parts.append("\nPeople also ask:") - for i, question in enumerate(search_results['peopleAlsoAsk'][:3], 1): - q_text = question.get('question', 'No question') - q_answer = question.get('answer', {}).get('snippet', 'No answer') - prompt_parts.append(f"{i}. Q: {q_text}\n A: {q_answer}") - - # Add related searches if available - if 'relatedSearches' in search_results and search_results['relatedSearches']: - related = [item.get('query', '') for item in search_results['relatedSearches'][:5]] - if related: - prompt_parts.append("\nRelated topics to consider including:") - prompt_parts.append(", ".join(related)) - - # Add specific instructions based on blog_type - type_instructions = { - "Informational": "Focus on providing factual information and educating the reader about the topic.", - "How-to": "Include clear step-by-step instructions with actionable advice.", - "List": "Organize content into a numbered or bulleted list of points, tips, or examples.", - "Review": "Provide balanced analysis with pros and cons, and a clear conclusion or recommendation.", - "Tutorial": "Include detailed instructions with examples and explanations for each step.", - "Opinion": "Present a clear perspective supported by evidence, while acknowledging other viewpoints." - } - - prompt_parts.append(f"\nSpecific instructions: {type_instructions.get(blog_type, '')}") - - # Add formatting instructions - prompt_parts.append(""" -Format the blog post in markdown with: -- A compelling title (# Title) -- An introduction that hooks the reader -- Well-structured sections with appropriate headings (## Headings) -- Bullet points or numbered lists where appropriate -- A conclusion summarizing key points -- Make sure all content is accurate, informative, and adds value to the reader. -- Include 2-3 subheadings to organize the content well. -- Be concise and to the point. -- Write in an engaging, reader-friendly style. -- Avoid using phrases like "According to the search results" or "Based on the information provided." -- Present information as direct knowledge. -""") - - # Combine all prompt parts - full_prompt = "\n".join(prompt_parts) - - # Generate the blog content using the prompt - response = llm_text_gen(full_prompt) - - # Return the generated content - return response - - except Exception as err: - logger.error(f"Error generating blog from search results: {err}") - raise - - -def improve_blog_intro(blog_content, blog_intro): - """Combine the given online research and gpt blog content""" - prompt = f""" - You are a skilled content editor, tasked with creating an engaging peek into the blog post provided. - This peek should entice readers to delve into the full content. - - Here's what you need to do: - 1. **Replace the old blog introduction with the new one provided.** - 2. **Craft a short and captivating summary of the key points and interesting takeaways from the blog.** - - Highlight what makes the blog unique and worth reading. - - This peek should be placed directly before the new introduction. - 3. **Include the complete blog content, with the new introduction and the added peek.** - - Do not provide explanations for your actions, simply present the edited blog content. - - Blog Content: \"\"\"{blog_content}\"\"\" - Blog Introduction: \"\"\"{blog_intro}\"\"\" - """ - logger.info("Generating blog introduction from tavily answer.") - try: - response = llm_text_gen(prompt) - return response - except Exception as err: - logger.error(f"Exit: Failed to get response from LLM: {err}") - exit(1) - - -def blog_with_keywords(blog, keywords): - """Combine the given online research and gpt blog content""" - prompt = f""" - You are Sarah, the Creative Content writer, writing up fresh ideas and crafts them with care. - She makes complex topics easy to understand and writes in a friendly tone that connects with everyone. - She excels at simplifying complex topics and communicates with charisma, making technical jargon come alive for her audience. - - As an expert digital content writer, specializing in content optimization and SEO. - I will provide you with my 'blog content' and 'list of keywords' on the same topic. - Your task is to write an original blog, utilizing given keywords and blog content. - Your blog should be highly detailed and well formatted. - - Blog content: '{blog}' - list of keywords: '{keywords}' - """ - try: - response = llm_text_gen(prompt) - return response - except Exception as err: - logger.error(f"blog_with_keywords: Failed to get response from LLM: {err}") - raise err - - -def blog_with_research(report, blog): - """Combine the given online research and gpt blog content""" - prompt = f""" - As expert Creative Content writer, Your task is to update a blog post using the latest research. - - Here's what you need to do: - - 1. **Read the outdated blog content and the new research report carefully.** - 2. **Identify key insights and updates from the research report that should be incorporated into the blog post.** - 3. **Rewrite sections of the blog post to reflect the new information, ensuring a smooth and natural flow.** - 4. **Maintain the blog's original friendly and conversational tone throughout.** - - Remember, your goal is to seamlessly blend the new information into the existing blog post, making it accurate and engaging for readers. - \n\n - Research Report: \"\"\"{report}\"\"\" - - Blog Content: \"\"\"{blog}\"\"\" - """ - try: - response = llm_text_gen(prompt) - return response - except Exception as err: - logger.error(f"blog_with_research: Failed to get response from LLM: {err}") - raise err diff --git a/ToBeMigrated/ai_writers/ai_blog_writer/blog_writer_styles.py b/ToBeMigrated/ai_writers/ai_blog_writer/blog_writer_styles.py deleted file mode 100644 index 437d6720..00000000 --- a/ToBeMigrated/ai_writers/ai_blog_writer/blog_writer_styles.py +++ /dev/null @@ -1,252 +0,0 @@ -import streamlit as st - -def apply_blog_writer_styles(): - st.markdown(""" - - """, unsafe_allow_html=True) \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/ai_blog_writer/keywords_to_blog_streamlit.py b/ToBeMigrated/ai_writers/ai_blog_writer/keywords_to_blog_streamlit.py deleted file mode 100644 index 5836d205..00000000 --- a/ToBeMigrated/ai_writers/ai_blog_writer/keywords_to_blog_streamlit.py +++ /dev/null @@ -1,864 +0,0 @@ -import sys -import os -import asyncio -from textwrap import dedent -from pathlib import Path -from datetime import datetime -import streamlit as st -from gtts import gTTS -import base64 -from dotenv import load_dotenv -import time - -# Load environment variables -load_dotenv(Path('../../.env')) -# Logger setup -from loguru import logger -logger.remove() -logger.add(sys.stdout, - colorize=True, - format="{level}|{file}:{line}:{function}| {message}") - -# Import other necessary modules -from ...ai_web_researcher.gpt_online_researcher import ( - do_metaphor_ai_research, do_google_pytrends_analysis) -from .blog_from_google_serp import write_blog_google_serp, blog_with_research -from ...blog_metadata.get_blog_metadata import blog_metadata -from ...blog_postprocessing.save_blog_to_file import save_blog_to_file -from ...gpt_providers.text_to_image_generation.main_generate_image_from_prompt import generate_image -from ...ai_seo_tools.content_title_generator import generate_blog_titles -from ...ai_seo_tools.meta_desc_generator import generate_blog_metadesc -from ...ai_seo_tools.seo_structured_data import ai_structured_data - -# Import search functions from the research utils module -from .blog_ai_research_utils import ( - initialize_parameters, - perform_google_search, - perform_tavily_search, - do_google_serp_search, - do_tavily_ai_search -) - - -def save_blog_content(blog_markdown_str, blog_title, blog_meta_desc, blog_tags, blog_categories, generated_image_filepath, status, blog_hashtags=None, blog_slug=None): - """ - Save the blog content to a file. - - Args: - blog_markdown_str (str): Blog content - blog_title (str): Blog title - blog_meta_desc (str): Blog meta description - blog_tags (list): Blog tags - blog_categories (list): Blog categories - generated_image_filepath (str): Path to the generated image - status: Streamlit status object - blog_hashtags (str, optional): Social media hashtags - blog_slug (str, optional): SEO-friendly URL slug - - Returns: - str: Path to the saved file or None if saving failed - """ - try: - status.update(label="๐Ÿ’พ Saving blog content to file...") - saved_blog_to_file = save_blog_to_file(blog_markdown_str, blog_title, blog_meta_desc, - blog_tags, blog_categories, generated_image_filepath) - status.update(label=f"โœ… Saved the content to: {saved_blog_to_file}") - return saved_blog_to_file - except Exception as err: - st.error(f"Failed to save blog to file: {err}") - logger.error(f"Failed to save blog to file: {err}") - status.update(label="โŒ Failed to save blog to file", state="error") - return None - - -def generate_audio_version(blog_markdown_str, status=None): - """ - Generate an audio version of the blog content. - - Args: - blog_markdown_str (str): Blog content - status: Streamlit status object (optional) - - Returns: - bool: True if audio generation was successful, False otherwise - """ - try: - if status: - status.update(label="๐Ÿ”Š Generating audio version of the blog...") - else: - st.info("๐Ÿ”Š Generating audio version...") - - # Only generate audio for reasonable-sized blogs (to avoid errors with very large text) - if blog_markdown_str and len(blog_markdown_str) < 50000: # Max ~50KB of text - tts = gTTS(text=blog_markdown_str[:40000], lang='en', slow=False) # Use first 40K chars to be safe - tts.save("delete_me.mp3") - st.audio("delete_me.mp3") - st.download_button( - label="๐Ÿ“ฅ Download Audio File", - data=open("delete_me.mp3", "rb").read(), - file_name="blog_audio.mp3", - mime="audio/mp3" - ) - if status: - status.update(label="โœ… Audio version generated successfully", state="complete") - else: - st.success("โœ… Audio version generated successfully") - return True - else: - st.warning("Blog content too large for audio generation") - if status: - status.update(label="โš ๏ธ Blog content too large for audio generation", state="complete") - return False - except Exception as err: - st.warning(f"Failed to generate audio version: {err}") - logger.error(f"Failed to generate audio version: {err}") - if status: - status.update(label="โŒ Failed to generate audio version", state="error") - return False - - -# Helper functions for write_blog_from_keywords -def setup_progress_tracking(): - """Set up progress tracking elements for blog generation.""" - # Create a placeholder for the final blog content - final_content_placeholder = st.empty() - - # Create progress tracking - progress_placeholder = st.empty() - with progress_placeholder.container(): - progress_bar = st.progress(0) - status_text = st.empty() - - def update_progress(step, total_steps, message): - """Update the progress bar and status message""" - progress_value = min(step / total_steps, 1.0) - progress_bar.progress(progress_value) - status_text.info(f"Step {step}/{total_steps}: {message}") - - # When process is complete, clear the progress info - if step == total_steps: - import time - time.sleep(3) # Show the complete message for 3 seconds - progress_bar.empty() - status_text.empty() - - return final_content_placeholder, progress_placeholder, progress_bar, status_text, update_progress - - -def perform_research_phase(search_keywords, search_params, update_progress): - """ - Perform the research phase of blog generation. - - Args: - search_keywords (str): Keywords to research - search_params (dict): Search parameters - update_progress (function): Function to update progress - - Returns: - tuple: Google search results, Tavily search results, success flags, and blog titles - """ - update_progress(1, 5, f"Starting web research on '{search_keywords}'") - logger.info(f"Researching and Writing Blog on keywords: {search_keywords}") - - # Create a section header for the research phase - st.subheader("๐Ÿ” Web Research Progress") - - # Use a collapsible expander for research details - with st.expander("Research Details", expanded=True): - example_blog_titles = [] - - # Create a status element for research updates - with st.status("Web research in progress...", expanded=True) as status: - status.update(label=f"๐Ÿ“Š Performing web research on: {search_keywords}") - - # Create status container and progress tracking for Google SERP - status_container = st.empty() - research_progress = st.progress(0) - - # Google Search - status.update(label="๐Ÿ” Performing Google search...") - google_search_result, g_titles, google_search_success = perform_google_search( - search_keywords, search_params, status, status_container, research_progress - ) - if g_titles: - example_blog_titles.append(g_titles) - status.update(label=f"โœ… Google search complete - found {len(g_titles)} relevant resources") - else: - status.update(label="โš ๏ธ Google search yielded limited results") - - # Tavily Search - status.update(label="๐Ÿ” Performing Tavily AI search...") - tavily_search_result, tavily_search_success = perform_tavily_search( - search_keywords, search_params, status - ) - - if tavily_search_success: - status.update(label="โœ… Tavily AI search complete", state="complete") - elif google_search_success: - status.update(label="โš ๏ธ Tavily search had issues, but Google search was successful") - else: - status.update(label="โŒ Both search methods encountered issues", state="error") - - # Clear the progress indicators - status_container.empty() - research_progress.empty() - - return google_search_result, tavily_search_result, google_search_success, tavily_search_success, example_blog_titles - - -def generate_content_phase(search_keywords, google_search_result, tavily_search_result, - google_search_success, tavily_search_success, blog_params, update_progress): - """ - Generate blog content from research results. - - Args: - search_keywords (str): Keywords to research - google_search_result: Results from Google search - tavily_search_result: Results from Tavily search - google_search_success (bool): Whether Google search was successful - tavily_search_success (bool): Whether Tavily search was successful - blog_params (dict): Blog parameters - update_progress (function): Function to update progress - - Returns: - str: Generated blog content or None if generation failed - """ - # Import content generation function here to avoid circular import - from .ai_blog_generator_utils import generate_blog_content - - update_progress(2, 5, "Generating blog content from research") - - # Create a section header for the content generation phase - st.subheader("โœ๏ธ Content Generation Progress") - - # Use a collapsible expander for content generation details - with st.expander("Content Generation Details", expanded=True): - # Create a status element for content generation updates - with st.status("Content generation in progress...", expanded=True) as status: - if google_search_success: - source = "Google search results" - else: - source = "Tavily AI research" - - status.update(label=f"๐Ÿ“ Creating {blog_params.get('blog_tone')} {blog_params.get('blog_type')} content for {blog_params.get('blog_demographic')} audience...") - - blog_markdown_str = generate_blog_content( - search_keywords, google_search_result, tavily_search_result, - google_search_success, tavily_search_success, blog_params, status - ) - - if blog_markdown_str: - status.update(label=f"โœ… Successfully generated ~{len(blog_markdown_str.split())} words of content using {source}", state="complete") - else: - status.update(label="โŒ Content generation failed", state="error") - - return blog_markdown_str - - -def generate_metadata_and_image(blog_markdown_str, search_keywords, blog_tags, update_progress): - """ - Generate metadata and featured image for the blog. - - Args: - blog_markdown_str (str): Blog content - search_keywords (str): Keywords used for research - blog_tags (list): Blog tags - update_progress (function): Function to update progress - - Returns: - tuple: Blog metadata and image filepath - """ - # Import metadata and image generation functions here to avoid circular import - from .ai_blog_generator_utils import generate_blog_metadata, generate_blog_image - - update_progress(3, 5, "Generating SEO metadata and enhancements") - - # Create a section header for the enhancement phase - st.subheader("๐Ÿ” SEO & Enhancement Progress") - - # Use a collapsible expander for enhancement details - with st.expander("Enhancement Details", expanded=True): - blog_title = None - blog_meta_desc = None - blog_categories = None - blog_hashtags = None - blog_slug = None - generated_image_filepath = None - saved_blog_to_file = None - - # Create a status element for enhancement updates - with st.status("Enhancing content...", expanded=True) as status: - # Generate metadata - status.update(label="๐Ÿท๏ธ Generating SEO metadata (title, description, tags)...") - blog_title, blog_meta_desc, blog_tags, blog_categories, blog_hashtags, blog_slug = generate_blog_metadata( - blog_markdown_str, search_keywords, status - ) - - # Check if there are updated values in session state - if 'blog_title' in st.session_state: - blog_title = st.session_state.blog_title - status.update(label=f"โœ… Using refined title: \"{blog_title}\"") - - if 'blog_meta_desc' in st.session_state: - blog_meta_desc = st.session_state.blog_meta_desc - status.update(label=f"โœ… Using refined meta description") - - if blog_title and blog_meta_desc: - status.update(label=f"โœ… Generated metadata: \"{blog_title}\"") - - # Generate featured image - status.update(label="๐Ÿ–ผ๏ธ Creating featured image...") - generated_image_filepath = generate_blog_image( - blog_title, blog_meta_desc, blog_markdown_str, status, blog_tags - ) - - # Save blog content to file - status.update(label="๐Ÿ’พ Saving blog content...") - saved_blog_to_file = save_blog_content( - blog_markdown_str, blog_title, blog_meta_desc, blog_tags, - blog_categories, generated_image_filepath, status, blog_hashtags, blog_slug - ) - - status.update(label="โœ… Content enhancement complete", state="complete") - else: - status.update(label="โš ๏ธ Metadata generation had issues, using simplified format", state="warning") - - # Add buttons for metadata refinement - create_metadata_refinement_ui() - - # Add rich snippet section - create_structured_data_ui() - - metadata = { - "blog_title": blog_title, - "blog_meta_desc": blog_meta_desc, - "blog_tags": blog_tags, - "blog_categories": blog_categories, - "blog_hashtags": blog_hashtags, - "blog_slug": blog_slug - } - - return metadata, generated_image_filepath, saved_blog_to_file - - -def create_metadata_refinement_ui(): - """Create UI elements for refining blog metadata (title and meta description).""" - col1, col2 = st.columns(2) - with col1: - if st.button("๐Ÿ”„ Refine Blog Title", key="refine_title_main", use_container_width=True): - st.session_state.show_title_dialog = True - st.rerun() - with col2: - if st.button("๐Ÿ”„ Refine Meta Description", key="refine_meta_main", use_container_width=True): - st.session_state.show_meta_dialog = True - st.rerun() - - -def create_structured_data_ui(): - """Create UI elements for generating structured data.""" - st.markdown("---") - structured_data_col1, structured_data_col2 = st.columns([3, 1]) - - with structured_data_col1: - # Educational popover explaining why rich snippets are important - with st.expander("โ„น๏ธ Why Rich Snippets Are Important for SEO"): - st.markdown(""" - ### Rich Snippets: Boosting Your SEO and Click-Through Rates - - **What are Rich Snippets?** - - Rich snippets are enhanced search results that display additional information directly in search engine results pages (SERPs). They're created using structured data markup (JSON-LD) that helps search engines understand your content better. - - **Why are they important?** - - 1. **Increased Visibility**: Rich snippets stand out in search results with stars, images, and additional information - - 2. **Higher Click-Through Rates (CTR)**: Studies show rich snippets can increase CTR by 30-150% - - 3. **Improved SEO**: They help search engines understand your content better, potentially improving rankings - - 4. **Enhanced User Experience**: Users can see key information before clicking, leading to more qualified traffic - - 5. **Mobile-Friendly**: Rich snippets are especially effective on mobile searches - - **Common types of rich snippets include:** - - Articles/Blogs (with author, date, image) - - Products (with ratings, price, availability) - - Recipes (with cooking time, ratings, calories) - - Events (with date, location, ticket info) - - Local Business (with address, hours, ratings) - - Adding structured data to your content is a powerful SEO technique that requires minimal effort but provides significant benefits. - """) - - with structured_data_col2: - # Button to generate rich snippet - if st.button("๐Ÿ“Š Generate Rich Snippet", key="snippet_main", use_container_width=True): - st.session_state.show_snippet_dialog = True - st.rerun() - - -def display_featured_image(blog_title, blog_meta_desc, blog_markdown_str, blog_tags, generated_image_filepath): - """ - Display the featured image with regeneration options. - - Args: - blog_title (str): Blog title - blog_meta_desc (str): Blog meta description - blog_markdown_str (str): Blog content - blog_tags (list): Blog tags - generated_image_filepath (str): Path to the generated image - - Returns: - str: Updated image filepath if regenerated, otherwise original filepath - """ - # Import image regeneration function here to avoid circular import - from .ai_blog_generator_utils import regenerate_blog_image - - st.subheader("๐Ÿ–ผ๏ธ Featured Image") - image_container = st.container() - - # Display featured image - with image_container: - if generated_image_filepath: - st.image(generated_image_filepath, caption=blog_title or "Featured Image", use_column_width=True) - - # Add regenerate button - if st.button("๐Ÿ”„ Regenerate Image", key="regenerate_image"): - new_image_path = regenerate_blog_image(blog_title, blog_meta_desc, blog_markdown_str, blog_tags) - if new_image_path: - return new_image_path - else: - st.info("No featured image was generated. Click below to generate one.") - if st.button("๐Ÿ–ผ๏ธ Generate Image", key="generate_image"): - new_image_path = regenerate_blog_image(blog_title, blog_meta_desc, blog_markdown_str, blog_tags) - if new_image_path: - return new_image_path - - return generated_image_filepath - - -def display_blog_content_and_audio(blog_markdown_str, saved_blog_to_file): - """ - Display the blog content and audio generation option. - - Args: - blog_markdown_str (str): Blog content - saved_blog_to_file (str): Path to the saved blog file - """ - # Display blog content - st.markdown("## Content") - st.markdown(blog_markdown_str) - - # Show file save information if available - if saved_blog_to_file: - st.success(f"โœ… Blog saved to: {saved_blog_to_file}") - - # Add the audio generation button - st.markdown("---") - audio_col1, audio_col2 = st.columns([1, 3]) - with audio_col1: - generate_audio_button = st.button("๐Ÿ”Š Generate Audio Version", use_container_width=True) - - with audio_col2: - if generate_audio_button: - generate_audio_version(blog_markdown_str) - - -def display_final_metadata_table(metadata, update_progress): - """ - Display the final metadata table and options. - - Args: - metadata (dict): Blog metadata - update_progress (function): Function to update progress - """ - update_progress(4, 5, "Preparing final blog presentation") - - st.markdown("---") - # Display metadata in a collapsible expander to save space - with st.expander("๐Ÿท๏ธ Metadata", expanded=True): - st.table({ - "Metadata": ["Blog Title", "Meta Description", "Tags", "Categories", "Hashtags", "Slug"], - "Value": [ - metadata["blog_title"], - metadata["blog_meta_desc"], - metadata["blog_tags"], - metadata["blog_categories"], - metadata["blog_hashtags"], - metadata["blog_slug"] - ] - }) - - # Add buttons in columns for refining metadata - create_metadata_refinement_ui() - - # Add a row for structured data with a "Generate Rich Snippet" button - st.markdown("---") - st.markdown("### Get Structured Data") - - # Add structured data UI - create_structured_data_ui() - - # Create snippet generation dialog if button is clicked - if st.session_state.get("show_snippet_dialog", False): - display_structured_data_dialog(metadata["blog_title"], metadata["blog_tags"]) - - -def display_structured_data_dialog(blog_title, blog_tags): - """ - Display the structured data generation dialog. - - Args: - blog_title (str): Blog title - blog_tags (list): Blog tags - """ - with st.expander("Structured Data Generation Tool", expanded=True): - st.subheader("Generate Structured Data (Rich Snippets)") - - # Close button at the top - if st.button("Close", key="close_structured_data"): - st.session_state.show_snippet_dialog = False - st.rerun() - - # Simplified blog URL input - blog_url = st.text_input( - "Blog URL:", - placeholder="https://yourblog.com/your-article", - help="Enter the URL where this blog will be published" - ) - - # Auto-fill content type to "Article" since we're working with a blog - content_type = "Article" - st.info(f"Content Type: {content_type} (Auto-selected for blog content)") - - # Form for additional article details - with st.form(key="structured_data_form"): - st.markdown("#### Article Details") - - # Pre-fill with blog title and other metadata - article_title = st.text_input("Headline:", value=blog_title if blog_title else "") - article_author = st.text_input("Author:", value="") - article_date = st.date_input("Date Published:", value=datetime.now()) - article_keywords = st.text_input("Keywords:", value=blog_tags if blog_tags else "") - - submit_structured_data = st.form_submit_button("Generate JSON-LD") - - if submit_structured_data: - if not blog_url: - st.error("Please enter a blog URL to generate structured data.") - else: - # Create details dictionary - details = { - "Headline": article_title, - "Author": article_author, - "Date Published": article_date, - "Keywords": article_keywords - } - - # Call the imported ai_structured_data function or recreate its functionality - with st.spinner("Generating structured data..."): - # Import and use the function from the module directly - from ...ai_seo_tools.seo_structured_data import generate_json_data - - # Generate the structured data - structured_data = generate_json_data(content_type, details, blog_url) - - if structured_data: - st.success("โœ… Structured data generated successfully!") - st.markdown("### Generated JSON-LD Code") - st.code(structured_data, language="json") - - # Download button - st.download_button( - label="๐Ÿ“ฅ Download JSON-LD", - data=structured_data, - file_name=f"{content_type}_structured_data.json", - mime="application/json", - ) - - # Implementation instructions - with st.expander("How to Implement This Code"): - st.markdown(""" - ### Adding this JSON-LD to your website: - - 1. **Copy the generated JSON-LD code** above - - 2. **Add it to the `` section of your HTML** like this: - ```html - - ``` - - 3. **Verify the implementation** using Google's Rich Results Test tool: - [https://search.google.com/test/rich-results](https://search.google.com/test/rich-results) - - 4. **Monitor your search appearance** in Google Search Console - """) - else: - st.error("Failed to generate structured data. Please check your inputs and try again.") - - -def display_title_refinement_dialog(blog_title, blog_tags): - """ - Display a dialog for refining the blog title. - - Args: - blog_title (str): Current blog title - blog_tags (list): Blog tags for context - """ - with st.expander("Blog Title Refinement Tool", expanded=True): - st.subheader("Generate Better Blog Titles") - - # Form for title generation - with st.form(key="title_generation_form"): - st.markdown("#### Title Generation Parameters") - - # Pre-fill with blog tags if available - keywords = st.text_input("Target Keywords:", - value=blog_tags if blog_tags else "", - help="Enter primary keywords to target in the title") - - blog_type = st.selectbox( - "Blog Type:", - ["How-to Guide", "Tutorial", "List Post", "Informational", "Case Study", "Opinion Piece", "Review"], - index=0, - help="Select the type of blog you're creating" - ) - - search_intent = st.selectbox( - "Search Intent:", - ["Informational", "Commercial", "Navigational", "Transactional"], - index=0, - help="Select the primary search intent your title should address" - ) - - language = st.selectbox( - "Language:", - ["English", "Spanish", "French", "German", "Italian"], - index=0 - ) - - submit_title = st.form_submit_button("Generate Title Suggestions") - - if submit_title: - with st.spinner("Generating title suggestions..."): - # Import and use the function from the module - from ...ai_seo_tools.content_title_generator import generate_blog_titles - - # Generate the titles - title_suggestions = generate_blog_titles( - target_keywords=keywords, - blog_type=blog_type, - search_intent=search_intent, - language=language - ) - - if title_suggestions: - st.success("โœ… Generated title suggestions!") - - # Display each title with an option to select it - st.markdown("### Select a Title or Modify") - - selected_title = st.text_input( - "Selected or Modified Title:", - value=blog_title if blog_title else (title_suggestions[0] if title_suggestions else ""), - help="Select one of the suggested titles or modify it to your preference" - ) - - if st.button("Confirm Title"): - st.session_state.blog_title = selected_title - st.session_state.show_title_dialog = False - st.success(f"Title updated to: {selected_title}") - st.rerun() - - # Display all suggestions - for i, title in enumerate(title_suggestions): - st.markdown(f"**Option {i+1}:** {title}") - else: - st.error("Failed to generate title suggestions. Please try different parameters.") - - -def display_meta_description_dialog(blog_meta_desc, blog_tags): - """ - Display a dialog for refining the meta description. - - Args: - blog_meta_desc (str): Current meta description - blog_tags (list): Blog tags for context - """ - with st.expander("Meta Description Refinement Tool", expanded=True): - st.subheader("Generate Optimized Meta Descriptions") - - # Form for meta description generation - with st.form(key="meta_desc_generation_form"): - st.markdown("#### Meta Description Parameters") - - # Pre-fill with blog tags if available - keywords = st.text_input("Target Keywords:", - value=blog_tags if blog_tags else "", - help="Enter primary keywords to target in the meta description") - - tone = st.selectbox( - "Tone:", - ["Informative", "Engaging", "Professional", "Conversational", "Humorous", "Urgent"], - index=0, - help="Select the tone for your meta description" - ) - - search_intent = st.selectbox( - "Search Intent:", - ["Informational", "Commercial", "Navigational", "Transactional"], - index=0, - help="Select the primary search intent your meta description should address" - ) - - language = st.selectbox( - "Language:", - ["English", "Spanish", "French", "German", "Italian"], - index=0 - ) - - submit_meta = st.form_submit_button("Generate Meta Description Suggestions") - - if submit_meta: - with st.spinner("Generating meta description suggestions..."): - # Import and use the function from the module - from ...ai_seo_tools.meta_desc_generator import generate_blog_metadesc - - # Generate the meta descriptions - meta_suggestions = generate_blog_metadesc( - target_keywords=keywords, - tone=tone, - search_intent=search_intent, - language=language - ) - - if meta_suggestions: - st.success("โœ… Generated meta description suggestions!") - - # Display each meta description with an option to select it - st.markdown("### Select a Meta Description or Modify") - - selected_meta = st.text_area( - "Selected or Modified Meta Description:", - value=blog_meta_desc if blog_meta_desc else (meta_suggestions[0] if meta_suggestions else ""), - height=100, - help="Select one of the suggested meta descriptions or modify it to your preference" - ) - - if st.button("Confirm Meta Description"): - st.session_state.blog_meta_desc = selected_meta - st.session_state.show_meta_dialog = False - st.success(f"Meta description updated!") - st.rerun() - - # Display all suggestions - for i, meta in enumerate(meta_suggestions): - st.markdown(f"**Option {i+1}:** {meta}") - else: - st.error("Failed to generate meta description suggestions. Please try different parameters.") - - -def write_blog_from_keywords(search_keywords, url=None, search_params=None, blog_params=None): - """ - This function will take a blog Topic to first generate sections for it - and then generate content for each section. - - Args: - search_keywords (str): Keywords to research and write about - url (str, optional): Optional URL to use as a source - search_params (dict, optional): Dictionary of search parameters including: - - max_results: Maximum number of search results (default: 10) - - search_depth: "basic" or "advanced" search depth (default: "basic") - - include_domains: List of domains to prioritize in search - - time_range: Time range for results (default: "year") - blog_params (dict, optional): Dictionary of blog content characteristics including: - - blog_length: Target word count (default: 2000) - - blog_tone: Tone of the content (default: "Professional") - - blog_demographic: Target audience (default: "Professional") - - blog_type: Type of blog post (default: "Informational") - - blog_language: Language for the blog (default: "English") - - blog_output_format: Format for the blog (default: "markdown") - """ - # Check if we need to display any dialog boxes first - if st.session_state.get("show_title_dialog") and "blog_title" in st.session_state: - display_title_refinement_dialog(st.session_state.blog_title, None) - return None - - if st.session_state.get("show_meta_dialog") and "blog_meta_desc" in st.session_state: - display_meta_description_dialog(st.session_state.blog_meta_desc, None) - return None - - if st.session_state.get("show_snippet_dialog"): - # Get blog title and tags to pass to the dialog - blog_title = st.session_state.get("blog_title", "") - blog_tags = st.session_state.get("blog_tags", "") - display_structured_data_dialog(blog_title, blog_tags) - return None - - # Initialize parameters with defaults - search_params, blog_params = initialize_parameters(search_params, blog_params) - - # Set up progress tracking - final_content_placeholder, progress_placeholder, progress_bar, status_text, update_progress = setup_progress_tracking() - - # STEP 1: Research phase - google_search_result, tavily_search_result, google_search_success, tavily_search_success, example_blog_titles = perform_research_phase( - search_keywords, search_params, update_progress - ) - - # Check if both searches failed - if so, stop the process - if not google_search_success and not tavily_search_success: - update_progress(5, 5, "Research failed") - progress_placeholder.error("โ›” Both Google SERP and Tavily AI searches failed. Unable to generate blog content.") - st.warning("Please check your API keys in the environment settings and try again.") - st.stop() - return None - - # STEP 2: Content generation phase - blog_markdown_str = generate_content_phase( - search_keywords, google_search_result, tavily_search_result, - google_search_success, tavily_search_success, blog_params, update_progress - ) - - if not blog_markdown_str: - update_progress(5, 5, "Content generation failed") - progress_placeholder.error("โ›” Failed to generate blog content from research data.") - st.stop() - return None - - # STEP 3: Metadata & enhancement phase - metadata, generated_image_filepath, saved_blog_to_file = generate_metadata_and_image( - blog_markdown_str, search_keywords, None, update_progress - ) - - # Display image with regeneration option - updated_image_filepath = display_featured_image( - metadata["blog_title"], metadata["blog_meta_desc"], - blog_markdown_str, metadata["blog_tags"], generated_image_filepath - ) - - if updated_image_filepath != generated_image_filepath: - generated_image_filepath = updated_image_filepath - st.rerun() # Refresh the page to show the new image - - # Display blog content and audio option - display_blog_content_and_audio(blog_markdown_str, saved_blog_to_file) - - # STEP 4: Final presentation - with final_content_placeholder.container(): - display_final_metadata_table(metadata, update_progress) - - # If there's a button click to generate a structured data snippet, handle it - if st.session_state.get("show_snippet_dialog", False): - display_structured_data_dialog(metadata["blog_title"], metadata["blog_tags"]) - - # Final progress update - update_progress(5, 5, "Blog generation complete!") - - # Replace progress bar with success message - progress_placeholder.success("โœ… Blog generation process completed successfully!") - - return blog_markdown_str diff --git a/ToBeMigrated/ai_writers/ai_letter_writer/business_letters.py b/ToBeMigrated/ai_writers/ai_letter_writer/business_letters.py deleted file mode 100644 index baf2b9da..00000000 --- a/ToBeMigrated/ai_writers/ai_letter_writer/business_letters.py +++ /dev/null @@ -1,1271 +0,0 @@ -""" -Business Letters Module - -This module provides a Streamlit interface for generating various types of business letters -using AI assistance. It collects user inputs specific to the chosen business letter subtype, -formats the data, generates a prompt for the AI, calls the AI for content generation, -and displays the formatted letter preview and analysis. -""" - -import streamlit as st -import datetime -from typing import Dict, Any, List - -# Assuming these modules and functions exist and are correctly imported in a real application. -# Placeholder functions are included below for demonstration purposes if actual imports are not available. -# from ..utils.letter_formatter import format_letter, get_letter_preview_html -# from ..utils.letter_analyzer import analyze_letter_tone, check_formality, get_readability_metrics, suggest_improvements -# from ..utils.letter_templates import get_template_by_type -# from ....gpt_providers.text_generation.main_text_generation import llm_text_gen - -# --- Placeholder Functions (Replace with actual imports in a real app) --- -# These placeholders mimic the expected behavior of the imported functions -# to allow the rest of the code structure to be reviewed and run without dependencies. - -def format_letter(content: str, metadata: Dict[str, Any], letter_type: str = "personal") -> str: - """Placeholder: Returns the content as is.""" - return content - -def get_letter_preview_html(content: str, metadata: Dict[str, Any], letter_type: str = "personal") -> str: - """Placeholder: Generates a basic HTML preview for business letters.""" - # Basic HTML structure with inline styles for preview - formatted_paragraphs = "".join(f"

{p.strip()}

" for p in content.split("\n\n") if p.strip()) - return f""" -
-
{metadata.get('date', 'Date')}
-
Subject: {metadata.get('subject', 'No Subject')}
-
{metadata.get('salutation', 'Dear Recipient,')}
-
{formatted_paragraphs if formatted_paragraphs else "

Letter content goes here...

"}
-
{metadata.get('complimentary_close', 'Sincerely,')}
-
{metadata.get('sender_name', 'Sender Name')}
-
{metadata.get('sender_title', 'Sender Title')}
-
- """ - -def analyze_letter_tone(content: str) -> Dict[str, float]: - """Placeholder: Returns dummy tone analysis.""" - # Returns scores between 0.0 and 1.0 - return {"professional": 0.9, "persuasive": 0.75, "confident": 0.8} - -def check_formality(content: str) -> float: - """Placeholder: Returns a dummy formality score (0.0 to 1.0).""" - return 0.85 # Example: 85% formal - -def get_readability_metrics(content: str) -> Dict[str, Any]: - """Placeholder: Returns dummy readability metrics.""" - word_count = len(content.split()) - # Estimate reading time in seconds (assuming ~200 words per minute) - reading_time_seconds = round((word_count / 200) * 60) - return { - "word_count": word_count, - "sentence_count": max(1, content.count('. ') + content.count('! ') + content.count('? ')), # Simple sentence count - "avg_words_per_sentence": round(word_count / max(1, content.count('. ') + content.count('! ') + content.count('? ')), 2), - "flesch_reading_ease": 50.0, # Dummy score for business letters - "reading_level": "Fairly Difficult", # Dummy level - "reading_time_seconds": reading_time_seconds # Added reading time - } - -def suggest_improvements(content: str, letter_type: str) -> List[str]: - """Placeholder: Returns dummy improvement suggestions.""" - if "jargon" in content.lower(): - return ["Suggestion: Avoid excessive jargon unless appropriate for the recipient."] - elif "passive voice" in content.lower(): - return ["Suggestion: Consider using more active voice for clarity and impact."] - else: - return ["Suggestion: Ensure your call to action is clear and prominent."] - -def get_template_by_type(letter_type: str, subtype: str = "default") -> Dict[str, Any]: - """Placeholder: Returns a generic template.""" - # This should ideally come from the actual letter_templates module - return {"structure": ["Introduction", "Body", "Call to Action", "Closing"], "guidance": "Follow standard business letter practices."} - -def llm_text_gen(prompt: str) -> str: - """Placeholder: Simulates LLM text generation.""" - # In a real app, this would call the actual LLM API - st.info(f"LLM Prompt:\n```\n{prompt}\n```") # Display prompt for debugging - # Return a dummy generated letter based on the prompt - return f"Subject: Generated Business Letter Preview\n\nDear [Generated Recipient Name],\n\nThis is a sample business letter generated based on the following details:\n\n{prompt}\n\n[Generated content based on the prompt would go here, following the requested structure, tone, persuasion level, length, and formality.]\n\nSincerely,\n[Generated Your Name]" - -# --- End Placeholder Functions --- - - -def write_letter(): - """ - Main function for the Business Letters interface. Sets up the Streamlit page - and handles navigation between subtype selection and the letter form. - """ - - # Page title and description - st.title("๐Ÿ’ผ Business Letter Writer") - st.markdown(""" - Create professional business letters for various purposes. Select a letter type below to get started. - """) - - # Initialize Streamlit session state variables specific to the business module. - # These variables persist across reruns and store the user's progress and data. - if "business_letter_subtype" not in st.session_state: - st.session_state.business_letter_subtype = None # Stores the ID of the selected business letter type - if "business_letter_generated" not in st.session_state: - st.session_state.business_letter_generated = False # Flag to indicate if a letter has been generated - if "business_letter_content" not in st.session_state: - st.session_state.business_letter_content = None # Stores the generated letter content - if "business_letter_metadata" not in st.session_state: - st.session_state.business_letter_metadata = {} # Stores metadata like sender/recipient info - if "business_letter_form_data" not in st.session_state: - st.session_state.business_letter_form_data = {} # Stores the user's input from the form fields - - # Back button logic for subtypes. This button appears when a subtype is selected, - # allowing the user to return to the subtype selection screen. - if st.session_state.business_letter_subtype is not None: - if st.button("โ† Back to Business Letter Types"): - # Reset session state variables for this module to their initial state - # This clears the current form data and generated letter. - st.session_state.business_letter_subtype = None - st.session_state.business_letter_generated = False - st.session_state.business_letter_content = None - st.session_state.business_letter_metadata = {} - st.session_state.business_letter_form_data = {} - st.rerun() # Rerun the app to update the UI based on the changed state - - # Main navigation logic within the business module. - # If no subtype is selected, show the selection grid. Otherwise, show the form for the selected subtype. - if st.session_state.business_letter_subtype is None: - # Display business letter type selection if no subtype is selected - display_business_letter_types() - else: - # Display the interface form for the selected business letter subtype - display_business_letter_form(st.session_state.business_letter_subtype) - - -def display_business_letter_types(): - """ - Displays the business letter type selection interface using a grid of styled buttons. - Each button represents a specific type of business letter the user can choose to write. - """ - - st.markdown("## Select Business Letter Type") - - # Define business letter types with their details (ID, Name, Icon, Description, Color) - # This list is used to generate the selection buttons. - business_letter_types = [ - { - "id": "sales", - "name": "Sales Letter", - "icon": "๐Ÿ’ฐ", - "description": "Promote products or services to potential customers", - "color": "#4CAF50" # Green - }, - { - "id": "proposal", - "name": "Business Proposal", - "icon": "๐Ÿ“Š", - "description": "Present a business idea or solution", - "color": "#2196F3" # Blue - }, - { - "id": "order", - "name": "Order Letter", - "icon": "๐Ÿ›’", - "description": "Place an order for products or services", - "color": "#FF9800" # Orange - }, - { - "id": "quotation", - "name": "Quotation Letter", - "icon": "๐Ÿ’ฒ", - "description": "Provide pricing information for products or services", - "color": "#9C27B0" # Purple - }, - { - "id": "acknowledgment", - "name": "Acknowledgment Letter", - "icon": "โœ…", - "description": "Confirm receipt of payment, order, or documents", - "color": "#607D8B" # Blue Grey - }, - { - "id": "collection", - "name": "Collection Letter", - "icon": "๐Ÿ’ต", - "description": "Request payment for overdue accounts", - "color": "#F44336" # Red - }, - { - "id": "adjustment", - "name": "Adjustment Letter", - "icon": "๐Ÿ”ง", - "description": "Respond to customer complaints or requests", - "color": "#795548" # Brown - }, - { - "id": "credit", - "name": "Credit Letter", - "icon": "๐Ÿ’ณ", - "description": "Extend credit to customers or respond to credit requests", - "color": "#009688" # Teal - }, - { - "id": "follow_up", - "name": "Follow-up Letter", - "icon": "๐Ÿ”„", - "description": "Follow up on previous communication or meetings", - "color": "#673AB7" # Deep Purple - } - ] - - # Inject custom CSS to style the Streamlit buttons to look like cards. - # This provides a visually appealing selection grid. - st.markdown(""" - - """, unsafe_allow_html=True) - - - # Create a grid layout for the buttons using Streamlit columns (3 columns per row). - cols = st.columns(3) - - # Display each letter type as a button. - for i, letter_type_config in enumerate(business_letter_types): - with cols[i % 3]: # Place buttons in columns, wrapping every 3 - # Use a unique key for each button based on its ID - # The button label uses markdown and HTML for icon, name, and description - if st.button( - f"### {letter_type_config['icon']} {letter_type_config['name']}\n\n

{letter_type_config['description']}

", - key=f"btn_business_select_{letter_type_config['id']}", # Unique key for each button - unsafe_allow_html=True # Allow markdown and HTML in the button label - ): - # When a button is clicked, update the session state to the selected subtype ID - st.session_state.business_letter_subtype = letter_type_config['id'] - # Clear previous data related to letter generation when selecting a new type - st.session_state.business_letter_generated = False - st.session_state.business_letter_content = None - st.session_state.business_letter_metadata = {} - st.session_state.business_letter_form_data = {} # Clear previous form data - st.rerun() # Rerun the app to switch to the form for the selected subtype - - # Apply specific background colors to buttons using their keys and custom CSS - # This requires injecting CSS after the buttons are rendered. - # Note: This is a common Streamlit workaround for styling individual buttons dynamically. - button_styles = "" - for letter_type_config in business_letter_types: - button_styles += f""" - div.stButton > button[data-testid="stButton"][kind="primary"][sf-key*="btn_business_select_{letter_type_config['id']}"] {{ - background-color: {letter_type_config['color']}; - }} - div.stButton > button[data-testid="stButton"][kind="primary"][sf-key*="btn_business_select_{letter_type_config['id']}"]:hover {{ - background-color: {letter_type_config['color']}D9; /* Slightly darker on hover */ - }} - """ - st.markdown(f"", unsafe_allow_html=True) - - -def display_business_letter_form(subtype: str): - """ - Displays the form for the selected business letter subtype. This includes - input fields specific to the subtype, general business information fields, - tone and style options, and tabs for previewing and analyzing the generated letter. - - Args: - subtype: The ID string of the selected business letter subtype. - """ - - # Get the template for the selected subtype from the templates module. - # This provides structural guidance and general advice for the LLM. - template = get_template_by_type("business", subtype) - - # Display the form title, icon, description, and guidance. - st.markdown(f"## {get_icon_for_subtype(subtype)} {get_name_for_subtype(subtype)}") - st.markdown(f"*{get_description_for_subtype(subtype)}*") - st.info(f"**Guidance:** {template.get('guidance', 'No specific guidance available.')}") - - - # Use a Streamlit form to group inputs. This helps manage state and - # prevents the app from rerunning every time a single input widget changes, - # improving performance for forms with many inputs. - with st.form(key=f"business_letter_form_{subtype}"): - # Create tabs to organize the form sections. - tab1, tab2, tab3 = st.tabs(["Letter Details", "Business Information", "Preview & Export"]) - - # Dictionary to store form data collected from all tabs - form_data = {} - - # --- Tab 1: Letter Details --- - with tab1: - st.markdown("### Letter Content Details") - - # Get the configuration for subtype-specific input fields. - fields = get_fields_for_subtype(subtype) - - # Create form fields dynamically based on the subtype configuration. - # Populate default values from session state to retain user input across reruns. - for field in fields: - # Retrieve default value from session state, falling back to empty string or specific defaults - default_value = st.session_state.business_letter_form_data.get(field["id"], "") - - # Create the appropriate Streamlit input widget based on the field type. - # Use a unique key for each widget to ensure state is managed correctly. - if field["type"] == "text": - form_data[field["id"]] = st.text_input(field["label"], value=default_value, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "textarea": - form_data[field["id"]] = st.text_area(field["label"], value=default_value, help=field.get("help", ""), height=150, key=f"{subtype}_{field['id']}") - elif field["type"] == "date": - # Handle date input default value: use stored value if valid, otherwise use today's date. - try: - # Attempt to parse stored value as date, fallback to today if unsuccessful - default_date = datetime.datetime.strptime(str(default_value), "%Y-%m-%d").date() if default_value else datetime.date.today() - except (ValueError, TypeError): - default_date = datetime.date.today() # Fallback to today's date - form_data[field["id"]] = st.date_input(field["label"], value=default_date, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "select": - # Determine the index of the default value in the options list. - try: - default_index = field["options"].index(default_value) if default_value in field["options"] else 0 - except ValueError: - default_index = 0 # Default to the first option if the stored value is not valid - form_data[field["id"]] = st.selectbox(field["label"], field["options"], index=default_index, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "slider": - # Use the default value from session state or the field config's default - default_slider_value = st.session_state.business_letter_form_data.get(field["id"], field.get("default", (field["min"] + field["max"]) / 2)) # Fallback to midpoint if no default specified - form_data[field["id"]] = st.slider(field["label"], field["min"], field["max"], default_slider_value, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "number": - # Use the default value from session state or the field config's min value - default_number_value = st.session_state.business_letter_form_data.get(field["id"], field.get("min", 0)) - form_data[field["id"]] = st.number_input(field["label"], min_value=field.get("min", 0), value=default_number_value, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - - - # Section for selecting letter tone and style characteristics. - st.markdown("### Tone and Style") - col1, col2 = st.columns(2) - - with col1: - # Selectbox for Tone, using subtype-specific tones and session state default. - tone_options = get_tones_for_subtype(subtype) - default_tone = st.session_state.business_letter_form_data.get("tone", tone_options[0] if tone_options else "Professional") - form_data["tone"] = st.selectbox( - "Tone", - tone_options, - index=tone_options.index(default_tone) if default_tone in tone_options else 0, # Set index based on default value - help="Select the overall tone for your letter (e.g., Friendly, Formal, Assertive).", - key=f"{subtype}_tone" - ) - - # Slider for Persuasion Level, using session state default. - persuasion_options = ["Subtle", "Moderate", "Strong"] - default_persuasion = st.session_state.business_letter_form_data.get("persuasion_level", "Moderate") - form_data["persuasion_level"] = st.select_slider( - "Persuasion Level", - options=persuasion_options, - value=default_persuasion, - help="Select how persuasive you want your letter to be.", - key=f"{subtype}_persuasion" - ) - - with col2: - # Slider for Length, using session state default. - length_options = ["Brief", "Standard", "Detailed"] - default_length = st.session_state.business_letter_form_data.get("length", "Standard") - form_data["length"] = st.select_slider( - "Length", - options=length_options, - value=default_length, - help="Select the desired length of your letter.", - key=f"{subtype}_length" - ) - - # Slider for Formality, using session state default. - formality_options = ["Conversational", "Professional", "Formal"] - default_formality = st.session_state.business_letter_form_data.get("formality", "Professional") - form_data["formality"] = st.select_slider( - "Formality", - options=formality_options, - value=default_formality, - help="Select the formality level of your letter.", - key=f"{subtype}_formality" - ) - - # Section for defining a Call to Action. - st.markdown("### Call to Action") - default_include_cta = st.session_state.business_letter_form_data.get("include_cta", True) - include_cta = st.checkbox("Include a call to action", value=default_include_cta, help="Check to include a clear call to action in your letter.", key=f"{subtype}_include_cta") - - cta_type = None - custom_cta = None - form_data["cta_type"] = None # Initialize to None - form_data["custom_cta"] = None # Initialize to None - if include_cta: - default_cta_type = st.session_state.business_letter_form_data.get("cta_type", "Request a Meeting") - cta_options = ["Request a Meeting", "Place an Order", "Contact for More Information", "Visit Website", "Call", "Email", "Custom"] - cta_type = st.selectbox( - "Call to Action Type", - cta_options, - index=cta_options.index(default_cta_type) if default_cta_type in cta_options else 0, - help="Select the type of call to action you want to include, or choose 'Custom'.", - key=f"{subtype}_cta_type" - ) - form_data["cta_type"] = cta_type # Add selected CTA type to form_data for prompt - - if cta_type == "Custom": - default_custom_cta = st.session_state.business_letter_form_data.get("custom_cta", "") - custom_cta = st.text_input( - "Custom Call to Action", - value=default_custom_cta, - help="Enter your custom call to action phrase.", - placeholder="e.g., Register for our upcoming webinar", - key=f"{subtype}_custom_cta" - ) - form_data["custom_cta"] = custom_cta # Add to form_data for prompt - - - # Section for adding additional persuasive elements like offers, testimonials, or urgency. - with st.expander("Additional Options"): - default_include_special_offer = st.session_state.business_letter_form_data.get("include_special_offer", False) - include_special_offer = st.checkbox("Include a special offer or incentive", value=default_include_special_offer, help="Add a specific offer to encourage action.", key=f"{subtype}_include_special_offer") - form_data["special_offer"] = None # Initialize to None - if include_special_offer: - default_special_offer = st.session_state.business_letter_form_data.get("special_offer", "") - form_data["special_offer"] = st.text_area( - "Special Offer/Incentive Details", - value=default_special_offer, - height=100, - help="Describe the special offer or incentive.", - placeholder="e.g., 15% discount for orders placed before June 30", - key=f"{subtype}_special_offer" - ) - - default_include_testimonial = st.session_state.business_letter_form_data.get("include_testimonial", False) - include_testimonial = st.checkbox("Include a testimonial or social proof", value=default_include_testimonial, help="Add a quote from a satisfied customer or relevant statistic.", key=f"{subtype}_include_testimonial") - form_data["testimonial"] = None # Initialize to None - if include_testimonial: - default_testimonial = st.session_state.business_letter_form_data.get("testimonial", "") - form_data["testimonial"] = st.text_area( - "Testimonial/Social Proof Details", - value=default_testimonial, - height=100, - help="Add a testimonial or social proof to strengthen your message.", - placeholder="e.g., 'ABC Company helped us increase our revenue by 30% in just three months.' - John Smith, CEO of XYZ Corp", - key=f"{subtype}_testimonial" - ) - - default_include_urgency = st.session_state.business_letter_form_data.get("include_urgency", False) - include_urgency = st.checkbox("Include urgency or scarcity elements", value=default_include_urgency, help="Add elements that encourage prompt action.", key=f"{subtype}_include_urgency") - form_data["urgency"] = None # Initialize to None - if include_urgency: - default_urgency = st.session_state.business_letter_form_data.get("urgency", "") - form_data["urgency"] = st.text_area( - "Urgency/Scarcity Details", - value=default_urgency, - height=100, - help="Add elements that create a sense of urgency or scarcity.", - placeholder="e.g., Limited time offer - only 10 spots available", - key=f"{subtype}_urgency" - ) - - # --- Tab 2: Business Information --- - with tab2: - # Section for sender and recipient business information. - col3, col4 = st.columns(2) - - with col3: - st.markdown("### Your Company Information") - # Input fields for sender's business details, populated from session state. - form_data["sender_company"] = st.text_input("Your Company Name", value=st.session_state.business_letter_form_data.get("sender_company", ""), help="Your company's full legal name.", key=f"{subtype}_sender_company") - form_data["sender_name"] = st.text_input("Your Name", value=st.session_state.business_letter_form_data.get("sender_name", ""), help="Your full name as the sender.", key=f"{subtype}_sender_name") - form_data["sender_title"] = st.text_input("Your Title/Position", value=st.session_state.business_letter_form_data.get("sender_title", ""), help="Your job title or position within the company.", key=f"{subtype}_sender_title") - form_data["sender_address"] = st.text_area("Your Company Address", value=st.session_state.business_letter_form_data.get("sender_address", ""), height=100, help="Full mailing address of your company.", key=f"{subtype}_sender_address") - form_data["sender_phone"] = st.text_input("Your Phone Number (Optional)", value=st.session_state.business_letter_form_data.get("sender_phone", ""), help="Your contact phone number.", key=f"{subtype}_sender_phone") - form_data["sender_email"] = st.text_input("Your Email Address (Optional)", value=st.session_state.business_letter_form_data.get("sender_email", ""), help="Your contact email address.", key=f"{subtype}_sender_email") - form_data["sender_website"] = st.text_input("Your Website (Optional)", value=st.session_state.business_letter_form_data.get("sender_website", ""), help="Your company website URL.", key=f"{subtype}_sender_website") - - with col4: - st.markdown("### Recipient Information") - # Input fields for recipient's business details, populated from session state. - form_data["recipient_company"] = st.text_input("Recipient Company Name", value=st.session_state.business_letter_form_data.get("recipient_company", ""), help="The name of the company you are writing to.", key=f"{subtype}_recipient_company") - form_data["recipient_name"] = st.text_input("Recipient Name (Optional)", value=st.session_state.business_letter_form_data.get("recipient_name", ""), help="The name of the specific person you are writing to (if known).", key=f"{subtype}_recipient_name") - form_data["recipient_title"] = st.text_input("Recipient Title/Position (Optional)", value=st.session_state.business_letter_form_data.get("recipient_title", ""), help="The recipient's job title or position (if known).", key=f"{subtype}_recipient_title") - form_data["recipient_address"] = st.text_area("Recipient Address", value=st.session_state.business_letter_form_data.get("recipient_address", ""), height=100, help="Full mailing address of the recipient's company.", key=f"{subtype}_recipient_address") - - # Optional recipient contact information in an expander. - with st.expander("Additional Recipient Information (Optional)"): - form_data["recipient_phone"] = st.text_input("Recipient Phone Number (Optional)", value=st.session_state.business_letter_form_data.get("recipient_phone", ""), help="Recipient's contact phone number.", key=f"{subtype}_recipient_phone") - form_data["recipient_email"] = st.text_input("Recipient Email Address (Optional)", value=st.session_state.business_letter_form_data.get("recipient_email", ""), help="Recipient's contact email address.", key=f"{subtype}_recipient_email") - - # Section for defining the business relationship. - st.markdown("### Business Relationship") - relationship_options = ["New Prospect", "Existing Customer", "Former Customer", "Partner/Vendor", "Other"] - default_relationship_type = st.session_state.business_letter_form_data.get("relationship_type", "New Prospect") - form_data["relationship_type"] = st.selectbox( - "Relationship with Recipient", - relationship_options, - index=relationship_options.index(default_relationship_type) if default_relationship_type in relationship_options else 0, - help="Select your current business relationship with the recipient.", - key=f"{subtype}_relationship_type" - ) - - form_data["relationship_duration"] = None # Initialize to None - if form_data["relationship_type"] == "Existing Customer": - default_relationship_duration = st.session_state.business_letter_form_data.get("relationship_duration", "") - form_data["relationship_duration"] = st.text_input( - "Relationship Duration", - value=default_relationship_duration, - help="How long have you been doing business with this customer? (e.g., 3 years, since 2020)", - placeholder="e.g., 3 years", - key=f"{subtype}_relationship_duration" - ) - - # Section for letter formatting options. - st.markdown("### Letter Format") - format_options = ["Full Block", "Modified Block", "Semi-Block"] - default_letter_format = st.session_state.business_letter_form_data.get("letter_format", "Full Block") - form_data["letter_format"] = st.selectbox( - "Format Style", - format_options, - index=format_options.index(default_letter_format) if default_letter_format in format_options else 0, - help="Select the standard business letter format style.", - key=f"{subtype}_letter_format" - ) - - default_include_letterhead = st.session_state.business_letter_form_data.get("include_letterhead", True) - form_data["include_letterhead"] = st.checkbox("Include letterhead", value=default_include_letterhead, help="Include your company's letterhead information at the top.", key=f"{subtype}_include_letterhead") - - default_include_subject_line = st.session_state.business_letter_form_data.get("include_subject_line", True) - include_subject_line = st.checkbox("Include subject line", value=default_include_subject_line, help="Include a clear subject line.", key=f"{subtype}_include_subject_line") - form_data["subject_line"] = None # Initialize to None - form_data["include_subject_line"] = include_subject_line # Store checkbox state - if include_subject_line: - default_subject_line = st.session_state.business_letter_form_data.get("subject_line", "") - form_data["subject_line"] = st.text_input( - "Subject Line Text", - value=default_subject_line, - help="Enter the text for the subject line.", - placeholder="e.g., Special Offer for Premium Customers", - key=f"{subtype}_subject_line" - ) - - default_include_reference_number = st.session_state.business_letter_form_data.get("include_reference_number", False) - include_reference_number = st.checkbox("Include reference number", value=default_include_reference_number, help="Include a reference number for tracking.", key=f"{subtype}_include_reference_number") - form_data["reference_number"] = None # Initialize to None - form_data["include_reference_number"] = include_reference_number # Store checkbox state - if include_reference_number: - default_reference_number = st.session_state.business_letter_form_data.get("reference_number", "") - form_data["reference_number"] = st.text_input( - "Reference Number Text", - value=default_reference_number, - help="Enter the reference number.", - placeholder="e.g., REF-2023-123", - key=f"{subtype}_reference_number" - ) - - # --- Tab 3: Preview & Export --- - with tab3: - # Instructions for the user before generation. - if not st.session_state.business_letter_generated: - st.info("Complete the letter details and click 'Generate Letter' to preview your letter.") - - # The Generate button is placed inside the form. Clicking it submits the form - # and triggers the code block below it to run. - generate_button = st.form_submit_button("Generate Letter", type="primary") - - if generate_button: - # Action to perform when the form is submitted via the Generate button. - - # Store the current state of all form inputs in session state. - # This allows retaining user inputs even after generation or regeneration. - st.session_state.business_letter_form_data = form_data.copy() - - # Prepare metadata specifically for the formatter and analysis functions. - # This includes structured contact info, dates, subject, etc. - metadata = { - "sender_company": form_data.get("sender_company", ""), - "sender_name": form_data.get("sender_name", ""), - "sender_title": form_data.get("sender_title", ""), - "sender_address": form_data.get("sender_address", ""), - "sender_phone": form_data.get("sender_phone", ""), - "sender_email": form_data.get("sender_email", ""), - "sender_website": form_data.get("sender_website", ""), - "recipient_company": form_data.get("recipient_company", ""), - "recipient_name": form_data.get("recipient_name", ""), - "recipient_title": form_data.get("recipient_title", ""), - "recipient_address": form_data.get("recipient_address", ""), - "recipient_phone": form_data.get("recipient_phone", ""), - "recipient_email": form_data.get("recipient_email", ""), - "relationship_type": form_data.get("relationship_type", ""), - "date": datetime.datetime.now().strftime("%B %d, %Y"), # Use current date for the letter - "letter_format": form_data.get("letter_format", "Full Block"), - "include_letterhead": form_data.get("include_letterhead", True), - "subject": form_data.get('subject_line') if form_data.get('include_subject_line') else "", # Include subject in metadata for formatter - "reference_number": form_data.get('reference_number') if form_data.get('include_reference_number') else "", # Include reference in metadata - } - # Determine salutation based on recipient name/title preference - recipient_display_name = metadata.get("recipient_name") - recipient_display_title = metadata.get("recipient_title") - if recipient_display_name and recipient_display_title: - metadata["salutation"] = f"Dear {recipient_display_title} {recipient_display_name}:" - elif recipient_display_name: - metadata["salutation"] = f"Dear {recipient_display_name}:" - else: - metadata["salutation"] = "Dear Sir/Madam:" # Fallback salutation - - # Determine complimentary close based on formality - metadata["complimentary_close"] = "Sincerely," # Standard business close - - - st.session_state.business_letter_metadata = metadata.copy() - - - # --- Letter Generation Logic --- - # Check for minimal required fields before attempting generation. - if not form_data.get("sender_company") or not form_data.get("recipient_company"): - st.error("Please provide at least your company name and the recipient's company name.") - else: - # Display a spinner while the AI generates the letter. - with st.spinner("Generating your business letter..."): - # Combine all necessary data into a single dictionary for the generation function. - # This includes both form data and metadata. - # Note: tone, persuasion_level, length, formality are already in form_data - generation_data = { - "subtype": subtype, - **form_data, # Includes all collected form inputs - **metadata # Includes structured sender/recipient/date/format info - } - - # Call the letter generation function with the combined data. - letter_content = generate_business_letter(generation_data) - - # Store the generated letter content and update the generated flag. - st.session_state.business_letter_content = letter_content - st.session_state.business_letter_generated = True - - # Rerun the app to exit the form block and display the generated letter section. - # This rerun happens automatically on form submission, but explicit state updates - # ensure the display logic reacts correctly. - # st.rerun() # Rerun is handled by form submission - - # --- Display Generated Letter and Analysis --- - # This block executes if a letter has been generated and stored in session state. - if st.session_state.business_letter_generated and st.session_state.business_letter_content is not None: - letter_content = st.session_state.business_letter_content - metadata = st.session_state.business_letter_metadata - - # Create tabs for different views of the generated letter. - preview_tab1, preview_tab2, preview_tab3 = st.tabs(["Formatted Preview", "Plain Text", "Analysis"]) - - with preview_tab1: - st.markdown("### Letter Preview") - # Generate and display the HTML preview of the letter using the formatter utility. - # Pass letter_type="business" to the formatter. - html_preview = get_letter_preview_html(letter_content, metadata, letter_type="business") - st.markdown(html_preview, unsafe_allow_html=True) - - # Download button for the plain text version of the letter. - file_name_suffix = metadata.get('recipient_company', 'business').replace(' ', '_').lower() - st.download_button( - label="Download as Text", - data=letter_content, - file_name=f"{subtype}_letter_to_{file_name_suffix}_{datetime.datetime.now().strftime('%Y%m%d')}.txt", - mime="text/plain" - ) - - with preview_tab2: - st.markdown("### Plain Text Content") - # Display the raw generated letter content in a text area. - st.text_area("Letter Content", letter_content, height=400, key=f"{subtype}_plain_text_display") - - # Button to copy the plain text content to the clipboard. - st.button("Copy Plain Text (Manual Copy from above)", help="Select and copy the text from the box above.", key=f"{subtype}_copy_plain_text_instruction") - - - with preview_tab3: - st.markdown("### Letter Analysis") - # Perform and display analysis of the generated letter using utility functions. - - # Analyze tone, formality, and readability. - tone_analysis = analyze_letter_tone(letter_content) - formality_score = check_formality(letter_content) # Returns score between 0.0 and 1.0 - readability_metrics = get_readability_metrics(letter_content) - # Get improvement suggestions, passing the letter type for context. - improvement_suggestions = suggest_improvements(letter_content, "business") # Pass "business" as letter_type - - # Display analysis results in two columns. - col5, col6 = st.columns(2) - - with col5: - st.markdown("#### Tone Analysis") - # Display each tone score. - if tone_analysis: - for tone, score in tone_analysis.items(): - st.write(f"- **{tone.capitalize()}:** {score:.2f}") - else: - st.info("Tone analysis not available.") - - - st.markdown("#### Formality") - # Display formality score as a percentage and a progress bar. - st.progress(formality_score) # Progress bar expects a value between 0.0 and 1.0 - st.write(f"Formality Score: {formality_score * 100:.0f}/100") # Display as a percentage (0-100) - - - with col6: - st.markdown("#### Readability Metrics") - # Display various readability metrics. - if readability_metrics: - st.write(f"**Word Count:** {readability_metrics.get('word_count', 'N/A')} words") - st.write(f"**Sentence Count:** {readability_metrics.get('sentence_count', 'N/A')} sentences") - st.write(f"**Avg Words per Sentence:** {readability_metrics.get('avg_words_per_sentence', 'N/A')}") - st.write(f"**Flesch Reading Ease:** {readability_metrics.get('flesch_reading_ease', 'N/A')}") - st.write(f"**Reading Level:** {readability_metrics.get('reading_level', 'N/A')}") - # Display estimated reading time. - st.write(f"**Estimated Reading Time:** {readability_metrics.get('reading_time_seconds', 'N/A')} seconds") - else: - st.info("Readability metrics not available.") - - st.markdown("#### Suggestions for Improvement") - # Display improvement suggestions. - if improvement_suggestions: - # Iterate through the list and display each suggestion as a list item. - for suggestion in improvement_suggestions: - st.markdown(f"- {suggestion}") - else: - st.info("No specific suggestions for improvement found.") - - # Button to regenerate the letter. Placed outside the form so it's always visible - # after generation, without needing to resubmit the form first. - # Keep the form data in session state so the user's inputs are retained. - if st.button("Regenerate Letter", key=f"{subtype}_regenerate_button"): - # Reset the generated state and content to allow the form to be displayed again. - st.session_state.business_letter_generated = False - st.session_state.business_letter_content = None # Clear generated content - # st.session_state.business_letter_form_data is already populated from the form submit - st.rerun() # Rerun to show the form with previous inputs - - -def generate_business_letter(data: Dict[str, Any]) -> str: - """ - Generates a business letter using the LLM by constructing a detailed prompt - based on the collected user inputs and metadata. - - Args: - data: A dictionary containing all collected user inputs and metadata - (from the form and session state). - - Returns: - The generated letter content as a string, or an error message if generation fails. - """ - - # Extract key generation parameters from the data dictionary. - subtype = data.get("subtype", "default") - tone = data.get("tone", "Professional") - persuasion_level = data.get("persuasion_level", "Moderate") - length = data.get("length", "Standard") - formality = data.get("formality", "Professional") - - # Get template guidance and structure to include in the prompt. - template = get_template_by_type("business", subtype) - template_guidance = template.get("guidance", "Follow standard business letter practices.") - template_structure = template.get("structure", ["Introduction", "Body", "Call to Action", "Closing"]) - - - # Build the prompt string step-by-step, including all relevant details - # from the user's input and selected options. - prompt_parts = [ - f"Write a {length.lower()}, {formality.lower()} business {get_name_for_subtype(subtype)} letter with a {tone.lower()} tone and {persuasion_level.lower()} persuasion level.", - f"Purpose: {get_description_for_subtype(subtype)}", - f"Recipient: {data.get('recipient_name', '')}, {data.get('recipient_title', '')} at {data.get('recipient_company', '')}", - f"Sender: {data.get('sender_name', '')}, {data.get('sender_title', '')} at {data.get('sender_company', '')}", - f"Relationship: {data.get('relationship_type', 'Not specified')}{' for ' + data.get('relationship_duration', '') if data.get('relationship_duration') else ''}", - f"Date: {data.get('date', '')}", - f"Desired Format Style: {data.get('letter_format', 'Full Block')}", - ] - - # Add subject line if provided - if data.get('include_subject_line') and data.get('subject_line'): - prompt_parts.append(f"Subject: {data['subject_line']}") - - # Add reference number if provided - if data.get('include_reference_number') and data.get('reference_number'): - prompt_parts.append(f"Reference Number: {data['reference_number']}") - - - # Add subtype-specific details from the collected form data. - subtype_fields = get_fields_for_subtype(subtype) - if subtype_fields: - prompt_parts.append("\nKey Details to Include:") - for field in subtype_fields: - field_value = data.get(field["id"]) - # Include the field's label and value in the prompt only if the value is not empty. - if field_value: - # Format date fields nicely for the prompt if they are date objects. - if field["type"] == "date": - try: - field_value_str = field_value.strftime("%B %d, %Y") - except AttributeError: - field_value_str = str(field_value) # Fallback if not a date object - else: - field_value_str = str(field_value) - - prompt_parts.append(f"- {field['label']}: {field_value_str}") - - - # Add additional persuasive options if included. - if data.get('include_cta') and data.get('cta_type'): - cta_text = data.get('custom_cta') if data.get('cta_type') == "Custom" else data['cta_type'] - if cta_text: - prompt_parts.append(f"Include a clear Call to Action: {cta_text}") - - if data.get('include_special_offer') and data.get('special_offer'): - prompt_parts.append(f"Include this Special Offer/Incentive: {data['special_offer']}") - - if data.get('include_testimonial') and data.get('testimonial'): - prompt_parts.append(f"Include this Testimonial/Social Proof: {data['testimonial']}") - - if data.get('include_urgency') and data.get('urgency'): - prompt_parts.append(f"Include Urgency/Scarcity Elements: {data['urgency']}") - - # Add the template structure and overall guidance to the prompt. - # This helps the LLM understand the desired layout and writing style. - prompt_parts.append("\nFollow this general structure:") - for i, section in enumerate(template_structure): - prompt_parts.append(f"{i+1}. {section}") - prompt_parts.append(f"\nOverall Writing Guidance: {template_guidance}") - - # Add final instructions for the LLM. - prompt_parts.append("\nMake the letter professional, persuasive, and appropriate for business communication.") - - - # Combine all prompt parts into a single string. - final_prompt = "\n".join(prompt_parts) - - # Call the LLM text generation function with the constructed prompt. - try: - letter_content = llm_text_gen(final_prompt) - return letter_content - except Exception as e: - # Catch any errors during LLM generation and display an error message. - st.error(f"Error generating letter: {str(e)}") - return "Error generating letter. Please try again." - - -# --- Helper functions (from original code, slightly enhanced) --- - -def get_icon_for_subtype(subtype: str) -> str: - """Maps a business letter subtype ID to a relevant emoji icon.""" - icons = { - "sales": "๐Ÿ’ฐ", - "proposal": "๐Ÿ“Š", - "order": "๐Ÿ›’", - "quotation": "๐Ÿ’ฒ", - "acknowledgment": "โœ…", - "collection": "๐Ÿ’ต", - "adjustment": "๐Ÿ”ง", - "credit": "๐Ÿ’ณ", - "follow_up": "๐Ÿ”„" - } - return icons.get(subtype, "๐Ÿ“") # Default icon - -def get_name_for_subtype(subtype: str) -> str: - """Maps a business letter subtype ID to its display name.""" - names = { - "sales": "Sales Letter", - "proposal": "Business Proposal", - "order": "Order Letter", - "quotation": "Quotation Letter", - "acknowledgment": "Acknowledgment Letter", - "collection": "Collection Letter", - "adjustment": "Adjustment Letter", - "credit": "Credit Letter", - "follow_up": "Follow-up Letter" - } - return names.get(subtype, "Business Letter") # Default name - -def get_description_for_subtype(subtype: str) -> str: - """Maps a business letter subtype ID to a brief description.""" - descriptions = { - "sales": "Promote products or services to potential customers with a persuasive sales letter.", - "proposal": "Present a business idea or solution with a comprehensive business proposal.", - "order": "Place an order for products or services with a clear and detailed order letter.", - "quotation": "Provide pricing information for products or services with a professional quotation letter.", - "acknowledgment": "Confirm receipt of payment, order, or documents with an acknowledgment letter.", - "collection": "Request payment for overdue accounts with a firm but professional collection letter.", - "adjustment": "Respond to customer complaints or requests with a solution-oriented adjustment letter.", - "credit": "Extend credit to customers or respond to credit requests with a clear credit letter.", - "follow_up": "Follow up on previous communication or meetings with a purposeful follow-up letter." - } - return descriptions.get(subtype, "Create a business letter for your specific needs.") # Default description - -def get_fields_for_subtype(subtype: str) -> List[Dict[str, Any]]: - """ - Provides a list of input field configurations specific to each business letter subtype. - Each dictionary in the list defines a form input field, including its ID, label, - type, and optional properties like help text, options (for select/slider), - min/max values (for slider/number), and a default value. - """ - - # Define subtype-specific fields. - if subtype == "sales": - return [ - { - "id": "product_service", - "label": "Product/Service", - "type": "text", - "help": "What specific product or service are you promoting?" - }, - { - "id": "benefits", - "label": "Key Benefits", - "type": "textarea", - "help": "List the main benefits your product or service offers to the recipient." - }, - { - "id": "usp", - "label": "Unique Selling Points", - "type": "textarea", - "help": "What makes your product or service stand out from competitors?" - }, - { - "id": "pricing", - "label": "Pricing Information", - "type": "textarea", - "help": "Include relevant pricing details or a call to action to learn about pricing. (optional)" - } - ] - elif subtype == "proposal": - return [ - { - "id": "proposal_type", - "label": "Proposal Type", - "type": "text", - "help": "What type of proposal is this? (e.g., service proposal, partnership proposal)" - }, - { - "id": "problem", - "label": "Problem Statement", - "type": "textarea", - "help": "What problem or need does your proposal address?" - }, - { - "id": "solution", - "label": "Proposed Solution", - "type": "textarea", - "help": "What solution are you proposing?" - }, - { - "id": "implementation", - "label": "Implementation Plan", - "type": "textarea", - "help": "How will your solution be implemented?" - }, - { - "id": "cost_timeline", - "label": "Cost and Timeline Summary", - "type": "textarea", - "help": "Provide a summary of the costs involved and the overall timeline." - } - ] - elif subtype == "order": - return [ - { - "id": "ordered_items", - "label": "Products/Services Ordered", - "type": "textarea", - "help": "List the products or services you are ordering, including quantities, model numbers, and any specific details." - }, - { - "id": "delivery", - "label": "Delivery Details", - "type": "textarea", - "help": "Specify delivery requirements: requested date, shipping address (if different from recipient address), shipping method, and any special instructions." - }, - { - "id": "payment_terms", - "label": "Payment Terms", - "type": "text", - "help": "State the agreed-upon payment terms for this order (e.g., Net 30, Payment in Advance)." - }, - { - "id": "po_number", - "label": "Purchase Order Number", - "type": "text", - "help": "Enter the Purchase Order number if applicable for tracking." - } - ] - elif subtype == "quotation": - return [ - { - "id": "quoted_items", - "label": "Products/Services Quoted", - "type": "textarea", - "help": "List the products or services you are providing a quote for, including brief descriptions and specifications." - }, - { - "id": "pricing_details", - "label": "Pricing Details", - "type": "textarea", - "help": "Provide a breakdown of pricing for each item or service, including unit price, quantity, and line total. Mention taxes or fees separately." - }, - { - "id": "validity", - "label": "Validity Period", - "type": "text", - "help": "How long is this quotation valid for?" - }, - { - "id": "terms", - "label": "Terms and Conditions", - "type": "textarea", - "help": "Include any relevant terms and conditions related to this quotation. (optional)" - } - ] - elif subtype == "acknowledgment": - return [ - { - "id": "acknowledging", - "label": "Acknowledging", - "type": "text", - "help": "What specific item, payment, order, or document are you acknowledging receipt of?" - }, - { - "id": "date_received", - "label": "Date Received", - "type": "date", # Using date type for date input - "help": "When was the item, payment, order, or document received?" - }, - { - "id": "reference_info", - "label": "Reference Information", - "type": "text", - "help": "Include any relevant reference numbers (e.g., Order ID, Invoice #, Case Number)." - }, - { - "id": "next_steps", - "label": "Next Steps", - "type": "textarea", - "help": "Outline the next steps or actions that will be taken regarding this item (e.g., 'Your order is being processed', 'Your payment has been applied'). (optional)" - } - ] - elif subtype == "collection": - return [ - { - "id": "invoice_number", - "label": "Invoice Number", - "type": "text", - "help": "What is the invoice number for the overdue payment?" - }, - { - "id": "amount_due", - "label": "Amount Due", - "type": "text", # Using text to allow currency symbols like $ or โ‚ฌ - "help": "What is the total outstanding amount due?" - }, - { - "id": "due_date", - "label": "Original Due Date", - "type": "date", # Using date type for date input - "help": "When was the payment originally due?" - }, - { - "id": "days_overdue", - "label": "Days Overdue", - "type": "number", - "min": 0, # Minimum value is 0 days overdue - "help": "How many days is the payment currently overdue?" - }, - { - "id": "payment_history", - "label": "Payment History Summary", - "type": "textarea", - "help": "Briefly summarize previous attempts to collect payment or communication about the invoice. (optional)" - }, - { - "id": "consequences", - "label": "Consequences of Non-Payment", - "type": "textarea", - "help": "Clearly state the consequences of continued non-payment (e.g., late fees, referral to collections, legal action). Tailor the severity to the stage of collection. (optional)" - } - ] - elif subtype == "adjustment": - return [ - { - "id": "customer_name_adj", # Added suffix to avoid potential ID clashes with recipient_name - "label": "Customer Name", - "type": "text", - "help": "Name of the customer who submitted the complaint or request." - }, - { - "id": "complaint_request", - "label": "Customer Complaint/Request Summary", - "type": "textarea", - "help": "Provide a brief summary of the customer's complaint or request." - }, - { - "id": "date_of_issue", - "label": "Date of Issue/Complaint", - "type": "date", # Using date type for date input - "help": "When did the issue occur or when was the complaint/request received?" - }, - { - "id": "findings", - "label": "Investigation Findings", - "type": "textarea", - "help": "Describe what your investigation found regarding the customer's issue." - }, - { - "id": "adjustment", - "label": "Adjustment Offered", - "type": "textarea", - "help": "Clearly describe the specific adjustment you are offering to resolve the issue (e.g., full refund, partial refund, replacement product, service credit)." - }, - { - "id": "preventive_measures", - "label": "Preventive Measures", - "type": "textarea", - "help": "What measures will be taken to prevent similar issues from happening in the future? (optional)" - } - ] - elif subtype == "credit": - return [ - { - "id": "credit_request_type", - "label": "Credit Request Type", - "type": "select", - "options": ["New Credit Application", "Credit Limit Increase Request", "Credit Terms Adjustment Request", "Response to Credit Inquiry"], - "help": "What type of credit-related request or response is this letter for?" - }, - { - "id": "applicant_name", - "label": "Applicant Name", - "type": "text", - "help": "Name of the individual or company applying for or receiving credit." - }, - { - "id": "credit_decision", - "label": "Credit Decision", - "type": "select", - "options": ["Approved", "Denied", "Conditionally Approved", "Under Review", "Information Required"], - "help": "What is the outcome or status of the credit application/request?" - }, - { - "id": "credit_terms", - "label": "Credit Terms", - "type": "textarea", - "help": "Describe the credit terms being extended or requested (e.g., Net 30, 2% 10 Net 30, interest rate, payment schedule). (Required if Approved/Conditionally Approved)" - }, - { - "id": "credit_limit", - "label": "Credit Limit", - "type": "text", # Using text to allow for "N/A" or specific amounts - "help": "What is the approved credit limit? (Required if Approved/Conditionally Approved)" - }, - { - "id": "requirements", - "label": "Requirements/Conditions", - "type": "textarea", - "help": "List any specific requirements or conditions that must be met for the credit. (Optional)" - }, - { - "id": "reason_for_decision", - "label": "Reason for Decision (if Denied/Conditional/Info Required)", - "type": "textarea", - "help": "Clearly explain the reason for the credit decision or why more information is needed. (Required if not Approved)" - } - ] - elif subtype == "follow_up": - return [ - { - "id": "previous_communication_type", - "label": "Previous Communication Type", - "type": "select", - "options": ["Meeting", "Phone Call", "Email", "Proposal Submission", "Interview", "Networking Event", "Other"], - "help": "What type of previous interaction are you following up on?" - }, - { - "id": "previous_date", - "label": "Date of Previous Contact", - "type": "date", # Using date type for date input - "help": "When was the previous communication or meeting?" - }, - { - "id": "previous_topic", - "label": "Topic of Previous Contact", - "type": "text", - "help": "What was the main subject or topic discussed during the previous interaction?" - }, - { - "id": "follow_up_purpose", - "label": "Purpose of Follow-up", - "type": "textarea", - "help": "Why are you following up now? What is the specific goal of this letter?" - }, - { - "id": "action_items", - "label": "Proposed Next Steps/Action Items", - "type": "textarea", - "help": "What actions or next steps are you proposing or inquiring about as a result of this follow-up? (optional)" - } - ] - - # Default fields if subtype is not recognized or no specific fields are defined. - # This provides a basic textarea for general content. - return [ - { - "id": "main_content", - "label": "Main Content", - "type": "textarea", - "help": "Enter the main content you want to include in your business letter." - } - ] - -def get_tones_for_subtype(subtype: str) -> List[str]: - """Maps a business letter subtype ID to a list of suggested tones.""" - tones = { - "sales": ["Enthusiastic", "Confident", "Friendly", "Professional", "Persuasive"], - "proposal": ["Professional", "Confident", "Collaborative", "Solution-oriented", "Authoritative"], - "order": ["Clear", "Direct", "Professional", "Courteous", "Precise"], - "quotation": ["Professional", "Helpful", "Informative", "Precise", "Courteous"], - "acknowledgment": ["Appreciative", "Professional", "Courteous", "Helpful", "Prompt"], - "collection": ["Firm", "Professional", "Respectful", "Direct", "Urgent"], - "adjustment": ["Empathetic", "Professional", "Solution-oriented", "Apologetic", "Helpful"], - "credit": ["Professional", "Helpful", "Informative", "Trustworthy", "Clear"], - "follow_up": ["Friendly", "Professional", "Persistent", "Helpful", "Courteous"] - } - # Return the list of tones for the subtype, or a default list if not found. - return tones.get(subtype, ["Professional", "Courteous", "Clear", "Helpful", "Friendly"]) - -# Example of how to run the app (for local development using `streamlit run your_script_name.py`) -# Uncomment the lines below to make this script directly executable. -# if __name__ == "__main__": -# write_letter() diff --git a/ToBeMigrated/ai_writers/ai_letter_writer/cover_letters.py b/ToBeMigrated/ai_writers/ai_letter_writer/cover_letters.py deleted file mode 100644 index 1792ed25..00000000 --- a/ToBeMigrated/ai_writers/ai_letter_writer/cover_letters.py +++ /dev/null @@ -1,1135 +0,0 @@ -""" -Cover Letters Module - -This module provides a Streamlit interface for generating various types of cover letters -using AI assistance. It collects user inputs specific to the chosen cover letter subtype, -formats the data, generates a prompt for the AI, calls the AI for content generation, -and displays the formatted letter preview and analysis, including ATS compatibility. -""" - -import streamlit as st -import datetime -import re # Import regex for ATS score calculation -from typing import Dict, Any, List -from collections import Counter # Import Counter for ATS keyword frequency - -# Assuming these modules and functions exist and are correctly imported in a real application. -# Placeholder functions are included below for demonstration purposes if actual imports are not available. -# from ..utils.letter_formatter import format_letter, get_letter_preview_html -# from ..utils.letter_analyzer import analyze_letter_tone, check_formality, get_readability_metrics, suggest_improvements -# from ..utils.letter_templates import get_template_by_type -# from ....gpt_providers.text_generation.main_text_generation import llm_text_gen - -# --- Placeholder Functions (Replace with actual imports in a real app) --- -# These placeholders mimic the expected behavior of the imported functions -# to allow the rest of the code structure to be reviewed and run without dependencies. - -def format_letter(content: str, metadata: Dict[str, Any], letter_type: str = "personal") -> str: - """Placeholder: Returns the content as is.""" - return content - -def get_letter_preview_html(content: str, metadata: Dict[str, Any], letter_type: str = "personal") -> str: - """Placeholder: Generates a basic HTML preview.""" - # Basic HTML structure with inline styles for preview - formatted_paragraphs = "".join(f"

{p.strip()}

" for p in content.split("\n\n") if p.strip()) - return f""" -
-
{metadata.get('date', 'Date')}
-
Subject: Application for {metadata.get('job_title', 'Position')}
-
{metadata.get('salutation', 'Dear Hiring Manager,')}
-
{formatted_paragraphs if formatted_paragraphs else "

Letter content goes here...

"}
-
{metadata.get('complimentary_close', 'Sincerely,')}
-
{metadata.get('sender_name', 'Your Name')}
-
- """ - -def analyze_letter_tone(content: str) -> Dict[str, float]: - """Placeholder: Returns dummy tone analysis.""" - # Returns scores between 0.0 and 1.0 - return {"professional": 0.85, "enthusiastic": 0.7, "confident": 0.8} - -def check_formality(content: str) -> float: - """Placeholder: Returns a dummy formality score (0.0 to 1.0).""" - return 0.90 # Example: 90% formal - -def get_readability_metrics(content: str) -> Dict[str, Any]: - """Placeholder: Returns dummy readability metrics.""" - word_count = len(content.split()) - # Estimate reading time in seconds (assuming ~200 words per minute) - reading_time_seconds = round((word_count / 200) * 60) - return { - "word_count": word_count, - "sentence_count": max(1, content.count('. ') + content.count('! ') + content.count('? ')), # Simple sentence count - "avg_words_per_sentence": round(word_count / max(1, content.count('. ') + content.count('! ') + content.count('? ')), 2), - "flesch_reading_ease": 55.0, # Dummy score - "reading_level": "Fairly Difficult", # Dummy level - "reading_time_seconds": reading_time_seconds # Added reading time - } - -def suggest_improvements(content: str, letter_type: str) -> List[str]: - """Placeholder: Returns dummy improvement suggestions.""" - if len(content) < 150: - return ["Suggestion: Your cover letter seems quite brief. Consider elaborating on your key qualifications."] - elif "generic skill" in content.lower(): - return ["Suggestion: Replace generic skills with specific examples or achievements."] - else: - return ["Suggestion: Ensure your letter clearly matches the job description keywords."] - -def get_template_by_type(letter_type: str, subtype: str = "default") -> Dict[str, Any]: - """Placeholder: Returns a generic template.""" - # This should ideally come from the actual letter_templates module - return {"structure": ["Introduction", "Body Paragraphs", "Closing"], "guidance": "Generic guidance for a cover letter."} - -def llm_text_gen(prompt: str) -> str: - """Placeholder: Simulates LLM text generation.""" - # In a real app, this would call the actual LLM API - st.info(f"LLM Prompt:\n```\n{prompt}\n```") # Display prompt for debugging - # Return a dummy generated letter based on the prompt - return f"Subject: Application for [Generated Job Title] Position\n\nDear [Generated Hiring Manager Name],\n\nThis is a sample cover letter generated based on the following details:\n\n{prompt}\n\n[Generated content based on the prompt would go here, following the requested structure, tone, and focus area.]\n\nSincerely,\n[Generated Your Name]" - -# --- End Placeholder Functions --- - - -def write_letter(): - """ - Main function for the Cover Letters interface. Sets up the Streamlit page - and handles navigation between subtype selection and the letter form. - """ - - # Page title and description - st.title("๐Ÿ“„ Cover Letter Writer") - st.markdown(""" - Create professional cover letters tailored to specific job applications. Select a cover letter type below to get started. - """) - - # Initialize Streamlit session state variables specific to the cover letter module. - # These variables persist across reruns and store the user's progress and data. - if "cover_letter_subtype" not in st.session_state: - st.session_state.cover_letter_subtype = None # Stores the ID of the selected cover letter type - if "cover_letter_generated" not in st.session_state: - st.session_state.cover_letter_generated = False # Flag to indicate if a letter has been generated - if "cover_letter_content" not in st.session_state: - st.session_state.cover_letter_content = None # Stores the generated letter content - if "cover_letter_metadata" not in st.session_state: - st.session_state.cover_letter_metadata = {} # Stores metadata like sender/recipient info - if "cover_letter_form_data" not in st.session_state: - st.session_state.cover_letter_form_data = {} # Stores the user's input from the form fields - - # Back button logic for subtypes. This button appears when a subtype is selected, - # allowing the user to return to the subtype selection screen. - if st.session_state.cover_letter_subtype is not None: - if st.button("โ† Back to Cover Letter Types"): - # Reset session state variables for this module to their initial state - # This clears the current form data and generated letter. - st.session_state.cover_letter_subtype = None - st.session_state.cover_letter_generated = False - st.session_state.cover_letter_content = None - st.session_state.cover_letter_metadata = {} - st.session_state.cover_letter_form_data = {} - st.rerun() # Rerun the app to update the UI based on the changed state - - # Main navigation logic within the cover letter module. - # If no subtype is selected, show the selection grid. Otherwise, show the form for the selected subtype. - if st.session_state.cover_letter_subtype is None: - # Display cover letter type selection if no subtype is selected - display_cover_letter_types() - else: - # Display the interface form for the selected cover letter subtype - display_cover_letter_form(st.session_state.cover_letter_subtype) - - -def display_cover_letter_types(): - """ - Displays the cover letter type selection interface using a grid of styled buttons. - Each button represents a specific type of cover letter the user can choose to write. - """ - - st.markdown("## Select Cover Letter Type") - - # Define cover letter types with their details (ID, Name, Icon, Description, Color) - # This list is used to generate the selection buttons. - cover_letter_types = [ - { - "id": "standard", - "name": "Standard Cover Letter", - "icon": "๐Ÿ“", - "description": "General purpose cover letter for most job applications", - "color": "#1976D2" # Blue - }, - { - "id": "career_change", - "name": "Career Change", - "icon": "๐Ÿ”„", - "description": "Highlight transferable skills when changing careers", - "color": "#388E3C" # Green - }, - { - "id": "entry_level", - "name": "Entry Level", - "icon": "๐ŸŒฑ", - "description": "For recent graduates or those with limited experience", - "color": "#FFA000" # Orange - }, - { - "id": "executive", - "name": "Executive", - "icon": "๐Ÿ‘”", - "description": "For senior management and executive positions", - "color": "#5D4037" # Brown - }, - { - "id": "creative", - "name": "Creative", - "icon": "๐ŸŽจ", - "description": "For creative industries like design, writing, or marketing", - "color": "#7B1FA2" # Purple - }, - { - "id": "technical", - "name": "Technical", - "icon": "๐Ÿ’ป", - "description": "For IT, engineering, and other technical roles", - "color": "#0097A7" # Teal - }, - { - "id": "academic", - "name": "Academic", - "icon": "๐ŸŽ“", - "description": "For positions in education and research", - "color": "#D32F2F" # Red - }, - { - "id": "remote", - "name": "Remote Position", - "icon": "๐Ÿ ", - "description": "Emphasize skills for working remotely", - "color": "#455A64" # Blue Grey - }, - { - "id": "referral", - "name": "Referral", - "icon": "๐Ÿ‘ฅ", - "description": "Mention a referral or connection at the company", - "color": "#FF5722" # Deep Orange - } - ] - - # Inject custom CSS to style the Streamlit buttons to look like cards. - # This provides a visually appealing selection grid. - st.markdown(""" - - """, unsafe_allow_html=True) - - - # Create a grid layout for the buttons using Streamlit columns (3 columns per row). - cols = st.columns(3) - - # Display each letter type as a button. - for i, letter_type_config in enumerate(cover_letter_types): - with cols[i % 3]: # Place buttons in columns, wrapping every 3 - # Use a unique key for each button based on its ID - # The button label uses markdown and HTML for icon, name, and description - if st.button( - f"### {letter_type_config['icon']} {letter_type_config['name']}\n\n

{letter_type_config['description']}

", - key=f"btn_cover_select_{letter_type_config['id']}", # Unique key for each button - unsafe_allow_html=True # Allow markdown and HTML in the button label - ): - # When a button is clicked, update the session state to the selected subtype ID - st.session_state.cover_letter_subtype = letter_type_config['id'] - # Clear previous data related to letter generation when selecting a new type - st.session_state.cover_letter_generated = False - st.session_state.cover_letter_content = None - st.session_state.cover_letter_metadata = {} - st.session_state.cover_letter_form_data = {} # Clear previous form data - st.rerun() # Rerun the app to switch to the form for the selected subtype - - # Apply specific background colors to buttons using their keys and custom CSS - # This requires injecting CSS after the buttons are rendered. - # Note: This is a common Streamlit workaround for styling individual buttons dynamically. - button_styles = "" - for letter_type_config in cover_letter_types: - button_styles += f""" - div.stButton > button[data-testid="stButton"][kind="primary"][sf-key*="btn_cover_select_{letter_type_config['id']}"] {{ - background-color: {letter_type_config['color']}; - }} - div.stButton > button[data-testid="stButton"][kind="primary"][sf-key*="btn_cover_select_{letter_type_config['id']}"]:hover {{ - background-color: {letter_type_config['color']}D9; /* Slightly darker on hover */ - }} - """ - st.markdown(f"", unsafe_allow_html=True) - - -def display_cover_letter_form(subtype: str): - """ - Displays the form for the selected cover letter subtype. This includes - input fields specific to the subtype, personal profile information, - skills and experience fields, customization options, and tabs for - previewing and analyzing the generated letter. - - Args: - subtype: The ID string of the selected cover letter subtype. - """ - - # Get the template for the selected subtype from the templates module. - # This provides structural guidance and general advice for the LLM. - template = get_template_by_type("cover", subtype) - - # Display the form title, icon, description, and guidance. - st.markdown(f"## {get_icon_for_subtype(subtype)} {get_name_for_subtype(subtype)}") - st.markdown(f"*{get_description_for_subtype(subtype)}*") - st.info(f"**Guidance:** {template.get('guidance', 'No specific guidance available.')}") - - # Use a Streamlit form to group inputs. This helps manage state and - # prevents the app from rerunning every time a single input widget changes, - # improving performance for forms with many inputs. - with st.form(key=f"cover_letter_form_{subtype}"): - # Create tabs to organize the form sections. - tab1, tab2, tab3, tab4 = st.tabs(["Job Details", "Your Profile", "Skills & Experience", "Preview & Export"]) - - # Dictionary to store form data collected from all tabs - form_data = {} - - # --- Tab 1: Job Details --- - with tab1: - st.markdown("### Job Information") - - # Input fields for job details, populated from session state. - form_data["job_title"] = st.text_input("Job Title", value=st.session_state.cover_letter_form_data.get("job_title", ""), help="The exact title of the position you're applying for.", key=f"{subtype}_job_title") - form_data["company_name"] = st.text_input("Company Name", value=st.session_state.cover_letter_form_data.get("company_name", ""), help="The full name of the company you're applying to.", key=f"{subtype}_company_name") - form_data["job_posting_url"] = st.text_input("Job Posting URL (Optional)", value=st.session_state.cover_letter_form_data.get("job_posting_url", ""), help="Provide the URL of the job posting if available. This helps tailor the letter.", key=f"{subtype}_job_posting_url") - - # Job description text area. Crucial for ATS analysis and tailoring. - form_data["job_description"] = st.text_area( - "Job Description", - value=st.session_state.cover_letter_form_data.get("job_description", ""), - height=200, - help="Copy and paste the full job description or list the key requirements and responsibilities.", - key=f"{subtype}_job_description" - ) - - # Optional fields for department and hiring manager. - col1, col2 = st.columns(2) - with col1: - form_data["department"] = st.text_input("Department (Optional)", value=st.session_state.cover_letter_form_data.get("department", ""), help="The specific department you are applying to, if known.", key=f"{subtype}_department") - with col2: - form_data["hiring_manager"] = st.text_input("Hiring Manager's Name (Optional)", value=st.session_state.cover_letter_form_data.get("hiring_manager", ""), help="The name of the hiring manager or recruiter if known. Using a name is highly recommended.", key=f"{subtype}_hiring_manager") - - # Application details section. - st.markdown("### Application Details") - application_methods = ["Online Application", "Email", "Company Website", "Job Board", "Referral", "Other"] - default_app_method = st.session_state.cover_letter_form_data.get("application_method", "Online Application") - form_data["application_method"] = st.selectbox( - "How are you applying?", - application_methods, - index=application_methods.index(default_app_method) if default_app_method in application_methods else 0, - help="Select the primary method you will use to submit this cover letter.", - key=f"{subtype}_application_method" - ) - - # Conditional fields for referral method. - if form_data["application_method"] == "Referral": - form_data["referral_name"] = st.text_input( - "Referral's Name", - value=st.session_state.cover_letter_form_data.get("referral_name", ""), - help="The full name of the person who referred you.", - key=f"{subtype}_referral_name" - ) - form_data["referral_relationship"] = st.text_input( - "Relationship to Referral", - value=st.session_state.cover_letter_form_data.get("referral_relationship", ""), - help="Briefly describe your relationship with the referrer (e.g., former colleague, friend, mentor).", - key=f"{subtype}_referral_relationship" - ) - else: - # Ensure referral fields are not in form_data if not selected - form_data["referral_name"] = None - form_data["referral_relationship"] = None - - - # Company research and interest sections. - st.markdown("### Company Research") - form_data["company_research"] = st.text_area( - "Company Research (Optional)", - value=st.session_state.cover_letter_form_data.get("company_research", ""), - height=150, - help="Share specific details you know about the company (e.g., mission, values, recent projects, news). This shows you've done your research.", - placeholder="e.g., I was impressed by your company's recent sustainability initiative and your commitment to innovation in the field of...", - key=f"{subtype}_company_research" - ) - - form_data["why_interested"] = st.text_area( - "Why You're Interested (Optional)", - value=st.session_state.cover_letter_form_data.get("why_interested", ""), - height=150, - help="Explain your genuine interest in this specific role and company. Connect it to your career goals or values.", - placeholder="e.g., I'm particularly drawn to this role because it aligns with my passion for...", - key=f"{subtype}_why_interested" - ) - - # --- Tab 2: Your Profile --- - with tab2: - st.markdown("### Personal Information") - - # Input fields for personal contact information. - col3, col4 = st.columns(2) - with col3: - form_data["full_name"] = st.text_input("Your Full Name", value=st.session_state.cover_letter_form_data.get("full_name", ""), help="Your full name as you want it to appear on the letter.", key=f"{subtype}_full_name") - form_data["email"] = st.text_input("Email Address", value=st.session_state.cover_letter_form_data.get("email", ""), help="Your professional email address.", key=f"{subtype}_email") - form_data["phone"] = st.text_input("Phone Number", value=st.session_state.cover_letter_form_data.get("phone", ""), help="Your primary contact phone number.", key=f"{subtype}_phone") - - with col4: - form_data["location"] = st.text_input("Location", value=st.session_state.cover_letter_form_data.get("location", ""), help="Your current city and state/country.", key=f"{subtype}_location") - form_data["linkedin"] = st.text_input("LinkedIn Profile URL (Optional)", value=st.session_state.cover_letter_form_data.get("linkedin", ""), help="Your LinkedIn profile URL.", key=f"{subtype}_linkedin") - form_data["portfolio"] = st.text_input("Portfolio/Website URL (Optional)", value=st.session_state.cover_letter_form_data.get("portfolio", ""), help="Your online portfolio or personal website URL.", key=f"{subtype}_portfolio") - - # Professional summary section. - st.markdown("### Professional Summary") - form_data["current_title"] = st.text_input("Current or Most Recent Job Title", value=st.session_state.cover_letter_form_data.get("current_title", ""), help="Your current or most recent job title.", key=f"{subtype}_current_title") - form_data["years_experience"] = st.number_input("Years of Relevant Experience", min_value=0, max_value=50, value=st.session_state.cover_letter_form_data.get("years_experience", 0), help="Total years of experience relevant to the target position.", key=f"{subtype}_years_experience") - - form_data["professional_summary"] = st.text_area( - "Professional Summary", - value=st.session_state.cover_letter_form_data.get("professional_summary", ""), - height=150, - help="A brief (2-3 sentence) summary highlighting your key qualifications and career goals. This is often at the top of a resume.", - placeholder="e.g., Results-driven marketing professional with 5+ years of experience in digital marketing strategies...", - key=f"{subtype}_professional_summary" - ) - - # Education section. - st.markdown("### Education") - degrees = ["High School", "Associate's", "Bachelor's", "Master's", "PhD", "Other", "None"] - default_degree = st.session_state.cover_letter_form_data.get("highest_degree", "Bachelor's") - form_data["highest_degree"] = st.selectbox( - "Highest Degree", - degrees, - index=degrees.index(default_degree) if default_degree in degrees else 0, - help="Your highest level of education achieved or in progress.", - key=f"{subtype}_highest_degree" - ) - - # Conditional education fields based on degree selection. - if form_data["highest_degree"] != "None": - form_data["field_of_study"] = st.text_input("Field of Study", value=st.session_state.cover_letter_form_data.get("field_of_study", ""), help="Your major or primary field of study.", key=f"{subtype}_field_of_study") - form_data["institution"] = st.text_input("Institution", value=st.session_state.cover_letter_form_data.get("institution", ""), help="Name of the school, college, or university.", key=f"{subtype}_institution") - # Set a reasonable default for graduation year, e.g., current year or a recent past year. - current_year = datetime.date.today().year - default_grad_year = st.session_state.cover_letter_form_data.get("graduation_year", current_year) - form_data["graduation_year"] = st.number_input("Graduation Year", min_value=1950, max_value=current_year + 5, value=default_grad_year, help="Year you graduated or expect to graduate.", key=f"{subtype}_graduation_year") - else: - form_data["field_of_study"] = None - form_data["institution"] = None - form_data["graduation_year"] = None - - - # --- Tab 3: Skills & Experience --- - with tab3: - st.markdown("### Key Skills") - - # Input fields for skills. - form_data["technical_skills"] = st.text_area( - "Technical Skills", - value=st.session_state.cover_letter_form_data.get("technical_skills", ""), - height=100, - help="List your technical skills relevant to the position, separated by commas or bullet points.", - placeholder="e.g., Python, SQL, Adobe Creative Suite, Financial Modeling, Project Management", - key=f"{subtype}_technical_skills" - ) - - form_data["soft_skills"] = st.text_area( - "Soft Skills", - value=st.session_state.cover_letter_form_data.get("soft_skills", ""), - height=100, - help="List your soft skills relevant to the position, separated by commas or bullet points.", - placeholder="e.g., Leadership, Communication, Problem-solving, Teamwork, Adaptability", - key=f"{subtype}_soft_skills" - ) - - form_data["certifications"] = st.text_area( - "Certifications (Optional)", - value=st.session_state.cover_letter_form_data.get("certifications", ""), - height=100, - help="List any relevant certifications you hold, separated by commas or bullet points.", - placeholder="e.g., PMP, CPA, AWS Certified Solutions Architect", - key=f"{subtype}_certifications" - ) - - # Work experience and achievements section. - st.markdown("### Relevant Experience") - - # Most relevant achievement field. Encourage metrics. - form_data["most_relevant_achievement"] = st.text_area( - "Most Relevant Achievement", - value=st.session_state.cover_letter_form_data.get("most_relevant_achievement", ""), - height=150, - help="Describe your single most impactful achievement that is highly relevant to this position. Use the STAR method (Situation, Task, Action, Result) and include metrics if possible.", - placeholder="e.g., Led a team of 5 to increase website conversion rates by 35% through A/B testing and UX improvements", - key=f"{subtype}_most_relevant_achievement" - ) - - # Additional achievements field. - form_data["additional_achievements"] = st.text_area( - "Additional Achievements (Optional)", - value=st.session_state.cover_letter_form_data.get("additional_achievements", ""), - height=150, - help="List 2-3 other significant achievements relevant to the position, using bullet points.", - placeholder="e.g., Reduced customer churn by 20% through implementation of new retention strategies\nManaged a $500K budget for marketing campaigns that generated $2.5M in revenue", - key=f"{subtype}_additional_achievements" - ) - - # Cover letter customization options. - st.markdown("### Cover Letter Customization") - - # Tone and style selection. - col5, col6 = st.columns(2) - with col5: - tones = get_tones_for_subtype(subtype) - default_tone = st.session_state.cover_letter_form_data.get("tone", tones[0] if tones else "Professional") - form_data["tone"] = st.selectbox( - "Tone", - tones, - index=tones.index(default_tone) if default_tone in tones else 0, - help="Select the desired tone for your cover letter.", - key=f"{subtype}_tone" - ) - - lengths = ["Brief", "Standard", "Detailed"] - default_length = st.session_state.cover_letter_form_data.get("length", "Standard") - form_data["length"] = st.select_slider( - "Length", - options=lengths, - value=default_length, - help="Select the desired length of your cover letter.", - key=f"{subtype}_length" - ) - - with col6: - focus_areas = ["Balanced", "Skills-focused", "Experience-focused", "Culture fit-focused", "Achievement-focused"] - default_focus = st.session_state.cover_letter_form_data.get("focus_area", "Balanced") - form_data["focus_area"] = st.selectbox( - "Focus Area", - focus_areas, - index=focus_areas.index(default_focus) if default_focus in focus_areas else 0, - help="Choose the main area you want the cover letter to emphasize.", - key=f"{subtype}_focus_area" - ) - - # Optional sections like salary expectations, availability, relocation, custom closing. - default_include_salary = st.session_state.cover_letter_form_data.get("include_salary", False) - include_salary = st.checkbox("Include salary expectations", value=default_include_salary, help="Check to include your salary expectations in the letter.", key=f"{subtype}_include_salary") - form_data["salary_expectations"] = None # Initialize to None - if include_salary: - default_salary = st.session_state.cover_letter_form_data.get("salary_expectations", "") - form_data["salary_expectations"] = st.text_input( - "Salary Expectations", - value=default_salary, - help="Your salary expectations (e.g., $70,000-$80,000 annually, Negotiable).", - placeholder="e.g., $70,000-$80,000 annually", - key=f"{subtype}_salary_expectations" - ) - - with st.expander("Additional Customization"): - default_include_availability = st.session_state.cover_letter_form_data.get("include_availability", False) - include_availability = st.checkbox("Include availability information", value=default_include_availability, help="Mention your availability to start or for interviews.", key=f"{subtype}_include_availability") - form_data["availability"] = None # Initialize to None - if include_availability: - default_availability = st.session_state.cover_letter_form_data.get("availability", "") - form_data["availability"] = st.text_input( - "Availability Details", - value=default_availability, - help="When you can start or your availability for interviews.", - placeholder="e.g., Available to start immediately or Available for interviews on weekdays after 3 PM", - key=f"{subtype}_availability" - ) - - default_include_relocation = st.session_state.cover_letter_form_data.get("include_relocation", False) - include_relocation = st.checkbox("Include relocation information", value=default_include_relocation, help="Specify your willingness to relocate or remote work preference.", key=f"{subtype}_include_relocation") - form_data["relocation_info"] = None # Initialize to None - if include_relocation: - default_relocation = st.session_state.cover_letter_form_data.get("relocation_info", "") - form_data["relocation_info"] = st.text_input( - "Relocation Information Details", - value=default_relocation, - help="Your willingness to relocate or remote work preferences.", - placeholder="e.g., Willing to relocate to Seattle area or Currently based in Chicago but open to remote work", - key=f"{subtype}_relocation_info" - ) - - default_include_closing = st.session_state.cover_letter_form_data.get("include_closing", False) - include_closing = st.checkbox("Include custom closing statement", value=default_include_closing, help="Provide a specific sentence or two for the letter's closing.", key=f"{subtype}_include_closing") - form_data["closing_statement"] = None # Initialize to None - if include_closing: - default_closing = st.session_state.cover_letter_form_data.get("closing_statement", "") - form_data["closing_statement"] = st.text_area( - "Custom Closing Statement Text", - value=default_closing, - height=100, - help="Enter your custom closing statement.", - placeholder="e.g., I would welcome the opportunity to discuss how my background and skills would be a good match for the [Job Title] position. Thank you for your consideration.", - key=f"{subtype}_closing_statement" - ) - - - # --- Tab 4: Preview & Export --- - with tab4: - # Instructions for the user before generation. - if not st.session_state.cover_letter_generated: - st.info("Complete the letter details and click 'Generate Cover Letter' to preview your letter.") - - # The Generate button is placed inside the form. Clicking it submits the form - # and triggers the code block below it to run. - generate_button = st.form_submit_button("Generate Cover Letter", type="primary") - - if generate_button: - # Action to perform when the form is submitted via the Generate button. - - # Store the current state of all form inputs in session state. - # This allows retaining user inputs even after generation or regeneration. - st.session_state.cover_letter_form_data = form_data.copy() - - # Prepare metadata specifically for the formatter and analysis functions. - # This includes structured contact info, dates, subject, etc. - metadata = { - "sender_name": form_data.get("full_name", ""), - "sender_email": form_data.get("email", ""), - "sender_phone": form_data.get("phone", ""), - "sender_location": form_data.get("location", ""), - "sender_linkedin": form_data.get("linkedin", ""), - "sender_portfolio": form_data.get("portfolio", ""), - "recipient_name": form_data.get("hiring_manager", "Hiring Manager"), # Default to "Hiring Manager" if name is not provided - "recipient_title": "", # Cover letters typically don't include recipient title here - "recipient_company": form_data.get("company_name", ""), - "recipient_department": form_data.get("department", ""), - "recipient_address": "", # Address is often omitted in modern cover letters unless specified - "date": datetime.datetime.now().strftime("%B %d, %Y"), # Use current date for the letter - "job_title": form_data.get("job_title", "") # Include job title in metadata for subject line - } - # Add salutation and complimentary close to metadata for the formatter - # These could be made configurable in the future - metadata["salutation"] = f"Dear {metadata['recipient_name']}," if metadata["recipient_name"] != "Hiring Manager" else "Dear Hiring Manager," - metadata["complimentary_close"] = "Sincerely," - - st.session_state.cover_letter_metadata = metadata.copy() - - - # --- Letter Generation Logic --- - # Check for minimal required fields before attempting generation. - if not form_data.get("job_title") or not form_data.get("company_name") or not form_data.get("full_name"): - st.error("Please provide at least the job title, company name, and your full name.") - else: - # Display a spinner while the AI generates the letter. - with st.spinner("Generating your cover letter..."): - # Call the letter generation function with the collected form data. - cover_letter_content = generate_cover_letter(subtype, form_data) - - # Store the generated letter content and update the generated flag. - st.session_state.cover_letter_content = cover_letter_content - st.session_state.cover_letter_generated = True - - # Rerun the app to exit the form block and display the generated letter section. - # This rerun happens automatically on form submission, but explicit state updates - # ensure the display logic reacts correctly. - # st.rerun() # Rerun is handled by form submission - - # --- Display Generated Letter and Analysis --- - # This block executes if a letter has been generated and stored in session state. - if st.session_state.cover_letter_generated and st.session_state.cover_letter_content is not None: - cover_letter_content = st.session_state.cover_letter_content - metadata = st.session_state.cover_letter_metadata - job_description = st.session_state.cover_letter_form_data.get("job_description", "") # Get job description for ATS analysis - - # Create tabs for different views of the generated letter. - preview_tab1, preview_tab2, preview_tab3 = st.tabs(["Formatted Preview", "Plain Text", "Analysis"]) - - with preview_tab1: - st.markdown("### Cover Letter Preview") - # Generate and display the HTML preview of the letter using the formatter utility. - # Pass letter_type="cover" to the formatter. - html_preview = get_letter_preview_html(cover_letter_content, metadata, letter_type="cover") - st.markdown(html_preview, unsafe_allow_html=True) - - # Download button for the plain text version of the letter. - # Use job title in the filename for better organization. - file_name_job_title = metadata.get('job_title', 'cover_letter').replace(' ', '_').lower() - st.download_button( - label="Download as Text", - data=cover_letter_content, - file_name=f"{file_name_job_title}_{datetime.datetime.now().strftime('%Y%m%d')}.txt", - mime="text/plain" - ) - - with preview_tab2: - st.markdown("### Plain Text Content") - # Display the raw generated letter content in a text area. - st.text_area("Cover Letter Content", cover_letter_content, height=400, key=f"{subtype}_plain_text_display") - - # Button to copy the plain text content to the clipboard. - st.button("Copy Plain Text (Manual Copy from above)", help="Select and copy the text from the box above.", key=f"{subtype}_copy_plain_text_instruction") - - - with preview_tab3: - st.markdown("### Cover Letter Analysis") - # Perform and display analysis of the generated letter using utility functions. - - # Analyze tone, formality, and readability. - tone_analysis = analyze_letter_tone(cover_letter_content) - formality_score = check_formality(cover_letter_content) # Returns score between 0.0 and 1.0 - readability_metrics = get_readability_metrics(cover_letter_content) - # Get improvement suggestions, passing the letter type for context. - improvement_suggestions = suggest_improvements(cover_letter_content, "cover") # Pass "cover" as letter_type - - # Display analysis results in two columns. - col7, col8 = st.columns(2) - - with col7: - st.markdown("#### Tone Analysis") - # Display each tone score. - if tone_analysis: - for tone, score in tone_analysis.items(): - st.write(f"- **{tone.capitalize()}:** {score:.2f}") - else: - st.info("Tone analysis not available.") - - - st.markdown("#### Formality") - # Display formality score as a percentage and a progress bar. - st.progress(formality_score) # Progress bar expects a value between 0.0 and 1.0 - st.write(f"Formality Score: {formality_score * 100:.0f}/100") # Display as a percentage (0-100) - - - with col8: - st.markdown("#### Readability Metrics") - # Display various readability metrics. - if readability_metrics: - st.write(f"**Word Count:** {readability_metrics.get('word_count', 'N/A')} words") - st.write(f"**Sentence Count:** {readability_metrics.get('sentence_count', 'N/A')} sentences") - st.write(f"**Avg Words per Sentence:** {readability_metrics.get('avg_words_per_sentence', 'N/A')}") - st.write(f"**Flesch Reading Ease:** {readability_metrics.get('flesch_reading_ease', 'N/A')}") - st.write(f"**Reading Level:** {readability_metrics.get('reading_level', 'N/A')}") - # Display estimated reading time. - st.write(f"**Estimated Reading Time:** {readability_metrics.get('reading_time_seconds', 'N/A')} seconds") - else: - st.info("Readability metrics not available.") - - # ATS compatibility analysis section. - st.markdown("#### ATS Compatibility") - - # Calculate ATS score based on keyword matching with the job description. - ats_score = calculate_ats_score(cover_letter_content, job_description) - - st.progress(ats_score / 100.0) # Progress bar expects 0.0 to 1.0 - st.write(f"ATS Compatibility Score: {ats_score}/100") - - # Provide feedback based on the ATS score. - if ats_score < 60: - st.warning("Your cover letter may not be well-optimized for Applicant Tracking Systems (ATS). Consider incorporating more keywords and phrases directly from the job description.") - elif ats_score < 80: - st.info("Your cover letter has a good ATS compatibility score. Review the job description and consider adding a few more relevant keywords if possible.") - else: - st.success("Your cover letter appears to be well-optimized for Applicant Tracking Systems (ATS).") - - st.markdown("#### Suggestions for Improvement") - # Display improvement suggestions. - if improvement_suggestions: - # Iterate through the list and display each suggestion as a list item. - for suggestion in improvement_suggestions: - st.markdown(f"- {suggestion}") - else: - st.info("No specific suggestions for improvement found.") - - # Button to regenerate the letter. Placed outside the form so it's always visible - # after generation, without needing to resubmit the form first. - # Keep the form data in session state so the user's inputs are retained. - if st.button("Regenerate Cover Letter", key=f"{subtype}_regenerate_button"): - # Reset the generated state and content to allow the form to be displayed again. - st.session_state.cover_letter_generated = False - st.session_state.cover_letter_content = None # Clear generated content - # st.session_state.cover_letter_form_data is already populated from the form submit - st.rerun() # Rerun to show the form with previous inputs - - -def generate_cover_letter(subtype: str, data: Dict[str, Any]) -> str: - """ - Generates a cover letter using the LLM by constructing a detailed prompt - based on the collected user inputs and metadata. - - Args: - subtype: The ID string of the cover letter subtype. - data: A dictionary containing all collected user inputs and metadata - (from the form and session state). - - Returns: - The generated letter content as a string, or an error message if generation fails. - """ - - # Extract key generation parameters from the data dictionary. - tone = data.get("tone", "Professional") - length = data.get("length", "Standard") - focus_area = data.get("focus_area", "Balanced") - - # Get template guidance and structure to include in the prompt. - template = get_template_by_type("cover", subtype) - template_guidance = template.get("guidance", "Follow standard cover letter practices.") - template_structure = template.get("structure", ["Introduction", "Body Paragraphs", "Closing"]) - - # Build the prompt string step-by-step, including all relevant details - # from the user's input and selected options. - prompt_parts = [ - f"Write a {length.lower()} cover letter for a {get_name_for_subtype(subtype)} position with a {tone.lower()} tone.", - f"The letter should primarily focus on {focus_area.lower()} aspects.", - f"Applicant Name: {data.get('full_name', '')}", - f"Target Job Title: {data.get('job_title', '')}", - f"Target Company: {data.get('company_name', '')}", - f"Hiring Manager (if known): {data.get('hiring_manager', 'Not specified')}", - f"Application Method: {data.get('application_method', 'Not specified')}", - ] - - # Add job description if provided, as it's crucial for tailoring. - if data.get('job_description'): - prompt_parts.append(f"\nJob Description/Key Requirements:\n{data['job_description']}") - - # Add applicant's professional profile details. - prompt_parts.append("\nApplicant Profile:") - prompt_parts.append(f"- Current/Most Recent Title: {data.get('current_title', 'Not specified')}") - prompt_parts.append(f"- Years of Relevant Experience: {data.get('years_experience', 'Not specified')}") - if data.get('professional_summary'): - prompt_parts.append(f"- Professional Summary: {data['professional_summary']}") - - # Add education details if applicable. - if data.get('highest_degree') and data['highest_degree'] != "None": - education_details = f"{data['highest_degree']}" - if data.get('field_of_study'): - education_details += f" in {data['field_of_study']}" - if data.get('institution'): - education_details += f" from {data['institution']}" - if data.get('graduation_year'): - education_details += f" ({data['graduation_year']})" - prompt_parts.append(f"- Education: {education_details}") - else: - prompt_parts.append("- Education: Not specified") - - - # Add skills and experience details. - prompt_parts.append("\nSkills and Experience:") - if data.get('technical_skills'): - prompt_parts.append(f"- Technical Skills: {data['technical_skills']}") - if data.get('soft_skills'): - prompt_parts.append(f"- Soft Skills: {data['soft_skills']}") - if data.get('certifications'): - prompt_parts.append(f"- Certifications: {data['certifications']}") - if data.get('most_relevant_achievement'): - prompt_parts.append(f"- Most Relevant Achievement: {data['most_relevant_achievement']}") - if data.get('additional_achievements'): - prompt_parts.append(f"- Additional Achievements:\n{data['additional_achievements']}") - - # Add company research and interest if provided. - if data.get('company_research'): - prompt_parts.append(f"\nCompany Research/Understanding:\n{data['company_research']}") - if data.get('why_interested'): - prompt_parts.append(f"\nReason for Interest in Role/Company:\n{data['why_interested']}") - - # Add conditional information based on application method or additional options. - if data.get('application_method') == "Referral" and data.get('referral_name'): - prompt_parts.append(f"\nReferral: Referred by {data['referral_name']}{' (' + data['referral_relationship'] + ')' if data.get('referral_relationship') else ''}") - - if data.get('include_salary') and data.get('salary_expectations'): - prompt_parts.append(f"\nSalary Expectations: {data['salary_expectations']}") - - if data.get('include_availability') and data.get('availability'): - prompt_parts.append(f"\nAvailability: {data['availability']}") - - if data.get('include_relocation') and data.get('relocation_info'): - prompt_parts.append(f"\nRelocation Information: {data['relocation_info']}") - - if data.get('include_closing') and data.get('closing_statement'): - prompt_parts.append(f"\nCustom Closing Statement: {data['closing_statement']}") - - - # Add specific instructions based on cover letter subtype. - # These instructions guide the LLM on the specific focus for this type of letter. - if subtype == "standard": - prompt_parts.append("\nInstruction: This is a standard cover letter. Focus on clearly matching the applicant's qualifications to the job requirements in a professional manner.") - elif subtype == "career_change": - prompt_parts.append("\nInstruction: This is a career change cover letter. Emphasize transferable skills from previous roles and explain the motivation for this career transition. Clearly connect past experience and new skills to the requirements of the target role.") - elif subtype == "entry_level": - prompt_parts.append("\nInstruction: This is an entry-level cover letter. Focus on relevant education, coursework, projects, internships, and transferable skills. Emphasize enthusiasm, eagerness to learn, and potential for growth.") - elif subtype == "executive": - prompt_parts.append("\nInstruction: This is an executive-level cover letter. Emphasize strategic leadership experience, significant achievements with measurable results, and industry expertise. Use a confident, authoritative, and forward-looking tone.") - elif subtype == "creative": - prompt_parts.append("\nInstruction: This is a cover letter for a creative position. Use a more engaging and expressive style appropriate for a creative role while maintaining professionalism. Highlight specific creative achievements and link to the applicant's portfolio.") - elif subtype == "technical": - prompt_parts.append("\nInstruction: This is a cover letter for a technical position. Focus on specific technical skills, relevant projects, and problem-solving abilities. Use appropriate technical terminology accurately.") - elif subtype == "academic": - prompt_parts.append("\nInstruction: This is a cover letter for an academic position. Focus on research experience, teaching philosophy, publications, and contributions to the field. Use a scholarly and professional tone suitable for academia.") - elif subtype == "remote": - prompt_parts.append("\nInstruction: This is a cover letter for a remote position. Emphasize self-motivation, excellent communication skills (especially written), time management, and any prior experience working independently or in remote teams. Address how the applicant succeeds in a remote environment.") - elif subtype == "referral": - prompt_parts.append("\nInstruction: This is a referral cover letter. Mention the referral prominently and early in the letter. Explain the connection and how it aligns with the applicant's interest in the role. Still, ensure you highlight the applicant's own qualifications.") - - - # Add the template structure and overall guidance to the prompt. - # This helps the LLM understand the desired layout and writing style. - prompt_parts.append("\nFollow this general structure:") - for i, section in enumerate(template_structure): - prompt_parts.append(f"{i+1}. {section}") - prompt_parts.append(f"\nOverall Writing Guidance: {template_guidance}") - - # Add final instructions for the LLM. - prompt_parts.append("\nMake the letter professional, concise, and tailored to the specific job and company. Avoid generic language and clichรฉs. Focus on what the applicant can offer the employer.") - - - # Combine all prompt parts into a single string. - final_prompt = "\n".join(prompt_parts) - - # Call the LLM text generation function with the constructed prompt. - try: - cover_letter_content = llm_text_gen(final_prompt) - return cover_letter_content - except Exception as e: - # Catch any errors during LLM generation and display an error message. - st.error(f"Error generating cover letter: {str(e)}") - return "Error generating cover letter. Please try again." - -def calculate_ats_score(cover_letter: str, job_description: str) -> int: - """ - Calculate a basic ATS compatibility score based on keyword matching - between the cover letter and the job description. - - Args: - cover_letter: The content of the cover letter. - job_description: The content of the job description. - - Returns: - An estimated ATS compatibility score between 0 and 100. - """ - if not job_description or not cover_letter: - # Return a neutral score if either is empty - return 50 - - # Convert to lowercase for case-insensitive matching - cover_letter_lower = cover_letter.lower() - job_description_lower = job_description.lower() - - # Define common words and punctuation to remove - common_words = {"and", "the", "a", "an", "in", "on", "at", "to", "for", "with", "by", "of", "or", "is", "are", "be", "will", "have", "has", "had", "as", "you", "we", "they", "it", "this", "that", "these", "those", "our", "your", "their", "its", "his", "her", "him", "she", "he", "them", "us", "me", "my", "mine", "yours", "theirs", "ours", "from", "about", "which", "what", "where", "when", "how", "who", "whom", "whose", "can", "could", "would", "should", "may", "might", "must", "get", "go", "do", "does", "did", "am", "is", "are", "was", "were", "been", "being", "have", "has", "had", "do", "did", "done", "say", "says", "said", "see", "sees", "saw", "seen", "make", "makes", "made", "go", "goes", "went", "gone", "come", "comes", "came", "come", "take", "takes", "took", "taken", "give", "gives", "gave", "given", "find", "finds", "found", "get", "gets", "got", "gotten", "know", "knows", "knew", "known", "think", "thinks", "thought", "take", "takes", "took", "taken", "want", "wants", "wanted", "look", "looks", "looked", "tell", "tells", "told", "use", "uses", "used", "find", "finds", "found", "ask", "asks", "asked", "work", "works", "worked", "seem", "seems", "seemed", "feel", "feels", "felt", "become", "becomes", "became", "become", "leave", "leaves", "left", "put", "puts", "put", "bring", "brings", "brought", "begin", "begins", "began", "begun", "show", "shows", "showed", "shown", "hear", "hears", "heard", "play", "plays", "played", "run", "runs", "ran", "run", "move", "moves", "moved", "like", "likes", "liked", "believe", "believes", "believed", "hold", "holds", "held", "happen", "happens", "happened", "write", "writes", "wrote", "written", "provide", "provides", "provided", "sit", "sits", "sat", "stand", "stands", "stood", "lose", "loses", "lost", "pay", "pays", "paid", "meet", "meets", "met", "include", "includes", "included", "continue", "continues", "continued", "set", "sets", "set", "learn", "learns", "learned", "change", "changes", "changed", "lead", "leads", "led", "understand", "understands", "understood", "watch", "watches", "watched", "follow", "follows", "followed", "stop", "stops", "stopped", "create", "creates", "created", "speak", "speaks", "spoke", "spoken", "read", "reads", "read", "allow", "allows", "allowed", "add", "adds", "added", "spend", "spends", "spent", "grow", "grows", "grew", "grown", "open", "opens", "opened", "walk", "walks", "walked", "win", "wins", "won", "offer", "offers", "offered", "remember", "remembers", "remembered", "love", "loves", "loved", "consider", "considers", "considered", "appear", "appears", "appeared", "buy", "buys", "bought", "wait", "waits", "waited", "serve", "serves", "served", "die", "dies", "died", "send", "sends", "sent", "build", "builds", "built", "stay", "stays", "stayed", "fall", "falls", "fell", "fallen", "cut", "cuts", "cut", "reach", "reaches", "reached", "kill", "kills", "killed", "remain", "remains", "remained"} # Expanded list - - # Extract words from job description, filter out short and common words - job_words = re.findall(r'\b[a-zA-Z]{3,}\b', job_description_lower) - job_words = [word for word in job_words if word not in common_words] - - # Count frequency of each word in job description - word_freq = Counter(job_words) - - # Get the most common words as potential keywords (top N, excluding very common words) - # Adjust N (e.g., 30) based on typical job description length - potential_keywords = [word for word, count in word_freq.most_common(40) if count > 1] # Increased N - - if not potential_keywords: - # If no meaningful keywords extracted, return a neutral score - return 50 - - # Check how many potential keywords are present in the cover letter - matches = 0 - for keyword in potential_keywords: - # Use regex to match whole words to avoid partial matches - if re.search(r'\b' + re.escape(keyword) + r'\b', cover_letter_lower): - matches += 1 - - # Calculate initial score based on percentage of keywords matched - score = (matches / len(potential_keywords)) * 100 - - # Adjust score based on other factors relevant to ATS: - - # Length factor (ATS prefers concise but not too short) - word_count = len(cover_letter.split()) - if word_count < 150: # Too short - score -= 15 - elif word_count > 500: # Potentially too long - score -= 10 - # Add a bonus for being within a good range (e.g., 200-400 words) - elif 200 <= word_count <= 400: - score += 5 - - - # Contact information factor (essential for ATS) - # Check for presence of key contact info indicators - contact_indicators = ["phone", "email", "linkedin"] - contact_score_bonus = 0 - for indicator in contact_indicators: - if indicator in cover_letter_lower or any(indicator in val.lower() for key, val in metadata.items() if isinstance(val, str)): # Check metadata too - contact_score_bonus += 5 - score += min(contact_score_bonus, 15) # Cap the contact bonus - - - # Formatting factor (simple check for standard elements) - # Check for salutation and closing - if re.search(r'\bdear\b', cover_letter_lower[:100]) and re.search(r'\b(sincerely|regards)\b', cover_letter_lower[-100:]): - score += 5 - - # Check for subject line presence (important for email applications) - if "subject:" in cover_letter_lower[:50]: - score += 3 - - - # Cap the score between 0 and 100 - score = max(0, min(score, 100)) - - return round(score) - - -def get_icon_for_subtype(subtype: str) -> str: - """Maps a cover letter subtype ID to a relevant emoji icon.""" - icons = { - "standard": "๐Ÿ“", - "career_change": "๐Ÿ”„", - "entry_level": "๐ŸŒฑ", - "executive": "๐Ÿ‘”", - "creative": "๐ŸŽจ", - "technical": "๐Ÿ’ป", - "academic": "๐ŸŽ“", - "remote": "๐Ÿ ", - "referral": "๐Ÿ‘ฅ" - } - return icons.get(subtype, "๐Ÿ“„") # Default icon - -def get_name_for_subtype(subtype: str) -> str: - """Maps a cover letter subtype ID to its display name.""" - names = { - "standard": "Standard Cover Letter", - "career_change": "Career Change Cover Letter", - "entry_level": "Entry Level Cover Letter", - "executive": "Executive Cover Letter", - "creative": "Creative Cover Letter", - "technical": "Technical Cover Letter", - "academic": "Academic Cover Letter", - "remote": "Remote Position Cover Letter", - "referral": "Referral Cover Letter" - } - return names.get(subtype, "Cover Letter") # Default name - -def get_description_for_subtype(subtype: str) -> str: - """Maps a cover letter subtype ID to a brief description.""" - descriptions = { - "standard": "A general purpose cover letter suitable for most job applications.", - "career_change": "Highlight transferable skills and explain your career transition.", - "entry_level": "Emphasize education, internships, and potential for recent graduates or those with limited experience.", - "executive": "Showcase leadership experience and strategic vision for senior management positions.", - "creative": "Express your creative abilities while maintaining professionalism for design, writing, or marketing roles.", - "technical": "Demonstrate technical expertise and problem-solving abilities for IT, engineering, and other technical roles.", - "academic": "Highlight research experience, teaching philosophy, and scholarly contributions for positions in education and research.", - "remote": "Emphasize self-motivation, communication skills, and ability to work independently for remote positions.", - "referral": "Leverage your connection at the company and explain how it relates to your interest in the position." - } - return descriptions.get(subtype, "Create a tailored cover letter for your job application.") # Default description - -def get_fields_for_subtype(subtype: str) -> List[Dict[str, Any]]: - """ - Provides a list of input field configurations specific to each cover letter subtype. - Each dictionary in the list defines a form input field, including its ID, label, - type, and optional properties like help text, options (for select/slider), - min/max values (for slider/number), and a default value. - """ - - # Define subtype-specific fields. - # Note: Many fields are common across subtypes but their *emphasis* in the prompt changes. - # This function defines the *inputs* available on the form. - common_fields = [] # No fields are strictly *only* common, all can be emphasized differently - - if subtype == "standard": - return common_fields # Standard uses the general fields available in the form structure - - elif subtype == "career_change": - # No specific *extra* fields needed, but the prompt emphasizes transferable skills and transition explanation. - return common_fields - - elif subtype == "entry_level": - # No specific *extra* fields needed, but the prompt emphasizes education, projects, and potential. - return common_fields - - elif subtype == "executive": - # No specific *extra* fields needed, but the prompt emphasizes leadership and strategic achievements. - return common_fields - - elif subtype == "creative": - # No specific *extra* fields needed, but the prompt emphasizes portfolio and creative process. - return common_fields - - elif subtype == "technical": - # No specific *extra* fields needed, but the prompt emphasizes technical skills and projects. - return common_fields - - elif subtype == "academic": - # No specific *extra* fields needed, but the prompt emphasizes research, teaching, and publications. - return common_fields - - elif subtype == "remote": - # No specific *extra* fields needed, but the prompt emphasizes remote work skills. - return common_fields - - elif subtype == "referral": - # No specific *extra* fields needed, but the prompt emphasizes the referral. - return common_fields - - # Default fields if subtype is not recognized or no specific fields are defined. - # In this cover letter module, the main form structure already defines the core fields, - # so this fallback is less critical but included for robustness. - return [] # Returning an empty list means no extra fields are added dynamically - - -def get_tones_for_subtype(subtype: str) -> List[str]: - """Maps a cover letter subtype ID to a list of suggested tones.""" - tones = { - "standard": ["Professional", "Confident", "Enthusiastic", "Formal"], - "career_change": ["Professional", "Confident", "Determined", "Enthusiastic"], - "entry_level": ["Enthusiastic", "Eager", "Professional", "Confident"], - "executive": ["Confident", "Authoritative", "Strategic", "Professional"], - "creative": ["Enthusiastic", "Expressive", "Professional", "Passionate"], - "technical": ["Professional", "Analytical", "Precise", "Confident"], - "academic": ["Scholarly", "Professional", "Analytical", "Clear"], - "remote": ["Professional", "Self-motivated", "Communicative", "Reliable"], - "referral": ["Professional", "Enthusiastic", "Connected", "Confident"] - } - # Return the list of tones for the subtype, or a default list if not found. - return tones.get(subtype, ["Professional", "Confident", "Enthusiastic"]) - -# Example of how to run the app (for local development using `streamlit run your_script_name.py`) -# Uncomment the lines below to make this script directly executable. -# if __name__ == "__main__": -# write_letter() diff --git a/ToBeMigrated/ai_writers/ai_letter_writer/formal_letters.py b/ToBeMigrated/ai_writers/ai_letter_writer/formal_letters.py deleted file mode 100644 index 07df6101..00000000 --- a/ToBeMigrated/ai_writers/ai_letter_writer/formal_letters.py +++ /dev/null @@ -1,1184 +0,0 @@ -""" -Formal Letters Module - -This module provides a Streamlit interface for generating various types of formal letters -using AI assistance. It collects user inputs specific to the chosen formal letter subtype, -formats the data, generates a prompt for the AI, calls the AI for content generation, -and displays the formatted letter preview and analysis. -""" - -import streamlit as st -import datetime -from typing import Dict, Any, List - -# Assuming these modules and functions exist and are correctly imported in a real application. -# Placeholder functions are included below for demonstration purposes if actual imports are not available. -# from ..utils.letter_formatter import format_letter, get_letter_preview_html -# from ..utils.letter_analyzer import analyze_letter_tone, check_formality, get_readability_metrics, suggest_improvements -# from ..utils.letter_templates import get_template_by_type -# from ....gpt_providers.text_generation.main_text_generation import llm_text_gen - -# --- Placeholder Functions (Replace with actual imports in a real app) --- -# These placeholders mimic the expected behavior of the imported functions -# to allow the rest of the code structure to be reviewed and run without dependencies. - -def format_letter(content: str, metadata: Dict[str, Any], letter_type: str = "personal") -> str: - """Placeholder: Returns the content as is.""" - return content - -def get_letter_preview_html(content: str, metadata: Dict[str, Any], letter_type: str = "personal") -> str: - """Placeholder: Generates a basic HTML preview for formal letters.""" - # Basic HTML structure with inline styles for preview - formatted_paragraphs = "".join(f"

{p.strip()}

" for p in content.split("\n\n") if p.strip()) - return f""" -
-
{metadata.get('date', 'Date')}
-
Subject: {metadata.get('subject', 'No Subject')}
-
{metadata.get('salutation', 'Dear Recipient,')}
-
{formatted_paragraphs if formatted_paragraphs else "

Letter content goes here...

"}
-
{metadata.get('complimentary_close', 'Sincerely,')}
-
{metadata.get('sender_name', 'Sender Name')}
-
{metadata.get('sender_title', 'Sender Title')}
-
- """ - -def analyze_letter_tone(content: str) -> Dict[str, float]: - """Placeholder: Returns dummy tone analysis.""" - # Returns scores between 0.0 and 1.0 - return {"professional": 0.9, "formal": 0.85, "objective": 0.7} - -def check_formality(content: str) -> float: - """Placeholder: Returns a dummy formality score (0.0 to 1.0).""" - return 0.88 # Example: 88% formal - -def get_readability_metrics(content: str) -> Dict[str, Any]: - """Placeholder: Returns dummy readability metrics.""" - word_count = len(content.split()) - # Estimate reading time in seconds (assuming ~200 words per minute) - reading_time_seconds = round((word_count / 200) * 60) - return { - "word_count": word_count, - "sentence_count": max(1, content.count('. ') + content.count('! ') + content.count('? ')), # Simple sentence count - "avg_words_per_sentence": round(word_count / max(1, content.count('. ') + content.count('! ') + content.count('? ')), 2), - "flesch_reading_ease": 45.0, # Dummy score for formal letters - "reading_level": "Difficult", # Dummy level - "reading_time_seconds": reading_time_seconds # Added reading time - } - -def suggest_improvements(content: str, letter_type: str) -> List[str]: - """Placeholder: Returns dummy improvement suggestions.""" - if "passive voice" in content.lower(): - return ["Suggestion: Consider using more active voice for clarity and impact."] - elif len(content.split('.')) < 5: - return ["Suggestion: The letter seems very short. Ensure all necessary details are included."] - else: - return ["Suggestion: Double-check for any jargon that the recipient might not understand."] - -def get_template_by_type(letter_type: str, subtype: str = "default") -> Dict[str, Any]: - """Placeholder: Returns a generic template.""" - # This should ideally come from the actual letter_templates module - return {"structure": ["Sender Info", "Date", "Recipient Info", "Subject", "Salutation", "Body", "Closing", "Signature"], "guidance": "Follow standard formal letter practices."} - -def llm_text_gen(prompt: str) -> str: - """Placeholder: Simulates LLM text generation.""" - # In a real app, this would call the actual LLM API - st.info(f"LLM Prompt:\n```\n{prompt}\n```") # Display prompt for debugging - # Return a dummy generated letter based on the prompt - return f"Subject: Generated Formal Letter Preview\n\nDear [Generated Recipient Name],\n\nThis is a sample formal letter generated based on the following details:\n\n{prompt}\n\n[Generated content based on the prompt would go here, following the requested structure, formality, tone, and language complexity.]\n\nSincerely,\n[Generated Your Name]" - -# --- End Placeholder Functions --- - - -def write_letter(): - """ - Main function for the Formal Letters interface. Sets up the Streamlit page - and handles navigation between subtype selection and the letter form. - """ - - # Page title and description - st.title("๐Ÿ“ Formal Letter Writer") - st.markdown(""" - Create professional formal letters for business, academic, and official purposes. Select a letter type below to get started. - """) - - # Initialize Streamlit session state variables specific to the formal module. - # These variables persist across reruns and store the user's progress and data. - if "formal_letter_subtype" not in st.session_state: - st.session_state.formal_letter_subtype = None # Stores the ID of the selected formal letter type - if "formal_letter_generated" not in st.session_state: - st.session_state.formal_letter_generated = False # Flag to indicate if a letter has been generated - if "formal_letter_content" not in st.session_state: - st.session_state.formal_letter_content = None # Stores the generated letter content - if "formal_letter_metadata" not in st.session_state: - st.session_state.formal_letter_metadata = {} # Stores metadata like sender/recipient info - if "formal_letter_form_data" not in st.session_state: - st.session_state.formal_letter_form_data = {} # Stores the user's input from the form fields - - # Back button logic for subtypes. This button appears when a subtype is selected, - # allowing the user to return to the subtype selection screen. - if st.session_state.formal_letter_subtype is not None: - if st.button("โ† Back to Formal Letter Types"): - # Reset session state variables for this module to their initial state - # This clears the current form data and generated letter. - st.session_state.formal_letter_subtype = None - st.session_state.formal_letter_generated = False - st.session_state.formal_letter_content = None - st.session_state.formal_letter_metadata = {} - st.session_state.formal_letter_form_data = {} - st.rerun() # Rerun the app to update the UI based on the changed state - - # Main navigation logic within the formal module. - # If no subtype is selected, show the selection grid. Otherwise, show the form for the selected subtype. - if st.session_state.formal_letter_subtype is None: - # Display formal letter type selection if no subtype is selected - display_formal_letter_types() - else: - # Display the interface form for the selected formal letter subtype - display_formal_letter_form(st.session_state.formal_letter_subtype) - - -def display_formal_letter_types(): - """ - Displays the formal letter type selection interface using a grid of styled buttons. - Each button represents a specific type of formal letter the user can choose to write. - """ - - st.markdown("## Select Formal Letter Type") - - # Define formal letter types with their details (ID, Name, Icon, Description, Color) - # This list is used to generate the selection buttons. - formal_letter_types = [ - { - "id": "application", - "name": "Application Letter", - "icon": "๐Ÿ“‹", - "description": "Apply for a job, program, or opportunity", - "color": "#1976D2" # Blue - }, - { - "id": "complaint", - "name": "Complaint Letter", - "icon": "โš ๏ธ", - "description": "Express dissatisfaction with a product or service", - "color": "#D32F2F" # Red - }, - { - "id": "request", - "name": "Request Letter", - "icon": "๐Ÿ™‹", - "description": "Make a formal request for information or action", - "color": "#388E3C" # Green - }, - { - "id": "recommendation", - "name": "Recommendation Letter", - "icon": "๐Ÿ‘", - "description": "Recommend someone for a position or opportunity", - "color": "#7B1FA2" # Purple - }, - { - "id": "resignation", - "name": "Resignation Letter", - "icon": "๐Ÿšช", - "description": "Formally resign from a position", - "color": "#455A64" # Blue Grey - }, - { - "id": "inquiry", - "name": "Inquiry Letter", - "icon": "โ“", - "description": "Request information about a product, service, or opportunity", - "color": "#0097A7" # Teal - }, - { - "id": "authorization", - "name": "Authorization Letter", - "icon": "โœ…", - "description": "Grant permission for someone to act on your behalf", - "color": "#FF5722" # Deep Orange - }, - { - "id": "appeal", - "name": "Appeal Letter", - "icon": "๐Ÿ”„", - "description": "Appeal a decision or request reconsideration", - "color": "#FFA000" # Amber - }, - { - "id": "introduction", - "name": "Introduction Letter", - "icon": "๐Ÿค", - "description": "Introduce yourself or your organization", - "color": "#5D4037" # Brown - } - ] - - # Inject custom CSS to style the Streamlit buttons to look like cards. - # This provides a visually appealing selection grid. - st.markdown(""" - - """, unsafe_allow_html=True) - - - # Create a grid layout for the buttons using Streamlit columns (3 columns per row). - cols = st.columns(3) - - # Display each letter type as a button. - for i, letter_type_config in enumerate(formal_letter_types): - with cols[i % 3]: # Place buttons in columns, wrapping every 3 - # Use a unique key for each button based on its ID - # The button label uses markdown and HTML for icon, name, and description - if st.button( - f"### {letter_type_config['icon']} {letter_type_config['name']}\n\n

{letter_type_config['description']}

", - key=f"btn_formal_select_{letter_type_config['id']}", # Unique key for each button - unsafe_allow_html=True # Allow markdown and HTML in the button label - ): - # When a button is clicked, update the session state to the selected subtype ID - st.session_state.formal_letter_subtype = letter_type_config['id'] - # Clear previous data related to letter generation when selecting a new type - st.session_state.formal_letter_generated = False - st.session_state.formal_letter_content = None - st.session_state.formal_letter_metadata = {} - st.session_state.formal_letter_form_data = {} # Clear previous form data - st.rerun() # Rerun the app to switch to the form for the selected subtype - - # Apply specific background colors to buttons using their keys and custom CSS - # This requires injecting CSS after the buttons are rendered. - # Note: This is a common Streamlit workaround for styling individual buttons dynamically. - button_styles = "" - for letter_type_config in formal_letter_types: - button_styles += f""" - div.stButton > button[data-testid="stButton"][kind="primary"][sf-key*="btn_formal_select_{letter_type_config['id']}"] {{ - background-color: {letter_type_config['color']}; - }} - div.stButton > button[data-testid="stButton"][kind="primary"][sf-key*="btn_formal_select_{letter_type_config['id']}"]:hover {{ - background-color: {letter_type_config['color']}D9; /* Slightly darker on hover */ - }} - """ - st.markdown(f"", unsafe_allow_html=True) - - -def display_formal_letter_form(subtype: str): - """ - Displays the form for the selected formal letter subtype. This includes - input fields specific to the subtype, contact information fields, - tone and style options, and tabs for previewing and analyzing the generated letter. - - Args: - subtype: The ID string of the selected formal letter subtype. - """ - - # Get the template for the selected subtype from the templates module. - # This provides structural guidance and general advice for the LLM. - template = get_template_by_type("formal", subtype) - - # Display the form title, icon, description, and guidance. - st.markdown(f"## {get_icon_for_subtype(subtype)} {get_name_for_subtype(subtype)}") - st.markdown(f"*{get_description_for_subtype(subtype)}*") - st.info(f"**Guidance:** {template.get('guidance', 'No specific guidance available.')}") - - # Use a Streamlit form to group inputs. This helps manage state and - # prevents the app from rerunning every time a single input widget changes, - # improving performance for forms with many inputs. - with st.form(key=f"formal_letter_form_{subtype}"): - # Create tabs to organize the form sections. - tab1, tab2, tab3 = st.tabs(["Letter Details", "Contact Information", "Preview & Export"]) - - # Dictionary to store form data collected from all tabs - form_data = {} - - # --- Tab 1: Letter Details --- - with tab1: - st.markdown("### Letter Content Details") - - # Get the configuration for subtype-specific input fields. - fields = get_fields_for_subtype(subtype) - - # Create form fields dynamically based on the subtype configuration. - # Populate default values from session state to retain user input across reruns. - for field in fields: - # Retrieve default value from session state, falling back to empty string or specific defaults - default_value = st.session_state.formal_letter_form_data.get(field["id"], "") - - # Create the appropriate Streamlit input widget based on the field type. - # Use a unique key for each widget to ensure state is managed correctly. - if field["type"] == "text": - form_data[field["id"]] = st.text_input(field["label"], value=default_value, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "textarea": - form_data[field["id"]] = st.text_area(field["label"], value=default_value, help=field.get("help", ""), height=150, key=f"{subtype}_{field['id']}") - elif field["type"] == "date": - # Handle date input default value: use stored value if valid, otherwise use today's date. - try: - # Attempt to parse stored value as date, fallback to today if unsuccessful - default_date = datetime.datetime.strptime(str(default_value), "%Y-%m-%d").date() if default_value else datetime.date.today() - except (ValueError, TypeError): - default_date = datetime.date.today() # Fallback to today's date - form_data[field["id"]] = st.date_input(field["label"], value=default_date, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "select": - # Determine the index of the default value in the options list. - try: - default_index = field["options"].index(default_value) if default_value in field["options"] else 0 - except ValueError: - default_index = 0 # Default to the first option if the stored value is not valid - form_data[field["id"]] = st.selectbox(field["label"], field["options"], index=default_index, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "slider": - # Use the default value from session state or the field config's default - default_slider_value = st.session_state.formal_letter_form_data.get(field["id"], field.get("default", (field["min"] + field["max"]) / 2)) # Fallback to midpoint if no default specified - form_data[field["id"]] = st.slider(field["label"], field["min"], field["max"], default_slider_value, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "number": - # Use the default value from session state or the field config's min value - default_number_value = st.session_state.formal_letter_form_data.get(field["id"], field.get("min", 0)) - form_data[field["id"]] = st.number_input(field["label"], min_value=field.get("min", 0), value=default_number_value, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - - - # Section for selecting letter tone and style characteristics. - st.markdown("### Tone and Style") - col1, col2 = st.columns(2) - - with col1: - # Slider for Formality Level, using session state default. - formality_options = ["Standard Formal", "Very Formal", "Extremely Formal"] - default_formality_level = st.session_state.formal_letter_form_data.get("formality_level", "Standard Formal") - form_data["formality_level"] = st.select_slider( - "Formality Level", - options=formality_options, - value=default_formality_level, - help="Select the desired level of formality for your letter.", - key=f"{subtype}_formality_level" - ) - - # Selectbox for Tone, using subtype-specific tones and session state default. - tone_options = get_tones_for_subtype(subtype) - default_tone = st.session_state.formal_letter_form_data.get("tone", tone_options[0] if tone_options else "Professional") - form_data["tone"] = st.selectbox( - "Tone", - tone_options, - index=tone_options.index(default_tone) if default_tone in tone_options else 0, - help="Select the overall tone for your letter.", - key=f"{subtype}_tone" - ) - - with col2: - # Slider for Length, using session state default. - length_options = ["Brief", "Standard", "Detailed"] - default_length = st.session_state.formal_letter_form_data.get("length", "Standard") - form_data["length"] = st.select_slider( - "Length", - options=length_options, - value=default_length, - help="Select the desired length of your letter.", - key=f"{subtype}_length" - ) - - # Slider for Language Complexity, using session state default. - complexity_options = ["Simple", "Moderate", "Advanced"] - default_language_complexity = st.session_state.formal_letter_form_data.get("language_complexity", "Moderate") - form_data["language_complexity"] = st.select_slider( - "Language Complexity", - options=complexity_options, - value=default_language_complexity, - help="Select the complexity level of language used in the letter.", - key=f"{subtype}_language_complexity" - ) - - # Section for adding additional options like references. - st.markdown("### Additional Options") - - # Checkbox and textarea for including references. - default_include_references = st.session_state.formal_letter_form_data.get("include_references", True) - include_references = st.checkbox("Include references to relevant documents, policies, or previous communications", value=default_include_references, help="Check to include specific references.", key=f"{subtype}_include_references") - form_data["references"] = None # Initialize to None - if include_references: - default_references = st.session_state.formal_letter_form_data.get("references", "") - form_data["references"] = st.text_area( - "References Details", - value=default_references, - height=100, - help="Mention any relevant documents, policies, or previous communications.", - placeholder="e.g., Regarding your email dated June 15, 2023, about the project timeline...", - key=f"{subtype}_references" - ) - - # Advanced options expander for legal/confidentiality notices. - with st.expander("Advanced Options"): - # Checkbox and textarea for including a legal disclaimer. - default_include_legal_disclaimer = st.session_state.formal_letter_form_data.get("include_legal_disclaimer", False) - include_legal_disclaimer = st.checkbox("Include legal disclaimer", value=default_include_legal_disclaimer, help="Add a legal disclaimer to your letter.", key=f"{subtype}_include_legal_disclaimer") - form_data["legal_disclaimer"] = None # Initialize to None - if include_legal_disclaimer: - default_legal_disclaimer = st.session_state.formal_letter_form_data.get("legal_disclaimer", "") - form_data["legal_disclaimer"] = st.text_area( - "Legal Disclaimer Text", - value=default_legal_disclaimer, - height=100, - help="Enter the text for the legal disclaimer.", - placeholder="e.g., This letter is without prejudice to any rights or remedies available to [Company Name]...", - key=f"{subtype}_legal_disclaimer" - ) - - # Checkbox and textarea for including a confidentiality notice. - default_include_confidentiality_notice = st.session_state.formal_letter_form_data.get("include_confidentiality_notice", False) - include_confidentiality_notice = st.checkbox("Include confidentiality notice", value=default_include_confidentiality_notice, help="Add a confidentiality notice to your letter.", key=f"{subtype}_include_confidentiality_notice") - form_data["confidentiality_notice"] = None # Initialize to None - if include_confidentiality_notice: - default_confidentiality_notice = st.session_state.formal_letter_form_data.get("confidentiality_notice", "") - form_data["confidentiality_notice"] = st.text_area( - "Confidentiality Notice Text", - value=default_confidentiality_notice, - height=100, - help="Enter the text for the confidentiality notice.", - placeholder="e.g., The information contained in this letter is confidential and intended only for the recipient...", - key=f"{subtype}_confidentiality_notice" - ) - - - # --- Tab 2: Contact Information --- - with tab2: - # Section for sender and recipient contact information. - col3, col4 = st.columns(2) - - with col3: - st.markdown("### Sender Information") - # Input fields for sender's contact details, populated from session state. - form_data["sender_name"] = st.text_input("Your Full Name", value=st.session_state.formal_letter_form_data.get("sender_name", ""), help="Your full name as the sender.", key=f"{subtype}_sender_name") - form_data["sender_title"] = st.text_input("Your Title/Position", value=st.session_state.formal_letter_form_data.get("sender_title", ""), help="Your job title or position.", key=f"{subtype}_sender_title") - form_data["sender_organization"] = st.text_input("Your Organization/Company (Optional)", value=st.session_state.formal_letter_form_data.get("sender_organization", ""), help="The name of your organization or company, if applicable.", key=f"{subtype}_sender_organization") - form_data["sender_address"] = st.text_area("Your Address", value=st.session_state.formal_letter_form_data.get("sender_address", ""), height=100, help="Your full mailing address.", key=f"{subtype}_sender_address") - form_data["sender_phone"] = st.text_input("Your Phone Number (Optional)", value=st.session_state.formal_letter_form_data.get("sender_phone", ""), help="Your contact phone number.", key=f"{subtype}_sender_phone") - form_data["sender_email"] = st.text_input("Your Email Address (Optional)", value=st.session_state.formal_letter_form_data.get("sender_email", ""), help="Your contact email address.", key=f"{subtype}_sender_email") - - with col4: - st.markdown("### Recipient Information") - # Input fields for recipient's contact details, populated from session state. - form_data["recipient_name"] = st.text_input("Recipient's Full Name", value=st.session_state.formal_letter_form_data.get("recipient_name", ""), help="The full name of the recipient (if known).", key=f"{subtype}_recipient_name") - form_data["recipient_title"] = st.text_input("Recipient's Title/Position (Optional)", value=st.session_state.formal_letter_form_data.get("recipient_title", ""), help="The recipient's job title or position (if known).", key=f"{subtype}_recipient_title") - form_data["recipient_organization"] = st.text_input("Recipient's Organization/Company", value=st.session_state.formal_letter_form_data.get("recipient_organization", ""), help="The name of the recipient's organization or company.", key=f"{subtype}_recipient_organization") - form_data["recipient_address"] = st.text_area("Recipient's Address", value=st.session_state.formal_letter_form_data.get("recipient_address", ""), height=100, help="The recipient's full mailing address.", key=f"{subtype}_recipient_address") - - # Optional recipient contact information in an expander. - with st.expander("Additional Recipient Information (Optional)"): - form_data["recipient_phone"] = st.text_input("Recipient's Phone Number (Optional)", value=st.session_state.formal_letter_form_data.get("recipient_phone", ""), help="Recipient's contact phone number.", key=f"{subtype}_recipient_phone") - form_data["recipient_email"] = st.text_input("Recipient's Email Address (Optional)", value=st.session_state.formal_letter_form_data.get("recipient_email", ""), help="Recipient's contact email address.", key=f"{subtype}_recipient_email") - - # Section for letter formatting options. - st.markdown("### Letter Format") - format_options = ["Full Block", "Modified Block", "Semi-Block"] - default_letter_format = st.session_state.formal_letter_form_data.get("letter_format", "Full Block") - form_data["letter_format"] = st.selectbox( - "Format Style", - format_options, - index=format_options.index(default_letter_format) if default_letter_format in format_options else 0, - help="Select the standard formal letter format style.", - key=f"{subtype}_letter_format" - ) - - default_include_subject_line = st.session_state.formal_letter_form_data.get("include_subject_line", True) - include_subject_line = st.checkbox("Include subject line", value=default_include_subject_line, help="Include a clear subject line.", key=f"{subtype}_include_subject_line") - form_data["subject_line"] = None # Initialize to None - if include_subject_line: - default_subject_line = st.session_state.formal_letter_form_data.get("subject_line", "") - form_data["subject_line"] = st.text_input( - "Subject Line Text", - value=default_subject_line, - help="Enter the text for the subject line.", - placeholder="e.g., Application for Marketing Manager Position (Ref: JOB-2023-45)", - key=f"{subtype}_subject_line" - ) - - default_include_reference_number = st.session_state.formal_letter_form_data.get("include_reference_number", False) - include_reference_number = st.checkbox("Include reference number", value=default_include_reference_number, help="Include a reference number for tracking.", key=f"{subtype}_include_reference_number") - form_data["reference_number"] = None # Initialize to None - if include_reference_number: - default_reference_number = st.session_state.formal_letter_form_data.get("reference_number", "") - form_data["reference_number"] = st.text_input( - "Reference Number Text", - value=default_reference_number, - help="Enter the reference number.", - placeholder="e.g., REF-2023-123", - key=f"{subtype}_reference_number" - ) - - # --- Tab 3: Preview & Export --- - with tab3: - # Instructions for the user before generation. - if not st.session_state.formal_letter_generated: - st.info("Complete the letter details and click 'Generate Letter' to preview your letter.") - - # The Generate button is placed inside the form. Clicking it submits the form - # and triggers the code block below it to run. - generate_button = st.form_submit_button("Generate Letter", type="primary") - - if generate_button: - # Action to perform when the form is submitted via the Generate button. - - # Store the current state of all form inputs in session state. - # This allows retaining user inputs even after generation or regeneration. - st.session_state.formal_letter_form_data = form_data.copy() - - # Prepare metadata specifically for the formatter and analysis functions. - # This includes structured contact info, dates, subject, etc. - metadata = { - "sender_name": form_data.get("sender_name", ""), - "sender_title": form_data.get("sender_title", ""), - "sender_organization": form_data.get("sender_organization", ""), - "sender_address": form_data.get("sender_address", ""), - "sender_phone": form_data.get("sender_phone", ""), - "sender_email": form_data.get("sender_email", ""), - "recipient_name": form_data.get("recipient_name", ""), - "recipient_title": form_data.get("recipient_title", ""), - "recipient_organization": form_data.get("recipient_organization", ""), - "recipient_address": form_data.get("recipient_address", ""), - "recipient_phone": form_data.get("recipient_phone", ""), - "recipient_email": form_data.get("recipient_email", ""), - "date": datetime.datetime.now().strftime("%B %d, %Y"), # Use current date for the letter - "letter_format": form_data.get("letter_format", "Full Block"), - "subject": form_data.get('subject_line') if form_data.get('include_subject_line') else "", # Include subject in metadata for formatter - "reference_number": form_data.get('reference_number') if form_data.get('include_reference_number') else "", # Include reference in metadata - } - # Determine salutation based on recipient name/title preference - recipient_display_name = metadata.get("recipient_name") - recipient_display_title = metadata.get("recipient_title") - if recipient_display_name and recipient_display_title: - metadata["salutation"] = f"Dear {recipient_display_title} {recipient_display_name}:" - elif recipient_display_name: - metadata["salutation"] = f"Dear {recipient_display_name}:" - else: - metadata["salutation"] = "Dear Sir/Madam:" # Fallback salutation - - # Determine complimentary close based on formality - metadata["complimentary_close"] = "Sincerely," # Standard formal close - - - st.session_state.formal_letter_metadata = metadata.copy() - - - # --- Letter Generation Logic --- - # Check for minimal required fields before attempting generation. - if not form_data.get("sender_name") or not form_data.get("recipient_name") or not form_data.get("recipient_organization"): - st.error("Please provide at least your name, the recipient's name, and the recipient's organization.") - else: - # Display a spinner while the AI generates the letter. - with st.spinner("Generating your formal letter..."): - # Combine all necessary data into a single dictionary for the generation function. - # This includes both form data and metadata. - # Note: formality_level, tone, length, language_complexity are already in form_data - generation_data = { - "subtype": subtype, - **form_data, # Includes all collected form inputs - **metadata # Includes structured sender/recipient/date/format info - } - - # Call the letter generation function with the combined data. - letter_content = generate_formal_letter(generation_data) - - # Store the generated letter content and update the generated flag. - st.session_state.formal_letter_content = letter_content - st.session_state.formal_letter_generated = True - - # Rerun the app to exit the form block and display the generated letter section. - # This rerun happens automatically on form submission, but explicit state updates - # ensure the display logic reacts correctly. - # st.rerun() # Rerun is handled by form submission - - # --- Display Generated Letter and Analysis --- - # This block executes if a letter has been generated and stored in session state. - if st.session_state.formal_letter_generated and st.session_state.formal_letter_content is not None: - letter_content = st.session_state.formal_letter_content - metadata = st.session_state.formal_letter_metadata - - # Create tabs for different views of the generated letter. - preview_tab1, preview_tab2, preview_tab3 = st.tabs(["Formatted Preview", "Plain Text", "Analysis"]) - - with preview_tab1: - st.markdown("### Letter Preview") - # Generate and display the HTML preview of the letter using the formatter utility. - # Pass letter_type="formal" to the formatter. - html_preview = get_letter_preview_html(letter_content, metadata, letter_type="formal") - st.markdown(html_preview, unsafe_allow_html=True) - - # Download button for the plain text version of the letter. - file_name_suffix = metadata.get('recipient_organization', 'formal').replace(' ', '_').lower() - st.download_button( - label="Download as Text", - data=letter_content, - file_name=f"{subtype}_letter_to_{file_name_suffix}_{datetime.datetime.now().strftime('%Y%m%d')}.txt", - mime="text/plain" - ) - - with preview_tab2: - st.markdown("### Plain Text Content") - # Display the raw generated letter content in a text area. - st.text_area("Letter Content", letter_content, height=400, key=f"{subtype}_plain_text_display") - - # Button to copy the plain text content to the clipboard. - st.button("Copy Plain Text (Manual Copy from above)", help="Select and copy the text from the box above.", key=f"{subtype}_copy_plain_text_instruction") - - - with preview_tab3: - st.markdown("### Letter Analysis") - # Perform and display analysis of the generated letter using utility functions. - - # Analyze tone, formality, and readability. - tone_analysis = analyze_letter_tone(letter_content) - formality_score = check_formality(letter_content) # Returns score between 0.0 and 1.0 - readability_metrics = get_readability_metrics(letter_content) - # Get improvement suggestions, passing the letter type for context. - improvement_suggestions = suggest_improvements(letter_content, "formal") # Pass "formal" as letter_type - - # Display analysis results in two columns. - col5, col6 = st.columns(2) - - with col5: - st.markdown("#### Tone Analysis") - # Display each tone score. - if tone_analysis: - for tone, score in tone_analysis.items(): - st.write(f"- **{tone.capitalize()}:** {score:.2f}") - else: - st.info("Tone analysis not available.") - - - st.markdown("#### Formality") - # Display formality score as a percentage and a progress bar. - st.progress(formality_score) # Progress bar expects a value between 0.0 and 1.0 - st.write(f"Formality Score: {formality_score * 100:.0f}/100") # Display as a percentage (0-100) - - - with col6: - st.markdown("#### Readability Metrics") - # Display various readability metrics. - if readability_metrics: - st.write(f"**Word Count:** {readability_metrics.get('word_count', 'N/A')} words") - st.write(f"**Sentence Count:** {readability_metrics.get('sentence_count', 'N/A')} sentences") - st.write(f"**Avg Words per Sentence:** {readability_metrics.get('avg_words_per_sentence', 'N/A')}") - st.write(f"**Flesch Reading Ease:** {readability_metrics.get('flesch_reading_ease', 'N/A')}") - st.write(f"**Reading Level:** {readability_metrics.get('reading_level', 'N/A')}") - # Display estimated reading time. - st.write(f"**Estimated Reading Time:** {readability_metrics.get('reading_time_seconds', 'N/A')} seconds") - else: - st.info("Readability metrics not available.") - - st.markdown("#### Suggestions for Improvement") - # Display improvement suggestions. - if improvement_suggestions: - # Iterate through the list and display each suggestion as a list item. - for suggestion in improvement_suggestions: - st.markdown(f"- {suggestion}") - else: - st.info("No specific suggestions for improvement found.") - - # Button to regenerate the letter. Placed outside the form so it's always visible - # after generation, without needing to resubmit the form first. - # Keep the form data in session state so the user's inputs are retained. - if st.button("Regenerate Letter", key=f"{subtype}_regenerate_button"): - # Reset the generated state and content to allow the form to be displayed again. - st.session_state.formal_letter_generated = False - st.session_state.formal_letter_content = None # Clear generated content - # st.session_state.formal_letter_form_data is already populated from the form submit - st.rerun() # Rerun to show the form with previous inputs - - -def generate_formal_letter(data: Dict[str, Any]) -> str: - """ - Generates a formal letter using the LLM by constructing a detailed prompt - based on the collected user inputs and metadata. - - Args: - data: A dictionary containing all collected user inputs and metadata - (from the form and session state). - - Returns: - The generated letter content as a string, or an error message if generation fails. - """ - - # Extract key generation parameters from the data dictionary. - subtype = data.get("subtype", "default") - formality_level = data.get("formality_level", "Standard Formal") - tone = data.get("tone", "Professional") - length = data.get("length", "Standard") - language_complexity = data.get("language_complexity", "Moderate") - - # Get template guidance and structure to include in the prompt. - template = get_template_by_type("formal", subtype) - template_guidance = template.get("guidance", "Follow standard formal letter practices.") - template_structure = template.get("structure", ["Sender Info", "Date", "Recipient Info", "Subject", "Salutation", "Body", "Closing", "Signature"]) - - - # Build the prompt string step-by-step, including all relevant details - # from the user's input and selected options. - prompt_parts = [ - f"Write a {length.lower()}, {formality_level.lower()} {get_name_for_subtype(subtype)} letter with a {tone.lower()} tone using {language_complexity.lower()} language complexity.", - f"Purpose: {get_description_for_subtype(subtype)}", - f"Recipient: {data.get('recipient_name', '')}, {data.get('recipient_title', '')} at {data.get('recipient_organization', '')}", - f"Sender: {data.get('sender_name', '')}, {data.get('sender_title', '')} at {data.get('sender_organization', '')}", - f"Date: {data.get('date', '')}", - f"Desired Format Style: {data.get('letter_format', 'Full Block')}", - ] - - # Add subject line if provided - if data.get('include_subject_line') and data.get('subject_line'): - prompt_parts.append(f"Subject: {data['subject_line']}") - - # Add reference number if provided - if data.get('include_reference_number') and data.get('reference_number'): - prompt_parts.append(f"Reference Number: {data['reference_number']}") - - - # Add subtype-specific details from the collected form data. - subtype_fields = get_fields_for_subtype(subtype) - if subtype_fields: - prompt_parts.append("\nKey Details to Include:") - for field in subtype_fields: - field_value = data.get(field["id"]) - # Include the field's label and value in the prompt only if the value is not empty. - if field_value: - # Format date fields nicely for the prompt if they are date objects. - if field["type"] == "date": - try: - field_value_str = field_value.strftime("%B %d, %Y") - except AttributeError: - field_value_str = str(field_value) # Fallback if not a date object - else: - field_value_str = str(field_value) - - prompt_parts.append(f"- {field['label']}: {field_value_str}") - - - # Add additional options if included. - if data.get('include_references') and data.get('references'): - prompt_parts.append(f"Include references: {data['references']}") - - if data.get('include_legal_disclaimer') and data.get('legal_disclaimer'): - prompt_parts.append(f"Include legal disclaimer: {data['legal_disclaimer']}") - - if data.get('include_confidentiality_notice') and data.get('confidentiality_notice'): - prompt_parts.append(f"Include confidentiality notice: {data['confidentiality_notice']}") - - # Add the template structure and overall guidance to the prompt. - # This helps the LLM understand the desired layout and writing style. - prompt_parts.append("\nFollow this general structure:") - for i, section in enumerate(template_structure): - prompt_parts.append(f"{i+1}. {section}") - prompt_parts.append(f"\nOverall Writing Guidance: {template_guidance}") - - # Add final instructions for the LLM. - prompt_parts.append("\nMake the letter professional, clear, and appropriate for the formal context.") - - - # Combine all prompt parts into a single string. - final_prompt = "\n".join(prompt_parts) - - # Call the LLM text generation function with the constructed prompt. - try: - letter_content = llm_text_gen(final_prompt) - return letter_content - except Exception as e: - # Catch any errors during LLM generation and display an error message. - st.error(f"Error generating letter: {str(e)}") - return "Error generating letter. Please try again." - - -# --- Helper functions (from original code, slightly enhanced) --- - -def get_icon_for_subtype(subtype: str) -> str: - """Maps a formal letter subtype ID to a relevant emoji icon.""" - icons = { - "application": "๐Ÿ“‹", - "complaint": "โš ๏ธ", - "request": "๐Ÿ™‹", - "recommendation": "๐Ÿ‘", - "resignation": "๐Ÿšช", - "inquiry": "โ“", - "authorization": "โœ…", - "appeal": "๐Ÿ”„", - "introduction": "๐Ÿค" - } - return icons.get(subtype, "๐Ÿ“") # Default icon - -def get_name_for_subtype(subtype: str) -> str: - """Maps a formal letter subtype ID to its display name.""" - names = { - "application": "Application Letter", - "complaint": "Complaint Letter", - "request": "Request Letter", - "recommendation": "Recommendation Letter", - "resignation": "Resignation Letter", - "inquiry": "Inquiry Letter", - "authorization": "Authorization Letter", - "appeal": "Appeal Letter", - "introduction": "Introduction Letter" - } - return names.get(subtype, "Formal Letter") # Default name - -def get_description_for_subtype(subtype: str) -> str: - """Maps a formal letter subtype ID to a brief description.""" - descriptions = { - "application": "Apply for a job, program, or opportunity with a professional application letter.", - "complaint": "Express dissatisfaction with a product or service in a formal and effective manner.", - "request": "Make a formal request for information, assistance, or action.", - "recommendation": "Recommend someone for a position or opportunity with a professional endorsement.", - "resignation": "Formally resign from a position while maintaining professional relationships.", - "inquiry": "Request information about a product, service, or opportunity in a formal manner.", - "authorization": "Grant permission for someone to act on your behalf with a formal authorization.", - "appeal": "Appeal a decision or request reconsideration with a persuasive formal letter.", - "introduction": "Introduce yourself or your organization with a professional introduction letter." - } - return descriptions.get(subtype, "Create a formal letter for your specific needs.") # Default description - -def get_fields_for_subtype(subtype: str) -> List[Dict[str, Any]]: - """ - Provides a list of input field configurations specific to each formal letter subtype. - Each dictionary in the list defines a form input field, including its ID, label, - type, and optional properties like help text, options (for select/slider), - min/max values (for slider/number), and a default value. - """ - - # Define subtype-specific fields. - if subtype == "application": - return [ - { - "id": "position", - "label": "Position/Opportunity", - "type": "text", - "help": "What specific position, program, or opportunity are you applying for?" - }, - { - "id": "source", - "label": "Where You Found the Opportunity (Optional)", - "type": "text", - "help": "Where did you learn about this opportunity? (e.g., company website, job board, referral)" - }, - { - "id": "qualifications", - "label": "Key Qualifications", - "type": "textarea", - "help": "List your key qualifications and skills that match the requirements of this position." - }, - { - "id": "experience", - "label": "Relevant Experience", - "type": "textarea", - "help": "Describe your relevant work experience, projects, or academic background." - } - ] - elif subtype == "complaint": - return [ - { - "id": "product_service", - "label": "Product or Service Involved", - "type": "text", - "help": "What product or service is the subject of your complaint?" - }, - { - "id": "date_of_incident", - "label": "Date of Purchase or Incident", - "type": "date", # Using date type for date input - "help": "When did you purchase the product or when did the incident occur?" - }, - { - "id": "order_reference", - "label": "Order/Reference Number (Optional)", - "type": "text", - "help": "Include any relevant order numbers, account numbers, or reference IDs." - }, - { - "id": "complaint_nature", - "label": "Nature of Complaint", - "type": "textarea", - "help": "Describe the issue clearly, factually, and in detail. Include specific dates, times, and names if applicable." - }, - { - "id": "desired_resolution", - "label": "Desired Resolution", - "type": "textarea", - "help": "Clearly state what outcome you are seeking to resolve this complaint (e.g., full refund, replacement, repair, specific action)." - } - ] - elif subtype == "request": - return [ - { - "id": "request_type", - "label": "Type of Request", - "type": "text", - "help": "What type of formal request are you making? (e.g., Request for Information, Request for Meeting, Request for Document)" - }, - { - "id": "request_details", - "label": "Specific Request Details", - "type": "textarea", - "help": "Provide all necessary details about what you are requesting." - }, - { - "id": "request_reason", - "label": "Reason or Justification for Request", - "type": "textarea", - "help": "Clearly explain why you are making this request and its importance." - }, - { - "id": "deadline", - "label": "Deadline for Response/Action (if applicable)", - "type": "date", # Using date type for date input - "help": "Is there a specific date by which you need a response or action?" - } - ] - elif subtype == "recommendation": - return [ - { - "id": "recommendee", - "label": "Person Being Recommended (Full Name)", - "type": "text", - "help": "Enter the full name of the person you are recommending." - }, - { - "id": "position", - "label": "Position/Opportunity Being Recommended For", - "type": "text", - "help": "What specific position, program, or opportunity are you recommending them for?" - }, - { - "id": "relationship", - "label": "Your Relationship to the Recommendee", - "type": "text", - "help": "Describe your professional or academic relationship (e.g., former manager, professor, colleague)." - }, - { - "id": "relationship_duration", - "label": "Duration of Relationship", - "type": "text", - "help": "How long have you known the person in this capacity? (e.g., 3 years, from 2018 to 2022)" - }, - { - "id": "strengths", - "label": "Key Strengths and Qualities", - "type": "textarea", - "help": "Highlight the most relevant strengths and qualities of the person being recommended." - }, - { - "id": "achievements", - "label": "Specific Achievements or Contributions", - "type": "textarea", - "help": "Provide concrete examples of their achievements, contributions, or performance." - } - ] - elif subtype == "resignation": - return [ - { - "id": "current_position", - "label": "Your Current Position", - "type": "text", - "help": "What is your current job title?" - }, - { - "id": "last_day", - "label": "Your Last Working Day", - "type": "date", # Using date type for date input - "help": "Specify your intended last day of employment." - }, - { - "id": "resignation_reason", - "label": "Reason for Resignation (Optional)", - "type": "textarea", - "help": "You may choose to provide a brief, professional reason for leaving (e.g., pursuing a new opportunity, personal reasons)." - }, - { - "id": "transition_plan", - "label": "Offer of Assistance with Transition (Optional)", - "type": "textarea", - "help": "Offer to assist with the transition of your responsibilities." - }, - { - "id": "gratitude", - "label": "Express Gratitude (Optional)", - "type": "textarea", - "help": "Express thanks for the opportunity and experience gained." - } - ] - elif subtype == "inquiry": - return [ - { - "id": "inquiry_subject", - "label": "Inquiry Subject", - "type": "text", - "help": "What is the main subject of your inquiry?" - }, - { - "id": "background_info", - "label": "Relevant Background Information (Optional)", - "type": "textarea", - "help": "Provide any necessary context for your inquiry." - }, - { - "id": "specific_questions", - "label": "Specific Questions", - "type": "textarea", - "help": "List your questions clearly and concisely, perhaps using bullet points." - }, - { - "id": "response_deadline", - "label": "Deadline for Response (if applicable)", - "type": "date", # Using date type for date input - "help": "By when do you need the information?" - } - ] - elif subtype == "authorization": - return [ - { - "id": "authorized_person", - "label": "Person Being Authorized (Full Name)", - "type": "text", - "help": "Enter the full name of the person you are authorizing." - }, - { - "id": "authorized_person_id", - "label": "Authorized Person's Identification (Optional)", - "type": "text", - "help": "Include any identification details if necessary (e.g., ID number, employee ID)." - }, - { - "id": "authorization_purpose", - "label": "Purpose and Scope of Authorization", - "type": "textarea", - "help": "Clearly and precisely state what you are authorizing them to do on your behalf." - }, - { - "id": "authorization_duration", - "label": "Duration of Authorization", - "type": "text", # Using text for flexibility (e.g., "from date to date", "until revoked") - "help": "Specify how long this authorization is valid (e.g., 'from [Start Date] to [End Date]', 'until revoked in writing')." - }, - { - "id": "authorization_limitations", - "label": "Limitations or Restrictions (Optional)", - "type": "textarea", - "help": "Specify any limitations or restrictions on the authorized person's actions." - } - ] - elif subtype == "appeal": - return [ - { - "id": "appealed_decision", - "label": "Decision Being Appealed", - "type": "text", - "help": "Clearly identify the specific decision you are appealing." - }, - { - "id": "decision_date", - "label": "Date of Original Decision", - "type": "date", # Using date type for date input - "help": "When was the original decision made?" - }, - { - "id": "appeal_grounds", - "label": "Grounds for Appeal", - "type": "textarea", - "help": "Explain the specific reasons or arguments why you believe the decision should be overturned or reconsidered. Reference relevant policies or facts." - }, - { - "id": "supporting_evidence", - "label": "Supporting Evidence (Optional)", - "type": "textarea", - "help": "Mention any supporting documents or evidence you are providing." - }, - { - "id": "requested_outcome", - "label": "Requested Outcome", - "type": "textarea", - "help": "Clearly state what resolution you are seeking from this appeal." - } - ] - elif subtype == "introduction": - return [ - { - "id": "introduction_purpose", - "label": "Purpose of Introduction", - "type": "text", - "help": "Why are you introducing yourself or your organization to this recipient?" - }, - { - "id": "key_information", - "label": "Key Information About Yourself/Organization", - "type": "textarea", - "help": "Highlight relevant background, expertise, or services." - }, - { - "id": "collaboration_areas", - "label": "Potential Areas of Collaboration or Mutual Interest (Optional)", - "type": "textarea", - "help": "Suggest ways you could potentially collaborate or areas of shared interest." - }, - { - "id": "call_to_action", - "label": "Call to Action", - "type": "textarea", - "help": "What specific action would you like the recipient to take after reading your introduction? (e.g., schedule a meeting, visit website)" - } - ] - - # Default fields if subtype is not recognized or no specific fields are defined. - # This provides a basic textarea for general content. - return [ - { - "id": "main_content", - "label": "Main Content", - "type": "textarea", - "help": "Enter the main content you want to include in your formal letter." - } - ] - -def get_tones_for_subtype(subtype: str) -> List[str]: - """Maps a formal letter subtype ID to a list of suggested tones.""" - tones = { - "application": ["Professional", "Confident", "Enthusiastic", "Respectful", "Formal"], - "complaint": ["Firm", "Respectful", "Direct", "Objective", "Assertive"], - "request": ["Polite", "Clear", "Respectful", "Direct", "Appreciative"], - "recommendation": ["Supportive", "Positive", "Professional", "Enthusiastic", "Confident"], - "resignation": ["Professional", "Appreciative", "Respectful", "Positive", "Formal"], - "inquiry": ["Curious", "Professional", "Respectful", "Clear", "Formal"], - "authorization": ["Clear", "Precise", "Formal", "Direct", "Authoritative"], - "appeal": ["Persuasive", "Respectful", "Objective", "Confident", "Diplomatic"], - "introduction": ["Friendly", "Professional", "Enthusiastic", "Informative", "Engaging"] - } - # Return the list of tones for the subtype, or a default list if not found. - return tones.get(subtype, ["Professional", "Formal", "Respectful", "Clear", "Direct"]) - -# Example of how to run the app (for local development using `streamlit run your_script_name.py`) -# Uncomment the lines below to make this script directly executable. -# if __name__ == "__main__": -# write_letter() diff --git a/ToBeMigrated/ai_writers/ai_letter_writer/letter_templates.py b/ToBeMigrated/ai_writers/ai_letter_writer/letter_templates.py deleted file mode 100644 index 6be56912..00000000 --- a/ToBeMigrated/ai_writers/ai_letter_writer/letter_templates.py +++ /dev/null @@ -1,758 +0,0 @@ -""" -Letter Templates Module - -This module provides structured templates and guidance for generating -different types and subtypes of letters. -Templates are defined as a nested dictionary containing 'structure' (list of sections) -and 'guidance' (a string) for each letter type and subtype. -""" - -from typing import Dict, Any, List - -# Define letter templates using a nested dictionary structure for better organization and lookup. -# The structure is {letter_type: {subtype: {template_details}}} -# 'default' subtype is used as a fallback if a specific subtype isn't found for a given type. -TEMPLATES: Dict[str, Dict[str, Dict[str, Any]]] = { - "personal": { - "congratulations": { - "structure": [ - "Greeting", - "Express congratulations", - "Acknowledge the achievement", - "Share personal thoughts/memory (optional)", - "Look to the future/well wishes", - "Closing" - ], - "guidance": "Be warm, sincere, and specific about the achievement. Express genuine happiness for the recipient. Keep the tone personal and friendly." - }, - "thank_you": { - "structure": [ - "Greeting", - "Express gratitude clearly", - "Specify what you are thankful for", - "Explain the impact or how you used it (optional)", - "Share a personal thought or memory (optional)", - "Offer reciprocation or look to the future", - "Closing" - ], - "guidance": "Be specific about what you're thankful for and how it affected you. Express sincere appreciation. Personalize the message." - }, - "sympathy": { - "structure": [ - "Greeting", - "Express sympathy for the loss", - "Acknowledge the significance of the person/situation", - "Share a positive memory or quality (optional)", - "Offer specific support (optional)", - "Closing with comforting words" - ], - "guidance": "Be gentle, compassionate, and sincere. Avoid clichรฉs. Focus on offering genuine comfort and acknowledging the recipient's feelings." - }, - "apology": { - "structure": [ - "Greeting", - "Clearly state your apology", - "Acknowledge the specific mistake or action", - "Express understanding of the impact on the other person", - "Explain (briefly, without making excuses) what happened (optional)", - "Offer amends or suggest how to make things right", - "Assure it won't happen again", - "Closing" - ], - "guidance": "Be sincere, take full responsibility for your actions, and focus on making things right. Avoid making excuses or blaming others." - }, - "invitation": { - "structure": [ - "Greeting", - "Clearly state the invitation", - "Provide full event details (What, When, Where)", - "Explain the significance or purpose (optional)", - "Mention who else might be there (optional)", - "Request RSVP (date and contact method)", - "Express anticipation", - "Closing" - ], - "guidance": "Be clear and specific about the details (what, when, where, why). Make it easy for the person to respond." - }, - "friendship": { - "structure": [ - "Greeting", - "Express appreciation for the friendship", - "Share a recent memory or anecdote", - "Acknowledge the value of the relationship", - "Check in on them or share updates", - "Look to the future (getting together, etc.)", - "Closing" - ], - "guidance": "Be warm, personal, and specific about what you value in the friendship. Share updates and show genuine interest." - }, - "love": { - "structure": [ - "Greeting (Terms of endearment)", - "Express depth of feelings", - "Share a cherished memory or moment", - "Describe specific qualities you love and appreciate", - "Reaffirm commitment or future hopes", - "Closing (Terms of endearment)" - ], - "guidance": "Be sincere, personal, and specific about your feelings. Use sensory details and emotional language appropriate for your relationship." - }, - "encouragement": { - "structure": [ - "Greeting", - "Acknowledge the situation or challenge they face", - "Express belief in their abilities/strength", - "Offer specific words of encouragement or support", - "Remind them of past successes (optional)", - "Offer practical help (optional)", - "Look to the future with hope", - "Closing with support" - ], - "guidance": "Be positive, supportive, and specific about the person's strengths and abilities. Offer genuine encouragement and belief in them." - }, - "farewell": { - "structure": [ - "Greeting", - "State the purpose (saying goodbye)", - "Express feelings about their departure (sadness, happiness for them)", - "Share a positive memory or highlight their contribution", - "Express good wishes for their future endeavors", - "Look to staying in touch (optional)", - "Closing" - ], - "guidance": "Be warm, reflective, and forward-looking. Focus on positive memories and express genuine good wishes for their next steps." - }, - # Default personal letter template if subtype is not found - "default": { - "structure": [ - "Greeting", - "Introduction", - "Main content paragraphs", - "Closing thoughts", - "Signature" - ], - "guidance": "Be personal, authentic, and appropriate for your relationship with the recipient. The tone is typically informal to semi-formal." - } - }, - "formal": { - "application": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information (if known)", - "Subject line (Clear and concise)", - "Salutation (Formal)", - "Introduction (State position applied for and where you saw it)", - "Body paragraphs (Highlight relevant skills and experience)", - "Closing paragraph (Reiterate interest, mention enclosed resume, call to action)", - "Complimentary close (Formal)", - "Signature (Typed name)", - "Enclosures (Mention if attaching resume/portfolio)" - ], - "guidance": "Be professional, concise, and specific about your qualifications and genuine interest in the position. Tailor it to the specific job description." - }, - "complaint": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Clearly state it's a complaint)", - "Salutation (Formal)", - "Introduction (State the purpose: complaint about X service/product)", - "Problem description (Provide specific details: date, time, location, product details, names if applicable)", - "Impact statement (Explain how the problem affected you)", - "Requested resolution (Clearly state what you want: refund, replacement, action)", - "Closing paragraph (Reference attached documents, state expectation for response)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be clear, factual, and specific about the issue and your desired resolution. Maintain a respectful but firm tone. Include all relevant details." - }, - "request": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Clearly state the request)", - "Salutation (Formal)", - "Introduction (State the purpose: making a request)", - "Request details (Clearly explain what you are requesting)", - "Justification (Explain why the request is necessary or beneficial)", - "Provide supporting information (optional)", - "Closing paragraph (Express gratitude for consideration, reiterate call to action)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be clear, specific, and courteous about your request. Explain why it's important or beneficial to the recipient or organization." - }, - "recommendation": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Letter of Recommendation for [Name])", - "Salutation (Formal)", - "Introduction (State your name, title, relationship to the recommendee, and for what purpose the letter is written)", - "Body paragraphs (Describe the recommendee's qualifications, skills, and achievements with specific examples)", - "Highlight relevant experiences and contributions", - "Closing recommendation (Summarize endorsement, strongly recommend the person)", - "Complimentary close (Formal)", - "Signature (Typed name and title)" - ], - "guidance": "Be specific, positive, and credible. Use concrete examples and anecdotes to support your recommendation. Tailor it to the specific role/opportunity." - }, - "resignation": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information (Immediate supervisor/HR)", - "Subject line (Letter of Resignation - [Your Name])", - "Salutation (Formal)", - "Statement of resignation (Clearly state you are resigning)", - "Last day of employment (Specify the date)", - "Gratitude and reflection (Optional: Express thanks for the opportunity/experience)", - "Transition plan/Offer of assistance (Optional: Suggest how to ensure a smooth handover)", - "Closing paragraph (Express good wishes for the company's future)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be professional, positive (if possible), and clear about your departure and last day. Maintain a good relationship." - }, - "inquiry": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Clearly state the nature of the inquiry)", - "Salutation (Formal)", - "Introduction (State your purpose for writing - making an inquiry)", - "Inquiry details (Provide necessary context or background)", - "Specific questions (List your questions clearly, perhaps numbered)", - "Closing paragraph (Express gratitude for assistance, indicate when you need a response)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be clear, specific, and courteous about your inquiry. Organize your questions logically for easy answering." - }, - "authorization": { - "structure": [ - "Sender's contact information (The grantor of authority)", - "Date", - "Recipient's contact information (The person/entity receiving the letter)", - "Subject line (Letter of Authorization)", - "Salutation (Formal)", - "Statement of authorization (Clearly state who is authorized)", - "Authorized person's details (Full name, ID if applicable)", - "Scope of authority (Precisely define what they are authorized to do)", - "Limitations (Specify any restrictions or conditions)", - "Duration of authorization (Start and end dates, if applicable)", - "Closing paragraph (State responsibility, express confidence)", - "Complimentary close (Formal)", - "Signature (Typed name and title)" - ], - "guidance": "Be clear, specific, and precise about who is authorized, what they can do, for how long, and under what conditions. This is a legal document." - }, - "appeal": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information (Appeals committee/relevant authority)", - "Subject line (Letter of Appeal - [Your Name] - [Subject of Appeal])", - "Salutation (Formal)", - "Introduction (State your name, the decision being appealed, and the date of the decision)", - "Grounds for appeal (Clearly state the reasons why you believe the decision is incorrect)", - "Provide supporting evidence (Reference attached documents: records, photos, etc.)", - "Explain mitigating circumstances (Optional)", - "Requested outcome (Clearly state what resolution you seek)", - "Closing paragraph (Express hope for reconsideration, gratitude for time)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be respectful, factual, and persuasive. Focus on valid grounds for appeal and provide clear, supporting evidence. Maintain a formal tone." - }, - "introduction": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Introduction - [Your Name])", - "Salutation (Formal)", - "Introduction (Introduce yourself and the purpose of the letter)", - "Background information (Briefly describe your relevant background or expertise)", - "Reason for reaching out (Explain why you are introducing yourself to this specific person/entity)", - "Potential areas of collaboration or shared interest (Optional)", - "Call to action (Suggest a meeting, call, or further communication)", - "Closing paragraph (Express enthusiasm for potential connection)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be professional, informative, and engaging. Clearly explain who you are, your expertise, and why you're reaching out to them specifically." - }, - # Default formal letter template if subtype is not found - "default": { - "structure": [ - "Sender's address", - "Date", - "Recipient's address", - "Subject line", - "Salutation", - "Introduction", - "Body paragraphs", - "Closing paragraph", - "Complimentary close", - "Signature" - ], - "guidance": "Be professional, clear, and concise. Use formal language and structure. The tone is typically formal." - } - }, - "business": { - "sales": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line (Benefit-oriented)", - "Salutation", - "Attention-grabbing opening (Address a pain point or introduce a benefit)", - "Problem statement (Briefly describe the challenge the recipient faces)", - "Solution presentation (Introduce your product/service as the solution)", - "Benefits and features (Explain how your solution helps, focusing on benefits)", - "Social proof (Optional: Testimonials, case studies, data)", - "Call to action (Clearly state what you want them to do next)", - "Closing paragraph (Reiterate benefit, create urgency/incentive)", - "Complimentary close (Professional)", - "Signature (Typed name and title)", - "Enclosures (Optional: Brochure, pricing)" - ], - "guidance": "Be persuasive, customer-focused, and clear about the value proposition. Focus on benefits, not just features. Make the call to action obvious." - }, - "proposal": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line (Clear and descriptive)", - "Salutation", - "Introduction (State purpose: submitting a proposal)", - "Problem statement/Needs assessment (Demonstrate understanding of client's needs)", - "Proposed solution (Describe your solution in detail)", - "Implementation plan (Outline steps and timeline)", - "Costs and investment (Clearly state pricing and payment terms)", - "Benefits and ROI (Explain the value the client will receive)", - "Call to action (Suggest next steps: meeting, discussion)", - "Closing paragraph (Express enthusiasm, availability for questions)", - "Complimentary close (Professional)", - "Signature (Typed name and title)", - "Enclosures (Proposal document, appendix)" - ], - "guidance": "Be clear, specific, and persuasive about your solution. Focus on the client's needs and the value you provide. Structure it logically." - }, - "order": { - "structure": [ - "Letterhead (Your company)", - "Date", - "Recipient's address (Supplier)", - "Subject line (Purchase Order - [PO Number])", - "Salutation", - "Introduction (Reference quote/agreement, state purpose: placing an order)", - "Order details (Item list with quantities, descriptions, unit prices, total)", - "Delivery requirements (Shipping address, requested delivery date, shipping method)", - "Payment terms (Reference agreed terms)", - "Closing paragraph (Express expectation for timely delivery)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be clear, specific, and detailed about what you're ordering, quantities, delivery requirements, and payment terms. Include a purchase order number." - }, - "quotation": { - "structure": [ - "Letterhead (Your company)", - "Date", - "Recipient's address (Customer)", - "Subject line (Quotation for [Product/Service])", - "Salutation", - "Introduction (Reference inquiry, state purpose: providing a quotation)", - "Quotation details (List items/services, descriptions, unit prices, quantities, line totals)", - "Pricing breakdown (Mention taxes, discounts, fees separately)", - "Terms and conditions (Payment terms, delivery terms, warranty)", - "Validity period (State how long the quote is valid)", - "Next steps (How they can place an order)", - "Closing paragraph (Express hope to do business, offer further assistance)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be clear, specific, and transparent about pricing, terms, and what's included or excluded. Make it easy for the customer to understand and accept." - }, - "acknowledgment": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line (Acknowledgment of [Received Item/Request])", - "Salutation", - "Acknowledgment statement (Clearly state what you have received or are acknowledging)", - "Details of what's being acknowledged (Reference number, date, brief description)", - "Confirm understanding (Optional: Briefly restate the request/issue to show understanding)", - "Next steps (Outline what will happen next, e.g., processing order, investigating issue)", - "Timeline (Provide an estimated timeframe if possible)", - "Closing paragraph (Express gratitude, offer further assistance)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be prompt, clear, and specific about what you're acknowledging. Set clear expectations for next steps and timelines." - }, - "collection": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line (Invoice [Invoice Number] - Payment Due)", - "Salutation", - "Introduction (Reference invoice number and due date)", - "Account status (Clearly state the outstanding amount)", - "Payment request (Politely request payment)", - "Payment options (Remind them how to pay)", - "Consequences of non-payment (Optional: Briefly mention late fees or further action, depending on letter stage)", - "Call to action (Request payment by a specific date)", - "Closing paragraph (Express hope for prompt payment, offer to discuss)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be firm but professional. Clearly state the amount due, due date, and payment options. The tone may vary depending on how overdue the payment is." - }, - "adjustment": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address (Customer who made a complaint)", - "Subject line (Response to your inquiry - [Reference Number])", - "Salutation", - "Acknowledgment of complaint (Reference their communication and the issue)", - "Investigation findings (Explain the outcome of your investigation)", - "Adjustment offered (Clearly state the resolution: refund, replacement, credit, etc.)", - "Apology (Optional: Express regret for the inconvenience)", - "Preventive measures (Optional: Explain steps taken to prevent recurrence)", - "Closing paragraph (Express hope for continued business, offer further assistance)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be responsive, empathetic, and solution-oriented. Clearly explain the adjustment and any preventive measures taken." - }, - "credit": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address (Applicant)", - "Subject line (Credit Application Status - [Applicant Name])", - "Salutation", - "Introduction (Reference their credit application and the purpose of the letter)", - "Credit decision (Clearly state if credit is approved or denied)", - "If approved: Credit terms (Credit limit, payment terms, interest rates)", - "If denied: Reason for decision (Provide specific, compliant reasons)", - "Requirements (If approved: any further steps or documents needed)", - "Closing paragraph (If approved: Express welcome; If denied: Offer alternative options or appeals process)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be clear, specific, and transparent about the credit decision, terms, limits, or reasons for denial. Ensure compliance with regulations if denying credit." - }, - "follow_up": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line (Following up on [Previous Communication/Meeting])", - "Salutation", - "Reference to previous communication (Mention date, topic, or meeting)", - "Purpose of follow-up (Clearly state why you are writing again)", - "Action items/Next steps (Remind of agreed-upon actions or propose next steps)", - "Provide additional information (Optional)", - "Call to action (If applicable, e.g., request a response, schedule a meeting)", - "Closing paragraph (Reiterate interest, express anticipation)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be clear, specific, and action-oriented. Reference previous communication and clearly state the purpose of your follow-up and desired outcome." - }, - # Default business letter template if subtype is not found - "default": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line", - "Salutation", - "Introduction", - "Body paragraphs", - "Closing paragraph", - "Complimentary close", - "Signature" - ], - "guidance": "Be professional, clear, and concise. Focus on the business purpose of your letter. The tone is typically formal to semi-formal." - } - }, - "cover": { - "standard": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information (if known)", - "Subject line (Job Application - [Your Name] - [Job Title])", - "Salutation (Formal)", - "Introduction (State the position you are applying for, where you saw the advertisement, and a brief statement of enthusiasm)", - "Body paragraph 1 (Highlight skills and experience directly relevant to the job description - often 1-2 key qualifications)", - "Body paragraph 2 (Provide a specific example or anecdote demonstrating your abilities)", - "Body paragraph 3 (Connect your passion/goals to the company's mission/values - optional but effective)", - "Closing paragraph (Reiterate interest, mention enclosed resume, call to action)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be professional, specific about your most relevant qualifications, and clear about your interest in the position. Tailor every cover letter to the specific job and company." - }, - "career_change": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Job Application - [Your Name] - [Job Title])", - "Salutation", - "Introduction (State the position and acknowledge your career transition)", - "Body paragraph 1 (Highlight transferable skills from previous roles)", - "Body paragraph 2 (Explain your motivation for the career change and how your skills apply)", - "Body paragraph 3 (Demonstrate understanding of the new industry/role)", - "Closing paragraph (Reiterate enthusiasm, mention enclosed resume, call to action)", - "Complimentary close", - "Signature" - ], - "guidance": "Focus on transferable skills and explain your career transition. Connect your past experience and new skills directly to the requirements of the target role." - }, - "entry_level": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Job Application - [Your Name] - [Job Title])", - "Salutation", - "Introduction (State the position and your enthusiasm for the opportunity as a recent graduate/entrant)", - "Body paragraph 1 (Highlight relevant education, coursework, GPA if strong)", - "Body paragraph 2 (Describe relevant internships, projects, or volunteer experience)", - "Body paragraph 3 (Showcase soft skills: teamwork, communication, eagerness to learn)", - "Closing paragraph (Reiterate interest, mention attached resume, express availability for interview)", - "Complimentary close", - "Signature" - ], - "guidance": "Emphasize education, relevant internships/projects, and transferable skills gained through academic or extracurricular activities. Show strong potential and enthusiasm." - }, - "executive": { - "structure": [ - "Your contact information", - "Date", - "Recipient's contact information (Senior Executive/Board Member)", - "Subject line (Executive Application - [Your Name] - [Position])", - "Salutation (Formal)", - "Introduction (State position applying for, brief summary of executive profile)", - "Body paragraph 1 (Highlight strategic leadership experience and key achievements)", - "Body paragraph 2 (Discuss relevant industry expertise and market insights)", - "Body paragraph 3 (Describe experience in driving growth, managing teams, achieving results)", - "Closing paragraph (Reiterate interest, express desire to discuss contribution to the organization)", - "Complimentary close (Formal)", - "Signature" - ], - "guidance": "Emphasize strategic leadership experience, significant achievements with measurable results, and industry expertise. Use a confident, authoritative, and forward-looking tone." - }, - "creative": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Application - [Your Name] - [Creative Role])", - "Salutation", - "Creative introduction (Engaging hook related to the role or your passion)", - "Body paragraph 1 (Highlight relevant creative experience and skills)", - "Body paragraph 2 (Reference specific portfolio pieces or projects that showcase your style/abilities)", - "Body paragraph 3 (Describe your creative process or approach)", - "Closing paragraph (Reiterate enthusiasm, mention attached resume/portfolio link, call to action)", - "Complimentary close", - "Signature" - ], - "guidance": "Use a more engaging and expressive style appropriate for a creative role while maintaining professionalism. Highlight specific creative achievements and link to your portfolio." - }, - "technical": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Application - [Your Name] - [Technical Role])", - "Salutation (Formal)", - "Introduction (State position, source, and brief technical interest)", - "Body paragraph 1 (Highlight specific technical skills and proficiencies relevant to the job description)", - "Body paragraph 2 (Describe relevant technical projects or challenges you've solved)", - "Body paragraph 3 (Discuss problem-solving abilities and experience with relevant technologies)", - "Closing paragraph (Reiterate interest, mention attached resume, express availability for technical discussion/interview)", - "Complimentary close (Formal)", - "Signature" - ], - "guidance": "Focus on technical skills, relevant projects, and problem-solving abilities. Use appropriate technical terminology accurately." - }, - "academic": { - "structure": [ - "Your contact information", - "Date", - "Recipient's contact information (Search Committee Chair)", - "Subject line (Application for [Position] - [Your Name])", - "Salutation (Formal)", - "Introduction (State the position, the department, and express your strong interest)", - "Body paragraph 1 (Discuss your research experience, focus on key projects and contributions)", - "Body paragraph 2 (Describe your teaching philosophy and relevant teaching experience)", - "Body paragraph 3 (Mention publications, presentations, grants, and other scholarly contributions)", - "Closing paragraph (Reiterate enthusiasm for joining the faculty, express availability for interview/presentation)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Focus on research experience, teaching philosophy, publications, and contributions to the field. Use a scholarly and professional tone suitable for academia." - }, - "remote": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Remote Application - [Your Name] - [Job Title])", - "Salutation", - "Introduction (State the remote position, source, and enthusiasm for remote work)", - "Body paragraph 1 (Highlight experience working remotely or independently)", - "Body paragraph 2 (Emphasize self-management, time management, and organizational skills required for remote work)", - "Body paragraph 3 (Describe strong written and verbal communication skills, essential for remote collaboration)", - "Closing paragraph (Reiterate interest in the remote role, mention attached resume, express availability for video interview)", - "Complimentary close", - "Signature" - ], - "guidance": "Emphasize self-motivation, excellent communication skills (especially written), time management, and any prior experience working independently or in remote teams." - }, - "referral": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Referral Application - [Your Name] - [Job Title] - Referred by [Referrer's Name])", - "Salutation", - "Referral introduction (Immediately state who referred you and for what position)", - "Body paragraph 1 (Briefly explain your connection to the referrer and how you learned about the role)", - "Body paragraph 2 (Highlight key qualifications relevant to the job description)", - "Body paragraph 3 (Express strong interest in the position and the company)", - "Closing paragraph (Reiterate enthusiasm, mention attached resume, express availability for interview)", - "Complimentary close", - "Signature" - ], - "guidance": "Mention the referral prominently and early. Explain your connection to the referrer and how it aligns with your interest in the role. Still, ensure you highlight your own qualifications." - }, - # Default cover letter template if subtype is not found - "default": { - "structure": [ - "Contact information", - "Date", - "Recipient's information", - "Salutation", - "Introduction", - "Body paragraphs", - "Closing paragraph", - "Complimentary close", - "Signature" - ], - "guidance": "Be professional, specific about your qualifications, and clear about your interest in the position. Tailor your letter to the specific job and company." - } - }, - # Overall default template if letter type is not recognized - "default": { - "structure": [ - "Introduction", - "Body", - "Conclusion" - ], - "guidance": "Be clear, concise, and appropriate for your audience and purpose. This is a generic structure." - } -} - - -def get_template_by_type(letter_type: str, subtype: str = "default") -> Dict[str, Any]: - """ - Get a template for a specific letter type and subtype using a dictionary lookup. - - Args: - letter_type: Type of letter (e.g., "personal", "formal", "business", "cover"). - subtype: Subtype of letter (e.g., "congratulations", "application", "sales"). - Defaults to "default" if no subtype is specified. - - Returns: - Template dictionary with 'structure' (List[str]) and 'guidance' (str). - Returns the default template if the letter type or subtype is not found, - ensuring the return structure is always consistent. - """ - # Get templates for the specific letter type, or the overall default templates - # .get() method is used for safe dictionary access with a default fallback - type_templates = TEMPLATES.get(letter_type, TEMPLATES["default"]) - - # Get the template for the specific subtype, or the default for that letter type - # Chain .get() calls to handle cases where subtype or the type's default is missing - template = type_templates.get(subtype, type_templates.get("default", TEMPLATES["default"])) - - # Ensure the returned template always has 'structure' (as a list) and 'guidance' (as a string) keys. - # This adds robustness in case a template definition is incomplete. - if "structure" not in template or not isinstance(template["structure"], list): - # Fallback structure if missing or incorrect type - template["structure"] = ["Introduction", "Body", "Conclusion"] - # Update guidance to reflect that the structure was defaulted - template["guidance"] = "Generic template structure applied due to missing or invalid definition." - - if "guidance" not in template or not isinstance(template["guidance"], str): - # Fallback guidance if missing or incorrect type - template["guidance"] = "Generic guidance applied due to missing or invalid definition." - - - return template - -# Example usage (for testing purposes) -if __name__ == '__main__': - # Test cases to demonstrate functionality and default handling - print("--- Testing Letter Templates Module ---") - - # Test a known personal letter subtype - personal_congrats = get_template_by_type("personal", "congratulations") - print("\nPersonal Congratulations Template:") - print(f"Structure: {personal_congrats['structure']}") - print(f"Guidance: {personal_congrats['guidance']}") - - # Test a known formal letter subtype - formal_complaint = get_template_by_type("formal", "complaint") - print("\nFormal Complaint Template:") - print(f"Structure: {formal_complaint['structure']}") - print(f"Guidance: {formal_complaint['guidance']}") - - # Test a known business letter subtype - business_sales = get_template_by_type("business", "sales") - print("\nBusiness Sales Template:") - print(f"Structure: {business_sales['structure']}") - print(f"Guidance: {business_sales['guidance']}") - - # Test a known cover letter subtype - cover_entry_level = get_template_by_type("cover", "entry_level") - print("\nCover Entry Level Template:") - print(f"Structure: {cover_entry_level['structure']}") - print(f"Guidance: {cover_entry_level['guidance']}") - - # Test an unknown letter type (should fallback to overall default) - unknown_type = get_template_by_type("unknown_type", "some_subtype") - print("\nUnknown Type Template (Should be Overall Default):") - print(f"Structure: {unknown_type['structure']}") - print(f"Guidance: {unknown_type['guidance']}") - - # Test a known letter type but unknown subtype (should fallback to type's default) - personal_unknown_subtype = get_template_by_type("personal", "unknown_subtype") - print("\nPersonal Unknown Subtype Template (Should be Personal Default):") - print(f"Structure: {personal_unknown_subtype['structure']}") - print(f"Guidance: {personal_unknown_subtype['guidance']}") - - # Test with only letter type (should use type's default) - formal_default = get_template_by_type("formal") - print("\nFormal Default Template (No Subtype Specified):") - print(f"Structure: {formal_default['structure']}") - print(f"Guidance: {formal_default['guidance']}") diff --git a/ToBeMigrated/ai_writers/ai_letter_writer/main.py b/ToBeMigrated/ai_writers/ai_letter_writer/main.py deleted file mode 100644 index 4ec5b5cc..00000000 --- a/ToBeMigrated/ai_writers/ai_letter_writer/main.py +++ /dev/null @@ -1,236 +0,0 @@ -""" -AI Letter Writer - Main Module - -This module provides a comprehensive interface for generating various types of letters -using AI assistance. It supports multiple letter formats, styles, and use cases. -It uses Streamlit for the user interface. -""" - -import streamlit as st -# Assuming these modules exist in a package structure -from .letter_types import ( - business_letters, - personal_letters, - formal_letters, - cover_letters, - recommendation_letters, - complaint_letters, - thank_you_letters, - invitation_letters -) -# Assuming these utility functions exist -from .utils.letter_formatter import format_letter -from .utils.letter_analyzer import analyze_letter_tone, check_formality -from .utils.letter_templates import get_template_by_type - -# Define the letter types and their properties -LETTER_TYPES_CONFIG = [ - { - "id": "business", - "name": "Business Letters", - "icon": "๐Ÿ’ผ", - "description": "Professional correspondence for business contexts.", - "color": "#1E88E5", # Blue 600 - "module": business_letters - }, - { - "id": "personal", - "name": "Personal Letters", - "icon": "๐Ÿ’Œ", - "description": "Heartfelt messages for friends and family.", - "color": "#43A047", # Green 600 - "module": personal_letters - }, - { - "id": "formal", - "name": "Formal Letters", - "icon": "๐Ÿ“œ", - "description": "Official correspondence for institutions and authorities.", - "color": "#5E35B1", # Deep Purple 600 - "module": formal_letters - }, - { - "id": "cover", - "name": "Cover Letters", - "icon": "๐Ÿ“‹", - "description": "Job application letters to showcase your qualifications.", - "color": "#FB8C00", # Orange 600 - "module": cover_letters - }, - { - "id": "recommendation", - "name": "Recommendation Letters", - "icon": "๐Ÿ‘", - "description": "Endorse colleagues, students, or employees.", - "color": "#00ACC1", # Cyan 600 - "module": recommendation_letters - }, - { - "id": "complaint", - "name": "Complaint Letters", - "icon": "โš ๏ธ", - "description": "Address issues with products, services, or situations.", - "color": "#E53935", # Red 600 - "module": complaint_letters - }, - { - "id": "thank_you", - "name": "Thank You Letters", - "icon": "๐Ÿ™", - "description": "Express gratitude for various occasions.", - "color": "#8E24AA", # Purple 600 - "module": thank_you_letters - }, - { - "id": "invitation", - "name": "Invitation Letters", - "icon": "๐ŸŽ‰", - "description": "Invite people to events, interviews, or gatherings.", - "color": "#FFB300", # Amber 600 - "module": invitation_letters - } -] - -# Map letter type IDs to their modules for easy access -LETTER_MODULES_MAP = {config["id"]: config["module"] for config in LETTER_TYPES_CONFIG} - - -def initialize_session_state() -> None: - """Initializes necessary Streamlit session state variables.""" - if "letter_type" not in st.session_state: - st.session_state.letter_type = None - if "letter_subtype" not in st.session_state: - st.session_state.letter_subtype = None # Useful if a letter type has subtypes - if "generated_letter" not in st.session_state: - st.session_state.generated_letter = None - if "letter_metadata" not in st.session_state: - # Store information like sender, recipient, date, subject, tone, etc. - st.session_state.letter_metadata = {} - if "letter_input_data" not in st.session_state: - # Store user inputs for letter generation - st.session_state.letter_input_data = {} - - -def display_letter_type_selection() -> None: - """Displays the letter type selection interface using a grid of styled containers with buttons.""" - - st.markdown("## Select Letter Type") - - # Create a grid layout for the cards (3 columns) - cols = st.columns(3) - - # Display each letter type as a card with a button below it - for i, letter_type_config in enumerate(LETTER_TYPES_CONFIG): - with cols[i % 3]: - # Use markdown to create a styled container for the card appearance - st.markdown( - f""" -
-

{letter_type_config['icon']} {letter_type_config['name']}

-

{letter_type_config['description']}

-
- """, - unsafe_allow_html=True - ) - - # Place the Streamlit button below the styled container - # Make the button expand to the width of the column for better alignment with the card - if st.button( - f"Select {letter_type_config['name']}", - key=f"btn_select_{letter_type_config['id']}", # Unique key for each button - use_container_width=True - ): - st.session_state.letter_type = letter_type_config['id'] - # Clear previous state data when selecting a new type - st.session_state.letter_subtype = None - st.session_state.generated_letter = None - st.session_state.letter_metadata = {} - st.session_state.letter_input_data = {} - st.rerun() - - -def display_letter_interface(letter_type_id: str) -> None: - """ - Displays the interface for the selected letter type by calling the - appropriate module's write function. - - Args: - letter_type_id: The ID string of the selected letter type. - """ - module = LETTER_MODULES_MAP.get(letter_type_id) - - if module: - try: - # Call the main function (e.g., write_letter or main) from the selected module - # Assuming the module has a function that renders its UI and handles generation - module.write_letter() # Assuming the function is named 'write_letter' - except AttributeError: - st.error(f"Module for '{letter_type_id}' does not have a 'write_letter' function.") - except Exception as e: - st.error(f"An error occurred while loading the interface for '{letter_type_id}': {e}") - else: - st.error(f"Letter type module '{letter_type_id}' not found in map.") - - -def write_letter() -> None: - """Main function for the AI Letter Writer interface.""" - - # Page title and description - st.title("โœ‰๏ธ AI Letter Writer") - st.markdown(""" - Create professional, personalized letters for any occasion. Select a letter type below to get started. - Our AI will help you craft the perfect letter with the right tone, structure, and content. - """) - - # Initialize session state on first run - initialize_session_state() - - # Back button logic - only show if a letter type is selected - if st.session_state.letter_type is not None: - if st.button("โ† Back to Letter Types"): - # Reset session state to return to selection - st.session_state.letter_type = None - st.session_state.letter_subtype = None - st.session_state.generated_letter = None - st.session_state.letter_metadata = {} - st.session_state.letter_input_data = {} - st.rerun() # Rerun to show the selection page - - # Main navigation logic - if st.session_state.letter_type is None: - # Display letter type selection if no type is selected - display_letter_type_selection() - else: - # Display the interface for the selected letter type - display_letter_interface(st.session_state.letter_type) - - # --- Placeholder for displaying generated letter and actions --- - # This part would typically be handled within the specific letter type modules - # after the letter is generated. However, if a common display is needed - # after returning from the module function, it would go here, but this - # requires the module function to somehow signal completion or store - # the generated letter in session state. The current structure expects - # the module's write_letter() to handle its entire lifecycle. - - # Example of potentially displaying a generated letter after returning - # (This assumes the module updates st.session_state.generated_letter) - # if st.session_state.generated_letter: - # st.subheader("Generated Letter Preview") - # st.text_area("Your Letter", st.session_state.generated_letter, height=400) - # # Add options like copy, download, analyze, edit, etc. - - -if __name__ == "__main__": - # Run the main letter writing function when the script is executed - write_letter() \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/ai_letter_writer/personal_letter.py b/ToBeMigrated/ai_writers/ai_letter_writer/personal_letter.py deleted file mode 100644 index c0d43f98..00000000 --- a/ToBeMigrated/ai_writers/ai_letter_writer/personal_letter.py +++ /dev/null @@ -1,1121 +0,0 @@ -""" -Personal Letters Module - -This module provides a Streamlit interface for generating various types of personal letters -using AI assistance. It collects user inputs specific to the chosen personal letter subtype, -formats the data, generates a prompt for the AI, calls the AI for content generation, -and displays the formatted letter preview and analysis. -""" - -import streamlit as st -import datetime -from typing import Dict, Any, List - -# Assuming these modules and functions exist and are correctly imported in a real application. -# Placeholder functions are included below for demonstration purposes if actual imports are not available. -# from ..utils.letter_formatter import format_letter, get_letter_preview_html -# from ..utils.letter_analyzer import analyze_letter_tone, check_formality, get_readability_metrics, suggest_improvements -# from ..utils.letter_templates import get_template_by_type -# from ....gpt_providers.text_generation.main_text_generation import llm_text_gen - -# --- Placeholder Functions (Replace with actual imports in a real app) --- -# These placeholders mimic the expected behavior of the imported functions -# to allow the rest of the code structure to be reviewed and run without dependencies. - -def format_letter(content: str, metadata: Dict[str, Any], letter_type: str = "personal") -> str: - """Placeholder: Returns the content as is.""" - return content - -def get_letter_preview_html(content: str, metadata: Dict[str, Any], letter_type: str = "personal") -> str: - """Placeholder: Generates a basic HTML preview for personal letters.""" - # Basic HTML structure with inline styles for a personal letter feel - formatted_paragraphs = "".join(f"

{p.strip()}

" for p in content.split("\n\n") if p.strip()) - return f""" -
-
- {metadata.get('date', 'Date')} -
- -
- {formatted_paragraphs if formatted_paragraphs else "

Letter content goes here...

"} -
- -
-

{metadata.get('complimentary_close', 'Sincerely,')}

-

{metadata.get('sender_name', 'Sender Name')}

-
-
- """ - -def analyze_letter_tone(content: str) -> Dict[str, float]: - """Placeholder: Returns dummy tone analysis.""" - # Returns scores between 0.0 and 1.0 - return {"warm": 0.9, "sincere": 0.8, "friendly": 0.7} - -def check_formality(content: str) -> float: - """Placeholder: Returns a dummy formality score (0.0 to 1.0).""" - # Personal letters are typically less formal - return 0.30 # Example: 30% formal - -def get_readability_metrics(content: str) -> Dict[str, Any]: - """Placeholder: Returns dummy readability metrics.""" - word_count = len(content.split()) - # Estimate reading time in seconds (assuming ~200 words per minute) - reading_time_seconds = round((word_count / 200) * 60) - return { - "word_count": word_count, - "sentence_count": max(1, content.count('. ') + content.count('! ') + content.count('? ')), # Simple sentence count - "avg_words_per_sentence": round(word_count / max(1, content.count('. ') + content.count('! ') + content.count('? ')), 2), - "flesch_reading_ease": 70.0, # Dummy score for personal letters - "reading_level": "Easy", # Dummy level - "reading_time_seconds": reading_time_seconds # Added reading time - } - -def suggest_improvements(content: str, letter_type: str) -> List[str]: - """Placeholder: Returns dummy improvement suggestions.""" - if len(content) < 100: - return ["Suggestion: The letter seems very brief. Consider adding more personal details or anecdotes."] - elif "generic" in content.lower(): - return ["Suggestion: Try to make the language more specific and personal to your relationship."] - else: - return ["Suggestion: Read it aloud to check if it sounds like your natural voice."] - -def get_template_by_type(letter_type: str, subtype: str = "default") -> Dict[str, Any]: - """Placeholder: Returns a generic template.""" - # This should ideally come from the actual letter_templates module - return {"structure": ["Greeting", "Body", "Closing"], "guidance": "Generic guidance for a personal letter."} - -def llm_text_gen(prompt: str) -> str: - """Placeholder: Simulates LLM text generation.""" - # In a real app, this would call the actual LLM API - st.info(f"LLM Prompt:\n```\n{prompt}\n```") # Display prompt for debugging - # Return a dummy generated letter based on the prompt - return f"Hi [Generated Recipient Name],\n\nThis is a sample personal letter generated based on the following details:\n\n{prompt}\n\n[Generated content based on the prompt would go here, following the requested structure, tone, emotion, and style.]\n\nBest,\n[Generated Your Name]" - -# --- End Placeholder Functions --- - -def write_letter(): - """ - Main function for the Personal Letters interface. Sets up the Streamlit page - and handles navigation between subtype selection and the letter form. - """ - - # Page title and description - st.title("๐Ÿ’Œ Personal Letter Writer") - st.markdown(""" - Create heartfelt personal letters for friends, family, and loved ones. Select a letter type below to get started. - """) - - # Initialize Streamlit session state variables specific to the personal module. - # These variables persist across reruns and store the user's progress and data. - if "personal_letter_subtype" not in st.session_state: - st.session_state.personal_letter_subtype = None # Stores the ID of the selected personal letter type - if "personal_letter_generated" not in st.session_state: - st.session_state.personal_letter_generated = False # Flag to indicate if a letter has been generated - if "personal_letter_content" not in st.session_state: - st.session_state.personal_letter_content = None # Stores the generated letter content - if "personal_letter_metadata" not in st.session_state: - st.session_state.personal_letter_metadata = {} # Stores metadata like sender/recipient info - if "personal_letter_form_data" not in st.session_state: - st.session_state.personal_letter_form_data = {} # Stores the user's input from the form fields - - - # Back button logic for subtypes. This button appears when a subtype is selected, - # allowing the user to return to the subtype selection screen. - if st.session_state.personal_letter_subtype is not None: - if st.button("โ† Back to Personal Letter Types"): - # Reset session state variables for this module to their initial state - # This clears the current form data and generated letter. - st.session_state.personal_letter_subtype = None - st.session_state.personal_letter_generated = False - st.session_state.personal_letter_content = None - st.session_state.personal_letter_metadata = {} - st.session_state.personal_letter_form_data = {} - st.rerun() # Rerun the app to update the UI based on the changed state - - # Main navigation logic within the personal module. - # If no subtype is selected, show the selection grid. Otherwise, show the form for the selected subtype. - if st.session_state.personal_letter_subtype is None: - # Display personal letter type selection if no subtype is selected - display_personal_letter_types() - else: - # Display the interface form for the selected personal letter subtype - display_personal_letter_form(st.session_state.personal_letter_subtype) - - -def display_personal_letter_types(): - """ - Displays the personal letter type selection interface using a grid of styled buttons. - Each button represents a specific type of personal letter the user can choose to write. - """ - - st.markdown("## Select Personal Letter Type") - - # Define personal letter types with their details (ID, Name, Icon, Description, Color) - # This list is used to generate the selection buttons. - personal_letter_types = [ - { - "id": "congratulations", - "name": "Congratulations", - "icon": "๐ŸŽ‰", - "description": "Celebrate achievements and milestones", - "color": "#43A047" # Green - }, - { - "id": "thank_you", - "name": "Thank You", - "icon": "๐Ÿ™", - "description": "Express gratitude for gifts, help, or support", - "color": "#1E88E5" # Blue - }, - { - "id": "sympathy", - "name": "Sympathy", - "icon": "๐Ÿ’", - "description": "Offer comfort during difficult times", - "color": "#5E35B1" # Deep Purple - }, - { - "id": "apology", - "name": "Apology", - "icon": "๐Ÿ™‡", - "description": "Say sorry and make amends", - "color": "#FB8C00" # Orange - }, - { - "id": "invitation", - "name": "Invitation", - "icon": "โœ‰๏ธ", - "description": "Invite someone to an event or gathering", - "color": "#EC407A" # Pink - }, - { - "id": "friendship", - "name": "Friendship", - "icon": "๐Ÿ‘ซ", - "description": "Nurture and celebrate friendships", - "color": "#00ACC1" # Cyan - }, - { - "id": "love", - "name": "Love Letter", - "icon": "โค๏ธ", - "description": "Express romantic feelings and affection", - "color": "#E53935" # Red - }, - { - "id": "encouragement", - "name": "Encouragement", - "icon": "๐ŸŒŸ", - "description": "Offer support and motivation", - "color": "#FFB300" # Amber - }, - { - "id": "farewell", - "name": "Farewell", - "icon": "๐Ÿ‘‹", - "description": "Say goodbye to friends or colleagues", - "color": "#8E24AA" # Purple - } - ] - - # Inject custom CSS to style the Streamlit buttons to look like cards. - # This provides a visually appealing selection grid. - st.markdown(""" - - """, unsafe_allow_html=True) - - - # Create a grid layout for the buttons using Streamlit columns (3 columns per row). - cols = st.columns(3) - - # Display each letter type as a button. - for i, letter_type_config in enumerate(personal_letter_types): - with cols[i % 3]: # Place buttons in columns, wrapping every 3 - # Use a unique key for each button based on its ID - # The button label uses markdown and HTML for icon, name, and description - if st.button( - f"### {letter_type_config['icon']} {letter_type_config['name']}\n\n

{letter_type_config['description']}

", - key=f"btn_personal_select_{letter_type_config['id']}", # Unique key for each button - unsafe_allow_html=True # Allow markdown and HTML in the button label - ): - # When a button is clicked, update the session state to the selected subtype ID - st.session_state.personal_letter_subtype = letter_type_config['id'] - # Clear previous data related to letter generation when selecting a new type - st.session_state.personal_letter_generated = False - st.session_state.personal_letter_content = None - st.session_state.personal_letter_metadata = {} - st.session_state.personal_letter_form_data = {} # Clear previous form data - st.rerun() # Rerun the app to switch to the form for the selected subtype - - # Apply specific background colors to buttons using their keys and custom CSS - # This requires injecting CSS after the buttons are rendered. - # Note: This is a common Streamlit workaround for styling individual buttons dynamically. - button_styles = "" - for letter_type_config in personal_letter_types: - button_styles += f""" - div.stButton > button[data-testid="stButton"][kind="primary"][sf-key*="btn_personal_select_{letter_type_config['id']}"] {{ - background-color: {letter_type_config['color']}; - }} - div.stButton > button[data-testid="stButton"][kind="primary"][sf-key*="btn_personal_select_{letter_type_config['id']}"]:hover {{ - background-color: {letter_type_config['color']}D9; /* Slightly darker on hover */ - }} - """ - st.markdown(f"", unsafe_allow_html=True) - - -def display_personal_letter_form(subtype: str): - """ - Displays the form for the selected personal letter subtype. This includes - input fields specific to the subtype, personal information fields, - tone and style options, and tabs for previewing and analyzing the generated letter. - - Args: - subtype: The ID string of the selected personal letter subtype. - """ - - # Get the template for the selected subtype from the templates module. - # This provides structural guidance and general advice for the LLM. - template = get_template_by_type("personal", subtype) - - # Display the form title, icon, description, and guidance. - st.markdown(f"## {get_icon_for_subtype(subtype)} {get_name_for_subtype(subtype)}") - st.markdown(f"*{get_description_for_subtype(subtype)}*") - st.info(f"**Guidance:** {template.get('guidance', 'No specific guidance available.')}") - - # Use a Streamlit form to group inputs. This helps manage state and - # prevents the app from rerunning every time a single input widget changes, - # improving performance for forms with many inputs. - with st.form(key=f"personal_letter_form_{subtype}"): - # Create tabs to organize the form sections. - tab1, tab2, tab3 = st.tabs(["Letter Details", "Personal Info", "Preview & Export"]) - - # Dictionary to store form data collected from all tabs - form_data = {} - - # --- Tab 1: Letter Details --- - with tab1: - st.markdown("### Letter Content Details") - - # Get the configuration for subtype-specific input fields. - fields = get_fields_for_subtype(subtype) - - # Create form fields dynamically based on the subtype configuration. - # Populate default values from session state to retain user input across reruns. - for field in fields: - # Retrieve default value from session state, falling back to empty string or specific defaults - default_value = st.session_state.personal_letter_form_data.get(field["id"], "") - - # Create the appropriate Streamlit input widget based on the field type. - # Use a unique key for each widget to ensure state is managed correctly. - if field["type"] == "text": - form_data[field["id"]] = st.text_input(field["label"], value=default_value, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "textarea": - form_data[field["id"]] = st.text_area(field["label"], value=default_value, help=field.get("help", ""), height=150, key=f"{subtype}_{field['id']}") - elif field["type"] == "date": - # Handle date input default value: use stored value if valid, otherwise use today's date. - try: - # Attempt to parse stored value as date, fallback to today if unsuccessful - default_date = datetime.datetime.strptime(str(default_value), "%Y-%m-%d").date() if default_value else datetime.date.today() - except (ValueError, TypeError): - default_date = datetime.date.today() # Fallback to today's date - form_data[field["id"]] = st.date_input(field["label"], value=default_date, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "select": - # Determine the index of the default value in the options list. - try: - default_index = field["options"].index(default_value) if default_value in field["options"] else 0 - except ValueError: - default_index = 0 # Default to the first option if the stored value is not valid - form_data[field["id"]] = st.selectbox(field["label"], field["options"], index=default_index, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - elif field["type"] == "slider": - # Use the default value from session state or the field config's default - default_slider_value = st.session_state.personal_letter_form_data.get(field["id"], field.get("default", (field["min"] + field["max"]) / 2)) # Fallback to midpoint if no default specified - form_data[field["id"]] = st.slider(field["label"], field["min"], field["max"], default_slider_value, help=field.get("help", ""), key=f"{subtype}_{field['id']}") - - - # Section for selecting letter tone and style characteristics. - st.markdown("### Tone and Style") - col1, col2 = st.columns(2) - - with col1: - # Selectbox for Tone, using subtype-specific tones and session state default. - tone_options = ["Formal", "Warm", "Casual", "Intimate", "Playful"] - default_tone = st.session_state.personal_letter_form_data.get("tone", get_default_tone_for_subtype(subtype)) - form_data["tone"] = st.select_slider( - "Tone", - options=tone_options, - value=default_tone, # select_slider uses value directly - help="Select the overall tone for your letter.", - key=f"{subtype}_tone" - ) - - # Selectbox for Emotional Tone, using subtype-specific emotions and session state default. - emotion_options = get_emotions_for_subtype(subtype) - default_emotion = st.session_state.personal_letter_form_data.get("emotion", emotion_options[0] if emotion_options else "Sincere") - form_data["emotion"] = st.selectbox( - "Emotional Tone", - emotion_options, - index=emotion_options.index(default_emotion) if default_emotion in emotion_options else 0, - help="Select the primary emotional tone for your letter.", - key=f"{subtype}_emotion" - ) - - with col2: - # Slider for Length, using session state default. - length_options = ["Brief", "Standard", "Detailed", "Extensive"] - default_length = st.session_state.personal_letter_form_data.get("length", "Standard") - form_data["length"] = st.select_slider( - "Length", - options=length_options, - value=default_length, - help="Select the desired length of your letter.", - key=f"{subtype}_length" - ) - - # Selectbox for Writing Style, using session state default. - style_options = ["Straightforward", "Descriptive", "Reflective", "Poetic", "Conversational"] - default_style = st.session_state.personal_letter_form_data.get("style", "Conversational") - form_data["style"] = st.selectbox( - "Writing Style", - style_options, - index=style_options.index(default_style) if default_style in style_options else 0, - help="Select the overall writing style for your letter.", - key=f"{subtype}_style" - ) - - # Section for adding personal touches. - st.markdown("### Personal Touches") - - # Checkbox and textarea for including a shared memory. - default_include_memory = st.session_state.personal_letter_form_data.get("include_memory", True) - include_memory = st.checkbox("Include a shared memory", value=default_include_memory, help="Include a specific memory you share with the recipient.", key=f"{subtype}_include_memory") - form_data["shared_memory"] = None # Initialize to None - if include_memory: - default_shared_memory = st.session_state.personal_letter_form_data.get("shared_memory", "") - form_data["shared_memory"] = st.text_area( - "Shared Memory Details", - value=default_shared_memory, - height=100, - help="Describe the shared memory.", - placeholder="e.g., Remember when we went hiking last summer and got caught in the rain?", - key=f"{subtype}_shared_memory" - ) - - # Checkbox and textarea for including future plans/wishes. - default_include_future = st.session_state.personal_letter_form_data.get("include_future", True) - include_future = st.checkbox("Include future plans or wishes", value=default_include_future, help="Mention upcoming plans or express wishes for their future.", key=f"{subtype}_include_future") - form_data["future_plans"] = None # Initialize to None - if include_future: - default_future_plans = st.session_state.personal_letter_form_data.get("future_plans", "") - form_data["future_plans"] = st.text_area( - "Future Plans or Wishes Details", - value=default_future_plans, - height=100, - help="Describe the future plans or wishes.", - placeholder="e.g., I'm looking forward to seeing you at the family reunion next month.", - key=f"{subtype}_future_plans" - ) - - # Advanced options expander for less common personal touches. - with st.expander("Advanced Options"): - # Checkbox and text input for including a quote. - default_include_quote = st.session_state.personal_letter_form_data.get("include_quote", False) - include_quote = st.checkbox("Include a quote or saying", value=default_include_quote, help="Add a relevant quote, saying, or verse.", key=f"{subtype}_include_quote") - form_data["quote"] = None # Initialize to None - if include_quote: - default_quote = st.session_state.personal_letter_form_data.get("quote", "") - form_data["quote"] = st.text_input( - "Quote or Saying Text", - value=default_quote, - help="Enter the quote or saying.", - placeholder="e.g., 'True friendship is a plant of slow growth.' - George Washington", - key=f"{subtype}_quote" - ) - - # Checkbox and text input for including an inside joke. - default_include_inside_joke = st.session_state.personal_letter_form_data.get("include_inside_joke", False) - include_inside_joke = st.checkbox("Include an inside joke", value=default_include_inside_joke, help="Add a reference only you and the recipient will understand.", key=f"{subtype}_include_inside_joke") - form_data["inside_joke"] = None # Initialize to None - if include_inside_joke: - default_inside_joke = st.session_state.personal_letter_form_data.get("inside_joke", "") - form_data["inside_joke"] = st.text_input( - "Inside Joke Details", - value=default_inside_joke, - help="Describe the inside joke.", - placeholder="e.g., Don't worry, I won't bring up the 'flamingo incident' again!", - key=f"{subtype}_inside_joke" - ) - - - # --- Tab 2: Personal Info --- - with tab2: - # Section for sender and recipient personal information. - col3, col4 = st.columns(2) - - with col3: - st.markdown("### Your Information") - # Input fields for sender's personal details, populated from session state. - form_data["sender_name"] = st.text_input("Your Name", value=st.session_state.personal_letter_form_data.get("sender_name", ""), help="Your full name or how you sign your letters.", key=f"{subtype}_sender_name") - form_data["sender_nickname"] = st.text_input("Your Nickname (Optional)", value=st.session_state.personal_letter_form_data.get("sender_nickname", ""), help="A nickname you use with the recipient, if applicable.", key=f"{subtype}_sender_nickname") - form_data["relationship"] = st.text_input("Your Relationship to Recipient", value=st.session_state.personal_letter_form_data.get("relationship", ""), help="Describe your relationship (e.g., Friend, Sister, Uncle, Partner).", key=f"{subtype}_relationship") - - # Selectbox for relationship duration. - relationship_durations = ["Less than a year", "1-5 years", "5-10 years", "10+ years", "Lifelong"] - default_relationship_duration = st.session_state.personal_letter_form_data.get("relationship_duration", "1-5 years") - form_data["relationship_duration"] = st.selectbox( - "How long have you known the recipient?", - relationship_durations, - index=relationship_durations.index(default_relationship_duration) if default_relationship_duration in relationship_durations else 0, - help="Select the approximate duration of your relationship.", - key=f"{subtype}_relationship_duration" - ) - - with col4: - st.markdown("### Recipient Information") - # Input fields for recipient's personal details, populated from session state. - form_data["recipient_name"] = st.text_input("Recipient's Name", value=st.session_state.personal_letter_form_data.get("recipient_name", ""), help="The recipient's full name or how you address them.", key=f"{subtype}_recipient_name") - form_data["recipient_nickname"] = st.text_input("Recipient's Nickname (Optional)", value=st.session_state.personal_letter_form_data.get("recipient_nickname", ""), help="A nickname you use for the recipient, if applicable.", key=f"{subtype}_recipient_nickname") - - # Multiselect for recipient characteristics. - recipient_traits_options = ["Funny", "Serious", "Creative", "Practical", "Emotional", "Reserved", "Outgoing", "Thoughtful", "Adventurous", "Kind", "Intelligent", "Quiet", "Loud", "Supportive", "Independent"] # Expanded options - default_recipient_traits = st.session_state.personal_letter_form_data.get("recipient_traits", []) # Default to empty list - # Ensure default_recipient_traits is a list for multiselect - if isinstance(default_recipient_traits, str): - default_recipient_traits = [trait.strip() for trait in default_recipient_traits.split(',') if trait.strip()] - - form_data["recipient_traits"] = st.multiselect( - "Recipient's Characteristics", - recipient_traits_options, - default=default_recipient_traits, - help="Select traits that describe the recipient. This helps tailor the language.", - key=f"{subtype}_recipient_traits" - ) - - # Text area for special considerations. - form_data["special_considerations"] = st.text_area( - "Special Considerations (Optional)", - value=st.session_state.personal_letter_form_data.get("special_considerations", ""), - height=100, - help="Mention any sensitive topics to avoid or specific circumstances to acknowledge (e.g., they recently lost a pet, celebrating sobriety).", - placeholder="e.g., Recently lost a job, celebrating sobriety milestone", - key=f"{subtype}_special_considerations" - ) - - - # --- Tab 3: Preview & Export --- - with tab3: - # Instructions for the user before generation. - if not st.session_state.personal_letter_generated: - st.info("Complete the letter details and click 'Generate Letter' to preview your letter.") - - # The Generate button is placed inside the form. Clicking it submits the form - # and triggers the code block below it to run. - generate_button = st.form_submit_button("Generate Letter", type="primary") - - if generate_button: - # Action to perform when the form is submitted via the Generate button. - - # Store the current state of all form inputs in session state. - # This allows retaining user inputs even after generation or regeneration. - st.session_state.personal_letter_form_data = form_data.copy() - - # Prepare metadata specifically for the formatter and analysis functions. - # This includes structured contact info, dates, salutation, etc. - metadata = { - "sender_name": form_data.get("sender_name", ""), - "sender_nickname": form_data.get("sender_nickname", ""), - "recipient_name": form_data.get("recipient_name", ""), - "recipient_nickname": form_data.get("recipient_nickname", ""), - "relationship": form_data.get("relationship", ""), - "relationship_duration": form_data.get("relationship_duration", ""), - # Convert list of traits back to a string for metadata if needed by formatter/analyzer - "recipient_traits": ", ".join(form_data.get("recipient_traits", [])) if form_data.get("recipient_traits") else "", - "special_considerations": form_data.get("special_considerations", ""), - "date": datetime.datetime.now().strftime("%B %d, %Y"), # Use current date for the letter - } - # Determine salutation based on nickname preference - recipient_display_name = metadata["recipient_nickname"] if metadata.get("recipient_nickname") else metadata["recipient_name"] - metadata["salutation"] = f"Dear {recipient_display_name}," if recipient_display_name else "Dear Friend," # Fallback salutation - # Determine complimentary close based on tone/formality - simple logic for now - metadata["complimentary_close"] = "Warmly," if form_data.get("tone") in ["Warm", "Intimate", "Playful"] else "Sincerely," - - - st.session_state.personal_letter_metadata = metadata.copy() - - - # --- Letter Generation Logic --- - # Check for minimal required fields before attempting generation. - if not form_data.get("sender_name") or not form_data.get("recipient_name"): - st.error("Please provide at least your name and the recipient's name.") - else: - # Display a spinner while the AI generates the letter. - with st.spinner("Generating your personal letter..."): - # Combine all necessary data into a single dictionary for the generation function. - # This includes both form data and metadata. - # Note: tone, emotion, length, style are already in form_data - generation_data = { - "subtype": subtype, - **form_data, # Includes all collected form inputs - **metadata # Includes structured sender/recipient/date/relationship info - } - - # Call the letter generation function with the combined data. - letter_content = generate_personal_letter(generation_data) - - # Store the generated letter content and update the generated flag. - st.session_state.personal_letter_content = letter_content - st.session_state.personal_letter_generated = True - - # Rerun the app to exit the form block and display the generated letter section. - # This rerun happens automatically on form submission, but explicit state updates - # ensure the display logic reacts correctly. - # st.rerun() # Rerun is handled by form submission - - # --- Display Generated Letter and Analysis --- - # This block executes if a letter has been generated and stored in session state. - if st.session_state.personal_letter_generated and st.session_state.personal_letter_content is not None: - letter_content = st.session_state.personal_letter_content - metadata = st.session_state.personal_letter_metadata - - # Create tabs for different views of the generated letter. - preview_tab1, preview_tab2, preview_tab3 = st.tabs(["Formatted Preview", "Plain Text", "Analysis"]) - - with preview_tab1: - st.markdown("### Letter Preview") - # Generate and display the HTML preview of the letter using the formatter utility. - # Pass letter_type="personal" to the formatter. - html_preview = get_letter_preview_html(letter_content, metadata, letter_type="personal") - st.markdown(html_preview, unsafe_allow_html=True) - - # Download button for the plain text version of the letter. - file_name_suffix = metadata.get('recipient_name', 'personal').replace(' ', '_').lower() - st.download_button( - label="Download as Text", - data=letter_content, - file_name=f"{subtype}_letter_to_{file_name_suffix}_{datetime.datetime.now().strftime('%Y%m%d')}.txt", - mime="text/plain" - ) - - with preview_tab2: - st.markdown("### Plain Text Content") - # Display the raw generated letter content in a text area. - st.text_area("Letter Content", letter_content, height=400, key=f"{subtype}_plain_text_display") - - # Button to copy the plain text content to the clipboard. - st.button("Copy Plain Text (Manual Copy from above)", help="Select and copy the text from the box above.", key=f"{subtype}_copy_plain_text_instruction") - - - with preview_tab3: - st.markdown("### Letter Analysis") - # Perform and display analysis of the generated letter using utility functions. - - # Analyze tone, formality, and readability. - tone_analysis = analyze_letter_tone(letter_content) - formality_score = check_formality(letter_content) # Returns score between 0.0 and 1.0 - readability_metrics = get_readability_metrics(letter_content) - # Get improvement suggestions, passing the letter type for context. - improvement_suggestions = suggest_improvements(letter_content, "personal") # Pass "personal" as letter_type - - # Display analysis results in two columns. - col5, col6 = st.columns(2) - - with col5: - st.markdown("#### Tone Analysis") - # Display each tone score. - if tone_analysis: - for tone, score in tone_analysis.items(): - st.write(f"- **{tone.capitalize()}:** {score:.2f}") - else: - st.info("Tone analysis not available.") - - - st.markdown("#### Formality") - # Display formality score as a percentage and a progress bar. - st.progress(formality_score) # Progress bar expects a value between 0.0 and 1.0 - st.write(f"Formality Score: {formality_score * 100:.0f}/100") # Display as a percentage (0-100) - - - with col6: - st.markdown("#### Readability Metrics") - # Display various readability metrics. - if readability_metrics: - st.write(f"**Word Count:** {readability_metrics.get('word_count', 'N/A')} words") - st.write(f"**Sentence Count:** {readability_metrics.get('sentence_count', 'N/A')} sentences") - st.write(f"**Avg Words per Sentence:** {readability_metrics.get('avg_words_per_sentence', 'N/A')}") - st.write(f"**Flesch Reading Ease:** {readability_metrics.get('flesch_reading_ease', 'N/A')}") - st.write(f"**Reading Level:** {readability_metrics.get('reading_level', 'N/A')}") - # Display estimated reading time. - st.write(f"**Estimated Reading Time:** {readability_metrics.get('reading_time_seconds', 'N/A')} seconds") - else: - st.info("Readability metrics not available.") - - st.markdown("#### Suggestions for Improvement") - # Display improvement suggestions. - if improvement_suggestions: - # Iterate through the list and display each suggestion as a list item. - for suggestion in improvement_suggestions: - st.markdown(f"- {suggestion}") - else: - st.info("No specific suggestions for improvement found.") - - # Button to regenerate the letter. Placed outside the form so it's always visible - # after generation, without needing to resubmit the form first. - # Keep the form data in session state so the user's inputs are retained. - if st.button("Regenerate Letter", key=f"{subtype}_regenerate_button"): - # Reset the generated state and content to allow the form to be displayed again. - st.session_state.personal_letter_generated = False - st.session_state.personal_letter_content = None # Clear generated content - # st.session_state.personal_letter_form_data is already populated from the form submit - st.rerun() # Rerun to show the form with previous inputs - - -def generate_personal_letter(data: Dict[str, Any]) -> str: - """ - Generates a personal letter using the LLM by constructing a detailed prompt - based on the collected user inputs and metadata. - - Args: - data: A dictionary containing all collected user inputs and metadata - (from the form and session state). - - Returns: - The generated letter content as a string, or an error message if generation fails. - """ - - # Extract key generation parameters from the data dictionary. - subtype = data.get("subtype", "default") - tone = data.get("tone", "Warm") - emotion = data.get("emotion", "Sincere") - length = data.get("length", "Standard") - style = data.get("style", "Conversational") - - # Get template guidance and structure to include in the prompt. - template = get_template_by_type("personal", subtype) - template_guidance = template.get("guidance", "Follow standard personal letter practices.") - template_structure = template.get("structure", ["Greeting", "Body", "Closing"]) - - # Build the prompt string step-by-step, including all relevant details - # from the user's input and selected options. - prompt_parts = [ - f"Write a {length.lower()} personal {get_name_for_subtype(subtype)} letter with a {tone.lower()}, {emotion.lower()} tone and {style.lower()} writing style.", - f"Purpose: {get_description_for_subtype(subtype)}", - f"Recipient: {data.get('recipient_name', '')} ({data.get('recipient_nickname', '') if data.get('recipient_nickname') else 'no nickname'})", - f"Sender: {data.get('sender_name', '')} ({data.get('sender_nickname', '') if data.get('sender_nickname') else 'no nickname'})", - f"Relationship: {data.get('relationship', 'Not specified')} for {data.get('relationship_duration', 'Not specified')}", - ] - - # Add recipient traits if provided. - if data.get('recipient_traits'): - # Ensure traits are listed nicely in the prompt - traits_list = ", ".join(data['recipient_traits']) if isinstance(data['recipient_traits'], list) else data['recipient_traits'] - if traits_list: - prompt_parts.append(f"Recipient's Characteristics: {traits_list}") - - # Add subtype-specific details from the collected form data. - subtype_fields = get_fields_for_subtype(subtype) - if subtype_fields: - prompt_parts.append("\nKey Details to Include:") - for field in subtype_fields: - field_value = data.get(field["id"]) - # Include the field's label and value in the prompt only if the value is not empty. - if field_value: - # Format date fields nicely for the prompt if they are date objects. - if field["type"] == "date": - try: - field_value_str = field_value.strftime("%B %d, %Y") - except AttributeError: - field_value_str = str(field_value) # Fallback if not a date object - else: - field_value_str = str(field_value) - - prompt_parts.append(f"- {field['label']}: {field_value_str}") - - - # Add personal touches if included. - if data.get('include_memory') and data.get('shared_memory'): - prompt_parts.append(f"Include this shared memory: {data['shared_memory']}") - - if data.get('include_future') and data.get('future_plans'): - prompt_parts.append(f"Include these future plans or wishes: {data['future_plans']}") - - if data.get('include_quote') and data.get('quote'): - prompt_parts.append(f"Include this quote: {data['quote']}") - - if data.get('include_inside_joke') and data.get('inside_joke'): - prompt_parts.append(f"Include this inside joke: {data['inside_joke']}") - - # Add special considerations if provided. - if data.get('special_considerations'): - prompt_parts.append(f"\nSpecial considerations: {data['special_considerations']}") - - # Add the template structure and overall guidance to the prompt. - # This helps the LLM understand the desired layout and writing style. - prompt_parts.append("\nFollow this general structure:") - for i, section in enumerate(template_structure): - prompt_parts.append(f"{i+1}. {section}") - prompt_parts.append(f"\nOverall Writing Guidance: {template_guidance}") - - # Add final instructions for the LLM. - prompt_parts.append("\nMake the letter personal, authentic, and appropriate for the relationship described. Use natural language that sounds like it was written by a real person, not AI.") - - - # Combine all prompt parts into a single string. - final_prompt = "\n".join(prompt_parts) - - # Call the LLM text generation function with the constructed prompt. - try: - letter_content = llm_text_gen(final_prompt) - return letter_content - except Exception as e: - # Catch any errors during LLM generation and display an error message. - st.error(f"Error generating letter: {str(e)}") - return "Error generating letter. Please try again." - - -# --- Helper functions (from original code, slightly enhanced) --- - -def get_icon_for_subtype(subtype: str) -> str: - """Maps a personal letter subtype ID to a relevant emoji icon.""" - icons = { - "congratulations": "๐ŸŽ‰", - "thank_you": "๐Ÿ™", - "sympathy": "๐Ÿ’", - "apology": "๐Ÿ™‡", - "invitation": "โœ‰๏ธ", - "friendship": "๐Ÿ‘ซ", - "love": "โค๏ธ", - "encouragement": "๐ŸŒŸ", - "farewell": "๐Ÿ‘‹" - } - return icons.get(subtype, "๐Ÿ“") # Default icon - -def get_name_for_subtype(subtype: str) -> str: - """Maps a personal letter subtype ID to its display name.""" - names = { - "congratulations": "Congratulations Letter", - "thank_you": "Thank You Letter", - "sympathy": "Sympathy Letter", - "apology": "Apology Letter", - "invitation": "Invitation Letter", - "friendship": "Friendship Letter", - "love": "Love Letter", - "encouragement": "Encouragement Letter", - "farewell": "Farewell Letter" - } - return names.get(subtype, "Personal Letter") # Default name - -def get_description_for_subtype(subtype: str) -> str: - """Maps a personal letter subtype ID to a brief description.""" - descriptions = { - "congratulations": "Celebrate achievements and milestones with a heartfelt congratulations letter.", - "thank_you": "Express gratitude for gifts, help, or support with a sincere thank you letter.", - "sympathy": "Offer comfort and support during difficult times with a thoughtful sympathy letter.", - "apology": "Say sorry and make amends with a sincere apology letter.", - "invitation": "Invite someone to an event or gathering with a personal invitation letter.", - "friendship": "Nurture and celebrate friendships with a meaningful letter.", - "love": "Express romantic feelings and affection with a heartfelt love letter.", - "encouragement": "Offer support and motivation with an uplifting encouragement letter.", - "farewell": "Say goodbye to friends or colleagues with a touching farewell letter." - } - return descriptions.get(subtype, "Create a personalized letter for your specific needs.") # Default description - -def get_fields_for_subtype(subtype: str) -> List[Dict[str, Any]]: - """ - Provides a list of input field configurations specific to each personal letter subtype. - Each dictionary in the list defines a form input field, including its ID, label, - type, and optional properties like help text, options (for select/slider), - min/max values (for slider/number), and a default value. - """ - - # Define subtype-specific fields. - if subtype == "congratulations": - return [ - { - "id": "achievement", - "label": "Achievement Being Celebrated", - "type": "text", - "help": "What specific achievement or milestone are you congratulating them for? Be as specific as possible." - }, - { - "id": "significance", - "label": "Significance of Achievement", - "type": "textarea", - "help": "Explain why this achievement is significant to you or to them. How does it make you feel?" - } - ] - elif subtype == "thank_you": - return [ - { - "id": "reason", - "label": "Reason for Thanks", - "type": "text", - "help": "What specific gift, act of kindness, or support are you thanking them for?" - }, - { - "id": "impact", - "label": "Impact of Their Action", - "type": "textarea", - "help": "Explain how their action or gift specifically helped or affected you. Be sincere." - } - ] - elif subtype == "sympathy": - return [ - { - "id": "reason", - "label": "Reason for Sympathy", - "type": "text", - "help": "What loss or difficult situation are you expressing sympathy for? (e.g., Loss of a loved one, difficult time)" - }, - { - "id": "relationship_to_affected", - "label": "Recipient's Relationship to the Deceased/Affected (Optional)", - "type": "text", - "help": "What was the recipient's relationship to the person who passed away or is affected, if applicable? (e.g., Their mother, their pet)" - }, - { - "id": "positive_memory", - "label": "Share a Positive Memory (Optional)", - "type": "textarea", - "help": "If appropriate, share a brief, positive memory of the person who was lost or the situation." - }, - { - "id": "offer_of_support", - "label": "Offer of Support (Optional)", - "type": "textarea", - "help": "Offer specific ways you can provide support (e.g., 'I'm here to listen anytime', 'I can help with meals')." - } - ] - elif subtype == "apology": - return [ - { - "id": "reason", - "label": "What You Are Apologizing For", - "type": "textarea", - "help": "Clearly and specifically state what you are apologizing for. Take responsibility." - }, - { - "id": "impact", - "label": "Acknowledge Impact of Actions", - "type": "textarea", - "help": "Show that you understand how your actions affected the recipient and acknowledge their feelings." - }, - { - "id": "amends", - "label": "Proposed Amends or How You Will Make Things Right (Optional)", - "type": "textarea", - "help": "Suggest ways you can make amends or explain what you will do to prevent it from happening again." - } - ] - elif subtype == "invitation": - return [ - { - "id": "event", - "label": "Event Name", - "type": "text", - "help": "What is the name or type of event? (e.g., Birthday Party, Dinner Gathering, Wedding)" - }, - { - "id": "date_time", - "label": "Date and Time", - "type": "text", # Using text for flexibility (e.g., "Saturday, November 18th at 7:00 PM") - "help": "When is the event taking place? Include day, date, and time." - }, - { - "id": "location", - "label": "Location", - "type": "text", - "help": "Where is the event taking place? Include the full address if necessary." - }, - { - "id": "purpose_theme", - "label": "Purpose or Theme (Optional)", - "type": "text", - "help": "Briefly mention the purpose or theme of the event." - }, - { - "id": "rsvp_details", - "label": "RSVP Details", - "type": "textarea", - "help": "Specify how and by when they should RSVP (e.g., 'Please RSVP by November 10th to [Your Email/Phone]')." - } - ] - elif subtype == "friendship": - return [ - { - "id": "occasion", - "label": "Occasion for Writing (Optional)", - "type": "text", - "help": "Is there a specific reason for writing? (e.g., friendship anniversary, just thinking of you)" - }, - { - "id": "valued_aspects", - "label": "Valued Aspects of Friendship", - "type": "textarea", - "help": "What specific qualities or moments do you value most about your friendship with this person?" - }, - { - "id": "recent_update", - "label": "Recent Update or Shared Experience (Optional)", - "type": "textarea", - "help": "Mention something recent you've shared or an update in your life." - } - ] - elif subtype == "love": - return [ - { - "id": "occasion", - "label": "Occasion for Writing (Optional)", - "type": "text", - "help": "Is there a specific reason for writing? (e.g., anniversary, Valentine's Day, just because)" - }, - { - "id": "feelings", - "label": "Feelings to Express", - "type": "textarea", - "help": "Describe the depth and nature of your feelings for your loved one." - }, - { - "id": "special_memories_love", # Added suffix - "label": "Special Memories", - "type": "textarea", - "help": "Recall and describe cherished memories you share." - }, - { - "id": "qualities_loved", - "label": "Qualities You Love and Appreciate", - "type": "textarea", - "help": "Mention specific qualities you adore about them." - } - ] - elif subtype == "encouragement": - return [ - { - "id": "situation", - "label": "Situation Requiring Encouragement", - "type": "textarea", - "help": "Describe the specific challenge or situation the recipient is facing." - }, - { - "id": "strengths", - "label": "Strengths and Abilities to Highlight", - "type": "textarea", - "help": "Remind them of their strengths, resilience, or past successes that will help them through this." - }, - { - "id": "belief_statement", - "label": "Statement of Belief in Them", - "type": "textarea", - "help": "Clearly state your confidence in their ability to overcome the challenge." - } - ] - elif subtype == "farewell": - return [ - { - "id": "reason", - "label": "Reason for Farewell", - "type": "text", - "help": "Why are you or the recipient saying goodbye? (e.g., Moving away, new job, retirement)" - }, - { - "id": "memories_farewell", # Added suffix - "label": "Memories to Mention", - "type": "textarea", - "help": "Share positive memories you have with the recipient." - }, - { - "id": "wishes", - "label": "Future Wishes", - "type": "textarea", - "help": "Express your sincere good wishes for their future endeavors." - }, - { - "id": "stay_in_touch", - "label": "How to Stay in Touch (Optional)", - "type": "textarea", - "help": "Suggest ways to keep in touch (e.g., 'Let's connect on LinkedIn', 'I'll visit when I can')." - } - ] - - # Default fields if subtype is not recognized or no specific fields are defined. - # This provides a basic textarea for general content. - return [ - { - "id": "main_content", - "label": "Main Content", - "type": "textarea", - "help": "Enter the main content you want to include in your personal letter." - } - ] - -def get_default_tone_for_subtype(subtype: str) -> str: - """Maps a personal letter subtype ID to a suggested default tone.""" - tones = { - "congratulations": "Warm", - "thank_you": "Warm", - "sympathy": "Warm", - "apology": "Formal", # Apologies often require a more formal/serious tone initially - "invitation": "Casual", - "friendship": "Casual", - "love": "Intimate", - "encouragement": "Warm", - "farewell": "Warm" - } - return tones.get(subtype, "Warm") # Default tone - -def get_emotions_for_subtype(subtype: str) -> List[str]: - """Maps a personal letter subtype ID to a list of suggested emotional tones.""" - emotions = { - "congratulations": ["Joyful", "Proud", "Excited", "Impressed", "Inspired", "Happy"], - "thank_you": ["Grateful", "Appreciative", "Touched", "Moved", "Thankful", "Humbled"], - "sympathy": ["Compassionate", "Caring", "Supportive", "Empathetic", "Gentle", "Sorrowful"], - "apology": ["Remorseful", "Sincere", "Humble", "Regretful", "Honest", "Contrite"], - "invitation": ["Excited", "Welcoming", "Enthusiastic", "Anticipatory", "Cheerful", "Friendly"], - "friendship": ["Appreciative", "Affectionate", "Nostalgic", "Grateful", "Warm", "Loyal"], - "love": ["Passionate", "Devoted", "Adoring", "Tender", "Affectionate", "Romantic"], - "encouragement": ["Supportive", "Optimistic", "Confident", "Reassuring", "Inspiring", "Hopeful"], - "farewell": ["Nostalgic", "Hopeful", "Bittersweet", "Appreciative", "Reflective", "Fond"] - } - # Return the list of emotions for the subtype, or a default list if not found. - return emotions.get(subtype, ["Sincere", "Warm", "Friendly", "Genuine", "Thoughtful"]) - -# Example of how to run the app (for local development using `streamlit run your_script_name.py`) -# Uncomment the lines below to make this script directly executable. -# if __name__ == "__main__": -# write_letter() diff --git a/ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_analyzer.py b/ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_analyzer.py deleted file mode 100644 index 49854565..00000000 --- a/ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_analyzer.py +++ /dev/null @@ -1,493 +0,0 @@ -""" -Letter Analyzer Utility - -This module provides functions for analyzing letter content, including tone, -formality, readability, and offering basic suggestions for improvement. -Note: The analysis methods provided here are simplified rule-based and -keyword-based approaches. For more sophisticated analysis in a production -environment, consider using advanced Natural Language Processing (NLP) -libraries and models. -""" - -import re -from typing import Dict, Any, Tuple, List - -def analyze_letter_tone(content: str) -> Dict[str, float]: - """ - Analyze the tone of a letter based on the presence of specific keywords - and phrases. - - Args: - content: The letter content to analyze. - - Returns: - Dictionary with tone scores (formal, friendly, assertive, etc.). - Scores are based on the frequency of matching patterns and capped at 1.0. - """ - # This is a simplified version using keyword matching. - # A more sophisticated approach would involve NLP libraries for sentiment and tone analysis. - - # Initialize tone scores - # Scores are arbitrary counts normalized in a simple way - tone_scores = { - "formal": 0.0, - "friendly": 0.0, - "assertive": 0.0, - "respectful": 0.0, - "urgent": 0.0, - "apologetic": 0.0 - } - - # Define patterns for different tones (case-insensitive) - formal_patterns = [ - r"\bI am writing to\b", - r"\bI would like to\b", - r"\bplease find\b", - r"\bregarding\b", - r"\bpursuant to\b", - r"\bhereby\b", - r"\bthus\b", - r"\btherefore\b", - r"\bfurthermore\b", - r"\bconsequently\b", - r"\bnevertheless\b", - r"\bmoreover\b", - r"\benclosed\b", # Added common formal word - r"\bherewith\b" # Added common formal word - ] - - friendly_patterns = [ - r"\bhope you're well\b", - r"\bhope this finds you well\b", - r"\bgreat to hear\b", - r"\blooking forward\b", - r"\bthanks\b", - r"\bappreciate\b", - r"!", # Exclamation points often indicate friendly or excited tone - r"\bexcited\b", - r"\bgreat\b", # Common friendly adjective - r"\bnice\b" # Common friendly adjective - ] - - assertive_patterns = [ - r"\brequire\b", - r"\bmust\b", - r"\bneed\b", - r"\bexpect\b", - r"\bdemand\b", - r"\binsist\b", - r"\bimmediately\b", - r"\baction\b", # Often used in assertive contexts - r"\bresolution\b" # Can imply assertion - ] - - respectful_patterns = [ - r"\brespectfully\b", - r"\bhonored\b", - r"\bplease\b", - r"\bkindly\b", - r"\bgrateful\b", - r"\bthank you\b", - r"\bappreciate\b", - r"\bhumbly\b", # Added respectful word - r"\bapologies\b" # Can show respect for impact - ] - - urgent_patterns = [ - r"\burgent\b", - r"\bas soon as possible\b", - r"\bASAP\b", - r"\bimmediately\b", - r"\bpressing\b", - r"\bcritical\b", - r"\bdeadline\b", - r"\bexpedite\b", # Added urgent word - r"\bpromptly\b" # Added urgent word - ] - - apologetic_patterns = [ - r"\bapologize\b", - r"\bsorry\b", - r"\bregret\b", - r"\bmistake\b", - r"\berror\b", - r"\binconvenience\b", - r"\bfault\b", # Added apologetic word - r"\boversight\b" # Added apologetic word - ] - - # Count pattern matches and update scores (arbitrary weighting) - # A simple count multiplied by a factor acts as a basic indicator - for pattern in formal_patterns: - tone_scores["formal"] += len(re.findall(pattern, content, re.IGNORECASE)) * 0.2 - - for pattern in friendly_patterns: - tone_scores["friendly"] += len(re.findall(pattern, content, re.IGNORECASE)) * 0.2 - - for pattern in assertive_patterns: - tone_scores["assertive"] += len(re.findall(pattern, content, re.IGNORECASE)) * 0.2 - - for pattern in respectful_patterns: - tone_scores["respectful"] += len(re.findall(pattern, content, re.IGNORECASE)) * 0.2 - - for pattern in urgent_patterns: - tone_scores["urgent"] += len(re.findall(pattern, content, re.IGNORECASE)) * 0.2 - - for pattern in apologetic_patterns: - tone_scores["apologetic"] += len(re.findall(pattern, content, re.IGNORECASE)) * 0.2 - - # Cap scores at 1.0 (arbitrary capping) - # A more meaningful score might be relative frequency or use a proper model - for tone in tone_scores: - tone_scores[tone] = min(tone_scores[tone], 1.0) - - return tone_scores - -def check_formality(content: str) -> float: - """ - Check the formality level of a letter based on the presence of formal - vs. informal indicators and contractions. - - Args: - content: The letter content to analyze. - - Returns: - Formality score between 0.0 (very informal) and 1.0 (very formal). - Calculated as formal_count / (formal_count + informal_count). - """ - # This is a simplified version based on keyword counting. - # More accurate formality analysis would require advanced NLP techniques. - - # Define formal and informal indicators (case-insensitive) - formal_indicators = [ - r"\bDear\b", - r"\bSincerely\b", - r"\bRegards\b", - r"\bRespectfully\b", - r"\bI am writing to\b", - r"\bI would like to\b", - r"\bplease find\b", - r"\bregarding\b", - r"\bpursuant to\b", - r"\bhereby\b", - r"\bthus\b", - r"\btherefore\b", - r"\bfurthermore\b", - r"\bconsequently\b", - r"\bnevertheless\b", - r"\bmoreover\b", - r"\benclosed\b", - r"\bherewith\b", - r"\bsincerely yours\b", # Added - r"\bto whom it may concern\b" # Added - ] - - informal_indicators = [ - r"\bHey\b", - r"\bHi\b", - r"\bWhat's up\b", - r"\bCheers\b", - r"\bThanks\b", # 'Thank you' is formal, 'Thanks' is informal - r"\bTake care\b", - r"\bSee you\b", - r"\bLater\b", - r"\bBye\b", - r"\bLove\b", # As a closing - r"\bXO\b", - r"!+", # Multiple exclamation points - r"\bawesome\b", - r"\bcool\b", - r"\bgreat\b", - r"\bnice\b", - r"\bbtw\b", # By the way - r"\bimo\b", # In my opinion - r"\blol\b" # Laugh out loud - ] - - # Define common contractions (case-insensitive) - contractions = [ - r"\bdon't\b", r"\bcan't\b", r"\bwon't\b", r"\bshouldn't\b", - r"\bcouldn't\b", r"\bwouldn't\b", r"\bhasn't\b", r"\bhaven't\b", - r"\bisn't\b", r"\baren't\b", r"\bwasn't\b", r"\bweren't\b", - r"\bi'm\b", r"\byou're\b", r"\bhe's\b", r"\bshe's\b", r"\bit's\b", - r"\bwe're\b", r"\bthey're\b", r"\bi've\b", r"\byou've\b", - r"\bwe've\b", r"\bthey've\b", r"\bi'd\b", r"\byou'd\b", - r"\bhe'd\b", r"\bshe'd\b", r"\bit'd\b", r"\bwe'd\b", r"\bthey'd\b", - r"\bi'll\b", r"\byou'll\b", r"\bhe'll\b", r"\bshe'll\b", r"\bit'll\b", - r"\bwe'll\b", r"\bthey'll\b" - ] - - formal_count = 0 - for pattern in formal_indicators: - formal_count += len(re.findall(pattern, content, re.IGNORECASE)) - - informal_count = 0 - for pattern in informal_indicators: - informal_count += len(re.findall(pattern, content, re.IGNORECASE)) - - # Count contractions as informal indicators - for pattern in contractions: - informal_count += len(re.findall(pattern, content, re.IGNORECASE)) - - # Calculate formality score - total_indicators = formal_count + informal_count - if total_indicators == 0: - # If no indicators found, return a neutral score - return 0.5 - - # Score is the proportion of formal indicators - formality_score = formal_count / total_indicators - return formality_score - -def count_syllables_simple(word: str) -> int: - """ - Counts syllables in a word using a simplified heuristic. - This method is not linguistically perfect but provides a basic estimate - for readability formulas. - - Args: - word: The word string. - - Returns: - Estimated syllable count. - """ - word = word.lower() - if len(word) <= 3: - # Assume short words have one syllable - return 1 - - # Remove common silent endings like 'e', 'es', 'ed' - if word.endswith(('es', 'ed')): - word = word[:-2] - elif word.endswith('e'): - word = word[:-1] - - # Count vowel groups (consecutive vowels count as one syllable) - vowels = 'aeiouy' - count = 0 - prev_is_vowel = False - - for char in word: - is_vowel = char in vowels - if is_vowel and not prev_is_vowel: - count += 1 - prev_is_vowel = is_vowel - - # Ensure at least one syllable is counted - return max(1, count) - - -def get_readability_metrics(content: str) -> Dict[str, Any]: - """ - Calculate readability metrics for a letter using simplified methods - like Flesch Reading Ease. - - Args: - content: The letter content to analyze. - - Returns: - Dictionary with readability metrics: word_count, sentence_count, - avg_words_per_sentence, flesch_reading_ease, reading_level. - """ - # Split content into words and sentences using simple regex - words = re.findall(r'\b\w+\b', content) - # Split by common sentence terminators, handling potential multiple marks - sentences = re.split(r'[.!?]+\s*', content) - # Filter out empty strings resulting from the split (e.g., trailing punctuation) - sentences = [s for s in sentences if s.strip()] - - word_count = len(words) - sentence_count = len(sentences) - syllable_count = sum(count_syllables_simple(word) for word in words) - - if word_count == 0 or sentence_count == 0: - return { - "word_count": word_count, - "sentence_count": sentence_count, - "avg_words_per_sentence": 0.0, - "flesch_reading_ease": 0.0, - "reading_level": "N/A" - } - - # Calculate average words per sentence - avg_words_per_sentence = word_count / sentence_count - - # Calculate Flesch Reading Ease Score - # Formula: 206.835 - (1.015 * AvgWordsPerSentence) - (84.6 * AvgSyllablesPerWord) - # AvgSyllablesPerWord = syllable_count / word_count - avg_syllables_per_word = syllable_count / word_count if word_count > 0 else 0 - - flesch = 206.835 - (1.015 * avg_words_per_sentence) - (84.6 * avg_syllables_per_word) - # Clamp score between 0 and 100 - flesch = max(0.0, min(100.0, flesch)) - - # Determine reading level based on Flesch score ranges - if flesch >= 90: - reading_level = "Very Easy (5th grade)" - elif flesch >= 80: - reading_level = "Easy (6th grade)" - elif flesch >= 70: - reading_level = "Fairly Easy (7th grade)" - elif flesch >= 60: - reading_level = "Standard (8th-9th grade)" - elif flesch >= 50: - reading_level = "Fairly Difficult (10th-12th grade)" - elif flesch >= 30: - reading_level = "Difficult (College)" - else: - reading_level = "Very Difficult (Graduate)" - - return { - "word_count": word_count, - "sentence_count": sentence_count, - "avg_words_per_sentence": round(avg_words_per_sentence, 2), # Rounded for display - "flesch_reading_ease": round(flesch, 2), # Rounded for display - "reading_level": reading_level - } - -def suggest_improvements(content: str, letter_type: str) -> List[str]: - """ - Suggest improvements for a letter based on its content, basic analysis, - and target letter type. - - Args: - content: The letter content to analyze. - letter_type: The type of letter (e.g., "business", "cover", "personal"). - - Returns: - List of improvement suggestions strings. - """ - suggestions = [] - - words = re.findall(r'\b\w+\b', content) - word_count = len(words) - - # Basic length check based on letter type - if letter_type in ["business", "formal"]: - if word_count < 100 and word_count > 10: # Avoid suggesting for very short placeholders - suggestions.append("Consider adding more details to make your letter more comprehensive.") - elif word_count > 600: # Increased max length slightly - suggestions.append("Your letter is quite long. Consider condensing it for better readability and focus.") - elif letter_type == "cover": - if word_count < 150 and word_count > 10: # Avoid suggesting for very short placeholders - suggestions.append("Your cover letter may be too brief. Consider highlighting more of your relevant qualifications.") - elif word_count > 500: # Increased max length slightly - suggestions.append("Your cover letter is quite long. Consider focusing on your most relevant qualifications and experiences.") - elif letter_type == "recommendation": - if word_count < 150 and word_count > 10: - suggestions.append("Consider adding more specific examples or anecdotes to strengthen the recommendation.") - elif word_count > 600: - suggestions.append("Your recommendation letter is quite long. Ensure it remains focused and impactful.") - - - # Check for overuse of "I" (simple count-based heuristic) - # Count "I" as a standalone word - i_count = len(re.findall(r"\bI\b", content)) - # Avoid suggestion for very short content or content with few sentences - sentence_count = len(re.split(r'[.!?]+\s*', content.strip())) - if sentence_count > 2 and word_count > 50 and i_count > sentence_count * 1.5: # Suggest if 'I' count is significantly higher than sentence count - suggestions.append("Your letter contains many uses of 'I'. Consider rephrasing some sentences to focus more on the recipient or the subject matter.") - - - # Check for expression of gratitude (using common phrases) - gratitude_patterns = [r"\bthank you\b", r"\bgrateful\b", r"\bappreciate\b"] - has_gratitude = any(re.search(pattern, content, re.IGNORECASE) for pattern in gratitude_patterns) - # Suggest adding gratitude, but avoid for letter types where it might be less common (e.g., some complaint letters) - if not has_gratitude and letter_type not in ["complaint", "urgent"]: - suggestions.append("Consider expressing gratitude or appreciation somewhere in your letter.") - - # Check for clear call to action (using common phrases) - # Phrases indicating desired action or next step - action_phrases = [ - "look forward to", "please", "would appreciate", "request", - "hope to", "call me", "email me", "contact me", "schedule", - "arrange", "require action", "next steps" - ] - has_call_to_action = any(phrase in content.lower() for phrase in action_phrases) - # Suggest adding a call to action for relevant letter types - if not has_call_to_action and letter_type in ["business", "cover", "complaint", "invitation"]: - suggestions.append("Consider adding a clear call to action or outlining the desired next steps.") - - # Check for proper closing (using common phrases) - closing_patterns = [ - r"\bSincerely\b", r"\bRegards\b", r"\bThank you\b", r"\bBest regards\b", - r"\bYours sincerely\b", r"\bYours faithfully\b", r"\bRespectfully\b", - r"\bBest wishes\b", r"\bKind regards\b" - ] - # Check if any standard closing phrase is present, typically near the end - # A more robust check might look specifically at the last paragraph/lines - has_proper_closing = any(re.search(pattern, content[-200:], re.IGNORECASE) for pattern in closing_patterns) # Check last 200 chars - - if not has_proper_closing and word_count > 20: # Avoid suggesting for very short snippets - suggestions.append("Consider adding a proper closing phrase (e.g., Sincerely, Regards) followed by your name.") - - return suggestions - -# Example usage (for testing purposes, not part of the module's core functionality) -if __name__ == '__main__': - sample_formal_letter = """ - Dear Mr. Smith, - - I am writing to follow up regarding the project proposal submitted on October 26, 2023. - We believe the proposed solution aligns well with your stated requirements. - Please find the revised budget document attached for your review. - We look forward to your feedback at your earliest convenience. - - Sincerely, - Jane Doe - """ - - sample_informal_letter = """ - Hey John, - - Hope you're doing well! Just wanted to quickly touch base about the party next week. - Excited to catch up with everyone! Let me know if you need any help setting up. - Thanks! - - Best, - Alex - """ - - sample_complaint_letter = """ - To Whom It May Concern, - - I am writing to complain about the faulty product I received on November 1, 2023 (Order #12345). - The device stopped working after only two days of use. I require a full refund or replacement immediately. - I expect a prompt response regarding this issue. - - Sincerely, - Concerned Customer - """ - - print("--- Analyzing Formal Letter ---") - tone = analyze_letter_tone(sample_formal_letter) - formality = check_formality(sample_formal_letter) - readability = get_readability_metrics(sample_formal_letter) - suggestions = suggest_improvements(sample_formal_letter, "business") - - print(f"Tone: {tone}") - print(f"Formality: {formality:.2f}") - print(f"Readability: {readability}") - print(f"Suggestions: {suggestions}") - - print("\n--- Analyzing Informal Letter ---") - tone = analyze_letter_tone(sample_informal_letter) - formality = check_formality(sample_informal_letter) - readability = get_readability_metrics(sample_informal_letter) - suggestions = suggest_improvements(sample_informal_letter, "personal") - - print(f"Tone: {tone}") - print(f"Formality: {formality:.2f}") - print(f"Readability: {readability}") - print(f"Suggestions: {suggestions}") - - print("\n--- Analyzing Complaint Letter ---") - tone = analyze_letter_tone(sample_complaint_letter) - formality = check_formality(sample_complaint_letter) - readability = get_readability_metrics(sample_complaint_letter) - suggestions = suggest_improvements(sample_complaint_letter, "complaint") - - print(f"Tone: {tone}") - print(f"Formality: {formality:.2f}") - print(f"Readability: {readability}") - print(f"Suggestions: {suggestions}") \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_formatter.py b/ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_formatter.py deleted file mode 100644 index 97a0aadc..00000000 --- a/ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_formatter.py +++ /dev/null @@ -1,545 +0,0 @@ -""" -Letter Formatter Module - -This module provides utilities for formatting letters and generating HTML -previews in different styles (Personal, Formal, Business, Cover). -The formatting functions here are primarily focused on generating HTML -for preview purposes, applying standard layout conventions for each letter type -using inline CSS styles. -""" - -import re -from typing import Dict, Any - -def format_letter(content: str, metadata: Dict[str, Any], letter_type: str = "personal") -> str: - """ - Format a letter with basic structure (paragraphs). - - Args: - content: The raw letter content (string). - metadata: Dictionary containing metadata (currently not used for formatting in this placeholder). - letter_type: Type of letter (personal, formal, business, cover). - - Returns: - Formatted letter content (currently just returns the input content). - This is a placeholder and would be expanded to apply specific - formatting rules (e.g., indentation, spacing) based on letter type - and metadata in a full implementation before generating HTML. - For this module, we primarily rely on the HTML generation functions - to handle the visual formatting. - """ - # This is a basic placeholder. In a real implementation, this function - # might process the raw text content to add indentation, adjust line breaks, - # or handle specific markdown-like syntax before it's passed to the - # HTML generation functions. - # For now, we assume the input `content` uses double newlines for paragraphs. - return content - -def get_letter_preview_html(content: str, metadata: Dict[str, Any], letter_type: str = "personal") -> str: - """ - Generate HTML for letter preview based on letter type and metadata. - This function acts as a dispatcher to the specific HTML generation functions. - - Args: - content: The letter content string. - metadata: Dictionary containing metadata like sender/recipient info, date, etc. - letter_type: Type of letter ("personal", "formal", "business", "cover"). - Defaults to "personal". - - Returns: - HTML string for letter preview, styled appropriately for the type. - Includes basic styling for a printable letter appearance. - """ - # Dispatch to the appropriate HTML generation function based on letter type - # Pass the content and metadata to the specific functions - if letter_type == "personal": - return get_personal_letter_html(content, metadata) - elif letter_type == "formal": - return get_formal_letter_html(content, metadata) - elif letter_type == "business": - return get_business_letter_html(content, metadata) - elif letter_type == "cover": - return get_cover_letter_html(content, metadata) - else: - # Fallback for unrecognized types, displaying raw content in a styled box - return f""" -
-

Preview Unavailable for Unknown Letter Type

-

The letter type '{letter_type}' is not recognized. Displaying raw content:

-
{content}
-
- """ - -def get_personal_letter_html(content: str, metadata: Dict[str, Any]) -> str: - """ - Generate HTML for personal letter preview with basic styling. - Uses a more informal layout and font style. - - Args: - content: The letter content string. - metadata: Dictionary containing personal letter metadata (sender_name, date). - - Returns: - HTML string for personal letter preview. - """ - # Extract metadata with default empty strings for robustness - sender_name = metadata.get("sender_name", "") - # recipient_name = metadata.get("recipient_name", "") # Less common in personal body, but could be used in greeting - date = metadata.get("date", "") - - # Split content into paragraphs based on double newlines - # Use list comprehension to strip whitespace and filter out empty strings - paragraphs = [p.strip() for p in content.split("\n\n") if p.strip()] - - # Format paragraphs as HTML

tags with bottom margin - formatted_paragraphs = "".join(f"

{paragraph}

" for paragraph in paragraphs) - - # Basic HTML structure with inline styles for a personal letter feel - # Styles aim for a warm, readable appearance - html = f""" -
-
- {date if date else "[Date]"} -
- -
- {formatted_paragraphs if formatted_paragraphs else "

Letter content goes here...

"} -
- -
-

Sincerely,

-

{sender_name if sender_name else "[Sender Name]"}

-
-
- """ - return html - -def get_formal_letter_html(content: str, metadata: Dict[str, Any]) -> str: - """ - Generate HTML for formal letter preview with standard formal structure and styling. - Uses a more professional layout and font style (Arial/sans-serif). - - Args: - content: The letter content string. - metadata: Dictionary containing formal letter metadata. - - Returns: - HTML string for formal letter preview. - """ - # Extract metadata with default empty strings - sender_name = metadata.get("sender_name", "") - sender_title = metadata.get("sender_title", "") - sender_organization = metadata.get("sender_organization", "") - # Replace newlines in address for HTML display - sender_address = metadata.get("sender_address", "").replace("\n", "
") - sender_phone = metadata.get("sender_phone", "") - sender_email = metadata.get("sender_email", "") - - recipient_name = metadata.get("recipient_name", "") - recipient_title = metadata.get("recipient_title", "") - recipient_organization = metadata.get("recipient_organization", "") - # Replace newlines in address for HTML display - recipient_address = metadata.get("recipient_address", "").replace("\n", "
") - - date = metadata.get("date", "") - subject = metadata.get("subject", "") # Added subject line - salutation = metadata.get("salutation", "Dear Sir/Madam,") # Added salutation - complimentary_close = metadata.get("complimentary_close", "Sincerely,") # Added close - - # Determine alignment based on letter format (simplified) - # Full Block: All aligned left - # Modified Block: Sender address block, date, closing, and signature are right-aligned - letter_format = metadata.get("letter_format", "Full Block") - sender_address_align = "left" - date_align = "left" - closing_align = "left" - - if letter_format == "Modified Block": - sender_address_align = "right" - date_align = "right" - closing_align = "right" - - # Split content into paragraphs based on double newlines - paragraphs = [p.strip() for p in content.split("\n\n") if p.strip()] - - # Format paragraphs as HTML

tags with bottom margin - formatted_paragraphs = "".join(f"

{paragraph}

" for paragraph in paragraphs) - - # Basic HTML structure with inline styles for a formal letter - html = f""" -
- -
-

{sender_name if sender_name else "[Sender Name]"}{', ' + sender_title if sender_title else ''}

-

{sender_organization if sender_organization else "[Sender Organization]"}

-

{sender_address if sender_address else "[Sender Address]"}

-

{sender_phone}

-

{sender_email}

-
- -
-

{date if date else "[Date]"}

-
- -
-

{recipient_name if recipient_name else "[Recipient Name]"}{', ' + recipient_title if recipient_title else ''}

-

{recipient_organization if recipient_organization else "[Recipient Organization]"}

-

{recipient_address if recipient_address else "[Recipient Address]"}

-
- -
-

Subject: {subject if subject else "[Subject Line]"}

-
- -
-

{salutation}

-
- -
- {formatted_paragraphs if formatted_paragraphs else "

Letter content goes here...

"} -
- -
-

{complimentary_close}

-

{sender_name}

-

{sender_title}

-

{sender_organization}

-
-
- """ - return html - -def get_business_letter_html(content: str, metadata: Dict[str, Any]) -> str: - """ - Generate HTML for business letter preview with standard business structure and styling. - Includes optional letterhead. - - Args: - content: The letter content string. - metadata: Dictionary containing business letter metadata. - - Returns: - HTML string for business letter preview. - """ - # Extract metadata with default empty strings - sender_company = metadata.get("sender_company", "") - sender_name = metadata.get("sender_name", "") - sender_title = metadata.get("sender_title", "") - sender_address = metadata.get("sender_address", "").replace("\n", "
") - sender_phone = metadata.get("sender_phone", "") - sender_email = metadata.get("sender_email", "") - sender_website = metadata.get("sender_website", "") - - recipient_company = metadata.get("recipient_company", "") - recipient_name = metadata.get("recipient_name", "") - recipient_title = metadata.get("recipient_title", "") - recipient_address = metadata.get("recipient_address", "").replace("\n", "
") - - date = metadata.get("date", "") - subject = metadata.get("subject", "") # Added subject line - salutation = metadata.get("salutation", "Dear Sir/Madam,") # Added salutation - complimentary_close = metadata.get("complimentary_close", "Sincerely,") # Added close - - # Determine alignment based on letter format (simplified) - letter_format = metadata.get("letter_format", "Full Block") - sender_info_align = "left" - date_align = "left" - closing_align = "left" - - if letter_format == "Modified Block": - sender_info_align = "right" - date_align = "right" - closing_align = "right" - - # Include letterhead logic - include_letterhead = metadata.get("include_letterhead", True) - - # Split content into paragraphs based on double newlines - paragraphs = [p.strip() for p in content.split("\n\n") if p.strip()] - - # Format paragraphs as HTML

tags with bottom margin - formatted_paragraphs = "".join(f"

{paragraph}

" for paragraph in paragraphs) - - # Create letterhead HTML if included and company name is provided - letterhead_html = "" - if include_letterhead and sender_company: - letterhead_html = f""" -
-

{sender_company}

-

- {sender_address.replace('
', ', ') if sender_address else ''} - {' | ' + sender_phone if sender_phone else ''} - {' | ' + sender_email if sender_email else ''} - {' | ' + sender_website if sender_website else ''} -

-
- """ - - # Basic HTML structure with inline styles for a business letter - html = f""" -
- {letterhead_html} - -
-

{date if date else "[Date]"}

-
- -
-

{recipient_name if recipient_name else "[Recipient Name]"}{', ' + recipient_title if recipient_title else ''}

-

{recipient_company if recipient_company else "[Recipient Company]"}

-

{recipient_address if recipient_address else "[Recipient Address]"}

-
- -
-

Subject: {subject if subject else "[Subject Line]"}

-
- -
-

{salutation}

-
- -
- {formatted_paragraphs if formatted_paragraphs else "

Letter content goes here...

"} -
- -
-

{complimentary_close}

-

{sender_name if sender_name else "[Sender Name]"}

-

{sender_title}

-

{sender_company}

-
-
- """ - return html - -def get_cover_letter_html(content: str, metadata: Dict[str, Any]) -> str: - """ - Generate HTML for cover letter preview with standard cover letter structure and styling. - Includes sender contact block and optional online links. - - Args: - content: The letter content string. - metadata: Dictionary containing cover letter metadata. - - Returns: - HTML string for cover letter preview. - """ - # Extract metadata with default empty strings - sender_name = metadata.get("sender_name", "") - sender_email = metadata.get("sender_email", "") - sender_phone = metadata.get("sender_phone", "") - sender_location = metadata.get("sender_location", "") - sender_linkedin = metadata.get("sender_linkedin", "") - sender_portfolio = metadata.get("sender_portfolio", "") - - recipient_name = metadata.get("recipient_name", "") - recipient_title = metadata.get("recipient_title", "") # Added recipient title - recipient_company = metadata.get("recipient_company", "") - recipient_department = metadata.get("recipient_department", "") # Added department - recipient_address = metadata.get("recipient_address", "").replace("\n", "
") # Added recipient address - - date = metadata.get("date", "") - job_title = metadata.get("job_title", "") # Added job title for subject - salutation = metadata.get("salutation", "Dear Hiring Manager,") # Added salutation - complimentary_close = metadata.get("complimentary_close", "Sincerely,") # Added close - - - # Split content into paragraphs based on double newlines - paragraphs = [p.strip() for p in content.split("\n\n") if p.strip()] - - # Format paragraphs as HTML

tags with bottom margin - formatted_paragraphs = "".join(f"

{paragraph}

" for paragraph in paragraphs) - - # Construct sender contact line, only including fields that have values - sender_contact_parts = [sender_location, sender_phone, sender_email] - sender_contact_line = " | ".join(filter(None, sender_contact_parts)) - - # Construct sender online links line, only including fields that have values - sender_online_parts = [] - if sender_linkedin: - # Add basic styling for links - sender_online_parts.append(f'LinkedIn') - if sender_portfolio: - # Add basic styling for links - sender_online_parts.append(f'Portfolio') - - sender_online_line = " | ".join(filter(None, sender_online_parts)) - - - # Basic HTML structure with inline styles for a cover letter - # Styles aim for a clean, professional look - html = f""" -
- -
-

{sender_name if sender_name else "[Your Name]"}

- {'

' + sender_contact_line + '

' if sender_contact_line else ''} - {'

' + sender_online_line + '

' if sender_online_line else ''} -
- -
-

{date if date else "[Date]"}

-
- -
-

{recipient_name if recipient_name else "[Recipient Name]"}{', ' + recipient_title if recipient_title else ''}

-

{recipient_department}

-

{recipient_company if recipient_company else "[Recipient Company]"}

-

{recipient_address if recipient_address else "[Recipient Address]"}

-
- -
-

Subject: Application for {job_title if job_title else '[Job Title]'} Position

-
- -
-

{salutation}

-
- -
- {formatted_paragraphs if formatted_paragraphs else "

Letter content goes here...

"} -
- -
-

{complimentary_close}

-

{sender_name}

-
-
- """ - return html - -# Example usage (for testing purposes) -if __name__ == '__main__': - sample_personal_content = """ - Hi Sarah, - - Hope you're doing well! - - Just wanted to send a quick note to say how much I enjoyed catching up last week. It was great hearing about your trip to Italy. - - Let's try to do it again soon! - - Best, - Emily - """ - sample_personal_metadata = { - "sender_name": "Emily Davis", - "recipient_name": "Sarah Johnson", - "date": "November 5, 2023" - } - - sample_formal_content = """ - I am writing to formally request a copy of my academic transcript. - - I require this document for a graduate school application. The deadline for submission is December 15, 2023. - - Please let me know if there are any fees associated with this request or if any further information is needed from my end. - - Thank you for your time and assistance. - """ - sample_formal_metadata_full_block = { - "sender_name": "John Smith", - "sender_title": "Student", - "sender_organization": "University of Example", - "sender_address": "123 University Ave\nAnytown, CA 91234", - "sender_phone": "(555) 123-4567", - "sender_email": "john.smith@example.com", - "recipient_name": "Registrar's Office", - "recipient_organization": "University of Example", - "recipient_address": "456 Admin Building\nAnytown, CA 91234", - "date": "November 5, 2023", - "subject": "Request for Academic Transcript", - "salutation": "To the Registrar's Office,", - "complimentary_close": "Sincerely,", - "letter_format": "Full Block" - } - - sample_formal_metadata_modified_block = sample_formal_metadata_full_block.copy() - sample_formal_metadata_modified_block["letter_format"] = "Modified Block" - - - sample_business_content = """ - This letter confirms the details of Purchase Order #PO-7890. - - We are ordering 50 units of Model X widgets at the agreed-upon price of $100 per unit, totaling $5,000. - - Please ensure delivery to our warehouse by November 20, 2023. Payment will be made within 30 days of receipt of invoice. - - Thank you for your prompt processing of this order. - """ - sample_business_metadata_full_block = { - "sender_company": "Acme Corp", - "sender_name": "Alice Brown", - "sender_title": "Procurement Manager", - "sender_address": "789 Business Rd\nMetropolis, NY 10001", - "sender_phone": "(555) 987-6543", - "sender_email": "alice.brown@acmecorp.com", - "sender_website": "www.acmecorp.com", - "recipient_company": "Supplier Co.", - "recipient_name": "Sales Department", - "recipient_title": "", - "recipient_address": "101 Vendor Lane\nIndustriatown, TX 75001", - "date": "November 5, 2023", - "subject": "Purchase Order Confirmation - PO-7890", - "salutation": "To the Sales Department,", - "complimentary_close": "Sincerely,", - "letter_format": "Full Block", - "include_letterhead": True - } - - sample_business_metadata_modified_block = sample_business_metadata_full_block.copy() - sample_business_metadata_modified_block["letter_format"] = "Modified Block" - sample_business_metadata_no_letterhead = sample_business_metadata_full_block.copy() - sample_business_metadata_no_letterhead["include_letterhead"] = False - - - sample_cover_letter_content = """ - I am writing to express my enthusiastic interest in the Marketing Specialist position advertised on LinkedIn. - - With three years of experience in digital marketing and a proven track record in content creation and social media management, I am confident in my ability to contribute to your team. My skills in [Specific Skill 1] and [Specific Skill 2] align perfectly with the requirements outlined in the job description. - - In my previous role at [Previous Company], I successfully managed social media campaigns that resulted in a 25% increase in engagement. I am particularly drawn to [Company Name]'s innovative approach to [Industry Trend] and believe my creative problem-solving skills would be a valuable asset. - - Thank you for considering my application. I have attached my resume for your review and welcome the opportunity to discuss how my background and skills can benefit [Company Name]. - """ - sample_cover_letter_metadata = { - "sender_name": "Jane Doe", - "sender_email": "jane.doe@email.com", - "sender_phone": "(123) 456-7890", - "sender_location": "San Francisco, CA", - "sender_linkedin": "https://linkedin.com/in/janedoe", - "sender_portfolio": "https://janedoeportfolio.com", - "recipient_name": "Hiring Manager", - "recipient_title": "", # Example with no recipient title - "recipient_company": "Innovative Solutions Inc.", - "recipient_department": "Marketing Department", - "recipient_address": "456 Tech Way\nSilicon Valley, CA 95001", - "date": "November 5, 2023", - "job_title": "Marketing Specialist", - "salutation": "Dear Hiring Manager,", - "complimentary_close": "Sincerely," - } - - print("--- Personal Letter HTML Preview ---") - print(get_letter_preview_html(sample_personal_content, sample_personal_metadata, letter_type="personal")) - - print("\n--- Formal Letter HTML Preview (Full Block) ---") - print(get_letter_preview_html(sample_formal_content, sample_formal_metadata_full_block, letter_type="formal")) - - print("\n--- Formal Letter HTML Preview (Modified Block) ---") - print(get_letter_preview_html(sample_formal_content, sample_formal_metadata_modified_block, letter_type="formal")) - - print("\n--- Business Letter HTML Preview (Full Block, with Letterhead) ---") - print(get_letter_preview_html(sample_business_content, sample_business_metadata_full_block, letter_type="business")) - - print("\n--- Business Letter HTML Preview (Modified Block, with Letterhead) ---") - print(get_letter_preview_html(sample_business_content, sample_business_metadata_modified_block, letter_type="business")) - - print("\n--- Business Letter HTML Preview (Full Block, no Letterhead) ---") - print(get_letter_preview_html(sample_business_content, sample_business_metadata_no_letterhead, letter_type="business")) - - print("\n--- Cover Letter HTML Preview ---") - print(get_letter_preview_html(sample_cover_letter_content, sample_cover_letter_metadata, letter_type="cover")) - - print("\n--- Unknown Type HTML Preview ---") - print(get_letter_preview_html("Some random content.", {}, letter_type="unknown")) diff --git a/ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_templates.py b/ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_templates.py deleted file mode 100644 index 6ae54466..00000000 --- a/ToBeMigrated/ai_writers/ai_letter_writer/utils/letter_templates.py +++ /dev/null @@ -1,988 +0,0 @@ -""" -Letter Templates Module - -This module provides structured templates and guidance for generating -different types and subtypes of letters. -Templates are defined as dictionaries containing a 'structure' (list of sections) -and 'guidance' (a string). -""" - -from typing import Dict, Any, List - -# Define letter templates using a nested dictionary structure for easier management -TEMPLATES: Dict[str, Dict[str, Dict[str, Any]]] = { - "personal": { - "congratulations": { - "structure": [ - "Greeting", - "Express congratulations", - "Acknowledge the achievement", - "Share personal thoughts/memory (optional)", - "Look to the future/well wishes", - "Closing" - ], - "guidance": "Be warm, sincere, and specific about the achievement. Express genuine happiness for the recipient. Keep the tone personal and friendly." - }, - "thank_you": { - "structure": [ - "Greeting", - "Express gratitude clearly", - "Specify what you are thankful for", - "Explain the impact or how you used it (optional)", - "Share a personal thought or memory (optional)", - "Offer reciprocation or look to the future", - "Closing" - ], - "guidance": "Be specific about what you're thankful for and how it affected you. Express sincere appreciation. Personalize the message." - }, - "sympathy": { - "structure": [ - "Greeting", - "Express sympathy for the loss", - "Acknowledge the significance of the person/situation", - "Share a positive memory or quality (optional)", - "Offer specific support (optional)", - "Closing with comforting words" - ], - "guidance": "Be gentle, compassionate, and sincere. Avoid clichรฉs. Focus on offering genuine comfort and acknowledging the recipient's feelings." - }, - "apology": { - "structure": [ - "Greeting", - "Clearly state your apology", - "Acknowledge the specific mistake or action", - "Express understanding of the impact on the other person", - "Explain (briefly, without making excuses) what happened (optional)", - "Offer amends or suggest how to make things right", - "Assure it won't happen again", - "Closing" - ], - "guidance": "Be sincere, take full responsibility for your actions, and focus on making things right. Avoid making excuses or blaming others." - }, - "invitation": { - "structure": [ - "Greeting", - "Clearly state the invitation", - "Provide full event details (What, When, Where)", - "Explain the significance or purpose (optional)", - "Mention who else might be there (optional)", - "Request RSVP (date and contact method)", - "Express anticipation", - "Closing" - ], - "guidance": "Be clear and specific about the details (what, when, where, why). Make it easy for the person to respond." - }, - "friendship": { - "structure": [ - "Greeting", - "Express appreciation for the friendship", - "Share a recent memory or anecdote", - "Acknowledge the value of the relationship", - "Check in on them or share updates", - "Look to the future (getting together, etc.)", - "Closing" - ], - "guidance": "Be warm, personal, and specific about what you value in the friendship. Share updates and show genuine interest." - }, - "love": { - "structure": [ - "Greeting (Terms of endearment)", - "Express depth of feelings", - "Share a cherished memory or moment", - "Describe specific qualities you love and appreciate", - "Reaffirm commitment or future hopes", - "Closing (Terms of endearment)" - ], - "guidance": "Be sincere, personal, and specific about your feelings. Use sensory details and emotional language appropriate for your relationship." - }, - "encouragement": { - "structure": [ - "Greeting", - "Acknowledge the situation or challenge they face", - "Express belief in their abilities/strength", - "Offer specific words of encouragement or support", - "Remind them of past successes (optional)", - "Offer practical help (optional)", - "Look to the future with hope", - "Closing with support" - ], - "guidance": "Be positive, supportive, and specific about the person's strengths and abilities. Offer genuine encouragement and belief in them." - }, - "farewell": { - "structure": [ - "Greeting", - "State the purpose (saying goodbye)", - "Express feelings about their departure (sadness, happiness for them)", - "Share a positive memory or highlight their contribution", - "Express good wishes for their future endeavors", - "Look to staying in touch (optional)", - "Closing" - ], - "guidance": "Be warm, reflective, and forward-looking. Focus on positive memories and express genuine good wishes for their next steps." - }, - # Default personal letter template if subtype is not found - "default": { - "structure": [ - "Greeting", - "Introduction", - "Main content paragraphs", - "Closing thoughts", - "Signature" - ], - "guidance": "Be personal, authentic, and appropriate for your relationship with the recipient. The tone is typically informal to semi-formal." - } - }, - "formal": { - "application": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information (if known)", - "Subject line (Clear and concise)", - "Salutation (Formal)", - "Introduction (State position applied for and where you saw it)", - "Body paragraphs (Highlight relevant skills and experience)", - "Closing paragraph (Reiterate interest, mention enclosed resume, call to action)", - "Complimentary close (Formal)", - "Signature (Typed name)", - "Enclosures (Mention if attaching resume/portfolio)" - ], - "guidance": "Be professional, concise, and specific about your qualifications and genuine interest in the position. Tailor it to the specific job description." - }, - "complaint": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Clearly state it's a complaint)", - "Salutation (Formal)", - "Introduction (State the purpose: complaint about X service/product)", - "Problem description (Provide specific details: date, time, location, product details, names if applicable)", - "Impact statement (Explain how the problem affected you)", - "Requested resolution (Clearly state what you want: refund, replacement, action)", - "Closing paragraph (Reference attached documents, state expectation for response)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be clear, factual, and specific about the issue and your desired resolution. Maintain a respectful but firm tone. Include all relevant details." - }, - "request": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Clearly state the request)", - "Salutation (Formal)", - "Introduction (State the purpose: making a request)", - "Request details (Clearly explain what you are requesting)", - "Justification (Explain why the request is necessary or beneficial)", - "Provide supporting information (optional)", - "Closing paragraph (Express gratitude for consideration, reiterate call to action)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be clear, specific, and courteous about your request. Explain why it's important or beneficial to the recipient or organization." - }, - "recommendation": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Letter of Recommendation for [Name])", - "Salutation (Formal)", - "Introduction (State your name, title, relationship to the recommendee, and for what purpose the letter is written)", - "Body paragraphs (Describe the recommendee's qualifications, skills, and achievements with specific examples)", - "Highlight relevant experiences and contributions", - "Closing recommendation (Summarize endorsement, strongly recommend the person)", - "Complimentary close (Formal)", - "Signature (Typed name and title)" - ], - "guidance": "Be specific, positive, and credible. Use concrete examples and anecdotes to support your recommendation. Tailor it to the specific role/opportunity." - }, - "resignation": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information (Immediate supervisor/HR)", - "Subject line (Letter of Resignation - [Your Name])", - "Salutation (Formal)", - "Statement of resignation (Clearly state you are resigning)", - "Last day of employment (Specify the date)", - "Gratitude and reflection (Optional: Express thanks for the opportunity/experience)", - "Transition plan/Offer of assistance (Optional: Suggest how to ensure a smooth handover)", - "Closing paragraph (Express good wishes for the company's future)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be professional, positive (if possible), and clear about your departure and last day. Maintain a good relationship." - }, - "inquiry": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Clearly state the nature of the inquiry)", - "Salutation (Formal)", - "Introduction (State your purpose for writing - making an inquiry)", - "Inquiry details (Provide necessary context or background)", - "Specific questions (List your questions clearly, perhaps numbered)", - "Closing paragraph (Express gratitude for assistance, indicate when you need a response)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be clear, specific, and courteous about your inquiry. Organize your questions logically for easy answering." - }, - "authorization": { - "structure": [ - "Sender's contact information (The grantor of authority)", - "Date", - "Recipient's contact information (The person/entity receiving the letter)", - "Subject line (Letter of Authorization)", - "Salutation (Formal)", - "Statement of authorization (Clearly state who is authorized)", - "Authorized person's details (Full name, ID if applicable)", - "Scope of authority (Precisely define what they are authorized to do)", - "Limitations (Specify any restrictions or conditions)", - "Duration of authorization (Start and end dates, if applicable)", - "Closing paragraph (State responsibility, express confidence)", - "Complimentary close (Formal)", - "Signature (Typed name and title)" - ], - "guidance": "Be clear, specific, and precise about who is authorized, what they can do, for how long, and under what conditions. This is a legal document." - }, - "appeal": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information (Appeals committee/relevant authority)", - "Subject line (Letter of Appeal - [Your Name] - [Subject of Appeal])", - "Salutation (Formal)", - "Introduction (State your name, the decision being appealed, and the date of the decision)", - "Grounds for appeal (Clearly state the reasons why you believe the decision is incorrect)", - "Provide supporting evidence (Reference attached documents: records, photos, etc.)", - "Explain mitigating circumstances (Optional)", - "Requested outcome (Clearly state what resolution you seek)", - "Closing paragraph (Express hope for reconsideration, gratitude for time)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be respectful, factual, and persuasive. Focus on valid grounds for appeal and provide clear, supporting evidence. Maintain a formal tone." - }, - "introduction": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Introduction - [Your Name])", - "Salutation (Formal)", - "Introduction (Introduce yourself and the purpose of the letter)", - "Background information (Briefly describe your relevant background or expertise)", - "Reason for reaching out (Explain why you are introducing yourself to this specific person/entity)", - "Potential areas of collaboration or shared interest (Optional)", - "Call to action (Suggest a meeting, call, or further communication)", - "Closing paragraph (Express enthusiasm for potential connection)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be professional, informative, and engaging. Clearly explain who you are, your expertise, and why you're reaching out to them specifically." - }, - # Default formal letter template if subtype is not found - "default": { - "structure": [ - "Sender's address", - "Date", - "Recipient's address", - "Subject line", - "Salutation", - "Introduction", - "Body paragraphs", - "Closing paragraph", - "Complimentary close", - "Signature" - ], - "guidance": "Be professional, clear, and concise. Use formal language and structure. The tone is typically formal." - } - }, - "business": { - "sales": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line (Benefit-oriented)", - "Salutation", - "Attention-grabbing opening (Address a pain point or introduce a benefit)", - "Problem statement (Briefly describe the challenge the recipient faces)", - "Solution presentation (Introduce your product/service as the solution)", - "Benefits and features (Explain how your solution helps, focusing on benefits)", - "Social proof (Optional: Testimonials, case studies, data)", - "Call to action (Clearly state what you want them to do next)", - "Closing paragraph (Reiterate benefit, create urgency/incentive)", - "Complimentary close (Professional)", - "Signature (Typed name and title)", - "Enclosures (Optional: Brochure, pricing)" - ], - "guidance": "Be persuasive, customer-focused, and clear about the value proposition. Focus on benefits, not just features. Make the call to action obvious." - }, - "proposal": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line (Clear and descriptive)", - "Salutation", - "Introduction (State purpose: submitting a proposal)", - "Problem statement/Needs assessment (Demonstrate understanding of client's needs)", - "Proposed solution (Describe your solution in detail)", - "Implementation plan (Outline steps and timeline)", - "Costs and investment (Clearly state pricing and payment terms)", - "Benefits and ROI (Explain the value the client will receive)", - "Call to action (Suggest next steps: meeting, discussion)", - "Closing paragraph (Express enthusiasm, availability for questions)", - "Complimentary close (Professional)", - "Signature (Typed name and title)", - "Enclosures (Proposal document, appendix)" - ], - "guidance": "Be clear, specific, and persuasive about your solution. Focus on the client's needs and the value you provide. Structure it logically." - }, - "order": { - "structure": [ - "Letterhead (Your company)", - "Date", - "Recipient's address (Supplier)", - "Subject line (Purchase Order - [PO Number])", - "Salutation", - "Introduction (Reference quote/agreement, state purpose: placing an order)", - "Order details (Item list with quantities, descriptions, unit prices, total)", - "Delivery requirements (Shipping address, requested delivery date, shipping method)", - "Payment terms (Reference agreed terms)", - "Closing paragraph (Express expectation for timely delivery)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be clear, specific, and detailed about what you're ordering, quantities, delivery requirements, and payment terms. Include a purchase order number." - }, - "quotation": { - "structure": [ - "Letterhead (Your company)", - "Date", - "Recipient's address (Customer)", - "Subject line (Quotation for [Product/Service])", - "Salutation", - "Introduction (Reference inquiry, state purpose: providing a quotation)", - "Quotation details (List items/services, descriptions, unit prices, quantities, line totals)", - "Pricing breakdown (Mention taxes, discounts, fees separately)", - "Terms and conditions (Payment terms, delivery terms, warranty)", - "Validity period (State how long the quote is valid)", - "Next steps (How they can place an order)", - "Closing paragraph (Express hope to do business, offer further assistance)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be clear, specific, and transparent about pricing, terms, and what's included or excluded. Make it easy for the customer to understand and accept." - }, - "acknowledgment": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line (Acknowledgment of [Received Item/Request])", - "Salutation", - "Acknowledgment statement (Clearly state what you have received or are acknowledging)", - "Details of what's being acknowledged (Reference number, date, brief description)", - "Confirm understanding (Optional: Briefly restate the request/issue to show understanding)", - "Next steps (Outline what will happen next, e.g., processing order, investigating issue)", - "Timeline (Provide an estimated timeframe if possible)", - "Closing paragraph (Express gratitude, offer further assistance)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be prompt, clear, and specific about what you're acknowledging. Set clear expectations for next steps and timelines." - }, - "collection": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line (Invoice [Invoice Number] - Payment Due)", - "Salutation", - "Introduction (Reference invoice number and due date)", - "Account status (Clearly state the outstanding amount)", - "Payment request (Politely request payment)", - "Payment options (Remind them how to pay)", - "Consequences of non-payment (Optional: Briefly mention late fees or further action, depending on letter stage)", - "Call to action (Request payment by a specific date)", - "Closing paragraph (Express hope for prompt payment, offer to discuss)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be firm but professional. Clearly state the amount due, due date, and payment options. The tone may vary depending on how overdue the payment is." - }, - "adjustment": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address (Customer who made a complaint)", - "Subject line (Response to your inquiry - [Reference Number])", - "Salutation", - "Acknowledgment of complaint (Reference their communication and the issue)", - "Investigation findings (Explain the outcome of your investigation)", - "Adjustment offered (Clearly state the resolution: refund, replacement, credit, etc.)", - "Apology (Optional: Express regret for the inconvenience)", - "Preventive measures (Optional: Explain steps taken to prevent recurrence)", - "Closing paragraph (Express hope for continued business, offer further assistance)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be responsive, empathetic, and solution-oriented. Clearly explain the adjustment and any preventive measures taken." - }, - "credit": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address (Applicant)", - "Subject line (Credit Application Status - [Applicant Name])", - "Salutation", - "Introduction (Reference their credit application and the purpose of the letter)", - "Credit decision (Clearly state if credit is approved or denied)", - "If approved: Credit terms (Credit limit, payment terms, interest rates)", - "If denied: Reason for decision (Provide specific, compliant reasons)", - "Requirements (If approved: any further steps or documents needed)", - "Closing paragraph (If approved: Express welcome; If denied: Offer alternative options or appeals process)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be clear, specific, and transparent about the credit decision, terms, limits, or reasons for denial. Ensure compliance with regulations if denying credit." - }, - "follow_up": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line (Following up on [Previous Communication/Meeting])", - "Salutation", - "Reference to previous communication (Mention date, topic, or meeting)", - "Purpose of follow-up (Clearly state why you are writing again)", - "Action items/Next steps (Remind of agreed-upon actions or propose next steps)", - "Provide additional information (Optional)", - "Call to action (If applicable, e.g., request a response, schedule a meeting)", - "Closing paragraph (Reiterate interest, express anticipation)", - "Complimentary close (Professional)", - "Signature (Typed name and title)" - ], - "guidance": "Be clear, specific, and action-oriented. Reference previous communication and clearly state the purpose of your follow-up and desired outcome." - }, - # Default business letter template if subtype is not found - "default": { - "structure": [ - "Letterhead", - "Date", - "Recipient's address", - "Subject line", - "Salutation", - "Introduction", - "Body paragraphs", - "Closing paragraph", - "Complimentary close", - "Signature" - ], - "guidance": "Be professional, clear, and concise. Focus on the business purpose of your letter. The tone is typically formal to semi-formal." - } - }, - "cover": { - "standard": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information (if known)", - "Subject line (Job Application - [Your Name] - [Job Title])", - "Salutation (Formal)", - "Introduction (State the position you are applying for, where you saw the advertisement, and a brief statement of enthusiasm)", - "Body paragraph 1 (Highlight skills and experience directly relevant to the job description - often 1-2 key qualifications)", - "Body paragraph 2 (Provide a specific example or anecdote demonstrating your abilities)", - "Body paragraph 3 (Connect your passion/goals to the company's mission/values - optional but effective)", - "Closing paragraph (Reiterate interest, mention attached resume, express availability for interview)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Be professional, specific about your most relevant qualifications, and clear about your interest in the position. Tailor every cover letter to the specific job and company." - }, - "career_change": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Job Application - [Your Name] - [Job Title])", - "Salutation", - "Introduction (State the position and acknowledge your career transition)", - "Body paragraph 1 (Highlight transferable skills from previous roles)", - "Body paragraph 2 (Explain your motivation for the career change and how your skills apply)", - "Body paragraph 3 (Demonstrate understanding of the new industry/role)", - "Closing paragraph (Reiterate enthusiasm, mention enclosed resume, call to action)", - "Complimentary close", - "Signature" - ], - "guidance": "Focus on transferable skills and explain your career transition. Connect your past experience and new skills directly to the requirements of the target role." - }, - "entry_level": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Job Application - [Your Name] - [Job Title])", - "Salutation", - "Introduction (State the position and your enthusiasm for the opportunity as a recent graduate/entrant)", - "Body paragraph 1 (Highlight relevant education, coursework, GPA if strong)", - "Body paragraph 2 (Describe relevant internships, projects, or volunteer experience)", - "Body paragraph 3 (Showcase soft skills: teamwork, communication, eagerness to learn)", - "Closing paragraph (Reiterate interest, mention attached resume, express availability for interview)", - "Complimentary close", - "Signature" - ], - "guidance": "Emphasize education, relevant internships/projects, and transferable skills gained through academic or extracurricular activities. Show strong potential and enthusiasm." - }, - "executive": { - "structure": [ - "Your contact information", - "Date", - "Recipient's contact information (Senior Executive/Board Member)", - "Subject line (Executive Application - [Your Name] - [Position])", - "Salutation (Formal)", - "Introduction (State position applying for, brief summary of executive profile)", - "Body paragraph 1 (Highlight strategic leadership experience and key achievements)", - "Body paragraph 2 (Discuss relevant industry expertise and market insights)", - "Body paragraph 3 (Describe experience in driving growth, managing teams, achieving results)", - "Closing paragraph (Reiterate interest, express desire to discuss contribution to the organization)", - "Complimentary close (Formal)", - "Signature" - ], - "guidance": "Emphasize strategic leadership experience, significant achievements with measurable results, and industry expertise. Use a confident, authoritative, and forward-looking tone." - }, - "creative": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Application - [Your Name] - [Creative Role])", - "Salutation", - "Creative introduction (Engaging hook related to the role or your passion)", - "Body paragraph 1 (Highlight relevant creative experience and skills)", - "Body paragraph 2 (Reference specific portfolio pieces or projects that showcase your style/abilities)", - "Body paragraph 3 (Describe your creative process or approach)", - "Closing paragraph (Reiterate enthusiasm, mention attached resume/portfolio link, call to action)", - "Complimentary close", - "Signature" - ], - "guidance": "Use a more engaging and expressive style appropriate for a creative role while maintaining professionalism. Highlight specific creative achievements and link to your portfolio." - }, - "technical": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Application - [Your Name] - [Technical Role])", - "Salutation (Formal)", - "Introduction (State position, source, and brief technical interest)", - "Body paragraph 1 (Highlight specific technical skills and proficiencies relevant to the job description)", - "Body paragraph 2 (Describe relevant technical projects or challenges you've solved)", - "Body paragraph 3 (Discuss problem-solving abilities and experience with relevant technologies)", - "Closing paragraph (Reiterate interest, mention attached resume, express availability for technical discussion/interview)", - "Complimentary close (Formal)", - "Signature" - ], - "guidance": "Focus on technical skills, relevant projects, and problem-solving abilities. Use appropriate technical terminology accurately." - }, - "academic": { - "structure": [ - "Your contact information", - "Date", - "Recipient's contact information (Search Committee Chair)", - "Subject line (Application for [Position] - [Your Name])", - "Salutation (Formal)", - "Introduction (State the position, the department, and express your strong interest)", - "Body paragraph 1 (Discuss your research experience, focus on key projects and contributions)", - "Body paragraph 2 (Describe your teaching philosophy and relevant teaching experience)", - "Body paragraph 3 (Mention publications, presentations, grants, and other scholarly contributions)", - "Closing paragraph (Reiterate enthusiasm for joining the faculty, express availability for interview/presentation)", - "Complimentary close (Formal)", - "Signature (Typed name)" - ], - "guidance": "Focus on research experience, teaching philosophy, publications, and contributions to the field. Use a scholarly and professional tone suitable for academia." - }, - "remote": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Remote Application - [Your Name] - [Job Title])", - "Salutation", - "Introduction (State the remote position, source, and enthusiasm for remote work)", - "Body paragraph 1 (Highlight experience working remotely or independently)", - "Body paragraph 2 (Emphasize self-management, time management, and organizational skills required for remote work)", - "Body paragraph 3 (Describe strong written and verbal communication skills, essential for remote collaboration)", - "Closing paragraph (Reiterate interest in the remote role, mention attached resume, express availability for video interview)", - "Complimentary close", - "Signature" - ], - "guidance": "Emphasize self-motivation, excellent communication skills (especially written), time management, and any prior experience working independently or in remote teams." - }, - "referral": { - "structure": [ - "Your contact information", - "Date", - "Hiring Manager contact information", - "Subject line (Referral Application - [Your Name] - [Job Title] - Referred by [Referrer's Name])", - "Salutation", - "Referral introduction (Immediately state who referred you and for what position)", - "Body paragraph 1 (Briefly explain your connection to the referrer and how you learned about the role)", - "Body paragraph 2 (Highlight key qualifications relevant to the job description)", - "Body paragraph 3 (Express strong interest in the position and the company)", - "Closing paragraph (Reiterate enthusiasm, mention attached resume, express availability for interview)", - "Complimentary close", - "Signature" - ], - "guidance": "Mention the referral prominently and early. Explain your connection to the referrer and how it aligns with your interest in the role. Still, ensure you highlight your own qualifications." - }, - # Default cover letter template if subtype is not found - "default": { - "structure": [ - "Contact information", - "Date", - "Recipient's information", - "Subject line", - "Salutation", - "Introduction", - "Body paragraphs", - "Closing paragraph", - "Complimentary close", - "Signature" - ], - "guidance": "Be professional, specific about your qualifications, and clear about your interest in the position. Tailor your letter to the specific job and company." - } - }, - "recommendation": { - # Recommendation letters are often considered a subtype of Formal, - # but can be a top-level type in some systems. Keeping the structure - # consistent with the original request, but noting this potential overlap. - "standard": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information (e.g., Admissions Committee, Hiring Manager)", - "Subject line (Letter of Recommendation for [Name])", - "Salutation (Formal)", - "Introduction (State your name, title, relationship to the recommendee, how long you've known them, and for what opportunity the letter is written)", - "Body paragraph 1 (Describe their relevant skills and qualities, providing specific examples)", - "Body paragraph 2 (Discuss their achievements or contributions, with context and impact)", - "Body paragraph 3 (Optional: Mention character traits, teamwork, or specific anecdotes)", - "Overall Endorsement (Summarize your strong recommendation and why they are a good fit)", - "Closing paragraph (Offer to provide further information)", - "Complimentary close (Formal)", - "Signature (Typed name and title)" - ], - "guidance": "Be specific, positive, and credible. Use concrete examples and anecdotes to support your recommendation. Clearly state your relationship with the person and for what opportunity you are recommending them." - }, - # Default recommendation letter template if subtype is not found - "default": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Letter of Recommendation for [Name])", - "Salutation", - "Introduction", - "Body paragraphs describing qualifications and experiences", - "Specific examples and anecdotes", - "Overall endorsement and recommendation", - "Closing and offer for further information", - "Complimentary close", - "Signature" - ], - "guidance": "Provide a strong, positive, and specific endorsement based on your professional or academic relationship with the individual." - } - }, - "complaint": { - # Complaint letters are often considered a subtype of Formal or Business, - # but can be a top-level type. Keeping the structure consistent. - "product": { - "structure": [ - "Your contact information", - "Date", - "Company contact information", - "Subject line (Complaint Regarding [Product Name/Model])", - "Salutation (Formal)", - "Introduction (State purpose: complaining about a product, include product name, model, date/place of purchase)", - "Problem description (Explain the specific defect or issue with the product in detail)", - "History of the problem (Mention if you've tried fixing it, contacted support, etc.)", - "Desired resolution (Clearly state if you want a refund, replacement, repair)", - "Call to action (State what you expect the company to do and by when)", - "Closing paragraph (Reference attached documents like receipt, express expectation for resolution)", - "Complimentary close (Formal)", - "Signature" - ], - "guidance": "Be clear, factual, and specific about the product issue and your desired resolution. Include all relevant details like model number, date of purchase, and copies of receipts. Maintain a firm but professional tone." - }, - "service": { - "structure": [ - "Your contact information", - "Date", - "Company/Service Provider contact information", - "Subject line (Complaint Regarding [Service Type/Issue])", - "Salutation (Formal)", - "Introduction (State purpose: complaining about a service received, include date/time/location of service)", - "Problem description (Explain the specific issue with the service provided in detail)", - "Impact of the issue (Explain how this problem affected you)", - "Desired resolution (Clearly state what you want: refund, re-performance of service, compensation)", - "Call to action (State what you expect the company to do and by when)", - "Closing paragraph (Reference any relevant documents, express expectation for resolution)", - "Complimentary close (Formal)", - "Signature" - ], - "guidance": "Be clear, factual, and specific about the service issue and your desired resolution. Include details like dates, times, and names of service providers if possible. Maintain a firm but professional tone." - }, - "billing": { - "structure": [ - "Your contact information", - "Date", - "Company contact information", - "Subject line (Complaint Regarding Billing Error - Account #[Your Account Number])", - "Salutation (Formal)", - "Introduction (State purpose: complaining about a billing error, include account number and invoice number)", - "Problem description (Explain the specific error on the bill: incorrect charge, double billing, etc.)", - "Provide supporting evidence (Reference payments made, attach relevant statements)", - "Desired resolution (Clearly state what you want: correction of bill, refund, credit)", - "Call to action (State what you expect the company to do and by when)", - "Closing paragraph (Reference attached documents, express expectation for resolution)", - "Complimentary close (Formal)", - "Signature" - ], - "guidance": "Be clear, factual, and specific about the billing error. Provide supporting documentation like invoices or payment records. Clearly state the desired correction." - }, - # Default complaint letter template if subtype is not found - "default": { - "structure": [ - "Your contact information", - "Date", - "Recipient's contact information", - "Subject line (Complaint Regarding [Issue Summary])", - "Salutation", - "Introduction (State the purpose of the letter - to complain)", - "Detailed description of the problem", - "Explanation of the impact", - "Desired resolution", - "Call to action", - "Closing", - "Signature" - ], - "guidance": "Be clear, factual, and specific about the issue and your desired resolution. Maintain a respectful but firm tone and provide relevant details." - } - }, - "thank_you": { - # Thank You letters are often considered a subtype of Personal or Business, - # but can be a top-level type. Keeping the structure consistent. - "personal": { - "structure": [ - "Greeting", - "Express gratitude clearly and sincerely", - "Specify what you are thankful for (gift, favor, support)", - "Explain the impact it had on you or how you used it", - "Share a personal thought or memory related to it (optional)", - "Look to the future or express continued appreciation", - "Closing" - ], - "guidance": "Be warm, sincere, and specific about what you are thankful for. Personalize the message and explain the impact of their action or gift." - }, - "professional": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Thank You - [Your Name])", - "Salutation (Formal/Semi-formal)", - "Express gratitude clearly (e.g., Thank you for the interview, thank you for your help)", - "Specify what you are thankful for (Meeting date/topic, specific assistance)", - "Reiterate interest or connection (e.g., Reiterate interest in the job, mention something discussed)", - "Express appreciation for their time or effort", - "Closing paragraph (Optional: look to future interaction)", - "Complimentary close (Formal/Semi-formal)", - "Signature" - ], - "guidance": "Be prompt, professional, and specific. Reiterate your interest or key points discussed. Send within 24 hours for interviews." - }, - "after_interview": { - "structure": [ - "Your contact information", - "Date", - "Interviewer's contact information", - "Subject line (Thank You - [Your Name] - [Job Title])", - "Salutation (Formal)", - "Express sincere thanks for the interview opportunity", - "Mention the specific position and date of the interview", - "Reiterate your strong interest in the role and the company", - "Reference a specific point discussed during the interview to show engagement", - "Briefly highlight how your skills/experience align with a need discussed", - "Express enthusiasm for next steps", - "Complimentary close (Formal)", - "Signature" - ], - "guidance": "Send within 24 hours of the interview. Be specific, professional, and reiterate your key strengths and interest. Proofread carefully." - }, - # Default thank you letter template if subtype is not found - "default": { - "structure": [ - "Greeting", - "Express thanks", - "Specify reason for thanks", - "Closing" - ], - "guidance": "Be sincere and specific about what you are thankful for." - } - }, - "invitation": { - # Invitation letters are often considered a subtype of Personal or Formal, - # but can be a top-level type. Keeping the structure consistent. - "event": { # e.g., party, gathering, wedding - "structure": [ - "Greeting", - "State the purpose: extending an invitation", - "Event details (Type of event, Host)", - "Date and Time", - "Location (Full address)", - "Purpose/Theme (Optional)", - "Special instructions (Dress code, what to bring, etc. - optional)", - "RSVP information (Date, Contact method)", - "Express anticipation", - "Closing" - ], - "guidance": "Be clear about all the event details (What, When, Where). Make it easy for guests to RSVP. Tone can be formal or informal depending on the event." - }, - "interview": { - "structure": [ - "Company Letterhead", - "Date", - "Candidate's contact information", - "Subject line (Interview Invitation - [Job Title] - [Your Name])", - "Salutation (Formal)", - "State the purpose: inviting them for an interview", - "Specify the position applied for", - "Propose date(s) and time(s) for the interview", - "Provide location details (Address, or link for virtual)", - "Mention who they will meet with (Names and titles)", - "Explain the interview format/duration (Optional)", - "Instructions (What to bring, who to contact with questions)", - "Call to action (Request confirmation or scheduling)", - "Closing paragraph (Express anticipation)", - "Complimentary close (Formal)", - "Signature (Interviewer/HR Contact Name and Title)" - ], - "guidance": "Be professional, clear, and provide all necessary details for the candidate. Make the scheduling process straightforward." - }, - "meeting": { - "structure": [ - "Sender's contact information", - "Date", - "Recipient's contact information", - "Subject line (Invitation to Meeting - [Meeting Topic])", - "Salutation", - "State the purpose: inviting them to a meeting", - "Meeting details (Date, Time, Location/Virtual link)", - "Purpose/Agenda (Clearly state what the meeting is about)", - "Expected duration (Optional)", - "Preparation required (Optional: Documents to review)", - "RSVP information (Optional)", - "Closing paragraph", - "Complimentary close", - "Signature" - ], - "guidance": "Be clear about the purpose, date, time, and location. Provide an agenda so attendees can prepare. The tone can be formal or informal depending on the context." - }, - # Default invitation letter template if subtype is not found - "default": { - "structure": [ - "Greeting", - "Invitation statement", - "Event/Meeting details (What, When, Where)", - "Purpose (Optional)", - "RSVP information", - "Closing" - ], - "guidance": "Be clear and specific about the details of the event or meeting." - } - }, - # Overall default template if letter type is not recognized - "default": { - "structure": [ - "Introduction", - "Body paragraphs", - "Conclusion" - ], - "guidance": "Be clear, concise, and appropriate for your audience and purpose. This is a generic structure." - } -} - - -def get_template_by_type(letter_type: str, subtype: str = "default") -> Dict[str, Any]: - """ - Get a template for a specific letter type and subtype using a dictionary lookup. - - Args: - letter_type: Type of letter (e.g., "personal", "formal", "business", "cover"). - subtype: Subtype of letter (e.g., "congratulations", "application", "sales"). - Defaults to "default" if no subtype is specified. - - Returns: - Template dictionary with 'structure' (List[str]) and 'guidance' (str). - Returns the default template if the letter type or subtype is not found. - """ - # Get templates for the specific letter type, or the overall default templates - type_templates = TEMPLATES.get(letter_type, TEMPLATES["default"]) - - # Get the template for the specific subtype, or the default for that letter type - template = type_templates.get(subtype, type_templates.get("default", TEMPLATES["default"])) # Fallback to overall default - - # Ensure the returned template always has 'structure' and 'guidance' keys - # This handles cases where an incomplete template might have been defined (error tolerance) - if "structure" not in template or not isinstance(template["structure"], list): - template["structure"] = ["Introduction", "Body", "Conclusion"] - template["guidance"] = "Generic template: structure or guidance missing." - - if "guidance" not in template or not isinstance(template["guidance"], str): - template["guidance"] = "Generic guidance: structure or guidance missing." - - - return template - -# Example usage (for testing purposes) -if __name__ == '__main__': - # Test cases - print("--- Testing Letter Templates ---") - - personal_congrats = get_template_by_type("personal", "congratulations") - print("\nPersonal Congratulations Template:") - print(f"Structure: {personal_congrats['structure']}") - print(f"Guidance: {personal_congrats['guidance']}") - - formal_complaint = get_template_by_type("formal", "complaint") - print("\nFormal Complaint Template:") - print(f"Structure: {formal_complaint['structure']}") - print(f"Guidance: {formal_complaint['guidance']}") - - business_sales = get_template_by_type("business", "sales") - print("\nBusiness Sales Template:") - print(f"Structure: {business_sales['structure']}") - print(f"Guidance: {business_sales['guidance']}") - - cover_entry_level = get_template_by_type("cover", "entry_level") - print("\nCover Entry Level Template:") - print(f"Structure: {cover_entry_level['structure']}") - print(f"Guidance: {cover_entry_level['guidance']}") - - unknown_type = get_template_by_type("unknown_type", "some_subtype") - print("\nUnknown Type Template (Should be Default):") - print(f"Structure: {unknown_type['structure']}") - print(f"Guidance: {unknown_type['guidance']}") - - personal_unknown_subtype = get_template_by_type("personal", "unknown_subtype") - print("\nPersonal Unknown Subtype Template (Should be Personal Default):") - print(f"Structure: {personal_unknown_subtype['structure']}") - print(f"Guidance: {personal_unknown_subtype['guidance']}") \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/ai_outline_writer/README.md b/ToBeMigrated/ai_writers/ai_outline_writer/README.md deleted file mode 100644 index 2cd573c1..00000000 --- a/ToBeMigrated/ai_writers/ai_outline_writer/README.md +++ /dev/null @@ -1,557 +0,0 @@ -# Blog Outline Generator - -A powerful AI-powered tool for generating comprehensive blog outlines with advanced editing capabilities, content generation, and image integration. - -## ๐Ÿ›  Technical Architecture - -### Core Components -- **Backend**: Python-based implementation using Streamlit for UI -- **AI Integration**: - - Text Generation: Integration with multiple LLM providers (Gemini, OpenAI, Anthropic) - - Image Generation: Support for multiple image generation APIs (Gemini-AI, Dalle3, Stability-AI) -- **Data Structures**: - ```python - class OutlineConfig: - content_type: ContentType - content_depth: ContentDepth - outline_style: OutlineStyle - target_word_count: int - num_main_sections: int - num_subsections_per_section: int - include_images: bool - image_style: str - image_engine: str - ``` - -### Key Technologies -- **Streamlit**: Web application framework -- **Asyncio**: Asynchronous operations for AI calls -- **Loguru**: Advanced logging system -- **BeautifulSoup**: Web content parsing -- **Pydantic**: Data validation -- **Markdown**: Content formatting - -## ๐ŸŒŸ Features with Examples - -### 1. Content Generation -- **AI-Powered Content Creation**: - ```python - # Example prompt for content generation - prompt = f""" - Generate content for a {content_type} article about {topic}. - Target audience: {target_audience} - Word count: {target_word_count} - Style: {outline_style} - """ - content = await llm_text_gen(prompt) - ``` - -- **Multiple Content Types**: - ```python - # Example configuration for different content types - config = OutlineConfig( - content_type=ContentType.TUTORIAL, - content_depth=ContentDepth.INTERMEDIATE, - target_word_count=2000 - ) - ``` - -### 2. Outline Structure -- **Flexible Section Management**: - ```python - # Example section generation - async def generate_sections(self, topic: str) -> List[str]: - sections = [] - for i in range(self.config.num_main_sections): - section = await self._generate_section(topic, i) - sections.append(section) - return sections - ``` - -- **Optional Components**: - ```python - # Example FAQ generation - async def generate_faqs(self, topic: str) -> List[str]: - prompt = f""" - Generate 5 common questions about {topic} - Content type: {self.config.content_type} - Target audience: {self.config.target_audience} - """ - return await llm_text_gen(prompt) - ``` - -### 3. Advanced Editing Capabilities -- **Section Content Editor**: - ```python - # Example content editing interface - def edit_section_content(self, section: str, content: str) -> str: - edited_content = st.text_area( - "Edit Content", - value=content, - height=300, - key=f"content_edit_{section}" - ) - return edited_content - ``` - -- **Subsection Management**: - ```python - # Example subsection reordering - def reorder_subsections(self, section: str, subsections: List[str]) -> List[str]: - for i, subsection in enumerate(subsections): - if st.button("โ†‘", key=f"move_up_{section}_{i}"): - subsections[i], subsections[i-1] = subsections[i-1], subsections[i] - return subsections - ``` - -### 4. Image Generation -- **AI Image Generation**: - ```python - # Example image generation - async def generate_image(self, prompt: str, style: str) -> str: - image_prompt = f""" - Create a {style} image for: {prompt} - Style: {self.config.image_style} - """ - return await generate_image(image_prompt) - ``` - -### 5. Content Optimization -- **SEO Features**: - ```python - # Example SEO optimization - def optimize_content(self, content: str, keywords: List[str]) -> str: - for keyword in keywords: - content = self._naturally_insert_keyword(content, keyword) - return content - ``` - -## ๐Ÿ“Š Technical Implementation Details - -### 1. Content Generation Pipeline -```python -async def generate_content(self, topic: str) -> Dict: - # 1. Generate outline structure - outline = await self.generate_outline(topic) - - # 2. Generate content for each section - for section in outline: - content = await self.generate_section_content(section) - outline[section]['content'] = content - - # 3. Generate images if enabled - if self.config.include_images: - for section in outline: - image = await self.generate_section_image(section) - outline[section]['image'] = image - - return outline -``` - -### 2. AI Integration -```python -class AIIntegration: - def __init__(self, provider: str): - self.provider = provider - self.model = self._initialize_model() - - async def generate_text(self, prompt: str) -> str: - if self.provider == "gemini": - return await gemini_text_response(prompt) - elif self.provider == "openai": - return await openai_chatgpt(prompt) -``` - -### 3. Image Processing -```python -class ImageProcessor: - def __init__(self, engine: str): - self.engine = engine - - async def generate_image(self, prompt: str) -> str: - if self.engine == "Gemini-AI": - return await generate_gemini_image(prompt) - elif self.engine == "Dalle3": - return await generate_dalle3_images(prompt) -``` - -## ๐Ÿ”ง Configuration Examples - -### 1. Basic Configuration -```python -config = OutlineConfig( - content_type=ContentType.GUIDE, - content_depth=ContentDepth.INTERMEDIATE, - target_word_count=2000, - num_main_sections=5, - num_subsections_per_section=3 -) -``` - -### 2. Advanced Configuration -```python -config = OutlineConfig( - content_type=ContentType.TUTORIAL, - content_depth=ContentDepth.ADVANCED, - outline_style=OutlineStyle.MODERN, - target_word_count=3000, - include_images=True, - image_style="realistic", - image_engine="Gemini-AI", - target_audience="developers", - language="English", - keywords=["python", "tutorial", "advanced"] -) -``` - -## ๐Ÿ“ Usage Examples - -### 1. Basic Usage -```python -# Initialize generator -generator = BlogOutlineGenerator() - -# Generate outline -outline = await generator.generate_outline("Python Programming Basics") - -# Export to markdown -markdown = generator.to_markdown() -``` - -### 2. Advanced Usage -```python -# Custom configuration -config = OutlineConfig( - content_type=ContentType.TUTORIAL, - content_depth=ContentDepth.ADVANCED, - include_images=True -) - -# Initialize with config -generator = BlogOutlineGenerator(config) - -# Generate with custom settings -outline = await generator.generate_outline( - "Advanced Python Decorators", - keywords=["python", "decorators", "advanced"] -) - -# Export to multiple formats -markdown = generator.to_markdown() -json_output = generator.to_json() -html_output = generator.to_html() -``` - -## ๐Ÿ” Technical Considerations - -### 1. Performance Optimization -- Asynchronous operations for AI calls -- Caching of generated content -- Batch processing for images -- Memory management for large documents - -### 2. Error Handling -```python -try: - content = await llm_text_gen(prompt) -except Exception as e: - logger.error(f"Content generation failed: {e}") - return None -``` - -### 3. Data Validation -```python -from pydantic import BaseModel, validator - -class SectionContent(BaseModel): - title: str - content: str - image_path: Optional[str] - - @validator('content') - def validate_content_length(cls, v): - if len(v.split()) < 100: - raise ValueError("Content too short") - return v -``` - -## ๐ŸŒŸ Features - -### 1. Content Generation -- **AI-Powered Content Creation**: Generate high-quality content for each section using advanced language models -- **Multiple Content Types**: Support for various content formats including: - - How-to guides - - Tutorials - - Listicles - - Comparisons - - Case studies - - Opinion pieces - - News articles - - Reviews - - General guides -- **Customizable Content Depth**: - - Basic: Simple, easy-to-understand content - - Intermediate: Balanced depth with practical examples - - Advanced: Detailed technical content - - Expert: In-depth analysis and advanced concepts - -### 2. Outline Structure -- **Flexible Section Management**: - - Customizable number of main sections - - Configurable subsections per section - - Dynamic section reordering - - Easy addition/removal of sections -- **Optional Components**: - - Introduction section - - Conclusion section - - FAQ section - - Additional resources section - -### 3. Advanced Editing Capabilities -- **Section Content Editor**: - - Rich text editing interface - - Real-time word count tracking - - Formatting options (Bold, Italic, Lists, Code Blocks, Links) - - AI-powered content enhancement -- **Subsection Management**: - - Drag-and-drop reordering - - Individual subsection editing - - Add/remove subsection functionality - - Bulk editing capabilities -- **Metadata Editing**: - - Section-specific settings - - Content depth adjustment - - Target word count configuration - - Image settings customization - -### 4. Image Generation -- **AI Image Generation**: - - Multiple image styles (realistic, illustration, minimalist, photographic, artistic) - - Support for multiple image engines (Gemini-AI, Dalle3, Stability-AI) - - Custom image prompts - - Image regeneration capability -- **Image Integration**: - - Automatic image placement - - Image preview and editing - - Image prompt viewing and editing - - Image style customization - -### 5. Content Optimization -- **SEO Features**: - - Keyword integration - - Content structure optimization - - Meta description generation - - SEO-friendly formatting -- **Audience Targeting**: - - Customizable target audience - - Language selection - - Content tone adjustment - - Reading level optimization - -### 6. Export Options -- **Multiple Formats**: - - Markdown export - - JSON export - - HTML export - - Custom formatting options -- **Download Capabilities**: - - One-click download - - Format-specific styling - - Custom file naming - - Batch export options - -### 7. User Interface -- **Intuitive Design**: - - Clean, modern interface - - Responsive layout - - Easy navigation - - Clear visual hierarchy -- **Interactive Features**: - - Real-time preview - - Drag-and-drop functionality - - Quick edit options - - Contextual help - -### 8. Statistics and Analytics -- **Content Metrics**: - - Word count tracking - - Section statistics - - Subsection counts - - Content depth analysis -- **Progress Tracking**: - - Generation progress - - Edit history - - Version comparison - - Performance metrics - -## ๐Ÿš€ Getting Started - -### Installation -```bash -pip install -r requirements.txt -``` - -### Usage -1. Launch the application: -```bash -streamlit run lib/ai_writers/ai_outline_writer/outline_ui.py -``` - -2. Configure your outline: - - Enter your blog topic - - Select content type and depth - - Choose outline style - - Set target word count - - Configure sections and subsections - -3. Generate and edit: - - Click "Generate Outline" - - Review and edit sections - - Customize content and images - - Export in your preferred format - -## ๐Ÿ”ง Configuration Options - -### Basic Settings -- **Blog Topic**: Main subject of your content -- **Content Type**: Type of content to generate -- **Content Depth**: Level of detail and complexity -- **Outline Style**: Structure and formatting style - -### Advanced Settings -- **Target Word Count**: Desired length of the content -- **Number of Sections**: Customize main sections -- **Subsections**: Configure subsections per section -- **Image Settings**: Customize image generation -- **Target Audience**: Define your audience -- **Language**: Select content language -- **Keywords**: Add SEO keywords -- **Excluded Topics**: Specify topics to avoid - -## ๐Ÿ“Š Output Formats - -### 1. Preview Mode -- Interactive preview of the entire outline -- Real-time editing capabilities -- Image preview and management -- Content statistics - -### 2. Markdown Export -- Clean markdown formatting -- Proper heading hierarchy -- Image embedding -- Code block formatting - -### 3. JSON Export -- Structured data format -- Complete outline information -- Content and image metadata -- Configuration details - -### 4. HTML Export -- Styled HTML output -- Responsive design -- Image integration -- Custom CSS support - -## ๐Ÿ’ก Best Practices - -### Content Generation -1. Start with a clear topic and target audience -2. Choose appropriate content type and depth -3. Use relevant keywords for SEO -4. Review and edit generated content -5. Add personal insights and examples - -### Outline Structure -1. Maintain logical flow between sections -2. Balance section lengths -3. Include relevant subsections -4. Add appropriate transitions -5. Ensure comprehensive coverage - -### Image Usage -1. Choose appropriate image styles -2. Generate relevant images -3. Optimize image placement -4. Review image prompts -5. Consider image licensing - -## ๐Ÿ”„ Workflow - -1. **Initial Setup** - - Configure basic settings - - Set content parameters - - Define target audience - -2. **Generation** - - Generate initial outline - - Review structure - - Generate content - - Create images - -3. **Editing** - - Review and edit content - - Adjust structure - - Customize images - - Optimize for SEO - -4. **Export** - - Choose export format - - Review final output - - Download content - - Save configuration - -## ๐Ÿ“ Tips and Tricks - -### Content Generation -- Use specific keywords for better results -- Provide clear context for the AI -- Review and refine generated content -- Add personal expertise - -### Structure Optimization -- Maintain consistent section lengths -- Use clear subsection hierarchies -- Include relevant examples -- Add practical applications - -### Image Enhancement -- Use descriptive image prompts -- Experiment with different styles -- Consider image placement -- Review image relevance - -## ๐Ÿค Contributing - -We welcome contributions! Please follow these steps: -1. Fork the repository -2. Create a feature branch -3. Make your changes -4. Submit a pull request - -## ๐Ÿ“„ License - -This project is licensed under the MIT License - see the LICENSE file for details. - -## ๐Ÿ“ž Support - -For support, please: -1. Check the documentation -2. Review existing issues -3. Create a new issue if needed -4. Contact the maintainers - -## ๐Ÿ”ฎ Future Enhancements - -Planned features: -- Multi-language support -- Advanced AI models -- More export formats -- Enhanced editing tools -- Collaboration features -- Version control integration -- Analytics dashboard -- Custom templates -- API integration -- Mobile optimization \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/ai_outline_writer/get_blog_outline.py b/ToBeMigrated/ai_writers/ai_outline_writer/get_blog_outline.py deleted file mode 100644 index 6645a78a..00000000 --- a/ToBeMigrated/ai_writers/ai_outline_writer/get_blog_outline.py +++ /dev/null @@ -1,317 +0,0 @@ -""" -Enhanced Blog Outline Generator - -This module provides a sophisticated outline generation system that creates detailed, -well-structured outlines for blog posts based on user preferences and content requirements. -""" - -import sys -from typing import Dict, List, Optional -from enum import Enum -from dataclasses import dataclass -from loguru import logger -import json - -from lib.gpt_providers.text_generation.main_text_generation import llm_text_gen -from lib.gpt_providers.text_to_image_generation.main_generate_image_from_prompt import generate_image - -logger.remove() -logger.add(sys.stdout, - colorize=True, - format="{level}|{file}:{line}:{function}| {message}") - -class ContentType(Enum): - """Types of content that can be generated.""" - HOW_TO = "how-to" - TUTORIAL = "tutorial" - LISTICLE = "listicle" - COMPARISON = "comparison" - CASE_STUDY = "case-study" - OPINION = "opinion" - NEWS = "news" - REVIEW = "review" - GUIDE = "guide" - -class ContentDepth(Enum): - """Depth levels for content coverage.""" - BASIC = "basic" - INTERMEDIATE = "intermediate" - ADVANCED = "advanced" - EXPERT = "expert" - -class OutlineStyle(Enum): - """Styles for outline structure.""" - TRADITIONAL = "traditional" - MODERN = "modern" - CONVERSATIONAL = "conversational" - ACADEMIC = "academic" - SEO_OPTIMIZED = "seo-optimized" - -@dataclass -class OutlineConfig: - """Configuration for outline generation.""" - content_type: ContentType = ContentType.GUIDE - content_depth: ContentDepth = ContentDepth.INTERMEDIATE - outline_style: OutlineStyle = OutlineStyle.MODERN - target_word_count: int = 2000 - num_main_sections: int = 5 - num_subsections_per_section: int = 3 - include_introduction: bool = True - include_conclusion: bool = True - include_faqs: bool = True - include_resources: bool = True - target_audience: str = "general" - language: str = "English" - keywords: List[str] = None - exclude_topics: List[str] = None - include_images: bool = True - image_style: str = "realistic" - image_engine: str = "Gemini-AI" - -@dataclass -class SectionContent: - """Content for a section including text and image.""" - title: str - content: str - image_prompt: Optional[str] = None - image_path: Optional[str] = None - -class BlogOutlineGenerator: - """Enhanced blog outline generator with comprehensive controls.""" - - def __init__(self, config: Optional[OutlineConfig] = None): - """Initialize the outline generator with optional configuration.""" - self.config = config or OutlineConfig() - self.outline = {} - self.section_contents = {} - - def generate_outline(self, topic: str) -> Dict[str, List[str]]: - """Generate a blog outline based on the topic and configuration.""" - try: - # Create a focused prompt for outline generation - prompt = f"""Generate a blog outline for topic: {topic} - -Content Type: {self.config.content_type.value} -Target Audience: {self.config.target_audience} -Content Depth: {self.config.content_depth.value} -Style: {self.config.outline_style.value} -Word Count Target: {self.config.target_word_count} -Main Sections: {self.config.num_main_sections} -Subsections per Section: {self.config.num_subsections_per_section} - -Requirements: -- Create exactly {self.config.num_main_sections} main sections -- Each section should have exactly {self.config.num_subsections_per_section} subsections -- Focus on {self.config.content_type.value} content style -- Target {self.config.target_audience} audience -- Maintain {self.config.content_depth.value} depth -- Follow {self.config.outline_style.value} style -- Optimize for {self.config.target_word_count} words total - -IMPORTANT: You must return a valid JSON object with main sections as keys and lists of subsections as values. -Example format: {{"Section 1": ["Subsection 1.1", "Subsection 1.2"], "Section 2": ["Subsection 2.1", "Subsection 2.2"]}} -Do not include any additional text or explanations, only the JSON object.""" - - # Get outline from LLM - outline_json = llm_text_gen(prompt) - - # Clean the response to ensure it's valid JSON - outline_json = outline_json.strip() - if not outline_json.startswith('{'): - outline_json = outline_json[outline_json.find('{'):] - if not outline_json.endswith('}'): - outline_json = outline_json[:outline_json.rfind('}')+1] - - # Parse the outline - try: - outline = json.loads(outline_json) - except json.JSONDecodeError as e: - logger.error(f"JSON parsing error: {str(e)}") - logger.error(f"Raw response: {outline_json}") - # Fallback to a basic outline structure - outline = { - f"Section {i+1}": [f"Subsection {i+1}.{j+1}" for j in range(self.config.num_subsections_per_section)] - for i in range(self.config.num_main_sections) - } - - # Add introduction and conclusion if configured - if self.config.include_introduction: - outline = {"Introduction": ["Overview", "Importance", "What to Expect"]} | outline - - if self.config.include_conclusion: - outline["Conclusion"] = ["Summary", "Key Takeaways", "Next Steps"] - - # Add FAQs if configured - if self.config.include_faqs: - # Generate topic-specific FAQs - faq_prompt = f"""Generate 3 specific and relevant FAQ questions for a blog post about: {topic} - -Content Type: {self.config.content_type.value} -Target Audience: {self.config.target_audience} -Content Depth: {self.config.content_depth.value} - -Requirements: -- Questions should be specific to the topic -- Cover common concerns and important aspects -- Be relevant to the target audience -- Include both basic and advanced questions - -Format: Return only a JSON array of 3 questions. -Example format: ["Question 1?", "Question 2?", "Question 3?"]""" - - try: - faq_json = llm_text_gen(faq_prompt) - faq_json = faq_json.strip() - if not faq_json.startswith('['): - faq_json = faq_json[faq_json.find('['):] - if not faq_json.endswith(']'): - faq_json = faq_json[:faq_json.rfind(']')+1] - - faqs = json.loads(faq_json) - outline["Frequently Asked Questions"] = faqs - except Exception as e: - logger.error(f"Error generating FAQs: {str(e)}") - outline["Frequently Asked Questions"] = [ - f"Common Question about {topic} 1", - f"Common Question about {topic} 2", - f"Common Question about {topic} 3" - ] - - # Add resources if configured - if self.config.include_resources: - outline["Additional Resources"] = [ - "Further Reading", - "Tools and References", - "Related Topics" - ] - - return outline - - except Exception as e: - logger.error(f"Error generating outline: {str(e)}") - return {} - - def generate_section_content(self, section: str, subsections: List[str]) -> Optional[SectionContent]: - """Generate content for a section.""" - try: - # Create a focused prompt for content generation - prompt = f"""Generate content for section: {section} - -Subsections: {', '.join(subsections)} -Content Type: {self.config.content_type.value} -Target Audience: {self.config.target_audience} -Content Depth: {self.config.content_depth.value} -Style: {self.config.outline_style.value} -Word Count Target: {self.config.target_word_count // self.config.num_main_sections} - -Requirements: -- Write content for each subsection -- Maintain {self.config.content_depth.value} depth -- Target {self.config.target_audience} audience -- Follow {self.config.outline_style.value} style -- Optimize for {self.config.target_word_count // self.config.num_main_sections} words -- Include relevant examples and data points -- Use clear, engaging language - -Format: Return only a JSON object with 'content' and 'image_prompt' fields. -Example format: {{"content": "Section content here...", "image_prompt": "Image description here..."}}""" - - # Get content from LLM - content_json = llm_text_gen(prompt) - content_data = json.loads(content_json) - - # Generate image if configured - image_path = None - if self.config.include_images: - image_path = self.generate_section_image(section) - - return SectionContent( - title=section, - content=content_data["content"], - image_prompt=content_data.get("image_prompt"), - image_path=image_path - ) - - except Exception as e: - logger.error(f"Error generating content for section {section}: {str(e)}") - return None - - def generate_section_image(self, section: str) -> Optional[str]: - """Generate an image for a section.""" - try: - # Create a focused prompt for image generation - prompt = f"""Generate an image prompt for section: {section} - -Style: {self.config.image_style} -Engine: {self.config.image_engine} -Content Type: {self.config.content_type.value} -Target Audience: {self.config.target_audience} - -Requirements: -- Create a {self.config.image_style} style image -- Optimize for {self.config.image_engine} engine -- Match {self.config.content_type.value} content type -- Appeal to {self.config.target_audience} audience -- Be visually engaging and relevant - -Format: Return only a JSON object with an 'image_prompt' field. -Example format: {{"image_prompt": "Detailed image description here..."}}""" - - # Get image prompt from LLM - prompt_json = llm_text_gen(prompt) - prompt_data = json.loads(prompt_json) - - # Generate image using the specified engine - if self.config.image_engine == "Gemini-AI": - image_path = generate_gemini_image(prompt_data["image_prompt"]) - elif self.config.image_engine == "Dalle3": - image_path = generate_dalle_image(prompt_data["image_prompt"]) - else: # Stability-AI - image_path = generate_stability_image(prompt_data["image_prompt"]) - - return image_path - - except Exception as e: - logger.error(f"Error generating image for section {section}: {str(e)}") - return None - - def to_markdown(self) -> str: - """Convert outline to markdown format with content and images.""" - markdown = f"# {self.outline.get('Introduction', [''])[0]}\n\n" - - for section, subsections in self.outline.items(): - if section not in ["Introduction", "Conclusion", "FAQs", "Additional Resources"]: - markdown += f"## {section}\n\n" - - # Add section content if available - if section in self.section_contents: - content = self.section_contents[section] - markdown += f"{content.content}\n\n" - - # Add image if available - if content.image_path: - markdown += f"![{section}]({content.image_path})\n\n" - - # Add subsections - for subsection in subsections: - markdown += f"- {subsection}\n" - markdown += "\n" - - if "Conclusion" in self.outline: - markdown += "## Conclusion\n\n" - for subsection in self.outline["Conclusion"]: - markdown += f"- {subsection}\n" - markdown += "\n" - - if "FAQs" in self.outline: - markdown += "## Frequently Asked Questions\n\n" - for faq in self.outline["FAQs"]: - markdown += f"- {faq}\n" - markdown += "\n" - - if "Additional Resources" in self.outline: - markdown += "## Additional Resources\n\n" - for resource in self.outline["Additional Resources"]: - markdown += f"- {resource}\n" - - return markdown diff --git a/ToBeMigrated/ai_writers/ai_outline_writer/outline_ui.py b/ToBeMigrated/ai_writers/ai_outline_writer/outline_ui.py deleted file mode 100644 index 622b01f4..00000000 --- a/ToBeMigrated/ai_writers/ai_outline_writer/outline_ui.py +++ /dev/null @@ -1,739 +0,0 @@ -""" -Streamlit UI for Enhanced Blog Outline Generator - -This module provides a user-friendly interface for generating comprehensive blog outlines -with AI-powered content and image generation capabilities. -""" - -import streamlit as st -import asyncio -from pathlib import Path -from typing import Optional, Dict, List -import json -import time -from datetime import datetime - -from .get_blog_outline import ( - BlogOutlineGenerator, - OutlineConfig, - ContentType, - ContentDepth, - OutlineStyle -) - -# Custom CSS for better styling -st.markdown(""" - -""", unsafe_allow_html=True) - -def edit_section_content(section: str, content: str) -> str: - """Edit section content with advanced options.""" - st.markdown('
', unsafe_allow_html=True) - - # Content editing - edited_content = st.text_area( - "Edit Content", - value=content, - height=300, - key=f"content_edit_{section}" - ) - - # Word count and formatting - col1, col2 = st.columns(2) - with col1: - word_count = len(edited_content.split()) - st.info(f"Word Count: {word_count}") - - with col2: - formatting = st.multiselect( - "Formatting Options", - ["Bold", "Italic", "Lists", "Code Blocks", "Links"], - key=f"format_{section}" - ) - - # AI enhancement options - with st.expander("AI Enhancement Options"): - enhance_options = st.multiselect( - "Select Enhancements", - ["Improve Clarity", "Add Examples", "Expand Details", "Add Statistics", "Improve SEO"], - key=f"enhance_{section}" - ) - - if st.button("Apply Enhancements", key=f"apply_enhance_{section}"): - with st.spinner("Applying enhancements..."): - # TODO: Implement AI enhancement logic - st.success("Enhancements applied!") - - st.markdown('
', unsafe_allow_html=True) - return edited_content - -def edit_subsections(section: str, subsections: List[str]) -> List[str]: - """Edit subsections with reordering and editing capabilities.""" - st.markdown('
', unsafe_allow_html=True) - - # Reorder subsections - st.markdown("### Reorder Subsections") - for i, subsection in enumerate(subsections): - col1, col2 = st.columns([4, 1]) - with col1: - subsections[i] = st.text_input( - f"Subsection {i+1}", - value=subsection, - key=f"subsection_{section}_{i}" - ) - with col2: - if st.button("โ†‘", key=f"move_up_{section}_{i}") and i > 0: - subsections[i], subsections[i-1] = subsections[i-1], subsections[i] - st.experimental_rerun() - if st.button("โ†“", key=f"move_down_{section}_{i}") and i < len(subsections)-1: - subsections[i], subsections[i+1] = subsections[i+1], subsections[i] - st.experimental_rerun() - - # Add/remove subsections - col1, col2 = st.columns(2) - with col1: - if st.button("Add Subsection", key=f"add_sub_{section}"): - subsections.append("New Subsection") - st.experimental_rerun() - with col2: - if st.button("Remove Last Subsection", key=f"remove_sub_{section}"): - if subsections: - subsections.pop() - st.experimental_rerun() - - st.markdown('
', unsafe_allow_html=True) - return subsections - -def edit_section_metadata(section: str, generator: BlogOutlineGenerator): - """Edit section metadata and settings.""" - st.markdown('
', unsafe_allow_html=True) - - # Section settings - st.markdown("### Section Settings") - - # Image settings - if generator.config.include_images: - col1, col2 = st.columns(2) - with col1: - new_image_style = st.selectbox( - "Image Style", - ["realistic", "illustration", "minimalist", "photographic", "artistic"], - key=f"img_style_{section}" - ) - with col2: - new_image_engine = st.selectbox( - "Image Engine", - ["Gemini-AI", "Dalle3", "Stability-AI"], - key=f"img_engine_{section}" - ) - - if st.button("Regenerate Image", key=f"regen_img_{section}"): - with st.spinner("Regenerating image..."): - # TODO: Implement image regeneration logic - st.success("Image regenerated!") - - # Content settings - st.markdown("### Content Settings") - col1, col2 = st.columns(2) - with col1: - target_word_count = st.number_input( - "Target Word Count", - min_value=100, - max_value=2000, - value=500, - step=100, - key=f"word_count_{section}" - ) - with col2: - content_depth = st.selectbox( - "Content Depth", - [depth.value for depth in ContentDepth], - key=f"depth_{section}" - ) - - st.markdown('
', unsafe_allow_html=True) - -def display_section(section: str, subsections: List[str], content: Optional[Dict] = None, generator: Optional[BlogOutlineGenerator] = None): - """Display a section with its content and subsections.""" - st.markdown(f""" -
-
{section}
- """, unsafe_allow_html=True) - - # Section editing controls - col1, col2 = st.columns([4, 1]) - with col1: - st.markdown(f"### {section}") - with col2: - edit_mode = st.checkbox("Edit Mode", key=f"edit_mode_{section}") - - if content: - # Display content with word count - word_count = len(content.content.split()) - st.markdown(f""" -
-

Content Preview ({word_count} words)

- {content.content[:500]}... -
- """, unsafe_allow_html=True) - - # Image generation and display - Always show if images are enabled - if generator and generator.config.include_images: - st.markdown("### Image Generation") - col1, col2, col3 = st.columns([2, 2, 1]) - - with col1: - image_style = st.selectbox( - "Image Style", - ["realistic", "illustration", "minimalist", "photographic", "artistic"], - index=["realistic", "illustration", "minimalist", "photographic", "artistic"].index(generator.config.image_style), - key=f"img_style_{section}" - ) - - with col2: - image_engine = st.selectbox( - "Image Engine", - ["Gemini-AI", "Dalle3", "Stability-AI"], - index=["Gemini-AI", "Dalle3", "Stability-AI"].index(generator.config.image_engine), - key=f"img_engine_{section}" - ) - - with col3: - if st.button("Generate Image", key=f"gen_img_{section}"): - with st.spinner(f"Generating image for {section}..."): - # Update config with selected options - generator.config.image_style = image_style - generator.config.image_engine = image_engine - image_path = generator.generate_section_image(section) - if image_path: - st.success("Image generated successfully!") - st.experimental_rerun() - else: - st.error("Failed to generate image") - - # Display existing image if available - if content.image_path: - st.markdown('
', unsafe_allow_html=True) - st.image(content.image_path, caption=section, use_column_width=True) - st.markdown('
', unsafe_allow_html=True) - - # Display image prompt in expander - if content.image_prompt: - with st.expander("View Image Prompt"): - st.code(content.image_prompt, language="text") - - # Edit mode controls - if edit_mode: - st.markdown("### Edit Content") - # Edit content - edited_content = edit_section_content(section, content.content) - if edited_content != content.content: - content.content = edited_content - st.experimental_rerun() - - st.markdown("### Edit Subsections") - # Edit subsections - edited_subsections = edit_subsections(section, subsections) - if edited_subsections != subsections: - subsections[:] = edited_subsections - st.experimental_rerun() - - st.markdown("### Edit Metadata") - # Edit metadata - if generator: - edit_section_metadata(section, generator) - else: - # Display subsections in view mode - st.markdown("### Subsections") - st.markdown('
', unsafe_allow_html=True) - for subsection in subsections: - st.markdown(f'
โ€ข {subsection}
', unsafe_allow_html=True) - st.markdown('
', unsafe_allow_html=True) - - st.markdown("
", unsafe_allow_html=True) - -def display_stats(generator, outline): - """Display statistics about the generated outline.""" - total_sections = len(outline) - total_subsections = sum(len(subsections) for subsections in outline.values()) - total_content = sum(len(content.content.split()) for content in generator.section_contents.values()) - - col1, col2, col3 = st.columns(3) - with col1: - st.markdown(f""" -
-

๐Ÿ“Š Statistics

-

Total Sections: {total_sections}

-

Total Subsections: {total_subsections}

-

Estimated Word Count: {total_content}

-
- """, unsafe_allow_html=True) - - with col2: - st.markdown(f""" -
-

๐ŸŽฏ Target

-

Target Word Count: {generator.config.target_word_count}

-

Content Depth: {generator.config.content_depth.value}

-

Style: {generator.config.outline_style.value}

-
- """, unsafe_allow_html=True) - - with col3: - st.markdown(f""" -
-

๐Ÿ“ Content Type

-

Type: {generator.config.content_type.value}

-

Audience: {generator.config.target_audience}

-

Language: {generator.config.language}

-
- """, unsafe_allow_html=True) - -def main(): - # Header with description - st.title("Blog Outline Generator") - st.markdown(""" - Generate comprehensive blog outlines with AI-powered content and images. - Customize your outline with various options and get detailed content for each section. - """) - - # Main content area with full width - st.markdown('
', unsafe_allow_html=True) - - # Move topic input to main area and make it more prominent - st.markdown("### Enter Your Blog Topic") - topic = st.text_input("", placeholder="Enter your blog topic here for creating outline...", key="blog_topic") - - st.markdown("---") # Add a separator - st.markdown("### Configuration Options") - - # Create tabs for different configuration sections - tab1, tab2, tab3, tab4 = st.tabs([ - "๐Ÿ“ Content Type & Target", - "๐Ÿ“Š Content Structure", - "๐ŸŽจ Style & Sections", - "๐Ÿ–ผ๏ธ Image & Optimization" - ]) - - with tab1: - st.markdown("#### Content Type & Target") - col1, col2, col3 = st.columns(3) - - with col1: - content_type = st.selectbox( - "Content Type", - [type.value for type in ContentType], - index=[type.value for type in ContentType].index(ContentType.GUIDE.value), - help="Select the type of content you want to generate" - ) - - with col2: - target_audience = st.selectbox( - "Target Audience", - ["General", "Technical", "Professional", "Academic", "Business", "Students", "Developers"], - index=0, - help="Select your target audience" - ) - - with col3: - language = st.selectbox( - "Language", - ["English", "Spanish", "French", "German", "Italian", "Portuguese", "Chinese", "Japanese", "Korean"], - index=0, - help="Select the language for your content" - ) - - with tab2: - st.markdown("#### Content Structure") - col1, col2 = st.columns(2) - - with col1: - num_main_sections = st.slider( - "Number of Main Sections", - min_value=3, - max_value=10, - value=5, - step=1, - help="Choose how many main sections your outline should have" - ) - - num_subsections = st.slider( - "Subsections per Section", - min_value=2, - max_value=5, - value=3, - step=1, - help="Choose how many subsections each main section should have" - ) - - with col2: - target_word_count = st.slider( - "Target Word Count", - min_value=500, - max_value=5000, - value=2000, - step=100, - help="Set your target word count for the entire blog post" - ) - - # Display content statistics - st.markdown("##### Content Statistics") - st.markdown(f""" - - Estimated Sections: {num_main_sections} - - Total Subsections: {num_main_sections * num_subsections} - - Target Word Count: {target_word_count} - - Average Words per Section: {target_word_count // num_main_sections} - """) - - with tab3: - st.markdown("#### Style & Sections") - col1, col2 = st.columns(2) - - with col1: - content_depth = st.selectbox( - "Content Depth", - [depth.value for depth in ContentDepth], - index=[depth.value for depth in ContentDepth].index(ContentDepth.INTERMEDIATE.value), - help="Select the depth of content coverage" - ) - - outline_style = st.selectbox( - "Outline Style", - [style.value for style in OutlineStyle], - index=[style.value for style in OutlineStyle].index(OutlineStyle.MODERN.value), - help="Select the style of your outline" - ) - - with col2: - st.markdown("##### Additional Sections") - include_intro = st.checkbox("Include Introduction", value=True, help="Add an introduction section") - include_conclusion = st.checkbox("Include Conclusion", value=True, help="Add a conclusion section") - include_faqs = st.checkbox("Include FAQs", value=True, help="Add a FAQ section") - include_resources = st.checkbox("Include Resources", value=True, help="Add a resources section") - - with tab4: - st.markdown("#### Image & Optimization") - col1, col2 = st.columns(2) - - with col1: - st.markdown("##### Image Settings") - include_images = st.checkbox("Enable Image Generation", value=True, help="Enable AI image generation for sections") - - if include_images: - image_style = st.selectbox( - "Image Style", - ["realistic", "illustration", "minimalist", "photographic", "artistic"], - index=0, - help="Select the style for generated images" - ) - - image_engine = st.selectbox( - "Image Engine", - ["Gemini-AI", "Dalle3", "Stability-AI"], - index=0, - help="Select the AI engine for image generation" - ) - - with col2: - st.markdown("##### Content Optimization") - keywords = st.text_area( - "Keywords (comma-separated)", - help="Enter keywords for SEO optimization, separated by commas" - ) - - exclude_topics = st.text_area( - "Topics to Exclude (comma-separated)", - help="Enter topics you want to exclude from the content" - ) - - st.markdown("---") # Add a separator before the generate button - - # Create configuration - config = OutlineConfig( - content_type=ContentType(content_type), - content_depth=ContentDepth(content_depth), - outline_style=OutlineStyle(outline_style), - target_word_count=target_word_count, - num_main_sections=num_main_sections, - num_subsections_per_section=num_subsections, - include_introduction=include_intro, - include_conclusion=include_conclusion, - include_faqs=include_faqs, - include_resources=include_resources, - include_images=include_images, - image_style=image_style if include_images else "realistic", - image_engine=image_engine if include_images else "Gemini-AI", - target_audience=target_audience, - language=language, - keywords=[k.strip() for k in keywords.split(',')] if keywords else None, - exclude_topics=[t.strip() for t in exclude_topics.split(',')] if exclude_topics else None - ) - - # Initialize generator - generator = BlogOutlineGenerator(config) - - # Store the generated outline in session state - if 'outline' not in st.session_state: - st.session_state.outline = None - if 'section_contents' not in st.session_state: - st.session_state.section_contents = {} - - # Generate outline button with full width - st.markdown('
', unsafe_allow_html=True) - if not topic: - st.warning("Please enter a blog topic to generate the outline.") - if st.button("Generate Outline", type="primary", use_container_width=True, disabled=not topic): - with st.spinner("Generating outline and content..."): - try: - # Add progress bar - progress_bar = st.progress(0) - for i in range(100): - time.sleep(0.01) - progress_bar.progress(i + 1) - - outline = generator.generate_outline(topic) - st.session_state.outline = outline - st.session_state.section_contents = generator.section_contents - - # Display results - st.success("Outline generated successfully!") - - # Add copy button and display outline in full width - st.markdown('
', unsafe_allow_html=True) - outline_text = json.dumps(outline, indent=2) - st.code(outline_text, language="json") - st.button("Copy Outline", key="copy_outline", - help="Copy the outline to clipboard", - on_click=lambda: st.write(f'', - unsafe_allow_html=True)) - st.markdown('
', unsafe_allow_html=True) - - # Display statistics - display_stats(generator, outline) - - # Output format selection - output_format = st.radio( - "Output Format", - ["Preview", "Markdown", "JSON", "HTML"] - ) - - if output_format == "Preview": - # Display outline with content and images - st.markdown('
', unsafe_allow_html=True) - for section, subsections in outline.items(): - content = generator.section_contents.get(section) - display_section(section, subsections, content, generator) - st.markdown('
', unsafe_allow_html=True) - - elif output_format == "Markdown": - markdown_output = generator.to_markdown() - st.markdown('
', unsafe_allow_html=True) - st.code(markdown_output, language="markdown") - st.download_button( - "Download Markdown", - markdown_output, - file_name="blog_outline.md", - mime="text/markdown" - ) - st.markdown('
', unsafe_allow_html=True) - - elif output_format == "JSON": - json_output = json.dumps({ - "outline": outline, - "contents": { - section: { - "title": content.title, - "content": content.content, - "image_prompt": content.image_prompt, - "image_path": content.image_path - } - for section, content in generator.section_contents.items() - } - }, indent=2) - st.markdown('
', unsafe_allow_html=True) - st.code(json_output, language="json") - st.download_button( - "Download JSON", - json_output, - file_name="blog_outline.json", - mime="application/json" - ) - st.markdown('
', unsafe_allow_html=True) - - elif output_format == "HTML": - html_output = f""" - - - - {topic} - Blog Outline - - - -

{topic}

- {generator.to_markdown().replace('#', '##')} - - - """ - st.markdown('
', unsafe_allow_html=True) - st.code(html_output, language="html") - st.download_button( - "Download HTML", - html_output, - file_name="blog_outline.html", - mime="text/html" - ) - st.markdown('
', unsafe_allow_html=True) - - except Exception as e: - st.error(f"Error generating outline: {str(e)}") - st.markdown('
', unsafe_allow_html=True) - - # Display the outline if it exists in session state - if st.session_state.outline: - st.markdown('
', unsafe_allow_html=True) - for section, subsections in st.session_state.outline.items(): - content = st.session_state.section_contents.get(section) - display_section(section, subsections, content, generator) - st.markdown('
', unsafe_allow_html=True) - - st.markdown('
', unsafe_allow_html=True) # Close the outline container - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/blog_rewriter_updater/README.md b/ToBeMigrated/ai_writers/blog_rewriter_updater/README.md deleted file mode 100644 index 3a15fa14..00000000 --- a/ToBeMigrated/ai_writers/blog_rewriter_updater/README.md +++ /dev/null @@ -1,163 +0,0 @@ -# AI Blog Rewriter & Updater - -A powerful AI-powered tool for rewriting and updating existing blog content with improved quality, factual accuracy, and SEO optimization. - -## Features - -### 1. Content Import -- **URL Import**: Automatically extract content from any blog URL -- **Manual Input**: Paste content directly with title, meta description, and author information -- **Smart Content Extraction**: Preserves structure, headings, images, and metadata - -### 2. Content Analysis -- **Metrics Analysis**: - - Word count - - Sentence count - - Paragraph count - - Average words per sentence - - Average sentences per paragraph -- **Structure Analysis**: - - Heading hierarchy - - Content organization - - Image analysis -- **Age Analysis**: - - Content age calculation - - Publication date detection - -### 3. Web Research -- **Topic Extraction**: Automatically identifies key topics for fact-checking -- **Multi-Source Research**: Gathers information from various sources -- **Research Depth Control**: Choose between low, medium, and high research depth -- **Source Organization**: Categorizes research by topic with source details - -### 4. Rewriting Modes -- **Standard Rewrite**: Improve clarity and flow while maintaining core message -- **SEO Optimization**: Enhance content for search engines with targeted keywords -- **Simplification**: Make complex content more accessible -- **Expansion**: Add more details and examples -- **Fact Check**: Update outdated information -- **Tone Shift**: Change writing style while preserving content -- **Modernization**: Update with current information and trends - -### 5. Customization Options -- **Tone Selection**: - - Professional - - Conversational - - Academic - - Enthusiastic - - Authoritative - - Friendly - - Technical - - Inspirational -- **Length Control**: - - Maintain original length - - Create shorter version - - Create longer version - - Custom word count -- **SEO Features**: - - Focus keyword optimization - - Meta description generation - - Title optimization -- **Special Instructions**: Add custom requirements for the rewrite - -### 6. Image Generation -- **AI Image Suggestions**: Get recommendations for relevant images -- **Custom Image Generation**: Create images based on content -- **Style Options**: - - Realistic - - Artistic - - Cartoon - - 3D Render -- **Image Placement**: Suggested optimal placement within content - -### 7. Export Options -- **Preview Mode**: View formatted content -- **Markdown Export**: Get clean markdown version -- **Image Integration**: Include generated images with captions -- **Meta Information**: Export with optimized title and meta description - -## Usage - -1. **Import Content** - - Choose between URL import or manual content entry - - Provide necessary metadata (title, author, etc.) - -2. **Analysis & Research** - - Review content analysis metrics - - Examine research findings - - Identify areas for improvement - -3. **Configure Rewrite Settings** - - Select rewrite mode - - Choose target tone - - Set content length - - Add focus keywords - - Provide special instructions - -4. **Review & Export** - - Preview rewritten content - - Generate suggested images - - Export in desired format - -## Technical Details - -### Dependencies -- Streamlit for UI -- BeautifulSoup for content extraction -- GPT providers for text generation -- Image generation capabilities -- Web research APIs (Exa, Tavily) - -### Key Components -- `BlogRewriter` class: Core functionality -- Content extraction and analysis -- Research integration -- AI-powered rewriting -- Image generation -- Export capabilities - -### Error Handling -- Robust error handling for URL extraction -- Fallback mechanisms for content parsing -- Graceful degradation for API failures -- User-friendly error messages - -## Best Practices - -1. **Content Import** - - Use clean, well-structured URLs - - Provide complete metadata for manual entry - - Ensure content is properly formatted - -2. **Research Settings** - - Choose appropriate research depth - - Review research findings carefully - - Verify source credibility - -3. **Rewrite Configuration** - - Select appropriate tone for audience - - Use relevant focus keywords - - Provide clear special instructions - -4. **Image Generation** - - Use descriptive prompts - - Choose appropriate style - - Consider image placement - -## Limitations - -- Maximum content length for processing -- API rate limits for research -- Image generation constraints -- Language support limitations - -## Future Enhancements - -- Multi-language support -- Advanced SEO analysis -- Content structure templates -- Collaborative editing -- Integration with CMS platforms -- Custom AI model selection -- Advanced image editing -- Content versioning \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/blog_rewriter_updater/ai_blog_rewriter.py b/ToBeMigrated/ai_writers/blog_rewriter_updater/ai_blog_rewriter.py deleted file mode 100644 index 7b0a1e19..00000000 --- a/ToBeMigrated/ai_writers/blog_rewriter_updater/ai_blog_rewriter.py +++ /dev/null @@ -1,11 +0,0 @@ -""" -AI Blog Rewriter Module - -This module provides the main entry point for the blog rewriter functionality, -importing and using the utility and UI modules. -""" - -from .blog_rewriter_ui import write_blog_rewriter - -if __name__ == "__main__": - write_blog_rewriter() \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/blog_rewriter_updater/blog_rewriter_ui.py b/ToBeMigrated/ai_writers/blog_rewriter_updater/blog_rewriter_ui.py deleted file mode 100644 index 733ed12f..00000000 --- a/ToBeMigrated/ai_writers/blog_rewriter_updater/blog_rewriter_ui.py +++ /dev/null @@ -1,624 +0,0 @@ -""" -Blog Rewriter UI Module - -This module contains the Streamlit interface for the blog rewriter, -providing a user-friendly way to interact with the rewriting functionality. -""" - -import streamlit as st -import json -from datetime import datetime -from .blog_rewriter_utils import BlogRewriter, REWRITE_MODES, TONE_OPTIONS, MAX_META_DESCRIPTION_LENGTH - -def write_blog_rewriter(): - """Main function to display the blog rewriter UI.""" - st.title("AI Blog Rewriter & Updater") - - # Create a container for the header section - with st.container(): - st.markdown(""" -
-

Revitalize Your Content

-

Update, fact-check, and enhance your existing blog posts with AI assistance. - Our tool analyzes your content, researches the latest information, and rewrites your blog - to be more engaging, accurate, and SEO-friendly.

-
- """, unsafe_allow_html=True) - - # Initialize the BlogRewriter class - if "blog_rewriter" not in st.session_state: - st.session_state.blog_rewriter = BlogRewriter() - - # Initialize session state variables - if "original_content" not in st.session_state: - st.session_state.original_content = {} - if "content_analysis" not in st.session_state: - st.session_state.content_analysis = {} - if "research_results" not in st.session_state: - st.session_state.research_results = {} - if "rewritten_content" not in st.session_state: - st.session_state.rewritten_content = {} - if "generated_images" not in st.session_state: - st.session_state.generated_images = {} - if "current_step" not in st.session_state: - st.session_state.current_step = 1 - - # Create tabs for the workflow - tab1, tab2, tab3, tab4 = st.tabs([ - "1๏ธโƒฃ Import Content", - "2๏ธโƒฃ Analyze & Research", - "3๏ธโƒฃ Rewrite Settings", - "4๏ธโƒฃ Results & Export" - ]) - - # Tab 1: Import Content - with tab1: - st.header("Import Your Blog Content") - - import_method = st.radio( - "Choose import method:", - ["Import from URL", "Paste content manually"], - horizontal=True - ) - - if import_method == "Import from URL": - url = st.text_input( - "Enter blog URL:", - placeholder="https://example.com/blog-post", - help="Enter the full URL of the blog post you want to rewrite" - ) - - if st.button("Import Content", type="primary"): - if not url: - st.error("Please enter a valid URL") - else: - with st.spinner("Extracting content from URL..."): - # Extract content from URL - st.session_state.original_content = st.session_state.blog_rewriter.extract_content_from_url(url) - - if "error" in st.session_state.original_content: - st.error(f"Error extracting content: {st.session_state.original_content['error']}") - else: - st.success("Content extracted successfully!") - st.session_state.current_step = 2 - st.rerun() - else: - col1, col2 = st.columns([3, 1]) - - with col1: - title = st.text_input( - "Blog Title:", - placeholder="Enter the title of your blog post" - ) - - with col2: - author = st.text_input( - "Author (optional):", - placeholder="Author name" - ) - - meta_description = st.text_area( - "Meta Description (optional):", - placeholder="Enter the meta description of your blog post", - max_chars=MAX_META_DESCRIPTION_LENGTH, - height=80 - ) - - content = st.text_area( - "Blog Content:", - placeholder="Paste your blog content here...", - height=300 - ) - - if st.button("Import Content", type="primary"): - if not title or not content: - st.error("Please enter both title and content") - else: - # Store the manually entered content - st.session_state.original_content = { - "title": title, - "meta_description": meta_description, - "content": content, - "author": author, - "headings": [], - "images": [], - "publish_date": None, - "url": None - } - - st.success("Content imported successfully!") - st.session_state.current_step = 2 - st.rerun() - - # Display the imported content if available - if st.session_state.original_content and "title" in st.session_state.original_content: - with st.expander("View Imported Content", expanded=False): - st.subheader(st.session_state.original_content["title"]) - - if st.session_state.original_content.get("meta_description"): - st.markdown(f"**Meta Description:** {st.session_state.original_content['meta_description']}") - - if st.session_state.original_content.get("author"): - st.markdown(f"**Author:** {st.session_state.original_content['author']}") - - if st.session_state.original_content.get("publish_date"): - st.markdown(f"**Published:** {st.session_state.original_content['publish_date']}") - - st.markdown("**Content Preview:**") - content_preview = st.session_state.original_content["content"] - if len(content_preview) > 1000: - content_preview = content_preview[:1000] + "..." - st.text_area("", content_preview, height=200, disabled=True) - - # Display images if available - if st.session_state.original_content.get("images"): - st.markdown(f"**Images:** {len(st.session_state.original_content['images'])} images found") - - # Tab 2: Analyze & Research - with tab2: - st.header("Analyze & Research") - - if not st.session_state.original_content or "title" not in st.session_state.original_content: - st.info("Please import your blog content first") - else: - col1, col2 = st.columns(2) - - with col1: - if st.button("Analyze Content", type="primary"): - with st.spinner("Analyzing content..."): - # Analyze the content - st.session_state.content_analysis = st.session_state.blog_rewriter.analyze_content( - st.session_state.original_content - ) - st.success("Content analysis complete!") - - with col2: - research_depth = st.selectbox( - "Research Depth:", - ["low", "medium", "high"], - index=1, - format_func=lambda x: {"low": "Basic", "medium": "Standard", "high": "Comprehensive"}[x], - help="Choose the depth of research to update your content" - ) - - if st.button("Conduct Research", type="primary"): - with st.spinner("Researching latest information..."): - # Conduct research - st.session_state.research_results = st.session_state.blog_rewriter.conduct_research( - st.session_state.original_content["title"], - st.session_state.original_content["content"], - research_depth - ) - st.success("Research complete!") - - # Display content analysis if available - if st.session_state.content_analysis: - st.subheader("Content Analysis") - - metrics = st.session_state.content_analysis.get("metrics", {}) - - # Create metrics display - col1, col2, col3, col4 = st.columns(4) - with col1: - st.metric("Word Count", metrics.get("word_count", 0)) - with col2: - st.metric("Paragraphs", metrics.get("paragraph_count", 0)) - with col3: - st.metric("Sentences", metrics.get("sentence_count", 0)) - with col4: - content_age = st.session_state.content_analysis.get("content_age", {}) - if "months" in content_age: - st.metric("Content Age", f"{content_age['months']} months") - elif "error" in content_age: - st.metric("Content Age", "Unknown") - - # Heading structure - heading_structure = st.session_state.content_analysis.get("heading_structure", {}) - if heading_structure: - st.markdown("**Heading Structure:**") - for level, count in sorted(heading_structure.items()): - st.markdown(f"H{level}: {count} headings") - - # Image analysis - images = st.session_state.content_analysis.get("images", {}) - if images: - st.markdown(f"**Images:** {images.get('count', 0)} images found, {images.get('with_alt_text', 0)} with alt text") - - # Display research results if available - if st.session_state.research_results: - st.subheader("Research Results") - - topics = st.session_state.research_results.get("topics", []) - if topics: - for topic in topics: - with st.expander(f"Topic: {topic['topic']}", expanded=False): - for i, source in enumerate(topic.get("sources", [])): - st.markdown(f"**Source {i+1}:** {source.get('title', 'Untitled')}") - st.markdown(f"**URL:** {source.get('url', 'No URL')}") - st.markdown(f"**Content Preview:** {source.get('content', 'No content')[:200]}...") - st.markdown("---") - else: - st.info("No research results available") - - # Enable proceeding to the next step if both analysis and research are done - if st.session_state.content_analysis and st.session_state.research_results: - if st.button("Proceed to Rewrite Settings", type="primary"): - st.session_state.current_step = 3 - st.rerun() - - # Tab 3: Rewrite Settings - with tab3: - st.header("Rewrite Settings") - - if not st.session_state.original_content or "title" not in st.session_state.original_content: - st.info("Please import your blog content first") - elif not st.session_state.content_analysis or not st.session_state.research_results: - st.info("Please complete content analysis and research first") - else: - # Create a form for rewrite settings - with st.form("rewrite_settings_form"): - st.subheader("Content Transformation") - - col1, col2 = st.columns(2) - - with col1: - rewrite_mode = st.selectbox( - "Rewrite Mode:", - list(REWRITE_MODES.keys()), - format_func=lambda x: x.replace("_", " ").title(), - help="Choose how you want to transform your content" - ) - - st.info(REWRITE_MODES[rewrite_mode]) - - with col2: - tone = st.selectbox( - "Target Tone:", - TONE_OPTIONS, - index=0, - help="Choose the tone for your rewritten content" - ) - - st.subheader("Content Length") - - original_word_count = st.session_state.content_analysis.get("metrics", {}).get("word_count", 0) - - length_option = st.radio( - "Target Length:", - ["same", "shorter", "longer", "custom"], - format_func=lambda x: { - "same": f"Same as original ({original_word_count} words)", - "shorter": f"Shorter (about {int(original_word_count * 0.7)} words)", - "longer": f"Longer (about {int(original_word_count * 1.3)} words)", - "custom": "Custom word count" - }[x], - horizontal=True - ) - - if length_option == "custom": - target_word_count = st.number_input( - "Custom Word Count:", - min_value=100, - max_value=10000, - value=original_word_count, - step=100 - ) - else: - target_word_count = { - "same": original_word_count, - "shorter": int(original_word_count * 0.7), - "longer": int(original_word_count * 1.3) - }[length_option] - - st.subheader("SEO Optimization") - - keywords = st.text_input( - "Focus Keywords (comma-separated):", - placeholder="e.g., digital marketing, SEO, content strategy", - help="Enter keywords to optimize your content for" - ) - - st.subheader("Additional Instructions") - - special_instructions = st.text_area( - "Special Instructions (optional):", - placeholder="Add any specific instructions for rewriting your content...", - help="Provide any additional instructions for the AI" - ) - - # Submit button - submitted = st.form_submit_button("Rewrite Blog", type="primary") - - if submitted: - # Process the form data - user_preferences = { - "rewrite_mode": rewrite_mode, - "tone": tone, - "target_word_count": target_word_count, - "keywords": [k.strip() for k in keywords.split(",")] if keywords else [], - "special_instructions": special_instructions - } - - with st.spinner("Rewriting your blog..."): - # Rewrite the blog - st.session_state.rewritten_content = st.session_state.blog_rewriter.rewrite_blog( - st.session_state.original_content, - user_preferences, - st.session_state.research_results, - st.session_state.content_analysis - ) - - if "error" in st.session_state.rewritten_content: - st.error(f"Error rewriting blog: {st.session_state.rewritten_content['error']}") - else: - st.success("Blog rewritten successfully!") - st.session_state.current_step = 4 - st.rerun() - - # Tab 4: Results & Export - with tab4: - st.header("Results & Export") - - if not st.session_state.rewritten_content or "title" not in st.session_state.rewritten_content: - st.info("Please complete the rewriting process first") - else: - # Display the rewritten content - st.subheader("Rewritten Blog") - - # Title and meta description - st.markdown(f"## {st.session_state.rewritten_content['title']}") - - if st.session_state.rewritten_content.get("meta_description"): - with st.expander("Meta Description", expanded=True): - st.text_area( - "", - st.session_state.rewritten_content["meta_description"], - height=80, - disabled=True - ) - - # Create tabs for different views - content_tab1, content_tab2 = st.tabs(["Preview", "Markdown"]) - - with content_tab1: - st.markdown(st.session_state.rewritten_content["content"]) - - with content_tab2: - st.text_area( - "", - st.session_state.rewritten_content["content"], - height=400 - ) - - # Image generation section - st.subheader("Generate Images") - - suggested_images = st.session_state.rewritten_content.get("suggested_images", []) - if suggested_images: - st.markdown("**Suggested Images:**") - - for i, img in enumerate(suggested_images): - with st.expander(f"Image {i+1}: {img.get('description', 'No description')}", expanded=False): - st.markdown(f"**Description:** {img.get('description', 'No description')}") - st.markdown(f"**Caption:** {img.get('caption', 'No caption')}") - st.markdown(f"**Placement:** {img.get('placement', 'No placement specified')}") - - # Generate image button - col1, col2 = st.columns([3, 1]) - - with col1: - image_prompt = st.text_area( - "Image Prompt:", - value=img.get('description', ''), - key=f"image_prompt_{i}" - ) - - with col2: - style = st.selectbox( - "Style:", - ["realistic", "artistic", "cartoon", "3d_render"], - key=f"style_{i}" - ) - - if st.button("Generate Image", key=f"gen_img_{i}"): - with st.spinner("Generating image..."): - image_path = st.session_state.blog_rewriter.generate_image(image_prompt, style) - - if image_path: - # Store the generated image - if "generated_images" not in st.session_state: - st.session_state.generated_images = {} - - st.session_state.generated_images[f"image_{i}"] = { - "path": image_path, - "caption": img.get('caption', ''), - "placement": img.get('placement', '') - } - - st.success("Image generated successfully!") - st.rerun() - - # Display the generated image if available - if f"image_{i}" in st.session_state.generated_images: - st.image( - st.session_state.generated_images[f"image_{i}"]["path"], - caption=st.session_state.generated_images[f"image_{i}"]["caption"], - use_column_width=True - ) - else: - st.info("No image suggestions available") - - # Custom image generation - with st.expander("Generate Custom Image", expanded=True): - col1, col2 = st.columns([3, 1]) - - with col1: - custom_image_prompt = st.text_area( - "Image Prompt:", - placeholder="Describe the image you want to generate..." - ) - - with col2: - custom_style = st.selectbox( - "Style:", - ["realistic", "artistic", "cartoon", "3d_render"] - ) - - if st.button("Generate Custom Image"): - if not custom_image_prompt: - st.error("Please enter an image prompt") - else: - with st.spinner("Generating image..."): - image_path = st.session_state.blog_rewriter.generate_image(custom_image_prompt, custom_style) - - if image_path: - # Store the generated image - if "generated_images" not in st.session_state: - st.session_state.generated_images = {} - - st.session_state.generated_images["custom_image"] = { - "path": image_path, - "caption": "Custom generated image", - "placement": "Custom placement" - } - - st.success("Image generated successfully!") - st.rerun() - - # Display the generated custom image if available - if "custom_image" in st.session_state.generated_images: - st.image( - st.session_state.generated_images["custom_image"]["path"], - caption=st.session_state.generated_images["custom_image"]["caption"], - use_column_width=True - ) - - # Export options - st.subheader("Export Options") - - col1, col2, col3 = st.columns(3) - - with col1: - st.download_button( - "Download as Markdown", - data=st.session_state.rewritten_content["content"], - file_name=f"{st.session_state.rewritten_content['title'].replace(' ', '_')}.md", - mime="text/markdown" - ) - - with col2: - # Create HTML version - html_content = f""" - - - - {st.session_state.rewritten_content['title']} - - - - -

{st.session_state.rewritten_content['title']}

- {st.session_state.rewritten_content['content']} - - - """ - - st.download_button( - "Download as HTML", - data=html_content, - file_name=f"{st.session_state.rewritten_content['title'].replace(' ', '_')}.html", - mime="text/html" - ) - - with col3: - # Create JSON version with all content and metadata - json_content = { - "title": st.session_state.rewritten_content["title"], - "meta_description": st.session_state.rewritten_content.get("meta_description", ""), - "content": st.session_state.rewritten_content["content"], - "suggested_images": st.session_state.rewritten_content.get("suggested_images", []), - "generated_images": [ - { - "caption": img_data["caption"], - "placement": img_data["placement"], - "path": img_data["path"] - } - for img_key, img_data in st.session_state.generated_images.items() - ] if hasattr(st.session_state, "generated_images") else [], - "original_title": st.session_state.original_content.get("title", ""), - "original_url": st.session_state.original_content.get("url", ""), - "rewrite_date": datetime.now().isoformat() - } - - st.download_button( - "Download as JSON", - data=json.dumps(json_content, indent=2), - file_name=f"{st.session_state.rewritten_content['title'].replace(' ', '_')}.json", - mime="application/json" - ) - - # Copy to clipboard buttons - st.subheader("Quick Copy") - - col1, col2, col3 = st.columns(3) - - with col1: - if st.button("Copy Title", key="copy_title"): - st.code(st.session_state.rewritten_content["title"]) - st.success("Title copied to clipboard!") - - with col2: - if st.button("Copy Meta Description", key="copy_meta"): - st.code(st.session_state.rewritten_content.get("meta_description", "")) - st.success("Meta description copied to clipboard!") - - with col3: - if st.button("Copy Full Content", key="copy_content"): - st.success("Content copied to clipboard!") - - # Comparison with original - with st.expander("Compare with Original", expanded=False): - comp_col1, comp_col2 = st.columns(2) - - with comp_col1: - st.subheader("Original") - st.markdown(f"**Title:** {st.session_state.original_content.get('title', '')}") - if st.session_state.original_content.get("meta_description"): - st.markdown(f"**Meta Description:** {st.session_state.original_content['meta_description']}") - st.text_area( - "Original Content", - st.session_state.original_content.get("content", ""), - height=300, - disabled=True - ) - - with comp_col2: - st.subheader("Rewritten") - st.markdown(f"**Title:** {st.session_state.rewritten_content['title']}") - if st.session_state.rewritten_content.get("meta_description"): - st.markdown(f"**Meta Description:** {st.session_state.rewritten_content['meta_description']}") - st.text_area( - "Rewritten Content", - st.session_state.rewritten_content["content"], - height=300, - disabled=True - ) - - # Start over button - if st.button("Start Over", type="primary"): - # Reset session state - for key in ["original_content", "content_analysis", "research_results", - "rewritten_content", "generated_images", "current_step"]: - if key in st.session_state: - del st.session_state[key] - - st.rerun() - -if __name__ == "__main__": - write_blog_rewriter() \ No newline at end of file diff --git a/ToBeMigrated/ai_writers/blog_rewriter_updater/blog_rewriter_utils.py b/ToBeMigrated/ai_writers/blog_rewriter_updater/blog_rewriter_utils.py deleted file mode 100644 index fd1f1eff..00000000 --- a/ToBeMigrated/ai_writers/blog_rewriter_updater/blog_rewriter_utils.py +++ /dev/null @@ -1,595 +0,0 @@ -""" -Blog Rewriter Utilities Module - -This module contains the core functionality for rewriting and updating blog content, -including content extraction, analysis, research, and rewriting capabilities. -""" - -import requests -from bs4 import BeautifulSoup -import re -import time -import logging -from typing import Dict, List, Tuple, Optional, Any -import json -import os -from datetime import datetime - -# Import required modules from the project -from ...gpt_providers.text_generation.main_text_generation import llm_text_gen -from ...gpt_providers.text_to_image_generation.main_generate_image_from_prompt import generate_image -from ...ai_web_researcher.metaphor_basic_neural_web_search import metaphor_search_articles -from ...ai_web_researcher.tavily_ai_search import do_tavily_ai_search - -# Configure logging -logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') -logger = logging.getLogger(__name__) - -# Define constants -MAX_TITLE_LENGTH = 70 -MAX_META_DESCRIPTION_LENGTH = 160 -REWRITE_MODES = { - "standard": "Standard rewrite with improved clarity and flow", - "seo_optimization": "Optimize for search engines with targeted keywords", - "simplification": "Simplify complex content for broader audience", - "expansion": "Expand with additional details and examples", - "fact_check": "Focus on fact-checking and updating information", - "tone_shift": "Change the tone while preserving content", - "modernization": "Update outdated content with current information" -} - -# Define tone options -TONE_OPTIONS = [ - "Professional", "Conversational", "Academic", "Enthusiastic", - "Authoritative", "Friendly", "Technical", "Inspirational" -] - -class BlogRewriter: - """Class to handle blog rewriting functionality.""" - - def __init__(self): - """Initialize the BlogRewriter class.""" - self.original_content = {} - self.rewritten_content = {} - self.research_results = {} - self.content_analysis = {} - self.image_suggestions = [] - - def extract_content_from_url(self, url: str) -> Dict[str, Any]: - """ - Extract content from a given URL. - - Args: - url: The URL to extract content from - - Returns: - Dictionary containing extracted content - """ - logger.info(f"Extracting content from URL: {url}") - - try: - headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36', - 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', - 'Accept-Language': 'en-US,en;q=0.5', - 'Connection': 'keep-alive', - 'Upgrade-Insecure-Requests': '1', - 'Cache-Control': 'max-age=0' - } - response = requests.get(url, headers=headers, timeout=15) - response.raise_for_status() - - soup = BeautifulSoup(response.text, 'html.parser') - - # Extract title - title = soup.title.string if soup.title else "" - - # Extract meta description - meta_desc = "" - meta_tag = soup.find("meta", attrs={"name": "description"}) - if meta_tag and "content" in meta_tag.attrs: - meta_desc = meta_tag["content"] - - # Extract main content - try multiple strategies - content = "" - - # Strategy 1: Look for article tag - article_tag = soup.find("article") - if article_tag: - content = article_tag.get_text(separator="\n\n") - - # Strategy 2: Look for main content areas - if not content: - main_content = soup.find(["main", "div", "section"], class_=re.compile(r"content|article|post|entry|main|body")) - if main_content: - for elem in main_content.find_all(["nav", "aside", "footer", "comments", "script", "style", "header"]): - elem.decompose() - content = main_content.get_text(separator="\n\n") - - # Strategy 3: Look for specific content classes - if not content: - content_classes = ["post-content", "entry-content", "article-content", "blog-content", "content-area"] - for class_name in content_classes: - content_div = soup.find("div", class_=class_name) - if content_div: - for elem in content_div.find_all(["nav", "aside", "footer", "comments", "script", "style", "header"]): - elem.decompose() - content = content_div.get_text(separator="\n\n") - break - - # Strategy 4: Look for content within body - if not content: - body = soup.find("body") - if body: - # Remove unwanted elements - for elem in body.find_all(["nav", "aside", "footer", "comments", "script", "style", "header"]): - elem.decompose() - content = body.get_text(separator="\n\n") - - # Clean up the content - content = re.sub(r'\n{3,}', '\n\n', content) - content = re.sub(r'\s{2,}', ' ', content) - content = content.strip() - - # Extract headings with their hierarchy - headings = [] - for h in soup.find_all(["h1", "h2", "h3", "h4", "h5", "h6"]): - headings.append({ - "level": int(h.name[1]), - "text": h.get_text().strip() - }) - - # Extract images with more metadata - images = [] - for img in soup.find_all("img"): - if img.get("src") and not img.get("src").startswith("data:"): - image_url = img.get("src") - if not image_url.startswith(("http://", "https://")): - base_url = "/".join(url.split("/")[:3]) - image_url = f"{base_url}/{image_url.lstrip('/')}" - - images.append({ - "url": image_url, - "alt_text": img.get("alt", ""), - "title": img.get("title", ""), - "class": img.get("class", []), - "width": img.get("width"), - "height": img.get("height") - }) - - # Extract publish date with multiple strategies - publish_date = None - # Try meta tags first - date_meta = soup.find("meta", attrs={"property": "article:published_time"}) - if date_meta and "content" in date_meta.attrs: - publish_date = date_meta["content"] - else: - # Try other meta tags - for prop in ["datePublished", "dateCreated", "dateModified"]: - date_meta = soup.find("meta", attrs={"property": prop}) - if date_meta and "content" in date_meta.attrs: - publish_date = date_meta["content"] - break - - # Try HTML elements if meta tags failed - if not publish_date: - date_elem = soup.find(["time", "span", "div"], class_=re.compile(r"date|time|publish|posted|created")) - if date_elem and date_elem.get_text(): - publish_date = date_elem.get_text().strip() - - # Extract author with multiple strategies - author = None - # Try meta tags first - author_meta = soup.find("meta", attrs={"name": "author"}) - if author_meta and "content" in author_meta.attrs: - author = author_meta["content"] - else: - # Try other meta tags - for prop in ["article:author", "author"]: - author_meta = soup.find("meta", attrs={"property": prop}) - if author_meta and "content" in author_meta.attrs: - author = author_meta["content"] - break - - # Try HTML elements if meta tags failed - if not author: - author_elem = soup.find(["a", "span", "div"], class_=re.compile(r"author|byline|writer|posted-by")) - if author_elem and author_elem.get_text(): - author = author_elem.get_text().strip() - - # Log content extraction results - logger.info(f"Extracted content length: {len(content)} characters") - logger.info(f"Found {len(headings)} headings") - logger.info(f"Found {len(images)} images") - logger.info(f"Publish date: {publish_date}") - logger.info(f"Author: {author}") - - return { - "title": title, - "meta_description": meta_desc, - "content": content, - "headings": headings, - "images": images, - "publish_date": publish_date, - "author": author, - "url": url - } - - except Exception as e: - logger.error(f"Error extracting content from URL: {e}") - return { - "title": "", - "meta_description": "", - "content": "", - "headings": [], - "images": [], - "publish_date": None, - "author": None, - "url": url, - "error": str(e) - } - - def analyze_content(self, content: Dict[str, Any]) -> Dict[str, Any]: - """ - Analyze the extracted content to provide insights. - - Args: - content: Dictionary containing extracted content - - Returns: - Dictionary containing content analysis - """ - logger.info("Analyzing content") - - analysis = {} - - # Basic metrics - text_content = content.get("content", "") - word_count = len(text_content.split()) - sentence_count = len(re.split(r'[.!?]+', text_content)) - paragraph_count = len(re.split(r'\n\n+', text_content)) - - analysis["metrics"] = { - "word_count": word_count, - "sentence_count": sentence_count, - "paragraph_count": paragraph_count, - "avg_words_per_sentence": round(word_count / max(sentence_count, 1), 1), - "avg_sentences_per_paragraph": round(sentence_count / max(paragraph_count, 1), 1) - } - - # Heading structure analysis - headings = content.get("headings", []) - heading_structure = {} - for h in headings: - level = h["level"] - if level not in heading_structure: - heading_structure[level] = 0 - heading_structure[level] += 1 - - analysis["heading_structure"] = heading_structure - - # Content age analysis - publish_date = content.get("publish_date") - if publish_date: - try: - if "T" in publish_date: - pub_date = datetime.fromisoformat(publish_date.replace("Z", "+00:00")) - else: - date_formats = [ - "%Y-%m-%d", "%d-%m-%Y", "%B %d, %Y", "%b %d, %Y", - "%d %B %Y", "%d %b %Y", "%Y/%m/%d", "%d/%m/%Y" - ] - for fmt in date_formats: - try: - pub_date = datetime.strptime(publish_date, fmt) - break - except ValueError: - continue - - now = datetime.now() - age_days = (now - pub_date).days - analysis["content_age"] = { - "days": age_days, - "months": round(age_days / 30, 1), - "years": round(age_days / 365, 1) - } - except Exception as e: - logger.warning(f"Could not parse publish date: {e}") - analysis["content_age"] = {"error": "Could not determine content age"} - else: - analysis["content_age"] = {"error": "No publish date found"} - - # Image analysis - images = content.get("images", []) - analysis["images"] = { - "count": len(images), - "with_alt_text": sum(1 for img in images if img.get("alt_text")) - } - - return analysis - - def conduct_research(self, title: str, content: str, research_depth: str = "medium") -> Dict[str, Any]: - """ - Conduct web research to find updated information related to the blog content. - - Args: - title: Blog title - content: Blog content - research_depth: Depth of research (low, medium, high) - - Returns: - Dictionary containing research results - """ - logger.info(f"Conducting research with depth: {research_depth}") - - # Extract key topics from the content - prompt = f""" - Extract 3-5 key topics or claims from this blog content that might need fact-checking or updating. - For each topic, provide a concise search query that would help find the most recent information. - - Blog title: {title} - - First 1000 characters of content: - {content[:1000]}... - - Format your response as a JSON array of objects with 'topic' and 'query' fields. - """ - - try: - topics_json = llm_text_gen(prompt) - topics_json = re.search(r'\[.*\]', topics_json, re.DOTALL) - if topics_json: - topics = json.loads(topics_json.group(0)) - else: - topics = [ - {"topic": title, "query": title + " latest information"}, - {"topic": "Updates on " + title, "query": title + " recent developments"} - ] - except Exception as e: - logger.error(f"Error extracting topics: {e}") - topics = [ - {"topic": title, "query": title + " latest information"}, - {"topic": "Updates on " + title, "query": title + " recent developments"} - ] - - # Determine number of results based on research depth - num_results = {"low": 2, "medium": 3, "high": 5}.get(research_depth, 3) - - research_results = {"topics": []} - - # Conduct research for each topic - for topic in topics[:3]: # Limit to 3 topics - topic_results = {"topic": topic["topic"], "sources": []} - - # Try Exa search first - try: - exa_results = metaphor_search_articles(topic["query"], num_results=num_results) - if exa_results: - topic_results["sources"].extend(exa_results) - except Exception as e: - logger.warning(f"Exa search failed: {e}") - - # If Exa didn't return enough results, try Tavily - if len(topic_results["sources"]) < num_results: - try: - tavily_results = do_tavily_ai_search(topic["query"], num_results=num_results) - if tavily_results: - existing_urls = [s["url"] for s in topic_results["sources"]] - for result in tavily_results: - if result["url"] not in existing_urls: - topic_results["sources"].append(result) - existing_urls.append(result["url"]) - except Exception as e: - logger.warning(f"Tavily search failed: {e}") - - research_results["topics"].append(topic_results) - - return research_results - - def generate_rewrite_prompt(self, original_content: Dict[str, Any], - user_preferences: Dict[str, Any], - research_results: Dict[str, Any], - content_analysis: Dict[str, Any]) -> str: - """ - Generate a prompt for the LLM to rewrite the blog. - - Args: - original_content: Original blog content - user_preferences: User preferences for rewriting - research_results: Research results for updating content - content_analysis: Analysis of the original content - - Returns: - Prompt string for the LLM - """ - logger.info("Generating rewrite prompt") - - # Extract key information - title = original_content.get("title", "") - content = original_content.get("content", "") - - # Truncate content if it's too long - max_content_length = 6000 - if len(content) > max_content_length: - content_preview = content[:max_content_length] + "...\n[Content truncated due to length]" - else: - content_preview = content - - # Format research results - research_summary = "" - for topic in research_results.get("topics", []): - research_summary += f"\n## {topic['topic']}\n" - for i, source in enumerate(topic.get("sources", [])[:3]): - research_summary += f"Source {i+1}: {source.get('title', 'Untitled')}\n" - research_summary += f"URL: {source.get('url', 'No URL')}\n" - research_summary += f"Content: {source.get('content', 'No content')[:300]}...\n\n" - - # Build the prompt - prompt = f""" - # Blog Rewriting Task - - ## Original Blog Information - Title: {title} - Word Count: {content_analysis.get('metrics', {}).get('word_count', 'Unknown')} - Estimated Age: {content_analysis.get('content_age', {}).get('months', 'Unknown')} months - - ## Rewriting Instructions - Mode: {user_preferences.get('rewrite_mode', 'standard')} - Target Tone: {user_preferences.get('tone', 'Professional')} - Target Word Count: {user_preferences.get('target_word_count', 'Same as original')} - Focus Keywords: {', '.join(user_preferences.get('keywords', []))} - - ## Special Instructions - {user_preferences.get('special_instructions', 'No special instructions')} - - ## Recent Research Findings - {research_summary if research_summary else "No research results available."} - - ## Original Content - {content_preview} - - ## Your Task - Please rewrite this blog post according to the instructions above. The rewritten blog should: - - 1. Maintain the core message and value of the original content - 2. Update any outdated information based on the research findings - 3. Adopt the requested tone and style - 4. Incorporate the focus keywords naturally - 5. Improve readability and engagement - 6. Maintain a logical structure with appropriate headings - 7. Include a compelling introduction and conclusion - - ## Output Format - Please provide your response in the following JSON format: - ```json - {{ - "title": "Rewritten title", - "meta_description": "SEO-optimized meta description (max 160 characters)", - "content": "Full rewritten content with proper markdown formatting", - "suggested_images": [ - {{ - "description": "Brief description of a suggested image", - "caption": "Suggested caption for the image", - "placement": "Where this image should be placed (e.g., 'After introduction', 'Before conclusion')" - }} - ] - }} - ``` - - Ensure the JSON is properly formatted and valid. - """ - - return prompt - - def rewrite_blog(self, original_content: Dict[str, Any], - user_preferences: Dict[str, Any], - research_results: Dict[str, Any], - content_analysis: Dict[str, Any]) -> Dict[str, Any]: - """ - Rewrite the blog based on original content, user preferences, and research. - - Args: - original_content: Original blog content - user_preferences: User preferences for rewriting - research_results: Research results for updating content - content_analysis: Analysis of the original content - - Returns: - Dictionary containing rewritten content - """ - logger.info("Rewriting blog content") - - # Generate the prompt - prompt = self.generate_rewrite_prompt( - original_content, user_preferences, research_results, content_analysis - ) - - # Call the LLM to rewrite the content - try: - response = llm_text_gen(prompt) - - # Clean the response of any invalid control characters - response = ''.join(char for char in response if ord(char) >= 32 or char in '\n\r\t') - - # Extract JSON from the response - json_match = re.search(r'```json\s*(.*?)\s*```', response, re.DOTALL) - if json_match: - json_str = json_match.group(1) - else: - # If no JSON block found, try to find JSON-like content - json_match = re.search(r'\{.*\}', response, re.DOTALL) - if json_match: - json_str = json_match.group(0) - else: - json_str = response - - # Clean up the JSON string - json_str = re.sub(r'```(json)?', '', json_str).strip() - - # Remove any remaining invalid control characters - json_str = ''.join(char for char in json_str if ord(char) >= 32 or char in '\n\r\t') - - # Parse the JSON with error handling - try: - rewritten_content = json.loads(json_str) - except json.JSONDecodeError as e: - logger.error(f"JSON parsing error: {e}") - # Try to fix common JSON issues - json_str = json_str.replace('\\n', '\\\\n') # Fix escaped newlines - json_str = json_str.replace('\\"', '"') # Fix escaped quotes - json_str = json_str.replace('\\t', '\\\\t') # Fix escaped tabs - rewritten_content = json.loads(json_str) - - # Validate the response structure - required_fields = ["title", "meta_description", "content"] - for field in required_fields: - if field not in rewritten_content: - rewritten_content[field] = original_content.get(field, "") - logger.warning(f"Missing required field '{field}' in rewritten content") - - # Ensure suggested_images exists - if "suggested_images" not in rewritten_content: - rewritten_content["suggested_images"] = [] - - # Clean up the content field - if "content" in rewritten_content: - # Remove any remaining invalid control characters - rewritten_content["content"] = ''.join( - char for char in rewritten_content["content"] - if ord(char) >= 32 or char in '\n\r\t' - ) - # Normalize whitespace - rewritten_content["content"] = re.sub(r'\s+', ' ', rewritten_content["content"]) - rewritten_content["content"] = re.sub(r'\n{3,}', '\n\n', rewritten_content["content"]) - - return rewritten_content - - except Exception as e: - logger.error(f"Error rewriting blog: {e}") - return { - "title": original_content.get("title", ""), - "meta_description": original_content.get("meta_description", ""), - "content": original_content.get("content", ""), - "suggested_images": [], - "error": str(e) - } - - def generate_image(self, image_prompt: str, style: str = "realistic") -> str: - """ - Generate an image based on the prompt. - - Args: - image_prompt: Prompt for image generation - style: Style of the image - - Returns: - Path to the generated image - """ - logger.info(f"Generating image with prompt: {image_prompt}") - - try: - image_path = generate_image(image_prompt, style=style) - return image_path - except Exception as e: - logger.error(f"Error generating image: {e}") - return "" \ No newline at end of file diff --git a/ToBeMigrated/blog_metadata/README.md b/ToBeMigrated/blog_metadata/README.md deleted file mode 100644 index 4d7a72e7..00000000 --- a/ToBeMigrated/blog_metadata/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# AI Blog Metadata Generator - -The AI Blog Metadata Generator module is designed to assist in creating SEO-optimized metadata for blog articles. Utilizing artificial intelligence, this module generates high-quality metadata to enhance the visibility and engagement of blog posts. - -## Prerequisites - -To use this module, ensure that the following prerequisites are met: - -- Python 3.6 or higher -- Streamlit -- Loguru -- Asyncio -- A GPT provider (e.g., OpenAI, Gemini) - -## Installation - -Install the required packages using the Python package installer, pip: - -```bash -pip install -r requirements.txt -``` - -## Usage - -Follow these steps to utilize the AI Blog Metadata Generator module: - -### Generate Blog Title - -The module provides a function to create a blog title that is both SEO-optimized and engaging. This function ensures the title adheres to SEO best practices and avoids negative keywords. - -### Generate Meta Description - -This functionality creates a compelling meta description for the blog content. The description is kept between 150-160 characters to ensure it meets SEO standards. - -### Generate Blog Tags - -The module suggests relevant and specific tags for the blog content. This helps in categorizing and improving the discoverability of the blog post. - -### Generate Blog Categories - -The module identifies the main topics and suggests the most relevant categories for the blog content. This function ensures that the blog is categorized appropriately for the target audience and taxonomy. - -## Helper Functions - -The module includes helper functions to run the asyncio event loop within Streamlit, ensuring smooth and efficient operation of asynchronous tasks such as generating metadata. - -By leveraging this module, users can enhance their blog posts with well-crafted metadata, improving their visibility and engagement in search engines. diff --git a/ToBeMigrated/blog_metadata/get_blog_metadata.py b/ToBeMigrated/blog_metadata/get_blog_metadata.py deleted file mode 100644 index bd164c44..00000000 --- a/ToBeMigrated/blog_metadata/get_blog_metadata.py +++ /dev/null @@ -1,435 +0,0 @@ -import os -import time -import datetime -import sys -import streamlit as st -from loguru import logger -import random -import asyncio -import re - -logger.remove() -logger.add(sys.stdout, - colorize=True, - format="{level}|{file}:{line}:{function}| {message}" - ) - -from ..gpt_providers.text_generation.main_text_generation import llm_text_gen - - -async def blog_metadata(blog_article): - """ - Generate comprehensive SEO metadata for a blog article. - - Args: - blog_article (str): The content of the blog article - - Returns: - tuple: (blog_title, blog_meta_desc, blog_tags, blog_categories, blog_hashtags, blog_slug) - """ - logger.info("Generating comprehensive blog metadata") - - progress_bar = st.progress(0) - total_steps = 6 # Increased steps for new metadata types - status_container = st.empty() - - try: - # Step 1: Generate blog title - status_container.info("Generating SEO-optimized blog title...") - await asyncio.sleep(random.uniform(0.5, 1.5)) - blog_title = generate_blog_title(blog_article) - progress_bar.progress(1 / total_steps) - - # Step 2: Generate blog meta description - status_container.info("Creating compelling meta description...") - await asyncio.sleep(random.uniform(0.5, 1.5)) - blog_meta_desc = generate_blog_description(blog_article) - progress_bar.progress(2 / total_steps) - - # Step 3: Generate blog tags - status_container.info("Extracting relevant blog tags...") - await asyncio.sleep(random.uniform(0.5, 1.5)) - blog_tags = get_blog_tags(blog_article) - progress_bar.progress(3 / total_steps) - - # Step 4: Generate blog categories - status_container.info("Identifying primary blog categories...") - await asyncio.sleep(random.uniform(0.5, 1.5)) - blog_categories = get_blog_categories(blog_article) - progress_bar.progress(4 / total_steps) - - # Step 5: Generate social media hashtags - status_container.info("Creating social media hashtags...") - await asyncio.sleep(random.uniform(0.5, 1.5)) - blog_hashtags = generate_blog_hashtags(blog_article) - progress_bar.progress(5 / total_steps) - - # Step 6: Generate SEO URL slug - status_container.info("Generating SEO-friendly URL slug...") - await asyncio.sleep(random.uniform(0.5, 1.5)) - blog_slug = generate_blog_slug(blog_title) - progress_bar.progress(6 / total_steps) - - # Present the result in a table format - status_container.success("โœ… Blog SEO Metadata generation complete") - #st.table({ - # "Metadata": ["Blog Title", "Meta Description", "Tags", "Categories", "Social Hashtags", "URL Slug"], - # "Value": [blog_title, blog_meta_desc, blog_tags, blog_categories, blog_hashtags, blog_slug] - #}) - - return blog_title, blog_meta_desc, blog_tags, blog_categories, blog_hashtags, blog_slug - - except Exception as e: - status_container.error(f"Error generating metadata: {str(e)}") - logger.error(f"Failed to generate metadata: {str(e)}") - # Return default values to ensure the blog generation process can continue - return f"Blog Article", "An informative blog post", "content, blog", "General, Information", "#content #blog", "blog-article" - - -def generate_blog_title(blog_article): - """ - Generate an SEO-optimized and engaging title for a blog article. - - Args: - blog_article (str): The content of the blog article - - Returns: - str: An SEO-optimized title - """ - logger.info("Generating SEO-optimized blog title") - - # Extract the first 3000 characters for title generation - snippet = blog_article[:3000] if len(blog_article) > 3000 else blog_article - - prompt = f"""As an expert SEO copywriter, create the perfect blog title based on this content. - -REQUIREMENTS: -1. Make it compelling, specific, and actionable -2. Include primary keywords naturally near the beginning -3. Keep it between 50-60 characters (10-12 words maximum) -4. Make it promise clear value to the reader -5. Use power words that evoke emotion where appropriate - -AVOID: -- Clickbait tactics or false promises -- Generic titles that could apply to any article -- Using words like "unveiling", "unleash", "power of", "ultimate guide", or "complete" -- ALL CAPS or excessive punctuation!!!! - -EXAMPLES OF GREAT TITLES: -- "7 Proven Strategies to Improve Your Email Marketing ROI" -- "Why Remote Work Improves Productivity: New Research Findings" -- "How to Build a Personal Budget That Actually Works" - -CONTENT TO ANALYZE: -"{snippet}" - -Reply with ONLY the title and no other text or explanation. -""" - try: - title = llm_text_gen(prompt) - # Clean up any quotes or extra spaces - title = title.strip('"\'').strip() - logger.info(f"Generated title: {title}") - return title - except Exception as err: - logger.error(f"Failed to generate blog title: {err}") - return "Blog Article" # Fallback title - - -def generate_blog_description(blog_content): - """ - Generate an SEO-optimized meta description for the blog. - - Args: - blog_content (str): The content of the blog article - - Returns: - str: An SEO-optimized meta description - """ - logger.info("Generating SEO-optimized meta description") - - # Extract the first 2000 characters for description generation - snippet = blog_content[:2000] if len(blog_content) > 2000 else blog_content - - prompt = f"""As an SEO expert, write the perfect meta description for this blog content. - -REQUIREMENTS: -1. Exactly 150-160 characters (this is critical for SEO) -2. Include primary keywords naturally -3. Compelling value proposition that makes readers want to click -4. Clear indication of what the reader will learn/gain -5. End with an implicit call-to-action when possible - -EXAMPLES OF EXCELLENT META DESCRIPTIONS: -- "Learn how to increase email open rates by 43% with these 5 proven strategies from industry experts. Implement today for immediate results." -- "Discover why 67% of professionals struggle with work-life balance and explore research-backed techniques to reclaim your time and energy." - -CONTENT TO SUMMARIZE: -"{snippet}" - -Reply with ONLY the meta description and no other text. Keep it between 150-160 characters exactly. -""" - try: - description = llm_text_gen(prompt) - # Clean up any quotes or extra spaces - description = description.strip('"\'').strip() - logger.info(f"Generated meta description: {description}") - return description - except Exception as err: - logger.error(f"Failed to generate blog description: {err}") - return "An informative blog post about this topic." # Fallback description - - -def get_blog_tags(blog_article): - """ - Generate relevant SEO tags for a blog article. - - Args: - blog_article (str): The content of the blog article - - Returns: - str: Comma-separated list of relevant tags - """ - logger.info("Generating SEO-optimized blog tags") - - # Extract the first 3000 characters for tag generation - snippet = blog_article[:3000] if len(blog_article) > 3000 else blog_article - - prompt = f"""As an SEO specialist, extract the 4-6 most relevant tags for this blog post. - -REQUIREMENTS: -1. Choose specific, targeted keywords that accurately represent the content -2. Include a mix of broad and specific tags -3. Focus on terms users would actually search for -4. Include at least one long-tail keyword phrase -5. Ensure all tags are directly addressed in the content - -CONTENT TO ANALYZE: -"{snippet}" - -Reply with ONLY the tags as a comma-separated list (e.g., "keyword1, keyword2, keyword3, keyword phrase"). Provide 4-6 tags total. -""" - try: - tags = llm_text_gen(prompt) - # Clean up any quotes or extra commas - tags = tags.strip('"\'').strip() - if tags.endswith(','): - tags = tags[:-1] - logger.info(f"Generated tags: {tags}") - return tags - except Exception as err: - logger.error(f"Failed to generate blog tags: {err}") - return "content, blog" # Fallback tags - - -def get_blog_categories(blog_article): - """ - Identify the most appropriate blog categories for the article. - - Args: - blog_article (str): The content of the blog article - - Returns: - str: Comma-separated list of relevant categories - """ - logger.info("Generating blog categories") - - # Extract the first 2000 characters for category generation - snippet = blog_article[:2000] if len(blog_article) > 2000 else blog_article - - prompt = f"""As a content strategist, identify the 2-3 most appropriate high-level categories for this blog. - -REQUIREMENTS: -1. Choose broad, established categories used in content organization -2. Select categories that best represent the main themes of the article -3. Consider the target audience and their interests -4. Focus on categories that would help with site navigation -5. Aim for a primary category and 1-2 supporting categories - -EXAMPLES OF GOOD CATEGORIES: -- Marketing, Social Media, Strategy -- Finance, Personal Budgeting, Money Management -- Productivity, Remote Work, Business - -CONTENT TO ANALYZE: -"{snippet}" - -Reply with ONLY the categories as a comma-separated list (e.g., "Category1, Category2, Category3"). Provide 2-3 categories total. -""" - try: - categories = llm_text_gen(prompt) - # Clean up any quotes or extra commas - categories = categories.strip('"\'').strip() - if categories.endswith(','): - categories = categories[:-1] - logger.info(f"Generated categories: {categories}") - return categories - except Exception as err: - logger.error(f"Failed to generate blog categories: {err}") - return "General, Information" # Fallback categories - - -def generate_blog_hashtags(blog_article): - """ - Generate social media hashtags for promoting the blog article. - - Args: - blog_article (str): The content of the blog article - - Returns: - str: Space-separated list of hashtags starting with # - """ - logger.info("Generating social media hashtags") - - # Extract the first 2000 characters for hashtag generation - snippet = blog_article[:2000] if len(blog_article) > 2000 else blog_article - - prompt = f"""As a social media strategist, create 5-7 effective hashtags for this blog content. - -REQUIREMENTS: -1. Mix of popular and niche hashtags for better visibility -2. Include industry-specific and trending hashtags where relevant -3. Avoid overly generic hashtags (like #content or #blog) -4. Format each hashtag with # symbol and camelCase or separate words -5. Include at least one branded or campaign-style hashtag - -EXAMPLES OF EFFECTIVE HASHTAG SETS: -- #EmailMarketing #ROITips #DigitalStrategy #MarketingTips #GrowthHacking #EmailROI -- #RemoteWork #ProductivityTips #FutureOfWork #WorkFromHome #RemoteProductivity #HRInsights - -CONTENT TO ANALYZE: -"{snippet}" - -Reply with ONLY the hashtags, each starting with # and separated by spaces. Provide 5-7 hashtags total. -""" - try: - hashtags = llm_text_gen(prompt) - # Clean up any quotes or extra spaces - hashtags = hashtags.strip('"\'').strip() - # Ensure all hashtags start with # - if not hashtags.startswith('#'): - hashtags = ' '.join([f"#{tag.strip('#')}" for tag in hashtags.split()]) - logger.info(f"Generated hashtags: {hashtags}") - return hashtags - except Exception as err: - logger.error(f"Failed to generate blog hashtags: {err}") - return "#content #blog" # Fallback hashtags - - -def generate_blog_slug(blog_title): - """ - Generate an SEO-friendly URL slug from the blog title. - - Args: - blog_title (str): The title of the blog article - - Returns: - str: An SEO-friendly URL slug - """ - logger.info("Generating SEO-friendly URL slug") - - try: - # Use a prompt to generate a customized slug - prompt = f"""As an SEO specialist, create an SEO-friendly URL slug for this blog title: "{blog_title}" - -REQUIREMENTS: -1. Keep it under 60 characters -2. Use only lowercase letters, numbers, and hyphens -3. Include primary keywords near the beginning -4. Remove all unnecessary words (a, the, and, or, but, etc.) -5. Ensure it's human-readable and descriptive - -EXAMPLES: -- Title: "10 Effective Ways to Improve Your Email Marketing ROI This Quarter" - Slug: "improve-email-marketing-roi" - -- Title: "Why Most Remote Workers Are More Productive According to New Research" - Slug: "remote-workers-productivity-research" - -Reply with ONLY the slug and no other text or explanation. -""" - slug = llm_text_gen(prompt) - - # Clean up and normalize the slug - slug = slug.strip('"\'').strip() - - # If the LLM didn't create a proper slug, do it programmatically - if not re.match(r'^[a-z0-9-]+$', slug): - # Fallback to simple programmatic slug creation - slug = blog_title.lower() - # Remove special characters - slug = re.sub(r'[^a-z0-9\s-]', '', slug) - # Replace spaces with hyphens - slug = re.sub(r'\s+', '-', slug) - # Remove redundant hyphens - slug = re.sub(r'-+', '-', slug) - # Limit length to 60 characters - slug = slug[:60].strip('-') - - logger.info(f"Generated slug: {slug}") - return slug - except Exception as err: - logger.error(f"Failed to generate blog slug: {err}") - # Create a simple slug programmatically as fallback - slug = blog_title.lower() - slug = re.sub(r'[^a-z0-9\s-]', '', slug) - slug = re.sub(r'\s+', '-', slug) - slug = re.sub(r'-+', '-', slug) - slug = slug[:60].strip('-') - return slug - - -# Helper function to run the asyncio event loop within Streamlit -def run_async(coro): - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - result = loop.run_until_complete(coro) - loop.close() - return result - - -def get_blog_metadata_longform(longform_content): - """ Function for caching long-form content """ - # Open the file in write mode ("w") to overwrite existing content. - filepath = os.path.join(os.getenv("CONTENT_SAVE_DIR"), "lognform_metadata_file") - with open(filepath, "w") as file: - # Write the text to the file - file.write(longform_content) - print(f"String saved successfully to: {filepath}") - - #genai.configure(api_key=os.environ['GEMINI_API_KEY']) - #file_path = genai.upload_file(path=filepath) - - # Wait for the file to finish processing - #while file_path.state.name == 'PROCESSING': - # print('Waiting for video to be processed.') - # time.sleep(2) - # file_path = genai.get_file(video_file.name) - - #print(f'Video processing complete: {file_path.uri}') - - # Create a cache with a 5 minute TTL - #cache = caching.CachedContent.create( - # model='models/gemini-1.5-flash-001', - # display_name='Alwrity Longform content', # used to identify the cache - # system_instruction=( - # 'You are an expert file analyzer , and your job is to answer ' - # 'the user\'s query based on the file you have access to.' - # ), - # contents=[file_path], - # ttl=datetime.timedelta(minutes=15), - #) - - # Construct a GenerativeModel which uses the created cache. - #model = genai.GenerativeModel.from_cached_content(cached_content=cache) - - # Query the model - #response = model.generate_content([( - # 'SUmmarize the given file ' - # 'in 10 lines ' - # 'list main points')]) - - #print(response.usage_metadata) - #return(response.text) - return("TBD: Not implemented") diff --git a/ToBeMigrated/chatbot_custom/README.md b/ToBeMigrated/chatbot_custom/README.md deleted file mode 100644 index 0f5599e4..00000000 --- a/ToBeMigrated/chatbot_custom/README.md +++ /dev/null @@ -1,222 +0,0 @@ -# Enhanced ALwrity Chatbot - -An intelligent conversational AI assistant that transforms content creation, SEO analysis, and workflow automation through advanced AI-powered interactions. - -## ๐Ÿš€ Major Enhancements - -### **Before vs After Transformation** - -| **Before** | **After** | -|------------|-----------| -| Basic RAG chatbot | Intelligent workflow-driven assistant | -| Simple Q&A interface | Context-aware conversational AI | -| Manual tool selection | Smart intent analysis & tool routing | -| Static responses | Dynamic, personalized interactions | -| Limited functionality | Comprehensive content creation hub | - -## ๐ŸŽฏ Key Improvements - -### 1. **Smart Intent Analysis & Tool Routing** -*Impact: High | Complexity: High* -- **Enhanced Intent Detection**: Advanced NLP analysis of user queries -- **Confidence Scoring**: Reliability metrics for intent predictions -- **Context-Aware Routing**: Intelligent tool selection based on conversation history -- **Multi-Intent Handling**: Process complex requests with multiple objectives - -### 2. **Workflow Automation Engine** -*Impact: High | Complexity: High* -- **Pre-built Workflows**: Ready-to-use processes for common tasks -- **Custom Workflow Creation**: Build personalized automation sequences -- **Progress Tracking**: Visual workflow progress with step-by-step guidance -- **Smart Step Guidance**: Context-aware assistance at each workflow stage - -### 3. **Real-Time Analysis Integration** -*Impact: High | Complexity: High* -- **Instant URL Analysis**: Real-time SEO and content analysis -- **Live SEO Scoring**: Dynamic website performance metrics -- **Content Gap Detection**: Automated competitive analysis -- **Technical SEO Alerts**: Proactive issue identification - -### 4. **Enhanced AI Prompts & Context System** -*Impact: High | Complexity: High* -- **Advanced System Prompts**: Specialized prompts for different content types -- **Comprehensive Context Building**: Multi-layered conversation understanding -- **Dynamic Response Structures**: Adaptive formatting based on user needs -- **Smart Follow-up Generation**: Intelligent conversation continuation - -### 5. **Modular UI Components** โญ *NEW* -*Impact: High | Complexity: Medium* -- **Intelligent Sidebar Manager**: Organized dashboard with smart features -- **Component-Based Architecture**: Reusable UI elements for maintainability -- **Responsive Design**: Optimized interface for different screen sizes -- **State Management**: Persistent UI preferences and interactions - -### 6. **Intelligent Sidebar Hub** -*Impact: Medium | Complexity: Medium* -- **Smart Dashboard**: Real-time metrics and usage analytics -- **Quick Tools Access**: One-click access to frequently used features -- **Organized Categories**: Intuitive grouping of tools and workflows -- **User Preferences**: Customizable interface and content settings - -### 7. **Content Workspace Management** -*Impact: Medium | Complexity: Medium* -- **Draft System**: Save and manage work-in-progress content -- **Workspace Export**: Multiple format export options (JSON, TXT, etc.) -- **Content Ideas Generator**: AI-powered content suggestions -- **Session Management**: Persistent conversation and workspace state - -## ๐Ÿ“ Project Structure - -``` -lib/chatbot_custom/ -โ”œโ”€โ”€ enhanced_alwrity_chatbot.py # Main enhanced chatbot (1,783 lines) -โ”œโ”€โ”€ enhanced_alwrity_chatbot_modular.py # Modular version with UI components -โ”œโ”€โ”€ ui/ # UI Components Module -โ”‚ โ”œโ”€โ”€ __init__.py # UI package initialization -โ”‚ โ””โ”€โ”€ sidebar.py # Sidebar Manager component -โ”œโ”€โ”€ README.md # This comprehensive documentation -โ”œโ”€โ”€ SETUP.md # Setup and configuration guide -โ””โ”€โ”€ ENHANCEMENT_SUMMARY.md # Detailed enhancement summary -``` - -## ๐Ÿ”ง Installation - -The enhanced chatbot uses existing ALwrity dependencies. Install all requirements from the project root: - -```bash -pip install -r requirements.txt -``` - -> **Note**: All required dependencies are already included in the main project `requirements.txt`. No additional packages needed. - -## โš™๏ธ Environment Variables - -Create a `.env` file in the project root with your API keys: - -```env -OPENAI_API_KEY=your_openai_api_key -GOOGLE_API_KEY=your_google_api_key -ANTHROPIC_API_KEY=your_anthropic_api_key -SERPER_API_KEY=your_serper_api_key -``` - -## ๐Ÿš€ Running the Chatbot - -### Standard Version -```bash -streamlit run lib/chatbot_custom/enhanced_alwrity_chatbot.py -``` - -### Modular Version (Recommended) -```bash -streamlit run lib/chatbot_custom/enhanced_alwrity_chatbot_modular.py -``` - -## ๐Ÿ’ป Usage Examples - -### Smart Tool Routing -```python -# User input: "I need to analyze my competitor's website" -# System automatically: -# 1. Detects intent: competitor analysis -# 2. Routes to: website analyzer + competitor tools -# 3. Provides: comprehensive competitive analysis -``` - -### Real-Time Analysis Integration -```python -# User input: "Check the SEO of https://example.com" -# System provides: -# - Technical SEO analysis -# - Content gap analysis -# - On-page optimization suggestions -# - Competitor comparison -``` - -### Workflow Automation -```python -# Blog Creation Workflow: -# Step 1: Topic research and keyword analysis -# Step 2: Content outline generation -# Step 3: SEO optimization suggestions -# Step 4: Content creation with AI assistance -# Step 5: Final review and export options -``` - -## ๐Ÿ”„ Workflow Examples - -### **Blog Creation Workflow** -1. **Research Phase**: Keyword analysis and competitor research -2. **Planning Phase**: Content outline and structure creation -3. **Creation Phase**: AI-assisted content generation -4. **Optimization Phase**: SEO enhancement and refinement -5. **Publishing Phase**: Final review and export options - -### **Competitor Analysis Workflow** -1. **Discovery Phase**: Identify key competitors and URLs -2. **Analysis Phase**: Technical SEO and content analysis -3. **Comparison Phase**: Gap analysis and opportunities -4. **Strategy Phase**: Actionable recommendations -5. **Reporting Phase**: Comprehensive analysis export - -## ๐ŸŽจ User Experience Improvements - -- **Intuitive Interface**: Clean, modern design with logical information hierarchy -- **Smart Suggestions**: Context-aware tool and workflow recommendations -- **Visual Progress Tracking**: Clear workflow progress indicators -- **Personalized Experience**: Adaptive interface based on user preferences -- **Efficient Navigation**: Quick access to frequently used features -- **Comprehensive Help**: Contextual guidance and documentation - -## ๐Ÿ“Š Performance Metrics - -- **๐ŸŽฏ 100% ALwrity Tool Integration**: Seamless access to all ALwrity features -- **โšก 3x Workflow Efficiency**: Automated processes reduce manual steps -- **๐Ÿง  5x Smarter Responses**: Context-aware AI with advanced prompting -- **๐Ÿ“ˆ Real-time Analysis**: Instant SEO and content insights -- **๐ŸŽจ Enhanced UI/UX**: Modern, intuitive interface design - -## ๐Ÿ”ฎ Future Enhancements - -- **Multi-language Support**: Content creation in multiple languages -- **Advanced Analytics Dashboard**: Comprehensive usage and performance metrics -- **Team Collaboration Features**: Shared workspaces and collaborative editing -- **API Integration**: External tool connections and data synchronization -- **Mobile Optimization**: Enhanced mobile experience and responsive design -- **Voice Interface**: Speech-to-text and voice commands -- **Plugin System**: Extensible architecture for custom integrations - -## ๐Ÿค Contributing - -We welcome contributions to enhance the ALwrity chatbot further! - -### Steps to Contribute: -1. **Fork the Repository**: Create your own copy of the project -2. **Create Feature Branch**: `git checkout -b feature/AmazingFeature` -3. **Commit Changes**: `git commit -m 'Add AmazingFeature'` -4. **Push to Branch**: `git push origin feature/AmazingFeature` -5. **Open Pull Request**: Submit your changes for review - -### Development Guidelines: -- Follow existing code style and conventions -- Add comprehensive documentation for new features -- Include unit tests for new functionality -- Ensure compatibility with existing ALwrity tools - -## ๐Ÿ“š Documentation - -- **[Setup Guide](SETUP.md)**: Detailed installation and configuration instructions -- **[Enhancement Summary](ENHANCEMENT_SUMMARY.md)**: Comprehensive overview of improvements -- **[ALwrity Documentation](../../README.md)**: Main project documentation - -## ๐Ÿ†˜ Support - -- **GitHub Issues**: [Report bugs or request features](https://github.com/AJaySi/AI-Writer/issues) -- **Documentation**: Comprehensive guides and API references -- **Community**: Join discussions and get help from other users - ---- - -**๐ŸŽ‰ Experience the power of intelligent content creation with Enhanced ALwrity!** - -*Transform your content workflow with AI-driven automation, real-time analysis, and intelligent assistance.* diff --git a/ToBeMigrated/chatbot_custom/core/__init__.py b/ToBeMigrated/chatbot_custom/core/__init__.py deleted file mode 100644 index 353d957f..00000000 --- a/ToBeMigrated/chatbot_custom/core/__init__.py +++ /dev/null @@ -1,21 +0,0 @@ -""" -Core modules for the Enhanced ALwrity Chatbot. - -This package contains the core functionality split into manageable modules: -- workflow_engine: Handles multi-tool workflows and automation -- tool_router: Intelligent tool routing based on user intent -- intent_analyzer: Advanced user intent analysis -- context_manager: Conversation context and state management -""" - -from .workflow_engine import WorkflowEngine -from .tool_router import SmartToolRouter -from .intent_analyzer import IntentAnalyzer -from .context_manager import ContextManager - -__all__ = [ - 'WorkflowEngine', - 'SmartToolRouter', - 'IntentAnalyzer', - 'ContextManager' -] \ No newline at end of file diff --git a/ToBeMigrated/chatbot_custom/core/context_manager.py b/ToBeMigrated/chatbot_custom/core/context_manager.py deleted file mode 100644 index d806f21c..00000000 --- a/ToBeMigrated/chatbot_custom/core/context_manager.py +++ /dev/null @@ -1,413 +0,0 @@ -""" -Context Manager for Enhanced ALwrity Chatbot. - -Manages conversation context, state, and user preferences with persistence. -""" - -import json -import os -from datetime import datetime, timedelta -from typing import Dict, List, Any, Optional -from dataclasses import dataclass, asdict - - -@dataclass -class ConversationTurn: - """Represents a single conversation turn.""" - timestamp: str - user_input: str - intent: str - tools_used: List[str] - response_summary: str - satisfaction_score: Optional[float] = None - - -@dataclass -class UserPreferences: - """User preferences and settings.""" - content_preferences: List[str] - preferred_tone: str - preferred_length: str - industry_focus: List[str] - language: str - timezone: str - notification_settings: Dict[str, bool] - - -@dataclass -class WorkflowState: - """Represents the state of an active workflow.""" - workflow_id: str - workflow_name: str - current_step: int - total_steps: int - step_data: Dict[str, Any] - started_at: str - last_updated: str - is_paused: bool = False - - -class ContextManager: - """Advanced conversation context and state management.""" - - def __init__(self, user_id: str = "default", context_file: str = None): - self.user_id = user_id - self.context_file = context_file or f"user_context_{user_id}.json" - self.context_dir = "lib/chatbot_custom/user_contexts" - - # Ensure context directory exists - os.makedirs(self.context_dir, exist_ok=True) - self.context_path = os.path.join(self.context_dir, self.context_file) - - # Initialize context data - self.conversation_history: List[ConversationTurn] = [] - self.user_preferences: UserPreferences = UserPreferences( - content_preferences=[], - preferred_tone="professional", - preferred_length="medium", - industry_focus=[], - language="en", - timezone="UTC", - notification_settings={} - ) - self.active_workflows: List[WorkflowState] = [] - self.tool_usage_history: List[Dict[str, Any]] = [] - self.session_data: Dict[str, Any] = {} - self.analytics_data: Dict[str, Any] = { - "total_interactions": 0, - "tools_used_count": {}, - "workflows_completed": 0, - "average_session_length": 0, - "last_active": None - } - - # Load existing context - self.load_context() - - def add_conversation_turn(self, user_input: str, intent: str, - tools_used: List[str], response_summary: str, - satisfaction_score: Optional[float] = None): - """Add a new conversation turn to history.""" - turn = ConversationTurn( - timestamp=datetime.now().isoformat(), - user_input=user_input, - intent=intent, - tools_used=tools_used, - response_summary=response_summary, - satisfaction_score=satisfaction_score - ) - - self.conversation_history.append(turn) - - # Keep only last 50 turns to manage memory - if len(self.conversation_history) > 50: - self.conversation_history = self.conversation_history[-50:] - - # Update analytics - self.analytics_data["total_interactions"] += 1 - self.analytics_data["last_active"] = datetime.now().isoformat() - - # Update tool usage statistics - for tool in tools_used: - if tool in self.analytics_data["tools_used_count"]: - self.analytics_data["tools_used_count"][tool] += 1 - else: - self.analytics_data["tools_used_count"][tool] = 1 - - self.save_context() - - def update_user_preferences(self, preferences: Dict[str, Any]): - """Update user preferences.""" - for key, value in preferences.items(): - if hasattr(self.user_preferences, key): - setattr(self.user_preferences, key, value) - - self.save_context() - - def get_recent_context(self, turns: int = 5) -> List[ConversationTurn]: - """Get recent conversation turns for context.""" - return self.conversation_history[-turns:] if self.conversation_history else [] - - def get_recent_topics(self, hours: int = 24) -> List[str]: - """Get topics discussed in recent hours.""" - cutoff_time = datetime.now() - timedelta(hours=hours) - recent_topics = [] - - for turn in self.conversation_history: - turn_time = datetime.fromisoformat(turn.timestamp) - if turn_time > cutoff_time: - # Extract topics from intent and tools used - recent_topics.append(turn.intent) - recent_topics.extend(turn.tools_used) - - # Return unique topics - return list(set(recent_topics)) - - def get_tool_usage_history(self, limit: int = 10) -> List[str]: - """Get recent tool usage history.""" - recent_tools = [] - for turn in self.conversation_history[-limit:]: - recent_tools.extend(turn.tools_used) - - return recent_tools - - def start_workflow(self, workflow_id: str, workflow_name: str, total_steps: int): - """Start a new workflow.""" - workflow_state = WorkflowState( - workflow_id=workflow_id, - workflow_name=workflow_name, - current_step=0, - total_steps=total_steps, - step_data={}, - started_at=datetime.now().isoformat(), - last_updated=datetime.now().isoformat() - ) - - self.active_workflows.append(workflow_state) - self.save_context() - - return workflow_state - - def update_workflow_step(self, workflow_id: str, step_data: Dict[str, Any]): - """Update workflow step data.""" - for workflow in self.active_workflows: - if workflow.workflow_id == workflow_id: - workflow.current_step += 1 - workflow.step_data.update(step_data) - workflow.last_updated = datetime.now().isoformat() - - # Check if workflow is completed - if workflow.current_step >= workflow.total_steps: - self.complete_workflow(workflow_id) - - self.save_context() - return workflow - - return None - - def complete_workflow(self, workflow_id: str): - """Mark workflow as completed and remove from active workflows.""" - self.active_workflows = [w for w in self.active_workflows if w.workflow_id != workflow_id] - self.analytics_data["workflows_completed"] += 1 - self.save_context() - - def pause_workflow(self, workflow_id: str): - """Pause an active workflow.""" - for workflow in self.active_workflows: - if workflow.workflow_id == workflow_id: - workflow.is_paused = True - workflow.last_updated = datetime.now().isoformat() - self.save_context() - return True - return False - - def resume_workflow(self, workflow_id: str): - """Resume a paused workflow.""" - for workflow in self.active_workflows: - if workflow.workflow_id == workflow_id: - workflow.is_paused = False - workflow.last_updated = datetime.now().isoformat() - self.save_context() - return True - return False - - def get_active_workflows(self) -> List[WorkflowState]: - """Get all active workflows.""" - return [w for w in self.active_workflows if not w.is_paused] - - def get_paused_workflows(self) -> List[WorkflowState]: - """Get all paused workflows.""" - return [w for w in self.active_workflows if w.is_paused] - - def set_session_data(self, key: str, value: Any): - """Set session-specific data.""" - self.session_data[key] = value - - def get_session_data(self, key: str, default: Any = None) -> Any: - """Get session-specific data.""" - return self.session_data.get(key, default) - - def clear_session_data(self): - """Clear all session data.""" - self.session_data.clear() - - def get_context_for_intent_analysis(self) -> Dict[str, Any]: - """Get context data for intent analysis.""" - return { - "recent_topics": self.get_recent_topics(), - "user_preferences": asdict(self.user_preferences), - "active_workflows": [w.workflow_name for w in self.get_active_workflows()], - "tool_usage_history": self.get_tool_usage_history(), - "session_data": self.session_data - } - - def get_user_analytics(self) -> Dict[str, Any]: - """Get user analytics and usage statistics.""" - # Calculate average session length - if self.conversation_history: - session_starts = [] - current_session_start = None - - for turn in self.conversation_history: - turn_time = datetime.fromisoformat(turn.timestamp) - if not current_session_start: - current_session_start = turn_time - elif (turn_time - current_session_start).total_seconds() > 3600: # 1 hour gap = new session - session_starts.append(current_session_start) - current_session_start = turn_time - - if current_session_start: - session_starts.append(current_session_start) - - # Most used tools - most_used_tools = sorted( - self.analytics_data["tools_used_count"].items(), - key=lambda x: x[1], - reverse=True - )[:5] - - # Recent activity pattern - recent_activity = {} - for turn in self.conversation_history[-20:]: # Last 20 turns - date = turn.timestamp.split('T')[0] # Get date part - if date in recent_activity: - recent_activity[date] += 1 - else: - recent_activity[date] = 1 - - return { - **self.analytics_data, - "most_used_tools": most_used_tools, - "recent_activity_pattern": recent_activity, - "active_workflows_count": len(self.get_active_workflows()), - "paused_workflows_count": len(self.get_paused_workflows()), - "conversation_turns": len(self.conversation_history) - } - - def export_conversation_history(self, format: str = "json") -> str: - """Export conversation history in specified format.""" - if format.lower() == "json": - return json.dumps([asdict(turn) for turn in self.conversation_history], indent=2) - elif format.lower() == "txt": - text_export = [] - for turn in self.conversation_history: - text_export.append(f"[{turn.timestamp}] User: {turn.user_input}") - text_export.append(f"Intent: {turn.intent}, Tools: {', '.join(turn.tools_used)}") - text_export.append(f"Response: {turn.response_summary}") - text_export.append("-" * 50) - return "\n".join(text_export) - else: - raise ValueError("Unsupported export format. Use 'json' or 'txt'.") - - def cleanup_old_data(self, days: int = 30): - """Clean up old conversation data beyond specified days.""" - cutoff_date = datetime.now() - timedelta(days=days) - - self.conversation_history = [ - turn for turn in self.conversation_history - if datetime.fromisoformat(turn.timestamp) > cutoff_date - ] - - self.save_context() - - def save_context(self): - """Save context data to file.""" - try: - context_data = { - "user_id": self.user_id, - "conversation_history": [asdict(turn) for turn in self.conversation_history], - "user_preferences": asdict(self.user_preferences), - "active_workflows": [asdict(workflow) for workflow in self.active_workflows], - "analytics_data": self.analytics_data, - "last_saved": datetime.now().isoformat() - } - - with open(self.context_path, 'w', encoding='utf-8') as f: - json.dump(context_data, f, indent=2, ensure_ascii=False) - - except Exception as e: - print(f"Error saving context: {e}") - - def load_context(self): - """Load context data from file.""" - try: - if os.path.exists(self.context_path): - with open(self.context_path, 'r', encoding='utf-8') as f: - context_data = json.load(f) - - # Load conversation history - self.conversation_history = [ - ConversationTurn(**turn_data) - for turn_data in context_data.get("conversation_history", []) - ] - - # Load user preferences - prefs_data = context_data.get("user_preferences", {}) - if prefs_data: - self.user_preferences = UserPreferences(**prefs_data) - - # Load active workflows - self.active_workflows = [ - WorkflowState(**workflow_data) - for workflow_data in context_data.get("active_workflows", []) - ] - - # Load analytics data - self.analytics_data.update(context_data.get("analytics_data", {})) - - except Exception as e: - print(f"Error loading context: {e}") - # Continue with default values if loading fails - - def reset_context(self): - """Reset all context data (use with caution).""" - self.conversation_history.clear() - self.active_workflows.clear() - self.session_data.clear() - self.analytics_data = { - "total_interactions": 0, - "tools_used_count": {}, - "workflows_completed": 0, - "average_session_length": 0, - "last_active": None - } - - # Reset user preferences to defaults - self.user_preferences = UserPreferences( - content_preferences=[], - preferred_tone="professional", - preferred_length="medium", - industry_focus=[], - language="en", - timezone="UTC", - notification_settings={} - ) - - self.save_context() - - def get_context_summary(self) -> str: - """Get a human-readable summary of the current context.""" - summary_parts = [] - - # Basic stats - summary_parts.append(f"Total interactions: {self.analytics_data['total_interactions']}") - summary_parts.append(f"Conversation turns: {len(self.conversation_history)}") - - # Active workflows - active_workflows = self.get_active_workflows() - if active_workflows: - workflow_names = [w.workflow_name for w in active_workflows] - summary_parts.append(f"Active workflows: {', '.join(workflow_names)}") - - # Recent topics - recent_topics = self.get_recent_topics(hours=6) # Last 6 hours - if recent_topics: - summary_parts.append(f"Recent topics: {', '.join(recent_topics[:5])}") - - # User preferences - if self.user_preferences.content_preferences: - summary_parts.append(f"Content preferences: {', '.join(self.user_preferences.content_preferences)}") - - summary_parts.append(f"Preferred tone: {self.user_preferences.preferred_tone}") - - return "\n".join(summary_parts) \ No newline at end of file diff --git a/ToBeMigrated/chatbot_custom/core/intent_analyzer.py b/ToBeMigrated/chatbot_custom/core/intent_analyzer.py deleted file mode 100644 index d4490334..00000000 --- a/ToBeMigrated/chatbot_custom/core/intent_analyzer.py +++ /dev/null @@ -1,413 +0,0 @@ -""" -Intent Analyzer for Enhanced ALwrity Chatbot. - -Advanced user intent analysis with context awareness and multi-intent detection. -""" - -from typing import Dict, List, Any - - -class IntentAnalyzer: - """Advanced user intent analysis with context awareness.""" - - def __init__(self): - self.intent_keywords = { - "write": { - "keywords": ["write", "create", "generate", "compose", "draft", "author", "produce", "craft"], - "sub_intents": ["blog", "article", "story", "social", "product", "email", "copy", "script"] - }, - "analyze": { - "keywords": ["analyze", "review", "check", "examine", "evaluate", "audit", "assess", "study"], - "sub_intents": ["seo", "competitor", "website", "content", "performance", "traffic", "keywords"] - }, - "seo": { - "keywords": ["seo", "optimize", "rank", "keyword", "search", "meta", "visibility", "serp"], - "sub_intents": ["on_page", "technical", "content_gap", "backlinks", "local", "mobile"] - }, - "social": { - "keywords": ["social", "facebook", "twitter", "linkedin", "instagram", "youtube", "tiktok"], - "sub_intents": ["post", "campaign", "engagement", "hashtags", "stories", "ads"] - }, - "research": { - "keywords": ["research", "competitor", "market", "trend", "keyword", "analysis", "study"], - "sub_intents": ["competitor", "keyword", "market", "content_gap", "audience", "trends"] - }, - "plan": { - "keywords": ["plan", "strategy", "calendar", "schedule", "roadmap", "organize", "structure"], - "sub_intents": ["content_calendar", "strategy", "campaign", "workflow", "editorial"] - }, - "workflow": { - "keywords": ["workflow", "automate", "process", "step", "guide", "complete", "pipeline"], - "sub_intents": ["blog_creation", "seo_audit", "social_campaign", "content_strategy"] - }, - "optimize": { - "keywords": ["optimize", "improve", "enhance", "boost", "increase", "maximize", "refine"], - "sub_intents": ["seo", "content", "performance", "conversion", "speed", "engagement"] - }, - "learn": { - "keywords": ["learn", "how", "tutorial", "guide", "help", "explain", "teach", "show"], - "sub_intents": ["seo", "content", "social", "tools", "strategy", "best_practices"] - }, - "fix": { - "keywords": ["fix", "solve", "repair", "troubleshoot", "debug", "resolve", "correct"], - "sub_intents": ["seo_issues", "technical", "content", "performance", "errors"] - } - } - - self.content_type_keywords = { - "blog": ["blog", "article", "post", "content"], - "social": ["social", "post", "tweet", "update", "story"], - "email": ["email", "newsletter", "campaign", "sequence"], - "video": ["video", "youtube", "script", "transcript"], - "ad": ["ad", "advertisement", "promotion", "campaign"], - "product": ["product", "description", "listing", "catalog"], - "news": ["news", "press", "announcement", "release"], - "story": ["story", "narrative", "fiction", "creative"], - "technical": ["technical", "documentation", "manual", "guide"], - "academic": ["academic", "research", "paper", "thesis"] - } - - self.urgency_keywords = { - "high": ["urgent", "asap", "immediately", "emergency", "critical", "now"], - "medium": ["soon", "quickly", "fast", "priority", "important"], - "low": ["eventually", "when possible", "later", "sometime"] - } - - self.complexity_indicators = { - "high": ["comprehensive", "detailed", "complete", "full", "extensive", "thorough"], - "medium": ["moderate", "standard", "regular", "normal", "typical"], - "low": ["simple", "basic", "quick", "brief", "short", "minimal"] - } - - def analyze_user_intent(self, prompt: str, context: Dict[str, Any] = None) -> Dict[str, Any]: - """Enhanced user intent analysis with context awareness.""" - prompt_lower = prompt.lower() - - # Detect primary and secondary intents - detected_intents = self._detect_intents(prompt_lower) - - # Detect sub-intents - sub_intents = self._detect_sub_intents(prompt_lower, detected_intents) - - # Determine content types - content_types = self._detect_content_types(prompt_lower) - - # Assess urgency - urgency = self._assess_urgency(prompt_lower) - - # Determine complexity - complexity = self._assess_complexity(prompt_lower) - - # Calculate confidence scores - confidence_scores = self._calculate_confidence_scores(prompt_lower, detected_intents) - - # Context-aware enhancements - if context: - detected_intents, confidence_scores = self._enhance_with_context( - detected_intents, confidence_scores, context, prompt_lower - ) - - # Determine primary intent - primary_intent = self._determine_primary_intent(detected_intents, confidence_scores) - - # Generate suggestions - suggested_workflows = self._suggest_workflows(detected_intents, content_types) - suggested_tools = self._suggest_tools(detected_intents, sub_intents, content_types) - - return { - "primary_intent": primary_intent, - "all_intents": detected_intents, - "sub_intents": sub_intents, - "content_types": content_types, - "confidence_scores": confidence_scores, - "urgency": urgency, - "complexity": complexity, - "suggested_workflows": suggested_workflows, - "suggested_tools": suggested_tools, - "intent_strength": self._calculate_intent_strength(confidence_scores), - "multi_intent": len(detected_intents) > 1, - "context_enhanced": context is not None - } - - def _detect_intents(self, prompt_lower: str) -> List[str]: - """Detect all intents in the user prompt.""" - detected_intents = [] - - for intent, data in self.intent_keywords.items(): - matches = sum(1 for keyword in data["keywords"] if keyword in prompt_lower) - if matches > 0: - detected_intents.append(intent) - - return detected_intents - - def _detect_sub_intents(self, prompt_lower: str, detected_intents: List[str]) -> List[str]: - """Detect sub-intents based on primary intents.""" - sub_intents = [] - - for intent in detected_intents: - if intent in self.intent_keywords: - for sub_intent in self.intent_keywords[intent]["sub_intents"]: - if sub_intent in prompt_lower: - sub_intents.append(sub_intent) - - return list(set(sub_intents)) # Remove duplicates - - def _detect_content_types(self, prompt_lower: str) -> List[str]: - """Detect content types mentioned in the prompt.""" - content_types = [] - - for content_type, keywords in self.content_type_keywords.items(): - if any(keyword in prompt_lower for keyword in keywords): - content_types.append(content_type) - - return content_types - - def _assess_urgency(self, prompt_lower: str) -> Dict[str, Any]: - """Assess the urgency level of the request.""" - urgency_level = "normal" - urgency_score = 0.5 - - for level, keywords in self.urgency_keywords.items(): - matches = sum(1 for keyword in keywords if keyword in prompt_lower) - if matches > 0: - if level == "high": - urgency_level = "high" - urgency_score = 0.9 - break - elif level == "medium" and urgency_level == "normal": - urgency_level = "medium" - urgency_score = 0.7 - elif level == "low" and urgency_level == "normal": - urgency_level = "low" - urgency_score = 0.3 - - return { - "level": urgency_level, - "score": urgency_score, - "is_urgent": urgency_level in ["high", "medium"] - } - - def _assess_complexity(self, prompt_lower: str) -> Dict[str, Any]: - """Assess the complexity level of the request.""" - complexity_level = "medium" - complexity_score = 0.5 - - for level, keywords in self.complexity_indicators.items(): - matches = sum(1 for keyword in keywords if keyword in prompt_lower) - if matches > 0: - complexity_level = level - complexity_score = {"high": 0.9, "medium": 0.5, "low": 0.3}[level] - break - - # Additional complexity indicators - word_count = len(prompt_lower.split()) - if word_count > 50: - complexity_score = min(complexity_score + 0.2, 1.0) - elif word_count < 10: - complexity_score = max(complexity_score - 0.2, 0.1) - - return { - "level": complexity_level, - "score": complexity_score, - "word_count": word_count - } - - def _calculate_confidence_scores(self, prompt_lower: str, detected_intents: List[str]) -> Dict[str, float]: - """Calculate confidence scores for detected intents.""" - confidence_scores = {} - - for intent in detected_intents: - if intent in self.intent_keywords: - keywords = self.intent_keywords[intent]["keywords"] - matches = sum(1 for keyword in keywords if keyword in prompt_lower) - confidence = matches / len(keywords) - - # Boost confidence for exact matches - if intent in prompt_lower: - confidence += 0.3 - - # Boost confidence for multiple keyword matches - if matches > 2: - confidence += 0.2 - - confidence_scores[intent] = min(confidence, 1.0) - - return confidence_scores - - def _enhance_with_context(self, detected_intents: List[str], confidence_scores: Dict[str, float], - context: Dict[str, Any], prompt_lower: str) -> tuple: - """Enhance intent detection with conversation context.""" - enhanced_intents = detected_intents.copy() - enhanced_scores = confidence_scores.copy() - - # Recent conversation topics - recent_topics = context.get("recent_topics", []) - for topic in recent_topics: - if topic.lower() in prompt_lower: - # Boost related intents - for intent in self.intent_keywords: - if topic.lower() in self.intent_keywords[intent]["keywords"]: - if intent in enhanced_scores: - enhanced_scores[intent] += 0.1 - else: - enhanced_intents.append(intent) - enhanced_scores[intent] = 0.4 - - # User preferences - user_prefs = context.get("user_preferences", {}) - if user_prefs.get("content_preferences"): - for pref in user_prefs["content_preferences"]: - if pref in prompt_lower: - # Boost content creation intents - if "write" in enhanced_scores: - enhanced_scores["write"] += 0.15 - - # Active workflows - active_workflows = context.get("active_workflows", []) - if active_workflows: - # Boost workflow-related intents - if "workflow" in enhanced_scores: - enhanced_scores["workflow"] += 0.2 - else: - enhanced_intents.append("workflow") - enhanced_scores["workflow"] = 0.6 - - # Tool usage history - tool_history = context.get("tool_usage_history", []) - if tool_history: - last_tools = tool_history[-3:] # Last 3 tools - for tool in last_tools: - # Map tools to intents and boost related intents - tool_intent_mapping = { - "ai_blog_writer": "write", - "content_gap_analysis": "analyze", - "technical_seo": "seo", - "linkedin_writer": "social" - } - - if tool in tool_intent_mapping: - intent = tool_intent_mapping[tool] - if intent in enhanced_scores: - enhanced_scores[intent] += 0.1 - - return enhanced_intents, enhanced_scores - - def _determine_primary_intent(self, detected_intents: List[str], confidence_scores: Dict[str, float]) -> str: - """Determine the primary intent from detected intents.""" - if not detected_intents: - return "general" - - if len(detected_intents) == 1: - return detected_intents[0] - - # Return intent with highest confidence - primary_intent = max(detected_intents, key=lambda x: confidence_scores.get(x, 0)) - return primary_intent - - def _suggest_workflows(self, detected_intents: List[str], content_types: List[str]) -> List[str]: - """Suggest relevant workflows based on intents and content types.""" - suggested_workflows = [] - - # Intent-based workflow suggestions - workflow_mapping = { - "write": ["blog_creation_workflow", "content_strategy_workflow"], - "analyze": ["competitor_analysis_workflow", "seo_audit_workflow"], - "seo": ["seo_audit_workflow", "content_gap_workflow"], - "social": ["social_media_workflow", "content_repurposing_workflow"], - "plan": ["content_strategy_workflow", "editorial_calendar_workflow"] - } - - for intent in detected_intents: - if intent in workflow_mapping: - suggested_workflows.extend(workflow_mapping[intent]) - - # Content type specific workflows - if "blog" in content_types: - suggested_workflows.append("blog_creation_workflow") - if "social" in content_types: - suggested_workflows.append("social_media_workflow") - - return list(set(suggested_workflows)) # Remove duplicates - - def _suggest_tools(self, detected_intents: List[str], sub_intents: List[str], - content_types: List[str]) -> List[str]: - """Suggest relevant tools based on intents, sub-intents, and content types.""" - suggested_tools = [] - - # Intent-based tool suggestions - tool_mapping = { - "write": ["ai_blog_writer", "story_writer", "email_writer"], - "analyze": ["content_gap_analysis", "website_analyzer", "competitor_analyzer"], - "seo": ["technical_seo", "on_page_seo", "keyword_research"], - "social": ["linkedin_writer", "facebook_writer", "social_campaign"], - "research": ["competitor_analysis", "keyword_research", "market_research"], - "optimize": ["seo_optimizer", "content_optimizer", "performance_optimizer"] - } - - for intent in detected_intents: - if intent in tool_mapping: - suggested_tools.extend(tool_mapping[intent]) - - # Sub-intent specific tools - sub_intent_tools = { - "blog": ["ai_blog_writer", "seo_optimizer"], - "competitor": ["competitor_analysis", "content_gap_analysis"], - "technical": ["technical_seo", "performance_analyzer"], - "social": ["linkedin_writer", "facebook_writer"] - } - - for sub_intent in sub_intents: - if sub_intent in sub_intent_tools: - suggested_tools.extend(sub_intent_tools[sub_intent]) - - # Content type specific tools - content_tools = { - "blog": ["ai_blog_writer", "seo_optimizer"], - "social": ["linkedin_writer", "facebook_writer"], - "email": ["email_writer", "campaign_creator"], - "video": ["youtube_writer", "script_generator"] - } - - for content_type in content_types: - if content_type in content_tools: - suggested_tools.extend(content_tools[content_type]) - - return list(set(suggested_tools)) # Remove duplicates - - def _calculate_intent_strength(self, confidence_scores: Dict[str, float]) -> str: - """Calculate overall intent strength.""" - if not confidence_scores: - return "weak" - - max_confidence = max(confidence_scores.values()) - avg_confidence = sum(confidence_scores.values()) / len(confidence_scores) - - if max_confidence >= 0.8 and avg_confidence >= 0.6: - return "strong" - elif max_confidence >= 0.6 or avg_confidence >= 0.4: - return "moderate" - else: - return "weak" - - def get_intent_explanation(self, intent_analysis: Dict[str, Any]) -> str: - """Generate a human-readable explanation of the intent analysis.""" - primary = intent_analysis["primary_intent"] - confidence = intent_analysis["confidence_scores"].get(primary, 0) - urgency = intent_analysis["urgency"]["level"] - complexity = intent_analysis["complexity"]["level"] - - explanation = f"Primary intent: {primary} (confidence: {confidence:.2f})\n" - - if intent_analysis["multi_intent"]: - other_intents = [i for i in intent_analysis["all_intents"] if i != primary] - explanation += f"Additional intents: {', '.join(other_intents)}\n" - - if intent_analysis["content_types"]: - explanation += f"Content types: {', '.join(intent_analysis['content_types'])}\n" - - explanation += f"Urgency: {urgency}, Complexity: {complexity}\n" - - if intent_analysis["suggested_tools"]: - explanation += f"Recommended tools: {', '.join(intent_analysis['suggested_tools'][:3])}" - - return explanation \ No newline at end of file diff --git a/ToBeMigrated/chatbot_custom/core/tool_router.py b/ToBeMigrated/chatbot_custom/core/tool_router.py deleted file mode 100644 index f3f13107..00000000 --- a/ToBeMigrated/chatbot_custom/core/tool_router.py +++ /dev/null @@ -1,285 +0,0 @@ -""" -Smart Tool Router for Enhanced ALwrity Chatbot. - -Intelligent tool routing based on user intent and context. -""" - -from typing import Dict, List, Any - - -class SmartToolRouter: - """Intelligent tool routing based on user intent and context.""" - - def __init__(self): - self.tool_categories = { - "content_creation": [ - "ai_blog_writer", "story_writer", "essay_writer", - "product_description", "email_writer", "news_writer" - ], - "seo_tools": [ - "content_gap_analysis", "technical_seo", "on_page_seo", - "competitor_analysis", "keyword_research", "meta_generator" - ], - "social_media": [ - "linkedin_writer", "facebook_writer", "youtube_writer", - "instagram_writer", "twitter_writer", "social_campaign" - ], - "analysis": [ - "website_analyzer", "content_analyzer", "competitor_analyzer", - "performance_analyzer", "seo_analyzer" - ], - "planning": [ - "content_calendar", "content_repurposing", "strategy_planner", - "campaign_planner", "editorial_calendar" - ], - "optimization": [ - "seo_optimizer", "content_optimizer", "performance_optimizer", - "conversion_optimizer", "speed_optimizer" - ] - } - - self.intent_tool_mapping = { - "write": ["ai_blog_writer", "story_writer", "essay_writer", "email_writer"], - "analyze": ["content_gap_analysis", "technical_seo", "website_analyzer", "competitor_analyzer"], - "seo": ["on_page_seo", "technical_seo", "content_gap_analysis", "seo_optimizer"], - "social": ["linkedin_writer", "facebook_writer", "youtube_writer", "social_campaign"], - "plan": ["content_calendar", "content_repurposing", "strategy_planner", "campaign_planner"], - "research": ["competitor_analysis", "content_gap_analysis", "keyword_research", "market_research"], - "optimize": ["seo_optimizer", "content_optimizer", "performance_optimizer"], - "create": ["ai_blog_writer", "content_creator", "social_content_creation"], - "audit": ["technical_seo", "seo_analyzer", "website_analyzer", "performance_analyzer"] - } - - # Tool confidence weights based on effectiveness - self.tool_weights = { - "ai_blog_writer": 0.9, - "content_gap_analysis": 0.85, - "technical_seo": 0.8, - "linkedin_writer": 0.85, - "competitor_analysis": 0.8, - "seo_optimizer": 0.75, - "content_calendar": 0.7 - } - - def route_to_tools(self, user_intent: str, context: Dict[str, Any]) -> List[Dict[str, Any]]: - """Route user intent to relevant tools with confidence scoring.""" - suggested_tools = [] - user_intent_lower = user_intent.lower() - - # Primary intent matching - for intent, tools in self.intent_tool_mapping.items(): - if intent in user_intent_lower: - for tool in tools: - confidence = self._calculate_confidence(intent, user_intent, context) - suggested_tools.append({ - "tool": tool, - "category": self._get_tool_category(tool), - "confidence": confidence, - "intent_match": intent, - "reason": f"Matches '{intent}' intent" - }) - - # Context-based suggestions - context_tools = self._get_context_based_suggestions(context, user_intent) - suggested_tools.extend(context_tools) - - # Remove duplicates and sort by confidence - unique_tools = {} - for tool in suggested_tools: - tool_name = tool["tool"] - if tool_name not in unique_tools or tool["confidence"] > unique_tools[tool_name]["confidence"]: - unique_tools[tool_name] = tool - - # Sort by confidence and return top suggestions - sorted_tools = sorted(unique_tools.values(), key=lambda x: x["confidence"], reverse=True) - return sorted_tools[:8] # Return top 8 suggestions - - def _get_tool_category(self, tool: str) -> str: - """Get category for a tool.""" - for category, tools in self.tool_categories.items(): - if tool in tools: - return category - return "general" - - def _calculate_confidence(self, intent: str, user_text: str, context: Dict[str, Any]) -> float: - """Calculate confidence score for tool suggestion.""" - base_score = 0.5 - user_text_lower = user_text.lower() - - # Intent match bonus - if intent in user_text_lower: - base_score += 0.3 - - # Keyword bonuses - keyword_bonuses = { - "write": ["create", "generate", "compose", "draft", "author", "produce"], - "analyze": ["check", "review", "examine", "evaluate", "assess", "study"], - "seo": ["optimize", "rank", "search", "keywords", "meta", "visibility"], - "social": ["post", "share", "engage", "campaign", "viral", "audience"], - "plan": ["schedule", "organize", "strategy", "roadmap", "timeline"], - "research": ["study", "investigate", "explore", "discover", "find"] - } - - if intent in keyword_bonuses: - for keyword in keyword_bonuses[intent]: - if keyword in user_text_lower: - base_score += 0.1 - - # Context bonuses - if context: - # Recent tool usage - recent_tools = context.get('tool_usage_history', [])[-3:] - if any(tool in user_text_lower for tool in recent_tools): - base_score += 0.15 - - # User preferences - user_prefs = context.get('user_preferences', {}) - if user_prefs.get('industry') and user_prefs['industry'].lower() in user_text_lower: - base_score += 0.1 - - # Urgency bonus - urgency_keywords = ["urgent", "asap", "quickly", "fast", "immediate", "now"] - if any(keyword in user_text_lower for keyword in urgency_keywords): - base_score += 0.1 - - return min(base_score, 1.0) - - def _get_context_based_suggestions(self, context: Dict[str, Any], user_intent: str) -> List[Dict[str, Any]]: - """Get tool suggestions based on conversation context.""" - context_tools = [] - - if not context: - return context_tools - - # Recent tool usage patterns - recent_tools = context.get('tool_usage_history', []) - if recent_tools: - # Suggest complementary tools - last_tool = recent_tools[-1] if recent_tools else None - complementary_tools = self._get_complementary_tools(last_tool) - - for tool in complementary_tools: - context_tools.append({ - "tool": tool, - "category": self._get_tool_category(tool), - "confidence": 0.6, - "intent_match": "context", - "reason": f"Complements recent use of {last_tool}" - }) - - # Active workflows - active_workflows = context.get('active_workflows', []) - if active_workflows: - # Suggest tools for current workflow steps - for workflow in active_workflows: - workflow_tools = self._get_workflow_tools(workflow) - for tool in workflow_tools: - context_tools.append({ - "tool": tool, - "category": self._get_tool_category(tool), - "confidence": 0.7, - "intent_match": "workflow", - "reason": f"Next step in {workflow} workflow" - }) - - # User preferences - user_prefs = context.get('user_preferences', {}) - if user_prefs.get('content_preferences'): - pref_tools = self._get_preference_based_tools(user_prefs['content_preferences']) - for tool in pref_tools: - context_tools.append({ - "tool": tool, - "category": self._get_tool_category(tool), - "confidence": 0.65, - "intent_match": "preference", - "reason": "Based on your content preferences" - }) - - return context_tools - - def _get_complementary_tools(self, last_tool: str) -> List[str]: - """Get tools that complement the last used tool.""" - complementary_mapping = { - "ai_blog_writer": ["seo_optimizer", "meta_generator", "content_gap_analysis"], - "content_gap_analysis": ["ai_blog_writer", "keyword_research", "competitor_analysis"], - "technical_seo": ["on_page_seo", "content_optimizer", "performance_analyzer"], - "linkedin_writer": ["social_campaign", "content_calendar", "hashtag_research"], - "competitor_analysis": ["content_gap_analysis", "keyword_research", "strategy_planner"], - "keyword_research": ["ai_blog_writer", "content_gap_analysis", "seo_optimizer"] - } - - return complementary_mapping.get(last_tool, []) - - def _get_workflow_tools(self, workflow: str) -> List[str]: - """Get tools associated with a specific workflow.""" - workflow_tools = { - "blog_creation_workflow": ["keyword_research", "ai_blog_writer", "seo_optimizer"], - "competitor_analysis_workflow": ["competitor_analysis", "content_gap_analysis"], - "social_media_workflow": ["linkedin_writer", "facebook_writer", "social_campaign"], - "seo_audit_workflow": ["technical_seo", "on_page_seo", "competitor_analysis"] - } - - return workflow_tools.get(workflow, []) - - def _get_preference_based_tools(self, content_preferences: List[str]) -> List[str]: - """Get tools based on user content preferences.""" - preference_tools = [] - - for pref in content_preferences: - if pref in ["blog", "article"]: - preference_tools.extend(["ai_blog_writer", "seo_optimizer"]) - elif pref in ["social", "post"]: - preference_tools.extend(["linkedin_writer", "facebook_writer"]) - elif pref in ["seo", "optimization"]: - preference_tools.extend(["technical_seo", "on_page_seo"]) - - return list(set(preference_tools)) # Remove duplicates - - def get_tool_info(self, tool_name: str) -> Dict[str, Any]: - """Get detailed information about a specific tool.""" - tool_info = { - "ai_blog_writer": { - "name": "AI Blog Writer", - "description": "Create comprehensive, SEO-optimized blog posts", - "category": "content_creation", - "use_cases": ["Blog posts", "Articles", "Long-form content"], - "estimated_time": "5-10 minutes" - }, - "content_gap_analysis": { - "name": "Content Gap Analysis", - "description": "Identify content opportunities vs competitors", - "category": "seo_tools", - "use_cases": ["Competitor research", "Content strategy", "SEO planning"], - "estimated_time": "10-15 minutes" - }, - "technical_seo": { - "name": "Technical SEO Crawler", - "description": "Comprehensive technical SEO audit", - "category": "seo_tools", - "use_cases": ["Site audits", "Technical issues", "Performance analysis"], - "estimated_time": "15-20 minutes" - }, - "linkedin_writer": { - "name": "LinkedIn Writer", - "description": "Create professional LinkedIn content", - "category": "social_media", - "use_cases": ["LinkedIn posts", "Professional articles", "Networking content"], - "estimated_time": "3-5 minutes" - } - } - - return tool_info.get(tool_name, { - "name": tool_name.replace('_', ' ').title(), - "description": f"ALwrity {tool_name.replace('_', ' ')} tool", - "category": self._get_tool_category(tool_name), - "use_cases": ["Content creation", "Analysis", "Optimization"], - "estimated_time": "5-10 minutes" - }) - - def get_category_tools(self, category: str) -> List[str]: - """Get all tools in a specific category.""" - return self.tool_categories.get(category, []) - - def get_all_categories(self) -> List[str]: - """Get all available tool categories.""" - return list(self.tool_categories.keys()) \ No newline at end of file diff --git a/ToBeMigrated/chatbot_custom/core/workflow_engine.py b/ToBeMigrated/chatbot_custom/core/workflow_engine.py deleted file mode 100644 index 9f5389ce..00000000 --- a/ToBeMigrated/chatbot_custom/core/workflow_engine.py +++ /dev/null @@ -1,171 +0,0 @@ -""" -Workflow Engine for Enhanced ALwrity Chatbot. - -Handles multi-tool workflows and automation for complex content creation tasks. -""" - -from typing import Dict, List, Any - - -class WorkflowEngine: - """Handles multi-tool workflows and automation.""" - - def __init__(self): - self.workflows = { - "blog_creation_workflow": { - "name": "Complete Blog Creation", - "description": "From idea to published blog post", - "steps": [ - {"tool": "keyword_research", "name": "Keyword Research"}, - {"tool": "content_gap_analysis", "name": "Content Gap Analysis"}, - {"tool": "blog_writing", "name": "Blog Writing"}, - {"tool": "seo_optimization", "name": "SEO Optimization"}, - {"tool": "meta_generation", "name": "Meta Tags Generation"} - ] - }, - "competitor_analysis_workflow": { - "name": "Competitor Content Strategy", - "description": "Analyze competitors and create content plan", - "steps": [ - {"tool": "competitor_analysis", "name": "Competitor Analysis"}, - {"tool": "content_gap_analysis", "name": "Content Gap Analysis"}, - {"tool": "content_calendar", "name": "Content Calendar Creation"}, - {"tool": "content_ideas", "name": "Content Ideas Generation"} - ] - }, - "social_media_workflow": { - "name": "Social Media Campaign", - "description": "Create comprehensive social media content", - "steps": [ - {"tool": "audience_analysis", "name": "Audience Analysis"}, - {"tool": "content_planning", "name": "Content Planning"}, - {"tool": "social_content_creation", "name": "Social Content Creation"}, - {"tool": "hashtag_research", "name": "Hashtag Research"} - ] - }, - "seo_audit_workflow": { - "name": "Complete SEO Audit", - "description": "Comprehensive website SEO analysis and optimization", - "steps": [ - {"tool": "technical_seo", "name": "Technical SEO Analysis"}, - {"tool": "on_page_seo", "name": "On-Page SEO Review"}, - {"tool": "content_gap_analysis", "name": "Content Gap Analysis"}, - {"tool": "competitor_seo", "name": "Competitor SEO Analysis"}, - {"tool": "optimization_plan", "name": "SEO Optimization Plan"} - ] - }, - "content_strategy_workflow": { - "name": "Content Strategy Development", - "description": "Develop comprehensive content strategy from research to execution", - "steps": [ - {"tool": "market_research", "name": "Market Research"}, - {"tool": "audience_analysis", "name": "Audience Analysis"}, - {"tool": "competitor_analysis", "name": "Competitor Analysis"}, - {"tool": "content_pillars", "name": "Content Pillars Definition"}, - {"tool": "content_calendar", "name": "Content Calendar Creation"} - ] - } - } - - def suggest_workflows(self, user_intent: str) -> List[Dict[str, Any]]: - """Suggest relevant workflows based on user intent.""" - relevant_workflows = [] - user_intent_lower = user_intent.lower() - - # Blog and content creation - if any(word in user_intent_lower for word in ['blog', 'article', 'post', 'write', 'content']): - relevant_workflows.append(self.workflows["blog_creation_workflow"]) - - # Competitor and market analysis - if any(word in user_intent_lower for word in ['competitor', 'analysis', 'research', 'market']): - relevant_workflows.append(self.workflows["competitor_analysis_workflow"]) - - # Social media - if any(word in user_intent_lower for word in ['social', 'facebook', 'linkedin', 'campaign', 'instagram', 'twitter']): - relevant_workflows.append(self.workflows["social_media_workflow"]) - - # SEO related - if any(word in user_intent_lower for word in ['seo', 'optimize', 'rank', 'search', 'audit']): - relevant_workflows.append(self.workflows["seo_audit_workflow"]) - - # Strategy and planning - if any(word in user_intent_lower for word in ['strategy', 'plan', 'roadmap', 'framework']): - relevant_workflows.append(self.workflows["content_strategy_workflow"]) - - return relevant_workflows - - def get_workflow(self, workflow_id: str) -> Dict[str, Any]: - """Get a specific workflow by ID.""" - return self.workflows.get(workflow_id) - - def get_all_workflows(self) -> Dict[str, Dict[str, Any]]: - """Get all available workflows.""" - return self.workflows - - def create_custom_workflow(self, name: str, description: str, steps: List[Dict[str, str]]) -> str: - """Create a custom workflow.""" - workflow_id = f"custom_{name.lower().replace(' ', '_')}" - self.workflows[workflow_id] = { - "name": name, - "description": description, - "steps": steps, - "custom": True - } - return workflow_id - - def get_workflow_progress(self, workflow_id: str, completed_steps: List[str]) -> Dict[str, Any]: - """Get progress information for a workflow.""" - workflow = self.workflows.get(workflow_id) - if not workflow: - return {"error": "Workflow not found"} - - total_steps = len(workflow["steps"]) - completed_count = len(completed_steps) - progress_percentage = (completed_count / total_steps) * 100 if total_steps > 0 else 0 - - next_step = None - if completed_count < total_steps: - next_step = workflow["steps"][completed_count] - - return { - "workflow_name": workflow["name"], - "total_steps": total_steps, - "completed_steps": completed_count, - "progress_percentage": progress_percentage, - "next_step": next_step, - "is_complete": completed_count >= total_steps - } - - def get_step_details(self, workflow_id: str, step_index: int) -> Dict[str, Any]: - """Get detailed information about a specific workflow step.""" - workflow = self.workflows.get(workflow_id) - if not workflow or step_index >= len(workflow["steps"]): - return {"error": "Workflow or step not found"} - - step = workflow["steps"][step_index] - - # Add detailed descriptions for each tool - step_descriptions = { - "keyword_research": "Research and identify target keywords for your content", - "content_gap_analysis": "Analyze competitor content to find opportunities", - "blog_writing": "Create high-quality, SEO-optimized blog content", - "seo_optimization": "Optimize content for search engines", - "meta_generation": "Generate meta titles and descriptions", - "competitor_analysis": "Analyze competitor strategies and performance", - "content_calendar": "Plan and schedule content publication", - "content_ideas": "Generate creative content ideas and topics", - "audience_analysis": "Research and define target audience", - "content_planning": "Plan content strategy and themes", - "social_content_creation": "Create platform-specific social media content", - "hashtag_research": "Research relevant hashtags for social media", - "technical_seo": "Analyze technical SEO aspects of website", - "on_page_seo": "Review and optimize on-page SEO elements" - } - - return { - "tool": step["tool"], - "name": step["name"], - "description": step_descriptions.get(step["tool"], "Execute this workflow step"), - "step_number": step_index + 1, - "total_steps": len(workflow["steps"]) - } \ No newline at end of file diff --git a/ToBeMigrated/chatbot_custom/enhanced_alwrity_chatbot.py b/ToBeMigrated/chatbot_custom/enhanced_alwrity_chatbot.py deleted file mode 100644 index 7cad6c18..00000000 --- a/ToBeMigrated/chatbot_custom/enhanced_alwrity_chatbot.py +++ /dev/null @@ -1,1156 +0,0 @@ -#!/usr/bin/env python3 -""" -Enhanced ALwrity Chatbot - Complete Modular Version - -An intelligent conversational AI assistant that provides comprehensive writing assistance, -SEO analysis, workflow automation, and content creation tools. -""" - -import time -import os -import json -import streamlit as st -import sys -import traceback -import tempfile -import requests -from dotenv import load_dotenv -from pathlib import Path -from typing import Dict, List, Any, Optional -from urllib.parse import urlparse -import pandas as pd -from datetime import datetime - -# Add the project root to Python path -project_root = Path(__file__).parent.parent.parent -sys.path.insert(0, str(project_root)) - -# Load environment variables -load_dotenv() - -# Constants -MODEL_ROLE = 'ai' -AI_AVATAR_ICON = '๐Ÿค–' -USER_AVATAR_ICON = '๐Ÿ‘ค' -DATA_DIR = 'data/chatbot/' - -# Initialize import flags -IMPORTS_SUCCESSFUL = True -IMPORT_ERRORS = [] - -try: - # Import ALwrity components - from lib.gpt_providers.text_generation.main_text_generation import llm_text_gen -except ImportError as e: - IMPORT_ERRORS.append(f"Text generation: {str(e)}") - llm_text_gen = None - -try: - from lib.ai_writers.ai_writer_dashboard import list_ai_writers -except ImportError as e: - IMPORT_ERRORS.append(f"AI writers: {str(e)}") - list_ai_writers = lambda: [] - -try: - from lib.ai_seo_tools.content_gap_analysis.main import ContentGapAnalysis -except ImportError as e: - IMPORT_ERRORS.append(f"Content gap analysis: {str(e)}") - ContentGapAnalysis = None - -try: - from lib.database.models import ContentItem -except ImportError as e: - IMPORT_ERRORS.append(f"Database models: {str(e)}") - ContentItem = None - -try: - from lib.ai_seo_tools.content_calendar.ui.components.content_repurposing_ui import ContentRepurposingUI -except ImportError as e: - IMPORT_ERRORS.append(f"Content repurposing: {str(e)}") - ContentRepurposingUI = None - -try: - from lib.utils.alwrity_utils import essay_writer, ai_news_writer, ai_finance_ta_writer -except ImportError as e: - IMPORT_ERRORS.append(f"ALwrity utils: {str(e)}") - essay_writer = ai_news_writer = ai_finance_ta_writer = None - -try: - from lib.ai_writers.ai_blog_writer.ai_blog_generator import ai_blog_writer_page - from lib.ai_writers.ai_story_writer.story_writer import story_input_section - from lib.ai_writers.ai_product_description_writer import write_ai_prod_desc - from lib.ai_writers.linkedin_writer import LinkedInAIWriter - from lib.ai_writers.ai_facebook_writer.facebook_ai_writer import FacebookAIWriter - from lib.ai_writers.youtube_writers.youtube_ai_writer import youtube_main_menu -except ImportError as e: - IMPORT_ERRORS.append(f"AI writers modules: {str(e)}") - -try: - from lib.ai_seo_tools.on_page_seo_analyzer import analyze_onpage_seo, fetch_seo_data - from lib.ai_seo_tools.weburl_seo_checker import run_analysis - from lib.ai_seo_tools.technical_seo_crawler.crawler import TechnicalSEOCrawler -except ImportError as e: - IMPORT_ERRORS.append(f"SEO tools: {str(e)}") - analyze_onpage_seo = fetch_seo_data = run_analysis = None - TechnicalSEOCrawler = None - -try: - # Import core modules - from .core.workflow_engine import WorkflowEngine - from .core.tool_router import SmartToolRouter - from .core.intent_analyzer import IntentAnalyzer - from .core.context_manager import ContextManager -except ImportError as e: - IMPORT_ERRORS.append(f"Core modules: {str(e)}") - WorkflowEngine = SmartToolRouter = IntentAnalyzer = ContextManager = None - -try: - # Import UI components - from .ui.sidebar import SidebarManager -except ImportError as e: - IMPORT_ERRORS.append(f"UI components: {str(e)}") - SidebarManager = None - -# Check if UI init exists -try: - ui_init_path = Path(__file__).parent / "ui" / "__init__.py" - if not ui_init_path.exists(): - # Create basic init file if missing - ui_init_path.parent.mkdir(exist_ok=True) - ui_init_path.write_text('"""UI Components for Enhanced ALwrity Chatbot."""\n') -except Exception as e: - IMPORT_ERRORS.append(f"UI init setup: {str(e)}") - -# Set global flag -if IMPORT_ERRORS: - IMPORTS_SUCCESSFUL = False - - -class EnhancedALwrityChatbot: - """Enhanced ALwrity Chatbot with comprehensive content creation capabilities.""" - - def __init__(self): - """Initialize the enhanced chatbot.""" - self.initialize_session_state() - self.setup_ai_model() - self.load_ai_writers() - - # Initialize core components with error handling - try: - self.workflow_engine = WorkflowEngine() if WorkflowEngine else None - self.tool_router = SmartToolRouter() if SmartToolRouter else None - self.intent_analyzer = IntentAnalyzer() if IntentAnalyzer else None - self.context_manager = ContextManager() if ContextManager else None - self.content_gap_analyzer = ContentGapAnalysis() if ContentGapAnalysis else None - self.technical_seo_crawler = TechnicalSEOCrawler() if TechnicalSEOCrawler else None - except Exception as e: - st.warning(f"Some advanced features may not be available: {str(e)}") - self.workflow_engine = None - self.tool_router = None - self.intent_analyzer = None - self.context_manager = None - self.content_gap_analyzer = None - self.technical_seo_crawler = None - - # Initialize UI components with error handling - try: - self.sidebar_manager = SidebarManager( - self.context_manager, - self.workflow_engine, - self.tool_router - ) if SidebarManager and self.context_manager else None - except Exception as e: - st.warning(f"Advanced UI features may not be available: {str(e)}") - self.sidebar_manager = None - - # Track UI state - if "ui_state" not in st.session_state: - st.session_state.ui_state = {} - - def initialize_session_state(self): - """Initialize session state variables.""" - if "enhanced_chat_messages" not in st.session_state: - st.session_state.enhanced_chat_messages = [ - { - "role": "assistant", - "content": "๐Ÿš€ **Welcome to Enhanced ALwrity - Your AI Content Creation Hub!**\n\n" - "I'm your intelligent assistant that can help you with:\n\n" - "**๐ŸŽฏ Smart Content Creation**\n" - "โ€ข Blog posts, articles, stories with AI optimization\n" - "โ€ข Social media content for all platforms\n" - "โ€ข Product descriptions and marketing copy\n\n" - "**๐Ÿ” Advanced SEO & Analysis**\n" - "โ€ข Content gap analysis vs competitors\n" - "โ€ข Technical SEO audits and recommendations\n" - "โ€ข Keyword research and optimization\n\n" - "**๐Ÿ“Š Intelligent Workflows**\n" - "โ€ข Multi-tool automation for complex tasks\n" - "โ€ข Content calendar and strategy planning\n" - "โ€ข Document analysis and insights\n\n" - "**๐Ÿ’ก What makes me special:**\n" - "โ€ข I suggest the best tools for your specific needs\n" - "โ€ข I can chain multiple tools together for complex workflows\n" - "โ€ข I learn from your preferences and improve suggestions\n\n" - "**Ready to create amazing content? Try asking:**\n" - "โ€ข *\"Help me write a blog post about sustainable technology\"*\n" - "โ€ข *\"Analyze my website's SEO compared to competitors\"*\n" - "โ€ข *\"Create a social media campaign for my product launch\"*\n\n" - "What content challenge can I help you solve today? ๐ŸŽจ", - "avatar": AI_AVATAR_ICON - } - ] - - # Enhanced context tracking - if "chat_context" not in st.session_state: - st.session_state.chat_context = { - "current_task": None, - "user_preferences": { - "preferred_writing_style": None, - "industry": None, - "target_audience": None, - "content_goals": [] - }, - "uploaded_files": [], - "content_history": [], - "active_workflows": [], - "tool_usage_history": [], - "conversation_summary": "" - } - - if "content_workspace" not in st.session_state: - st.session_state.content_workspace = { - "drafts": [], - "templates": [], - "research_data": {}, - "seo_insights": {}, - "competitor_data": {}, - "keyword_data": {} - } - - # Initialize messages for modular interface - if "messages" not in st.session_state: - st.session_state.messages = [] - - def setup_ai_model(self): - """Setup the AI model for conversation.""" - try: - # Using ALwrity's main text generation instead of direct API calls - st.session_state.enhanced_model_ready = True - except Exception as e: - st.error(f"Error setting up AI model: {str(e)}") - - def load_ai_writers(self): - """Load available AI writers.""" - try: - if list_ai_writers: - self.ai_writers = list_ai_writers() - self.writer_functions = { - writer['name']: writer['function'] for writer in self.ai_writers - } - else: - self.ai_writers = [] - self.writer_functions = {} - except Exception as e: - st.warning(f"Could not load AI writers: {str(e)}") - self.ai_writers = [] - self.writer_functions = {} - - def process_message(self, prompt: str) -> str: - """Process user message and generate response.""" - try: - # Ensure session state is properly initialized - if "chat_context" not in st.session_state: - st.warning("๐Ÿ”ง Initializing session state...") - self.initialize_session_state() - - # Validate session state structure - if not isinstance(st.session_state.chat_context, dict): - st.error(f"๐Ÿ› Invalid chat_context type: {type(st.session_state.chat_context)}") - st.session_state.chat_context = { - "user_preferences": {}, - "tool_usage_history": [], - "active_workflows": [], - "conversation_summary": "" - } - - # Analyze user intent if available - if self.intent_analyzer: - try: - intent = self.intent_analyzer.analyze_user_intent(prompt, st.session_state.chat_context) - - # Debug: Log the type and content of intent - if not isinstance(intent, dict): - st.error(f"๐Ÿ› DEBUG: Intent analyzer returned {type(intent)}: {intent}") - intent = self._create_fallback_intent(prompt) - - # Validate that intent is a dictionary - if not isinstance(intent, dict): - st.warning(f"Intent analyzer returned unexpected type: {type(intent)}") - intent = self._create_fallback_intent(prompt) - - # Ensure required keys exist - required_keys = ['primary_intent', 'all_intents', 'sub_intents', 'content_types', 'urgency', 'complexity'] - for key in required_keys: - if key not in intent: - intent[key] = self._get_default_intent_value(key) - - # Final validation before proceeding - if not isinstance(intent, dict): - st.error("๐Ÿšจ Critical: Intent is still not a dictionary after fallback. Creating emergency fallback.") - intent = { - "primary_intent": "general", - "all_intents": ["general"], - "sub_intents": [], - "content_types": [], - "urgency": {"level": "normal", "score": 0.5, "is_urgent": False}, - "complexity": {"level": "medium", "score": 0.5, "word_count": len(prompt.split())}, - "suggested_workflows": [], - "suggested_tools": [] - } - - # Generate response based on intent - response = self.generate_contextual_response(prompt, intent) - # Update conversation context - self.update_conversation_context(prompt, response, intent) - - except Exception as intent_error: - st.warning(f"Intent analysis failed: {str(intent_error)}. Using fallback mode.") - # Create fallback intent structure - intent = self._create_fallback_intent(prompt) - response = self.generate_contextual_response(prompt, intent) - self.update_conversation_context(prompt, response, intent) - else: - # Fallback to simple text generation - response = self.generate_simple_response(prompt) - - return response - - except Exception as e: - st.error(f"๐Ÿšจ Critical error in process_message: {str(e)}") - return f"I apologize, but I encountered an error processing your request: {str(e)}. Let me suggest some alternative approaches based on what you're trying to achieve." - - def generate_contextual_response(self, prompt: str, intent: Dict[str, Any]) -> str: - """Enhanced contextual response generation with smart tool integration.""" - try: - # Validate intent parameter - if not isinstance(intent, dict): - st.warning("Invalid intent data received. Using fallback response.") - return self.generate_simple_response(prompt) - - # Build comprehensive context - context = self.build_comprehensive_context() - - # Create advanced system prompt - system_prompt = self.create_advanced_system_prompt(intent, context) - - # Safely extract intent values with defaults - primary_intent = intent.get('primary_intent', 'general') - all_intents = intent.get('all_intents', [primary_intent]) - sub_intents = intent.get('sub_intents', []) - content_types = intent.get('content_types', []) - complexity = intent.get('complexity', {}) - urgency = intent.get('urgency', {}) - suggested_workflows = intent.get('suggested_workflows', []) - suggested_tools = intent.get('suggested_tools', []) - - # Generate enhanced AI prompt - ai_prompt = f""" - **CONVERSATION CONTEXT:** - {context} - - **USER INTENT ANALYSIS:** - โ€ข Primary Intent: {primary_intent} - โ€ข All Intents: {', '.join(all_intents)} - โ€ข Sub-intents: {', '.join(sub_intents)} - โ€ข Content Types: {', '.join(content_types)} - โ€ข Complexity: {complexity.get('level', 'medium')} - โ€ข Urgency: {"High" if urgency.get('is_urgent', False) else "Normal"} - - **USER MESSAGE:** {prompt} - - **RESPONSE INSTRUCTIONS:** - 1. **Immediate Value**: Provide actionable insights right away - 2. **Tool Integration**: Suggest specific ALwrity tools with clear benefits - 3. **Workflow Automation**: Recommend multi-step workflows when appropriate - 4. **Personalization**: Use context to personalize suggestions - 5. **Next Steps**: Always provide clear next steps - - **AVAILABLE ALWRITY ECOSYSTEM:** - โ€ข AI Writers: {[w.get('name', 'Unknown') if isinstance(w, dict) else str(w) for w in self.ai_writers] if self.ai_writers else ['Basic AI Writer']} - โ€ข SEO Tools: Content Gap Analysis, Technical SEO Crawler, On-Page SEO - โ€ข Workflows: {[w.get('name', 'Workflow') if isinstance(w, dict) else str(w) for w in suggested_workflows] if suggested_workflows else ['Basic Workflow']} - โ€ข Smart Tools: {[t.get('tool', 'Tool') if isinstance(t, dict) else str(t) for t in suggested_tools[:3]] if suggested_tools else ['Basic Tools']} - - **RESPONSE STRUCTURE:** - 1. Acknowledge user's specific need - 2. Provide immediate helpful information - 3. Suggest relevant tools with clear value propositions - 4. Offer workflow automation if applicable - 5. Include actionable next steps with buttons/links - - Create a response that is conversational, helpful, and leverages ALwrity's full capabilities. - """ - - if llm_text_gen: - response = llm_text_gen( - prompt=ai_prompt, - system_prompt=system_prompt - ) - else: - response = f"I understand you're looking for help with {primary_intent}. While I'm running in limited mode, I can still assist you with basic guidance and suggestions." - - # Add smart tool suggestions and workflow recommendations - response += self.add_smart_suggestions(intent, prompt) - - # Add quick actions if relevant - response += self.add_contextual_actions(intent, prompt) - - return response - - except Exception as e: - st.error(f"Error in contextual response generation: {str(e)}") - return f"I apologize, but I encountered an error processing your request: {str(e)}. Let me suggest some alternative approaches based on what you're trying to achieve." - - def create_advanced_system_prompt(self, intent: Dict[str, Any], context: Dict[str, Any]) -> str: - """Create an advanced system prompt based on intent and context.""" - try: - base_prompt = """You are ALwrity AI, the most advanced content creation and SEO assistant. You have deep expertise in: - -โ€ข Content Strategy & Creation across all formats and platforms -โ€ข Advanced SEO optimization and technical analysis -โ€ข Competitive intelligence and market research -โ€ข Multi-platform social media marketing -โ€ข Workflow automation and process optimization -โ€ข Data-driven content performance analysis - -You are equipped with a comprehensive suite of specialized tools and can orchestrate complex workflows.""" - - # Add intent-specific expertise - intent_expertise = { - "write": "Focus on content creation excellence, writing optimization, and audience engagement strategies.", - "analyze": "Focus on data analysis, competitive intelligence, and actionable insights generation.", - "seo": "Focus on technical SEO, content optimization, and search performance improvement.", - "social": "Focus on platform-specific optimization, audience engagement, and viral content creation.", - "research": "Focus on market intelligence, competitor analysis, and opportunity identification.", - "plan": "Focus on strategic planning, workflow optimization, and systematic execution.", - "workflow": "Focus on process automation, multi-tool integration, and efficiency optimization." - } - - # Safely get primary intent - primary_intent = 'general' - if isinstance(intent, dict): - primary_intent = intent.get('primary_intent', 'general') - - specific_expertise = intent_expertise.get(primary_intent, "Provide comprehensive, expert assistance.") - - # Add context awareness - context_prompt = "" - if isinstance(context, dict): - user_preferences = context.get('user_preferences', {}) - if isinstance(user_preferences, dict): - if user_preferences.get('industry'): - context_prompt += f"\nโ€ข User's Industry: {user_preferences['industry']}" - if user_preferences.get('target_audience'): - context_prompt += f"\nโ€ข Target Audience: {user_preferences['target_audience']}" - - tool_usage_history = context.get('tool_usage_history', []) - if isinstance(tool_usage_history, list) and tool_usage_history: - recent_tools = [tool for tool in tool_usage_history[-3:] if tool] - if recent_tools: - context_prompt += f"\nโ€ข Recently Used Tools: {', '.join(recent_tools)}" - - return f"{base_prompt}\n\n{specific_expertise}\n\nCONTEXT AWARENESS:{context_prompt}\n\nAlways provide specific, actionable guidance and leverage ALwrity's ecosystem effectively." - - except Exception as e: - st.warning(f"Error creating system prompt: {str(e)}") - return """You are ALwrity AI, a helpful content creation and SEO assistant. Provide clear, helpful, and actionable responses about writing, content creation, and SEO guidance.""" - - def build_comprehensive_context(self) -> Dict[str, Any]: - """Build comprehensive context from conversation history and user data.""" - context = { - "conversation_length": len(st.session_state.enhanced_chat_messages), - "user_preferences": st.session_state.chat_context.get("user_preferences", {}), - "tool_usage_history": st.session_state.chat_context.get("tool_usage_history", []), - "active_workflows": st.session_state.chat_context.get("active_workflows", []), - "recent_topics": [], - "content_workspace": st.session_state.content_workspace - } - - # Extract recent topics from conversation - recent_messages = st.session_state.enhanced_chat_messages[-5:] - for msg in recent_messages: - if msg['role'] == 'user': - # Simple keyword extraction - words = msg['content'].lower().split() - context["recent_topics"].extend([word for word in words if len(word) > 4]) - - # Remove duplicates and limit - context["recent_topics"] = list(set(context["recent_topics"]))[:10] - - return context - - def add_smart_suggestions(self, intent: Dict[str, Any], prompt: str) -> str: - """Add smart tool suggestions based on intent analysis.""" - try: - # Validate intent parameter with detailed logging - if not isinstance(intent, dict): - st.error(f"๐Ÿ› add_smart_suggestions received {type(intent)}: {intent}") - return "\n\n**๐ŸŽฏ Smart Recommendations:** Available in full mode." - - suggestions = "\n\n**๐ŸŽฏ Smart Recommendations:**\n" - - # Add workflow suggestions if available - suggested_workflows = intent.get('suggested_workflows', []) - if suggested_workflows: - suggestions += "\n**๐Ÿ”„ Automated Workflows:**\n" - for workflow in suggested_workflows[:2]: - if isinstance(workflow, dict): - workflow_name = workflow.get('name', 'Workflow') - workflow_desc = workflow.get('description', 'Automated process') - suggestions += f"โ€ข **{workflow_name}** - {workflow_desc}\n" - else: - suggestions += f"โ€ข **{workflow}** - Automated process\n" - - # Add tool suggestions - suggested_tools = intent.get('suggested_tools', []) - if suggested_tools: - suggestions += "\n**๐Ÿ› ๏ธ Recommended Tools:**\n" - for tool in suggested_tools[:3]: - if isinstance(tool, dict): - tool_name = tool.get('tool', '').replace('_', ' ').title() - confidence = tool.get('confidence', 0.5) - confidence_indicator = "๐Ÿ”ฅ" if confidence > 0.8 else "โญ" if confidence > 0.6 else "๐Ÿ’ก" - category = tool.get('category', 'general') - suggestions += f"โ€ข {confidence_indicator} **{tool_name}** ({category})\n" - else: - tool_name = str(tool).replace('_', ' ').title() - suggestions += f"โ€ข ๐Ÿ’ก **{tool_name}** (general)\n" - - # Add content-specific suggestions - content_types = intent.get('content_types', []) - if 'blog' in content_types: - suggestions += "\n**๐Ÿ“ Blog Creation Pipeline:**\n" - suggestions += "โ€ข Keyword Research โ†’ Content Gap Analysis โ†’ AI Writing โ†’ SEO Optimization\n" - - primary_intent = intent.get('primary_intent', 'general') - if primary_intent == 'seo': - suggestions += "\n**๐Ÿ” SEO Analysis Suite:**\n" - suggestions += "โ€ข Technical SEO Audit โ†’ Content Optimization โ†’ Competitor Analysis\n" - - return suggestions - - except Exception as e: - st.error(f"๐Ÿšจ Error in add_smart_suggestions: {str(e)}") - return "\n\n**๐ŸŽฏ Smart Recommendations:** Available in full mode." - - def add_contextual_actions(self, intent: Dict[str, Any], prompt: str) -> str: - """Add contextual action buttons and quick starts.""" - try: - # Validate intent parameter with detailed logging - if not isinstance(intent, dict): - st.error(f"๐Ÿ› add_contextual_actions received {type(intent)}: {intent}") - return "\n\n**โšก Quick Actions:** Available in full mode." - - actions = "\n\n**โšก Quick Actions:**\n" - - # Intent-based actions - primary_intent = intent.get('primary_intent', 'general') - if primary_intent == 'write': - actions += "๐ŸŽฌ [Start Blog Workflow] | ๐Ÿ“ฑ [Social Media Creation] | โœ๏ธ [Custom Writing]\n" - elif primary_intent == 'analyze': - actions += "๐Ÿ” [Website Analysis] | ๐Ÿ† [Competitor Research] | ๐Ÿ“Š [Content Audit]\n" - elif primary_intent == 'seo': - actions += "๐ŸŽฏ [SEO Audit] | ๐Ÿ“ˆ [Content Gap Analysis] | ๐Ÿ”ง [Technical SEO]\n" - elif primary_intent == 'plan': - actions += "๐Ÿ“… [Content Calendar] | ๐Ÿ—บ๏ธ [Strategy Planning] | ๐Ÿ”„ [Workflow Setup]\n" - - # Add urgency-based actions - urgency = intent.get('urgency', {}) - if isinstance(urgency, dict) and urgency.get('is_urgent', False): - actions += "\n**๐Ÿšจ Express Options:** Fast-track tools for immediate results\n" - - # Add follow-up suggestions - actions += "\n**๐Ÿ’ฌ Try asking:**\n" - follow_ups = self.generate_follow_up_questions(intent) - for follow_up in follow_ups[:3]: - actions += f"โ€ข *\"{follow_up}\"*\n" - - return actions - - except Exception as e: - st.error(f"๐Ÿšจ Error in add_contextual_actions: {str(e)}") - return "\n\n**โšก Quick Actions:** Available in full mode." - - def generate_follow_up_questions(self, intent: Dict[str, Any]) -> List[str]: - """Generate relevant follow-up questions based on intent.""" - try: - # Validate intent parameter - if not isinstance(intent, dict): - return [ - "What specific aspect would you like help with?", - "Should I suggest a workflow to automate this process?", - "Would you like me to analyze any existing content?" - ] - - follow_ups = { - "write": [ - "What tone should I use for my target audience?", - "Can you help me optimize this content for SEO?", - "How can I repurpose this content for social media?" - ], - "analyze": [ - "What are my biggest content gaps compared to competitors?", - "Which keywords should I target next?", - "How can I improve my website's SEO score?" - ], - "seo": [ - "What technical SEO issues should I fix first?", - "How can I improve my content's search rankings?", - "What keywords are my competitors ranking for?" - ], - "plan": [ - "How often should I publish new content?", - "What content types perform best in my industry?", - "Can you create a content calendar for next month?" - ] - } - - primary_intent = intent.get('primary_intent', 'general') - return follow_ups.get(primary_intent, [ - "What specific aspect would you like help with?", - "Should I suggest a workflow to automate this process?", - "Would you like me to analyze any existing content?" - ]) - - except Exception as e: - st.warning(f"Error generating follow-up questions: {str(e)}") - return [ - "What specific aspect would you like help with?", - "Should I suggest a workflow to automate this process?", - "Would you like me to analyze any existing content?" - ] - - def update_conversation_context(self, prompt: str, response: str, intent: Dict[str, Any]): - """Update conversation context with new information.""" - try: - # Validate intent parameter - if not isinstance(intent, dict): - return - - # Update tool usage history - suggested_tools = intent.get('suggested_tools', []) - for tool in suggested_tools: - if isinstance(tool, dict): - tool_name = tool.get('tool', '') - else: - tool_name = str(tool) - - if tool_name and tool_name not in st.session_state.chat_context['tool_usage_history']: - st.session_state.chat_context['tool_usage_history'].append(tool_name) - - # Update user preferences based on conversation - content_types = intent.get('content_types', []) - if content_types: - if 'content_preferences' not in st.session_state.chat_context['user_preferences']: - st.session_state.chat_context['user_preferences']['content_preferences'] = [] - st.session_state.chat_context['user_preferences']['content_preferences'].extend(content_types) - - # Update conversation summary - primary_intent = intent.get('primary_intent', 'general') - summary_update = f"User interested in {primary_intent} related to {', '.join(content_types)}. " - st.session_state.chat_context['conversation_summary'] += summary_update - - # Limit conversation summary length - if len(st.session_state.chat_context['conversation_summary']) > 500: - st.session_state.chat_context['conversation_summary'] = st.session_state.chat_context['conversation_summary'][-500:] - - except Exception as e: - st.warning(f"Error updating conversation context: {str(e)}") - - def perform_real_time_analysis(self, url: str): - """Perform real-time SEO analysis and add results to chat.""" - try: - with st.spinner("๐Ÿ” Analyzing URL..."): - # Basic SEO analysis - seo_analysis = run_analysis(url) - - # Content gap analysis - content_analysis = self.content_gap_analyzer.website_analyzer.analyze_website(url) - - # Format results - analysis_message = f"""๐Ÿ” **Real-time Analysis: {url}** - -**๐Ÿ“Š SEO Overview:** -โ€ข Overall Score: {seo_analysis.get('overall_score', 'N/A')}/100 -โ€ข Page Speed: {seo_analysis.get('page_speed', 'N/A')} -โ€ข Mobile Friendly: {'โœ…' if seo_analysis.get('mobile_friendly') else 'โŒ'} - -**๐ŸŽฏ Content Analysis:** -โ€ข Title: {content_analysis.get('analysis', {}).get('basic_info', {}).get('title', 'N/A')[:50]}... -โ€ข Word Count: {content_analysis.get('analysis', {}).get('content_metrics', {}).get('word_count', 'N/A')} -โ€ข Headings: {content_analysis.get('analysis', {}).get('content_metrics', {}).get('heading_count', 'N/A')} - -**๐Ÿ’ก Quick Recommendations:** -โ€ข {seo_analysis.get('recommendations', ['No specific recommendations available'])[0] if seo_analysis.get('recommendations') else 'Analysis complete'} - -**โšก Next Steps:** -โ€ข Run full Content Gap Analysis for detailed insights -โ€ข Use Technical SEO Crawler for comprehensive audit -โ€ข Generate optimized content based on findings""" - - st.session_state.enhanced_chat_messages.append({ - "role": "assistant", - "content": analysis_message, - "avatar": AI_AVATAR_ICON - }) - - # Store analysis in workspace - st.session_state.content_workspace["seo_insights"][url] = { - "timestamp": datetime.now().isoformat(), - "seo_analysis": seo_analysis, - "content_analysis": content_analysis - } - - st.rerun() - - except Exception as e: - st.error(f"Error analyzing URL: {str(e)}") - - def run(self): - """Run the modular chatbot interface.""" - try: - - # Render sidebar and get actions if available - if self.sidebar_manager: - sidebar_data = self.sidebar_manager.render_sidebar() - # Handle sidebar actions - self._handle_sidebar_actions(sidebar_data) - else: - # Simple sidebar fallback - st.sidebar.title("๐Ÿš€ ALwrity Assistant") - st.sidebar.info("Running in simplified mode") - if not IMPORTS_SUCCESSFUL: - with st.sidebar.expander("โš ๏ธ Import Issues"): - for error in IMPORT_ERRORS[:3]: # Show first 3 errors - st.sidebar.text(f"โ€ข {error}") - - # Main chat interface - self._render_main_interface() - - # Handle chat interactions - self._handle_chat_interactions() - - except Exception as e: - st.error(f"Application Error: {str(e)}") - with st.expander("Error Details"): - st.code(traceback.format_exc()) - - def _handle_sidebar_actions(self, sidebar_data: Dict[str, Any]): - """Handle actions from the sidebar.""" - if not sidebar_data: - return - - # Handle quick actions - quick_actions = sidebar_data.get("quick_actions", {}) - if "action" in quick_actions: - action = quick_actions["action"] - self._execute_quick_action(action) - - # Handle workflow actions - workflow_actions = sidebar_data.get("workflow_actions", {}) - for action_type, action_value in workflow_actions.items(): - self._handle_workflow_action(action_type, action_value) - - # Handle preferences updates - preferences_updated = sidebar_data.get("preferences_updated", {}) - if preferences_updated and self.context_manager: - self.context_manager.update_user_preferences(preferences_updated) - if self.sidebar_manager: - self.sidebar_manager.show_notification("Preferences updated successfully!", "success") - - # Handle export actions - export_actions = sidebar_data.get("export_actions", {}) - if export_actions: - self._handle_export_actions(export_actions) - - def _execute_quick_action(self, action: str): - """Execute a quick action from the sidebar.""" - action_map = { - "blog_writer": "I want to write a blog post", - "social_post": "I need to create a social media post", - "email_writer": "Help me write an email", - "story_writer": "I want to write a story", - "technical_seo": "I need a technical SEO analysis", - "content_gap": "I want to analyze content gaps", - "keyword_research": "I need keyword research", - "competitor_analysis": "I want competitor analysis", - "website_analyzer": "I want to analyze a website", - "onpage_seo": "I need on-page SEO analysis", - "url_seo_check": "I want to check URL SEO", - "social_analyzer": "I need social media analysis" - } - - if action in action_map: - # Add to chat history and trigger processing - if "messages" not in st.session_state: - st.session_state.messages = [] - - user_message = action_map[action] - st.session_state.messages.append({"role": "user", "content": user_message}) - - # Process the message - with st.spinner("Processing your request..."): - response = self.process_message(user_message) - st.session_state.messages.append({"role": "assistant", "content": response}) - - st.rerun() - - def _handle_workflow_action(self, action_type: str, action_value: Any): - """Handle workflow-related actions.""" - if not self.workflow_engine: - st.warning("Workflow engine not available in current mode.") - return - - if action_type == "start": - workflow_name = action_value - result = self.workflow_engine.start_workflow(workflow_name) - if result.get("success"): - if self.sidebar_manager: - self.sidebar_manager.show_notification( - f"Started workflow: {workflow_name}", "success" - ) - else: - st.success(f"Started workflow: {workflow_name}") - else: - if self.sidebar_manager: - self.sidebar_manager.show_notification( - f"Failed to start workflow: {result.get('error')}", "error" - ) - else: - st.error(f"Failed to start workflow: {result.get('error')}") - - elif action_type == "pause": - workflow_id = action_value - result = self.workflow_engine.pause_workflow(workflow_id) - if result.get("success"): - if self.sidebar_manager: - self.sidebar_manager.show_notification("Workflow paused", "info") - else: - st.info("Workflow paused") - - elif action_type in ["continue", "resume"]: - workflow_id = action_value - result = self.workflow_engine.resume_workflow(workflow_id) - if result.get("success"): - if self.sidebar_manager: - self.sidebar_manager.show_notification("Workflow resumed", "success") - else: - st.success("Workflow resumed") - - def _handle_export_actions(self, export_actions: Dict[str, Any]): - """Handle data export and cleanup actions.""" - if not self.context_manager: - st.warning("Export features not available in current mode.") - return - - if "export" in export_actions: - export_config = export_actions["export"] - export_type = export_config["type"] - export_format = export_config["format"] - - if export_type == "conversation_history": - data = self.context_manager.export_conversation_history(export_format) - self._download_data(data, f"conversation_history.{export_format}") - - elif export_type == "analytics": - data = self.context_manager.export_analytics(export_format) - self._download_data(data, f"analytics.{export_format}") - - elif "cleanup" in export_actions: - days = export_actions["cleanup"] - result = self.context_manager.cleanup_old_data(days) - if result.get("success"): - if self.sidebar_manager: - self.sidebar_manager.show_notification( - f"Cleaned up data older than {days} days", "success" - ) - else: - st.success(f"Cleaned up data older than {days} days") - - elif "reset" in export_actions and export_actions["reset"]: - self.context_manager.reset_all_data() - if self.sidebar_manager: - self.sidebar_manager.show_notification("All data reset", "warning") - else: - st.warning("All data reset") - st.rerun() - - def _download_data(self, data: str, filename: str): - """Provide download button for exported data.""" - st.download_button( - label=f"๐Ÿ“ฅ Download {filename}", - data=data, - file_name=filename, - mime="application/octet-stream" - ) - - def _render_main_interface(self): - """Render the main chat interface.""" - # Header - st.title("๐Ÿš€ Enhanced ALwrity Assistant") - st.markdown("*Your intelligent content creation and SEO analysis companion*") - - # Main content area - col1, col2 = st.columns([3, 1]) - - with col1: - # Chat messages container - self._render_chat_messages() - - with col2: - # Context and suggestions panel - self._render_context_panel() - - def _render_chat_messages(self): - """Render the chat messages.""" - # Initialize chat history - if "messages" not in st.session_state: - st.session_state.messages = [] - - # Display chat messages - for message in st.session_state.messages: - with st.chat_message(message["role"]): - st.markdown(message["content"]) - - def _render_context_panel(self): - """Render the context and suggestions panel.""" - with st.container(): - st.markdown("### ๐Ÿ’ก Context & Suggestions") - - # Current context - if self.context_manager and hasattr(self.context_manager, 'get_current_context'): - current_context = self.context_manager.get_current_context() - if current_context: - with st.expander("๐Ÿง  Current Context"): - st.text(current_context[:200] + "..." if len(current_context) > 200 else current_context) - - # Active workflows - if self.context_manager: - active_workflows = self.context_manager.get_active_workflows() - if active_workflows: - st.markdown("**๐Ÿ”„ Active Workflows:**") - for workflow in active_workflows[:3]: - progress = workflow.current_step / workflow.total_steps - st.progress(progress, text=f"{workflow.workflow_name} ({workflow.current_step}/{workflow.total_steps})") - - # Quick suggestions - st.markdown("**๐Ÿ’ก Quick Suggestions:**") - suggestions = [ - "Analyze this website's SEO", - "Create a blog post outline", - "Generate social media content", - "Check technical SEO issues", - "Research competitors" - ] - - for suggestion in suggestions: - if st.button(suggestion, key=f"suggestion_{suggestion.replace(' ', '_')}"): - # Add suggestion to chat - if "messages" not in st.session_state: - st.session_state.messages = [] - - st.session_state.messages.append({"role": "user", "content": suggestion}) - - # Process the suggestion - with st.spinner("Processing..."): - response = self.process_message(suggestion) - st.session_state.messages.append({"role": "assistant", "content": response}) - - st.rerun() - - def _handle_chat_interactions(self): - """Handle chat input and interactions.""" - # Chat input - if prompt := st.chat_input("Ask me anything about content creation, SEO, or writing..."): - # Initialize messages if not exists - if "messages" not in st.session_state: - st.session_state.messages = [] - - # Add user message - st.session_state.messages.append({"role": "user", "content": prompt}) - - # Display user message - with st.chat_message("user"): - st.markdown(prompt) - - # Generate and display assistant response - with st.chat_message("assistant"): - with st.spinner("Thinking..."): - response = self.process_message(prompt) - st.markdown(response) - - # Add assistant response to history - st.session_state.messages.append({"role": "assistant", "content": response}) - - # Check for suggestions and update sidebar if available - if self.intent_analyzer and self.sidebar_manager: - intent_analysis = self.intent_analyzer.analyze_user_intent(prompt) - - # Render suggestions if available - suggested_workflow = self.sidebar_manager.render_workflow_suggestions(intent_analysis) - if suggested_workflow: - self._handle_workflow_action("start", suggested_workflow) - - suggested_tool = self.sidebar_manager.render_tool_suggestions(intent_analysis) - if suggested_tool: - self._execute_quick_action(suggested_tool) - - def generate_simple_response(self, prompt: str) -> str: - """Generate a simple response when advanced features are not available.""" - try: - if llm_text_gen: - system_prompt = """You are ALwrity AI, a helpful writing and content creation assistant. - You help users with writing, content creation, SEO, and digital marketing tasks. - Provide clear, helpful, and actionable responses.""" - - response = llm_text_gen( - prompt=prompt, - system_prompt=system_prompt - ) - return response - else: - return ("I'm currently running in limited mode. While I can't access all my advanced features right now, " - "I'm still here to help! Please describe what you'd like to work on, and I'll do my best to assist you " - "with writing, content creation, or SEO guidance.") - except Exception as e: - return f"I'm having some technical difficulties right now. Error: {str(e)}. Please try again or contact support if the issue persists." - - def _create_fallback_intent(self, prompt: str) -> Dict[str, Any]: - """Create a fallback intent structure when intent analysis fails.""" - prompt_lower = prompt.lower() - - # Simple keyword-based intent detection - primary_intent = "general" - if any(word in prompt_lower for word in ['write', 'create', 'generate', 'compose']): - primary_intent = "write" - elif any(word in prompt_lower for word in ['analyze', 'check', 'review', 'examine']): - primary_intent = "analyze" - elif any(word in prompt_lower for word in ['seo', 'optimize', 'rank', 'search']): - primary_intent = "seo" - elif any(word in prompt_lower for word in ['social', 'facebook', 'twitter', 'linkedin']): - primary_intent = "social" - elif any(word in prompt_lower for word in ['plan', 'strategy', 'calendar']): - primary_intent = "plan" - - return { - "primary_intent": primary_intent, - "all_intents": [primary_intent], - "sub_intents": [], - "content_types": [], - "confidence_scores": {primary_intent: 0.5}, - "urgency": {"level": "normal", "score": 0.5, "is_urgent": False}, - "complexity": {"level": "medium", "score": 0.5, "word_count": len(prompt.split())}, - "suggested_workflows": [], - "suggested_tools": [], - "intent_strength": "moderate", - "multi_intent": False, - "context_enhanced": False - } - - def _get_default_intent_value(self, key: str) -> Any: - """Get default value for missing intent keys.""" - defaults = { - "primary_intent": "general", - "all_intents": ["general"], - "sub_intents": [], - "content_types": [], - "confidence_scores": {"general": 0.5}, - "urgency": {"level": "normal", "score": 0.5, "is_urgent": False}, - "complexity": {"level": "medium", "score": 0.5, "word_count": 0}, - "suggested_workflows": [], - "suggested_tools": [], - "intent_strength": "moderate", - "multi_intent": False, - "context_enhanced": False - } - return defaults.get(key, None) - - -def run_enhanced_chatbot(): - """ - Main entry point for the enhanced ALwrity chatbot. - This function is called from the UI setup module. - """ - # Show import warnings if any - if not IMPORTS_SUCCESSFUL and IMPORT_ERRORS: - with st.expander("โš ๏ธ Import Warnings", expanded=False): - st.warning("Some features may not be available due to import issues:") - for error in IMPORT_ERRORS: - st.text(f"โ€ข {error}") - st.info("The chatbot will run in limited mode with available features.") - - try: - # Initialize and run the chatbot - chatbot = EnhancedALwrityChatbot() - chatbot.run() - except Exception as e: - st.error(f"Failed to initialize Enhanced ALwrity Chatbot: {str(e)}") - st.error("Please check your configuration and try again.") - with st.expander("๐Ÿ” Error Details"): - st.code(traceback.format_exc()) - - # Provide fallback simple chatbot interface - st.markdown("---") - st.markdown("### ๐Ÿ”ง Fallback Mode") - st.info("Running in simplified mode due to initialization issues.") - - # Simple chat interface as fallback - if "fallback_messages" not in st.session_state: - st.session_state.fallback_messages = [ - { - "role": "assistant", - "content": "Hello! I'm running in simplified mode. I can still help with basic text generation and writing tasks." - } - ] - - # Display messages - for message in st.session_state.fallback_messages: - with st.chat_message(message["role"]): - st.markdown(message["content"]) - - # Chat input - if prompt := st.chat_input("How can I help you today?"): - # Add user message - st.session_state.fallback_messages.append({"role": "user", "content": prompt}) - - with st.chat_message("user"): - st.markdown(prompt) - - # Generate response using basic text generation - with st.chat_message("assistant"): - try: - if llm_text_gen: - with st.spinner("Generating response..."): - response = llm_text_gen( - prompt=prompt, - system_prompt="You are ALwrity AI, a helpful writing assistant. Provide clear, helpful responses about writing, content creation, and SEO." - ) - st.markdown(response) - st.session_state.fallback_messages.append({"role": "assistant", "content": response}) - else: - error_response = "I'm currently unable to generate responses. Please check the system configuration." - st.markdown(error_response) - st.session_state.fallback_messages.append({"role": "assistant", "content": error_response}) - except Exception as gen_error: - error_response = f"I apologize, but I'm having trouble generating a response right now. Error: {str(gen_error)}" - st.markdown(error_response) - st.session_state.fallback_messages.append({"role": "assistant", "content": error_response}) - - -def main(): - """Main function to run the modular chatbot.""" - run_enhanced_chatbot() - - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/ToBeMigrated/chatbot_custom/ui/__init__.py b/ToBeMigrated/chatbot_custom/ui/__init__.py deleted file mode 100644 index 7a6671a8..00000000 --- a/ToBeMigrated/chatbot_custom/ui/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -""" -UI Components for Enhanced ALwrity Chatbot. - -This package contains modular UI components for the Streamlit interface: -- sidebar: Intelligent sidebar with dashboard and quick tools -""" - -from .sidebar import SidebarManager - -__all__ = [ - 'SidebarManager' -] \ No newline at end of file diff --git a/ToBeMigrated/chatbot_custom/ui/sidebar.py b/ToBeMigrated/chatbot_custom/ui/sidebar.py deleted file mode 100644 index f0683410..00000000 --- a/ToBeMigrated/chatbot_custom/ui/sidebar.py +++ /dev/null @@ -1,396 +0,0 @@ -""" -Sidebar Manager for Enhanced ALwrity Chatbot. - -Manages the intelligent sidebar with dashboard, quick tools, and user analytics. -""" - -import streamlit as st -from typing import Dict, List, Any, Optional -from datetime import datetime - - -class SidebarManager: - """Manages the enhanced sidebar interface.""" - - def __init__(self, context_manager, workflow_engine, tool_router): - self.context_manager = context_manager - self.workflow_engine = workflow_engine - self.tool_router = tool_router - - def render_sidebar(self) -> Dict[str, Any]: - """Render the complete sidebar interface.""" - sidebar_data = {} - - with st.sidebar: - # Header - st.markdown("# ๐Ÿš€ ALwrity Hub") - st.markdown("---") - - # Dashboard section - sidebar_data.update(self._render_dashboard()) - - # Quick tools section - sidebar_data.update(self._render_quick_tools()) - - # Active workflows section - sidebar_data.update(self._render_active_workflows()) - - # User preferences section - sidebar_data.update(self._render_user_preferences()) - - # Analytics section - sidebar_data.update(self._render_analytics()) - - # Export/Import section - sidebar_data.update(self._render_export_import()) - - return sidebar_data - - def _render_dashboard(self) -> Dict[str, Any]: - """Render the dashboard section.""" - st.markdown("## ๐Ÿ“Š Dashboard") - - # Get user analytics - analytics = self.context_manager.get_user_analytics() - - # Key metrics in columns - col1, col2 = st.columns(2) - - with col1: - st.metric( - label="Total Interactions", - value=analytics.get("total_interactions", 0) - ) - st.metric( - label="Active Workflows", - value=analytics.get("active_workflows_count", 0) - ) - - with col2: - st.metric( - label="Workflows Completed", - value=analytics.get("workflows_completed", 0) - ) - st.metric( - label="Conversation Turns", - value=analytics.get("conversation_turns", 0) - ) - - # Most used tools - most_used_tools = analytics.get("most_used_tools", []) - if most_used_tools: - st.markdown("**๐Ÿ”ง Most Used Tools:**") - for tool, count in most_used_tools[:3]: - st.markdown(f"โ€ข {tool}: {count} times") - - st.markdown("---") - - return {"dashboard_rendered": True} - - def _render_quick_tools(self) -> Dict[str, Any]: - """Render the quick tools section.""" - st.markdown("## โšก Quick Tools") - - quick_actions = {} - - # Content creation tools - st.markdown("**โœ๏ธ Content Creation**") - col1, col2 = st.columns(2) - - with col1: - if st.button("๐Ÿ“ Blog Writer", key="quick_blog"): - quick_actions["action"] = "blog_writer" - if st.button("๐Ÿ“ฑ Social Post", key="quick_social"): - quick_actions["action"] = "social_post" - - with col2: - if st.button("๐Ÿ“ง Email Writer", key="quick_email"): - quick_actions["action"] = "email_writer" - if st.button("๐Ÿ“– Story Writer", key="quick_story"): - quick_actions["action"] = "story_writer" - - # SEO tools - st.markdown("**๐Ÿ” SEO Tools**") - col1, col2 = st.columns(2) - - with col1: - if st.button("๐Ÿ”ง Technical SEO", key="quick_tech_seo"): - quick_actions["action"] = "technical_seo" - if st.button("๐Ÿ“Š Content Gap", key="quick_content_gap"): - quick_actions["action"] = "content_gap" - - with col2: - if st.button("๐ŸŽฏ Keyword Research", key="quick_keywords"): - quick_actions["action"] = "keyword_research" - if st.button("๐Ÿ† Competitor Analysis", key="quick_competitor"): - quick_actions["action"] = "competitor_analysis" - - # Analysis tools - st.markdown("**๐Ÿ“ˆ Analysis**") - col1, col2 = st.columns(2) - - with col1: - if st.button("๐ŸŒ Website Analyzer", key="quick_website"): - quick_actions["action"] = "website_analyzer" - if st.button("๐Ÿ“‹ On-Page SEO", key="quick_onpage"): - quick_actions["action"] = "onpage_seo" - - with col2: - if st.button("๐Ÿ”— URL SEO Check", key="quick_url_seo"): - quick_actions["action"] = "url_seo_check" - if st.button("๐Ÿ“ฑ Social Analyzer", key="quick_social_analyzer"): - quick_actions["action"] = "social_analyzer" - - st.markdown("---") - - return {"quick_actions": quick_actions} - - def _render_active_workflows(self) -> Dict[str, Any]: - """Render the active workflows section.""" - st.markdown("## ๐Ÿ”„ Active Workflows") - - workflow_actions = {} - active_workflows = self.context_manager.get_active_workflows() - paused_workflows = self.context_manager.get_paused_workflows() - - if active_workflows: - for workflow in active_workflows: - with st.expander(f"๐ŸŸข {workflow.workflow_name}"): - # Progress bar - progress = workflow.current_step / workflow.total_steps - st.progress(progress) - st.markdown(f"Step {workflow.current_step}/{workflow.total_steps}") - - # Action buttons - col1, col2 = st.columns(2) - with col1: - if st.button("โธ๏ธ Pause", key=f"pause_{workflow.workflow_id}"): - workflow_actions["pause"] = workflow.workflow_id - with col2: - if st.button("โ–ถ๏ธ Continue", key=f"continue_{workflow.workflow_id}"): - workflow_actions["continue"] = workflow.workflow_id - - if paused_workflows: - st.markdown("**โธ๏ธ Paused Workflows:**") - for workflow in paused_workflows: - col1, col2 = st.columns([3, 1]) - with col1: - st.markdown(f"โ€ข {workflow.workflow_name}") - with col2: - if st.button("โ–ถ๏ธ", key=f"resume_{workflow.workflow_id}"): - workflow_actions["resume"] = workflow.workflow_id - - # Start new workflow - st.markdown("**๐Ÿ†• Start New Workflow:**") - available_workflows = list(self.workflow_engine.workflows.keys()) - selected_workflow = st.selectbox( - "Choose workflow:", - [""] + available_workflows, - key="new_workflow_select" - ) - - if selected_workflow and st.button("๐Ÿš€ Start Workflow", key="start_new_workflow"): - workflow_actions["start"] = selected_workflow - - st.markdown("---") - - return {"workflow_actions": workflow_actions} - - def _render_user_preferences(self) -> Dict[str, Any]: - """Render the user preferences section.""" - st.markdown("## โš™๏ธ Preferences") - - preferences_updated = {} - current_prefs = self.context_manager.user_preferences - - with st.expander("๐ŸŽจ Content Preferences"): - # Tone preference - tone = st.selectbox( - "Preferred Tone:", - ["professional", "casual", "friendly", "formal", "creative"], - index=["professional", "casual", "friendly", "formal", "creative"].index( - current_prefs.preferred_tone - ), - key="pref_tone" - ) - - # Length preference - length = st.selectbox( - "Preferred Length:", - ["short", "medium", "long", "comprehensive"], - index=["short", "medium", "long", "comprehensive"].index( - current_prefs.preferred_length - ), - key="pref_length" - ) - - # Industry focus - industry_focus = st.multiselect( - "Industry Focus:", - ["Technology", "Healthcare", "Finance", "Education", "Marketing", - "E-commerce", "Travel", "Food", "Fashion", "Real Estate"], - default=current_prefs.industry_focus, - key="pref_industry" - ) - - # Content preferences - content_prefs = st.multiselect( - "Content Types:", - ["Blog Posts", "Social Media", "Email Marketing", "Technical Writing", - "Creative Writing", "SEO Content", "Product Descriptions", "News Articles"], - default=current_prefs.content_preferences, - key="pref_content_types" - ) - - if st.button("๐Ÿ’พ Save Preferences", key="save_preferences"): - preferences_updated = { - "preferred_tone": tone, - "preferred_length": length, - "industry_focus": industry_focus, - "content_preferences": content_prefs - } - - st.markdown("---") - - return {"preferences_updated": preferences_updated} - - def _render_analytics(self) -> Dict[str, Any]: - """Render the analytics section.""" - st.markdown("## ๐Ÿ“ˆ Analytics") - - analytics = self.context_manager.get_user_analytics() - - with st.expander("๐Ÿ“Š Usage Statistics"): - # Recent activity pattern - recent_activity = analytics.get("recent_activity_pattern", {}) - if recent_activity: - st.markdown("**Recent Activity:**") - for date, count in list(recent_activity.items())[-7:]: # Last 7 days - st.markdown(f"โ€ข {date}: {count} interactions") - - # Tool usage breakdown - most_used_tools = analytics.get("most_used_tools", []) - if most_used_tools: - st.markdown("**Tool Usage Breakdown:**") - for tool, count in most_used_tools: - percentage = (count / analytics.get("total_interactions", 1)) * 100 - st.markdown(f"โ€ข {tool}: {count} ({percentage:.1f}%)") - - # Context summary - with st.expander("๐Ÿง  Context Summary"): - context_summary = self.context_manager.get_context_summary() - st.text(context_summary) - - st.markdown("---") - - return {"analytics_viewed": True} - - def _render_export_import(self) -> Dict[str, Any]: - """Render the export/import section.""" - st.markdown("## ๐Ÿ’พ Data Management") - - export_actions = {} - - with st.expander("๐Ÿ“ค Export Data"): - export_format = st.selectbox( - "Export Format:", - ["JSON", "TXT"], - key="export_format" - ) - - if st.button("๐Ÿ“ฅ Export Conversation History", key="export_history"): - export_actions["export"] = { - "type": "conversation_history", - "format": export_format.lower() - } - - if st.button("๐Ÿ“Š Export Analytics", key="export_analytics"): - export_actions["export"] = { - "type": "analytics", - "format": export_format.lower() - } - - with st.expander("๐Ÿ—‘๏ธ Data Cleanup"): - cleanup_days = st.number_input( - "Keep data for (days):", - min_value=1, - max_value=365, - value=30, - key="cleanup_days" - ) - - if st.button("๐Ÿงน Cleanup Old Data", key="cleanup_data"): - export_actions["cleanup"] = cleanup_days - - if st.button("โš ๏ธ Reset All Data", key="reset_data"): - if st.checkbox("I understand this will delete all data", key="confirm_reset"): - export_actions["reset"] = True - - return {"export_actions": export_actions} - - def render_workflow_suggestions(self, intent_analysis: Dict[str, Any]) -> Optional[str]: - """Render workflow suggestions based on intent analysis.""" - suggested_workflows = intent_analysis.get("suggested_workflows", []) - - if suggested_workflows: - st.sidebar.markdown("## ๐Ÿ’ก Suggested Workflows") - - for workflow in suggested_workflows[:3]: # Show top 3 suggestions - workflow_info = self.workflow_engine.get_workflow(workflow) - if workflow_info: - with st.sidebar.expander(f"๐Ÿ”„ {workflow_info['name']}"): - st.markdown(f"**Description:** {workflow_info['description']}") - st.markdown(f"**Steps:** {len(workflow_info['steps'])}") - - if st.button(f"Start {workflow_info['name']}", - key=f"suggest_{workflow}"): - return workflow - - return None - - def render_tool_suggestions(self, intent_analysis: Dict[str, Any]) -> Optional[str]: - """Render tool suggestions based on intent analysis.""" - suggested_tools = intent_analysis.get("suggested_tools", []) - - if suggested_tools: - st.sidebar.markdown("## ๐Ÿ› ๏ธ Suggested Tools") - - # Group tools by category - tool_categories = self.tool_router.tool_categories - categorized_tools = {} - - for tool in suggested_tools[:6]: # Show top 6 suggestions - for category, tools in tool_categories.items(): - if tool in tools: - if category not in categorized_tools: - categorized_tools[category] = [] - categorized_tools[category].append(tool) - break - - for category, tools in categorized_tools.items(): - st.sidebar.markdown(f"**{category.title()}:**") - for tool in tools: - if st.sidebar.button(f"๐Ÿš€ {tool.replace('_', ' ').title()}", - key=f"suggest_tool_{tool}"): - return tool - - return None - - def show_notification(self, message: str, type: str = "info"): - """Show a notification in the sidebar.""" - if type == "success": - st.sidebar.success(message) - elif type == "error": - st.sidebar.error(message) - elif type == "warning": - st.sidebar.warning(message) - else: - st.sidebar.info(message) - - def get_sidebar_state(self) -> Dict[str, Any]: - """Get current sidebar state for persistence.""" - return { - "last_updated": datetime.now().isoformat(), - "active_sections": st.session_state.get("sidebar_sections", []), - "user_preferences": self.context_manager.user_preferences.__dict__ - } \ No newline at end of file diff --git a/ToBeMigrated/database/__init__.py b/ToBeMigrated/database/__init__.py deleted file mode 100644 index 1032e86c..00000000 --- a/ToBeMigrated/database/__init__.py +++ /dev/null @@ -1,164 +0,0 @@ -""" -Database Package for ALwrity -============================ - -This package provides database models and services for managing data -in the ALwrity application, including Twitter-specific functionality. - -Main Components: -- models.py: Core application database models -- twitter_models.py: Twitter-specific database models -- twitter_service.py: High-level Twitter database service -- twitter_init.py: Database initialization and management utilities - -Usage: - # Initialize Twitter database - from lib.database import initialize_twitter_database - initialize_twitter_database() - - # Use Twitter database service - from lib.database import twitter_db - user = twitter_db.create_or_update_user(user_data) - - # Use Twitter models directly - from lib.database.twitter_models import TwitterUser, Tweet -""" - -# Import core models -from .models import ( - SEOData, ContentType, Platform, ScheduleStatus, - ContentItem, Schedule, create_engine, init_db, get_session -) - -# Import Twitter-specific components -try: - from .twitter_models import ( - # Models - TwitterUser, Tweet, ScheduledTweet, TwitterAnalytics, - TweetAnalytics, EngagementData, AudienceInsight, - HashtagPerformance, ContentTemplate, TwitterSettings, - - # Enums and Data Classes - TwitterAccountType, TweetType, TweetStatus, EngagementType, - AnalyticsTimeframe, ContentCategory, TwitterCredentials, TweetMetrics, - - # Database functions - get_twitter_engine, init_twitter_db, get_twitter_session, - create_twitter_user, update_user_metrics, create_tweet_record, - update_tweet_metrics, calculate_virality_score, get_user_analytics_summary - ) - - from .twitter_service import TwitterDatabaseService, twitter_db - - from .twitter_init import ( - TwitterDatabaseInitializer, initialize_twitter_database, - check_twitter_database_health - ) - - TWITTER_AVAILABLE = True - -except ImportError as e: - # Twitter components not available (missing dependencies) - TWITTER_AVAILABLE = False - print(f"Warning: Twitter database components not available: {e}") - -# Package metadata -__version__ = "1.0.0" -__author__ = "ALwrity Team" - -# Export main components -__all__ = [ - # Core models - 'SEOData', 'ContentType', 'Platform', 'ScheduleStatus', - 'ContentItem', 'Schedule', 'create_engine', 'init_db', 'get_session', - - # Twitter availability flag - 'TWITTER_AVAILABLE', -] - -# Add Twitter exports if available -if TWITTER_AVAILABLE: - __all__.extend([ - # Twitter Models - 'TwitterUser', 'Tweet', 'ScheduledTweet', 'TwitterAnalytics', - 'TweetAnalytics', 'EngagementData', 'AudienceInsight', - 'HashtagPerformance', 'ContentTemplate', 'TwitterSettings', - - # Twitter Enums and Data Classes - 'TwitterAccountType', 'TweetType', 'TweetStatus', 'EngagementType', - 'AnalyticsTimeframe', 'ContentCategory', 'TwitterCredentials', 'TweetMetrics', - - # Twitter Database Functions - 'get_twitter_engine', 'init_twitter_db', 'get_twitter_session', - 'create_twitter_user', 'update_user_metrics', 'create_tweet_record', - 'update_tweet_metrics', 'calculate_virality_score', 'get_user_analytics_summary', - - # Twitter Service - 'TwitterDatabaseService', 'twitter_db', - - # Twitter Initialization - 'TwitterDatabaseInitializer', 'initialize_twitter_database', - 'check_twitter_database_health' - ]) - -def setup_database(db_url: str = "sqlite:///alwrity.db", twitter_db_url: str = "sqlite:///twitter_data.db"): - """ - Setup both core and Twitter databases. - - Args: - db_url: URL for the core database - twitter_db_url: URL for the Twitter database - - Returns: - dict: Setup results - """ - results = { - 'core_db': False, - 'twitter_db': False, - 'errors': [] - } - - try: - # Initialize core database - engine = create_engine(db_url) - init_db(engine) - results['core_db'] = True - except Exception as e: - results['errors'].append(f"Core database setup failed: {e}") - - if TWITTER_AVAILABLE: - try: - # Initialize Twitter database - success = initialize_twitter_database(twitter_db_url) - results['twitter_db'] = success - if not success: - results['errors'].append("Twitter database initialization failed") - except Exception as e: - results['errors'].append(f"Twitter database setup failed: {e}") - else: - results['errors'].append("Twitter database components not available") - - return results - -def get_database_info(): - """ - Get information about available database components. - - Returns: - dict: Database component information - """ - info = { - 'core_models_available': True, - 'twitter_models_available': TWITTER_AVAILABLE, - 'version': __version__ - } - - if TWITTER_AVAILABLE: - try: - # Get Twitter database stats if service is available - stats = twitter_db.get_database_stats() - info['twitter_stats'] = stats - except Exception as e: - info['twitter_stats_error'] = str(e) - - return info \ No newline at end of file diff --git a/ToBeMigrated/database/models.py b/ToBeMigrated/database/models.py deleted file mode 100644 index d4d8f95a..00000000 --- a/ToBeMigrated/database/models.py +++ /dev/null @@ -1,105 +0,0 @@ -from sqlalchemy import ( - create_engine, Column, Integer, String, Text, DateTime, Enum, ForeignKey, JSON -) -from sqlalchemy.orm import declarative_base, relationship, sessionmaker -from datetime import datetime -import enum -from dataclasses import dataclass -from typing import List, Dict, Any - -Base = declarative_base() - -# --- DATACLASSES --- - -@dataclass -class SEOData: - title: str = "" - meta_description: str = "" - keywords: List[str] = None - structured_data: Dict[str, Any] = None - - def __post_init__(self): - if self.keywords is None: - self.keywords = [] - if self.structured_data is None: - self.structured_data = {} - -# --- ENUMS --- - -class ContentType(enum.Enum): - BLOG_POST = "blog_post" - SOCIAL_MEDIA = "social_media" - VIDEO = "video" - NEWSLETTER = "newsletter" - -class Platform(enum.Enum): - WEBSITE = "website" - INSTAGRAM = "instagram" - TWITTER = "twitter" - LINKEDIN = "linkedin" - FACEBOOK = "facebook" - -class ScheduleStatus(enum.Enum): - SCHEDULED = "scheduled" - RUNNING = "running" - COMPLETED = "completed" - FAILED = "failed" - CANCELLED = "cancelled" - -# --- MODELS --- - -class ContentItem(Base): - __tablename__ = "content_items" - - id = Column(Integer, primary_key=True) - title = Column(String, nullable=False) - description = Column(Text) - content_type = Column(Enum(ContentType), nullable=False) - platforms = Column(JSON, nullable=False) # List of platforms (as strings) - publish_date = Column(DateTime, nullable=False) - status = Column(String, default="draft") - author = Column(String) - tags = Column(JSON, default=list) - notes = Column(Text) - seo_data = Column(JSON, default=dict) - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - schedules = relationship("Schedule", back_populates="content_item", cascade="all, delete-orphan") - -class Schedule(Base): - __tablename__ = "schedules" - - id = Column(Integer, primary_key=True) - content_item_id = Column(Integer, ForeignKey("content_items.id"), nullable=False) - scheduled_time = Column(DateTime, nullable=False) - status = Column(Enum(ScheduleStatus), default=ScheduleStatus.SCHEDULED) - recurrence = Column(String) # e.g., 'none', 'daily', 'weekly' - priority = Column(Integer, default=1) - result = Column(Text) - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - content_item = relationship("ContentItem", back_populates="schedules") - -# --- DB INIT & SESSION --- - -def get_engine(db_url="sqlite:///content_scheduler.db"): - return create_engine(db_url, echo=False) - -def init_db(engine): - Base.metadata.create_all(engine) - -def get_session(engine): - Session = sessionmaker(bind=engine) - return Session() - -__all__ = [ - 'ContentItem', - 'ContentType', - 'Platform', - 'SEOData', - 'get_engine', - 'get_session', - 'init_db', -] \ No newline at end of file diff --git a/ToBeMigrated/database/twitter_init.py b/ToBeMigrated/database/twitter_init.py deleted file mode 100644 index ee324d3f..00000000 --- a/ToBeMigrated/database/twitter_init.py +++ /dev/null @@ -1,524 +0,0 @@ -""" -Twitter Database Initialization and Migration Script -=================================================== - -This module provides utilities for initializing the Twitter database, -handling schema migrations, and managing database setup. - -Features: -- Database initialization and table creation -- Schema migration utilities -- Data seeding for development/testing -- Database health checks and maintenance -""" - -import os -import logging -from typing import Dict, Any, List, Optional -from datetime import datetime -import json -from pathlib import Path - -from sqlalchemy import create_engine, text, inspect -from sqlalchemy.orm import sessionmaker -from sqlalchemy.exc import SQLAlchemyError - -from .twitter_models import ( - Base, TwitterUser, Tweet, ScheduledTweet, TwitterAnalytics, - TweetAnalytics, EngagementData, AudienceInsight, HashtagPerformance, - ContentTemplate, TwitterSettings, TwitterAccountType, TweetType, - TweetStatus, EngagementType, AnalyticsTimeframe, ContentCategory -) - -# Configure logging -logging.basicConfig(level=logging.INFO) -logger = logging.getLogger(__name__) - -class TwitterDatabaseInitializer: - """ - Handles Twitter database initialization and management. - """ - - def __init__(self, db_url: str = "sqlite:///twitter_data.db"): - """Initialize the database initializer.""" - self.db_url = db_url - self.engine = create_engine(db_url, echo=False) - self.SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=self.engine) - - # Create database directory if using SQLite - if db_url.startswith('sqlite:///'): - db_path = db_url.replace('sqlite:///', '') - os.makedirs(os.path.dirname(os.path.abspath(db_path)), exist_ok=True) - - def initialize_database(self, force_recreate: bool = False) -> bool: - """ - Initialize the Twitter database with all required tables. - - Args: - force_recreate: If True, drop existing tables and recreate - - Returns: - bool: True if successful, False otherwise - """ - try: - if force_recreate: - logger.info("Dropping existing tables...") - Base.metadata.drop_all(bind=self.engine) - - logger.info("Creating Twitter database tables...") - Base.metadata.create_all(bind=self.engine) - - # Verify tables were created - inspector = inspect(self.engine) - tables = inspector.get_table_names() - - expected_tables = [ - 'twitter_users', 'tweets', 'scheduled_tweets', 'twitter_analytics', - 'tweet_analytics', 'engagement_data', 'audience_insights', - 'hashtag_performance', 'content_templates', 'twitter_settings' - ] - - missing_tables = [table for table in expected_tables if table not in tables] - - if missing_tables: - logger.error(f"Missing tables: {missing_tables}") - return False - - logger.info(f"Successfully created {len(tables)} tables") - - # Create indexes for better performance - self._create_indexes() - - # Seed initial data if needed - self._seed_initial_data() - - logger.info("Twitter database initialization completed successfully") - return True - - except Exception as e: - logger.error(f"Error initializing database: {e}") - return False - - def _create_indexes(self): - """Create database indexes for better query performance.""" - try: - with self.engine.connect() as conn: - # User indexes - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_twitter_users_user_id ON twitter_users(user_id)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_twitter_users_twitter_user_id ON twitter_users(twitter_user_id)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_twitter_users_username ON twitter_users(username)")) - - # Tweet indexes - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_tweets_user_id ON tweets(user_id)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_tweets_status ON tweets(status)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_tweets_posted_at ON tweets(posted_at)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_tweets_tweet_id ON tweets(tweet_id)")) - - # Scheduled tweet indexes - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_scheduled_tweets_user_id ON scheduled_tweets(user_id)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_scheduled_tweets_status ON scheduled_tweets(status)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_scheduled_tweets_scheduled_time ON scheduled_tweets(scheduled_time)")) - - # Analytics indexes - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_twitter_analytics_user_id ON twitter_analytics(user_id)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_twitter_analytics_date ON twitter_analytics(date)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_twitter_analytics_timeframe ON twitter_analytics(timeframe)")) - - # Tweet analytics indexes - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_tweet_analytics_tweet_id ON tweet_analytics(tweet_id)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_tweet_analytics_recorded_at ON tweet_analytics(recorded_at)")) - - # Engagement data indexes - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_engagement_data_tweet_id ON engagement_data(tweet_id)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_engagement_data_occurred_at ON engagement_data(occurred_at)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_engagement_data_type ON engagement_data(engagement_type)")) - - # Hashtag performance indexes - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_hashtag_performance_user_id ON hashtag_performance(user_id)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_hashtag_performance_hashtag ON hashtag_performance(hashtag)")) - - # Content template indexes - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_content_templates_user_id ON content_templates(user_id)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_content_templates_category ON content_templates(category)")) - conn.execute(text("CREATE INDEX IF NOT EXISTS idx_content_templates_is_active ON content_templates(is_active)")) - - conn.commit() - logger.info("Database indexes created successfully") - - except Exception as e: - logger.error(f"Error creating indexes: {e}") - - def _seed_initial_data(self): - """Seed the database with initial data for development/testing.""" - try: - session = self.SessionLocal() - - # Check if we already have data - if session.query(TwitterUser).count() > 0: - logger.info("Database already contains data, skipping seeding") - session.close() - return - - # Create sample content templates - sample_templates = [ - { - 'name': 'Daily Motivation', - 'description': 'Motivational quotes and thoughts', - 'template_text': 'Start your day with this thought: {quote} #motivation #success', - 'category': ContentCategory.PERSONAL, - 'variables': ['quote'], - 'default_hashtags': ['#motivation', '#success', '#mindset'], - 'ai_prompt': 'Generate an inspiring motivational quote', - 'ai_tone': 'inspirational', - 'ai_target_audience': 'professionals and entrepreneurs' - }, - { - 'name': 'Tech News Share', - 'description': 'Template for sharing tech news', - 'template_text': 'Interesting development in {topic}: {summary} {link} #tech #innovation', - 'category': ContentCategory.EDUCATIONAL, - 'variables': ['topic', 'summary', 'link'], - 'default_hashtags': ['#tech', '#innovation', '#technology'], - 'ai_prompt': 'Summarize this tech news in an engaging way', - 'ai_tone': 'informative', - 'ai_target_audience': 'tech enthusiasts and professionals' - }, - { - 'name': 'Question Engagement', - 'description': 'Template for asking engaging questions', - 'template_text': 'Quick question for my followers: {question} What do you think? #community #discussion', - 'category': ContentCategory.QUESTION, - 'variables': ['question'], - 'default_hashtags': ['#community', '#discussion', '#question'], - 'ai_prompt': 'Generate an engaging question for social media', - 'ai_tone': 'conversational', - 'ai_target_audience': 'general audience' - }, - { - 'name': 'Product Update', - 'description': 'Template for product announcements', - 'template_text': 'Excited to share: {update} {details} #product #update #announcement', - 'category': ContentCategory.PROMOTIONAL, - 'variables': ['update', 'details'], - 'default_hashtags': ['#product', '#update', '#announcement'], - 'ai_prompt': 'Write an exciting product update announcement', - 'ai_tone': 'enthusiastic', - 'ai_target_audience': 'customers and prospects' - } - ] - - # Note: We can't create templates without a user, so we'll skip this for now - # In a real scenario, templates would be created when users are added - - session.close() - logger.info("Initial data seeding completed") - - except Exception as e: - logger.error(f"Error seeding initial data: {e}") - - def check_database_health(self) -> Dict[str, Any]: - """ - Check the health and status of the Twitter database. - - Returns: - Dict containing health check results - """ - health_status = { - 'status': 'healthy', - 'timestamp': datetime.utcnow().isoformat(), - 'tables': {}, - 'indexes': {}, - 'issues': [] - } - - try: - inspector = inspect(self.engine) - - # Check table existence and row counts - expected_tables = [ - 'twitter_users', 'tweets', 'scheduled_tweets', 'twitter_analytics', - 'tweet_analytics', 'engagement_data', 'audience_insights', - 'hashtag_performance', 'content_templates', 'twitter_settings' - ] - - session = self.SessionLocal() - - for table_name in expected_tables: - if table_name in inspector.get_table_names(): - # Get row count - try: - result = session.execute(text(f"SELECT COUNT(*) FROM {table_name}")) - count = result.scalar() - health_status['tables'][table_name] = { - 'exists': True, - 'row_count': count - } - except Exception as e: - health_status['tables'][table_name] = { - 'exists': True, - 'row_count': 'error', - 'error': str(e) - } - health_status['issues'].append(f"Error counting rows in {table_name}: {e}") - else: - health_status['tables'][table_name] = {'exists': False} - health_status['issues'].append(f"Missing table: {table_name}") - - # Check indexes - for table_name in inspector.get_table_names(): - indexes = inspector.get_indexes(table_name) - health_status['indexes'][table_name] = len(indexes) - - session.close() - - # Set overall status - if health_status['issues']: - health_status['status'] = 'issues_found' - - return health_status - - except Exception as e: - health_status['status'] = 'error' - health_status['error'] = str(e) - logger.error(f"Error checking database health: {e}") - return health_status - - def backup_database(self, backup_path: str) -> bool: - """ - Create a backup of the database. - - Args: - backup_path: Path where to save the backup - - Returns: - bool: True if successful, False otherwise - """ - try: - if not self.db_url.startswith('sqlite:///'): - logger.error("Backup currently only supported for SQLite databases") - return False - - # Get the database file path - db_file = self.db_url.replace('sqlite:///', '') - - if not os.path.exists(db_file): - logger.error(f"Database file not found: {db_file}") - return False - - # Create backup directory if it doesn't exist - os.makedirs(os.path.dirname(backup_path), exist_ok=True) - - # Copy the database file - import shutil - shutil.copy2(db_file, backup_path) - - logger.info(f"Database backed up to: {backup_path}") - return True - - except Exception as e: - logger.error(f"Error backing up database: {e}") - return False - - def restore_database(self, backup_path: str) -> bool: - """ - Restore database from a backup. - - Args: - backup_path: Path to the backup file - - Returns: - bool: True if successful, False otherwise - """ - try: - if not self.db_url.startswith('sqlite:///'): - logger.error("Restore currently only supported for SQLite databases") - return False - - if not os.path.exists(backup_path): - logger.error(f"Backup file not found: {backup_path}") - return False - - # Get the database file path - db_file = self.db_url.replace('sqlite:///', '') - - # Copy the backup file to the database location - import shutil - shutil.copy2(backup_path, db_file) - - logger.info(f"Database restored from: {backup_path}") - return True - - except Exception as e: - logger.error(f"Error restoring database: {e}") - return False - - def migrate_schema(self, migration_scripts: List[str]) -> bool: - """ - Apply schema migration scripts. - - Args: - migration_scripts: List of SQL migration scripts - - Returns: - bool: True if successful, False otherwise - """ - try: - with self.engine.connect() as conn: - # Create migration tracking table if it doesn't exist - conn.execute(text(""" - CREATE TABLE IF NOT EXISTS schema_migrations ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - migration_name TEXT NOT NULL UNIQUE, - applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP - ) - """)) - - for script in migration_scripts: - # Check if migration was already applied - result = conn.execute(text( - "SELECT COUNT(*) FROM schema_migrations WHERE migration_name = :name" - ), {"name": script}) - - if result.scalar() == 0: - # Apply migration - logger.info(f"Applying migration: {script}") - - # Read and execute migration script - script_path = Path(script) - if script_path.exists(): - with open(script_path, 'r') as f: - migration_sql = f.read() - - conn.execute(text(migration_sql)) - - # Record migration as applied - conn.execute(text( - "INSERT INTO schema_migrations (migration_name) VALUES (:name)" - ), {"name": script}) - else: - logger.error(f"Migration script not found: {script}") - return False - else: - logger.info(f"Migration already applied: {script}") - - conn.commit() - logger.info("Schema migration completed successfully") - return True - - except Exception as e: - logger.error(f"Error applying schema migration: {e}") - return False - - def cleanup_old_data(self, days: int = 90) -> Dict[str, int]: - """ - Clean up old data to maintain database performance. - - Args: - days: Number of days to keep data for - - Returns: - Dict with cleanup statistics - """ - try: - cutoff_date = datetime.utcnow().replace(hour=0, minute=0, second=0, microsecond=0) - cutoff_date = cutoff_date.replace(day=cutoff_date.day - days) - - session = self.SessionLocal() - - # Count records to be deleted - old_tweet_analytics = session.query(TweetAnalytics).filter( - TweetAnalytics.recorded_at < cutoff_date - ).count() - - old_engagement_data = session.query(EngagementData).filter( - EngagementData.occurred_at < cutoff_date - ).count() - - # Delete old records - session.query(TweetAnalytics).filter( - TweetAnalytics.recorded_at < cutoff_date - ).delete() - - session.query(EngagementData).filter( - EngagementData.occurred_at < cutoff_date - ).delete() - - session.commit() - session.close() - - cleanup_stats = { - 'tweet_analytics_deleted': old_tweet_analytics, - 'engagement_data_deleted': old_engagement_data, - 'cutoff_date': cutoff_date.isoformat() - } - - logger.info(f"Cleanup completed: {cleanup_stats}") - return cleanup_stats - - except Exception as e: - logger.error(f"Error during cleanup: {e}") - return {'error': str(e)} - -def initialize_twitter_database(db_url: str = "sqlite:///twitter_data.db", force_recreate: bool = False) -> bool: - """ - Convenience function to initialize the Twitter database. - - Args: - db_url: Database URL - force_recreate: Whether to recreate existing tables - - Returns: - bool: True if successful, False otherwise - """ - initializer = TwitterDatabaseInitializer(db_url) - return initializer.initialize_database(force_recreate) - -def check_twitter_database_health(db_url: str = "sqlite:///twitter_data.db") -> Dict[str, Any]: - """ - Convenience function to check Twitter database health. - - Args: - db_url: Database URL - - Returns: - Dict with health check results - """ - initializer = TwitterDatabaseInitializer(db_url) - return initializer.check_database_health() - -if __name__ == "__main__": - # Command line interface for database management - import argparse - - parser = argparse.ArgumentParser(description="Twitter Database Management") - parser.add_argument("--db-url", default="sqlite:///twitter_data.db", help="Database URL") - parser.add_argument("--init", action="store_true", help="Initialize database") - parser.add_argument("--force", action="store_true", help="Force recreate tables") - parser.add_argument("--health", action="store_true", help="Check database health") - parser.add_argument("--backup", help="Create database backup") - parser.add_argument("--restore", help="Restore from backup") - parser.add_argument("--cleanup", type=int, help="Cleanup data older than N days") - - args = parser.parse_args() - - initializer = TwitterDatabaseInitializer(args.db_url) - - if args.init: - success = initializer.initialize_database(args.force) - print(f"Database initialization: {'SUCCESS' if success else 'FAILED'}") - - if args.health: - health = initializer.check_database_health() - print(json.dumps(health, indent=2)) - - if args.backup: - success = initializer.backup_database(args.backup) - print(f"Database backup: {'SUCCESS' if success else 'FAILED'}") - - if args.restore: - success = initializer.restore_database(args.restore) - print(f"Database restore: {'SUCCESS' if success else 'FAILED'}") - - if args.cleanup: - stats = initializer.cleanup_old_data(args.cleanup) - print(f"Cleanup completed: {stats}") \ No newline at end of file diff --git a/ToBeMigrated/database/twitter_models.py b/ToBeMigrated/database/twitter_models.py deleted file mode 100644 index 9c182ffe..00000000 --- a/ToBeMigrated/database/twitter_models.py +++ /dev/null @@ -1,791 +0,0 @@ -""" -Twitter Database Models for ALwrity -=================================== - -This module defines SQLAlchemy models for storing Twitter-related data including: -- User profiles and authentication -- Tweet content and metadata -- Analytics and engagement metrics -- Scheduling and automation data -- Performance tracking and insights - -This allows the application to store Twitter data locally and reduce API calls -while providing rich analytics and historical data to users. -""" - -from sqlalchemy import ( - create_engine, Column, Integer, String, Text, DateTime, Boolean, Float, - Enum, ForeignKey, JSON, BigInteger, Index, UniqueConstraint -) -from sqlalchemy.orm import declarative_base, relationship, sessionmaker -from datetime import datetime, timedelta -import enum -from dataclasses import dataclass -from typing import List, Dict, Any, Optional -import json - -Base = declarative_base() - -# --- ENUMS --- - -class TwitterAccountType(enum.Enum): - PERSONAL = "personal" - BUSINESS = "business" - CREATOR = "creator" - BRAND = "brand" - -class TweetType(enum.Enum): - ORIGINAL = "original" - REPLY = "reply" - RETWEET = "retweet" - QUOTE_TWEET = "quote_tweet" - THREAD = "thread" - -class TweetStatus(enum.Enum): - DRAFT = "draft" - SCHEDULED = "scheduled" - POSTED = "posted" - FAILED = "failed" - DELETED = "deleted" - -class EngagementType(enum.Enum): - LIKE = "like" - RETWEET = "retweet" - REPLY = "reply" - QUOTE_TWEET = "quote_tweet" - BOOKMARK = "bookmark" - IMPRESSION = "impression" - PROFILE_CLICK = "profile_click" - URL_CLICK = "url_click" - HASHTAG_CLICK = "hashtag_click" - MENTION_CLICK = "mention_click" - -class AnalyticsTimeframe(enum.Enum): - HOURLY = "hourly" - DAILY = "daily" - WEEKLY = "weekly" - MONTHLY = "monthly" - -class ContentCategory(enum.Enum): - EDUCATIONAL = "educational" - PROMOTIONAL = "promotional" - PERSONAL = "personal" - NEWS = "news" - ENTERTAINMENT = "entertainment" - QUESTION = "question" - POLL = "poll" - THREAD = "thread" - -# --- DATACLASSES --- - -@dataclass -class TwitterCredentials: - """Dataclass for Twitter API credentials""" - api_key: str = "" - api_secret: str = "" - access_token: str = "" - access_token_secret: str = "" - bearer_token: str = "" - - def to_dict(self) -> Dict[str, str]: - return { - 'api_key': self.api_key, - 'api_secret': self.api_secret, - 'access_token': self.access_token, - 'access_token_secret': self.access_token_secret, - 'bearer_token': self.bearer_token - } - - @classmethod - def from_dict(cls, data: Dict[str, str]) -> 'TwitterCredentials': - return cls( - api_key=data.get('api_key', ''), - api_secret=data.get('api_secret', ''), - access_token=data.get('access_token', ''), - access_token_secret=data.get('access_token_secret', ''), - bearer_token=data.get('bearer_token', '') - ) - -@dataclass -class TweetMetrics: - """Dataclass for tweet performance metrics""" - likes: int = 0 - retweets: int = 0 - replies: int = 0 - quotes: int = 0 - bookmarks: int = 0 - impressions: int = 0 - profile_clicks: int = 0 - url_clicks: int = 0 - hashtag_clicks: int = 0 - engagement_rate: float = 0.0 - reach: int = 0 - - def to_dict(self) -> Dict[str, Any]: - return { - 'likes': self.likes, - 'retweets': self.retweets, - 'replies': self.replies, - 'quotes': self.quotes, - 'bookmarks': self.bookmarks, - 'impressions': self.impressions, - 'profile_clicks': self.profile_clicks, - 'url_clicks': self.url_clicks, - 'hashtag_clicks': self.hashtag_clicks, - 'engagement_rate': self.engagement_rate, - 'reach': self.reach - } - -# --- MODELS --- - -class TwitterUser(Base): - """ - Stores Twitter user profile information and authentication data. - This reduces API calls for user profile information. - """ - __tablename__ = "twitter_users" - - id = Column(Integer, primary_key=True) - user_id = Column(String, nullable=False, unique=True) # ALwrity user ID - twitter_user_id = Column(BigInteger, nullable=False, unique=True) # Twitter user ID - username = Column(String, nullable=False, index=True) # @username - display_name = Column(String, nullable=False) - bio = Column(Text) - location = Column(String) - website = Column(String) - profile_image_url = Column(String) - banner_image_url = Column(String) - - # Account metrics - followers_count = Column(Integer, default=0) - following_count = Column(Integer, default=0) - tweet_count = Column(Integer, default=0) - listed_count = Column(Integer, default=0) - - # Account details - account_type = Column(Enum(TwitterAccountType), default=TwitterAccountType.PERSONAL) - verified = Column(Boolean, default=False) - protected = Column(Boolean, default=False) - created_at_twitter = Column(DateTime) # When Twitter account was created - - # Authentication and API data - credentials_encrypted = Column(Text) # Encrypted JSON of TwitterCredentials - api_rate_limit_remaining = Column(Integer, default=0) - api_rate_limit_reset = Column(DateTime) - last_api_call = Column(DateTime) - - # Metadata - is_active = Column(Boolean, default=True) - last_sync = Column(DateTime, default=datetime.utcnow) - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - # Relationships - tweets = relationship("Tweet", back_populates="user", cascade="all, delete-orphan") - analytics = relationship("TwitterAnalytics", back_populates="user", cascade="all, delete-orphan") - scheduled_tweets = relationship("ScheduledTweet", back_populates="user", cascade="all, delete-orphan") - engagement_data = relationship("EngagementData", back_populates="user", cascade="all, delete-orphan") - audience_insights = relationship("AudienceInsight", back_populates="user", cascade="all, delete-orphan") - - # Indexes - __table_args__ = ( - Index('idx_twitter_user_username', 'username'), - Index('idx_twitter_user_sync', 'last_sync'), - Index('idx_twitter_user_active', 'is_active'), - ) - -class Tweet(Base): - """ - Stores tweet content, metadata, and performance data. - Includes both posted tweets and drafts. - """ - __tablename__ = "tweets" - - id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("twitter_users.id"), nullable=False) - tweet_id = Column(BigInteger, unique=True, index=True) # Twitter tweet ID (null for drafts) - - # Content - text = Column(Text, nullable=False) - hashtags = Column(JSON, default=list) # List of hashtags - mentions = Column(JSON, default=list) # List of mentioned users - urls = Column(JSON, default=list) # List of URLs in tweet - media_urls = Column(JSON, default=list) # List of media URLs - - # Tweet metadata - tweet_type = Column(Enum(TweetType), default=TweetType.ORIGINAL) - status = Column(Enum(TweetStatus), default=TweetStatus.DRAFT) - category = Column(Enum(ContentCategory)) - - # Engagement metrics (updated periodically) - likes_count = Column(Integer, default=0) - retweets_count = Column(Integer, default=0) - replies_count = Column(Integer, default=0) - quotes_count = Column(Integer, default=0) - bookmarks_count = Column(Integer, default=0) - impressions_count = Column(Integer, default=0) - - # Performance metrics - engagement_rate = Column(Float, default=0.0) - reach = Column(Integer, default=0) - click_through_rate = Column(Float, default=0.0) - - # AI and generation data - ai_generated = Column(Boolean, default=False) - ai_model_used = Column(String) # Which AI model generated this - ai_prompt = Column(Text) # Original prompt used - ai_confidence_score = Column(Float) # AI confidence in content quality - generation_metadata = Column(JSON, default=dict) # Additional AI metadata - - # Scheduling and posting - scheduled_for = Column(DateTime) - posted_at = Column(DateTime) - last_metrics_update = Column(DateTime) - - # Thread information - thread_id = Column(String) # For grouping thread tweets - thread_position = Column(Integer) # Position in thread (1, 2, 3...) - parent_tweet_id = Column(BigInteger) # For replies - - # Metadata - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - # Relationships - user = relationship("TwitterUser", back_populates="tweets") - analytics = relationship("TweetAnalytics", back_populates="tweet", cascade="all, delete-orphan") - - # Indexes - __table_args__ = ( - Index('idx_tweet_user_status', 'user_id', 'status'), - Index('idx_tweet_posted_at', 'posted_at'), - Index('idx_tweet_engagement', 'engagement_rate'), - Index('idx_tweet_thread', 'thread_id'), - ) - -class ScheduledTweet(Base): - """ - Stores scheduled tweets with automation settings. - """ - __tablename__ = "scheduled_tweets" - - id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("twitter_users.id"), nullable=False) - tweet_id = Column(Integer, ForeignKey("tweets.id"), nullable=False) - - # Scheduling details - scheduled_time = Column(DateTime, nullable=False) - timezone = Column(String, default="UTC") - recurrence_pattern = Column(String) # cron-like pattern for recurring tweets - - # Automation settings - auto_optimize_time = Column(Boolean, default=False) # AI-optimize posting time - auto_add_hashtags = Column(Boolean, default=False) - auto_add_emojis = Column(Boolean, default=False) - - # Status and execution - status = Column(Enum(TweetStatus), default=TweetStatus.SCHEDULED) - attempts = Column(Integer, default=0) - last_attempt = Column(DateTime) - error_message = Column(Text) - - # Metadata - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - # Relationships - user = relationship("TwitterUser", back_populates="scheduled_tweets") - tweet = relationship("Tweet") - - # Indexes - __table_args__ = ( - Index('idx_scheduled_time', 'scheduled_time'), - Index('idx_scheduled_status', 'status'), - ) - -class TwitterAnalytics(Base): - """ - Stores aggregated Twitter analytics data for users. - Updated periodically to track account performance over time. - """ - __tablename__ = "twitter_analytics" - - id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("twitter_users.id"), nullable=False) - - # Time period - date = Column(DateTime, nullable=False) - timeframe = Column(Enum(AnalyticsTimeframe), nullable=False) - - # Account metrics - followers_gained = Column(Integer, default=0) - followers_lost = Column(Integer, default=0) - net_follower_change = Column(Integer, default=0) - following_change = Column(Integer, default=0) - - # Content metrics - tweets_posted = Column(Integer, default=0) - total_impressions = Column(Integer, default=0) - total_engagements = Column(Integer, default=0) - total_likes = Column(Integer, default=0) - total_retweets = Column(Integer, default=0) - total_replies = Column(Integer, default=0) - total_quotes = Column(Integer, default=0) - - # Performance metrics - average_engagement_rate = Column(Float, default=0.0) - top_tweet_id = Column(BigInteger) # Best performing tweet - top_tweet_engagement = Column(Integer, default=0) - - # Audience metrics - profile_visits = Column(Integer, default=0) - mention_count = Column(Integer, default=0) - hashtag_performance = Column(JSON, default=dict) # Top hashtags and their performance - - # Metadata - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - # Relationships - user = relationship("TwitterUser", back_populates="analytics") - - # Indexes - __table_args__ = ( - Index('idx_analytics_user_date', 'user_id', 'date'), - Index('idx_analytics_timeframe', 'timeframe'), - UniqueConstraint('user_id', 'date', 'timeframe', name='uq_user_date_timeframe'), - ) - -class TweetAnalytics(Base): - """ - Stores detailed analytics for individual tweets. - Updated periodically to track tweet performance over time. - """ - __tablename__ = "tweet_analytics" - - id = Column(Integer, primary_key=True) - tweet_id = Column(Integer, ForeignKey("tweets.id"), nullable=False) - - # Time period - recorded_at = Column(DateTime, nullable=False, default=datetime.utcnow) - - # Engagement metrics - likes = Column(Integer, default=0) - retweets = Column(Integer, default=0) - replies = Column(Integer, default=0) - quotes = Column(Integer, default=0) - bookmarks = Column(Integer, default=0) - - # Reach metrics - impressions = Column(Integer, default=0) - reach = Column(Integer, default=0) - profile_clicks = Column(Integer, default=0) - - # Click metrics - url_clicks = Column(Integer, default=0) - hashtag_clicks = Column(Integer, default=0) - mention_clicks = Column(Integer, default=0) - media_views = Column(Integer, default=0) - - # Calculated metrics - engagement_rate = Column(Float, default=0.0) - click_through_rate = Column(Float, default=0.0) - virality_score = Column(Float, default=0.0) # Custom metric for viral potential - - # Metadata - created_at = Column(DateTime, default=datetime.utcnow) - - # Relationships - tweet = relationship("Tweet", back_populates="analytics") - - # Indexes - __table_args__ = ( - Index('idx_tweet_analytics_recorded', 'recorded_at'), - Index('idx_tweet_analytics_engagement', 'engagement_rate'), - ) - -class EngagementData(Base): - """ - Stores individual engagement events for detailed analysis. - """ - __tablename__ = "engagement_data" - - id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("twitter_users.id"), nullable=False) - tweet_id = Column(Integer, ForeignKey("tweets.id")) - - # Engagement details - engagement_type = Column(Enum(EngagementType), nullable=False) - engaging_user_id = Column(BigInteger) # Twitter ID of user who engaged - engaging_username = Column(String) - - # Metadata - occurred_at = Column(DateTime, nullable=False) - created_at = Column(DateTime, default=datetime.utcnow) - - # Relationships - user = relationship("TwitterUser", back_populates="engagement_data") - tweet = relationship("Tweet") - - # Indexes - __table_args__ = ( - Index('idx_engagement_user_type', 'user_id', 'engagement_type'), - Index('idx_engagement_occurred', 'occurred_at'), - ) - -class AudienceInsight(Base): - """ - Stores audience demographics and behavior insights. - """ - __tablename__ = "audience_insights" - - id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("twitter_users.id"), nullable=False) - - # Time period - date = Column(DateTime, nullable=False) - - # Demographics (aggregated data) - top_locations = Column(JSON, default=list) # Top follower locations - age_demographics = Column(JSON, default=dict) # Age distribution - gender_demographics = Column(JSON, default=dict) # Gender distribution - language_demographics = Column(JSON, default=dict) # Language distribution - - # Behavior insights - most_active_hours = Column(JSON, default=list) # When audience is most active - top_interests = Column(JSON, default=list) # Audience interests - engagement_patterns = Column(JSON, default=dict) # How audience engages - - # Content preferences - preferred_content_types = Column(JSON, default=dict) - top_hashtags_used = Column(JSON, default=list) - response_rate_by_content = Column(JSON, default=dict) - - # Metadata - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - # Relationships - user = relationship("TwitterUser", back_populates="audience_insights") - - # Indexes - __table_args__ = ( - Index('idx_audience_user_date', 'user_id', 'date'), - ) - -class HashtagPerformance(Base): - """ - Tracks performance of hashtags used by the user. - """ - __tablename__ = "hashtag_performance" - - id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("twitter_users.id"), nullable=False) - - # Hashtag details - hashtag = Column(String, nullable=False, index=True) - usage_count = Column(Integer, default=0) - - # Performance metrics - total_impressions = Column(Integer, default=0) - total_engagements = Column(Integer, default=0) - average_engagement_rate = Column(Float, default=0.0) - - # Best performing tweet with this hashtag - best_tweet_id = Column(Integer, ForeignKey("tweets.id")) - best_tweet_engagement = Column(Integer, default=0) - - # Time tracking - first_used = Column(DateTime) - last_used = Column(DateTime) - - # Metadata - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - # Relationships - user = relationship("TwitterUser") - best_tweet = relationship("Tweet") - - # Indexes - __table_args__ = ( - Index('idx_hashtag_user_performance', 'user_id', 'average_engagement_rate'), - UniqueConstraint('user_id', 'hashtag', name='uq_user_hashtag'), - ) - -class ContentTemplate(Base): - """ - Stores reusable tweet templates and AI prompts. - """ - __tablename__ = "content_templates" - - id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("twitter_users.id"), nullable=False) - - # Template details - name = Column(String, nullable=False) - description = Column(Text) - template_text = Column(Text, nullable=False) - category = Column(Enum(ContentCategory)) - - # Template variables and settings - variables = Column(JSON, default=list) # List of template variables - default_hashtags = Column(JSON, default=list) - suggested_times = Column(JSON, default=list) # Best times to post this type - - # AI settings - ai_prompt = Column(Text) # AI prompt for generating content - ai_tone = Column(String) # Tone for AI generation - ai_target_audience = Column(String) - - # Usage tracking - usage_count = Column(Integer, default=0) - last_used = Column(DateTime) - average_performance = Column(Float, default=0.0) - - # Metadata - is_active = Column(Boolean, default=True) - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - # Relationships - user = relationship("TwitterUser") - - # Indexes - __table_args__ = ( - Index('idx_template_user_category', 'user_id', 'category'), - Index('idx_template_performance', 'average_performance'), - ) - -class TwitterSettings(Base): - """ - Stores user-specific Twitter settings and preferences. - """ - __tablename__ = "twitter_settings" - - id = Column(Integer, primary_key=True) - user_id = Column(Integer, ForeignKey("twitter_users.id"), nullable=False, unique=True) - - # Posting preferences - default_hashtags = Column(JSON, default=list) - auto_add_hashtags = Column(Boolean, default=False) - auto_add_emojis = Column(Boolean, default=False) - max_hashtags_per_tweet = Column(Integer, default=2) - - # Scheduling preferences - preferred_posting_times = Column(JSON, default=list) - timezone = Column(String, default="UTC") - auto_optimize_timing = Column(Boolean, default=False) - - # AI preferences - ai_tone_preference = Column(String, default="casual") - ai_target_audience = Column(String, default="general") - ai_creativity_level = Column(Float, default=0.7) # 0-1 scale - - # Analytics preferences - analytics_frequency = Column(String, default="daily") # hourly, daily, weekly - track_competitor_hashtags = Column(JSON, default=list) - notification_preferences = Column(JSON, default=dict) - - # Content preferences - content_categories = Column(JSON, default=list) # Preferred content types - avoid_topics = Column(JSON, default=list) # Topics to avoid - brand_keywords = Column(JSON, default=list) # Brand-related keywords - - # Automation settings - auto_retweet_keywords = Column(JSON, default=list) - auto_like_keywords = Column(JSON, default=list) - auto_follow_back = Column(Boolean, default=False) - - # Metadata - created_at = Column(DateTime, default=datetime.utcnow) - updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow) - - # Relationships - user = relationship("TwitterUser") - -# --- DATABASE FUNCTIONS --- - -def get_twitter_engine(db_url: str = "sqlite:///twitter_data.db"): - """Create and return database engine for Twitter data.""" - return create_engine(db_url, echo=False) - -def init_twitter_db(engine): - """Initialize Twitter database tables.""" - Base.metadata.create_all(engine) - -def get_twitter_session(engine): - """Create and return database session for Twitter data.""" - Session = sessionmaker(bind=engine) - return Session() - -def create_twitter_user(session, user_data: Dict[str, Any]) -> TwitterUser: - """Create a new Twitter user record.""" - twitter_user = TwitterUser( - user_id=user_data['user_id'], - twitter_user_id=user_data['twitter_user_id'], - username=user_data['username'], - display_name=user_data['display_name'], - bio=user_data.get('bio', ''), - location=user_data.get('location', ''), - website=user_data.get('website', ''), - profile_image_url=user_data.get('profile_image_url', ''), - banner_image_url=user_data.get('banner_image_url', ''), - followers_count=user_data.get('followers_count', 0), - following_count=user_data.get('following_count', 0), - tweet_count=user_data.get('tweet_count', 0), - verified=user_data.get('verified', False), - protected=user_data.get('protected', False), - created_at_twitter=user_data.get('created_at_twitter'), - credentials_encrypted=user_data.get('credentials_encrypted', ''), - ) - - session.add(twitter_user) - session.commit() - return twitter_user - -def update_user_metrics(session, user_id: int, metrics: Dict[str, Any]): - """Update user metrics from Twitter API.""" - user = session.query(TwitterUser).filter_by(id=user_id).first() - if user: - user.followers_count = metrics.get('followers_count', user.followers_count) - user.following_count = metrics.get('following_count', user.following_count) - user.tweet_count = metrics.get('tweet_count', user.tweet_count) - user.last_sync = datetime.utcnow() - session.commit() - -def create_tweet_record(session, tweet_data: Dict[str, Any]) -> Tweet: - """Create a new tweet record.""" - # Handle both 'text' and 'content' field names for compatibility - text_content = tweet_data.get('text') or tweet_data.get('content') - if not text_content: - raise ValueError("Tweet must have either 'text' or 'content' field") - - tweet = Tweet( - user_id=tweet_data['user_id'], - tweet_id=tweet_data.get('tweet_id'), - text=text_content, - hashtags=tweet_data.get('hashtags', []), - mentions=tweet_data.get('mentions', []), - urls=tweet_data.get('urls', []), - media_urls=tweet_data.get('media_urls', []), - tweet_type=TweetType(tweet_data.get('tweet_type', 'original')), - status=TweetStatus(tweet_data.get('status', 'draft')), - category=ContentCategory(tweet_data['category']) if tweet_data.get('category') else None, - ai_generated=tweet_data.get('ai_generated', False), - ai_model_used=tweet_data.get('ai_model_used'), - ai_prompt=tweet_data.get('ai_prompt'), - ai_confidence_score=tweet_data.get('ai_confidence_score'), - generation_metadata=tweet_data.get('generation_metadata', {}), - scheduled_for=tweet_data.get('scheduled_for'), - posted_at=tweet_data.get('posted_at'), - thread_id=tweet_data.get('thread_id'), - thread_position=tweet_data.get('thread_position'), - parent_tweet_id=tweet_data.get('parent_tweet_id'), - ) - - session.add(tweet) - session.commit() - return tweet - -def update_tweet_metrics(session, tweet_id: int, metrics: TweetMetrics): - """Update tweet metrics from Twitter API.""" - tweet = session.query(Tweet).filter_by(id=tweet_id).first() - if tweet: - tweet.likes_count = metrics.likes - tweet.retweets_count = metrics.retweets - tweet.replies_count = metrics.replies - tweet.quotes_count = metrics.quotes - tweet.bookmarks_count = metrics.bookmarks - tweet.impressions_count = metrics.impressions - tweet.engagement_rate = metrics.engagement_rate - tweet.reach = metrics.reach - tweet.last_metrics_update = datetime.utcnow() - session.commit() - - # Also create analytics record - analytics = TweetAnalytics( - tweet_id=tweet_id, - likes=metrics.likes, - retweets=metrics.retweets, - replies=metrics.replies, - quotes=metrics.quotes, - bookmarks=metrics.bookmarks, - impressions=metrics.impressions, - reach=metrics.reach, - engagement_rate=metrics.engagement_rate, - click_through_rate=metrics.url_clicks / max(metrics.impressions, 1) * 100, - virality_score=calculate_virality_score(metrics) - ) - session.add(analytics) - session.commit() - -def calculate_virality_score(metrics: TweetMetrics) -> float: - """Calculate a custom virality score based on engagement metrics.""" - if metrics.impressions == 0: - return 0.0 - - # Weight different engagement types - engagement_score = ( - metrics.likes * 1.0 + - metrics.retweets * 3.0 + # Retweets are more valuable - metrics.replies * 2.0 + - metrics.quotes * 2.5 + - metrics.bookmarks * 1.5 - ) - - # Normalize by impressions and scale - virality = (engagement_score / metrics.impressions) * 100 - return min(virality, 100.0) # Cap at 100 - -def get_user_analytics_summary(session, user_id: int, days: int = 30) -> Dict[str, Any]: - """Get analytics summary for a user over specified days.""" - from sqlalchemy import func - - start_date = datetime.utcnow() - timedelta(days=days) - - # Get tweet metrics - tweet_stats = session.query( - func.count(Tweet.id).label('total_tweets'), - func.avg(Tweet.engagement_rate).label('avg_engagement'), - func.sum(Tweet.likes_count).label('total_likes'), - func.sum(Tweet.retweets_count).label('total_retweets'), - func.sum(Tweet.impressions_count).label('total_impressions') - ).filter( - Tweet.user_id == user_id, - Tweet.posted_at >= start_date, - Tweet.status == TweetStatus.POSTED - ).first() - - # Get follower growth - user = session.query(TwitterUser).filter_by(id=user_id).first() - - return { - 'total_tweets': tweet_stats.total_tweets or 0, - 'average_engagement_rate': float(tweet_stats.avg_engagement or 0), - 'total_likes': tweet_stats.total_likes or 0, - 'total_retweets': tweet_stats.total_retweets or 0, - 'total_impressions': tweet_stats.total_impressions or 0, - 'current_followers': user.followers_count if user else 0, - 'period_days': days - } - -# Export all models and functions -__all__ = [ - # Models - 'TwitterUser', 'Tweet', 'ScheduledTweet', 'TwitterAnalytics', 'TweetAnalytics', - 'EngagementData', 'AudienceInsight', 'HashtagPerformance', 'ContentTemplate', - 'TwitterSettings', - - # Enums - 'TwitterAccountType', 'TweetType', 'TweetStatus', 'EngagementType', - 'AnalyticsTimeframe', 'ContentCategory', - - # Dataclasses - 'TwitterCredentials', 'TweetMetrics', - - # Functions - 'get_twitter_engine', 'init_twitter_db', 'get_twitter_session', - 'create_twitter_user', 'update_user_metrics', 'create_tweet_record', - 'update_tweet_metrics', 'calculate_virality_score', 'get_user_analytics_summary' -] \ No newline at end of file diff --git a/ToBeMigrated/database/twitter_service.py b/ToBeMigrated/database/twitter_service.py deleted file mode 100644 index 1322cdfe..00000000 --- a/ToBeMigrated/database/twitter_service.py +++ /dev/null @@ -1,766 +0,0 @@ -""" -Twitter Database Service Layer -============================= - -This module provides high-level service functions for managing Twitter data -in the database. It acts as an interface between the application and the -database models, providing convenient methods for common operations. - -Key Features: -- User profile management and synchronization -- Tweet creation, updating, and analytics tracking -- Scheduled tweet management -- Analytics data aggregation and reporting -- Hashtag performance tracking -- Audience insights management -""" - -import logging -from typing import Dict, List, Any, Optional, Tuple -from datetime import datetime, timedelta -from sqlalchemy.orm import Session -from sqlalchemy import func, desc, and_, or_ -import json -from cryptography.fernet import Fernet -import os - -from .twitter_models import ( - TwitterUser, Tweet, ScheduledTweet, TwitterAnalytics, TweetAnalytics, - EngagementData, AudienceInsight, HashtagPerformance, ContentTemplate, - TwitterSettings, TwitterCredentials, TweetMetrics, - TwitterAccountType, TweetType, TweetStatus, EngagementType, - AnalyticsTimeframe, ContentCategory, - get_twitter_engine, init_twitter_db, get_twitter_session, - create_twitter_user, update_user_metrics, create_tweet_record, - update_tweet_metrics, calculate_virality_score, get_user_analytics_summary -) - -# Configure logging -logger = logging.getLogger(__name__) - -class TwitterDatabaseService: - """ - High-level service for managing Twitter data in the database. - """ - - def __init__(self, db_url: str = "sqlite:///twitter_data.db", encryption_key: Optional[str] = None): - """Initialize the Twitter database service.""" - self.engine = get_twitter_engine(db_url) - self.encryption_key = encryption_key or self._get_or_create_encryption_key() - self.cipher = Fernet(self.encryption_key.encode() if isinstance(self.encryption_key, str) else self.encryption_key) - - # Initialize database - init_twitter_db(self.engine) - - logger.info("Twitter database service initialized") - - def _get_or_create_encryption_key(self) -> str: - """Get or create encryption key for sensitive data.""" - key_file = "twitter_encryption.key" - - if os.path.exists(key_file): - with open(key_file, 'rb') as f: - return f.read() - else: - key = Fernet.generate_key() - with open(key_file, 'wb') as f: - f.write(key) - return key - - def _encrypt_credentials(self, credentials: TwitterCredentials) -> str: - """Encrypt Twitter credentials for secure storage.""" - credentials_json = json.dumps(credentials.to_dict()) - encrypted = self.cipher.encrypt(credentials_json.encode()) - return encrypted.decode() - - def _decrypt_credentials(self, encrypted_credentials: str) -> TwitterCredentials: - """Decrypt Twitter credentials from storage.""" - try: - decrypted = self.cipher.decrypt(encrypted_credentials.encode()) - credentials_dict = json.loads(decrypted.decode()) - return TwitterCredentials.from_dict(credentials_dict) - except Exception as e: - logger.error(f"Failed to decrypt credentials: {e}") - return TwitterCredentials() - - def get_session(self) -> Session: - """Get a database session.""" - return get_twitter_session(self.engine) - - # --- USER MANAGEMENT --- - - def create_or_update_user(self, user_data: Dict[str, Any]) -> TwitterUser: - """Create a new Twitter user or update existing one.""" - session = self.get_session() - try: - # Check if user already exists - existing_user = session.query(TwitterUser).filter_by( - user_id=user_data['user_id'] - ).first() - - if existing_user: - # Update existing user - for key, value in user_data.items(): - if hasattr(existing_user, key) and key != 'id': - setattr(existing_user, key, value) - existing_user.updated_at = datetime.utcnow() - session.commit() - logger.info(f"Updated Twitter user: {existing_user.username}") - return existing_user - else: - # Create new user - twitter_user = create_twitter_user(session, user_data) - logger.info(f"Created new Twitter user: {twitter_user.username}") - return twitter_user - - except Exception as e: - session.rollback() - logger.error(f"Error creating/updating user: {e}") - raise - finally: - session.close() - - def save_user_credentials(self, user_id: str, credentials: TwitterCredentials) -> bool: - """Save encrypted Twitter credentials for a user.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if user: - encrypted_creds = self._encrypt_credentials(credentials) - user.credentials_encrypted = encrypted_creds - user.updated_at = datetime.utcnow() - session.commit() - logger.info(f"Saved credentials for user: {user.username}") - return True - else: - logger.error(f"User not found: {user_id}") - return False - - except Exception as e: - session.rollback() - logger.error(f"Error saving credentials: {e}") - return False - finally: - session.close() - - def get_user_credentials(self, user_id: str) -> Optional[TwitterCredentials]: - """Get decrypted Twitter credentials for a user.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if user and user.credentials_encrypted: - return self._decrypt_credentials(user.credentials_encrypted) - return None - - except Exception as e: - logger.error(f"Error getting credentials: {e}") - return None - finally: - session.close() - - def get_user_by_id(self, user_id: str) -> Optional[TwitterUser]: - """Get Twitter user by ALwrity user ID.""" - session = self.get_session() - try: - return session.query(TwitterUser).filter_by(user_id=user_id).first() - finally: - session.close() - - def get_user_by_twitter_id(self, twitter_user_id: int) -> Optional[TwitterUser]: - """Get Twitter user by Twitter user ID.""" - session = self.get_session() - try: - return session.query(TwitterUser).filter_by(twitter_user_id=twitter_user_id).first() - finally: - session.close() - - def update_user_profile(self, user_id: str, profile_data: Dict[str, Any]) -> bool: - """Update user profile information from Twitter API.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if user: - update_user_metrics(session, user.id, profile_data) - logger.info(f"Updated profile for user: {user.username}") - return True - return False - - except Exception as e: - session.rollback() - logger.error(f"Error updating user profile: {e}") - return False - finally: - session.close() - - # --- TWEET MANAGEMENT --- - - def save_tweet(self, tweet_data: Dict[str, Any]) -> Tweet: - """Save a tweet to the database.""" - session = self.get_session() - try: - tweet = create_tweet_record(session, tweet_data) - logger.info(f"Saved tweet: {tweet.id}") - return tweet - - except Exception as e: - session.rollback() - logger.error(f"Error saving tweet: {e}") - raise - finally: - session.close() - - def update_tweet_status(self, tweet_id: int, status: TweetStatus, twitter_tweet_id: Optional[int] = None) -> bool: - """Update tweet status (e.g., from draft to posted).""" - session = self.get_session() - try: - tweet = session.query(Tweet).filter_by(id=tweet_id).first() - if tweet: - tweet.status = status - if twitter_tweet_id: - tweet.tweet_id = twitter_tweet_id - if status == TweetStatus.POSTED: - tweet.posted_at = datetime.utcnow() - tweet.updated_at = datetime.utcnow() - session.commit() - logger.info(f"Updated tweet {tweet_id} status to {status.value}") - return True - return False - - except Exception as e: - session.rollback() - logger.error(f"Error updating tweet status: {e}") - return False - finally: - session.close() - - def get_user_tweets(self, user_id: str, status: Optional[TweetStatus] = None, limit: int = 50) -> List[Tweet]: - """Get tweets for a user, optionally filtered by status.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if not user: - return [] - - query = session.query(Tweet).filter_by(user_id=user.id) - - if status: - query = query.filter_by(status=status) - - return query.order_by(desc(Tweet.created_at)).limit(limit).all() - - finally: - session.close() - - def get_tweet_by_id(self, tweet_id: int) -> Optional[Tweet]: - """Get tweet by database ID.""" - session = self.get_session() - try: - return session.query(Tweet).filter_by(id=tweet_id).first() - finally: - session.close() - - def get_tweet_by_twitter_id(self, twitter_tweet_id: int) -> Optional[Tweet]: - """Get tweet by Twitter tweet ID.""" - session = self.get_session() - try: - return session.query(Tweet).filter_by(tweet_id=twitter_tweet_id).first() - finally: - session.close() - - def update_tweet_analytics(self, tweet_id: int, metrics: TweetMetrics) -> bool: - """Update tweet analytics from Twitter API.""" - session = self.get_session() - try: - update_tweet_metrics(session, tweet_id, metrics) - logger.info(f"Updated analytics for tweet: {tweet_id}") - return True - - except Exception as e: - session.rollback() - logger.error(f"Error updating tweet analytics: {e}") - return False - finally: - session.close() - - def get_top_performing_tweets(self, user_id: str, days: int = 30, limit: int = 10) -> List[Tweet]: - """Get top performing tweets for a user.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if not user: - return [] - - start_date = datetime.utcnow() - timedelta(days=days) - - return session.query(Tweet).filter( - and_( - Tweet.user_id == user.id, - Tweet.status == TweetStatus.POSTED, - Tweet.posted_at >= start_date - ) - ).order_by(desc(Tweet.engagement_rate)).limit(limit).all() - - finally: - session.close() - - # --- SCHEDULED TWEETS --- - - def schedule_tweet(self, tweet_id: int, scheduled_time: datetime, settings: Dict[str, Any] = None) -> ScheduledTweet: - """Schedule a tweet for posting.""" - session = self.get_session() - try: - tweet = session.query(Tweet).filter_by(id=tweet_id).first() - if not tweet: - raise ValueError(f"Tweet {tweet_id} not found") - - scheduled_tweet = ScheduledTweet( - user_id=tweet.user_id, - tweet_id=tweet_id, - scheduled_time=scheduled_time, - timezone=settings.get('timezone', 'UTC'), - auto_optimize_time=settings.get('auto_optimize_time', False), - auto_add_hashtags=settings.get('auto_add_hashtags', False), - auto_add_emojis=settings.get('auto_add_emojis', False) - ) - - session.add(scheduled_tweet) - - # Update tweet status - tweet.status = TweetStatus.SCHEDULED - tweet.scheduled_for = scheduled_time - - session.commit() - logger.info(f"Scheduled tweet {tweet_id} for {scheduled_time}") - return scheduled_tweet - - except Exception as e: - session.rollback() - logger.error(f"Error scheduling tweet: {e}") - raise - finally: - session.close() - - def get_pending_scheduled_tweets(self, user_id: Optional[str] = None) -> List[ScheduledTweet]: - """Get tweets scheduled for posting.""" - session = self.get_session() - try: - query = session.query(ScheduledTweet).filter( - and_( - ScheduledTweet.status == TweetStatus.SCHEDULED, - ScheduledTweet.scheduled_time <= datetime.utcnow() - ) - ) - - if user_id: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if user: - query = query.filter_by(user_id=user.id) - - return query.order_by(ScheduledTweet.scheduled_time).all() - - finally: - session.close() - - def mark_scheduled_tweet_posted(self, scheduled_tweet_id: int, twitter_tweet_id: int) -> bool: - """Mark a scheduled tweet as posted.""" - session = self.get_session() - try: - scheduled_tweet = session.query(ScheduledTweet).filter_by(id=scheduled_tweet_id).first() - if scheduled_tweet: - scheduled_tweet.status = TweetStatus.POSTED - - # Update the associated tweet - tweet = session.query(Tweet).filter_by(id=scheduled_tweet.tweet_id).first() - if tweet: - tweet.status = TweetStatus.POSTED - tweet.tweet_id = twitter_tweet_id - tweet.posted_at = datetime.utcnow() - - session.commit() - logger.info(f"Marked scheduled tweet {scheduled_tweet_id} as posted") - return True - return False - - except Exception as e: - session.rollback() - logger.error(f"Error marking scheduled tweet as posted: {e}") - return False - finally: - session.close() - - # --- ANALYTICS --- - - def save_daily_analytics(self, user_id: str, analytics_data: Dict[str, Any]) -> TwitterAnalytics: - """Save daily analytics data for a user.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if not user: - raise ValueError(f"User {user_id} not found") - - # Check if analytics for today already exist - today = datetime.utcnow().date() - existing = session.query(TwitterAnalytics).filter( - and_( - TwitterAnalytics.user_id == user.id, - func.date(TwitterAnalytics.date) == today, - TwitterAnalytics.timeframe == AnalyticsTimeframe.DAILY - ) - ).first() - - if existing: - # Update existing record - for key, value in analytics_data.items(): - if hasattr(existing, key): - setattr(existing, key, value) - existing.updated_at = datetime.utcnow() - session.commit() - return existing - else: - # Create new record - analytics = TwitterAnalytics( - user_id=user.id, - date=datetime.utcnow(), - timeframe=AnalyticsTimeframe.DAILY, - **analytics_data - ) - session.add(analytics) - session.commit() - logger.info(f"Saved daily analytics for user: {user.username}") - return analytics - - except Exception as e: - session.rollback() - logger.error(f"Error saving analytics: {e}") - raise - finally: - session.close() - - def get_analytics_summary(self, user_id: str, days: int = 30) -> Dict[str, Any]: - """Get comprehensive analytics summary for a user.""" - session = self.get_session() - try: - return get_user_analytics_summary(session, user_id, days) - finally: - session.close() - - def get_engagement_trends(self, user_id: str, days: int = 30) -> List[Dict[str, Any]]: - """Get engagement trends over time.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if not user: - return [] - - start_date = datetime.utcnow() - timedelta(days=days) - - analytics = session.query(TwitterAnalytics).filter( - and_( - TwitterAnalytics.user_id == user.id, - TwitterAnalytics.date >= start_date, - TwitterAnalytics.timeframe == AnalyticsTimeframe.DAILY - ) - ).order_by(TwitterAnalytics.date).all() - - return [ - { - 'date': a.date.isoformat(), - 'engagement_rate': a.average_engagement_rate, - 'total_engagements': a.total_engagements, - 'impressions': a.total_impressions, - 'followers_change': a.net_follower_change - } - for a in analytics - ] - - finally: - session.close() - - # --- HASHTAG PERFORMANCE --- - - def track_hashtag_performance(self, user_id: str, hashtag: str, tweet_id: int, engagement_metrics: Dict[str, Any]) -> bool: - """Track performance of a hashtag.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if not user: - return False - - # Get or create hashtag performance record - hashtag_perf = session.query(HashtagPerformance).filter( - and_( - HashtagPerformance.user_id == user.id, - HashtagPerformance.hashtag == hashtag - ) - ).first() - - if hashtag_perf: - # Update existing record - hashtag_perf.usage_count += 1 - hashtag_perf.total_impressions += engagement_metrics.get('impressions', 0) - hashtag_perf.total_engagements += engagement_metrics.get('engagements', 0) - hashtag_perf.last_used = datetime.utcnow() - - # Update average engagement rate - if hashtag_perf.usage_count > 0: - hashtag_perf.average_engagement_rate = ( - hashtag_perf.total_engagements / hashtag_perf.total_impressions * 100 - if hashtag_perf.total_impressions > 0 else 0 - ) - - # Update best performing tweet if this one is better - current_engagement = engagement_metrics.get('engagements', 0) - if current_engagement > hashtag_perf.best_tweet_engagement: - hashtag_perf.best_tweet_id = tweet_id - hashtag_perf.best_tweet_engagement = current_engagement - - else: - # Create new record - hashtag_perf = HashtagPerformance( - user_id=user.id, - hashtag=hashtag, - usage_count=1, - total_impressions=engagement_metrics.get('impressions', 0), - total_engagements=engagement_metrics.get('engagements', 0), - average_engagement_rate=( - engagement_metrics.get('engagements', 0) / - max(engagement_metrics.get('impressions', 1), 1) * 100 - ), - best_tweet_id=tweet_id, - best_tweet_engagement=engagement_metrics.get('engagements', 0), - first_used=datetime.utcnow(), - last_used=datetime.utcnow() - ) - session.add(hashtag_perf) - - session.commit() - return True - - except Exception as e: - session.rollback() - logger.error(f"Error tracking hashtag performance: {e}") - return False - finally: - session.close() - - def get_top_hashtags(self, user_id: str, limit: int = 10) -> List[HashtagPerformance]: - """Get top performing hashtags for a user.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if not user: - return [] - - return session.query(HashtagPerformance).filter_by( - user_id=user.id - ).order_by(desc(HashtagPerformance.average_engagement_rate)).limit(limit).all() - - finally: - session.close() - - # --- CONTENT TEMPLATES --- - - def save_content_template(self, user_id: str, template_data: Dict[str, Any]) -> ContentTemplate: - """Save a content template.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if not user: - raise ValueError(f"User {user_id} not found") - - template = ContentTemplate( - user_id=user.id, - name=template_data['name'], - description=template_data.get('description', ''), - template_text=template_data['template_text'], - category=ContentCategory(template_data['category']) if template_data.get('category') else None, - variables=template_data.get('variables', []), - default_hashtags=template_data.get('default_hashtags', []), - ai_prompt=template_data.get('ai_prompt', ''), - ai_tone=template_data.get('ai_tone', ''), - ai_target_audience=template_data.get('ai_target_audience', '') - ) - - session.add(template) - session.commit() - logger.info(f"Saved content template: {template.name}") - return template - - except Exception as e: - session.rollback() - logger.error(f"Error saving content template: {e}") - raise - finally: - session.close() - - def get_user_templates(self, user_id: str, category: Optional[ContentCategory] = None) -> List[ContentTemplate]: - """Get content templates for a user.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if not user: - return [] - - query = session.query(ContentTemplate).filter( - and_( - ContentTemplate.user_id == user.id, - ContentTemplate.is_active == True - ) - ) - - if category: - query = query.filter_by(category=category) - - return query.order_by(desc(ContentTemplate.average_performance)).all() - - finally: - session.close() - - # --- SETTINGS --- - - def save_user_settings(self, user_id: str, settings_data: Dict[str, Any]) -> TwitterSettings: - """Save user Twitter settings.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if not user: - raise ValueError(f"User {user_id} not found") - - # Check if settings already exist - existing_settings = session.query(TwitterSettings).filter_by(user_id=user.id).first() - - if existing_settings: - # Update existing settings - for key, value in settings_data.items(): - if hasattr(existing_settings, key): - setattr(existing_settings, key, value) - existing_settings.updated_at = datetime.utcnow() - session.commit() - return existing_settings - else: - # Create new settings - settings = TwitterSettings( - user_id=user.id, - **settings_data - ) - session.add(settings) - session.commit() - logger.info(f"Saved settings for user: {user.username}") - return settings - - except Exception as e: - session.rollback() - logger.error(f"Error saving user settings: {e}") - raise - finally: - session.close() - - def get_user_settings(self, user_id: str) -> Optional[TwitterSettings]: - """Get user Twitter settings.""" - session = self.get_session() - try: - user = session.query(TwitterUser).filter_by(user_id=user_id).first() - if not user: - return None - - return session.query(TwitterSettings).filter_by(user_id=user.id).first() - - finally: - session.close() - - # --- UTILITY METHODS --- - - def cleanup_old_data(self, days_old: int = 30) -> Dict[str, int]: - """ - Clean up old data to maintain database performance. - - Args: - days_old: Number of days old data to keep - - Returns: - Dictionary with cleanup statistics - """ - try: - cutoff_date = datetime.utcnow() - timedelta(days=days_old) - - with self.get_session() as session: - # Clean up old analytics data - old_analytics = session.query(TwitterAnalytics).filter( - TwitterAnalytics.created_at < cutoff_date - ).count() - - session.query(TwitterAnalytics).filter( - TwitterAnalytics.created_at < cutoff_date - ).delete() - - # Clean up old tweet analytics - old_tweet_analytics = session.query(TweetAnalytics).filter( - TweetAnalytics.created_at < cutoff_date - ).count() - - session.query(TweetAnalytics).filter( - TweetAnalytics.created_at < cutoff_date - ).delete() - - session.commit() - - stats = { - 'old_analytics_removed': old_analytics, - 'old_tweet_analytics_removed': old_tweet_analytics, - 'cutoff_date': cutoff_date.isoformat() - } - - logger.info(f"Cleaned up old data: {stats}") - return stats - - except Exception as e: - logger.error(f"Error cleaning up old data: {e}") - return {'error': str(e)} - - def get_database_stats(self) -> Dict[str, int]: - """ - Get database statistics. - - Returns: - Dictionary with database statistics - """ - try: - with self.get_session() as session: - stats = { - 'total_users': session.query(TwitterUser).count(), - 'total_tweets': session.query(Tweet).count(), - 'posted_tweets': session.query(Tweet).filter( - Tweet.status == TweetStatus.POSTED - ).count(), - 'scheduled_tweets': session.query(ScheduledTweet).filter( - ScheduledTweet.status == TweetStatus.SCHEDULED - ).count(), - 'total_analytics_records': session.query(TwitterAnalytics).count(), - 'total_templates': session.query(ContentTemplate).count() - } - - return stats - - except Exception as e: - logger.error(f"Error getting database stats: {e}") - return {'error': str(e)} - - def close(self): - """ - Close database connections and clean up resources. - """ - try: - if hasattr(self, 'engine') and self.engine: - self.engine.dispose() - logger.info("Database connections closed successfully") - except Exception as e: - logger.error(f"Error closing database connections: {e}") - -# Create a global instance for easy access -twitter_db = TwitterDatabaseService() - -# Export the service and key functions -__all__ = [ - 'TwitterDatabaseService', - 'twitter_db' -] \ No newline at end of file diff --git a/ToBeMigrated/utils/ai_research.py b/ToBeMigrated/utils/ai_research.py deleted file mode 100644 index b8e702fc..00000000 --- a/ToBeMigrated/utils/ai_research.py +++ /dev/null @@ -1,99 +0,0 @@ -"""AI research module for topic analysis and research.""" - -import asyncio -from typing import Dict, Any -from loguru import logger -import sys -from ..web_crawlers.async_web_crawler import AsyncWebCrawlerService -from ..gpt_providers.text_generation.main_text_generation import llm_text_gen - -# Configure logger -logger.remove() -logger.add( - "logs/ai_research.log", - rotation="500 MB", - retention="10 days", - level="DEBUG", - format="{time:YYYY-MM-DD HH:mm:ss} | {level} | {message}" -) -logger.add( - sys.stdout, - level="INFO", - format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {message}" -) - -def research_topic(topic: str) -> Dict[str, Any]: - """ - Research a topic using web crawling and AI analysis. - - Args: - topic (str): The topic to research - - Returns: - Dict[str, Any]: Research results including overview, findings, and recommendations - """ - try: - logger.info(f"[research_topic] Starting research for topic: {topic}") - - # Initialize web crawler - async def analyze_topic(): - async with AsyncWebCrawlerService() as crawler: - # Perform web research - search_results = await crawler.crawl_website(topic) - - if not search_results.get('success'): - return { - 'success': False, - 'error': search_results.get('error', 'Research failed') - } - - # Analyze content with LLM - analysis = await crawler.analyze_content_with_llm( - search_results['content'], - api_key=None, # Should be passed from config - gpt_provider="google" # Should be configurable - ) - - # Structure the response - return { - 'success': True, - 'data': { - 'research': { - 'overview': { - 'topic': topic, - 'scope': analysis.get('topics', []), - 'methodology': 'Web crawling and AI analysis' - }, - 'data_quality': { - 'is_reliable': bool(analysis.get('seo_score', 0) > 0.7) - }, - 'analysis_quality': { - 'is_thorough': bool(len(analysis.get('key_insights', [])) > 5) - }, - 'recommendations': analysis.get('recommendations', []), - 'next_steps': analysis.get('priority_areas', []) - } - } - } - - # Run the async analysis - results = asyncio.run(analyze_topic()) - - if not results.get('success'): - error_msg = results.get('error', 'Research failed') - logger.error(f"[research_topic] Research failed: {error_msg}") - return { - 'success': False, - 'error': error_msg - } - - logger.info("[research_topic] Research completed successfully") - return results - - except Exception as e: - error_msg = f"Research failed: {str(e)}" - logger.error(f"[research_topic] {error_msg}") - return { - 'success': False, - 'error': str(e) - } \ No newline at end of file diff --git a/ToBeMigrated/utils/api_key_manager/__init__.py b/ToBeMigrated/utils/api_key_manager/__init__.py deleted file mode 100644 index 1fc0de53..00000000 --- a/ToBeMigrated/utils/api_key_manager/__init__.py +++ /dev/null @@ -1,54 +0,0 @@ -"""API Key Manager package for ALwrity.""" - -from .manager import APIKeyManager -from .api_key_manager import render, check_onboarding_completion, get_onboarding_status, reset_onboarding -from .onboarding_progress import ( - OnboardingProgress, - get_onboarding_progress, - render_progress_indicator, - render_resume_message, - StepStatus, - StepData -) -from .validation import check_all_api_keys -from .components.base import ( - render_step_indicator, - render_navigation_buttons, - render_step_validation, - render_resume_options -) - -# Export all public components -__all__ = [ - # Main classes - 'APIKeyManager', - 'OnboardingProgress', - 'StepStatus', - 'StepData', - - # Main functions - 'render', - 'check_onboarding_completion', - 'get_onboarding_status', - 'reset_onboarding', - 'get_onboarding_progress', - - # UI components - 'render_progress_indicator', - 'render_resume_message', - 'render_step_indicator', - 'render_navigation_buttons', - 'render_step_validation', - 'render_resume_options', - - # Validation - 'check_all_api_keys' -] - -# Version information -__version__ = "2.0.0" -__author__ = "ALwrity Team" -__description__ = "Comprehensive API key management and onboarding system for ALwrity" - -# Note: FastAPI endpoints have been moved to the backend/ directory -# for better separation of concerns and enterprise architecture. \ No newline at end of file diff --git a/ToBeMigrated/utils/api_key_manager/ai_research.py b/ToBeMigrated/utils/api_key_manager/ai_research.py deleted file mode 100644 index ec929e38..00000000 --- a/ToBeMigrated/utils/api_key_manager/ai_research.py +++ /dev/null @@ -1,42 +0,0 @@ -"""AI research functionality for API key manager.""" - -from loguru import logger -import asyncio -from typing import Dict, Any, Optional - -async def research_topic(topic: str, api_keys: Dict[str, str]) -> Dict[str, Any]: - """ - Research a topic using available AI services. - - Args: - topic (str): The topic to research - api_keys (Dict[str, str]): Dictionary of API keys for different services - - Returns: - Dict[str, Any]: Research results and metadata - """ - try: - logger.info(f"Starting research on topic: {topic}") - - # TODO: Implement actual research functionality using available API keys - # This is a placeholder implementation - results = { - "topic": topic, - "status": "success", - "data": { - "summary": f"Research summary for {topic}", - "key_points": ["Point 1", "Point 2", "Point 3"], - "sources": ["Source 1", "Source 2"] - } - } - - logger.info("Research completed successfully") - return results - - except Exception as e: - logger.error(f"Error during research: {str(e)}") - return { - "topic": topic, - "status": "error", - "error": str(e) - } \ No newline at end of file diff --git a/ToBeMigrated/utils/api_key_manager/components/README.md b/ToBeMigrated/utils/api_key_manager/components/README.md deleted file mode 100644 index ce3dac14..00000000 --- a/ToBeMigrated/utils/api_key_manager/components/README.md +++ /dev/null @@ -1,178 +0,0 @@ -# ALwrity Setup Components Guide - -## Overview - -The ALwrity Setup Components are the building blocks that guide you through setting up your content creation environment. Each component is designed to help you configure specific aspects of ALwrity for optimal content creation. - -## Core Components - -### 1. Website Setup (`website_setup.py`) -**Purpose**: Configure your website's basic information and analyze its current state - -**Features**: -- **URL Configuration**: Set up your website's URL -- **Analysis Options**: - - Basic Analysis: Quick overview of your website - - Full Analysis with SEO: Comprehensive website and SEO analysis -- **Analysis Results**: - - Basic Metrics: Status, content type, title, meta description - - Content Analysis: Word count, headings, images, links - - SEO Analysis: SEO score, meta tags, content quality - - Technical SEO: Mobile friendliness, page speed, technical issues - - Strategy Recommendations: Actionable improvements - -### 2. AI Research Setup (`ai_research_setup.py`) -**Purpose**: Configure AI-powered research tools for content creation - -**Features**: -- **Traditional Search**: - - SerpAPI integration for real-time search results - - Access to structured data and knowledge graphs - - News articles and related questions - -- **AI Deep Research**: - - Tavily AI for semantic understanding - - Metaphor/Exa for neural search capabilities - - Advanced research features - -### 3. AI Providers (`ai_providers.py`) -**Purpose**: Set up your preferred AI content generation services - -**Supported Providers**: -- **OpenAI (GPT models)** - - Advanced language models - - Creative content generation - - Context-aware responses - -- **Google (Gemini Pro)** - - Balanced content creation - - Factual accuracy - - Multilingual support - -- **Anthropic (Claude)** - - Professional writing - - Detailed analysis - - Ethical considerations - -- **DeepSeek** - - Technical content - - Specialized knowledge - - Efficient processing - -### 4. Personalization Setup (`personalization_setup.py`) -**Purpose**: Customize your content creation experience - -**Features**: -- **Writing Style**: - - Tone preferences - - Voice settings - - Content structure - -- **Brand Configuration**: - - Brand voice - - Style guidelines - - Content templates - -### 5. ALwrity Integrations (`alwrity_integrations.py`) -**Purpose**: Connect additional tools and services - -**Features**: -- **Third-party Services**: - - Analytics integration - - Social media tools - - Content management systems - -- **Workflow Automation**: - - Publishing tools - - Content scheduling - - Distribution channels - -### 6. Final Setup (`final_setup.py`) -**Purpose**: Complete and verify your configuration - -**Features**: -- **Configuration Review**: - - Settings verification - - Connection testing - - Setup completion - -- **Validation**: - - API key verification - - Service connectivity - - System readiness - -## Base Components - -### 1. Navigation (`base.py`) -**Purpose**: Provide consistent navigation throughout the setup process - -**Features**: -- Step indicators -- Navigation buttons -- Progress tracking -- Back/forward controls - -## How to Use the Components - -### 1. Starting the Setup -1. Launch ALwrity -2. Navigate to the Setup section -3. Follow the guided wizard process - -### 2. Component Navigation -- Use the step indicator to track progress -- Navigate between components using buttons -- Save progress automatically -- Return to previous steps if needed - -### 3. Configuration Process -1. **Enter Information**: Fill in required details -2. **Verify Settings**: Review your inputs -3. **Test Connections**: Ensure everything works -4. **Complete Setup**: Finalize your configuration - -## Best Practices - -### 1. Before Setup -- Gather all necessary API keys -- Review provider documentation -- Plan your configuration -- Backup existing settings - -### 2. During Setup -- Follow the wizard steps -- Verify each configuration -- Test connections -- Save progress regularly - -### 3. After Setup -- Review all settings -- Test functionality -- Document configurations -- Monitor usage - -## Troubleshooting - -### 1. Common Issues -- Invalid API keys -- Connection problems -- Configuration errors -- Setup interruptions - -### 2. Solutions -- Key verification -- Connection testing -- Error logging -- Support resources - -## Need Help? - -If you encounter any issues during setup: -1. Check the error messages -2. Review the documentation -3. Verify your API keys -4. Contact ALwrity support - ---- - -*Note: Each component is designed to help you set up a specific aspect of ALwrity. Follow the setup wizard in order to ensure all components are properly configured for optimal content creation.* \ No newline at end of file diff --git a/ToBeMigrated/utils/api_key_manager/components/__init__.py b/ToBeMigrated/utils/api_key_manager/components/__init__.py deleted file mode 100644 index 15a369fa..00000000 --- a/ToBeMigrated/utils/api_key_manager/components/__init__.py +++ /dev/null @@ -1,22 +0,0 @@ -"""API key manager components package.""" - -from .ai_research_setup import render_ai_research_setup -from .ai_research import render_ai_research -from .ai_providers import render_ai_providers -from .final_setup import render_final_setup -from .personalization_setup import render_personalization_setup -from .alwrity_integrations import render_alwrity_integrations -from .base import render_navigation_buttons, render_step_indicator -from .website_setup import render_website_setup - -__all__ = [ - 'render_ai_research_setup', - 'render_ai_research', - 'render_ai_providers', - 'render_final_setup', - 'render_personalization_setup', - 'render_alwrity_integrations', - 'render_navigation_buttons', - 'render_step_indicator', - 'render_website_setup' -] \ No newline at end of file diff --git a/ToBeMigrated/utils/api_key_manager/components/ai_research.py b/ToBeMigrated/utils/api_key_manager/components/ai_research.py deleted file mode 100644 index 09e6c5ac..00000000 --- a/ToBeMigrated/utils/api_key_manager/components/ai_research.py +++ /dev/null @@ -1,137 +0,0 @@ -"""AI Research setup component.""" - -import streamlit as st -from typing import Dict, Any -from loguru import logger -from ..manager import APIKeyManager -from .base import render_navigation_buttons, render_step_indicator - -def render_ai_research(api_key_manager: APIKeyManager) -> Dict[str, Any]: - """Render the AI Research setup step.""" - try: - st.markdown(""" -
-

๐Ÿ” AI Research Configuration

-

Configure your research preferences and provide user information

-
- """, unsafe_allow_html=True) - - # Create tabs for different sections - tabs = st.tabs(["User Information", "Research Preferences"]) - - changes_made = False - has_valid_info = False - validation_message = "" - - with tabs[0]: - st.markdown("### User Information") - st.markdown("Please provide your details for personalized research experience") - - # User Information Card - with st.container(): - st.markdown(""" - - """, unsafe_allow_html=True) - - # User Input Fields with Streamlit Components - full_name = st.text_input("Full Name", key="full_name", - help="Enter your full name as you'd like it to appear") - - email = st.text_input("Email Address", key="email", - help="Enter your business email address") - - company = st.text_input("Company/Organization", key="company", - help="Enter your company or organization name") - - role = st.selectbox("Role", - ["Content Creator", "Marketing Manager", "Business Owner", "Other"], - help="Select your primary role") - - with tabs[1]: - st.markdown("### Research Preferences") - st.markdown("Configure how AI assists with your research") - - # Research Preferences Card - with st.container(): - st.markdown(""" -
-
-
๐ŸŽฏ
-
Research Settings
-
-
- """, unsafe_allow_html=True) - - # Research Preferences Settings - research_depth = st.select_slider( - "Research Depth", - options=["Basic", "Standard", "Deep", "Comprehensive"], - value="Standard", - help="Choose how detailed you want the AI research to be" - ) - - st.markdown("#### Content Types") - content_types = st.multiselect( - "Select content types to focus on", - ["Blog Posts", "Social Media", "Technical Articles", "News", "Academic Papers"], - default=["Blog Posts", "Social Media"], - help="Choose what types of content you want to research" - ) - - auto_research = st.toggle( - "Enable Automated Research", - help="Automatically start research when content topics are added" - ) - - # Validate inputs - if all([full_name, email, company]): - changes_made = True - has_valid_info = True - validation_message = "โœ… User information completed successfully" - else: - validation_message = "โš ๏ธ Please fill in all required fields to continue" - - # Display validation message - if validation_message: - if "โœ…" in validation_message: - st.success(validation_message) - else: - st.warning(validation_message) - - # Navigation buttons - if render_navigation_buttons(3, 6, changes_made): - if has_valid_info: - # Store user information in session state - st.session_state['user_info'] = { - 'full_name': full_name, - 'email': email, - 'company': company, - 'role': role, - 'research_preferences': { - 'depth': research_depth, - 'content_types': content_types, - 'auto_research': auto_research - } - } - - # Update progress and move to next step - st.session_state['current_step'] = 4 - st.rerun() - else: - st.error("Please complete all required fields to continue") - - return {"current_step": 3, "changes_made": changes_made} - - except Exception as e: - error_msg = f"Error in AI research setup: {str(e)}" - logger.error(f"[render_ai_research] {error_msg}") - st.error(error_msg) - return {"current_step": 3, "error": error_msg} \ No newline at end of file diff --git a/ToBeMigrated/utils/api_key_manager/components/personalization.py b/ToBeMigrated/utils/api_key_manager/components/personalization.py deleted file mode 100644 index 7d97dba9..00000000 --- a/ToBeMigrated/utils/api_key_manager/components/personalization.py +++ /dev/null @@ -1,188 +0,0 @@ -"""Personalization setup component.""" - -import streamlit as st -from typing import Dict, Any -from loguru import logger -from ..manager import APIKeyManager -from .base import render_navigation_buttons, render_step_indicator - -def render_personalization(api_key_manager: APIKeyManager) -> Dict[str, Any]: - """Render the personalization setup step.""" - try: - st.markdown(""" -
-

๐ŸŽจ Personalization Settings

-

Customize your content generation experience

-
- """, unsafe_allow_html=True) - - # Create tabs for different sections - tabs = st.tabs(["Content Style", "Brand Voice", "Advanced Settings"]) - - changes_made = False - has_valid_settings = False - validation_message = "" - - with tabs[0]: - st.markdown("### Content Style") - st.markdown("Define your preferred content style and tone") - - # Content Style Card - with st.container(): - st.markdown(""" -
-
-
โœจ
-
Writing Style
-
-
-

Choose how you want your content to be written.

-
-
- """, unsafe_allow_html=True) - - # Style Settings - writing_style = st.selectbox( - "Writing Style", - ["Professional", "Casual", "Technical", "Conversational", "Academic"], - help="Select your preferred writing style" - ) - - tone = st.select_slider( - "Content Tone", - options=["Formal", "Semi-Formal", "Neutral", "Friendly", "Humorous"], - value="Neutral", - help="Choose the tone for your content" - ) - - content_length = st.select_slider( - "Content Length", - options=["Concise", "Standard", "Detailed", "Comprehensive"], - value="Standard", - help="Select your preferred content length" - ) - - with tabs[1]: - st.markdown("### Brand Voice") - st.markdown("Configure your brand's unique voice and personality") - - # Brand Voice Card - with st.container(): - st.markdown(""" -
-
-
๐ŸŽฏ
-
Brand Identity
-
-
-

Define your brand's personality and voice.

-
-
- """, unsafe_allow_html=True) - - # Brand Settings - brand_personality = st.multiselect( - "Brand Personality Traits", - ["Professional", "Innovative", "Friendly", "Trustworthy", "Creative", "Expert"], - default=["Professional", "Trustworthy"], - help="Select traits that best describe your brand" - ) - - brand_voice = st.text_area( - "Brand Voice Description", - help="Describe how your brand should sound in content" - ) - - keywords = st.text_input( - "Brand Keywords", - help="Enter key terms that should be used in your content" - ) - - with tabs[2]: - st.markdown("### Advanced Settings") - st.markdown("Fine-tune your content generation preferences") - - # Advanced Settings Card - with st.container(): - st.markdown(""" -
-
-
โš™๏ธ
-
Advanced Options
-
-
-

Configure advanced content generation settings.

-
-
- """, unsafe_allow_html=True) - - # Advanced Settings - seo_optimization = st.toggle( - "Enable SEO Optimization", - help="Automatically optimize content for search engines" - ) - - readability_level = st.select_slider( - "Readability Level", - options=["Simple", "Standard", "Advanced", "Expert"], - value="Standard", - help="Choose the complexity level of your content" - ) - - content_structure = st.multiselect( - "Content Structure", - ["Introduction", "Key Points", "Examples", "Conclusion", "Call-to-Action"], - default=["Introduction", "Key Points", "Conclusion"], - help="Select required content sections" - ) - - # Validate settings - if all([writing_style, tone, content_length, brand_personality]): - changes_made = True - has_valid_settings = True - validation_message = "โœ… Personalization settings completed successfully" - else: - validation_message = "โš ๏ธ Please complete all required settings to continue" - - # Display validation message - if validation_message: - if "โœ…" in validation_message: - st.success(validation_message) - else: - st.warning(validation_message) - - # Navigation buttons - if render_navigation_buttons(4, 6, changes_made): - if has_valid_settings: - # Store personalization settings in session state - st.session_state['personalization'] = { - 'content_style': { - 'writing_style': writing_style, - 'tone': tone, - 'content_length': content_length - }, - 'brand_voice': { - 'personality': brand_personality, - 'voice_description': brand_voice, - 'keywords': keywords - }, - 'advanced_settings': { - 'seo_optimization': seo_optimization, - 'readability_level': readability_level, - 'content_structure': content_structure - } - } - - # Update progress and move to next step - st.session_state['current_step'] = 5 - st.rerun() - else: - st.error("Please complete all required settings to continue") - - return {"current_step": 4, "changes_made": changes_made} - - except Exception as e: - error_msg = f"Error in personalization setup: {str(e)}" - logger.error(f"[render_personalization] {error_msg}") - st.error(error_msg) - return {"current_step": 4, "error": error_msg} \ No newline at end of file diff --git a/ToBeMigrated/utils/content_generators.py b/ToBeMigrated/utils/content_generators.py deleted file mode 100644 index 95c336d2..00000000 --- a/ToBeMigrated/utils/content_generators.py +++ /dev/null @@ -1,79 +0,0 @@ -import streamlit as st - -from lib.alwrity_ui.similar_analysis import competitor_analysis -from lib.alwrity_ui.keyword_web_researcher import do_web_research - - -def content_planning_tools(): - # A custom CSS for compact layout - st.markdown(""" - - """, unsafe_allow_html=True) - - # Make description more compact using a smaller font - st.markdown(""" -
- Alwrity content Ideation & Planning: Provide few keywords to do comprehensive web research. - Provide few keywords to get Google, Neural, pytrends analysis. Know keywords, blog titles to target. - Generate months long content calendar around given keywords. -
- """, unsafe_allow_html=True) - - # Create tabs with reduced spacing - tab_keywords, tab_competitor, tab_calendar = st.tabs([ - "๐Ÿ” Keywords Researcher", - "๐Ÿ“Š Competitor Analysis", - "๐Ÿ“… Content Calendar Ideator" - ]) - - # Keywords Researcher tab - with tab_keywords: - do_web_research() - - # Competitor Analysis tab - with tab_competitor: - competitor_analysis() - - # Content Calendar Ideator tab - with tab_calendar: - st.info("๐Ÿšง **Content Calendar & Planning Dashboard**") - st.markdown(""" -
-

๐Ÿ“… Content Calendar & Planning Dashboard

-

The Content Calendar Dashboard provides:

-
    -
  • AI-powered content planning and generation
  • -
  • Multi-platform content scheduling
  • -
  • Content optimization tools
  • -
  • A/B testing capabilities
  • -
  • Performance analytics
  • -
-
- """, unsafe_allow_html=True) - - # Initialize and render the dashboard directly - from lib.ai_seo_tools.content_calendar.ui.dashboard import ContentCalendarDashboard - dashboard = ContentCalendarDashboard() - dashboard.render() diff --git a/ToBeMigrated/utils/take_url_screenshot.py b/ToBeMigrated/utils/take_url_screenshot.py deleted file mode 100644 index 632dd007..00000000 --- a/ToBeMigrated/utils/take_url_screenshot.py +++ /dev/null @@ -1,113 +0,0 @@ -import os -import sys -import datetime -import subprocess - -from time import sleep -from selenium import webdriver -from selenium.webdriver.common.by import By -from selenium.webdriver.support.ui import WebDriverWait -from selenium.webdriver.support import expected_conditions as EC -from PIL import Image - -from selenium import webdriver -from PIL import Image -import shutil -from screenshotone import Client, TakeOptions -from pathlib import Path - -from dotenv import load_dotenv -load_dotenv(Path('../.env')) - -from loguru import logger -logger.remove() -logger.add(sys.stdout, - colorize=True, - format="{level}|{file}:{line}:{function}| {message}" - ) - - -def screenshot_api(url, generated_image_filepath): - """ Use screenshotone API to take company webpage screenshots """ - try: - # create API client - client = Client(os.getenv('SCREENSHOTONE_ACCESS_KEY'), os.getenv('SCREENSHOTONE_SECRET_KEY')) - - # set up options - options = (TakeOptions.url(url) - .format("png") - .viewport_width(1024) - .viewport_height(768) - .block_cookie_banners(True) - .block_chats(True)) - - # generate the screenshot URL and share it with a user - #url = client.generate_take_url(options) - # or render a screenshot and download the image as stream - image = client.take(options) - - # store the screenshot the example.png file - with open(generated_image_filepath, 'wb', encoding="utf-8") as result_file: - shutil.copyfileobj(image, result_file) - - # Display the screenshot using Image.show - image = Image.open(generated_image_filepath) - image.show() - # Wait for 2 seconds (adjust the delay as needed) - sleep(2) - # Close the image window - image.close() - - except Exception as err: - print(f"Failed in screenshotone api: {err}") - generated_image_filepath = take_screenshot(url, generated_image_filepath) - - return generated_image_filepath - - -def take_screenshot(url, generated_image_filepath): - # Create a webdriver instance in headless mode - options = webdriver.ChromeOptions() - options.add_argument("--headless") - driver = webdriver.Chrome(options=options) - logger.debug(f"Taking screenshot of url: {url}") - - try: - # Navigate to the given url - driver.get(url) - - # Optionally, increase the delay to ensure all content is loaded - sleep(2) - - # Explicitly wait for the page to load (adjust timeout as needed) - WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body"))) - - # Set a larger window size - driver.set_window_size(1200, 800) - - # Take a screenshot of the webpage - screenshot = driver.get_screenshot_as_png() - - # Save the screenshot to a file - with open(generated_image_filepath, "wb", encoding="utf-8") as f: - f.write(screenshot) - - # Display the screenshot using Image.show - image = Image.open(generated_image_filepath) - image.show() - # Wait for 2 seconds (adjust the delay as needed) - sleep(2) - - # Close the image window using subprocess (platform-dependent) - subprocess.run(["pkill", "-f", "display"]) # Adjust based on your platform and viewer - - # If using macOS, you can use the following: - # subprocess.run(["osascript", "-e", 'tell application "Preview" to close every window']) - # If using Windows, you can use the following: - # subprocess.run(["taskkill", "/F", "/IM", "Microsoft.Photos.exe"]) - - logger.debug(f"Screenshot successfully stored at: {generated_image_filepath}") - return generated_image_filepath - finally: - # Close the webdriver instance - driver.quit() diff --git a/ToBeMigrated/utils/website_analyzer/README.md b/ToBeMigrated/utils/website_analyzer/README.md deleted file mode 100644 index 5ad4568b..00000000 --- a/ToBeMigrated/utils/website_analyzer/README.md +++ /dev/null @@ -1,181 +0,0 @@ -# Website Analyzer Module - -A comprehensive website analysis toolkit that provides detailed insights into website performance, SEO metrics, and content quality. This module combines traditional web analysis techniques with AI-powered content evaluation to deliver actionable recommendations. - -## Features - -### 1. Comprehensive Website Analysis -- Basic website information extraction -- SSL/TLS certificate validation -- DNS record analysis -- WHOIS information retrieval -- Content analysis and structure evaluation -- Performance metrics assessment - -### 2. Advanced SEO Analysis -- Meta tag optimization analysis -- Content quality evaluation -- Keyword density analysis -- Readability scoring -- Heading structure analysis -- AI-powered content recommendations - -### 3. Technical Infrastructure -- Asynchronous web crawling -- Multi-threaded analysis -- Robust error handling -- Comprehensive logging -- Type-safe data models - -## Module Structure - -### 1. `analyzer.py` -The main analysis engine that provides comprehensive website analysis. - -#### Key Components: -- `WebsiteAnalyzer` class - - URL validation - - Basic website information extraction - - SSL/TLS certificate checking - - DNS record analysis - - WHOIS information retrieval - - Content analysis - - Performance metrics assessment - -#### Features: -- Concurrent analysis using ThreadPoolExecutor -- Robust error handling and logging -- User-agent simulation for reliable scraping -- Timeout handling for requests -- Comprehensive result formatting - -### 2. `seo_analyzer.py` -Specialized SEO analysis module with AI integration. - -#### Key Components: -- `extract_content()`: Fetches and parses webpage content -- `analyze_meta_tags()`: Evaluates meta tags and SEO elements -- `analyze_content_with_ai()`: AI-powered content analysis -- `analyze_seo()`: Main SEO analysis function - -#### Features: -- Meta tag optimization analysis -- Content quality scoring -- Keyword density analysis -- Readability evaluation -- AI-powered recommendations -- Weighted scoring system - -### 3. `models.py` -Data models for structured analysis results. - -#### Key Components: -- `SEORecommendation`: Individual SEO recommendations -- `MetaTagAnalysis`: Meta tag analysis results -- `ContentAnalysis`: Content analysis metrics -- `SEOAnalysisResult`: Complete analysis results - -#### Features: -- Type-safe data structures -- Clear data organization -- Easy serialization/deserialization -- Comprehensive documentation - -## Usage Examples - -### Basic Website Analysis -```python -from website_analyzer import analyze_website - -# Analyze a website -results = analyze_website("https://example.com") - -# Access analysis results -if results["success"]: - data = results["data"] - print(f"Domain: {data['domain']}") - print(f"SSL Info: {data['analysis']['ssl_info']}") - print(f"Content Info: {data['analysis']['content_info']}") -``` - -### SEO Analysis -```python -from website_analyzer.seo_analyzer import analyze_seo - -# Perform SEO analysis -seo_results = analyze_seo("https://example.com", "your-openai-api-key") - -# Access SEO results -if seo_results.success: - print(f"Overall Score: {seo_results.overall_score}") - print(f"Meta Tags: {seo_results.meta_tags}") - print(f"Content Analysis: {seo_results.content}") - print(f"Recommendations: {seo_results.recommendations}") -``` - -## Dependencies - -- `requests`: HTTP requests -- `beautifulsoup4`: HTML parsing -- `python-whois`: WHOIS information -- `dnspython`: DNS record analysis -- `openai`: AI-powered analysis -- `loguru`: Logging -- `typing`: Type hints -- `dataclasses`: Data models - -## Error Handling - -The module implements comprehensive error handling: -- URL validation -- Request timeouts -- Connection errors -- Parsing errors -- API errors -- DNS resolution errors -- SSL/TLS errors - -All errors are logged and returned in a structured format for easy handling. - -## Logging - -The module uses `loguru` for logging with the following features: -- File rotation (500 MB) -- 10-day retention -- Debug level logging -- Structured log format -- Both file and stdout output - -## Best Practices - -1. **API Key Management** - - Store API keys securely - - Use environment variables - - Implement rate limiting - -2. **Error Handling** - - Always check success status - - Handle errors gracefully - - Log errors appropriately - -3. **Performance** - - Use concurrent analysis - - Implement timeouts - - Cache results when possible - -4. **Rate Limiting** - - Respect website robots.txt - - Implement delays between requests - - Use appropriate user agents - -## Contributing - -1. Fork the repository -2. Create a feature branch -3. Commit your changes -4. Push to the branch -5. Create a Pull Request - -## License - -This module is part of the ALwrity project and is licensed under the MIT License. \ No newline at end of file diff --git a/ToBeMigrated/utils/website_analyzer/__init__.py b/ToBeMigrated/utils/website_analyzer/__init__.py deleted file mode 100644 index 8964a367..00000000 --- a/ToBeMigrated/utils/website_analyzer/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -"""Website analyzer module for AI-powered website analysis.""" - -from .analyzer import analyze_website, WebsiteAnalyzer -from .models import SEOAnalysisResult - -__all__ = ['analyze_website', 'WebsiteAnalyzer', 'SEOAnalysisResult'] \ No newline at end of file diff --git a/ToBeMigrated/utils/website_analyzer/analyzer.py b/ToBeMigrated/utils/website_analyzer/analyzer.py deleted file mode 100644 index d35976e8..00000000 --- a/ToBeMigrated/utils/website_analyzer/analyzer.py +++ /dev/null @@ -1,697 +0,0 @@ -"""Website and SEO analysis module.""" - -import asyncio -from typing import Dict, List, Optional, Tuple -from bs4 import BeautifulSoup -from urllib.parse import urljoin, urlparse -import streamlit as st -import re -from loguru import logger -from ...web_crawlers.async_web_crawler import AsyncWebCrawlerService -from ...gpt_providers.text_generation.main_text_generation import llm_text_gen -import os -import sys -import logging -import json -from datetime import datetime -import requests -import ssl -import socket -import whois -import dns.resolver -from requests.exceptions import RequestException -from concurrent.futures import ThreadPoolExecutor -from .models import ( - SEOAnalysisResult, - MetaTagAnalysis, - ContentAnalysis, - SEORecommendation -) - -# Configure logging -logging.basicConfig( - level=logging.INFO, - format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', - handlers=[ - logging.StreamHandler(), - logging.FileHandler('logs/website_analyzer.log') - ] -) - -# Create a logger for the website analyzer -logger = logging.getLogger(__name__) - -# Create a separate logger for scraping operations -scraping_logger = logging.getLogger('website_analyzer.scraping') -scraping_logger.setLevel(logging.WARNING) - -class WebsiteAnalyzer: - def __init__(self): - self.session = requests.Session() - self.session.headers.update({ - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' - }) - logger.info("WebsiteAnalyzer initialized") - - def analyze_website(self, url: str) -> Dict: - """ - Perform comprehensive analysis of a website. - - Args: - url (str): The URL to analyze - - Returns: - Dict: Analysis results including various metrics and checks - """ - logger.info(f"Starting analysis for URL: {url}") - try: - # Validate URL - if not self._validate_url(url): - error_msg = f"Invalid URL format: {url}" - logger.error(error_msg) - return { - "success": False, - "error": error_msg, - "error_details": {"stage": "url_validation"} - } - - # Basic URL parsing - parsed_url = urlparse(url) - domain = parsed_url.netloc - - # Initialize results dictionary - results = { - "url": url, - "domain": domain, - "timestamp": datetime.now().isoformat(), - "analysis": {} - } - - # Perform various analyses - with ThreadPoolExecutor(max_workers=4) as executor: - logger.info("Starting parallel analysis tasks") - - # Basic website info - logger.info("Starting basic info analysis") - basic_info = executor.submit(self._get_basic_info, url).result() - if "error" in basic_info: - error_msg = f"Basic info analysis failed: {basic_info['error']}" - logger.error(error_msg) - return { - "success": False, - "error": error_msg, - "error_details": { - "stage": "basic_info", - "details": basic_info.get("error_details", {}) - } - } - results["analysis"]["basic_info"] = basic_info - - # SSL/TLS info - logger.info("Starting SSL analysis") - ssl_info = executor.submit(self._check_ssl, domain).result() - results["analysis"]["ssl_info"] = ssl_info - - # DNS info - logger.info("Starting DNS analysis") - dns_info = executor.submit(self._check_dns, domain).result() - results["analysis"]["dns_info"] = dns_info - - # WHOIS info - logger.info("Starting WHOIS analysis") - whois_info = executor.submit(self._get_whois_info, domain).result() - results["analysis"]["whois_info"] = whois_info - - # Content analysis - logger.info("Starting content analysis") - content_info = executor.submit(self._analyze_content, url).result() - if "error" in content_info: - error_msg = f"Content analysis failed: {content_info['error']}" - logger.error(error_msg) - return { - "success": False, - "error": error_msg, - "error_details": { - "stage": "content_analysis", - "details": content_info.get("error_details", {}) - } - } - results["analysis"]["content_info"] = content_info - - # Performance metrics - logger.info("Starting performance analysis") - performance = executor.submit(self._check_performance, url).result() - if "error" in performance: - error_msg = f"Performance analysis failed: {performance['error']}" - logger.error(error_msg) - return { - "success": False, - "error": error_msg, - "error_details": { - "stage": "performance_analysis", - "details": performance.get("error_details", {}) - } - } - results["analysis"]["performance"] = performance - - # SEO analysis - logger.info("Starting SEO analysis") - seo_analysis = executor.submit(self._analyze_seo, url).result() - if "error" in seo_analysis: - error_msg = f"SEO analysis failed: {seo_analysis['error']}" - logger.error(error_msg) - return { - "success": False, - "error": error_msg, - "error_details": { - "stage": "seo_analysis", - "details": seo_analysis.get("error_details", {}) - } - } - results["analysis"]["seo_info"] = seo_analysis - - logger.info(f"Analysis completed successfully for {url}") - logger.debug(f"Final results: {json.dumps(results, indent=2)}") - return { - "success": True, - "data": results - } - - except Exception as e: - error_msg = f"Error during website analysis: {str(e)}" - logger.error(error_msg, exc_info=True) - return { - "success": False, - "error": error_msg, - "error_details": { - "type": type(e).__name__, - "traceback": str(e.__traceback__) - } - } - - def _validate_url(self, url: str) -> bool: - """Validate URL format.""" - try: - result = urlparse(url) - return all([result.scheme, result.netloc]) - except Exception as e: - logger.error(f"URL validation error: {str(e)}") - return False - - def _get_basic_info(self, url: str) -> Dict: - """Get basic website information.""" - scraping_logger.debug(f"Getting basic info for {url}") - try: - response = self.session.get(url, timeout=10) - response.raise_for_status() - - soup = BeautifulSoup(response.text, 'html.parser') - - return { - "status_code": response.status_code, - "content_type": response.headers.get('content-type', ''), - "title": soup.title.string if soup.title else '', - "meta_description": self._get_meta_description(soup), - "headers": dict(response.headers), - "robots_txt": self._get_robots_txt(url), - "sitemap": self._get_sitemap(url) - } - except requests.exceptions.RequestException as e: - error_msg = f"Request error in basic info: {str(e)}" - logger.error(error_msg, exc_info=True) - return { - "error": error_msg, - "error_details": { - "type": "RequestException", - "status_code": getattr(e.response, 'status_code', None) if hasattr(e, 'response') else None, - "url": url - } - } - except Exception as e: - error_msg = f"Error getting basic info: {str(e)}" - logger.error(error_msg, exc_info=True) - return { - "error": error_msg, - "error_details": { - "type": type(e).__name__, - "traceback": str(e.__traceback__) - } - } - - def _check_ssl(self, domain: str) -> Dict: - """Check SSL/TLS certificate information.""" - scraping_logger.debug(f"Checking SSL for {domain}") - try: - context = ssl.create_default_context() - with socket.create_connection((domain, 443)) as sock: - with context.wrap_socket(sock, server_hostname=domain) as ssock: - cert = ssock.getpeercert() - return { - "has_ssl": True, - "issuer": dict(x[0] for x in cert['issuer']), - "expiry": datetime.strptime(cert['notAfter'], '%b %d %H:%M:%S %Y %Z').isoformat(), - "version": cert['version'], - "subject": dict(x[0] for x in cert['subject']) - } - except Exception as e: - logger.error(f"SSL check error: {str(e)}", exc_info=True) - return {"has_ssl": False, "error": str(e)} - - def _check_dns(self, domain: str) -> Dict: - """Check DNS records.""" - scraping_logger.debug(f"Checking DNS for {domain}") - try: - records = {} - for record_type in ['A', 'AAAA', 'MX', 'NS', 'TXT']: - try: - answers = dns.resolver.resolve(domain, record_type) - records[record_type] = [str(rdata) for rdata in answers] - except dns.resolver.NoAnswer: - records[record_type] = [] - except Exception as e: - scraping_logger.warning(f"Error resolving {record_type} record: {str(e)}") - records[record_type] = [] - return records - except Exception as e: - logger.error(f"DNS check error: {str(e)}", exc_info=True) - return {"error": str(e)} - - def _get_whois_info(self, domain: str) -> Dict: - """Get WHOIS information for a domain.""" - scraping_logger.debug(f"Getting WHOIS info for {domain}") - try: - w = whois.whois(domain) - - def format_date(date_value): - if isinstance(date_value, list): - return date_value[0].isoformat() if date_value else 'Unknown' - return date_value.isoformat() if date_value else 'Unknown' - - return { - 'registrar': w.registrar if hasattr(w, 'registrar') else 'Unknown', - 'creation_date': format_date(w.creation_date), - 'expiration_date': format_date(w.expiration_date), - 'updated_date': format_date(w.updated_date) if hasattr(w, 'updated_date') else 'Unknown', - 'name_servers': w.name_servers if hasattr(w, 'name_servers') else [], - 'domain_name': w.domain_name if hasattr(w, 'domain_name') else domain, - 'text': w.text if hasattr(w, 'text') else '' - } - except Exception as e: - logger.error(f"WHOIS check error: {str(e)}") - return { - 'registrar': 'Unknown', - 'creation_date': 'Unknown', - 'expiration_date': 'Unknown', - 'updated_date': 'Unknown', - 'name_servers': [], - 'domain_name': domain, - 'text': '' - } - - def _analyze_content(self, url: str) -> Dict: - """Analyze website content.""" - scraping_logger.debug(f"Analyzing content for {url}") - try: - response = self.session.get(url, timeout=10) - response.raise_for_status() - soup = BeautifulSoup(response.text, 'html.parser') - - # Get all text content - text_content = soup.get_text() - - # Count words - words = re.findall(r'\w+', text_content.lower()) - word_count = len(words) - - # Count headings - headings = soup.find_all(['h1', 'h2', 'h3', 'h4', 'h5', 'h6']) - heading_counts = { - 'h1': len(soup.find_all('h1')), - 'h2': len(soup.find_all('h2')), - 'h3': len(soup.find_all('h3')), - 'h4': len(soup.find_all('h4')), - 'h5': len(soup.find_all('h5')), - 'h6': len(soup.find_all('h6')) - } - - # Count images - images = soup.find_all('img') - - # Count links - links = soup.find_all('a') - - # Count paragraphs - paragraphs = soup.find_all('p') - - return { - "word_count": word_count, - "heading_count": len(headings), - "heading_structure": heading_counts, - "image_count": len(images), - "link_count": len(links), - "paragraph_count": len(paragraphs), - "has_meta_description": bool(self._get_meta_description(soup)), - "has_robots_txt": bool(self._get_robots_txt(url)), - "has_sitemap": bool(self._get_sitemap(url)) - } - except requests.exceptions.RequestException as e: - logger.error(f"Request error in content analysis: {str(e)}", exc_info=True) - return { - "word_count": 0, - "heading_count": 0, - "heading_structure": {'h1': 0, 'h2': 0, 'h3': 0, 'h4': 0, 'h5': 0, 'h6': 0}, - "image_count": 0, - "link_count": 0, - "paragraph_count": 0, - "has_meta_description": False, - "has_robots_txt": False, - "has_sitemap": False, - "error": str(e) - } - except Exception as e: - logger.error(f"Content analysis error: {str(e)}", exc_info=True) - return { - "word_count": 0, - "heading_count": 0, - "heading_structure": {'h1': 0, 'h2': 0, 'h3': 0, 'h4': 0, 'h5': 0, 'h6': 0}, - "image_count": 0, - "link_count": 0, - "paragraph_count": 0, - "has_meta_description": False, - "has_robots_txt": False, - "has_sitemap": False, - "error": str(e) - } - - def _check_performance(self, url: str) -> Dict: - """Check website performance metrics.""" - scraping_logger.debug(f"Checking performance for {url}") - try: - start_time = datetime.now() - response = self.session.get(url, timeout=10) - end_time = datetime.now() - - load_time = (end_time - start_time).total_seconds() - - return { - "load_time": load_time, - "status_code": response.status_code, - "content_length": len(response.content), - "headers": dict(response.headers), - "response_time": response.elapsed.total_seconds() - } - except requests.exceptions.RequestException as e: - logger.error(f"Request error in performance check: {str(e)}", exc_info=True) - return { - "load_time": 0, - "status_code": 0, - "content_length": 0, - "headers": {}, - "response_time": 0, - "error": str(e) - } - except Exception as e: - logger.error(f"Performance check error: {str(e)}", exc_info=True) - return { - "load_time": 0, - "status_code": 0, - "content_length": 0, - "headers": {}, - "response_time": 0, - "error": str(e) - } - - def _get_meta_description(self, soup: BeautifulSoup) -> Optional[str]: - """Extract meta description from HTML.""" - meta_desc = soup.find('meta', attrs={'name': 'description'}) - return meta_desc.get('content') if meta_desc else None - - def _get_robots_txt(self, url: str) -> Optional[str]: - """Get robots.txt content.""" - try: - robots_url = f"{url.rstrip('/')}/robots.txt" - response = self.session.get(robots_url, timeout=5) - if response.status_code == 200: - return response.text - except Exception as e: - scraping_logger.warning(f"Error fetching robots.txt: {str(e)}") - return None - - def _get_sitemap(self, url: str) -> Optional[str]: - """Get sitemap.xml content.""" - try: - sitemap_url = f"{url.rstrip('/')}/sitemap.xml" - response = self.session.get(sitemap_url, timeout=5) - if response.status_code == 200: - return response.text - except Exception as e: - scraping_logger.warning(f"Error fetching sitemap.xml: {str(e)}") - return None - - def _analyze_seo(self, url: str) -> Dict: - """Analyze website SEO.""" - try: - # Extract content - content, soup, extract_errors = self._extract_content(url) - if not content or not soup: - return { - "error": "Failed to extract content", - "error_details": {"errors": extract_errors} - } - - # Analyze meta tags - meta_analysis = self._analyze_meta_tags(soup) - - # Analyze content with AI - content_analysis, recommendations = self._analyze_content_with_ai(content) - - # Calculate overall score - meta_score = sum([ - 1 if meta_analysis.title['status'] == 'good' else 0, - 1 if meta_analysis.description['status'] == 'good' else 0, - 1 if meta_analysis.keywords['status'] == 'good' else 0, - 1 if meta_analysis.has_robots else 0, - 1 if meta_analysis.has_sitemap else 0 - ]) * 20 # Scale to 100 - - overall_score = ( - meta_score * 0.3 + # 30% weight for meta tags - content_analysis.readability_score * 0.3 + # 30% weight for readability - content_analysis.content_quality_score * 0.4 # 40% weight for content quality - ) - - return { - "overall_score": overall_score, - "meta_tags": meta_analysis.__dict__, - "content": content_analysis.__dict__, - "recommendations": [rec.__dict__ for rec in recommendations] - } - - except Exception as e: - error_msg = f"Error in SEO analysis: {str(e)}" - logger.error(error_msg, exc_info=True) - return { - "error": error_msg, - "error_details": { - "type": type(e).__name__, - "traceback": str(e.__traceback__) - } - } - - def _extract_content(self, url: str) -> Tuple[Optional[str], Optional[BeautifulSoup], List[str]]: - """Extract content from URL.""" - errors = [] - try: - response = self.session.get(url, timeout=10) - response.raise_for_status() - soup = BeautifulSoup(response.text, 'html.parser') - return response.text, soup, errors - except requests.RequestException as e: - error_msg = f"Error fetching URL: {str(e)}" - logger.error(error_msg) - errors.append(error_msg) - return None, None, errors - - def _analyze_meta_tags(self, soup: BeautifulSoup) -> MetaTagAnalysis: - """Analyze meta tags using BeautifulSoup.""" - # Title analysis - title = soup.title.string if soup.title else "" - title_analysis = { - 'status': 'good' if title and 30 <= len(title) <= 60 else 'needs_improvement', - 'value': title, - 'recommendation': '' if title and 30 <= len(title) <= 60 else 'Title should be between 30-60 characters' - } - - # Meta description analysis - meta_desc = soup.find('meta', attrs={'name': 'description'}) - desc = meta_desc.get('content', '') if meta_desc else "" - desc_analysis = { - 'status': 'good' if desc and 120 <= len(desc) <= 160 else 'needs_improvement', - 'value': desc, - 'recommendation': '' if desc and 120 <= len(desc) <= 160 else 'Description should be between 120-160 characters' - } - - # Keywords analysis - meta_keywords = soup.find('meta', attrs={'name': 'keywords'}) - keywords = meta_keywords.get('content', '') if meta_keywords else "" - keywords_analysis = { - 'status': 'good' if keywords else 'needs_improvement', - 'value': keywords, - 'recommendation': '' if keywords else 'Add relevant keywords meta tag' - } - - return MetaTagAnalysis( - title=title_analysis, - description=desc_analysis, - keywords=keywords_analysis, - has_robots=bool(soup.find('meta', attrs={'name': 'robots'})), - has_sitemap=bool(soup.find('link', attrs={'rel': 'sitemap'})) - ) - - def _analyze_content_with_ai(self, content: str) -> Tuple[ContentAnalysis, List[SEORecommendation]]: - """Analyze content using AI.""" - try: - # Prepare prompt for content analysis - prompt = f"""Analyze the following webpage content for SEO and provide a structured analysis: - Content: {content[:4000]}... # Truncate to avoid token limits - - Provide analysis in the following format: - 1. Word count - 2. Heading structure analysis - 3. Keyword density for main topics - 4. Readability score (0-100) - 5. Content quality score (0-100) - 6. List of SEO recommendations with priority (high/medium/low), category, issue, recommendation, and impact - - Format the response as JSON.""" - - try: - # Get AI analysis using llm_text_gen - analysis = llm_text_gen( - prompt=prompt, - system_prompt="You are an SEO expert analyzing website content.", - response_format="json_object" - ) - - if not analysis: - logger.error("Empty response from AI analysis") - return self._get_fallback_analysis(content) - - # Create ContentAnalysis object - content_analysis = ContentAnalysis( - word_count=len(content.split()), - headings_structure=analysis.get('heading_structure', {}), - keyword_density=analysis.get('keyword_density', {}), - readability_score=analysis.get('readability_score', 0), - content_quality_score=analysis.get('content_quality_score', 0) - ) - - # Create recommendations - recommendations = [ - SEORecommendation( - priority=rec['priority'], - category=rec['category'], - issue=rec['issue'], - recommendation=rec['recommendation'], - impact=rec['impact'] - ) - for rec in analysis.get('recommendations', []) - ] - - return content_analysis, recommendations - - except Exception as e: - logger.error(f"Error in AI analysis: {str(e)}") - return self._get_fallback_analysis(content) - - except Exception as e: - logger.error(f"Error in AI analysis setup: {str(e)}") - return self._get_fallback_analysis(content) - - def _get_fallback_analysis(self, content: str) -> Tuple[ContentAnalysis, List[SEORecommendation]]: - """Provide fallback analysis when AI analysis is not available.""" - try: - # Basic content analysis - words = content.split() - word_count = len(words) - - # Simple readability score based on word count - readability_score = min(100, max(0, word_count / 10)) - - # Basic content quality score - content_quality_score = min(100, max(0, word_count / 20)) - - # Create basic recommendations - recommendations = [ - SEORecommendation( - priority="high", - category="content", - issue="AI analysis unavailable", - recommendation="Consider running the analysis again with a valid API key for more detailed insights", - impact="Limited analysis capabilities" - ) - ] - - return ContentAnalysis( - word_count=word_count, - headings_structure={}, - keyword_density={}, - readability_score=readability_score, - content_quality_score=content_quality_score - ), recommendations - - except Exception as e: - logger.error(f"Error in fallback analysis: {str(e)}") - return ContentAnalysis( - word_count=0, - headings_structure={}, - keyword_density={}, - readability_score=0, - content_quality_score=0 - ), [] - -def analyze_website(url: str) -> Dict: - """ - Analyze a website and return comprehensive results. - - Args: - url (str): The URL to analyze - - Returns: - Dict: Analysis results including various metrics and checks - """ - logger.info(f"Starting website analysis for URL: {url}") - try: - analyzer = WebsiteAnalyzer() - - results = analyzer.analyze_website(url) - - # Add success status to results - if "error" in results: - error_msg = f"Error in base analysis: {results['error']}" - logger.error(error_msg) - logger.error(f"Error details: {json.dumps(results.get('error_details', {}), indent=2)}") - return { - "success": False, - "error": error_msg, - "error_details": results.get("error_details", {}) - } - - # Add success status and wrap results - logger.info("Analysis completed successfully") - logger.debug(f"Analysis results: {json.dumps(results, indent=2)}") - return { - "success": True, - "data": results - } - except Exception as e: - error_msg = f"Error in analyze_website: {str(e)}" - logger.error(error_msg, exc_info=True) - return { - "success": False, - "error": error_msg, - "error_details": { - "type": type(e).__name__, - "traceback": str(e.__traceback__) - } - } \ No newline at end of file diff --git a/ToBeMigrated/utils/website_analyzer/content_gap_analyzer.py b/ToBeMigrated/utils/website_analyzer/content_gap_analyzer.py deleted file mode 100644 index ee0be28a..00000000 --- a/ToBeMigrated/utils/website_analyzer/content_gap_analyzer.py +++ /dev/null @@ -1,134 +0,0 @@ -from typing import Dict -import json - -class ContentGapAnalyzer: - def __init__(self, analyzer): - self.analyzer = analyzer - - def analyze(self, url: str) -> Dict: - """ - Analyze content gaps for a given URL. - - Args: - url (str): The URL to analyze - - Returns: - Dict: Analysis results including content gaps and recommendations - """ - try: - # Get base analysis - logger.info(f"Starting content gap analysis for URL: {url}") - base_analysis = self.analyzer.analyze_website(url) - - # Check for errors in base analysis - if not base_analysis.get("success", False): - error_msg = base_analysis.get("error", "Unknown error in website analysis") - error_details = base_analysis.get("error_details", {}) - logger.error(f"Base analysis failed: {error_msg}") - logger.error(f"Error details: {json.dumps(error_details, indent=2)}") - return { - "success": False, - "error": error_msg, - "error_details": error_details, - "stage": "base_analysis" - } - - # Extract required sections - analysis_data = base_analysis.get("data", {}).get("analysis", {}) - required_sections = ["content_info", "basic_info", "performance"] - missing_sections = [section for section in required_sections if section not in analysis_data] - - if missing_sections: - error_msg = f"Missing required analysis sections: {', '.join(missing_sections)}" - logger.error(error_msg) - logger.error(f"Available sections: {list(analysis_data.keys())}") - return { - "success": False, - "error": error_msg, - "error_details": { - "missing_sections": missing_sections, - "available_sections": list(analysis_data.keys()) - }, - "stage": "section_validation" - } - - # Extract content metrics - try: - content_info = analysis_data["content_info"] - basic_info = analysis_data["basic_info"] - performance = analysis_data["performance"] - except KeyError as e: - error_msg = f"Error extracting analysis section: {str(e)}" - logger.error(error_msg) - return { - "success": False, - "error": error_msg, - "error_details": { - "type": "KeyError", - "missing_key": str(e), - "available_keys": list(analysis_data.keys()) - }, - "stage": "data_extraction" - } - - # Analyze content gaps - try: - gaps = self._analyze_content_gaps(content_info, basic_info, performance) - except Exception as e: - error_msg = f"Error analyzing content gaps: {str(e)}" - logger.error(error_msg, exc_info=True) - return { - "success": False, - "error": error_msg, - "error_details": { - "type": type(e).__name__, - "traceback": str(e.__traceback__) - }, - "stage": "gap_analysis" - } - - # Generate recommendations - try: - recommendations = self._generate_recommendations(gaps) - except Exception as e: - error_msg = f"Error generating recommendations: {str(e)}" - logger.error(error_msg, exc_info=True) - return { - "success": False, - "error": error_msg, - "error_details": { - "type": type(e).__name__, - "traceback": str(e.__traceback__) - }, - "stage": "recommendation_generation" - } - - return { - "success": True, - "data": { - "content_gaps": gaps, - "recommendations": recommendations, - "metrics": { - "word_count": content_info.get("word_count", 0), - "heading_count": content_info.get("heading_count", 0), - "image_count": content_info.get("image_count", 0), - "link_count": content_info.get("link_count", 0), - "paragraph_count": content_info.get("paragraph_count", 0), - "load_time": performance.get("load_time", 0), - "response_time": performance.get("response_time", 0) - } - } - } - - except Exception as e: - error_msg = f"Error in content gap analysis: {str(e)}" - logger.error(error_msg, exc_info=True) - return { - "success": False, - "error": error_msg, - "error_details": { - "type": type(e).__name__, - "traceback": str(e.__traceback__) - }, - "stage": "general" - } \ No newline at end of file diff --git a/ToBeMigrated/workspace/AskAlwrity-min.ico b/ToBeMigrated/workspace/AskAlwrity-min.ico deleted file mode 100644 index abaf82cefdd4a1dd973604ac6b0eab04c68cf00f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80525 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 E_WKW*mT!w8-d4_abnS!h@AC=ZD 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%0AucpcRYWnlL5t6qmT=tpKT+ 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

9&qi<^}7V) zB%3{p$4<4cF9I#o_}}7?v&FqS8eiE*-X5`R1gir9TKs1#{jbx#jlTZF%O?^0nVtw_ zKElvLa%tb8YLpQ8a?mrGZ9l#qbmb-vfV9}RGz+GXNLC+ z2c1z&U5nwVp|K|W)Lb4pz&%2tmPKCX#NtOX_dD15R{$)S`H(=wK^mz$D$k~)AW#Q63)H)PyFU0bo6`x=$i zM?@n%I-2PHHWHY{$pgsO9L86Trs~I}$o@~T#iLwbzRXa5b>nydSFF+LGC6?v z>rb@XMrPohdc|V=aBlW5Qt4PlD|qQ%YkZEZ+I>u-n{ zztDS%4TkXE7GqN-Vw!cR__!mRi0x89b}NOpS#zo3Fm&0Ur7j6qpzq!7$!mimKq)rq z!NgkcBwu3ZB$4cl?67;}^*t8aKLCnVDWwq=Mheh)x!(TA>HgPlZ> z+08TonIZKvj0HUHsO8->!>NS{itV0sRVbeL3X>fO@Uf*5ueWG551+B8Qy6+A^U*m_ zt7@^I7AgiEH>B>Dc6KmgZjlZ3RzZn4p5znK{v4mUwu591g$*$x!1Qnq)YIACh~x|~ zjia$!GaM3%Y(5yTu2qQ;HY7vYzR4{1sMf)G%?Q!#%E760?s0uyQj@+62`Y^rt5J;` zbB2q)k>AZ&e-D*&CU5^)z8N{ojCvL0X<>DXNL>dH|7cI6{Jc8mn zx(SPl5{5v^6$sqZs>Y(P_9vWxS&9&^Xn4ZPdF(ABe8VuCtD7qh@i)Sww^33irhXlv z+ff6a`6Z#1mJgC#MBfpRHc`X08=#kMy9c8S=0aThhs0`W0$c~F`R_@7WeI+*qwT47 zXEi?ah0p&KWy?}&|InM_c%lwpG#&xDSVwc**X2AS{EYFT8I;eKB~hWZ{N*M1uI8N2 z@SZ%j|I@LMC_o-UD7_?wx|L>~eW3D9(;W3py+AMZLk`{cd}y@~k5T zgFedhUq*SeQ;Fbl9w*F@@mKdKWo0ytJda6hZf`OoO0mJeXDK0w54nv86b1ZsC~^9P zs=FPLCZX=z;#!pG=s{hgcqaEzlwoz?_cGnyaG&a9b6N`U{YD#~F?ep|3Q$3II~nzb;VV&k?Qs3Wry6OSrw+m>k}(iMX1|Ad8*(q#ZQY{ zU2~mj^+?0=U$%!HY-WR_#ZE2ootcjVQBXNUj~Gch^qE9!;ZZNg&%t?+A+8h1iB=^jolVx*jSjy*Ic zUZt>4$w}*i!<7BIBBAegEu`A$Jb~JkO7#~(%;#Ba5~+(v2E*zk{{UK1-2nmKN`VE zyPB{Z6_>}c_D}~#(|n!0l@;|6h{hIdn3U91NRyrX%AF2TCjzdrGz^_#@`km|( z*>~kxG6S{c+-xF}E^@|ctqv&>_07<$dAz3mviBvAn~CT#jC}xd7u>8tIxy~oae*NY z^#dz>~h#sq(HClH$|EG5&4-Wo_(bKh#J_}qmG zrJHg`*yQ)X)9{k~(efG}mUB0Ea|Aw7qN3-kIZ1OG)yNBJeij!DlHsJzOw)K6bPL0* z$NT^09sdH4fMOuCyPZvPHPq($ZAfaomq?>3h= z;qDinb~bl%KwTG^vl8%B>BU1$ShZ)57!@y<{Erj>wPj|JdhRQ61g|SHNRL@ExRzzlEl9qY8K=}b?C*_|)pLYJ3e{WX z{A-fQZY<%$7?9g(@_%yur$*%0+AbfQ8D;I5E}4LUvj0k)^v$ITGD2A?CmfxpnC$G!ew$eT z2FEs0up5#o{5L4|ay3Kp#8$U=Idk!DLrB7?hxH48H?&e&YDXgp-?}#(B^i@(FY+Y0 zZr&*lR0n!1&QD37FC0aZ7A1(2d1{L-j{>Ssg~qc9_T+>3TV)fT1Vmk{;WeJ#EdF&D znqr`H3C+=!)OKdnUaQlXV<0;9rc=Uj*PuE|YM9`|xRRV9?18_?j5wrQhjb9?SI!8Z z@7Nm~whEyx)JZ~}j;s>n^booAG5Nvm3pSy|i5KBKB^&Q#84n26;>{$W2wA3_>qJa= zBcTg=qwY`2az=ME9+=uZJAL}P0uDGmXC#2m=Le9MOr_-#x#1yr8e7;gwSNCr0o1T$R?XHC(P34#l_?!lauP~sKzu& ze#W*O%E87zhS`wR|7LDJjIScj2W+a*_h?wPL zOwCyNGR_E9(W)1vf^cj2CT2J;s$l3=;WKTCy}b8|h+LbsKG8m@Nw3W;o%U8pe7;l8 zrX=ZaCvtT?9qsjJ;21w6Hiaw4kFk_)Ft_p8@ixoT!^!T$GbLskbc?`B(m{NH3?_3* z&*cV~nuuu5<#$N;4R7Ywxp?QraXfDuhWpt_;%+ype|@8P4uY3tpecSqH9ONkXTe(F zaeI3a*xfDi7hhSBXj(Axui9I~eB|Cj8uYS~F|l`t1k&brxX?HjM(haC+V}91LHKZ; zmo=5eztQkC-I}3F+oEc%b1f)W2D-Tg#+;4I42v%YO!*XNa`e8BA}WNIS9^*Oi(i_u z50$hVQ3i8o16@ggOwST&wymP4S%!72#g2Hcu=roDg(=(4Pu8B5zx-)8WMZXC6>EwZ zUGWoYB7p~-Rm?1u*$zjF<8-0jr`wl{1L`P$ECs=fO}%&45wp6XgLgy)*}%4vw*ezr z1=eginqPkGz!tDWs#-~EIn5(F^E7G_2AHLo<&B^ro-VYCtU)f2F?vc|y09h%jYUqr9#_VTz9 z)-1V65z71>Ji|1l=AA>XdGYG@c>8w|c@!bI*=|ie4`(*fl|inF{I-0!Z*M@GLKtdw zf-9^Dv?9115$S04r6Mp?OEz|?Gj3O9vp4m!cM|VdeJZsIo$Qh zL5;;d!^zvO%#U!6QBysZTb~Akg(3d0pFV*kgc`vC^>h_XCH@p4a+AW3BM$imoJgB( zP{0s1{5*Dz`)^Rx2S2pk#y7fl!GXtBhXN-55=+$GNWQ9zdmFVTc{H@4*liDmdvRkmMf)yXs!XszxP(3;%4so_ur1h#OPNr zt0QCuwqunh?LSMa&e-NndJ-7;v|{<<5q@iu($qoP90H8W@LmhPIaz>OF1HNf zNYx*kLTUJFx)nPrf!vGdngkZk=mW%3k8Yx+CkU)9?X0Yi0dl{>*&;`?1hj@iP8sWo zg-N_F!F_v%MjvsdDYXx8WXK7hit`LMikLDQ=TkZjG=|R(4$2Eq>gIRxI>*P)aRT{_ z`dT;(otIm!t1sQGmaj{1-%sp2YDdHKzO13cYN-ebb#q3SuLZHR_oT5MIJ`W%7Rdhy z$by>Br=RV=xCWQCHDgT4}E9et!O*JpcM)YM(tH;~Xkr7@b7E)5K|SzP@p~HR+sz3AED(r%Z-1 z)`XBmLnzu{NlHy`Ct}tlWj{n=^oKU`Qfag{>kw0;Ie0>2_b_%thsz)Zm1y8dj_6w3S7EFJ;5@}E2{9Z z7(K*oxt@-ge?CJuQ99&fKCG08za3HXwqQg{UstnSYP_ls{X*QFPpLsbf$G7$DSyW6 z@WNN-qvHsmTwYiqy5xzu|o2aj6R5BD<(_0t{B;51vPAE74xI$^qeuns>L>T7nMM%poc zm|0g%dczs`)DrkIkgM}agZwFJDzTVfHA2#RIpJzp#ZhT5IX7MQ&09QbL64j41^kbk z;)B|6%&X}jH;Xf3vH%?~s2(}E8o_f@pNm0xSQO6>EL-X%A4L+Fjm^??ldHw7|Jh7d ztT1UQiPR)Ks15|i-g~8qV^Q~K@)&`JU=W;xPKoC_&zcq}dy+{QSe!vsDBmM+hwofM zkaE92!TN#!nm7bi=JT}TfgieGdmi-DEwP0wTQmV1QqZ=sj)1&C4jXI@MC0`779@_M zAa0y@bI>`PvD9P>(AZ!1JU`r}DWfk5V1RyMLnLB+Vo9qF?58`UDmBjaB?)<9fgZ5y z7Ylj5+nzvCYP#-VOO;Rg3fW<})hkKRn#D6F2fx;&uh*goW-_9$es7U~_jNQF`jEi{ z*MO7WA*pz2GSgV!k=&8Pa{lTP+U9^Gwfo+?hmcNU$kx_q*~@=nc6M`^)czx*UCxXF zr-KDd>r(Hn6EGx*9ojtx`SOKSHj}kfu0HWx^io;PdXn9nNgm3EiH79B29WSyR7dg) zrhl|4ODzLmlRBtHt2n7I1#oECk^AoJn7Bf z8LFC@oDOf0Q|~CDwAbLSG^kvhyW^5(_f9`BG^<%MvV0{L=B@Dq9=ZPD z_5ljVHwGOUnjH7)XPyX?^`2?deVUw%VtDl<%yVktXOju*0`+r$BqBGQRXJ0eN|JJv zQ5uY%!Vx_I}AMVaxa&NAvl)uE_eN2pV5Q z!>Ip>w0BY(>CZd~-6=*-NF%*id_h3dhExM5gSnced_T*%j^~i z3h{{7ZEardV6S#%&{)H->`4i`buHOUUV=EYI&I%HBh6_=3QAPR@50BS8mg)}`uQBh zsVUy@YHD+-sl4mg_LpPj52@PSWfyQTcwrznz-G&V_*m_%kEiCJ+W$zi#F(3!tiKQx zJ*wSSxVsAtVb}pJVR1#n?=-wUN^bv99r|Si0$v6A#o7W{(2F$qo^hP$IUqY2b_Jfj zM+~2iTYN8hU&2`F5W&bIx@TO{XErq71Hou9a+qiX9Lr~d_fK+z9bq;$f_On-D61m$CXn)eS8Snx7g z%@dPUA@`c7rn~W507{?YqOcB%o-9>r_{KqUr}8v)&7{52iv%P1>v%>l=OQi6Sj?WI zXS@88J+|*O6M8}<4KRB5{m1-?$o*&nh_&t2K;^6&ugMmML5Q5sm1ZZb)ekG`4|GBK zfK3eNecrVD7_c`p1VqUT8{2N@Uo2z-Fv>t7@WBSZ`nqP~@Vk77hcaFimEE^ZZB}cr zdI9U*D|;MA4-fStil$pH8d8tqJC`Fb7Gs@Ir&_W$WV;r6* zUP8=Tf`^Kd-mOjx?#ILYe%Z$x#p<1)=>2GFb3ZH(JGmAEXX$Ru$<<0uTnc5QfMme| z_8hR{zjc^#`Prn;X^{-w#zK_luN6_R84`u3{;@2$VKrGH1&DuK8II#OhQ3NnpP%iR z#WJHFRpAN~#YNR5*K51o_s0@1QVBziuaUvF)q|2BviVYCJJ`%w$ZZL|?#>Erkm6F> z?@m;}{t59RZujCebacakL7_TPWsT zReDe8n1m;ZsxzmV&N2rE)Gc8u#ZK)Ma1Bv11rIUA?HCyALrS#+(fUu_@D2d2u&s5g*xLOTKUO&3)A}3^4}7+WeD_DbPS$WIU3!)9G4| z34}5J!59!q@qWkw=(E~vdAhX!gFhf=6J=Kn7wTnime+4d8ki|9sAsB~(A-vQMee-L z{5{Dx$;I7QoEAT)4es_w^$8J(GB;nHc~*&6$+)&Nez2q%IH; ze6oYo?xnf5YQDXac*vk`#)VA&VK;9!y5Yjhd50e%HpUuNw)U`9nsHX?e9a)N z7R+MwIl=o(*b|^t9*7Fva+uw&)IG%h`_>>!f{<0XKNUs$fmH3f%ztcbW_p~`(Yr?p z)Et_1HF-(`ttmJnc#q9_KJsnd`eY6Jci+{#*NNXb4z_op(QJpm=x0@GD<CZ&<@%SopQX=>u9^t2y$&j%w6_0sA}d3}}49L>q&Mwa`cm zARFktr%6E18x!sAN*dv*78&nzO=bH<{V@|4ssjsAUTiwb{5vx>JW$0?SlJMBT+=Mz zZ{Dv$?7ZP=s`5hJn_@ElwT*zGSsrN6E&api{DAuK4n?`Bken8by}Ui?ct57rf^kKK zn;~OU|6-*E*g$tZs`u4iNDt|%DE^yb12x$>?pd#MM)(zC`mi{9ekAaK0$PfT!aitGf zn~G3QFM^>-y{{!*xjmIOy8Ldiek%H6@zIGqZpfQQH;a!3)j8lpIeN|KoZ8#^2SGoK zo#Fy=uw+o1^^@ak1N=MW6tZaq=CB)v-{O@$qD-2QHNLlpA-bkGAmk$I^<1=E(*qs5 z@D_F%ZglxF8$ENIx+?tO4hA|S0M3R*>`j_C4;c?hQP)SUbb|;VKdhxilM<)YlP}X7 z-nG#cUr4aIggxg5XyM}{FvsLl$EOiT>k92fq*y%2YCVGp51wTyQgN&ncUr58crU zfkzHh=M}8D4>t^E!VO?LO6k=)_?p=f0q5I}_-*YYEeQbV6Hmdt=(gKf;jN^^5)o0I zmzSqZQ;I$HNmr{p+3GM$z?;N;GIO{h&2ls=VT3>YR^~%|*shVgLE?7-Fq3*%$?4V{ zj4$|+`j`m6K>Q~NCn;$}AT#vaw|gp@mc8_)rB4|ZwLJaFuz%e*O!E}JkcLsS+7HK= z(j1mg?8Ti_2V@B(J<)QVqm0@m_pb~izvSm7Hk=Cz%2^Z06kN5|A0#ENDU0$RWqE)9 zK|jplPc*G|Cv5G#FyG8+4ZXO$ej4_qL!5B3v@=})5n~JB$d!&Tmf9g9Szo!1kLjGW zu)dnLBKkP_hg3#7XUZzcJQvb<$5CErH`z6B(eOP59G?(M<85$zf4Y(+9eqv~{;ud? z{)VU!VDQR`(%Uy&pRJB2j$bpma%*CS#18WpTT~-^dDMy|6w137Tq96)OhLKgPCwMMi z*wpBfazJZlk!@{lak~qWCM6|}z7XNzh2Gz{P!%tF8TDq}Bp^%4IeQi*CngG4TdVGq z-F2{&k{ZaSI#gHc1izgb!7kGUWP6|S1dlwOcUM0%2-)*JiB6xrviXGCwEj<_MK?S% zb`OoBM;*OP`RSHVfJ*RjU`=%p6>jmiSN+En#P~=h);KRoS#KU3z+~%BYLFTE`SA+b z(4~E%*bEp=+hTR|YaqZwVCt(c@*0rG>?vfJxgm%T#3RA?;@Wf8qmd^T__|}xnBQ@B z)+#8ng^wE)I2RDI5(G+{;&f~qDP`k;Q5m~w-sp3Uo>JDT}j+-9+4M>0qzd8 z+Xo#HvyShWU$}SKp?*ZC(kOt;g&>Yvg{-9KVJ;~Ce`6&HYy`KY6Hhc_))4BWb%(%v z8rJA4*Nk{=Yw0f!ZDN%FDG5H6kKDx;8?LLxKsmvA@V~5c8CURo{OTL41#-YE>Drh)rfG1HD2Q zQ0a?U4bi&=DEi}XTT;Ln{?8W@t8IF@VSqUiDSFTX1Of!))({H|<|5g&FPKFeKJ`Sd zH?H{Z_DJw3%#uc9^YNhd&I6r4H@sg8CN29M{`@9uaXG|<9~j6n7Y+d118Q0G)*~X; zFoYJNqFgYF4Ao3W8^`L_0A?sWU3y|TV_)z6!NZn;QnfuRt#NpEdn0ok2#X~xkc{XX z3yvtr;;;_sTh`|Dyu@b2(-)C-@i!&5vbJ`-*rud}?kWt^#2|OF4_lR&BB+E=7%EIXxhhDB>{jPLeu};ItF98&kN(p(fMJbH`Uyff>hm=SM#-xlMHz;p&Hs%mUgDL3?F!%P z21!g-HVPcZh>cCnq&~t?Svc<0C}4QL-q>VNu{Jh;YbUX~apbYVppB8{Gip#n* zDEF6XR5Mdhpg8>@u;r0xjlCu1hKxY1KNF5&KQxDh1$=41PRx{Zd)t?fvBoYsmPOB*_8cRC2XF^+~>+M{l zV`CWDAHMzmjy^E-{#!w8^Wa2$aHGrE(Ops?OrDaqHW0m3e#95PE&RG^#yv z*Ice4qv&%(`}u3oRD1Il-mX!92rZN0;@I!`R0!?yjn`i5_ReW=`GT~fmX_&@cc_?` zyZ2MFZ`1io(CA&s?r!cM0GxTrgiUQt!$j~?JH7j4TT2Mli8C2?nLI%4fo`Dyw7+hZ zB)nsK^1S;2ULYwDLZ@}BEwC~8{1!jw4t?x!M|N9RvWiYB>9YH>0gWudv{JNlya%IaKCT3FT4}60MtCDHtm(kFFyh17 zCatQ=1m72rVW#y_M>82WU;ZF=a|9Mvvmm#Mjv+vhz89ZomFhEpX%GOic4s!^YV}c* z>%@ejb}DV>3|d^ay*FGM2E+zVGMjH$)kL|{--?FDS$>aJsU<=AQ>xWS+gDKX$P7!q zMEXD?B-Z!oRD{yXaT_9D$zA{GL%z$7g1B&braN|b~ z+TNDM6i*_4eSM8!#yiYu>JMdeyxNy5m`F7{l7Zb0gbBqyWCBBeB}n$IuCh@ro?;SsoTjpr*b`0N(w;`lRlWgLyZ zzCJA0>ghDR>frRdlcnO0o{u{z`$*6&xgzC=x>qUSuD4f&y}|bc-4M>vb*w{TLfo%3 z2`X}TiL-xkEiL@cGy2{BtKCK)FnWG9NxsPm;*K_J~R_`TrZ2GTXPTjoI&5|~rfu?;e-WbF)28R-Ug5T-M z`sS8pXx45Hiq4qNn~)6EUIi}(uu?fEz6(ICh~{T4(J^;dmnD6|XV~2GX0czdLnZk; zEVykB>@T8PopApl-VEgdmuPYe1LrX8;2K)43~Dw>vMJoN9j4@ao=ql?resV;9RwV zfuxtLW!1-kPYUw3xV?1HjoWT;BtE|t5!?a(ZE0=gs}jkFyS_f~mu&9vhbvau!|Dl* z%1&ra@X+*h5$6&jSP?MpI9*n3cs;|h=5#bMh4RiarO~#hj2Jy!cB?%fO}^Da{M6Oe zXfIWFv%?70XiK0yu17GWzcegEY<%mTx$>SQI3k&ou*=gVVvS~j->~ONCKB`AQJ3bb zEs;<8Z=5U!Z~g55o|>AYI}eoI{FYxQ7%5R}P1BXaw}I@53$DRSKuX1$hLQr#)>N%g zs;S9s;pdBgVF|vL)~EC^H0y(K?3G$)yl0=6#6M1IUSqZK%G%S{F$4nA7@GTXzFMDg z#(@*4JQb62r&Agt5BWrQ>~eF&;p2Z2N)>l|)B!>I>4&alzNBl3#$D%LS=mYs-I9N9 zuLGWmGjDkKpvF0W#&g3Bh#yBF?E;3>Lw80qZKLCPr+bByw5qxnY^K~D~97~L``WLMWffi0Cj>WYJC^KY8@UPl;LBLyt5mOE%lRW zgNPz1kbUgsNOI%IS-mbW)xUbF{Tu`h6 zFWZcT1Lwd8)i!dNzEW6n5e?x!t&Xff3>5)@*Ep~hqnlOuVF(c`lLEXAFj^WqD6tA%nafK5YQ#g-JStZdrV6D z8?Qpor~8l8%#vC&uTx5L1zohJ^roSO_%@>z^5Gv-@DPS#2uzm|(jUEMy1u6%Qd8P=NGoAP1YvDw$WAH)-R-zAF$}Ez)A>rILct4Pv(IbsNd>T7PJ0oUw)9G2 z?q}?@S|EBARvi=isR_(2S`+q^?D;QIUVc+a#vdj}hwdF|q={8EaC*vmRLJosfAAE~ z3M9`?J7s4y#{=DoqpYr$yY-@*t~rxktxY8Fo~h226M|;z>iDCD=Rs5*njD}93Uuk_ zAw~I<7FQ3YHsaCvf!})F4eptRhT?o}Wk6#$yJ>V<__HZ|C`)K=hQi|@6?kZ=H(fO~ zOD{X_x;LA-uB0x$&!BRpzx!z{Kvph+uYJ~?oLV-C6E3S>FRkh1P+%{G!;prP4gsnX zAuek$2-Jr~OKoUS5^yyP4|D@Z9H`QXZQ0e%GXM_IJ^N)O?Y~0+0dxQq$*oc?7i2f= z1(eueNE9fcFdel1^$6S9GX6DO zOF^}Jjy0LNip*J$@L(#HiC4FkfnK*lv7{L`AMT3jpjG!NXzVB}iyNtw3cI?xCc0+R zpf#1Rk#rsmyYG)U68K%N;VnzyYxWv}Z&n&j&ym0|6EOBrcFi1nmLPdlae`H(+E>R^ zAeX_rG+S5*QF*F~5=_RThpX{A5dh|cj%>9#XS z^PSAJ5CBugmy!}qJR@H6uc8ki_T<$3cT2eXG*-#2J@G;0zGGvs@le9bkFg(EbW8IY znc7!ry9*P=EM(x3B)SbQJQm0{!$3_`{&W7`cWZZwI@PXTkLF|m=9>2@n4Ik2NE7DA zz%$7J=*33$OaR$(oLdRW#Qlr>zEMl4Ss>;7yR&OjNjbtZv?yP}kV9zHztk40#v0m^6Ko8HirIXGqa#3^Ao^2 zCMBs!cm4!&sfoOvS;>}yTv2A5MMYCdWiF?uTfK;J3{UFPOfl-AK~#3sB|xcd=6EtD zC;p?|*uTr@>q5nXAoaEzrL%a+VQw76i40`cr|C_Ajp320G`_Onzwv1lFNZjeMdH)4 z$t>yV=|$_c-;sH0#?N_WfX(gJ+JX^CnG0CC?BAZc4R%QCc^8frnryjdQ#oTlHdBrj z;8q~Y+yLtEi3f^rxT`*QH9w_L*qVI zBz~V(jFuEuMJJ{~R+>E5R(IL^`uc*9v|JN|WY`${4r_?!M!YcGL(uCQU)rz3P7S0W zoe2s@QOiI)w7(;T$hxo(#c~ytC-LCm>WgSEvr}TuuFnISF36oJKqnWM*vQei2;{$% zz7Eo(7BdcoRJOoRq_aZ^DEYnn`Ff;Rw7S%e4GD2&)kB4rrL=0}a*Ut<2M&%#X+6U& zf%DgEsskX)_Jk7sQrO&#$2tvEnZa{Z#%hodZ6eiIy;AQo`vD*&PC`pLwNz76Ly{O{ zpV5e{-g?>*YM_JGtn{Y43v0DWdTFy>&@Y6~gYb@eMLc6Enb6EKVe6_Yn>LGqWHJ>2 zTJUjBZzWO4Rc}ye616!ntafnxzu0>Vud2G|fBbR*=|;K{QKY*;KtPd3x)JH_zLYeG zN(d5?N_WSV?hxq?0qJfo-*fTl_vd-m?+^H`#bTXv&pG?do_Wpenb~{K$&@<&z&H6w z#m;l*;|El1Y~E3)rp|(aYLSn6HgF@+zc!%^o=Cl%ep~t7QVhtJkvf^tvp*O*GKFJd z{C#7s(>N8kIXS!A4m0o}gybe>gLjP^T}`fPAUWy-$1X^sd3KKL3ztfjL3JC;`ID_? zAcMhT8}D5hH9r>dWDLmZay>7T>+=4t-T5tq9@8e;!X7LgDa-4lmC9&|cBdQqsj1Jn z`)h2IorW5akVfp`%HmmkH2*H^!>*)EDwgorG1>$@MCWaDj2MjnevX2A&m*KWzQNB+ znDCkM^e(GEw!>7!!PgXYyYzVwLMdD0GywZSgHR1DK-#L38#h8EMk^TMkzmsEd?siv zV>pQqJ$5;ssNaRCAUdyn#tUD0_jy(|SAm|LT|D;l+}s_6+?=fUQMymE#>_802!a#KBk`VR{=B+w~1IXVuf zj~K5;a;u{EUU){~pWnA>3pIM?oT)wzp_VIp)ER1CIi`j%Bep?x6t*?8h5IFr3BNrl zvV`G*b{<|5uTS2WnDVs)ht)o?lRDZQAKyq!VSr@o7iIa!hn4_N z=fc`r$fGCi&!$WcFPb-Kq=w91`4(>_q^FBN|H$9eeO554{DQuT{!+>i$ldJi?|=Q# zo8a){S?K|7SuKdQQ8~O-CYp|$o3J$mM^aXneIv5chk$^fFy~R6b1nWg%W(?eBw~8| zcspdDF|n=?r#~JaVntwnr@Cp=(T*+dEz$7y#lqI);hU+X<&NwJ#V z=?gRr{nhO84-CVsO^9eK2}{SE~S@Ka{X%@ozt)t7+U`m#?+r?XyH{BYO19qRhmXeFMn ztN`Ka^MLPKJP@7wW)=_qM)eG-?q^Y}ZC}xPxbihLNhmy|`E)YhQpb86B|4^IQ^!W8 zL&blbr>3RFd{MohX(p~%e_ELd*6eue#H7)U{b_vj4fjj)a_zPgU@*LeH8YSG{^5Dx zqo!K?*m48u$2r4kL{?Vy>7=36^Me*~<0ZpT%!IXY`&upau>x*L<+Y{V{Oa(*frye1 znoR030)mMAX`OVYe}nzfXeP?Hk+nqq6UUV`EUL{5q%AxsCq^uExB15R9oqFzMZXRV zu^R?pk>EP}`6EhT4+Knf3H8^0T3P5jAo#Bz+W>wY^R(xN$6rG~07tmq8%@^{^xAm{ zs|O{8E`XeT_rcN^A#NS8=BmD)Uf|Z&yB?H*Z$UA#bHkZ3yytrwqKTre%oyX(p1ohb zr=s?4Cj2wM57W320`oY3ngOJtfh(N*9nQz)WfUVQl!QU0TLpCUCNApXyZcNQRzSt> z_Z&e;C=WB3glFE+soKzmlq;@2_$F`TXzh5wp1o64nS*W!)IhoW9#}9GTv#UUmM(QC z!g>C58=))lzM{etG4kU`0LZ2TDqKe|2P_x@UL;A)-3O{1Jd_wk<&KLg7_ZtEqEYT4 z=!lVYc2><9yO;Ele%O$P7Oa(&rASB~;Z zxJ=@ zEKvJY+vnWP>T)!;DTYeK_5x-jO5{=cvr0 zwD@)4Obm=7v!>Ysink6b@U%SeLs2Cw{2vts7JTP}vjDt$fB_i$ws-(Q%pZRgz)FQJ zcFxp4C|ZyLo>mC@86>9+5<;M317cWlaHxoLg47!uCFMO8u=% z3rWBadRBVyeg&~Lo?lg01?3awr4 z;NLffKnQ@Rh469+SOJG0DYO9ze!(3d5QL(({6O&UB>rMudOhxEpemKga>@>;-oU%x zFG7P+-93)QWt9|($?!rX5c))Zv2`d2*!#|R+v2aD|N37;?LQ^RLgwswO3p6>Y|{R9 z^TG*|w@(8e$->&n;a(O%l-D;)M^^a71thp=AYF2QZ3KQS&PXuCyRNKJyuG6Tt3b}L zJ3t5`*9&W#@`S8#`2`aNO5Vy(g9eZ}dOnonpY1@FkrMArIlK}M{Jlr%K1hkMTAwSy zjV)FJsL0NYRE*Gbxe;ZI-c2~##dT0;elA7{iCk3t`0koUK!iWEW3~5tPyWEvPzoA5 zdW}%A=-Tfa-}EFQ!_9iFjg|WKN}ze^7@?%Gj?UtDw-9lr^A{4ia>$h_R@mCN)d0W~ zkdpF;ZvCR!oy1>I9$k<@d|!I(ToA znqj_8dxyt6>W8k?-L9peSA-??HYCvrNU~5TG-uNzHsq4Eoks(azd!U_n^tI{sAE5m zhWL0@?znBMl(_w_?K)sOpT@?9h2>@W{muLN6WL%*lH(fHU@AAuStR0++wHumPZtzo z#Akluean7lf@GhtWVZH?j{oD7N+P`%nVq2|Wb2*+00v+&SxvyzU3WsLZGAAm{XdoI z53RaAAf{Wu2T#!WZ-Tz3cTzS2-*8icn;W2avi$}$sBWG}HEs6*_8XJ(qyBeGe2fd6 zV9g)qxL?UYf<1-B&tFpg@O{sRF2INgy4`rbGmlXkH-H5AkS7zQvX-yp=j_C;rAi%pRE3) zt@RW5ICM=!b8F}Au>c7am10vM|EG8%Uhr{u_jq|7P9M|+;DlG7iX+`Wy8e$-Js|&6 zgRxj{bxVwYJ@DdM@_#b&e0UdMVfgRI>O=tc*)}7i-nOP2 z2(S24fGBf2Ape7?KTj9tfLG0WUGsaw>Dwa#IPpgnntzp+I58la9f`B8q+5_Kumbe$ z-1%2-|LTP~P={vWglpyQuU>o<2M}^wZ|D!H{2vGYws6c&+aZ8&FOI|YkZcpG{I8_l zBC3WDAm~(IEIJiVpYUsd6P?TqjQ?;5ez)PjF=Hqg;6y#HX#M?LQ(hwns8s#`uTrwV zsnqZjHf2}uM^$&*jpig<@fI^oR!aU0k5E;(e)K$Zq=NHzVHIGmo-;x|dZ}A4FGUZF ze}@ow-z0aj>HJ~nNx5HxfS)I!q8}e+nzcJsX2Z5vjLbhq@PA00ADDWZ_`~x^M}(V0 z(DxJlgAUt?a_H)?4_`u>E+wTay|;iLUWSBKezjL*Y=xzYbOs_kU}McJvb1a^S~gt^lIcpKOG z{;`^>ePkMczoTy4p_$1m|De=DhBSvop;9QtDFk)lka~$x(adPE&TVf6L~J-dyj;3@ zp>2KBkEltyCwS7Fx&c<=NBX~C2#3Fa5di<0yWb}nZ|#&g7u;-BJ;dbPkIPqFN;41+ zd(48RXb}Ceki7I~y@Z;ljN#G8U`;_TBFlL5O|WJ}erNSkugzqQ_K%Qthr_+SB|<5_ zr+9i%<@MFZBmTNG1zc2zO6Z=e*6lfz(mLG}6Nod)@aITSKcRmuqWy z*F)ZzOjF@JxSm8GSDGGzVq8!2v21^FVJZwXOt^A+6~%#B$vt3HiuPT zYIB{-PsombWeX{`#F#fTQJU5C z#C*rJB;40K6!N|EJ=z+21MM%GrS2WO(a6-~+xSF>{Oia%1B6^9$!s(sx8rxJ1OTyP z^@DFo#Cz)oa_oxbr>r55cGnjZ*)Jup=83I{t=qqI=9VAykh%<3Q1 zoDd4yCu0oSobr2PD-5x7PDYj{R-^d2&cya&#QHg;h&D0yf7t1_^*r~BY_=1WexgQi zw&{DuW)MicPdhj1jpU_h!C~%*e&-x9km>@bfn8t%oIxZ&-5hGr@GeGlWX*W&jiK(P zEpb!KrJMKhg>w+$Q?j38i*Njxhz6bp-5fJpPb-J6r(H9`n*Atk-$1LYmufwz!CWB= zs{$-IH)ki|qEVemQ+9-FXAv<8(<$YZ-JM7zG)-nFfpE5ev< z*>+;`R2h}HzJ0bDUK;T6h34~QDvaig=hpKY0qcG~C~3mU=7z&l+8Wy(#cMYRUi9&0 zbLE?}0~C1wG6;+F0Riny6j8G3ZI)959*73y)3@xNHh1<=28+)xCRV?En5rvG8F+7N zbfT!p3r+0&0ZFm%h2YMv)mdlWY;$KuobQ<*-wk#-7}ycpfV2P3%+2H|O=I~qucEOE zZ&2ib;VrC=h%FkS$af#?dyrtse6=a0$uazZ)v9vn&IReql_oJ7mnUfY6GIZ{=0DfW zHWzNn-S)bh$r$ceeExPp+g41GtnZ0lZ1AkrVEpQiYLrvmQM;V`5u2&z#s2)hahdYa zt1C2OMi{!E&N=Q|FvAot@gw49$Tqz}XAxh{G?k(ak-pzcWBkdx=P?}&P6b#0s588y}5=?fF z-1Y{E@#Rfw;`fEF26tC!v;k0-#)-8%O&jlbtj5(e6Ax`@U#=~W5Z^$yuT$IR^*O@5 ziD$+r@c%^sfSrSvQB^cB8i;|b&;qZ8E_?^71N0L8S6hbMjK zLZTk%XGdl+ODRwTqfH?ktzsVQ5RkehiQUt-wCbj!(DnPNb@q zdp%e4^lM+;N`7Q7-WLE$?~I>qf_Va}$ddK7gT{FVO%en}A1x14oguCkJ?O;HnQLja z?6C+7_1#pyN?T$CY8joQasZo|b(_zlOYcMc^C+7;5$(+PmpbA!A1psOBa9KLC07+a z7t$wj)NtgZM1&CRE`D9BGQP?y-oNZVDXiSwF^>L6`1Kcu4w%+OU)U)h`}h#f*BWks zg$eppruI|4C?yw#Hyt7K2pIF)f%A$2F>#0bEeS7t_YN%teQj*msbFcvCB`4KL1V_3 z;Xpq{p@Z|r17s{2epO^Qy879=Zi64I0q#B=`&z*SiMrM;Rc<}I3OVb3xA~^Rk#R23 zVlG&!6GoVZ?MaEEt`L&;;;~ghjP9|p>vfE>k`AfjWL*OLsiM{%M#bll{1FME4UN}M z(+=0Gh6Nag=3M(1fz6$xrhc85a+&r&mw&iBj~~^8=Qc<{goUjm5n@v7`3B3yq`BML zR^#*S6tw>i8&ROog9au8Z*E}|0Kf*Q)`-dJfPC^?E9|;B$Z%AW&2V=m?(Ai4(Ay+F zv7jUL*J*Bts0)(KexT-tD_l{nW84guL3A{kP`4t-S@~sk;F1|3&nR~Rvw?k*dN5nG1)B_Yd`tfLHOMfPX|1aC?RC=W8B@u zvkCad!u|Th)_cFFwEo9wje#4c;ojcvSil#BT*8B_#>zTRCSs9yA@nV}sT<`b2VWCP z%r0~$DveQ3irkT!n+|ZB&W=8;z8&Rf=p`I7CD(7cs)i)+HUx)U>Lk1IR291;6|eNS zUy}O_Dc@qWSpXQ2kN8zPg4@^?$7Nrv^3Qc<`lkmg-hS&+-=Z$9d;64> z>7hOpw=MDe*CB+Xn~Q-D^dUxf2G|4pFw;C5SCI!kI;{%qu6YbBc&~a;9VS)gMWw~U`UP5ALRl6)Y%p+dvcb8{ZnPl9nh_Kq+afkk5_(>* zVWcMerKrxeS-lTm83HCu2O&QYM?hEl%VGLYGYTyz zgRY(8d@a6@-3isF9Nq{K_O3d1VfGpf8Ybsms`j~ps3voq5GOkvikTU8_tA!0qL2(` z(X)twThr9W#(0X`>u(q*N~ZBw$zqHroyudUY`OJ4ek71gOyWEci28nn-zI!XaG2Db zQ+yN7q3R0dHYAGgBM%4x%QIfy0W_Gd@T7jwsGRhROb23sG_}1r*)*>i_p$hmX=3@u9CeGKQ*iO za3-uN0@t;UfUEI?*RdyAt`9fTIHLj`(?Y__o=&b5SDk zW$v@|UPZq!4H!Eaj#j`-fFdmXiJvb{ngRF2V#)(l=|OdaX~_5Bk^PM(iLP>^%<;uQ zk48(Hq=DVeJdJtiPBGT%w!NZETU1K0M$WS#-Ebf*Kr6O=)+vyAeiwJCMTD5Qc8br_9qG-+VS6C zTRuhAhZ){|EtkQ1T(WD5sh1edT3)@pYm&dA$P(zVSB@%NMw~{R3`zq@VV(2D_fZG1 zCgA}~11dQvG15Fpzt9qt*d$-$E$)ne)1vzu?*CK)_XH54;clK{Di&N6F?S6?TOBV> z0}+ser4z3L@y4D~DqHI56GReY?CX7?_I37?={l&IO5Qi7YLaBHbIudJTlVuAE&8+P zdl+HjiN}JqtB8q)4N9TAOo(`60$rR*l^b2F%SqN^xjsIsPifJMpsyyCw88^07{m=_ zf{>?^?6m!6Cs<-ENha|0BsOly>IP0x5C`s(EfUY*8Exn3_d44PyzXOZyLb40Ajyd{ zWGH|5TLV=Y^)pt&rPrF~Cxxtr%|-2#>p)>?-c6Ne`s%FzRr6on-C%=)YGAH2?`}mT&;4o)Y{Ap%aBgxPd5G4Xh48+m%y`Jn^D=f zR>K9b8jVHIJS28#lsw4lHT*&c6}`hN4re*MMmQr?a;w#QJ3$kamf@!VhXsPa0@8~_ z0;-REi;{6mx*2dLl-cR?&`<{IPMAFI9qI&|Ww&1`53Qf?I2sY7=$y7XL6r23QpOqc z^Ryg8_!lL5us{X3XPH!*=y2i7>q8Li-`RnY{)LL$cN3!ms)j&^^Z3?I4qyOhb8lq+ z>j`vr&@1v^H&o*S=ph<~O8lK$e>1$05TMPIJ@l9R4*^^39s!`w?#t6ulz;03a1(b9 z2yvm~`M~101yLqQ9jBf&u3)C^qCjdf|T`j*V_U1Tg#& zdmP{uJIXlB$p1l=dlf+XV3AmSDqMo&0N+lM@>atBqwC`I0IzJNyqmahn^gm>+AFL7 zAPNDUAE0W&Lz2q>7h-9EGvrWVr2n9b+XEn7z6lNY7FS+yX~uXOKK$pn2fz9o)1c)5 zv%FldOON0`HAuq^uNs45(4Tkw<>p_9WXb@N=$8(&;UZK@e+EHd*FpRbqLiR;ss_jp zP;cM500z!j#aC$mgR1my04BBv@(>XGkr_#VDzEQ|a=&2t2kn2OER_XdPx)p{b}rDf z1s(wUBDqWv&+Iax?id<&a~*}#sj9Z|@4@m<(>=J-ZF*m!VpvBHL0%mTx||$)mOA9# zr-8yok(fT@%KG1@TL|COBKWjq@uv-lApp?r@S+0@hvA+A(1%pz;#{oiH*UxAW`yzC zfZgc>L@vda8Ha=E-iJ)YeKH`(KJLAQ^5N7mC`mpB;f5i|IuxT1^|JRyp5G^ zIBNEEfhKnh+&IbDFCDWliQh8-En1=;+3sd~-DAHLB*#UjATYdf?2FI=DA;+l&~@DB zGZ?^-`6v2ufflS$eleK{uKO8emMm?=!EtA>J8RyqH%Z2550z9G=G6Q5%w?$cxVJXz z5^L~~cTh|GN;v=;=IG#!>I{5X`;*ZPF96sasGO8E@2Tsc`DyPowA$K0zic z^Xtwpizz(@-tQ&{5VK_)7g8+wr(>!lh7b)ZN+Uo0)l*`)5#}&Qq!<`h`nuSN}M;wqFU{ag9^U} zhd8e^=$@6y?<;wV4Y_0$%RP8uze;GIPcbYan5pCbKq6o|JuZ#SHnB%p*AXlCFv9+7 zi=hI?5AvA(Is59%g-un4&o#O9bsZhF%q0)2q<4kZUauQu-1FITglQdlrU%Z#;#>}d zhh~V4^y$Dx0^(C8s!5f}UrXpZ72%4AYZC zK2?77d2%7q&~U;}rBy;spRs9J*FdoO${OO(<=K~ptHm}_U-?dQ&7~UsM|N>0fQUvP z5wpY7Run4YGjW}N8uFMK4 zAuioo53DFbH$5~*1|K88rtD7j9tM*sK}WCU!kK&uOrSQi*N-+|Qc3LY>h6l>G$c$t zKEM)Js)yVmbY2>YtCck<1#2~-k#Jd&NO*tbkFVdIGThz0|6Y$by}$z$5MVQ2o;f}r z{^&`K`VPuXI?b7vQ%a3j@)w!&BmKb*2lE|?KOtgI3?P603E+d@n%xOv0JN||NxKJX zX?q$Xmlwf6i5G7hLRZRt$?p{}?}?JCQI;RDyUJ^aX5ug!{Vd==4XIL<2nqOh=Mqu_ z^X}ME^R@{UKZ2z0jZ<`dI?TK2t@l>+T3bFKev25tM(^cEq%DObsb+p{@OT%c&hw&< z3?@2Ujj}}bv#4H)R7P{R#V+r5!lOy>H>5q?X+#MQ}mDCc)dHe6U|vKzjgY~e4Sr}9si7dcZ}&jdaCly zX1v59vC@&QWu~;B3}>OxLN0cjAY^Tf@sr!5aqg%)0^#M`g`ei;6>Xqp!9qrRQ5}1g zy~AP?7h9AKusQz7?GYlnUJ}S$dDTKK|LMg65h$Cq~kz?UTgM;=>=Rsb8>mU;w2zbVA_fhN9O*pChf*kQ^X)W#;(ds9eoqa1$+ zP0XFw^yE)Dgu5EgVkG18Z%PV}7sHAHt2A48QTP0**U6d2YHYKj*j(o#*yn6Ap=PQ< zPb4SLg&ksF^Af8ekmIhMf_9kPe((Obth(3xeD+#1S9_*EF-p&{2woQ%M8mepYD#R! znpdo|V=5b6vgfYlq`_iCn?@*?iP?Upr!5Ow^pnQ^Yx1 z@bEVDADcui2~E$DJpc_{cDh@4p-Y6k)jf-u4d_NwH^>Pz0nkVc~0?T7kft1jfSw<57_m>ZYEHg;Hn8)SZAe<)fnsa& ze$To8vXPf!x|w{90iopj&;s`>S8|E*qC!y3Q_$59Gn76n80^)SYNf)Z^`JyfpzmSI z;Lsr>BE^a$GsJ#x0jv2uj<7+%g#}Zw@at7uD%OoB)fM_{5w22eIXTQ`a)grPW413< z1UCwuD`{f-yRhQ~8|vh7q@BYvaTIO;kW)64feK|lm#Rh{DUhxQ*y~lF)Br&*$HJAw z7HdjCZA8c?Poyp23+=RC+YhX{A|;KF%-j!WX(F`}g3PxQ4#_IdZ? zfwn|lzP|l)F#N;ShdWYGQ@|wZNlzN0-`NOD=~R7IZ4E z>~XHJvnE+K!}hrxIMjDh#^Z4qiyD zaith{OkZER3~p6+L2i|?9hA2Fgw#{v6*yv&w*Ck;)#RSS0(gNTCsOI!C|CHKS|gT&dWEl{6Dkxl4QMDaDX;M! zhps1tE-o+Q-s|jDY%kI~8SLzH|ABURdTh|kx4q{;s8LZgkNQMJRXl;1)@)Ec%k1T+1uudtNzaVabmdTLH6L_G zpW}2_YywOfSL69P?v+(i$k?ZK+>8?nF=w(XA~e-84vq=f+5J6 zqpbw{GhFdJb#i6)d$W3H!kgTfKYUR)@FUhgEweAs+8~)&WX_ryy6*~SG1!T(@@0pf zJ>g6xSMtog#`dehO|zW?dVZ)pCP;yUogA?k*y106>0M!pQP%Vj9NWBh!$4aDU zaHFgs)9-6++4yKPlOoM^RCTNq6G810U(}zoST;$BEOjyMPMMi;Y$vj_IocOjr{ad1 z)KWNdQr`1<=fjW6_!bKrp%ATQ-1n8E11{~?7YQFzk4oPVji>Aw+`yQ|zbZpL!J>$c zyv1!_dqp@5d-$dD{O6(wWW7utp|?mIuB@A%Srz3<(mBOe9ooE1W0ug$SCVRrZW$Uz z#53lRcbfd5merUXu%-Is!6DWYsd*z3VL=2VH;LA|X+PI|q)2a31rM?ML;cmZ%kqJf zoLxZ`4KJ>*Z&JboEl9i0SGgnkuKH|*UVR+BG?YYw3XqpD|KvJSmMnc7^1uUVRHRvHp-nCcni*2p78~h_!WBQ@}3_OMQTZoVz3xvXa_`(M9 zx4-4VJqQF!w_OnvD77&<%X_`M1w0X52`|TNsyu z8J2O4(Ku3YAab$QHmtl22{Gxu^usrwl+*}cE-W-LpW*2F|1|MpqPEo*)h%-8#{QA( zi1(e33UB+F!|Dj(3Yi3l;V=>Aiv(|$!S<$vS9FE<@DZh>C0+_;p0~~%S<@_ayGtRR zO5FHLXXU=6*^Ov@Abu}{3M)iRo9>=1`cft$Gs2#O^Ezd?Rj~j1{)lMJ=@{C}ZL!ED zb;Q`Si+~MPPb-}#9-`k8`rA@X?gt&oi#r!9rPC0g;E)cBS%@qNA=YiyauQ#zK5x%0 zT*md-M#5Z-S^mn3zmQ9JsP>TVenIDvSxY~{-j4PFN&?^wCB)N_53h^yW2a~*EcN-P zbTR!5~T3H=#;!A}~T4QlA73OJc7bzu0Gk;(0yU zz3)*8Cxp+u=^Pdk2GJ@iJbs=yOsxZ#+QYRPUGn`4Om!@4DQfJ*}VKuh5PYpWlAR&L*|SWJFv?^gT00 znARi47BL$t^?Ss0uO4&07Q06+Mcq;K6vN?Y@g8%^U9rnxy&fN;)YhjLh&P4jwBfXkV%*nK8(I}f!P_84(94@99x>3m zH`78I%2{k=f#x-Gh08`A?ppQH^C>I3HyvJ%)>@gN4xM_lSqp^Wg;9PvLW#F|Gu=aE z|IBg2p7Ix&?xuO8cZI+l-rM+XvZUXg(8F6p&oOWbY|&ca(NIDh&h?t2Qcf{TuWZZG zsKL@#51l;GtcFzoZLYUU?B*h?(Up<5Qlj5h8H}m#PkjJiuwPLp1+2Y_kqR=cNI*gd z7H`pBv{!TF6u)Y#$Z1cM46!*!edk1`?4n@Wp>l?DN7gvEIhAEmLfe7g_!V<|sBb(@ z6U*AWQDp+=2@z^U&V>8MYGOwMq5ecxV6_~hOoo%6an@(3pbM*dovT} za=3JtF`Y$Q=8+RMNE{no)sjy&OPC0h%gOz)7TCn(TKmcQ*w=^^$E`fID=%J>tv6rI zBOG}M&-q8BHGwkR$JGiZl!HD$-HbhZPiFX@ZkL*?)HVj8(affn3t!$%ME3G5?ThST zN@#5o+pENBi)Rly3gjh@QjCsV6}ndmho11)@Z;4hzBbwW#uK`0ZL#^|9588jF9%NZ z&@D!JwHHE4%rp!SH2ck0g|_+dug%!n?T-abe^$R%7vXS+skG^UH_8B-tC$dJ!|Y5v zqbfz?4#p>&m14>^Hw?sgI+WeHSTZ^YhgLba*+2PxBg1SYs3Lz;DU3HQCvCjLX&UA5 z!}H5w-IDaR+)Q@N^=dPU;B2!x>{_zIdbG!1^wm!T17zBbF!Rrd9Q{#?spgo8>_cU~ z^%w2gG?@BTclK?t7YZlk95`$RR_|*|TjX!=YjeM5^+ral%cEbGi*4k^v&+6Tf-bR; zkTI0YzBIhVc-j^AF;L5i;Qa@pEbKw+mQ4&*T;5BY$gnTyaU+&iH@x5lVaB<%<0`({ zaXbMIukFGzRAgc>?pUoQk$u1rOfS{&9+_b1ca9M=mfGXnvt5ax(M zS^(+_oek`HmJvk`8+i!(OQZ2Dk5TYKnIe(#KDk!t$1>!wz&u6&q-wx!Hpb-bjUIf` z+0VpaZ=PC@%fnfTlpHgGA@OV>y=f$hFpz&dbT}$A^qF=ikZq?UvFSu%5Xt01r9d+| zEY!k|e*bBIXjNtBepkRO37#H`d=yToe3yp_;oF!t8i!V}l!aIqw_W|+#~UGAC!)Hn zgHWA8Mq0)yCRx4^1EDMSBbWa7(;Fe3g=-6=$niL=o0t%rj|uH1t?#QjCi9~E%nUw6 zh_F3>;`swGVIqjJyrLgnKBofHH{>*l23?TA;^>y07Nf)_+dFi9i$N(k-Yl*p`R65b zDlb+cG|f!uoHs(5#2wbUDmHp;0hIW#OQXHCF?#*$tH~&EUf(tK(#iI;Ccj7G0L;R# zJez!8rY}90l0P~cBw<5L@y%jPp%S4Eh*CWH{X5|Dv;bWH7&JNV#xA@Pc?l)m87hR{>NI&4l$OPpq;Jo=kBU zVfSvuZ$rvMC>hucCqHHrp#EusabILvyt$IY zUOv%j;$JqutUlGxIlZ3rKgqciq8z#|r+wCTDJEwr zh;ommmgb3QdUB0muBDe$MNKl!R3Q&5XZpEXrx^j2bD4wrrvz^}?;R zLHpc-Vy1=w8OKVxLjP%d@`!p1yF1pZsDTgCUeVjw_-szHRXgH(gpxk*62FIU-{C+P z2*SH+jDWZYp^+!E%nE%9b}8*vACIUWpFzWQH;uYSYUj)H16B@%Z^TnrsyRR6=TmG3 zv0;3YyYm>>RPld7H~NezFk|LM`jJiM);X-Ybq;$0=g{^D_{0t#bQR|fR+n~M=r$v@ z%u*iG3Tt9mU~CfTjC#40wUUYXb52?n5Dh7>F<2kgBO;V+IQUUq zobG6r|KP)U@_o-Jw7>?b1O*8iC5l`z0Gim_7cQ7f4CV~VxOvn~GN;4!q8WJTT(Ge- zsO$0mdKTrV?H8l@A~X^TVqY_?1Ti23k{wDWaQE8lti|5`(TT5aP|?WP zaxKC^aKN35>Fju|r&%xWGBDaZ-`G-2`GJr%u5dZc5%B%)njIqtPu(;P&lVM%8O?vw zh>fQXnp4DTr7s;`C!>NCjKBXN1FTQjlfmZ8{&Vj3Gc6R97!`1vn3<6P^5r^el7+zl z6n)q2ifLDRC3&KafLw4HP#{Zqr`bUSo(1;qUlP5x-%4QHkSa|AYg0Z}dmq5JW+Og1 zR2wQ-Mwm9IahI^CuDTZ%Yv<$x)E=DkZu_jt!uJxyyxAbH6V8Rh0-fXk9N?5;^t71yEej0KTocU^btT8j~dVt2J>Zz7;>kVU{U8R@k3geJVN z?w~?gtc1*7t5L^(5upr$!*B0gUX#P`k$0!(=j#g9^!x!3v9VuJf~j(I7si{e*qQ zL3u3~%=)xl=WuN4lF^K2<4ikimgM!%-W;_kno$m9=j2i#k7v#QezW4!RMIK0*PG1k z`AN`(|HveOYfC?2PYULLPDLjUk~R8ln_^=G5t-HjsbP7FoUj zQIMzH)bAKWP13+124VF_h)YGxCd%H}QFd2^@;E^e)ARP&Y|Sg}J9IfVkC)!{m^+xP zsuai#$S9SdC4|fG;cSPY_{E2wB`Wn2u3#NkM_e~Q&D)P7roG(7DA_ha%;2`_)L^Xg zVQ$>6yNx1uL(Uki*fpDi%$i=Xh{T%cQ?r6fvR)(V8Fvn&QTr4ol2!nthtc(Mdc(<_I>z3&f(@(V4N(NZS)F>- zLy%YeDO_d6Ix&3ZI_bEJ5(}DTcua|aNqODNU|LNH8pljqdHGUgXkT^!wPiuDNB~<; zW9GA8x7IUi3=4RDXAomd`o)=N}VgM2+HDdI!{#5k{Ir<)Y+Wt00je~b;(?Oe_6g) z0xYvj#0vahlNg_}Eswa}H8~3`fZ!yuaW*9OLSTn%hLl(u`E@nA}7D8_F&>| zFbKj{RQUQP*JQZkeMIrRPK=MtGdvzs5quOaiEpnlAuRL|r)bKsA+2Wy_sxpT) zvh>mMh`}H>GW29n=EHsdyQZ_Rjk?y2)*TE$J#q>(UN=S+B!Vc{EF;E3ge1BOU+YM% zl!t8S@N+ve`&|gG>R(TP?5VGcUJeIoM&AIlrx2YVXZ;hoLp_R@PivcOy;{|x`GC(~ zi1=}e&ttn)l^q=y(+&Gs3riGSieH)^?UG~bDm*!ecoe%#9C5bRNn0leDl*MA+>IyH zMW+gTD3>SAv{8)GYqi#HXukBoxp5qy`SR?m7(d}-|D>OG+bMA=E^fV?8pg*=7F_fk zFLl9myRnQoB$iqsW1m11{TB&p(_wzOCI^Gm z#cnqjy;U*(t4-^NHFIn#-T7m~&E5fc=PxP1&2Oz{%uqkPwI=O;_}G|k?&={Ol(hRCZC`u8E9K`v6 zD`IhvZiN$w@7x4I@u!kL+wwOqQqdNho;xATqzJl082cly(*20VNTPEM=c@=;^f^8S z^Mb05VLJ1YgrB`B+(m0$O+}G9z~RqF~xo z;wZE<^yf5|f83L<$x_1U5r2e;w;UDqEaqN*IN}=hyg-~(OxT!qLkTN4KvLQx#on0+ z@8i0oW{yJT91mK*ekY0rbc{He65p1 zZM}d81%;n7(h3M5-Z{+p08;&m?MW3!#m*N_ z<)Fag`^IinXm|wNnd(JrOABISG%U+VksEZ`g{^qU-w7ir@(biQl|Yz4PLk1BBPZ$@ zrX51>>5bokiLSwv`QWY{L!nfaY2o7=1i8I$k(x9itwo%Jv{?2FB%uQaZUb6zz%_>Ane4 z5>~7BXV*f`dJe@f(=RBVG`|(}h53h^tZFbh0HFM8Bvu4(g)iHrFHmx}nSopBj0=MJbX(l zL!<`#?L}#z`x)Uvw@Z_`r%p6#9!Gj=coz!dFVX>}_RZZbY1h5ar*=%k(L+J3IfSV2 zQN;YpD=V`aJuSZA)BP%4?K!ukARNwxl7qFFYgY~jPh7FJ zjQz3UgrNFqhn|`FYkxMBx}Q?fc=dlP8iT3rE@J*qVO+@|qjlhYh6Zlg_cr7KNa5Pu zlSgCk%p8wkc|BrKw5joCO4UZ@@+E__(9tI%r>j$vB0gG&F}l}An8qiRkzA7V#Wiec zX?2CK91l!aYP_fAokTU=NyB!6(}L_YY0=dhcx`})PM|tAOZYT!=4JZJl^Z$}1&8)h zA8$;qjJ3Y~kffEIf8I*`ayoLcMB>Jp_k0Xv!>0)bXUC>ep@o`(b=lWHeZWkEE@xka zOI=mhJ$&W`6S-ZIK>PqQW64PM<-5w&HTASXosAUTdCx$xTY75lEY$Zs6WCxgM`HwB z6(jLYIv4&DQ6HW}!#bG6Bb2+nC>@YRf}c5dL5mS5qNsa9!zO$@DxnQ9jG)ib~qb%_3DkRs7R60 zR`I)qMK!o1)e=j$$l2_i4>Y}sm-g#%j)AEGFBST2M~)scN}R9by5ryU*2)k$DRKqY_a;;o=7zp5$UMS*At!MWqp)*JMgyT!W^n0WRBoP#zo z_@cu&y5f$*X=EIA~} zv4Qc%2R}UXq8jh6jOZ)|2dbBEBf#QAY63;9>Iw6%g{MBds2s+0+H7Boz66|BrC(-GqvSYkm$xn|0L zCx;&|#RO6;2B6o`37P@Fk$b{RkU+*LWtHe$+A<~3}aW;1Q8#=F?1 z&ZWyjQtyU#&k)BosE#~`QxN#$3og6S!jNd&T7lK9@wau7t=3#l(FdYpLjNp>tqbbJ zmmU1eoOI`!<@eiBtOVWRoV;5$(iS$x zoGA3L;>kf_;ZBBJSSqkD$8v z^;oI80vE&5)995`71e(HEqK1DPe`upv^7;2$3@uql;^Ki6LyFo~>V^4!7tuSSV1F2sv5`H%6u& z&7*Pv;Bn{`k#2eT{`hO7Gbi;OCV!+~KIsW+CK zfB9@KP%WLE@A&?&P5}^|5v8>M*e?+f{wnRK)fOTlMN*ytMlwt<-lI$%Omn;;Rq^)z ziZSqW`_#cm$KAv)Qh$vGM8^ZDjhFqqb%kHoaw93@@jS8DGqS%JE&3MtR0Z_gB!uEH z5ybp>Lrtjh(K}j=l*;=95g)z3inq1GT7g!dv6BnXTfeRWdjw(b1kBFSvD&3DI>#j7 z;TJsVnJ7I0wEtgv0{EzY9&l`3y(ikx_=$FC-!(?`t=6qDh^0bP9zX0+Zz*!|{-n-{ zY7xvqODjdJv7sV^@}3tR|JFvdVgd*ZXHl*uLm8pK89-n5C5qo|D1MYNt%YAQzYH|4 zL~0SYG#Hqj3iKjj)?CMx-T=KtTQZ9DKq;mrEniJ`5ccA_+FxrBiUQhqwgz5J2T`DS zZ?+8wSX!l>Tm6nR$iDHguPCK7Ra}!rn-gTVyF_rdIdB0>~OGmFYC~ z^-Ez6@-t$1f!$3HX`o>xJtIdr_IDSNK{Q0HHhea8;OI0L_9od3&jcu~CYdZZflud?TAE#T8JwjhT8H(9L#(#e1x zKlMv2BuclOz$WJIFShq@k^;J694YYebJu>JVy}VmfPo_4-^gYFKrfB@%yF+J9HF%Sius0Zyz?;3wO{S5k>GSs6+vlmkb5A0W@=1g)TpckY0ot8^zcp9Q8W4Wr;3=#=pr05$;OUU-SJy6xYlTG~fA0!hB2zxSQ(? z^gel5Y<89dGU8)P3AAH9Ae-D9zt)E%uGNisj^ABoj~Q<$*)tL} z6ijXVo{`AfQ&;0Nc;K<`8HBic3^RyYDBP0{2)ey*y+8bc!>e0e3!9=<{xIRF7v$)7 zsZ&ceZ)vw@cnRUGq3{Dk?tRFn%Mv*dB6CA&wACnIrmVOSElvP&u~7+eHV`nxcEjXxdNiqtxyrASx;?yIdbrcxqdC zcyimx6OilLo`k+iuuk=tWE1 zTh7LZYfAGM0V(el#BS&>-L zQzp76vEG5}0#x%5ITZ~}LFGpb+jAnPB#wQ-8tR}1XF0)Cdz(nD%a>tWGaCPnY68-L zmuQlB*7B=~QVPH;qR*}NYfW$7d_c#kyeu^pFr>j_Q}p^YCpj+Y&b@*b`mt*fMxv4%_nht0N|kQcXNdw2;!j-UO zJ2>#|$b*gQIKEVk(<0sdA^BPN>#ExNHN-XD-5p)6-8W?|_rKNR2PzxYx@8o<8}~se z4aI-p_z>WpIwF6!W&TRK(eYmeNuz(y_6cEl0mze82yBfLN(6=2y6EIOv~k z)GaCT-xj04BqTtI1@ej#pZro;bwFho4N}=p!w%I?F&=fgN6huun=pIA=RVD5(uq`C!Wna@E~-g`;q-1HL16 zX8bToSc?sV`~EcN4r(*i_`7RHz07AP!Bl*|OoDrrzy;<=yUWP`zzD%J=b}Bn zwd8HdfA8FDByGL>=wubG@IthTt?k%Aq@;@e*F~ilNlgpU_m>##UodtetPQE}g;RCD zJ$Mk|?_IWrp7vh%T|-Ai_(W z?5CU7ft2g+jUG#U2JPd8k+P2=ZcgHC>~G@OjNvy{MhoJDO2$W1w9F|wo@#nn!r8Km z-;}!lVqCu<TD zXp|tm0Q3%HP9R#9dTlziTk{AGdix@1l9sin=Y4%dwPDycb4y$9olW`W43e_p9kE z8n!Sc|La>qsr>;Flso@I$zN^JRYu`)Y{|}{4hs*tCm=shdQC>i-Es@jxMTJXuHwi& zFDiso*)=SnO}TUJvkha2gNq#_tUsw<&b`!l#gTv4raqW?5P2BNtK{+K@?%ll@++k73)WDF(}g#epbICwelR>s&cDehA)@7=VyAv78>%ejy3xLiU|;Z` zyTh^7K7u5T7t#i?Z?x+VSEckm7+EoWj3+k8=UzP~Sm6O<-P_-vAmWco{b+*VcyzU> zWf+5y*4p`>LNiih3_>QT&-rxc?x485^jAf<+uz;ez9i|&g0*N4)=9Z>Qqq?5nd0~N zFXV)`%i3NheP(CVJ0&@~G80V2cxPH=1qr7@2hc>ZO4#o9^c_~_&-dw?+nP1}Fu-S2 za45X(r$;Xk*9_~63^Of(16i!dnTmVKx#qk&MU6$TD@)*5Ul%8LS5^19k}QAguItP( z{rD1i`+8MXpN5C4;O5S5uy5l6wNJdkpg-kkxn1viSB+5%eG7iDyKAST!n1*cVpmm# zo+{jJ{^8=tFC*_;H;Xrm14^8L7X1G>?f($%(5t|)5gGp{czUAsf+W}kFIJ-CHT%TLA$cFeYvlO9H_mTXXeO< zeHHiF`5aozEqQ50BoR~(k#N76J=M8M&2G_d)FUUlks{TuaQQN{9;GWtxAoIN#}7@u z#aqx$T(D*~a#u&fZg;QyNF~eYy?b4@XGC21;AC1`{Hh0#HXqOD8kjf~Oh!we$Mx`qg-z1!QHJmyeqs-7or z?7=-Ombdrd6;43?<@wtM%gjf8f*%$5ZIhc=mAvpU{@%M9b~By!v>v#+r=E>c5sCV~ z6|TI|oDL2%@84wPTnwM7sc{PVdGgiQ+HbR6^Md!z3GQL%2y;%kp0>HRnz?Ye!}p8Y zRD&qynlsl{$c=}`eh$69NoQ+fLR!3b=df3|eKS-EM%@+p;bUXOCzl>ck&J$T3Xb3% zc>QAB{c8RFc$ccGwoDU|2@NK?E{oQK=BhrH<81@7-|eh(1W-OEnBm1j6$KOzt?M9k zK%>CA&D{FX9Nkr3vfmG@Ab*(fa$nRe>UJLVLoCTI$@V`RH#c3TM1g;$G=RX35eT9^ zJ|}k@{$dEXscrZ{dgo6Ws$pMt<-q8nyYD|DkhGq1-%wQjGXZ>(?u>az4Ni^Wa?DaQSR+ZDnK7f`>vgsm2dm z7g8F>;Nia|`3kmQ`4P9Vvp#b+-+RAS?()Z~3|hKx^!ZW;8- zs2Dj#i{WH<2cs1wy!fTkdYSm_BlW_RsJmd5kw)zK%|J1q3$ z-948aEl16fJ8qt~ejDYRyWJlfH;r(9CF{k@dE@#JJ_TsNBYvm;&%-OYa!Xphe@e2t z3{W~H1RrNSz)-ae*;m>@W*T!TN%bEQp24;32RFP#`iKJx_2qHzUMfHwEM{%$U;3Ge zTD_Rhp2lez5^sQtaoyRS^7=b`Cz_pe)N5pTnDA3;)5IQxHShXJr_cK8sw@&eRu|-Z z0r^f#9v~PFZ{Mqk*3f=->^^5}QT^!s^42-`yE?BAe~8^+8!Indo2K2d%T^j>cxQV$ zX?{|38>H+7QufthTrAN=wtxAluVGM-H62gA3GP8ql`zAWN~Wzwr?v*3nb0^bsdNu4 zDveqmx3C^H=Z!47RJB>#5urFwU0V5GBZ09J*{s#kbBy?-5% z)^`}K4>?T}fDJpSUNK-PvA$Q1fF-ME)T@y!>mQX!9pIy@pyG~HN{ z5DAg7p^a-D3BSNNd-_N6rm;heb$Y9DfnUm|sly2`8u*uY{QHpUc4I5FNlaH3(KDvA zcd=_{Z|4}uJ`0(&pX}@hY1lq3|BV)NlS>7lo8CYUH;dpFGyi^+eBKML`TKh&15SJewC;>k4EPxV1 z5q#PW)ojOU)HY9?53Z1VvoDQuMtV}SyDW_!IV~nJm;pq!h9Q%T4z%YzfhB~6?b5#A z+DdBccP=j(gjd-BGe0OVaW5H+8}P_GK+w00ROVJLs*Xae0IpWzm*=oip&05&E|WS% zwGu0HF2GznUFjb%1SDxGM~*Q|Jh@5{LeB|0HK0s{)gm@F+3V+cKr%Q;ZnM0eHD_{vymp}_r0348m5D!1P|%Lk zs0lalIxjcsRV_f*tyWm@Q8Oe}iS?{G@l|)#z_Y55 zo6PUsONQO*X8>U=Sdh%sBYzeJFgw+cGL~#w^ltvBLTAuoWa?=gokW?sI_Vk?aa&x1Z(-P1n6)QI7$1w~zJx3JpaW8Oy{}(9y_cl2 zJ*yc81k|av{$K9}u~B@-(RU)zS=NU&Rr@7_p;ahEdA47+dkMK1c9Z#4WnY9Pk`X9? zaP$*gT3?%1W(LN`CPJ!Gz5`EeFSx40l>pt30?39AKVQ5jpPo5rjYF}$I z+Sn4x|Bt}|DPu~L3xEOWc~m80t{#xX8*j-Gmt^3G2!VbIhj7 z4&e#h=+&_vHPv@_rm;(x-tI_W=c6h<(iL8n1gbWcu=RcF@B_(1js0S~Dcya2+Y$*f zt9;hGIy~HN)GVj4yE@e_e$P^{Dq!L5Mv`-1sNi8*UYPnj^|E*W@DhJHjAaP`7GR5! zzfSV%c}qK{0ZQ?MiS|5S2{;T9?fKa7)u?J5EzzgO%71iYnR#zcS3vf11XU?1K#4Kb zvdX9+$fU`3Nd>cTqUZJz%o;WOR=dh4vD+X)I1_XuX$@TxGDTzs=)`fcbNgq+zmO%u z9k2b9A^nFeh0#+sK|-t5exFb`$K|yMGApP`t_(Tcb98u+7x8HTwY3zMbI2FCW$sXK zYd$sDrmLwX;`yE)v%rJlqZ<3d@eL${WDf0D2o+^8DGc>@1{J5+4!FGBbZXqu;bz|J zQpKdphpHj!uiMU#aHOf3*Bqf&3=k-0|~$zz`ia-W)+N0w*o*NZ+sX;+aKkzs81xz1p_#Qrl^2PU|ra z0IJ1imhJl$c8iM0jM(1RMmFhfjA~wyzY@u+mHCvqY)M zQ)Vb2O7N!w61w9x$IU7jlwq|qPFKwr13uH*{kV2Y?ps~~q^kcs(EgeF^Huzzng3Bn zEWYKrn8GEbx8@AX4h_o~Nw2Qlox0ZPsIN!g={;z@U7?~;)|D8lXPEtxqM+G;2`Qg?T(8J0e&DRy}$*fRlz_< zm*%Wgd48(|A$ii9W+J%b(2hfgu1G)qnF?H-GyCM@#zv)Mto@bHwPZCuG|&i?ed$iQ z%~aI-svz>!d9wDBcb3!K!o@hV2vKbn>hqr-<+IuDFKX9SE{eyg!{e7SbnuL2+#ppa zDZ|U~-Ls`W`D=z~>C(8;R2dUVOM10+rk*!X!jH`Uy>jgDlXR-3%*17o{lbnn$!^Wjz4UM3dJKq@|pJ%#61PN1}K6RX}KK2_&ewRi@-^EO==gU24 zv?kiclr-O0PqN6V+(mjG4%Dv2F@<9DRF~_vUn-MSo9<7JrOVzMob;nwsf{xsLTp1W zP9o648tduN8NhkZ`TJxXm#nJ^m>xyIjVuaHiqJB!oze;gQBnW*j|EOP(BQ4PUsrk< z!rEyu=E>VKhj)!c{R2pT?mfBDvi8CU^Etw}!-HsqPOye=MJuB7eo^9;|BEmp6WF$iQK~KFbx!iYZ3qJ-9=px39 zvk35yvc{aO!_Tii(dRQVVhE6l8*SW)Pg5rrdLK?kF9oQJw`R)nFAC~z4E8G7{yABZw+V*=|7etnHE?7S|xO+l21eMdu%$k_MTIXmKH+Hz4=JkE0ziB{fIo{J63L6XV zcK4nY(Y}9}#}bod4Gt%12o+>j=|A$*u`<*EracUsj__0PWaJ^n8l!tP|z@>0`!sh?poNCrwTL zpc%OU>YC1huf|5h4`!n+J*{E-1gWa%?Qf|u>L?}LHuJtsHTU1O__w6POir+YP?PVR z<$-%6cXHXOR(!j!-b`m-?MEVP_R;+&VB77>&GUu2ZVf@a3%YL6puqWfu9jY|aejLl znaktLqZ)#``sSQ3JTo~3x6Kbcy)#MU+}>*m;OVtauJOR@e0a2smp*7O%RzR7px>ID znixCo5`#GMp{m|@Pg0)jB0T4~yugrB0d)Pja?q74#lhzvX8Pam;87Do?C)+5l?1T<$i6XE z6xG%;s2^{SdhfYlTuZHtuJUncW({GJb-vr2mpJqG=i*9|t`2n365M1ne4$o@Dd)`p zKm#Duo>ppVf}((xwTM=zmIR}bFsRGHsar#Jav5#Pn$vYrZ1N*^L~*Y(=%WxdA@G5J zrlN;QbF=IHF7BqOY`xp@iH9z3RxiR9r+laE#X4e^G<~h1_uNd!LVBOd&Nm#t-!+Dd zA$+6`#FeI3lG@J#^hRAu2JQ zM@e73*es@&G}quB%ol*GJ9+Va0DQtYpqWnh=F?HUrc}s<&7KCOg9pKU8avC%2d;z7 zKlT^MI;I++u4M;?y_#+gY$?*Be{f={Dz>ro)`x)fD_{nf; zCYBUeq>b>`93+&Q759zygQwW;I z1SFHi^&%l%KvU5B4%7}A0$G-BP--~D3dwpe1K76+!arA#qN;bfJ|<7Hog&KAh*YV# z>R8Ep=VW`4jF;*GnS|i#hRA!1lQG`=L>Menb?amGVVc|utfI}X^~`aTqH8u@n-^DK zb6d+!?{Z(w_u|*pqs0t2(j5~{&`_B?Ad^F)lOR;^y(#eFE)s0%VIK83k^O)D4Fj7K zoQleeoLD9R+{+cEeI)>rvE*DO!39?;h8R03SbPdFZ zos7IL*82VG)YOPXWLwj}#0?^Po5iVC6GxC^4_+v>q{-io*0#x`4jgL6og44>;%fa_emh<-M}P#pO$6ye zWYrXm%7*LJ?LQ{AaENV;qET*x28L4!v8;LF%BFxXU*-{w9sF-<|@K52ZgkgTEoPxnjFmt1>V zS`5GZca5Ci|qJpo%o2dUX%*xgZVs`{Cbjogz1=#GuWsvQMf&t0mO za8@1YN;r7OY?-d^@SuhD0*gj{<0DPJ8NA&6GXLr*&EbBi0$el*q%6 z!n3cYXB4!QX_E`4YUwdGZ7XdvEKk4Uv$>}N&LaExQTpnlXZG#PZf2^>pZQtF(zjnp zP0*cbt#O2241r;GWQl82!tzU|l>z#xqtdOEiE=w=2H_2vtyLkJEDWucSD}Zx)?Qgq_>bB<;B~e z8gYM4UMts-juw-pvbK8*(0~|5Km!h@1VvcX&fo8SqmeFa9|H>`{VeGzPBRzDD1Qwg z?b@y~NjtR#dBm@!=TJe)BirYWZ8?NQmAxNm`iQ8afygpE&Vsy`gI{Z+dD5ikSu38< zK&Tpmja5`{=jGjR`S_`fG`A!yki+$&>y-eCRpr7Ns0)-2PFNZGx$|Uo-O?kD9FWfT zB5@w2=^6Cm;|)@peoM1RFgC^3jE@z6h^<~lqgtBE^l#QpeoH&Al3I~a?Yj#&KvYyq z1k#%4I7uP}YO~uk?>+J|X!U2v)crMlT)cLqbSz}1Gsf8z&uv#ZPEPkAY=g_r*T0{3fTnMg9&^m3e@`|1XO>RODBjN~6FR^s`|yfwEE+DSuAvrWBRMqr zu6nQFnEg#+Bj?@tusNs==hs;Vvwh4*B;zFkZ9q{AvFozwM%t z4Fyi9 zixL!AC4}?ugvV_PJPzsqOmyi%NmH>bgp!lJ^(BM_+#-OwWpl=!@Gs;9yY022pz*lJSZ z70E^GE>*Jc(7l%DKRtu6yCU1C|1tAl(OTG_WTHJ8Y*3GP#v3)h?6nm-hiP9xhjOOu;N@p6*2CQ`9c#2t6Zxe=vS+rWD_q22y| z<3$eCgxTy^<^7FlBDB!+5PvCLxJyN1^0}UHBufeQQxxMLK_f#2Iuukru4{Hk;fTW2 zw^&2_<_k6Bm1i^iNmO0u2*+gNwxi(DLy!76d#y+hkA@D8yJK}S> z4h+&p_GtaE;`n5UzjymAZmZ&=9QAJ0`OrG48*Vc`okfh>p5zk2 zttM0zYn=d@PP&#};x(8DZBM6)2n35yK0YSwQ7t5#`amYJxGqOgYSJ*r1xv)y^FQJe z`$OI4t^veImj!+MIKT;lsgoH)<+s&|b;1mY66!9t1rfosDd9L*WK|I@C&-kj+B?T- ztO5#I`+6Uax0>0RFC^DybC7fexK}rkx^aBmWxYD_553j@Kn5ymcQF7V(L((~6of3$ z0@lCyO2@RLFZT!_G8p$rN!7W_gfZ5@ZuQY~aUYmNZG-3YxA%#HPt{3d>Wae;UJPX3 zv8aEAiIr(M$*Qp(HMekXtD9df(Cd+(-)3fpN3Cr=9yfceBe_}X4Fv8_(p}~8=2#pML<*2;Y9)SG%Ze3;A zYtuvsT=Vn0y4P=e6}s#T&eKKRVi?l|g>3Zh$U?U>?tghERdn%Qg-aG~iWCGm&il}w zNubWTd$xT=DV!j;=Y9i}iATynUo*e~6WG*X=H*-+?$*hK`JWkB{BG;{Z&A=!APTxI z0D}Q*ruBsO90#aSFVdjq^it!#W%Fc9Q52>|a>@3~IYxLC^C;qS`4z(fQ@h?bqN_h%=(j%1@Y}R{1E=$fZ1i*j)!o0^>y@m6nr$xmWcI}eb_*cigNzw10(wIZlXG&d(?H$8ABJ-@6?04USIQkiBDgO&{vzfV4QLR`Q28mE$&Fxy)4SHbL>_nN@J%A8_ZFj#FX%m<_{D*`l zhwMdK6B7fwAr}7cM-HgGmbq2o2UBHBRhDfms&0)!QMgK_QlOkbI;JI-s|_oIjFI~I zvC8~+Ts5Nv#&7F1R}Sh(nz1Dz`vpebj(fMC1?L<*YDS=SHX^_ArhS?IHyBF>V5}t4 z(2)XTwbaQ>p?Y0bEGnrVIz?a0SG21?c1QEz=ijY_fg}xF+ZY97i@ekc+S*_(=<#@fPm+)?pq=Y=Ns)t)3RBY z{zN%YR~zu}9HAvPwYfdH=>BY0)UmK4jp+Rm6m%!Xtdy{7)&LE1tLVk5Q+b+GSpm$M z_7OKIRZnZy0SF(E796YJ4Z#6p;MFBhU0{O-oT#4CC}&ompW(q%MqX}V6~C=Hp4}*= z*nJ`OA2~*fW&nUjO<0J3$_WPk7NI*Q2%3HOfMGAz_KFqEulbe|vlVkDgr;$)6HJ78 zmMN{gj?!Tg#IcjpQm|U7#u#qUY|VqOeM$EwSyY)~?=@8|e%Tpz$+D?%x-Mx^p=?qT zTqd?BB>{D%0ZhCT6gU;Hv>c@0^cmk08%t~_HE^vq3F@e=Xk7^)EyV5QJ>5&Xa^N)i zvs?tXzZ|{Pfi%f*9nt$EG`ph?Ao6DGl~{^?BvDI&L9<_eWasN^aC`4>0yK=PAG04` z0>wYf;JCD6pnG+%#r6sx)XQLaXfEH6SJ`rxNRtT+Uufl9es{}yx29l*#|VdZq#JjJ zXM?$0!_G|E*E3h0=A00i_GFpXV={F;$G^*1R!N!^n}KEOD?T{ZI+R+{V=O&t9Q3ta zoA7(K^q8QTGF*RSP2BdItKh~1KkzOt(7sull|wW0q|@+5Z=T3)RjJ7zFJg}pifR4- z^xSNx?w|mr_qfbOiOj=v7%FZ8r|2tc<8uz{hWa*Y7ll(KxzmJ-&IJsMPQr+>+n6K5 z32JhHvPf{#l5FW!Bq;iSDsZ|zS$+1HjAY{SaK*alC5YEBTSVOy^_2M*~&--T?*fHB2Dj3Q1 z{s-xGcG8OZzvzA^KxmZ=@%0otCUAtM91AU<=Jt>>WAi32wH#nH54^8P!!nFN?(p=UitXz^Zrf-$9`s3uP zr6hu|cBm@qz!kzLb@6G}o$NiUAVj6v@)X+5ym<HFaXaF_<<|HMLl)aM?k8lnd-=uy2E|2;O?E(yr|4|4%`v4 z-|PBcDf53$M(Y>@L#U3UQ+$?~uWrH^0nvDtqD#lPJ zR zcF+27uNT{O*X*n`fg5*?o7G8I0BQ@SmNA#}5`}n|-M49&zXc|S1eA679z+YJDiTYS zJrHqdfM@d8>M*y@*ZJUHY5Ah zrE{rDBIPMAX!id5Ii_&ZP#(jmkIY1;5cnWf?vH1} z&7Ww%L)?I#XHU3gruqA9-}4forUSea8)Y%jKr9~-x)x0Vy`+* zKQuL6t^r}S#3aYN9I+>eV$AAyVivfym*-U4EL4jgF=jC@WlEP*8yJJEG&`+Z?dsdP9R zvV8XP1XEN_;G3Zr3N#Is7e5Nir~cqqELQgICNMo&@6eJ-O~Sbpy?HDzxNg-poo9T2 z=+wHft$tB=EsCmJ!!onxt?%+6dC0!Zz`Y0UWFTvs9TL0**Lp_Y@<6*cC#dSg@tI4? zHUO#2L{Y^CrVUm&r&->MRhD<0^0Mx2O>g<1I4%rQm! z?%*t$#GimbCxotFxnyK@F4$cneEl2u^7Qi_^ZxWi?I_OV&ou$AJ874^=|iXOHM&Wb zIMhYk=Hj_dkW%>A-aX87(Ux@k98LBw@}%`n(u4f%wdt0cD&Vt?LoT}SHWYT4zn1Z)6?!_QNMc4e|-3 zdyRtuV?#neA-=^+;eUqrYrqR&V5d57wwyBZp7X#ERqj4KmD!&&z0;!&CgE)}&4nyX zA|5)`A*k-T8-BD6}i-ioRNxP4(_Nir<5qY|pH#<-i+&Kq*(LO}LwBS$?il zUIONOeYSY7D?huuee}|wA`R6V1-#VgLvgf^LalfXVj4&CK#BjTz+4< zNC&%rKULZqm7h2Gz1WIVIlM`#Y7WvdTN&mpEvWY33&zpp)kCdx$H*3kJ661$B-TXi zVZVvA*e`Op?w6J)3||qd#0h=;abk2;e_QZS6AD=L`p`c z0N#$5^~zE3_9bA6VNKSN&$%x@Tp@2y0fE2(%F|6+HWSO3s>kGba`=k~&G;>)rDOiC zG`O`Ojg$$m$kv?$IW~d0pq-IdpC=FcTZ2k`@FQc#QB^7dx4M1xrz^0e*^52vYn4py zSd5Y_wmU`0d#4WCaX1S+jht#+KmB}cC(XFNrqDO&;mOQP5c+lQp?_sLa}1O`3RC%Q ziVxcb%#m4H$06TUkqVn7hl`bP)(xmOuY;hRxD3foKtoNq8!Qqdnu(RS#XhSm4mFuT zE6Vpk{$WwS6`~>^5S3JvaUn%#DG|__cyszRAhwb=%!KsJqzieQu%tRhe%`S#X?U3L zO8>Rev0=tcHH^uz{CUk`I+e%rYb*M?oixbCa;bLN5#Qy?%*3D>pYFxuP^9&-`q)1V z8KCr>Kt%^?h2X40At2X*Wh?9L@KPd`N|DN>avYU2$-^_|8r^NhC%Z%oeQiglv9Y<; zhwSY^o&K6W#0j68g^~PX-^L$4-9JjI7LNH~@1UR^4jJW>s4>lpf>QXg<#HWL+V6j< z!v!ON>)g4`1?&`q!ZtbBKuF{m?{-Zwr!=Wtiu9#qUsWPPo~g@aatxwO`qFtvxf_~2 z;bp?>sFm4`EmcMuTi&u-es9@eaxgvzdvxRt7NkTPlq&LdCCLF+d$^{~-SO~U2ISf>ll;|?GzD|AF>8ckd3SafZ8LQdn3iMA)8b@j<4QBZ*3}`^!R_;x!#wi z!YKSsb4_!hnf-7rSCJG#An6Rlyy`M4Z1zh-v4UWjYickMtj6X*lyZIviWxeEP>X5M zR4~aep`V0BI?)QL^Cp}j6_)w$e@{n5^39i@-@ZViH6Ng+3xFIlo z$@z57ijb{&*s^pue^IL^bl@b@#B+(ny0S&%T+X!c^rq3V#A?-QSTq~f6~LJEdprEeOogcC_gVx3wJ zAjRo(0BECSP?Vq+4&<`82W1Ed15{rS$LMQmAfxtyyIjV;6%16}Sr2p}6x#uC+}Sge z%nJ&k^n#$a)jG`UR5AC^HofFLrihHpfUCj9V5;c13J$0ZW1F~CY3$K<}#B^zWJELT;#Xk2uYip&9T4?L5`x<@M1k^w~LbSD9I3@8?Txwq% z2+H{Uie^@tAMqOJw3;8kp=<&`j^YY(&!vU~I%i}XUoOEYKt0_t3^vQO;4NpeFjL0< zFc|RXJ1WgU9YMb_I$gG;;jdOUrcxhFcSq^G*mXjsdND7`k>kS>xSFevB+y4e{0T%u zY*MvMy5wC2X!If@={(y9K!E<1K_)_0sp!d(cIkJ)YP=Px_WSMaCv!ob#--fb8~xpi@{)? z+uE%!F5FyR-ra9+ZnCp7cPpXigL0TbZcHEB#>(XJ(QnMjIOb{+^Y`c7?KS51FXmtC z73TJEXM6eR=m2v&cYAw-x%+iF=Yn!++)c_tC}C@%iu5iaL;`&?truQ4~bch|RfH@BGUTg=rhMi4G32$zCCln{i= zh=_;@3*E0$q9RfvB9fvak|H9~qW{YMp{$swoT!MbsEC}1$bIohR0JU*E+Z~3Dr-U0qW{ee<`r?#|Bs zo}Rw`{*j@f(b3V#iSg;Fskzyi`Nf4FOG|6Z%WLcFo9pY_Tbp~kyZb+X9{l=Oj`sJD zj*gE19Gx8fK0Q4>KRvxTJ^g!m`S<+%U)_3ndHwhD`ttJT@8x};-u}J3y}G)-Z{e$} z+v}_Q`tJH)!Cc+9zdElg zf`nBgORXlqCx%AYd8xmqpf3TY7|o#mxo{wbOTWx)K!~~aJ^a~VmU`{SkxU7%pGyO^ z#ou!g>R=kux{~n%wG2pMHEpVNXu;Hde27MUwMc_$R|R`Vv_+bF`YOHU`s# zT~>yhyhev|6l0jQzt-&qqjk$IM!wd&G?!WqQH5Id}<$0zFyPD`pdHhSj#8N9`vAe)yy3wVTKO^0ZK4Hw zT}}3sC#JZyV>eBNp*&IOsBM8!H0wLjmqM6}z0|syE95(Hx^)g5(OrtA+};o4%jon_ zO-z4YrmiPm+zyN2Uj|)8vBtrK*&aT(&(y-g7^XxqIZ{O<;STT1c{0)g8>5IMoeaI| z?VLqk^aY;$81t0Wy z@wm3D(<&yS?|u3H=K&IlG2uspFQA$$uD~NE-z85EbV>=&q5LM97Czf37~0D>7Q=zj;igIBdZ3a3Up{e45X5DM$mCID%hHfl|Y)Lu}sLgV_f` zLGDICseIC(-qr$B848ZGB|1N}^ zEyVX*j0qszf3yA>X7O!=R9vpNr7A49U>+g_U@OpU8&@-|W%>yBzmyY-ue?s3dV!S3 zAyFd10*z2~ox_nH)xpXtS=@u7N#2Z?11vEi2vH&^t5&NTIFV7XLBHU(V8GVFO|o~) zhJX}i|E)D@yztXc{_UNU;Y$wvo7M_y(YJkUoych+q8aHKie?0O&T|@S+1N=@5AVEy_wt9(j8L~Fjeqz$6FEm%h~2-6%cIu;v2$F5 zO_GFP8H^_YygLAd$Civ3vQ);Jbf`Mw|POQFS)b;zY>9NeQ}q92>(0Jzhi`T;|j2@6KEv zhW5%yS^GvpbzBv!uvX<)lgJVQpxEMEE1C`8!i;HoaC@|2To;9TfpQ#4wYZ%+w#(b( zah~{dDrTM#t_H-cxN{PZWL-XhF|oV-=zY9-%di>RxJ&3gIK(hbO=nJOl7=5RC|A9n zs_{$p3x#h)3neIsfI)3qVc;R2MHOspb*@QcEf#+Ts5~$AWJ@cJpMofqp^5}8#>x3m zFZO44Ph>cH*BZtr?=rK^Q3{fyngpQUcng2kolgb(a$D!M0gHJ-&2XpnjF^+l02W zm3%>NG8g#{IU6SW)!F-uX#Z-lmv-tFtsteo%$TcsXQPc9 zw*%8Nh45hdOU*u%?7BKEioEpp{z4!ct};{~GexWK7{P8#t}|#PvYbK_kE|>+eo!tR=$n#X;v0L_skC7}QA^5gvxQ7Gg23{@wccS)V|I zkKiBaI%=ajvW9jX4!prALZH=iOeUE8O)mk<(ueF2(V8-w3&Ik7AbAsd%W-c}*g~s| z_L44KCNM@o8x_T9RQ5EUmc@?7uajm7wabFyh%XPrZ*1JP*AI9P`R!!mlsgulcn%&m zUsA+CDkZwvJg{Oz$siBLszdcNp~b)Aye*y^@G<7RjQ`$70VZ&H>`UF6F$5P%P9(|! z0jy*!aJsN|DVabV$RLtcL)hcn61nsD+LWWSva$-~*JEP|G|>6)Ij5hb@{+=&_d?o3 z9cvPYnK!9HqiRc+q2{G{^0{lyDcRn7gghe5zbW5`kA%W*f zF=ig_!?&&ViI1obL0|F>O-b?vact_UOsPq?Y^%zp1$(esDqlKt5RjUg+bq>wR7qik z6op#1xu5NRCbDK9?D_4nMTBJDj2(UD#IPKcD~Iq?dD;Fa{EwHK3mx#=iMQhLc%*!c zC*fF%-Jyo$IPmy@aRp$AaWlEz%)zajSlg%JBI ztjkneB}R|HQ#gRJ_G5}QV@l>6O|5z9N5q=%41j3Pi*u@|So#_|GT#>sNV(v->)1ul ziR1k@;Hb-=HjF)!(Tn-mVyC3m3xj z>GjSY1@x!8A-Nh&#(f^){+_ti{d0OY`mFwMcekO52H&x0=FkDz^?0_&R#Udxpdduy z802;g(g+L0FZQ*&cwpinhSeN|yd zf)O(-d#BCYhyQU*wK!4gz#3=A<_+G3DWRyjSihyu>MJ@ux*YlXfZ>3EdayvT$c;Y9tcNKco~BfYRT&28@AV~;Vm3T9 zjIguM>PMZ@fDdjjE@3f8BuE)FfR2cA@U69S*FBOxe2+&x*8xG4#kBf{{%xMGKJ*ds`iXIVy#Bc7(k zWsiqhUIJ9CKwDu>6RP18xL8X^Sa^>Ed(u4ICGD-dE^!%YqUdK_!B)@tS%QwdO*E$B7r==r3O+AY zA%i5zqi{p1a5wf{fgn#9g$k0EQ%SFYZ;1zp<-8K`x;?6W@ZTZ$ix8lEecua5l50bO z#7ICTM-tu`Rx05FqK} ziQSRL!@@ed`b>!?Et!mPsy)w5HQn1I16<>2sYua=E5VtfPW?o(do}f~os!`tUZIoe zyhwuJ(Q_O@VOhzik7%=gz(^WO((K6Ms!*|FKMBrZYzo2zK$zujC(`uD67tM>H~Gb+ zNw)DI%^v;oY?+xrj>sKjqJnu{6|#p&YWT|1`_bR z@di8yp*>ktVZPLP@gY|Dk6tI=)}u)!@hV}kZVXKCTa)&jy)4PLC>F|gu!yxH!hID^ zWC|lPaVlYnj(p=2J?vov-3YA(5biTWAMW@LtME;eph2XBd1rX>>yXj{%g@zMv)ZBl z1cct_Owwg|vQl^;^*60B!o>(^g_ZPynqYk@ej7n4pD#Pr8Sa1vAu}03rj}q$n@rUpB%HCFPu8UXp;%K1G>qB=9V&BNEh4{O;MS6?5!bc<7^c6Gx%TMy-1*r%fm#)mgGGp*b-(bAs$10!aA4yu1K+ACD3z~ zdN<%e!D0PfDmX4(WSWP~=x>@Yx2N=CO%@V0@e0q=q{;$9^Wia;#h(6wX~VPEB-6$u z-i8wRn@kN7p)`n3_#7r3Mn-=SBv`y8*qS6EobV6uFmi6klUJ`O1^rl@i8{mcDIod9 z)A+5l&s#s@PU=TWzrimOkJ-aF$+UWfE>l;jHsqy+XL`uZrc{GA0Otx#-=j#z(RNQJ ziBISNQZWJ??_SevyY8Rs;DSwR(QnLowHPvOe5MN(SO}#u^WwkO=6ghLT-A>bQCmZ> zhA)cjAUO`11xg5yFYQg56wrlc=XuO3N zrsCnR_g!7@bC|I2pbZHE#+9FR; z3*l`cpp6Cts=Lug1RYk|-(em^=Pj%RkIKnmc%FCJe>U+LOq!r zpRY`?>0s={J{B9zae$;ZW+KCvoT%VgKYjRKjHq~XYoOsx8uQJNfT32|*V2jhe%jZ=>oTLFNpzak z+0%eNm9wf5K0jr7!t>Eu*T2% z#;L8atgwj20DugP2DRxbG|m)Khj17~Cvx0QA}UGyz=MRy%w|PE82FQX>y(x(sp9e! zl5v{-c1q8D+Q@v^AYj_Gb$T;n+U$1Psxr)iamLnsMnZJPK6}P_8SdCR^Za&(WMalc zcGi2D(bIg^FMGEA#q8_l*}!Ew|H`Rg*||{jx$uCw$n3f3*16c_x%k_;M8^4K+4)rS z`S$_yY1#7`t@ByS^EtQkXvT$n*@Z&$g^&CT=#J9tpIA8>SZiYo)dveTw+o-m7wZBR zYqJ*{Di<4D7u%K>+ea2VZx_25m%0O%db5{$T9^7qmIjxX${Cj@WS6JRmuCW&=dza< zT9=oWmsc>i%d3nl>#{4G<}2F)E4$e%KU-J!TbB-QSB@Be9LxUr!B2%_qM&p;d)4|Q zHED1mG^02G0F+w=S*(HsSMhRI3EEbnE2~6zt0YWoWO8d1qd%yKn6maeiM`htR@SoD zeiRlqIIXU+S*+i-uH~|?bF{7VRnffGqRCxa7n0iu5PXbTRu;+Gkg}i_%UPFb+dwdF zI*o5I-);Qm-&D)lRFU6=S8eLtZ5nlK@&s;v18x}wZt;cC=|5Lm@zBx;R%N0_GF=b` z$^f2{L@oi=n~fH4CmtjQ0b;GzrgB)$6av77`N?=@@}cLsW&1(!8$mq$j>d+ zAPx-Dp{*M7xLRff0HxY&Z}|*pScNE!LE_pbXuO~*=~s{f4N^0hJ>dlrJ03WZv)>tcdG-AAc$%}9~xqLT%ZDbO~DGG^V$bh z6HFkmY7t+tUto23Y_}?4sjdRVQ=v*oF4I*&SCt?|HKYSjF}w^QW9LRx&0wg|+1E40NSotMPt4PS;*a0`3Xz>|v z9F3T(I$%U{`6&ExM*L!W#J+?~Eog#i7XNyfI#7ueszeZe^MDLjLwex*LYOBkb^yB( zB=)4=-j)?X9|@quBhteQOQjkl&VVDW#c4=F_{_CUBpb4>1Jar3REq@nAae+Sz~ej6 z7XabvA?RimG=s9uSt7PdP{^CWlCG#ILr``BG6!IUO(@wezy){-x@Un^nh5$4dyof& zQa%FQB69${Vigm*=L%a7axd#^2ph)sCIPB!-$()jkMZT7)Qv%kpMzkb5MvTW4{U&l z|F2Qh35yko%&=E<>H+pqoH*O*Lt?#OlaS|%(1^V=vJnWKFmT}xC-x4fuoUt>M|;?# zmtYgx*^U!Tq<8(9u(RlBmxO1+!;%3337a_2pFJT;1W}I>&tk^pRrh{2yzKo{z1xUV zVLoGS0c4K53nD&U9uhOnd#D1L0UziGI38gL#<4yp9zp;l-~7$X?X(w)9T{KaPkyeX z2Rn$4TERXKWpO)k>A_Y@l!xR%)HFiUoo=%!!W^;e^Y%k@0z4FcFV=Qf=_SqezLJ<6 zLAIzUY1M3gz5Gb4=sn@By`gLsTtfkT9p&}Df=-VdhZJwae$!Ofq3b<*&%q5KVX3of zkXST1+Yq=^?HJYTl3A73Hi}2S&1PKX?kP#cVK#SU-5o{w(0*y|&$Ip{cHNI=^T&3> z>7wr2OY-!dw;zn#FwxcUa=<<0CVcoNtODgO>NP2@UUOyIu ziVq-#J6yDh>i}I6Vfk6Gn&trA9ZFkmq|F0b#KTzR0O-tZ_UFl^?iGLxq28820<8l@ z5=Dv^N@SWMf0QWn4PGcyJ=J<4+G)zVFFHK~i$%o^j~Am}fEFF$G}^G@oCIfvpjg)L zJnaB>>96^rv|+Z)T%0dbKSAGcNqFXnzV>!_Ku}U$qaj+w;Gp3FHMRo5CtCyuScES- zSw&wlv@>yt19wLGeN%-9sj(@&kqQveQ=}5PA;$Z$N*se$Z-=9+x1I)X{i&Xo@U*wS zj`T7`ud4Zpw}GCf=$V0mzTrzlBU$WstZI_UsUt=%^=C$AUehn1SiF(lHw4)zTNzo# zh@KnUrWpE|*mGkW8QWyO^D%WUuRk|+#SSop2aiPHa?4$r+Q_ZjJa*JP1QGgW#?(KL1n{h^8S^5MzgG>EoYC2YyZ&KKVxt^ zvsQOOcLtiFdE2qQNLo2kR)^>g2?RJhO~x1_v?rB)?imfSf47}ydC@&TT$8;#nfbAc z!?p8)i_f)NOWiH=Mbwt-UTH>lwnICFgVjMiwgjf!wXTG0wI3<77j?3XSWt+l z&&~!fYS~@SeHf&zN^HR>S5JBSv}X-!tC=fI;#x<6`avxZ`PFs)Sv_vjbP zcxz(p%9l@|bR`k8_RMxDy<5-^j^8DvjRhatwlfJ&w%<7pdqe>3fNJHQ7ViP7G_2kP z0NM)dqc+;#!tNix@`E0{O}B^_@Q-n{dYedqF<|jvuvW^$CK;rsZxH<2MvFyLwHho^ zCY)q_%YvE)DCKvE}P4jg7l5ee)* z3L_Ppll<#VMBgBxxLcA4I5{iQEMT?Hjwi_>03qn{0pUP%5tr?p=qxk;?Jm!v0=c*!$z`c2(%N!7_cd)(hIK!8$&^OC~&(Pm_OA> z0yo2hT64FD+@^#=NTG{@t$kV8a}8<+W2HlLh4Uq>0*0avX~~<|+??TYh5&2`&r!S< z0I6udv`*idM#m%ONAM9-iKa`TSw@)k_uEr!`VGt}(KJaYQgWdvH$<{2{C(p#*;oM$ zX4~=cyWvD?eN^hK;p90Ty`RzT^u^CQ*s~MGC3uwHFvwey>l`bym<7>dn}CI@Y?5E` zq~LX5kJHb}OL5MHNlv488C#R(MW5>=^4f6^Z-YN|d!s3PNGw@8gW1^9BCwy6#?c`=@IOi@ zZZ#r$ZN`*7$_{snJnu04YxP~AtbdiF)G1is^+*b@#7w;GaiWOn~687U8l!yV8i!X=v$orEjhLD*`fVBxzy zN=MK$=yVN{^VUR@HCLpOd#ZYdO}`2y4K^KBE8n}1q^S2CPnz&pH)Cy+NJU+rm5!nC zNxLHm*mIPr<;?9gs}bM6$pxi;NB4jP@(j?(c8Z?XU;bMA8ZA+o80~twqW;6HwPZ!=r zl%r}OGhvvNVtR8)zs%FWWJp>1+DJA^ydS=AGW(ssfvET;I74{ z0s(K92C{!w?K89zi(pPE2;d$>{!34d3vG#T03c7>`P91B}Y-w z2-?_ML>QZgt^U4E3>sKLvOMC^*^uy9YW20r%85O7TF?|*c7U~NFqSHAn?XxFU#Xhn z{oHYGCXc<`JWAU^p({JbC`^1)xZ^>dX|@zeJgN(SO^zkA)0!P3{%Wso88wlsLL^o< z&&>!1F8dC*AN^tITg7=Iuh>r-eBq7yxZZ)9VCWTgw|)F$(?e~Bz@jA&dvCq?%s1D+ zs<6O?XjksSFC|!BCM9=couJ5fwsqw*O)K=pTl#CK-CE>3&yNCYds-sA3Jfz9PJ&hD z@z00a3YvFrg=-XJML*|Ve8ROjYW?gRQ(}?PwE@|%&4rGXium=b$~A?3@ZaKp`|9Om zrjyJa|DEEZSKlL;j`I87?5VoHp2)R0OTY^FNsDSduPQdQ~ z4Cc)$uH|JHXW*Z>xBi=)mVbvF0#C9r{=2G{S4?k8+vq~Vy>3d^7k2_LS}_4f5tcU_ zoNxb*ybU}pw!Ho2@b-Ec6L{HYd3RF$_V(cI+nXIr%=OM&%q`|E0E)n(_|}ZwdT@dV z(n8>vA;7K(Tz>>!ECN3ZK~RB!v>>3v2*M=<(LRFs20;RqCuNW)^DinBI6!?Y}_?Hv}_7!kaWs6JY!|w+;e2T&{iXvKyqGpO>u8J7(O$B%= zJ!dF)hhm9&?XWMaFm(!0gilpZrE>+vb;%P1S%Aaq0D(`zX|@mDsERW`}$kv3CC zwvh7TVVf=~TkI=a-Y8qS%0FdO(txTwlToqNQn9<~u`cXVFjH}iRdLEvaaQWKuWOU4 zP;pyQdA_gWZqVsc*Wr4j;>oA#C8O%S-|oTC#iOq3>#yn;+vjf9XOyb?rbX3%xX+}p zuN$ruaHEQXss*_!1v2yn$*6^DsfF=%1^f4wJXMQ~Rg22%e*jg|$Wp|(daFe*sm1TB zB|zn4pvtins&O}JDKhG*TIy0x{Wb>bAN;qL(puEBhSj}YJLSDqLWbqh zP>nnWjeI_h0vU}$EsY{GjgPJx#r_&4u^QP~8fARSIjKrEHv?r$8V`3hKHX?kLp5s{ zG(Yoc*2-wsX=&D*X*RfOe(~3AjMZ$)()?PX+1#SpGOXFUq*(_Yh}j>A6-m|~lB z>f+PtmeK0b(&{zS>T}iV_tzST)f&vw8miD5ZqXVU)*8){|9+!22Gt&C(4OGao|Ms^ z($bzb)1GnFp7qzBi`Aab(q5?0UTo1`8rEK3(q7ru{&Ax{XB&%|@seHV8?BSp*_e8t zp{29!sIlFsiNog-*hl5O7+pYDmw_d^-oGc(<7 zE!}f}-OE#%i&)*O3f=xp-Roi9+f$*NC0)$Tcf?O!03#AuM2p3b1Zj^YNsdjQXyODQ z@wBN&Ho{#mBVC=5f6++Z#00c8Gy*_1w~KOfl!8*W=4XN%YGaAbu^#H>NDYVQ#~_E% z04zi{M}HPsm?SNwZadpRmvOx9QNm_pti$I-{Ggn*0eTyf_k>4r&~+rS2DtfY&fY%2 zStG%YE1YaZ)D9Lt!OS)Fls-=gti3osP@N59L{ktlVCIGNnR+yGy$M?)S$|!jC1`S! z8})7Qz!ILYW$pw%2o--N0ai60KbjC{0DQ&8NLihYlNkLfQJ8jN(xowz!Z6`aVjO-N z%E6DQ9$g@#JUR*y3QtCFM3OW<1xkm-Y_u~jO9=|3p;Q#IFMf zHZ`;ahT=HM%*&)_PW)nxfZqc!ek(95ATOU8j4mm#R_A|CLgEt%1|SFk%td4q00%!j z+qwKIIPlpnz^R&9Kpk3@81T2W3=0HtE)8DNbhdaci{lu?$^*C{L2%}gbL2WZ^|~%b zGhXZ$9}^vxhkkfPWlTj`oK^Z$lpZJAs(@H3m<^A>sXC0EGQ{SovC#ps8a|fR^z!i`r>jzOEy2EL!+e6lOq z1s?;g!bQ23$eyyUBXh_#@dHuel=LyL4Oc&o*SJ|NK9HKHgeL$p$QMXW^_(RR2Xf*D z8JjA@EflbA{KC_at2N5f`A2wroz<-96$%fSyK!x7Nwf!7jOaDcvJrJOoeiVJrqNtH zVa)Vqf55v;UPw+Nbf%ZPv4sz&5{H`?L%rUgBfg2)UJdfvrg|`iwCX;un$3euD|Z zVzWO=@o`?oHw&%EA7tmQEo(77^?3?-lmXZt(@Rc<-{r+QI|e(D=a`iz#4hXGN|cKp zK^ha`PSxSRBRL;Y;p1y2{I)VUVbon?lPvz#7&7!FRlmu{6@`u0BvK0SP^=t~Y&o1v zuN$C)%|trj;M#b$kP)_ct~SO(q=d$;WogAYUdS-GraV+9em>U}>jLnX&O#fjue6FY zW`8XvcPQN0fs>|SB3Osx5eaT-;HO>oapY0$s0xtMceq><@A9*uBhjnQriWsaN#l`8 zI+y1B%sEdj`RH6R>TK5Zv#iRg^3J(>#)(|8eUt%FE9X+D<5GX8^^^BkeV|KYyi1eO zqY+xt{Y;mZQJ2;g7a+xG(u_uxnIf*+Kzm?URaI=Xz`mGSa`{bn1ys4zV4sJ=CHF9x zEYVer!L_@~wd=X7kwIMl_C9wv?pUDOxQ^loRorW$gGsRJd$#=yc+?S0j`@SbHd!WVg?s8e_iLgY*N%za)JYmDWkP*azyOjxv+e34{itZ?%E;l7FpLptCcvu87!>kIQEF;jr=gK zeoxhlNXvduV07q@Jn!GnBcB=v8=Kp^?IvC%0nK(}z8+MFeuap664?fWi&lg2KAqV2 zheo~**G>HRaOdRFcbv9Ha5_oV(+}QWMV7xt!b$>yKX@1`JwJQ216q2={xr=S>>Wb# zq+RQq(f;dtLP=}gxs<1lB9@56xUUcS)hetm9~!xzajxPZVZiM5-#9I@IN#1{*Kupq z02t7Vs81QW9DRF6Qc;)8`1)f-=13o}Z~Hc5+}F;*D#d5Cn3EP0;1`(CYLB6_0{>fr zIWFbpSB5CMv8Y5<1a2fK#25eO`GxNT_va;-K{ntEN7j(Wi+tizR^;oSdgm49S#XW0 zYz)}a54054Uh}NIUw*ZG@h#}W`#gc(=h7S?HXUU0}EdypmV>c<3wzo89oe4qlwp@ zv~Z1l?VuN~ziUS?$G@&|v-qY>NqxcIW>Hus|7J+Z%H_8~aYWpJ7Ut zZyy$3_kZ~V<^+DwePSyfbA{!`|5b*ugANNyeI8WhzEa2c~65L3V+Ve?9a6$ z@vTS!o0pXWNa(vh+?meyxS*x8;dyo*!R{X6=Wp|P>5qDPjV5j0C*rEE*YQW z5lkVJy_0|cSUF1+fCW^lWjUaK?*z=pk=|~9pW-lDC;tn~pDyIO#8XwMr=m%dCR90A zA$h_vnkD6XyuWwCIfhn+AwkGvX^o3&IiK;&RG5D8JotIW(^hKP z6UXmz&bLtK{7T5}m(l*%v;IPZp)JtRLd)xm;{)lbIOAX>zDC%u3;23>G&N=xDy_i0 z(VxtzKXY|1WFMqdjw4J~G5>xrUp2)7B9W)x@tE+#^Mk9GmVJrVlT~huF562LVV+%n z*Ww-v#gua9t>Xn>}#?3zw{k z@&uA>Ny>EUg|8Xtb~lo=rT(&|KGvY!3}$6PvH&^H``A8oS~nEDk@Atm*gL87G_j@G zmPKXLanYrkhV;rus=Rwi=Es@y>gPO1Zot)FPIM4~6jxpt-D|G=D4wre1#wbWyXX(& z_}oSBOkZ<=}F!KcX{R4E1rt*iDEk6+=bV?Racu| z%d1+CugX7l0HyhAI_aM7*9@>US9~53x~`}lSCHnfpVoL&SwC;n>{jKG%vGGZ5G^gx zw3YEj;Okylvq1B~*K2{6KRJ5`?^XxjJZ$^>v-#n-+pFt`?O2c{fmUN@Nq8qdZwtJO zQ2GYmP5SF;bt~CZf5Bc_mlnZ3#y45~J@tVMhyCoC{z8M?3EyNhaz5_^Zb{SHF53##!6->31O-Q!ePUu-3@*o6_VDsx3qs+te61K+I zHkM~YV1-fco5A%WLs*dVVQfmlP{}8f^zn(Ibf++q5U%d9phO&&{k$DCK#mK}jHlta zM)VG;z|}wEL%GCEkOsivp$dW+w&YWG_%-oAuZfaA#oBU3NOCZcMoHbQk!*1FNe-4r zx_K9DqZ30}(C9F&NEOmlm>L@wGmVx+2zfL@O>FQtE+0sN6pd1Rcn-kVfj zHx7=7Sz~{Zrp^uvf*_F!SbrKNB_?X#Rrwb+>~pCY+Q(z?r~Pb}(vWKUEP1I2WGC&p zBOwP{LHIGR9a$PIjOKMx*g&cRX`LU)!&NBxjX|flF&?3-=`md>1(^J|+7Nv;+52r7 zPN^uP+-!EGtUCX7_M#+^y3Y%m_zG+8gMl!%VRC;3t}S-fAc2DQ7eZcm|aa^IL0_ z8f$QepA@~j0pn-Q_f*^K$Bf%y-!jiOZ4EJ-S3;zAb-pyOXj{Cj=e39vT5aBzeYhX3wlEt1rB$sC z>uQYm$KQs^$T2l%pZW41H^;u;?hYQJF!WYfP1sXeGn8K zdf4hg?1lp2c{O%D;$5dlTg`)>HFmdP7huAz*Via(jqPD7D2j8gF51b)Ua>a8c&~~L z#*@ZAxjVtc5HoRQp#EEaIiY0LbDQ|`(^&?>uk$i{ihJZeQQYbT(?|9O-kIp9dGmea9~4i z0pWp@e)Gain^;3_<$;@5^Ww^#SYsE4|L{dh^U}7Q_}9tG!QKBLo2mOPq-7O+@t}ja>L|?R;r)+965Wn@p%J;GIg z@~r(gm@thaQbfl|DGYWj4F+alj2M>p(FvQAodb{3kx zhX{B(V+HK0Jd&!8jz29DHdohhmzpXFOfS}K{b{6nHeFkFwuB7$W%20s>^A|Q+=zgE z`){x2zgPKuxSwV|fB0(ghk$QFU%;WyC%@(2Rlec(gU!H)em^h*eu21wN8!1?Ys8-} zb?!%;@o&8WO1FChnr+7k-(+5|KPCy4TQ-n zKSHS9n=tLSKXiir#lo~uyXvUDe^}T*ChR{zSjg}H1Yr?TvG*p-A$Ha_W$j*urQ}xq zgTwA+*nhIHe@xiSA?E*NVLN~R#lrr-OxQgLJ2}0+H(?i-SNA6DKS9{VzfIVG0b$~T z@Oup=`EL^@^!qjwCRJ2u9v{h7eG&KGz3;S;}?CHG>`yW}Dz1{PFOxS+| zVW_te_a-bXH0s`jB_^i)|6yTGjjdn5erx{P{*Mpq?HwE#82K+mZ1&!VEiJ7qF08FA zZ~WVbZT*{w?c5WwfBUe*e|*@{?|X~*|N5~16NlZ)uzMf&KgzKG%EGAsZ&_Hf^=CHS zmAe1V!a@ib%Z}*q**gm>VgJFxG_p17?^&2pPZErIKe9%|xGS3R|6yT_nRdV6tQ}?P z?NX@Bwq}=$z2(e*SQvz9I2AvN%_BYCDQR^>{8?gVDeJ4z4_x|c9ONs-2gaKt=zmz4 zsf%g|t>F8f_4Ju5_)2c-#hDo=ri=`zYTMd zL~-Ot>b>*JP*Y{epeV3YtwR*YWC}#BKVy7LV~S6TYqbSoiz^|sNI{45{7hy|-T z#43Q&aTyej@;oucm<-u~UZ@krF@~kY+SW^bUKHdD3yFesAKDKk0wtM4@?O$;@8ogbCX^vuw)4dm9kE6J99kv!u16yoW=CjA?J(r836+)kHpWG(-~>wQfmJ$ zLOiU-mmsodrXq25t*+(jwbyeCWGL6qY$MEmG(dY+?A3P_S>Eece2jHUtRup7SAG@s zb3|VcAoU_$P$6a86hr@JewOth`D~unO@TYB;5V=N$T>b|SSj>431H0lleTG5 zu?s_njCl}L5E6l-HAGR3)B=mnWLs-0h9R$uGKF4ESmF=A zN@{SR>FLq~#U9NNf3>$Fg8HuL#@(|zPaXmi&fOJ0-8rG3a)>_-vu^*XSYw)0#T zLP%?l311D3MRNoIagYJ*SC}>BLb7I73gIt9JCVB(3-&-ZO$wiy?S@q?VPbQ}$yk>C#yx28R#enr@hG!%Ew^kD{<<)mt`VQO4hm^f1+bJWadp4J8_21 zs}8pEGZ@3;D6MK>dg!HtDs{WM#QSkkgY|_b7CnV4NlL8tpsn`F;Jh8;C@U!V=T48{}tB8!GhLkUkDyHJU@ZERq z9vNiI3moNz8PV8~eYsTTs!2r!{Yh@ezIq4~U3-+=D_9)2Nx>7VKTDRGX2D327hPb4 zg-?Uc?H|`}StN!9DS@->wIDmmI>z~F%QUaKelmu7BnY2|loeHX0_z07-%U7wZa{}q zZoV{8V5lhAyR13~9Y2k^Q#a>zTZ6brz!iwNb!zJM;b*o4YKQMJg`a8mejiy&h>$5h zTmU*=*$Wo$u_--m>MtVC`eTj^b$FeF{vj--E(vF`DVjz&J6op_Es<_EzvejLckS5I zc0Z%rcEt&=@c3?0lu%Yll1vp@Jx^}#jkQp=Ba{)v26D0S2jS6thsN%t{B4T%OQn`= z*e!URI6j6{Zzzb9x0;|#w!thvMd6i zrs%ixr4tmN6#Z3d9=BFW)puPIbULZTntA$QtXnULN9k!S22IRP(BUb;Gsy6eu-B0q zzVh?%gxvbPvHvEN1ow%?w%J+1*bpAnFwhh0gA(X@1;SA6TN1G`dYq+JBxJ=v+TE*d#+NQqdOIsXV6eP3o}wz%k5`DapwYc$mA z9repRB+KM2Qs7%HiK?CF1IO_NKFVdK?`G|Cg7xk}K8i7b;?W9XoH4gcM|a${a1NCp zFr5mUx45K2@PfJDRf z+@3N^D~fsgT)+uk@zx>kl4~?@`0;GEzlhd%PdzV3SIhvRQ482-qFpP(;TM&_d4OZk z=K@C<56lI3XSVt13cr_EVCk+NNA1Ue5O)iQiKHU&1+}}zwhuugDo+r&ih43n1$D!w z77l+xg{SaZ9N7Kmbr=c0o}pRb*bC|Kw<`8Zoz!@(9_nRiBK~@Oyf3<+l}HSI>_Ck^ zboWfQ8b9qFxL=GDa`wOYy6>PS*Tvu436KCO5PC;?M?)_Hh7N*AlMaSnMVfRl^devs z>7YT7CcRe;z4t0b11L>I1Pe+#S!?aRfBT&CzGo(r$xQysOft{pxv%d>CGMpoxrBXw zKliLdAZ@7;Nw=2LcBuA=0PFUB#}a*6dOI>hNC*$vFd#;-#igOvcu~fcR0179Z#d8ph(nOLh7UW0iStLgqGIcKFu$>p)lIrv^bfWNOg=a~glsCWm>YI71_CV1)MXGd zzgXkTbYYh#iP$nmDvBstLo!XgIUWTIN(f?Xbs*HL(f=~>1WUzkd-!QlWJ(JTqV&dO zT;PHs-|6o{kuh23F+sJ?VNU{Puogy4q4}uLYy$TnUyO&Qx+g;zom^P#lolI9bV^xZ z7k}K_7U!s)>jYQwKeKUBFJT?D@Xy6eQ%n+;auJ=b-WrED{naQ#KT>Sd_HAI)FXs)M*FwG>lvJ>tR?; zt3*kOy_Oq9gUfvONAfEv2^}5({+^UDAeEAXkT-=Jj~eg3U_#xZ7LTAY<@DoA9p(EC zfKd_(mP`c2Fw3YjWiq1|*H7$1lVAKix-J-Fp7Z3XLXJt@6LA;V6$LeJji>nvGJ-5V zf(=;CO$oaAtje;mnP7D)ElnuFUrLzt3Hc-XfpnF3R&&l;IAQYQ!+<(nnlxdJZXZ6* zW0=YyIqui9Vdjh&TxRs5%Ha~(rMnQ#=CJdG2gM)n z|1R-NDNjqXG=BCQhY+FnNw{~9?kUf^oC0PUx~ZV*O*gU`g&T|*l2`I>y24XNQltaf z2|{@xfPlUwte%kBFcwa}jBAmB`dZQ?Z<9z)WrckUE=kP4N#S_|%+iO0_Mcdd9V%dB z_+B-oPGfW&EDW%6RAv>R&n2n;Qw4NK0ruY|cCsm7IA}JY;17%}MlGG@ae@9^s4KZj z1!U^owZiM#S?oiUV_a^rQdXhm34n5(5gA1X8vcHYr4lU-s0hr&mX2Kl%!>>qN;9RF zxBwYHpCYB{hSf*Cs4*d$a#NRkTZD@S$A1f| zt&oJ6$KFhzqpob%iSnu872yV+*6+Kxf$Hn`UMe(TY+{C~=l^K;f{IQ>Uayk}SYe83 zcyAUS#$em1*gn^#th6#e0n%{=F)7v;Sk_l>LJMS@_7JcFt&mkB4nT%V$WygWxi?SU zcQGXE?RVd3*UC48u5Vb^bU^(WZoI%zHkcF%G$p9)iD(?Q=Z?1Zz7kr+L0_MGRXMen zSd)z$*1mCOdE4p?I*_S9d(;@7AY(<6_d_5Mpgy>xiyhj*N zE0kwkBfN_Df!=0djj?WhW(YYZH!sI@R-TPb=?`u-fuIE72Y?#4;rJ^Dk@+*#DMR1~ znA$YD*R8Ia2mGR#=tB_Vpm}I4`}iUIqp^S(re? zj8MUhNY{+m+RWAS86?N7r1GrvrR}V2#H@V5tYX)!(%S63vso0!oSO2ShV7hI#GFpS z+)W}2TbnaD|BHngE6y6|797r5EvyzmJ_~L{7S^@kwe}Ya z^Wj+ZBeF2t#lVQaSXij?q6?9QoiAcImi})R_GoP(?Y~)=@{(7OO~ zh-HB)>sM=)m21n@=gYMmEA`4NjkYVz5i6|)EA3q?Wos*n_W+9fD?Q4qB3<2YJC}zF zR!6#4$JSOS&R3^6*7}s!SX0~Qh%BsYdLr*H7DjWaobsN?!Z;>Zl>cI3X*Tb7h%9Wa zb#Lu27DoN&{gLg5pW~SCvaO2?aIADiP1$o2k5C zLdoYo`@n@(z4{TBnMi#ubtNIb*_sDh<-0*%3t2D(G$5aoc5gaj04j#*ItUnTZ{@L!WN=J)rf<=L2!S<$nF`!^XW)jH@&_-;o8Qun!ov63a0{5W-9zy zuc{TTnj)(hg|!*NBHy!5`LLZ)z@@p^G!BJIYj@l2#x?O|l^0}cNI3aZ&^)rI_!M?R zy0bQ+J%WM*?!Y+HS%!Z=ZzG&(urLD*)Bp$H&VZLjevNbD<-)y*9JaZ@Kk=XRiH#bAF z27j^MUJ|xL80?bpMw<;j9ZBLr1xXovLxxVW#e5k@xZTFdbzsTJP_Q}cuk&Zy^C{c> zIH(aGq=q1AB@QCgLg)5(ZsQfExnR~PvZ`u5*F$D+pS`*X*h1|cP89U3>Y;N0YzzU^ z!vfE-aA=AW^^H%y-ymX~&K)@TV+TMxfTRcevwupS=f#Oa!EQ}6Tsz@N-7vV4DO?6=eqAL&Nm&+L+rQ(;FWR9z%^D3m;ZfRdJJ8 zP5!74IE35>GafRKqB^EgUw=61>yT4DeoytrM_$KgD{Te z^ko|H0HCg3t1_|Dk9GC9V0m>p8^$(Maj`lhuB27&4WO$mNVLAO^z5B2bZ6u=v-hXv z`OoIH_Wf!6)(iWVjqdZ+&MOOFtXq9QO}w&RJh1Hy`El@RW%27>Jn6vIj~)VXF#)HD zXO9x=km?Vt&Yt+g%xt536DTQe)mk2Hi1N3}+C6DImhTlATrEmrzOos71~Jr4SCqV5 zms%gmph~cm+8ZRts4vu8%S440JbcZ4pcqSvpMG__)Nbw1gZ+0+_qX4#odz9RgA%q; z@6STM@6Ok_et3T#cJl4h3yvEfE+Wo;|M__IO!}Cb`NQX~P-%nQ{FW^X*AuiVMrpW8Yqmh&1KI1y^j_*f$$geY!`jVs4$NG|k z8veIrR|4pCWPXJB8z_EmJXROB@4Y8VdevW)y(-#d;3`S(H}Ogz9_(eZxX9CQvj7(? zbQB}jsm1+uoj)i69cST7i;yEsyRY@d{c{a6GAJUW`pWemZ?s2+Zbpt3!acI@O`QTg#@24Z)wCSCsvU(l2fO(@R9+w>Sz9oG?#A zT61~aUd0>DUKV@Q0?%4|gt|kn>{T}b2sqN6@II)bZs#s}fUiT`J(nlZUz`!5?<5|~ z^fTqTbJ}$?TiZDZMBkfAj88(>z5{33PuOwAr0UBL{-m#vI7fTMj+_(h$xa?P9&|i3 z(Lq>r$0gotwRdJl`vH}cJpF{Xn6FTv`6+z{Z-6smHXfGbyw5o?i@(bk!^o|!xpH5-IW>WsWOBi1OxnLY}5-5vvS@p)otDneG4-M}D*18nOuxhqiPNv#;T8D= zt-?eE+hRpFJ2!92O<Cl+l)7CnOJ1@2 zt(Ljrn=jYd+KLCnZ=!CpN24GZQ+|@5+&Em*F(vT(3vu7_Q4{)2#?uW=dV&SiIzKhb z2(Kxc@=33CewO|=hG0ludz;<{#o+XV%p@EHtcpklj^otK66$DfFBwwoX@KO!mfF3h zqFpI8SexgcWXH`dJ215*l9>MKW_ho021Sb1JE$^0wxxsuSgw zPG)>7)FZ<~hry6k(zItn!I+%uS2^iLV&x1<+Ya_kMiZgb0lLrnDS}fjteCmv(7QX%5 zXyO5z6cxh8#eV#E3ec1!Kad_kk|Rk)o)W`;^G?*G)?m*(iJ~~^28D6It3da(7{ENL zgr!a2>wem%>qcVlbY*U;y-htlc6AFmEuZPVbCxrZ|B+2s-ok%Ge^;)h#NmTQHq(v~ zGeRdB5LGf*^s_F$dD`RDHEY6R{>u8p zsen<#@ALZ@@=omw#^B3tc%%4H>@|>7T!CvweL#WHREyA4hJxqb?Xa zof;WXENHu{=NdX&a1l_ZZM$bu8aiJU`6GXD7@4~jy4ZE`pff=b*fxSd#TH(s4L{FuZ5{A{=>pPDqUYyzj3CHI_p(|X{d>5s7v>%D*esE z!qwQvy0ua?bo2W-!~3#|H1zjLh%C%tU*q*YJO{uu3h@PA#vof3vVNEgzV+ zFT3`?SeRGlGPX9sQ#+_pE;wA9+*cu_@-G&4hSLsT)sEcPKAO^gNMvE`LpuPS=)YN5 zD^e%UOD7?Gs0OW*n6Hzpq?1&sbD1(W6xOMeN@QWu@@Z!}PuO(>pt?_qEKKZby1s6v z*Kn$(ZdQtJP9+teqAmLf0L|9{I|$X* z;J{5RBQ3h|KGrv#NuyXul8BtCY@fryB1_t@l~gi5i$bq`iK#V(b;9?NH#1W|{V1(2 ze>_6GUsWu_os)zMj0Qwi>q}NpayhwE;8Wt!!*LT_g^2_(l{FJ11;$rFG!#KGel+H_ zlrb0(gB_xBHt^)MF3S#dg$@F;))R*X$5<`reUk7uQLEkNsL z(U>V^FY(SFO$se~d}lXzMQmawd#nyYV*eYU>HwA*0z5Th<6)c7;)&nDN{}{`DR@%) z*A}~4Tzf|r&zhbwsz&NW0EGh+78`4L%4Fl{pKiC0In9*%m9ayeaooHlf@Pd907CH; zxn%Q_T7Rk|q9kr4*Dj4EM@1p&)4{EC@fSSIq66-GmUMayF$r`aZ^cSE>nETMid*L&KNjZ?^>|9 zJMKy>7r=NWnP%tKgA;v5zgZ9$i31XJ1wr!pXwa16xswr?fsL1x0SvY%;4Nr=(2ZpD zh#FvJlMMw`_b_I&^PLor?2N}# z#NW>?mZaeG5GO?fW+GAm+V&}r?|>=NlUer2)s2YDhtENGqP(8gK$69Z;Q#?4aC@{> z#*}4J)oX2txj10bP0F0OTDpp0!P1aOYA(MJ;&Z^pkK?UA9KAcIPc490@DUan;_5hl zBsz1EOYxAj8&i}hFt@@;H#KyGS*Frc6O$}V{i9cxSjM$ ziMt~e9}{sWqX|NDYxzv1r+IYp?3qHO3BfDj?*=n0ay-h!K!%btRTi0s5{>}yW&KQD zpHfzau$}W{6wZh|5tGQw>rXQ2V3;7`Aso(YU7g6QJyO5bA79H|A~^--ZWT4> z;r4PPS(mA`cBAz0$!1w5!NamsyI#Kbb~G#T5Iry)-34Q@`f%tR8KnNJXgJn^MU@2D2)U%E$MA$2B0h{Om_Wd z43#LLX%s-|gL{XLk$RAyK{xQe25@t8zlknBm2^T140fOoe)jkzUXjCI$&picrIgKJ zD0hspX{xLu07@Sd&BzRNn&M_BPW7d}GJ5Cmiy4r`#Su(z#cd5w40pKHVp*^8ve;K% zfi%Bup3_5S%E?A%!6J2Jh-W(wHfi2DDh3jVik#H0I;sEMRM+~bktT;SbJC9d7!vzY z^SRT_YA3xnPWqWn8B$7t$N|SQCqpV{qlu13#~+PUoJ|d!@BCD(gi@KT> z&*crm-mQ7-tDc5;p!yfj_4@}ddlp;1KUMClZ10B2c$jS;q$l_V%3Sl={zAOoh*a^K zNDbRk34Ts>^<+Ebz3Xw<7A?Z<80s3M;`VT&Kh|40?59$Zm)p$f_T{~1v@f_TG1G0@ znh!R+d@1&}a$H#5!k@l~p~4$*Ey zV6ouN2*r)%dO%$5?o&ouZn3nSD3)A`-EkB5q6?)ggU-#6Z1Igw=FDb+45edmdBH7u2S!HCm&`K3d;AY@nS;HY<*^5=#Y%=%{^lgYO+)6 zvvJS9r{v(?n*3(!#B$e<;@VxG=!q0hpS)-Wq8I-b6+Ry4IkJa0Q%YrSq?7Tgsjhmf z|Jjc@r!!N!d-$_td;Im6B!hOzFHu~x2VQ+0%Nd-!x{jT4u*%DOWzokB2~Nm6@R`_v zDv+=-M{8yL9dx|Vkck^Ej?m<`@+O+6mJAt97QKEiwz}&5@Px&;_{u4k>LW^(u3A(? z?vGc+jkrQUw95fNlH++ z7E?@4Ry+}eci{b+h1*eFj zDf$*tZ?L1S@51{%OZ*Nv*~;SZg;BgCDvM8O`a>EkpFD`E7j%;L)gkfQo$NS)6Zf+; zs&fIPfLo3T1o&|-@uL1S&ZW46J>g+~wm#a&k4qb!^SL>GJHQeYFcF^Nr|?zvabk;pO{V^xjmw+zXP__8hIRJSm^D zXn3OlxLwI>ZjNqbGIHP3v^rc@gcxhh3BdBem)~X zmg$F+m9zlyUj_^bto_)v47XVTR%yx373R{d|8Y{CyY~Fs!G*gQ9@Iw$HkYw7axW1( zG(O}pN@2)mQ#|4eI&?Wi8&2NuhqAKf#qWu{6T4xn&6NA|0mR^#G7j@Vl6pt-ar_gz zPL)n@wl2$3Jj?5s)dQK*MV8<)`ylaJuo#1IOxBOfNAZDuk?!|T^W*OZ`4WCT2eK2E zjf|2LuebAPQ)ez`o(N?fB{K@R0&0X23}Qa_-mzwfZv?f*8Kq~rH)#D{8h!A5vdi6j z`$g$n!z`t%>1IQmp~BxoUe$Er9^y-a{!BkVv91xnAwrTB{JCrpRq`P;AuX`xGBltj zbcn9J_Csfa%4sS%tm$@FdCgYym9ECeVZu&f6>r1hwSKpho)*cvyt&a;ei4Sh;&hKO ze6~TO_sUuF?ft%*)2_j=p~vCFHPWp$XA@dy1A<}WAHwUkncq?eM3A44eFzVX44-(Y zJWakcdpBa?e#GL#h^5C7?_NYK*F>y*4eu+Rm<|fRw0<8^ec&80blPgJZD%tWu5uAB zb-`*ExphBs`(fnHTP!G`Ny&(9cS|08w4iu{$^oPf>STlVrV)3 zm=sPI-^`M{xA$FmuFSa9xawalOiOd*hv-tR!{F0@v9QJZA3MaaZ>!(-OqJ)atM7>{ z?0NX;uWJN+G&$W>uajEz+eD^IDewIgiH}21DMg=;bxUrI<;wXV>?=5Ynk2HYtM~p$ z?^TzZHxOBv%>GOvcXZ4V8RTHKJ?Qx0%cm`weLFBoj zK&(U-Mk&(D6$4rD(O?uClH-nJu#&%`X}sEUH-;nhggcQtS)M0Kmfe>-S-7Ir;m)i? zH+RxMEKIliRA(q+q+JC!vIF<-IP~DkG5gXB2$mD%4J*cRFqT6p0vkQ4IeSZ(J$#d@hl#EKeA2xpx(;i zMY%_Zc+0)2(0iC=F<%FIb+PqW8a*Kz4DF^>14uUG`SnjVxvaoA+8oLDgVra{J2c*^ zY8X|8W|;YpKig6)jHR_Ehzhp?GAmFm3`7=Y{y}U1LnYi?@MwBq@-XFTpZCLEW}btz^?HgHz(fJ}Xz z)OSlf{%S^-!c1LSU?(r5GV$QzG#=q$ zUE}(vnVozBQsu+9{OZ%6pYaLZC?7IKGC ztbim9e%$xs6@Z?%)E|Zzzu)|l5-cAhH7z{Zj#1A)ZWK^CF2DUO_&5)Mi=*3bn~b7u z#DSHC)aWXv;v^djsUn0l>|fpzH~e0}Shb@ml{}s5(OATOUZ$-MnR$}jSj?wfu4|G! zlTp$5N-RQH-%(^XXQr`47UV9E0RnC{lCb7Up(wmX<_c+>%CwY4jMFRTUP(5U8$^hh z7KzMfdB<{+bXDAGNS?3qXnJjPUSZw~S*S~Hs&rC*Z8@8~&{WY>&8BGH)*N6eEFym#vh%9x}HrK{0i#gD}Uh0=@u1kv$bK-@*3zH=;dk4@ai>8?) z<-^oJKi@wVQ=|fZCr!pFi+lVI#E@7tvwzhW_i}tBF<~bCyuM4^+vJm;?5F0IH|OF$ z%FKwr`%I9(APyUV8t@3X4oKMA+B!ZyCenugqs;WLEYrWsOvEM=G05~+iiy};`pen; zxjg-Kd4BRg&gOjg?Bbl5U;6s}=gH~WKicN(;)2*=I=%QS#Y8kWCl{9||CToZAn6ru zUZjMAgp{15w7i6ryri_^KZzzuX(cI{>r&FhhcdC%BqOK%SF7o7nxlf!v9!KxY3)J; zI#Dr6M5AN;aGhv$)T6)tqjPjH-*qwHbud5vC*2hD^`CCjqttYw&dJU%BzBu}hyJQG z4Su}*xV1CAeYvx@zkhJJe{i(*<=2<5-~MBCh~1|D(46BRKmV^{)4xOxvCl;0IK)uX z-<2lf^FN6uSqTZE$oc<3IY0f=Oh~G1Dql>w;VA}szpD9Hise9F#L#tv= zDAh_iO!Pl}CWfP)48D=>85J_{| zyLS=ZroB{a%q6f?39CntN8=8jKfD|U7&h98%PRP>imZJ=1?@Q`u;|+78r{dNRm;{7 zkn26a_Ed@ky(}a>zw+Ie*&QPrbjtH_YWF2|UT_pOezEKzWwEE6l_^Y*Nnx(@uzCET zB9_vm+zrI6csh5TP8tsnN?NGvoGr6x*BAXR<2K1@8t%De^*-OU(r$d&`I5S=l3C&% zL*W;ZJ8SL57Q<8SoRiZzUrwle3$@d}Wu{z;l;QMTpoI%P57w5R!NUR?pQfty8WAfn zHp6}dPyF`>ccgM`f>+gBYkdl#$T_qvG-owB3pi()U~6)b${dpvt}#P-jeV#wIkx_U zp9YE3IAY~yvf3cCI*xF96kDRSghi4+a7s>mdbS9;?rz)48o_JJ4Ko4_IAhILd}f|= zhPCp1P#Z)0Z6y4Lx3Oc&K~e?0R}~o?lV}GX;P_aoKc)&|&VZxI2)O@nQryX|13))E z7Q(S;yE(c%}wJ)*1FB1w09L8h%)ecHGl4 zDE>Jtl`s3UqRdKQ2}atn6TNBIInpt1_jQYQO|KiFu`d6nQY~407Xz&6`Xe-}Co0&! zQKLNE_j=USLQ@|R$(aGoyDAt>$y~J%H!@WvJ{8Sy&G!qJL2WSAC_=7h$l<2&2Owf~ zbnpZ-B2JxYt~#U*QlCX$qML;E_p=P8$s{o4l9Dw? zg;H<&>itFA@Hw~M3YL^zD}mS}f!Y@Ps9iBjtlF-Fy~<6zd_@iHYAP<%>7Y48NHHfeDPsZY!u4VsuY&gVUTIN>3E$-v{h&( zbDFzR$wIvb?9(ESr?Wy8eL^RcRVEfJF(L=r83#1O5i_4(u)%eNZ_*cGx*O6+n4(3l z2amJS=L{6P9S+4i14C-;4GsaXxak)XjVg>sqa5nq-lP-_UXcW_k|uIKlfeN!@Z4H9 zjvS4jqMxWruaWNwb=g_OWiPz5+YxeBszA}uB&q6$*G@kdwW=}d9Oigb8$vFC0y}B2 znWM9(%9Jfc7;6I72=CoQ#Z^_APPyioAIn`%D8Z>>V_G#t?WTJa1A2^ExWHfi-s!Hs z>&fv|E4C;pysd>R)@P-6qx)u<;K7Ot3CadZVeLDBZM3qv1Py_?b*xpRYuM+2c`k2h zm<4Dg8VJEQzxkaU%;%KwVlzV^@grr{j%2Cn#Ga?}x6Fljp%kB7_)mFO@Fv^rPMPA<0+cqz(&tO#5XPEgT>o2AX&2Iz|uBt*DtySnllNfV87M* zR2eV9V_N)}y-5>$=VxP|{n;?{6P9_X5>U>2bri6;;TfQ-4RCw<1UdZL!0e$r(B9x9 zdnf4&l_|~gTaD9|YWw%v@ul$Tke-lrUp`JclKx{6jhe*6HN^Qc;*+H`cja+eiB+~i zL?w;XaV0|{*Xu;88j{}gfOh~F--Lb3@9e)N&q{TYAMZ zt$giUr6bxsz_;sd06>lt@A6Av@KX6S8!VG+WK_Oxp0i3}%%jx}cNI%!z;}FmzN1DE z)^g#dP!T#}&S&^+oSZ!CM%{gNKIx|QA316T81)P8ZO!Hb$M37i9QQhE%T6A8>1Cj| zT4l1PzjSJfQQ2;6zbc>N?fjSVUi_w}EsCx+%0~qir#gjDh!y`(-p5g`5K%qK%q6Ek zKDGWgRlh8>^Nox?>b-3}w9Vb@N?U}JZL)UxSae`=k47DIXRvio;%hg4%#AvCaWn-=*4GpvugFZjA}r@q>Pg-R6m!5BWjh*F>nQ|ahx%o`2K~^Dr)J5(h~P1uGp88 zZ_g^v&$fafc>+eompOdV#AMS`2zFq|aCSqK$kpl*5B zhJrLXYw*F!kmFDqh191%vk`OAxXDP}LD$vio=m%sQD0;u^mf%y&rUzURJ9kQ1tCT4 zZ0{fE%jMSjeua%5hEssToXJ&DH()(X`~f`Fl_vJ>tcs#kK|i8KG7)J_X*p{Ht*_J@ zl8gYQ>zzd(d41O`0DQtw z_Mz#d2E>H>3FE{iYagNq-`ST{YflJ5#O;0G+*d7{hSVemS*P(R^^q zb+=e-u+E&?dW)THKSIx#cgdWsY2ATF8XY2N`@@9yHTuSjT2mSghbS~%0u0TdQNiN$@%csf+k9Z{#%y8QeCcK({0Sk54JH2Gh>Pz)16iifZ!m^_PY>kH zQ9LZk0%X*~&v{uE5O<_&stSMO!Z4XZ{ga@Be;Gl*^S?)gKP8ZMk(*AL#XTp)pJ>Od zxWp(dL|-q{r!}WK1(49mab382i2kNR|;iz6I0D?-hhlxabvVqQBLO zhE{>@eI&Tc)>8K3-A4$>Fo~Fci?k#;Ga7o$QKaizoQJt;L~}MJ+pdl{0-|Q2DaZqz zz{9pL3E=wXM{l3;!lSfG`vo2mRMw|MUwxG5))6KJn=+bvLVO=OyIn15fmO|myux2u zLaRtD(Hsbb)wLQ1L?yKS42(eDc%qu}?8v6a(9kA`@|+0{`XN1#0I4RBjU9VdQ}AeQ zt6VK-8ahl9at_;-(n!=aeToJq(LP~ZG?=$fobgL3s$;|fG?o@9MhBD81Y`0>6Jc|E zu^c!}`OPZYbgAD!i$;G+QbuKCB!0w%kS0YSwGSR1)EnFY2{!$BvW+$G-A zEubVQB=Z&D(*foo6Qc>fOvsXUrviAfSfmS|sj-nMA4n~HA7$o>;SGnd_Itx9jaVkmFJ*=jW61@TE^~-sP*J@DB!v=&m4@Ih%kxEJ$ z?wiH%`Z)&l<+8ryZU)#?V{GjcpokGN1zmU(3X;*Rv5J5q_8_lz$w)yqV2jwY6wX+hXlUEeL%tt8Ym}dpkG3$dZ!?L-zduv z(pj`pC4eGtR(Vk&c>Cc?308&2zEoFO<0lD)RfrcS1G09ZCB4XGhIYx+%aYR9Q&4js zn8-+Cvt`NUr##p)|1=jIYs`e6qMbJc+c#Jay%XnyCCy;RE6X(}fuLmm(t~I=-dR7VPP9H}_mMGG#*TNBQ zcdy7-8Fa%dd-Hq@;Q&9MWyR``$qY)C@O$Rf_nDuZmsZRB!nveTi$0G>kt&*V_XL1ooWib0Jxw>fL(=-HUeypDP=ASsye61xhgwRlG^m_5 zpdQgUuk)%}H)@47>f|-v>}b?qX*4)(G-PWszTRYN-DDQlWRcfo)zM_L(qwnqgl21Y zxZdn!-Ru(9?3UN;(b4R+((FC@+J~*h?|MssbxUAaOK@IGXh%!xucZ`anep(v21NmueUw3Zp#d7`<>mE+tHT4()Rqc4ae60@_Ku*b$dxz z`^(ejijMZmFsbU(_FA@%`s*Ey)*a1Z9j$pC?JMn_D;;l6J4RSLd#-o(S$7VEbq+y0 zNAfzyRyrq6JEuB2XRde6S$8djbuHy}Eq8RSu5?X*?jl^Wz1a}$vcOi5m%w*A+RX8F z7;=CO9{d$l>WP5abH_YpqJ8T@;}XM1F7S49rJ3!}vOB+yHG(6a;FqOBL*?Q^RRHW3 zT-VrYdl(Vdg6CQKaiB(3uB&3rsYUntFAweixWSZsy7d8y#n=IUCEE-m=nO)B7%?z{ zg0b^K`=_4V93#u3f%b3>p5dWG2npft{#mrS&KRr?5Bup0m^2)0)R+Eb1dsB6T7s47 zFa&lYV50!&Z=O+=P+06hRiRS7peiho<%LBItc3szm4deO_9CS3~90eFL;~|4IV{^U0H%J%^0is5@4gyAmqk2rkY0C(tCGql69*pPV zw4Jqd8DrzNdKn{zpvFrql+6&H&`WATJG_B{Pz%41tOT=0fWF!wyAYsxuA-VL5F--$ zyK}M*QL*)rtZ%uTve;%!jbR__IMjTfOxClixfbd| zY1e{HF7#41 zEuj98OiqyehuUa0fxkS}_IW3;3#ECAg++2Sf9i-vbxHnlW4aavHk)20!+@p>K-Oq* zq6?Mh<d_q9$F*k z#Yqy|R{vjpCcAaU$aUuD>#T47>N9a(taEX0@E9~{T;G6+0wM}p-W|^DqFtMopJ(*| zva)HcQE!LR%dSDeL*Jk-_V3l!$`vL+U$5tTg$tj3K`0;G5nH$2Kb6!`8@*#gxc>Sc z8x5S>=0!^O49x`1_F|+;iFn@STzEJ0@(EANgv@gKUyC-}WdWwbi5CDP3 z>OO=eJ&S(RUKz#ZZT;qL9lk>1K5f^${OwD^1|0ZF+(ynrh)@a`SwSJp2=GC_Lh*lcGa`&O3c>Pv2U)Wt7RNQ{A3Ba!^F@_F=mLb4DMxej<0p<4w zo+F^9NZ>GvsiPj$i7xG(0P}iX`7;gdm3Weu49VYv=1zbg+CZaBV4bgcs6X!G`~evg zqV+&9z7`sqmSl*bZB&Jmqvk^mP^a9+{0R7K9H=%Kz-S0GX{s(nF{;#;US?{ya+%$HHA1L00 zzcQ>DN9@%jLAiEgP!koB%P8nD06KICd5g-Z@PhoBI&up0%Fx%-ylkW9!3 z_`%>UjPMn`z_Lu(dM+{AM1X>9fDyl-rK^)?Z|ZKJ!3K}6YNY-&@Bz8sqB5ca;k&=r zhl47Vf0f$QEM`+Raql4E{Vwrect1a*2x1|`h~E=?8SFZ$h@oAvASrqS(Ve2APKNT_ zxkgy0^isj6t^p%sR2`Hc9{5jIQ_v5--3-|4RSDm?Fd7r{lk)jWdq5Z)_GtO}S(oM> zeF0=km)`Z_2IxP&BSdYD=!Wqv2YXy)7hbl1w{qgTT- zn)jg66m2lG@tIamZ7y1V0RK2fi%R?_MtacRrwsF8-BQLpwdj)cO^@_fa!zLN1Q}h7 zA?vsg9`60j;tt#{ITlXeqM-H`z8mV`r}(6o?k~gD3L~Dm4^X1%S-}wd*xy3McLO#r z2c*&Y*#ae=*?q43=h6^w>fS~O*CUrG(Il?q zeuh9X#cJ1A5y**gf=jQXpg4Ru13a-5(jv<#!^iqRnPU{#olVGP?xG`aH0r79xcFqW5( zI5irqMqgqWC+cJmwLMW|9x#lTDz=B;3sz^}GEBJs(VjZuM4bz4l&H?sq-B(BQtZG`6|5=dV)V%RqXSddi6%1MD8-S_k!3tsOS;4;)zit5ZS6!$ ze&C6Z{~4I$i-oq*d!xr8A2&JAm$XqAM%XC6k6dtJZH;90Cy$(*csYLS=x7-~O)qxh z7Z1^uboyVcy?0O(jl#DL2_&I~&^v_QG4$R$(mM)B2a&D_(tGbk5NRSJDj*05Dq!eH zGxQFj7Xd-(EnmFvbD#G-=X>Ux?~iw8XS3Osoor@jvirNPpK)ulofL1*pgA#hbsM?dDv<_&eOU&3+m+POb zL+scxu3F)#HC2N!d6x8&(;=wZAioxuCeoR;8Kq*5Lqx>lk$CT}yoSxvgN)x2s|03u zH28I?(@vdsO$|^0$|T?HmKu+D_@D5D1BD4$@HWI2ayOxBKj8LTDlF}gDuPEr5xG+3 z4|2%wrW~u&xg&tOU6>Iaf)GyPD`Pb{pgC5I+8OqKBFcmP!w-d0>KAvdacxEdV{JNG zXn!>DReiW0M_MYJOqky>IO_&c!}~zYy987oC+VSS5w0X%<>)5ri0yeR2NG`u*^5>P z%hB1`u$yR1D1q7>KQkktuG~%lNnn7EMG$8({R~m6`~rEHrdXb$ zoB55#$vBpZ8d2w*zC8WSSO4WQU4(V{U1=6e6Y&oxdH0F12sYjRQv>3ibBpctV-+FA%5xe}FjkSP;kOUm(uc z`ltVZIK3jf&BP(g6i)*2z)FX|7#7ROFlU^g?}y2MKpfI1gL6Kv3eRj;L^0>^r&r$D z;Lz=Go}iq}#iMsqtULbX(CK>Hlj_YY);CfkGxv<3jbB?zNHNofP*5jb8>yX6LP;>+ ze%PbnmbhRgF(nCk=V*afpKwysLl$nagpK5P3xT?cL#Y(`;KV&o8<5`j%9BIwANW2l zNcFU0TqT<7y@9>#XVR9vJYyv4)ojElSZe{cRb@PY>E!%h$qqr2KK1-(vG!U3xgTwa z1cj@CQWwiO5Q7j;MoOL?K7TXJ#qLcPEr`!DuHZn4Y~<+$1sgXqQehQeCxd*&gm8(U zN!~Bk5dw5WQ@L+tkJe&~<>P)iWIH23HqCKxk2oj0I3~*uOGq?fSE;pKl9gSQwSBUF zAfZJ*8B1TT@fSiwAJkfk_~NcI+>h75E=sQ!AI(pW8In;^{QY$#nuU=#n)`kNuvw+w zlByyae~mnAavJ9WEu}FIh;Xg6KZ4KIEzUKASkUxCW<;FEBYegBv{U1bG(;!sTYLsB zq$q8?!63ju3pdTAA}*SR3#OzUO>aOtf;$YXLEJt@wA+UPIdLkvw|A3VD6K9AA3Z4U_m#4fl1+ z_)$Hc^TeYBUr!_B8eV|>+~SCrshkq%S`Go25Jm<1M{yA`aiEyEC}Qm^X)Q_~ZLdPr zOkHhg2gp+w*E}%6j)*C@@Eh@GfN4gKg%WQ?BtyZjHjz8w{nD%qR$jmDZWUws5?!6E zx(`Y-fI?;MS1JAY9hKpx3YAV;hAFKNa&&6OS%l}lO}*@`nb-NRekPK@|LSKNIIU|} zR?(?uyp7bAoBGoKRX|r%O82YWi*{?>9uAt`5S_jh-EW1u{Z+aHExLn)x3R(LMuICMIcCr0T1~?>!xY&LsK|`SYpMECXy~tz3&zAz!_^E~jMTUgchD5EX z>#Im^y9V$A1M#&XjKqkHX#}&2oBqR)l+%dH#)#U}2xl)6q-@mYYeX*yV5l}?tVS^> z0N&+{y!&PZCoyKFLNPH3vZOv|l}E8O8?h%Ca#}`lq>i$l;WBgfv&S0p4xzZtA_dn+ z1?2&3aDZ)T6qjYxE$2~&36vn!cMO*yIf4ox7Hh&0IK~wiB}6jDl{yATnD7jZ;#ZII zSJNv_d?#fD@MT1CB>+VBBH?!9Jk!SfQe&KYCNLimAAC%B0v}N{j&L@GPmf)-nBG=5 zWmq5Aa5m+I#7U-(DNh*ik&Lr=nz<>N!r&&nmT_EKX1rVYYPnH5)h4`J6AH0WT6zG! ztynHdv^6a19%NEHHOem3RPDng#&W70pzLI*f&OT zXpOs|ES_=-@6|@B9?wJ$#R@i>>n+T3pIJEOPL|+Ll~UaiU>bMwpR(PW6!e_6O&D)V zow5zR;7v^rE45z(xl~v9px9XAdaKrjiVCON%?OOXVH;c-$~up zNy7^Z;y7ugIcbL#{!8!uSE>*nhY)80h{lOuT3XuK+1cCM!-~EC%j$iDjTHV#6=KtJ zS3lm9VuOX4J|Rpm7v`|_^ynAntoKjI@az}n;`HWE&hYQF;n|f-nBU)R@I zkvCTC{qySj>hhn=;pzGL@4pP+m)FF4F+@8X{v92yxOkr)w`s2{P6)rzZ!|I~^2g^esm$0py2oxKw~XB9hV89R3;c3v&| zP&?|EW!z?bVtP_aR#I|yP+GBW+Cgq!QGP+u)57vUa`D&iUR2an)zsG2e`)ym+c(tJGdMUjjvAeqn3`EyURzpTpI*6K-`rkZ-`w2Z+uZ)SxqJ3w z@8^%b!?}b1qa@!yI5|8z!6qILj?NB_&i}0>|8;cw>*(zF(fQ%=#r7#??*vO6Utm+7 zKhH2{7nfKo`T51wA2IpG_1VSE@g?T>zmkwQm)P_CR~S-6SW+1K{Ufjg_C&}cgyn>8 zNs9RI|KevAC8=jqAT3%k=-u|(@wY$6fb8qkP;NaKc!LNgZ z-$%bs|4AF3AN{`mCvbRqes=k9)i*X|_@4>GS0yj@clVACe?c%<2LYp2ZE1TngyR1z zRmiCQq5NAmkI7r>Zy#O_P@_Yx(n-dm@ka^$5}HlIyD`WR`XMubVY}xuqFM&kEvS6 z0SyMoF2iR|TT49upv9G_&|-q`ToD{B%k6IoK3Kh%KOPS zXZrmThT(k?m$bqY9HxGSFRhoS2ayFYf%}gOmHGGpZ_Q&8Fm*_Lb~I&1Moc`hXrGUo zeSG7XrqnV|4>^mDp`$$|PPripuFtW&EJXw7h!5Au*|MjwN>FDCXgv~%jpKfzT9&9I zm)R|O)(9|$!-O_bQhsVi(GduoIz5(FL2>BKPLBgA`P3f9psIpt5?`3zah3wE3z&Bw*tP(@;l zU0@J%BZG+WBxx?@5;8n2j5FD8j59H4_25<1S|Ypz{A6{L>_&RbL7)Sj8Tmr4;fzfu ziLKcsAZ+r!t40PwIhxoCD^6xsr95|qmF{S(%j)Xk5(yYo1?;q4oy-|SATcmyJRG$H zO{VHLVNIO#ZSX#=AYXfxl3o9scV4UXQi4(xE|-HS9B@i;vJV%b6_R(7NZ zitUNVLp{p5h?m~VIR_)Llm@2Dp!G!$FOiWp=ym5PJ7d%%$|;ZEJIYaABLTmbO&ucK z9c1_P=4=Vq^r^=_5QqT|=i4<;8oduMQt`>v&d)Yzi-Q$68Sx?*&EVfbhmgS~iGr2p zVv>@#hxe%VMKk>5@O@ip$8Sn2=mn$_C~QX54DW3}1Q0B2fjVkv90pQG&O56rj$`C0 z@yN_kqh;2U0%+|KTlHCMsVZL~MRDBlYpIU1N*F|1px?1cB!OnB2ZjSPvXusu6n}t0 zs4fy?@jrEU&N@MkM3MPGYez-sgL!pp_i7#$H`Ey^xqWV#_VV%Rdr+SlU6VY1pHx(5~}ccdOo< z+Q=4kc_WiC_yw$7b|>|8zn z`v_XGcoUIB`oRuoY6+{<8QkCR?1l#L;?CQ1{i|8N#bCP~k-CZVxVftXj8P#LdN%Fa z`b!!8cey|1tItyq$_B4ND{$Y|F$%xf@rdV*6c;45SFP~aqLfK(S0`}Twn?UKmoV+` zlwD3KEzPExYex1e;XZxgCfB9t>l4For<~DLt8S56Ajp9caDD%=xrg@GonGotF};nq zY=8uRZEdEPxdsVvz&@XhG7g~7hLDd>dHuytvT~xzc@U63YQg-@D#H_G&zGGBsNS*w z&GxSfiCqF;d#V3D+%M9l42bIgq*e zbV(AFpgxHtL$8ij(??|;c#nW0DZak^Bc`ndAy8qprK{7WnPx5AMC(AS=|h;W;_CFo9hOO503B4W_bd3nya zcz{6TM)KZq;(pOE+Y0+f$0piDoKJ-8uh%ihlM-a5>K5Shl9y}qic980Pl^$Gxu6e` z@@?*Z9$A?gDEnl${W=x_gDEWo8MDB>2q&)JLA|Dyz&QEAD5|+>I{~IBY;Swb`;)Dr zn%J6QGV3D2FNDvl)w{kpbFyiiq^hSAp7nUbto`1?K%tJYC$=O!s7u2|T1{3QxbgDa zsfVFS)6~ti`22X1)MZ(3C>y{VVY9r93pJe$V?+@t`nH27iy~}KOMgYhS-E9G_*MrzS<-0RcH!WHt7ebFkE5(G;*O%UyPgL;nE3A_c(P zLKdNJ@?-$_UAe=f+;>O&!Am^4@kq?r`}n~(*|}9wJ~)&2EuIt`v(qu$3#&gBsW%BX=RRCZIWi5e2-VACY2F*fD8 zL=)$bK(TCLzlZ{zM4Fohgwa3cE2;M|xWaqLv#3fy*fW?dHo(LOdhGK@b`B#;zs83p6O zG+g{<;D+a! zE0Q;njAwua6}vYSQK9((FIL?SE8(aWpdJ$RkRs{sYuFZopCiv9r!PTyRHre3kdr3d zF2`8#4O5Y*1|B#9f;mk7*_?@l$JdJEwZ`ysJmn&iesDvZs=1w^nCmoz(w=FyTcpi3 zP9)cLjax7Tue+sn;z{6s3u;7ycqyJzAa5m>rAdc1lpF zkMo$B;xkTt1BRO3%*)uXGaFo))Zsif0k!b5^w3(nAQAh%8 zFxMdVAaKRlRew#C@{PaDYl94=z7z^yx{-EI!r?tvqD*6UhZNu7@ngt~6gN?LoG*{Q zPw00SyvznS3EIb6O3_-+h>E0g`<@lDkpWgS#J^U=-JvUba4d~6%x~?AD6t4dlt#C( z!UCvnZJU`zVaSD((5^uMKksKbCXd189LlGz(Ysu7vZ9F`)cN#0`0qwYt3f*PM#jGz z9BlFMmr>x@*Kp#pqJYQH95n7H--r3;zKk@be4S<&esJ0tNP?Z;&7|K)AC>@KSY?2= z>sc7=0=oAaFVN5>iGpdTHb(9KotGcLs3!bKlz#y1NwxiR;GuSD1IP1*=kdM}DJ8LJ zIHc&{SvCi>z$w~byP*HP+)#$h(ahY6w}>K6{G|_!vkwo~|M^!G@!5+z%URw=ec9Dh z99~vR&m2fv&H;=&Ojj_b_*xB?Kr+3ZS8BD4C)x>yfetS2z^+8_k7><%1l}5TbeC(0 zsU5y21`b8xW)ia&pY*88?PR`MH{PTsc-mzG%z$}M8b?GGvli(0kK!e5l*N-hCjt00 z9{{foxouDkGD#8g>SYJ7iImdka5Ot~@+*F*3Y>XS1EpGTcIqspIEP z0M8&9BI`QpN`AMHZ|}{@Pt^K-70m+A5X>7!7WYWUK1u)VgXez%DCjk%12d}RRWGRW z;vK%x?JDZ*EqODmC&aA|nRp91B0dA9PfJyrAtFERRMbdSzjHU!UyW$zBh|lCC3d@> z6{Cc^l4t*ozDN+xWK&8~qh1JKC#mtr_tu2k9N>vZWvA4Vs0VXZv(hUuG^~r zVDI;Vrb_W{m)=F{RE&LiKmHgNpw!gT4U0hHf9b_DM1eBL;el|w$aiug{OV5(6(gRL zv^|7v`pDfz1xzDJG~8jaXgQ`)JYbi=o>Egzm$dioI%6kUoxAM)q9sv?M%$;_p{sZ^ zcHng+xTYI_0s@&s;T0tpzd?e(eQ9yzchlgv633o>Jp^v79a-jKz^ z1DOxVa}a?OTe*YpIM$vEr=a{(BATOONFqx`f+N5@pNfh;lWpRBeUky(K!26ihU^7r z;E(&Spk;~iWk-;1+T1c7qjj(AjCQG1uw{&>$^h9l+rd5Alp1-TrCvOGDvEgo4q2d z+m*h4Olo9nLFvy@7Zgg#{iE9|63sRf4eDJeT;0E>F zm}U8k7LwRo+jqMkhxC5xVJ{fLRb+&4mh*YhB09!#LQBoJo4{kAs6sJHZ2Ab$n?#y4 zwOVp~ywqJ%(d6Fz!f!~tJ|f?GDmxF=5Gp{a$ckZaz#(a9X^B||32#=}yVu`p83&B4 zx(ei&CRqoX3kN>847AJ-v|SA#83#M$2D_{WdqM{L3J3dJ1_$Q{hp~EZ#-UNUp>gY> z$&jJx!lBugq51it#j7DScz1qy|7sYk_x>gK{mA>Gs-&}piVL}1qQFt~eP$&wrFbqK85Y3{X*Z+U@-k8$=MejXA+&U`VIwrF) zCMT%AVaVg=F^tuFx6VVmBO_Ej|LDCxSu^tQjbruRZPttxx_|WEj~PjsBbshk|IvH* zKWTHYnRE$l#h@o#v3hU8Twv*>Csyyh5PDz!kKS9`Vk)q8D&*QM=z1a)tM}ex4wpyD zW)oaL=fFLvMp#4BhM+qc3`CwEK`)@CAl@GU{vUDR!(?HalB?k$8w99Q8mtk_!HEJ{q44MIAo4#*7tk`pwBSrL{OZ=m(GgiRilnI8fU1@x4~7Va z5s;VSTNEj(+?~;>f*H2^dCuqV-^EWu%H3e%X3=`X(Y0kfcvA>n{A_9L6&@50gyuMr zJewfdcfrM*U6@Cz82Y%j|Ck|JA$e+t>u8wnQ9pV{#6}KN>6f>jLz9FfZEb29F^2Qc zx(g%V1TR4mPtc&ZtfjbyS}QoxtNeg9pWIxh`PdPHz=sf4I5ZLkS_R_po_)PB#FubH zdyNr9B4lH@VNr#7=;4J-!#CL5YYh{)!W62>0wr^82)5ONW3D-kYv)gg zpn7&6kc)@;vtemuV(cwa^vB_suheX&3Z2RHC-UZ*4tXJuMfdI0#sgZvzB2o zJIo$c+gwTuj#sKfXMnFu!Ibcg;V*Jz86+q2kZHR)OB8w)sbca7Ld?8QT(j`X_MoTm zg$*IjO9dncK~lBSE?VeglpTrqXZ)Mg7c@$x1??nv42#Y>OTUhA@|!@NxCkFHvpNj8 zVlvS5wOjAs(PmDN#9`pLoyB`O9bg;4T8Pm8TG(&iSx&B!{dFYCD=AR6sDd>D`jiRH zZunC)z2NSbQRy@YQwgLlNPZ}K0~d}9S~{L9Tuae%DW$N9>5xRWIsh|Q3r0x8qw%vJ zz@XrLx<%6AbQY|BUtj$uZ2$AvRrl(pTJ)+ zt=QvkAsZVN0b(VNn7d4&6Be?or0^wN!nXt|eG}w)r0IwfDjZS}IvL+(Mu=|aY6$Vw z;ObK~(>Uh6JS&QUC{-A`Fuf{#rR*}m6>(F0>vET6uwm)ufCZy_c=PKX=HwRTQ8?z} zE5>JJ=L&?MHjA(|1nm=03<- zvkUh}se@@id3-6)a(dnw(d!tb+}0*kfhQ4&^N@P{CzTrV9Q0B6^Ro^z<$x47?Y4!g#o#Cn5?fg--RsgWjU zDmK&>CYp8%n`shwhqbR%bps-k95F7?%lqDtm}s5m+5>sv}LKXZ?RQ{ z$_>-PZGyzYS>{R@w+^TfZo5Oez&uttGLgELu5rz?aSO zJ?VA|g-NF;rLRTNEY7w|q2Sf8*Mu(w0<(!^X~pA{4Xis{Fi9WI@nE zAXEU*?vhERZZ(+c?QWCjX#~^maD5KQFC%q(-+t&Ej=SNQvY3;sa>P&lk~kff)9T3J zQy$?2^U*C({WRG1E&gydOejBhhP2NTW+Bad(_$Q~ER7oH7?xagzmT zgUWp$<1FATefy4!y648X4yvk*GW|3yK=%NU*&It!A5;Tw&z6h=w&OzZ%d$-qMyNS{ zr3-Yul#fPJU6Uuq`X8&xWWQ6B{xv#~`DvN(E;5SkbNk>pycBAQRPp(YR)VIyq$fN7 zE}?K=;1OY&0r(A@4EOk;=YhL?)&rndpO&UpLIu<>qf_SN0W+R4|jw zxKvr~J>VrR?FU@V7gy6?dJdm^6|QOdyLBaY2q)lf`@$pJqx1LxP$}DfKM>BSDkl=G z-0&V+p=`?Q{>ijLV&aVfCiZQB*L~(^VnX=%2N8)etLdsfK3r4;}~5FCOJpQEbo`48W9RY~+iiSyA~6DsSHL)V^li3I3r@@?qk;4n_I zSTP~(Tgm9Jx;x*~ZguuF6Ha};i4Nbd%9+zY5HsPy`|z|*z`^1nZW|QIVJEU{LTjJa z@HQ7H@`=BAT<7j;p&2*zK@SVSj-W@wyue7^%P;qf^@aouE1mA(y~g_Cn92&lh9s>! zG175A1!MGSmQ#*rGaytc)qv2teHC*5i7lC_)}OK7A?y6bZ$1XdQW?Ir#(PQqeblk> z-uWKUhO8ZcW*P}r@WF(Vg+$;>PPdcB`NWV_*%4SwchL0s#EAv2spqG&6mg8h%;1 zElymLGv5s2{BmB&IrCY}^jq|NNP8tqzEu!Ue$CmJ*DdEFk~cHBYe`V>y~RbMX=cbf z?qT7&+@{#nv*CcAhsDP&t_r6!-@`$VO7Z30RA^>V@fwfHs9N1LBxgrbxVoRd8eOMR zoE^>Uc~l|ZdS5?acB};CU#TwdZk#tep78X@j)!E@q-l2IeVl)lv;2cQQ?rvzJ^nS@ z#BfuZ9c&d>6VD&1G_jCe3LA$MgiVQ-QsP&X#w-AjJ?fyiVA*NdGl-Bk^z00 z4l|Ew7}sybKN)mZcxdwQ()5Rm^pJns!{XEV&8W8ce*SB0@O@!R^YjUdso1w%a$(yb z{-P^ae$0euPk+zfidYe7Z_{+KV{gV$A zocmtA!HdUj0T`vZt50T|!DxKNz>fM)`|n$Wm#Mx6_B<$}ikH-0{93 zp9v*TCthg1UzWmCL#kfhQN7C+@27+lE|OM@Rvo72^_NxazUTx8m8s(--J&C1`Q51@ z&_P>Oh}=q-TT7Z>&MebmO{UE(EPFkNq7->UCI`PoT&q^66f>WnS{NjkBBiRIl2tfM z%l`?oE?f+H(`9~?vs4LG(<=Si$81MTMRUoJjgFH?g9Iaae*KCM+X88{b1Vj`f9j9M zglWYpM5JcE(712SoloDj%Zqp4xF8_{rpC*ogj2aO1N;h)_su7hOehQZB;aJ7@T8-K ztPe=J+(U>ao%89TC3pi~CRgsF4SSKLUYj-lNz+T~Er}GDR7Z>tW26Es#$_JtpC6q- zjtHI4QTvrVfn>gtDxM1M3F=}z*GFLvOwY> zD|JvPlQG?&2yfvDhYuYvJtk9slyp8K-c^@Ut&SOY0J!?B^5I(fvog|b0Q(+YrV<*a z)R%*f%854BT6ZhH{VD!n`x##ZGwrg*OSJ@U9#X(eABZgna2{9Mp8AX&zbR7(L*17z zj4Dg}RG^ZPA-~1p67%v~8P&^QuYAek9UE>R7=k5y(hRQXpmg!>k37maV-07PmhXRgXfi!q3`-}uIlLCrNS<$!q zm|e4mq!2Ok(?F0`B~EFNH#y!|A<%XNptp^xG1S<3qAGDvZlU&qk3Q>ZP#M5?ShYjP zi$ia><@*!bTN?;isSgVObGm9rv~+E>v919gI%S?GV!A3u04`9BW3=o94N4%e>H;dk zst0+YP3Q4}X9?vxX?z!WA?LvH=~U`z_NHggz(pJ?h!TO&ND0gDtk1^S*VBr`@E=){ zG77)(%19TJCRZ%dkl)IrjUJh32dQlV1>cV78&fkLYJ{-rImp~PAE6Lq5Y*Ls?hhnP ztm>&8VSDw2#PDp$VGrz{6B97Pi}6WiCWy$EHecS36RIOv$IZr+R`rPBPn64%cUv-V zYLiF=Mi+Et`SRXcwl?tIA~P#^V^Nsi_jb}?l;Q_vKNAz~NIt1vie@6Cxg=t&#-TE$ zYBJ9!CtSWXY|U&>sxM|Xn)X{x>@%Q%bF|x9#?$lE-{VtgKa%hl(dh=$L=J}$;8_@tGyKb`g8*N z*7??Czd2Ne{AKfOle%29!`z|+*cS(^Hr>}e(N;H2ql8DA(_Q(Qk!UnW&BrZ; zTQ0ur&aL{Ho^X%xcF&qy7Y4FU(9wwaj0S7`6lG{ga-nE)-3JvNWGYpenlahC%4_RQ z!pOF%ccwmqzlf$ndVU&I#4ZP+YsI@@mI z*Da;m)&)M_>9$3b+pewKZtX4p#3mJ~mJT_Weu*#rrds-;zO;+2mh-=N61sGjyX5k4 zrflfLW%tt6#1eln11r(J%Y`KzYBVkvns*FLijM}Eqw!tPph*#w8FJ{ZJbJZ(;F+C> zEP9+sfspy*xwr!KsRRVnLIkqc{INtL(E{OGCa)03%=srjwp)e`w@{@m-(HPg9u?K; zis^s3O#fJ%#+GRL_p-%+-CKrcW@ZQVfn5FR7`d_KLZxMn8u6N!M6?L=pA1+tVf(gK-4cklgh6?@z*P9p-59RXZ0SZMj~*+a^^T%)Szu$@pg*t zcZMST%ohZDK4;Wz z?&)3#ymjHRg%nclW?h5)4bPhoz=9;4gbhjsV$r*=)gv7Ir-#_@#6WyW!anA~Kc&YM zFbb+T2WGg6m{i=7EkHlq5FX%lewq>aag)R!m{*sS8d>~#-mjl1Jo1FH3ks?*qc_51VFlLSoUNYtrQzK?I&_ixDo_j~w#*!;Z!L08*f zyed8I01|yabjJz&-k5n9ceuZ0qyHU@hSxa}9Sbx;~{`^WK4W}~dq&8a3 ziuZxkE*Wc%8ZIk$)_UMJ1($+X1wquIdwn@q{kdFx@~qDMcpNINq?#^XX9l!-;^~R5 zbZT>uxB;<9Jq!M1j3X`pu? zEv#hba9h|bdp(-Ba-YA{2Pe<9UG8ThwJ50poIrjUZ)dV$KUz_W4s|x*A+%3OBWhXU zJauw9}3BCgjrQF`qcun0*SXopC` zBIb_%kj{+Lt$0yx*A=Fj^ist7DY85ub3mHZvvtAA#9VXA!Iqoo9$9-vr}YL)-sZicM)AkVjz{_y^(ZwmqGErqlLu9`zioP*NAOQ{`H!1Rm$jKs zECY_63>w&6oLmAL?lk$kc^_k(U!SOCA3soRaA2|Vj2C-wdSXU>;^Y08l*?)M`N=(l z(>Ug}hui`FC0{(kj|1MfNa-gRJ`V^YJs7M9^DB6f0coN(sh}Urby!U)`^t|YOb@AzW3HYLv=HdnSMVVw!scVPW)ALuZ7g%ff%lM1R zyo)!lFWxp?yz9NFnhL7^nf4?ws9EeUrWxeKQgGKPW&44ri%O=Iqz1Yi7 zuY-khEVRkd7)Pp`g%uTeDDBiz@clGkIJ*W(t~6Ry{j7T1qEuBJC92*hF}Eu%%0 zqUWcsMbX!br`Jp18#K+$GIyBBbm;u8n>CBDHP@T=5@^G>xf; z4ELsxEcd;EWR>>kxe}{X-Tz&ocPj|Sh~ECqjVe`%Cl_=-;u-y4CFg#7JAWkSb{Je9 zKA4Mcq5G7GDF-T}L?o!^$yKE$M{gp~q{B*h7^W$cr1eXF3$u<;mWt?=PI@54>7eL3 zV_Z{Z_ylw*?59Ea>gK3T-SRR-=f1A%b5;%;^4>>*XTDjX49g=$tO4@PMvv1_%kg1R+8gQ* zjuNp!NzQ^mwm*_{wq(Hy@RH%LL@9QaAS9<2T!Oj@PJ69K6Ym?e1sRQG9A(XC{8%k) z;}^Cj`HVFUr(%JV(8YpPn<`3+JmIQT8a{7P{|DL#pXD>AqJljq<3v%xS@m4%@|NQ2O zJE*&&e35Qbt1J)Y!sz!H(5&GR#OyT6#IS8YpGkjXVFM3}qFuPn<*XI|cq~&m&3hsC zg6UNu-xq=UA(_jn55)ldow}O)+*yy^#VpV^?oygrEMfEZRT(o9;O)4e2qGH0;C@;m zrbHQTR9qm+bgx`i`OB@Z*B6(!kUw*&mY$vs_ubKgvbOj<^4U^`->If@IY_twg$Vc1 zJ!lc`9lcQ#>}Gv8u@+C3Z0-4h@g1f`WI*ssOIfc%WQfQRVRE^}5a{)l$ane6D^Zjq z38Q1X^dHH&?Hxw3F+JI9v2msD!LdQ@yP^Jhw!7^r<2J$9;?uYWLn<#a9YQ5$v+0d> zraix0OUz??aprH|p9__Awner3&xc-KOQP3P7YIE?u$p7;4 zM)shc#_R%etK~x!Q6K-;7Q!J}jNH-4ZAJOxiM!$QCn2t1b`LT=C}o2Wjo~Lr@z5l7j<`RFQZhwUN*e zxcN;x1VH&d3f2M#iB>AVs*H}pXtje>c{<2kVB~PLwltwq2h|4zF15!pkxgY=ARZb> zO&Nj5`$CoUpf+CNiWL_9ACmLRE>4lUMEwvp$^fk7+_)~uyoHUrzOq};uPzxYIj8O9 z=@HJVOL387ryr~QBRNm?3Snnl<>{4vS{K)8!umfX=e&K&3$PPd^5qEM||1d9qu$P|)2Y=hPvE<9?<>kNOm&==* zzxkKH$rr418$w8o= zUsTm}vB1l1JtHjPg2h{$od1ot{Kd9}#70EL{}6L4&vU_7| z2dnJ;B8y{TG}frhxTz{|%>zi7ATy8I(k^h>Dmh7EzIs zRFRNW!z#P6po+Yls*)mB+^vmeRg_h9)zxofi4}EqJuOWGtgPF}@Q$g;T?=!YzX6te zwk}wP#nsgli?Mh-@b&V1&ozfUben6JI}<44^&VEF(A=7YhT?3e7C1lnp;hBJIWUz!=-*^j z;i6Z!JyvP*&h|PpmF}IpdTC`J&xi~PG|@7vmqHqwIraEqf9?=h%Utg&6QljyNykRt z9A}CAL5hIo`-Jt|=QY7cvl*ZSOw-KX9dVDPoO;{uZLPtbj|K~$F!tyrCAs?%%%l@N zXh#?3u%&pjzaX z6+Ha#aCu^lZYNygW)q8_m;uNoHh8B|5{@{kKw{w*M6!rG`ea;U(%NJ#SXW}3BRFC0 znD!pE{BP9^l_>k~;b5oc2=9k zDl5N;AJ$vttt1KdBR5~D=a6yxr;I+u6KoLZ)K_(*wT~{goE(kCF%qUwgSC$zu2q&l z)v*8psv{>ICu-H7r+XG-jEUu})5=y9Q;p3@T=2H3Im87fl)FemgzTMgJ?B?8idbAO z*a~hn5WH53+ECikHs61;Aix8X9%#t+?9wDF4b0LFAhH4qX4HlB3z2WD#i})Y9kkzR zJ=@?n1CfS|4N18nQ)WXK(E1^>nQrsEI1;XK*r>RjJrd$|csDnH?RKn4(8lrX5ddZ_$ zZw1t#Rasz1&DqCbmRaZn-kpQRwXZr-9{CuU#4$73sRlmR)nb=anC2M%p_FStkxEbJ ze3yte*gTqbn2kcsk4qnB`v0(YpHWSplO3Pueb-uhojvy1dz>>y#vGYn^W~no=k>e)gCBc< zYyKl3X~Rz@hb@qQt6IjKMPs5;;9JAMf$OoIsZ@O=5EG#_mg zDr9ijp8Tm~YBz7|l0PS@*@L#8Y%+bvJDIBKvnD3^yXL)5;)F>mX9tNaCxdhYSCLP@ z5Y9akBZdP#~S!%t;!(IVn}irMEo`&LQO52si!(aQToY*0$=d2z;{(`!W&TIlTw7cqXPe(D5#dBId8BzQu|$v-m6_OET^?y zhr*80+Z-eS86o9z<~MU)ngom&ci2bl0Ya!##NXT@)h#;ApX;9`FrQPd6CV@?mc^0= zJcxMFctkh>@1c)69J6^m5}vK?d>w5#8o^njPgbCJ_jx_GUS8Uv=;=3g*35`8ra*hD zPDFp}s2b@wu_II0;mY{odcy$kXQJn=#Y{)hceDiJ^@2w4ki4N06+c;n$CH!;wBPp>E_ zZe`WGHD$lb3t!AEG0~4sU?|@y>OWIus&gvvfT1)gD*{G>bW0LlQ_Ntc&->z0<0g+sg9zo&Gyf+yS2ddrLAg-=< zP(fQQt6Feme_2y;+I2K6W~-?gsgJd6q04PvHYREuD-qCa1io6u7^sj&Hb@12C(b2 zU>pf_O0KxcisGVp-nXo#azka1&zgIJ;&RuJWlZw@EqgyQq4^W(sD{)|D1*8cTW3cP z6#)L*S;l5@Dfqo=U0vyva@poG1Dg~545Xd-cvvOxl52G6siMd zo0LB}`Ni9DpSyC(DSg{g;ZR+@CGf?Nj6{%mZic!01MV>d2+I95qe{D@#8^7c`OQy_ zRb@RMWuQyk6Z%-#0m$NsL)cnXh^&()!Y^DTL|Y+mqWZu+2pp>s{zG^ir zYJk+pOr3=z>hS|0ggSX5p3jho^zNOQ(qrf|p72RJi2i8;cw698@uTM(F`KSj4&n*F zO||mTnkry~2VLrMD>a#|z0VnB)e#zK9><*>2Qq@rbNg9x-X|kWxl{*vrn7FKT&9ZU zI?fzuPJ_39Bhu(1UP<15UM%+ssag_50p@wA*8jYwo`iVHGLy%lO2h6=YqYI|dP5rY zE zaoYp;KGlP`%RqyMFA7+pAEsndOhu%ljR=e5dHqTKs|+Z@{8Kd3ST=2MJHZaJ!)C-N zE-<0!Voq)o{~DNOX?&=98*ybQSL|8}|6F3pp-%e=Xl&ESmW?NYVoqs30%^1W5Sn`vk^2_i2+J=MGmz%;nl-G!h5pz^u=o z2b&5!7zwDwnr1f)1Vlt43d8wJhk`3?;d@kgq*Ukl5ZYFLslsnkE z2d4_=oqUlbl}1tKZ5IndQH$x)njI?poJjzuB}F6Y^UH_b%KSV;&;c0~*7CFf5GJ!2 z0MSZ+PU5exvITe!1F*vcQ^L}74K1}SwEEGk{o7U(re%IG@V&TbdvlhY7t-ZZ(VT0% z;jxjSX1b_o=pdkA6UlpDOR)A9@*@%&6bvfql{n~CqK_h-L2ybr0K?+EOAIR(V1l=` zIh##i9GC)jMv8nHs`&BnLMu{(L#vK0;(nh-f-Rrf@i4tE&iV>V>fkAsM(Qk}EaDwG z39;W^lp-9@4^8HdNTE9#4oC{0(W)y8rdyArUd^SYe>3crHuX@6X}~BpMFF)BA#PLY zT{%U+ZL1xfblJ>-W4}Uu)Xm->-U;ZJ=$AC5w1D@xlF9^0kVYCCUBqpzXPot0=@Q33 z98g+C#hsaI+DQ4fzhRA2*X2ro?SD~+VW3=$t_sMjx@xVOqZeS_jpyD>+V_oqzRPAG zN)jOk&WqDesdxS0Qk<%tcwAq1;Bg7sm z(08H5{5iO2nC|s_O;t{P`#Jk7%8D+w(gEZf9FjKY>svm7v~Ri>;5F+4;4@`bF58+`-+{MG)t%sw<_lR|f_o~C zViyf@{QxupIosCoEEhv;`Rc(+Q4ux3lp4r7-HQ~d=I93s^C(CUJQVxI@iAv&rm7uw zr&R~-y{p`Y*@9T^<~|XUbtLtk%*f^`CJU)#>x4u28D(AJvd!*54K!rl&~(XGUL6*$ zRUc}RMV4H{v506L05kxP3fdXNCmWK|+MDdYmx?3;Un)VmgQ4x>!JXJ+xqQZ2d|&7& zx?R(@WA(DLkiBXDvWxNv5X_-JzV!eC?|xA5fLR#4$lBIj62V%081Px?(wrzr<$VgLWo){3?^VZh7CW0JXjg&Z9Rz*e6)rD z@pAi+AShos$f9o~i~rWS@WV0IVgCqi+VApZSN%yHqqQBe6zCxft04-*5qiUquWEa( zd%)1h+l4xG7sVhaRLAfkWE$|S?r#EJdeh?t-)H>gXKNs{flp^c>xKslXTz6g#XDx7;Rwui9YTIC_UYVD*V*{axg_SGgylIT z^L*g1IdU2@C&~{SLg3a_fX5zrVcoo$9zK#*HUL%lSy+CPnx}khzSENe{}+th7ZhKt z=*KtT{An)c+Hm*~I3_fD^%J7Xj*s#R^GDK<0hSo3p+U19ot-mV1kmZj*h=}Vj{qWc zqtY%KsHP#03WJ4Ug$7}9vN2n*8zeBy7Y6E|hCE*Uu{`Z9H0B!WJ@f+DBn_Ft5XPxM zRZEi?0878%%6%(GrPSD5Vg1oY{&#%B!q_o)6{yy&vmNWk6Rw#kG4=<_vM0jpcORG6#*?U2DuwbtNMMdHkBsH zhb-X28Y_$4`nDCiS~OqLkcKws3Y}sAKxH1WrDO%*YB*PSu&TlsvM;FW3Y;dZ;^v1Vv#RJ2;Y8 zH%*0xbx=X4kb%8ksTW)xJYfWxkss73hTSJ7IS0_a3E_yR*teFM-e z{<#isx$gu2YI__g^ljo$BBHjG{Q2)I&m%!{XL}*QObVF`5~y_u+)kEm6a#$}cnR|J z8$&^V)%_a4f?pfZaAR4o zIZ~KvBo?@B=B@naw-sL^C}-MPu;0fnzX@P}KgSv>Vb8j;R|nJ=U$NI;u^LBzuGc=) z*uQVp|G(X?;*yR`)7oIn8(=SIK5s}73|$g71m z#7KYHWZ0~+sm?mDvg8nJn9I5TO9fBg*^K#wyLPg$}3gCK8yQ!Yh|h{4ylw9c1y1- zN#=)b#ml|7t4va%UfZH~-SRDq=i1nTL%l#Ku3nK`w=y*eb!@R$fqU^tWx7{*nEHFE z_|+})nNdEML1+7`F;*8C9wt|_-7S)wo$4JZiSZ+EUDAkLt8LQpZCD+hU~`Ecz_UNl z?WL1D5Rof4)v7Md?al{a7Ml!o&`Yl7DdB--I?J1v-Hx0Qr@m!lqyMz%R8e~R3} zPv!)P3Kd9#e~_neTg$~VaLyeLBu&m}ZZS;O3ztGX&6o*t$ms+vjn|2H zrub&)WQP&EIdl{7@ms{wv3SLaPH%As%R^_-a}}S3EQbRix2R>!f$Ta@RNkM| zzn-Kdy=V($a@vuqtQ2nS*~;_UH;pK?{~@GF?^THO0)UsE5+{46&sR1=FAWc%SB=DF zDW21zgJjMLqOOqf^e1^_uIkOXP}p*{u)2`OfQ(07%T~L`U)><9a$^A!ja(7-AF*_@ z^>%CI&U5RVFNS-yocnQWux_gR8`UyWdse1qxh4}KWNy$a9#B5lQtMWph%28mM6Ae{ zU8iTzcFjt*@q80Da9qqaL$M80PxJ9@Yh$N&zuz})>m4qd|JcDXR&rcYFqCfm+`p1R zEK_=&NCEO}d{yeQBSSOu_0cjzDLK}IZe%C3EltAAMfI32n*)_ce~X+hZY!3av`m5i z$lT-=chNI@GVUGBdYC#S8JLc4fwK0WccyV;RcD;8zVmXDY2+D`;Mc*i1Pj!{tKQAugEd&qJD&m-#4d!#k2 zBHBfZa5>_{cd(t9Sm8maR$vWupYx1f-rzyi(B!y39Z>~0$6SJ@e?g~h`^0Tak+wF; z5ml;Ackj1pn>8Qvk$EN%Am0JGfL`=F0kib!tFopQ8wonQ9E>}fVlo(Q`Wf3kfiy!7 zZdN|}UBk~GXSgF3n(F|$4nQ#^g%gutW7msmg1^i5r!ytfY959nGi@9QBx@)b;EMzh(XF))`STJJ4%*tF> z)Q?Ba9B&CGP4+NNg1i9m6Hc+_zPZ;+;6_u*M#5U)Q|R@A7Rf4fke@OIvSqqEKL@@* z%w|9UY|jX5Eo2d9CJIhX(RU_n-ATD%(S6MHLe%2&q?NOi!f!sucn4O<+I+Kgd{aO& zNwm=`A#FVH;j7ayA~&L;3pp)K`#M#8qmQvpjn#QZz%6J~_R+=6Y?t+ix0TVdIoEFp z(es?>wt+}GPV2$mYF`JXuqHmK9%;o^KVnV-1Q_=Ly5IZRfk zr?aH&e784IOh&q!%fC2GQ>T}A$df6wS-nZezc`F~Nc*(B$M=MSh4263Ftdv*bKa8r z%D(?_7*HsR@YzoI_b316FtH&YFpgBfO2$7NW@(Lf=&YPYpC-a_X`KZeHmr90IGJi| znL{IN^nRCrcIt->2(R`>9EZuDUD|2{Nh+5!2fX;Yw5pgrq_6KM^57coz)ds zDcQNDM&8o%QX%NggXM3x;@ZbkSB`2zmT??LwxdD+OHul?aL-SdY=Ay04|CT#S}^^v7U z_@=m`=eSST&sV2cUmlVDL`SWhT<|>ocAxxM-TX1%lLP4=PApFrKCk?4`om$mpRAm& zoOVCD-iu)gUnBo|7Va#&^~k^>SnNMJ%!98NvqR5*e{O%e74qux>*=$z9>r%zIj^p^ zXB8^`&pC`L3TTQVbVOa7B-2Krh;-i(Xa3Pf9)JR;mL>92TV zAE~(Bgt(vY#TFJ4d~>6G4pk(@5(9TYemn@zowx5`{f!qqRfn-snowm3Biox-rEgSZ z$N053GRYEodR$rF@1!!@rC3dpBm&ap*;p5M(t7jLUaYC2P*C@|Y7tF^xABxODUTO+b)6YWU$yTQIjO{Z9YbbGw@-MLDY(gVg4)l@U^tN9P{0OCA(3|ipK1yyIcc<(^6 zUkn6Rf#6?nlEux_DRT*2ScfO+YB`S!cjyXlb|`{!(}Y}86ztRBQW|8wY0-t8I>#Ei zyJg)(!-H+)3~muYLc=t4aaC@_&t3=uT)B{uBdYNfQKMj37-#~Kc|kl_8>$tnnikEZ z^{!Y5X4LK4NFUY{C^rUpaxjNR92UOj!5hYI6 z$O~#yr4%GxCMG;%yabp8(Gj5|YnNjTs;^c(p&Ys*8p<64NKu6N#j4&Vcw`%U=J;0` zFg6LdvgLlPcZ}fYjb#*O!Mx^Z6CU79An-D0+RRJd;-!DZgK*6xNMeZa42!HqvpHCT zGI;d&VS1bGh&JoEJ7F1k2;^#Gtk@h3>)smG0cUz8Mg8jun=k-)9x=*>4-iI18RL)1 z3=i&LD7Jc-oXwd`Mh(}QUcmN16SXW`OT|1gv0woPHp^JTX^!uW13A+4lk+eBDyJ>C zFpMHfrl=>EpB%WaYw!{8jTbD!2A@vZd~8jZECfmXk^#{sCa_dpNJ;cL(lV+%oh&|3 zU);V7PlhpDn)rOKM1`q@SPhSvVO)ZFa&JeAGX4vrMY;=-sgGUUVgF$E5=V=e8vp$$ z;rI#F@K-Cl6#g4gvS~WX{(?k)(eiE$8p{b}1ZhHOb>Zq)!kXYx-d7Z^g%6(=?m(hm zmTGK-f{M>_AJNbYA!(FZKhs~TW6esUn5E4;0h%px1jzPu=R^ElQ$byUab$R`;d@xI z5CyZPW{h#PymVUnh)Hw;x#1OSY+$a>of#G5%=Dh*AiD9#zmnB5@BfIOaetbYMw}Z_ znCWcDBR>ptG31S1f*OcZRPz(eOGn?G9-QGJ_)SESDE-<+ic{EJFE+d%k)`anF6DpL zG|t|DiEPf^L-fdi$3hXs#Bs9p_lDdBwd(*mwX?aq7`3oWGaFg!Tr=^)7o0*v9S)1kg ztmTE6yVJ?bOVc)z{maYp#GXR;7Ju2S-dR}{csM4%vQd!&Q|-PNu(BPqvLpXK&jJL9 zm*V=k)F7_7yScLeYvo|zA^jJ!7l6MxjM`V$2EJLU7Z1LCSX&oE`r&C&HY-wn{VlI> zHX!{r2!~=G-LJ7i|N4r(BZh2?KCgf&efT=eXp4WZX|O)!CJ58SC||$UPW)SpKmqeR zj~KolH`a%7NyLbd+F>c)+BOKR>VLsN?@`LXe+1KCwP%#QNw6dNElc;-PJ@bpb~u`| z6@+n$hEpy358F{yk`doqdnju+=8oZf+aQB1@G!4b*{C6%X<+lV=e`k}c$&yRV{h<5 ztt(ne@Wx)UCaUxs$Q84w8E9A9w<@yo^&7(B&cn4+fyTS{97vQjwSL%2-n#}D%dObt&1{lDBtUl(HDJnlqj(;%6o0!Q)(|J&PNVfm73#cy%BX9A((P-G-I?g ziske!&LB@{kTud4CCxQ@*htT11KKCQ44uRg7`bP)@Uacr8wYn;>VqG2iXZX}V>guo zqKzdQM$&i;BsQ_40rdLLU$E)AS_;m_U3TSg(UKSOPUpj3t8 z4e6A=3%!P$5#ksA9b=+Z&{1NK3JO_dmQ(0tFa@R6J$fftnmwpXkc&&xSXWZVS-Mi< zrMttGImmLtrE@3J$DRy>a`_D>bJ8RT>2emgiUO??c*L;8jBg32wDFX{(qBh)<-HcR zjk57A$~u2(aC|EquN03xef!*1@;kmYERPkoTcjckzY(-(2eFLC`g0*~;t3p3ocIx= zhT55yrTO!~SaH^!BK-yrRE%>gfw&O@38C^?Iq9uNKW@?5%%ab=NC1FvV zmIQrw-LP-{q4oyCZuvY0os<&byWlwaTBjWrC8>N<*v zQv-IYH>e0lI-_H*g?1lpNw=q^Il>4cm0m|mgD?WG(C5i*Uo##bp~w-pYZZbe@F zaKOIEa1tKh*LAqn*Z#c{#Qq58Gg#u$OmQId+8~{4!y_fioyb$FY>BGM**`+-HFf3m zP1JE4{WkAiyi^t<3Q%(_fe4vhUP42Rgoh6q6qA*tfE;yjBA2Dhr4PED`6gGO0=qXiR{lj1Y-o^fJYC+5`26!}xTTN?vR#Uz9(%s8IaFVXFS&Fb5>1F8^?ti@NQLx2G3>fiLT6FW+%r zzJK%>`ZO8`YS=)Jn_NCLOJ26-;5f`>d&?#E!-L1a#UFlLzU<=ee|dU|qP-FUUiC;` z^|kb_s9g=XT;1Zo8jQOd-tHO7xf*Q=r!~F$ID7T!xzZmF!=f|_#&MXZlvLL>B~kv* z2&8SVXF{%LM+=|lW`)%g5|H=Es& zTYosr%}&nEZq>~9!E;eYf?Q{?)H;wyig|O_{V=>6U!-GPIA5+5wCA2yi?W2 zRmOGhzwXY|a<)lZbC`U5P-Z_ADWLP4f1%OcuZy?(m%vi1|Mp~^$LYP54%0RXF)Akk z3@Q>##YJ)_d8I#rR@D2)nefJNkk#*Nk7l8*u^jP$t+3Ygjel7aG56P*^cTzT+eClN zy(f5ngS?Q~UuqBexi63-=<%^3?#VN~tJchgt{hRH{VVCfEfj6Dy26Q0Ht$?Xc+br= zq;OxTZ)M|n;Nx$>;4Y$&&Yy|7dwV0?lHQ$F$2%9NKMxMD&rQGZn!bE`x(w71H$`E4 z)T!N26kl{7mD}BB+W9oKLVFkWj_olb`iLf)Huh{FmQjBv-`5EKj-3(6uw(KJFe=57 zEWRLBh9GV`V>ehVPh(@cU)~cN?c8|A!Fb2@iw%RfDY%ICKFV&8HZ0sVmQm3=O)bOI zRckHUc_ZRBqkw*oT84AH^c`Bc-uO8@$x&(Umq82k7AZt~JI?x^QpC8GTbH*o!~Ss^ zh?S~04OIFN&AEm2jW(*FwKwZi56#VI(-8NHeBpc>V;5CT?>20wE`C2>i{+KXKqzHMzMsGjAliaG2LC~@E12S8MzP1WSsIW;$Lj0`k8_?ZgVkU+Xo`a zDk(Ng*}f%wscA}(z1Oyx|D;B#?HQkQHQA`&ZPpYrMxQLV>XD*b1?uyTS@xN20}UQU z)r7e_(mDr`MwynYrQ%OX?-g!o%LxzAtnVP(+s*QZdX$Xw4|0+I?{+#LQAC156=U7i znbn;a*t3KqEU0qJ7x*eObsk^T*HBpDtceooQ-*dv$J(0Ct@#g|Iou))Uy;*V!>(gV z#zyW8wyvwJl?Q|6Twz855lxTG8!o(BRcbmV7QH;~pG?S+i@$OTB%Ku~J^SX^vLsuv zCxM9|RS4DeeX|r^^)GM2)Jq8 z`GZYr%L{JWmkg~l@W11*$z`&dLqKz1{bdRhwc5IZ+|j_cStE1GO_yA%A*<6LY~quD z=x^#rcp&XXw!gCMaUg&CHIYT(e6hfX?rb~tuV?4uSf$I8KiK49FRjpcs?ct?;vX-8 zvnD(!Jj#Ep2~{p!m^Fcrr9K z2o8XB4dV(XGm}$uV^d#o1_Xyda2*pI1Hr6q{3Ag&x4&)d?yrA4n*E0TzIU>CggrPs z+CMxxI6U4zJl;F}gFy}sf9)Ke?jB#_vL**7=X*b|j!%9apZxyMrpd_}PKDrVCcn?F za6yx!i$6^hoC-NT{}VJhzrYnta2=EXOqmD^N&ShK2+9clAt5;ZA&YC2h~s`(vA;_t zV)7E=e=vx|pG?Ug41(*G;Ho8(;!3z=3C@Fvi7QFs!X@I$lHw{j8}fI%MESo;5KRq3 zO${R*ZDT#%`#20@YGRFJAP;RE9@;oQwE0JZc)Gj!dV2VJdir~N2L=T`j*N&)P07f} z_@h7a^NL=+EX4tk*VS*|y!orH_WfUfH8eD|H8+326;Haldj3d|`IY76wbj)>5(LLU zHaB*^e>?b7KlwKUIXU_D@AS#p$%FVm%dn~vp`? z%hYf2^4PEat@ELIZ?QGtdvF4`FMZut!$9jVHN&un9l+N6Fbh-Yozw@;0ZPm9{srG> zeAl@$oh2WA=;grTwOm;Vt*b<;0R0LzLpS>JwLT~y8($k}Q=*b)R<4iErcr70TKFAi zd1`*TQ9$U_J4}?Q2dny`E(lw*7SAsn{5pGAs%l7rOO&yC{5SLkWD_JRM{v z>n8fbfO&ujm@%SSYMzM5bu;#HX;nenm&F@H^)_L7n^b#+TpRavZo3(#TQfY+$%d0S zvOIe*h^^;*S+R+Bu1OE3CK3`y!D7m&yf{>O8YbH+9h!Lk*eT!t+WpahR_F6ldTu7v z1E3~CqJ5@z(rVQ3r(~*lG;&9o%Ej%d5~F5AX`=%Y$YAA+MG5xzl&asO`xzD@e4|rG z`(LAK2K&F+iY#)Fn%h*%y%9XgIdIVsG4Zg_&1A8Ou^}@F zov)@)DotCz+==O2mB{8%e%@DN1tfqbv4Ez5!TDQTKME-(`Q3PwRI>B==son6VB+Z% zSQA7|y=fRyVw^J~T68v3*HC6zu1q!D@?~c-iqP(LpC}G`E)9iPQxQ`3ONq89d8vNs z7b*#GaATU=@#M2KW^fSZxOL4P4$j;}$jFb^yT@`t*nW+82(UVyp?Degt zE0M7)MffLiRt6Pu9vF`eMW6JzP`{Al08kSMeHe8HZ>4ht9uuh=Ez!l(iNuh45pjCn zgW=y!FRA1-T_bD4k7dG8#27DaQ(2IxD>n9UnVboPFb5c(NWDif!^)uP6O7B)K)aS- zjau>e(oy{P9*Y>I@{xWX`!fI{Nm5h{LQF>J5DhGVOxmn;12_cum%Dt1s`y zD%JVD->K)T5Ki*o<6c9jfwW+TAn(ayo<_U`F-=>gdI}ALVSqPfZzlO9Qr%={jnOx^ zm(t3p{E_K5>-X$tTxx8k9%pOR=BBZP8P%1~JHCNk`d{6BFrw|+l!Pbzon@@v2wIjV zfbUfg2aDBHu*z_&N!MZs0+2wZB~?1L{8D_wIaU~iQ+H#MgUC(jo_)`Yy!VF#QcDxc z{3{xCXRL^-==#`*rII+#%WSo|dezFOA_duz4ivbPwmCue8r>%eRN(hmkfZ-$4F6$_ zh+=#~%P&~$=>)qxb99@avq;nxTD^0Wr&K~WP)8X9B3j6;2$55@iKSL&xhnz?@}88| zn~Q>@jrgtFrleaVRXK!7zRcGXMff$Eh04!m8g6Qt}YGd^###)16{GjWLHodSm(N z7@&V#NV+o7sOzBJ%c;bD-@d;lP7E<}M;%Q?ZxY4VvdD6@)WKLaynG?1!3*?bRmoa5 zUEb0`)q&_j5t!Dk|-4*vcQ&os+KBjljQw9Cf)4Sb3j0NzKI|D1Kn+U zLg)1RNYedPbHLa4QNU%~(zL+G9$L1m6La+LDalOQhefcgO+0D21)092T_h6s&*gr@+`P(G|go^qhd!QZH-l*!a3?hv>m#W2P7W zv$q8>#swEsI&SpX_Y@y3Egje_dj=!VHBk7*(ahC)uj4cp6C3b@Too&MhTIxh9W; z;-@lu_D{UWkEgi=E7prAZ1vh^r_pX8g3^b&r}^FYA<%S}3(`?9o~TalZ(@ zxlR7WDC>8Np>#ZIUyBDElfy2 zSLf)|E_G98ow|MC4F1Xar}J45k<=MmBJvoUp9H_LKxH2iXw^t@UM0EJe)NH@wBuL4 zaDA&&Y5gciDe+enBEXlCs>saC`P3jb&<|#(cDPA!Ph2DLffFQ)yb6zuPm+4Z_tCq0 zV8p3mU%%&#s@?(y=ph0<%(lU1lIjW>GK8?qypzmq^t=$$dIKlu6q0#)sy@_or)V1* z78kDUsKFGYwmSV-N5rt68}hzKRK7yJE$&(3x{RW0^owAxhwmJuZLK?|IhDo2&3K+# z&&51+g#lv&rt7KFekv}sJjK1bgdN#w?QkqNKS?_dkwU4zHiYILlRn>IdLfQGo5T0_ zsh&Ub`K2Vx;TM4?!hqT(*zEyRpOE%*>>Q_>zwvpR-!J2kE107QLNz#tm*7DJg4W6E z{qv+?6_R?#m1ud6c;kio1P@lhRJt&Ti%K8|s7Tz3#4w5y&$#H2^kIfHm6_}#XQ^JE zq%`(uv0I+Z!C<p2e(5rA%r( zZ4iT^eeYv^V_nT{;ivaev!cNj>eF0yp^ikyoFtP-l@&v>k~31dU*->$o}a?iPUDiZ zS-m<5kP@sQF!f`$)n|ftxJX*>vPbzriM$1hUl7?!pR0M_Yl_RA zpGN^L1$xJ0K;vFq4Xhi-c39Y|v%fySaFnVhv~eq}JlhkH0ht(LSO#w;Sv6_+_pv zA(g$*_VUam`-%$SEOp-liz6%2vfwQ3qS%OI@n<=lFt_^*Y}x8%YT@CbEYDo^!Fk?w zNGNg&U>9dODgJ`x2%6tON}k~@>6rHyp`fi2H2Dt6ZLq025|phhh>Qm=)q}WjM{wak z;l#yyVED21F{Izpsa73yQ6MZ#qe5J~6$QkHgEtK0chqB6`f{&KH6y5@(t__eiNt9rS;o+7UdU2$&K`sEsHT$B#sJavD!a}3Rg|d~y`-=T zO7(}AXaZTSqWbP>q#mijRd#+x`hjVyPZlOk}C4F!uSyjsd+=j*qTI<=!?TZ-Qdh$ z=ftNY7VebQ1@T6@_v1$>D5o3q4*_8XYt`@OOi;*MWHbr+)9Na|)$(t&vZ(!188WHx z$n6oY163OSkN_~bQhNFRgk)cufBb!G))NQx!D~V`xHr*2%%Q03&n+eE3sA*IK z?Ckd#_=IX)sHvo)!s#8vb`dhc(Nq${x781El_lg4qxwVz>4LFr*(Y>V@!7+g$!e6W zzuyV0Z!$atK0Cc{z1Z^fJ7jvNY3l^id)Q3N$7v3SX!t(4TMIprv@?@h$Aw`TVfEMFLgj`V~L=a4YF_A*mx7(vZoOi*KD4;hVM6WnZfgWG~ z@WV4l|8TzdZC|9yFWXA{3U1$OHk8n8WrXOW#g~Pe+@F{d)r0CuJDpf%myw;im|$?Z_ZGo+664O|rS`tm0A*n@WM5Q?6; z_2e*kbn(`3wuY~kl*gnOyB*oDC#Z3aZj5hnXIb~@WjBne=VMbW(^WTx6&VYpmruO+ zD<$gp2RTr97ynW(gRzXu4~+W&g@b7i&TzIThsb?P@XlJVqG!Km zVSl(VVAiG4f(Fmn32LE+C$U{gWsAqqOEzqnn19K?0aqV@m2D!xUP!Z}H~p@KgYLDo z?f@nlm>YNoPmQtruahnX4Y)=U?OZ<>0k^=C7+>=PL9N3U59{IB@L>ZZRvYXpK(GNs z1LJvq%#A-GvOEg~-x6Ks1|Uk=`q{Yd(ldWC)}a1yuMGw<_az&T8-9b+AG%cLx)cIG zM`=;RUtK!el>mg4W$Q8mvGpLb1)we(g2sh(=0^Vspfuw(eyIKbNq_tuK=HZtUjiuq zC;EeVl3jk1(`J%g&z&Rx|6YG+cm4^W{G&fKuIUbu`GBW?0w{O!MlF}8A6`%2jvzbA z9J0j)P_92O`^~s_&N$nQd0x->LebvLvw=3VzvX6wU(P=MG>&VaJiDGzAWoc*i#rfU%*!$6Ny#YXp6_cYm}GWc*s68Vw9Tgv~fiwk)qa zxQ42YjSXj4g*g(W$5cKAVrj>Q>R0I$r9>ob9o`5R4{-StgOFS=8F&>_6z6}D;{g_ zZjcb+@*#*!2~P(B!pAH+p+R?_#c#8I^8i4LytmzLB|b52wvx@R6+@;z?e4n=o9RPz zS-)iqfsT40Qg#?RTma=T;@o+Q39+?b{GpU;5r|Bohip9H0{0<8sPv(DhblV~gkf*x zj9?G>v|3Gye?;qZiE`j~LbZHo$gmfXL)flYy%{qiVNwXs1Whw@h?5YYTS9~nEccSe zfV*{J1NBjHJb0t~5UTobQ-((dMc?T@&#W1O&UoZ8PkYT$AicaGT&_e9Q_)?&Z32U` z)ps*I-U2B=Jh5GU8cm(}so)2<7X5|sl2U%`6t8ylixK+nrxypIZNY@-qdf&;QBh(- zR)8^TH@hBCKuNZ*KgJ|TOoKY0W(93T5O&pqvTXx_=wIdD-|n~sy33Z%h~gO^y1uyw z^GVa)oi|x^{>Xa?c!NGNt{UAh2-p#3v$)Icm*({pM2_?ho&rNf< z2`|D;2!m2tz#oy|g?cJ`EIF}QEE4|1G5K`#U^-22tIY&|?8=q;=M{?~UOa|8faF;z zg~1l~P-q+elMH>G1X$Qalf?nVawih`Vy-1uAKB{>Un3^xjBcbv$@A*igIR9Qzuw%3 z!XgxSP`1MuqDbKQ>h}lZ(G~Jfc%Xq*p8*~EJ7f^f;dkpANH(<;PK(J6txVqgZyj+x z5uIFNr}1)&FI#$r(n0$h^Ix_Nij`u>?noi3hsw0lew!>z?V3~@Rp?h(PJg>!YtiKW z(k=7*gL=Dxlsi^4KP(#Err%b4%i6PQ_1he;u$tYs=?L>_pI)3jc!Y`|B?=Qe9W42vSyuY{f@tZ-fREjf^}vuF#{>80!S@{H*-c;gBE6;%|)gz!6ytLT=2Mc zvRAo=xQPecKy2XG+z!OC*WU$-otp|EMaaT--Vx&Zf>@{*q=}l9tu72%rBKn~oa&v2 z@=JBEm9DDtoh0?|#`iRD8F-y|0u0$?%kU!w$yR|!cXixio0))88rns&rMk^b!k?A2 zS)_NRzHxf)slxSHI&=@P-qln0j6hY>&gAfEZU_yKV2w@f zBak5-P-YREp-?*AD&#uW4o*i`)%vC>&hH4Ai7o6nrs>sXZLoTcz#aqbMs!-J9KXT7 z6}rqR0odJ3%Ug@2o8$n6NCtB)S_v{cdjs#PI{FfiD(U<0C~KQv$I7m6ZztzNrMerHxn=BdGPmpvh8jI_!f2$gK>`6er{;tyjSJ(EtwiPWDa z=R&3I0TX~Qtg{CQ+biiQP|FRQdM{rlT7N=tf_ULV2a_Z{isj@51DJlhY6&6 zwfP|ncRK2p*~9=>^R<#I`Ri0NOLC=@K18dmJ|fIHWx;Tw3T;KRA0IgSVxZ?rz3j)8 zSjnST9YXMQu1Peqw}l%|40d#Y8nokB7MvwXt9#6D!}@ufrif(nGgzm}wB$Se+C9}A z$mL~`B(-Zqz{?$61`{o3eXs0@MH;$O=t*678^ntSX*HRMWY*b!2AFfx2}Aef=B}pA z+5uSRN3=F_;iL=vaV&T3W5=skaiLv)#Gkn~nClhE(&Z%eQrB0Bm*mo*()J(F=8D8;mO!+-c2y!$RN*Q1sZ89>cI6#1Pu~#YELE^f{9qzm)IuvSE16E0nxTE2k6Ca5SMrPX-&_~$`%4U+@wTs zY=zU;t1vxjH9PW&DdejYMfHl^@8+7{QaU>wb)Gn(-?ob^Zu0@%4$BI5*Orf!cU(3cp`(r(hY0NaCKiSS795?h$ z%jw1MX&}WC2HUu&i92ol!zn$8kw+K3RpailZu>dJYTUpj0~4>Eefle4At0T~`lAEg zT#j_4nSAOA&?iTha&0jXZ@R;mT!1HsH&R zRI>Bm;ev$ib;f+6^FdPPwm9PDy2o4|`=-I;`nFG+-Po?0>G%ZtfJkLW1d~F-t(glO zLM42FXjz9}Y;gU6C$x)J=1xXL@V&!q*T*`~yfY#VivI{DKhoHO8d@eu3a->OfBiLCg7Z=it_oD^FK#*7@1I;8)Kgy*ynk7Z&Ew>X5FVkvrH42x|e)enML~W~ex|-0zr_a{=e{EAUY=;ity!OjXu=>U;7&fY%{-+`rg%WTH z8@Imp&mXqhlCA0JdDnQr^u=mhbvx`s=-jzmrM7%3*TW zyZ34yetH%a)R=Pdorn2PXX|xPQ-bxLgJAgh>(cy|8tb1PF5!z`OMkbX?)(g>3IF;t zDx`DR`d9Bz_{!CFNDs;K_lI~=9-`>b0YRHTDIrQ@m2m+>+BOF{H4&TrKSRIv^zY|w zM{M83pN~0k9Fz%0e!m_4w=Jc6r`9F%hc*6hRYMfAC?WEvS9JJNN+(g=Z_=Lucszln z*q#AaB6VQu5#I!D&&R*0{O%u**wMEAJA0??kb6CR*Twc?@m*IM+&|)1!js?Yg7~xd z)Mp0f_`ifU$;CWA>g)ykvQW~?FF&KBFSl*+7u(VQOb7-*;Xt;YT3$GKp!*Ej0~Ui5 zd%__RJw$N?prJObuly)6;cpHJ{s!6T-@tERzcpuumYA>gSY7@;8)(O2sy zC(@`P8kmZDt0BImA;Fd+wx=NlMM}pdOR^zl)sS)@lVl8#3Z6*3qCt{;1X8)UUojP_ z(uq`q5}XB6eGjRY$&AKfV3zIWrfnZ6xMV^g3GWV*JiCo6lXX}p%Ic_ z2iM;lAnHTO#gRw@;xC0{?x<#cO}L3Dc@BF-twa*EPDhVSQq9Mx>@(NWXaWGl zPqN8R{Ye#J!udUe+Sv)8jFtVE60G=WOiX0WOaO|cMfrdiE^0|@I{BV+S*E(ce1MRf zD_D77hj!MJNQ%L@Mf+pOnw-gC>u%V4Tm6vu$SZL5aD>ayU+b_1nkjgfJ1z40ZLe)^B>= zWEjNy$WQ4JQkt^JkJ+wD%*Qm0p(Eorgc4-(8ED8`i9>Np8=Pk`aoOCW(TNNs7rG>& zLY`B(^sAgKZx{+Ykzb8OlB=>Z1{nS4Iay*x0Xj6-G&-H0#fmK2ljjLa+|Lv<$EXwY ztk#&yI)o+9Azuj%koD2YdI*FR@fMh#!46s?)ym<-~SMo)os4+_M^GBK`+ck(-QK(5$H6UOv!ggTd|22`hS zX+jmAU^L1zNydg40kqV!c7?S}is;I~NGM7`!OC%li3HsE-fcf;&IAV$Vat$XB&91+ zVJ0p4#vam?_dW)fU4h#~Wp5Bs-(_n6`O4P9W6SPNEC1E0sA~}j&GC|YIuu649M+<} zTcI+=IbII-QjYPctyI+;$J-=>-ruE}IG;%>z5`Y+0yZFh*@qsT3qPhdYV{nSA)UZqtg%Kkf2yA2#sBG*jKhUKPsxyj#NVwyagsMRR z3BQUPCSGx3VULdeAPvHG;bO(0M<22$GUUW1y~-egCK#^wv@%T)y>=#~s|Y`75&u8~VUe zS&yRq@=IuSXgjpq9SiFI>fkNp~DH^=f0QImJZP2s_un~E{+&u6}dSe zJDm54`2eqU6?<|xuNGvu3~jn_+UAw-oT}V>>24A8$&&#V{qtFPETdDu+)_&tbTV~~ zH;&lqh!p3MLO+sG3kHvV^$g*w}hUg+nWDOpqoC4baIHy^`jfMwdXWzE!;852(v z@ng;S>7SBkIvDKE8;Q4An@2737iJuPtUB1cKwisu|K&;Iuf_e(b@UUh3IIT-uOEIs z4~gV;>^Epg+@rBdfTNw7gOqBdX8~e&i zWMB&R$EGlUfXJAH*m+FT0}X^|?M1F$M3Qe?cY!vMpi(sD^6KXiG|3hkMrB9VO+n3I zN2k6vCbUNLYvqQs9ewZ`HExX|YK@rzX)_LIoUmhGw&R#w6YF2&pt9%Yu;-zYXEr3~ zlCbBuu@?}qPsx8r`u!DYpfXOXOe^1BG36t znysP~zR3mmXnU(EmVQfaAc5z>b=w?^QXCDdm2TI5yOY;$z|eM^!)g7{(LdbG#Jl@Y zN72mN$+thwSbfu;HG#TZ!4EBLK?uZQ-`L&D@l3@2=xWo`_-3=EU48u zn{kn!m71IE8n!Bh+Sb;c43z0?Wat|I;_Q;akNGAaW&!R`yW0G6wbP$tD&oxQ-q2%U z@`aQ5z=qitbkom?!y`dA(ISfI0RO1Z@b(&p1a$SVs4sa(V?+4(rphE)TaFMpPz7ak&UI0 zRT+phUb%_P6f*+@z7I3B$u^a#O0kVk?jn|V?GMJSvO)8)5Jh6h%`yO9aEkLc@J3g! z+X6S(XMJaQxd08r+L%A;6!;!zhP7EMcs)ty1R!}ekJaH}GpMM*%zv`$frQ)q1S5>a zY6TR9w#g@5K3CJow}WR|z|>zM4cR$rWfjL0jBOk{+*v*c>I&{KkP84epY?MdvgP9p zxg(q)Fb5HCf-I$i`~AKn{cn^26V|raoNveWf%5UeFI@J46Bcb;!U}w3HG$1VZm7b& z^eW#ZUzbcD(U!(P*T3C&VnB+%S^{n5>C$4EzrU{2mim2H^x4yszY3&3%__WbdheV4WIaO9lr-9}-Gd(kcOa)HESwlis6a(%nK-j?~MIqR& zBf~Et4|77IGeS;qZPo|D$JH(eQKuMNMU3rPG-qgnODH}*<1CacRMj0{a(3EAN|59Hk_kqS%N4pBEdPhAOpEO`F#%eVa3ZAQ-Ld4jjFHDRT{!=B*7 z%Dy=Mw(KgTepu-i9Gq()*T z=0FnW(c-Srr_s@88PVrYqW`|YAH9yg{18nDkzD_d#=nThNFBPy$5Inh^BC0na`)q? zI5kp*{CEbF86@o|YW;YJ(>ZR%LWTYLMzaO(R2bA9e8VL8^cgkt9Fo5;RPb4!s0$GM zP^umcq7(@fx?65i^%R8ksPVjpjiJ&TL*9QRvv_@cT*{Mv_70{3h^we}Th?=aH(XzwVWA#@TcU8c127D_*!c8!{c{1mH$_ zC?lC({EYOM4p6VYz4~z&A7~9)rZF#zA>nc53MEb=;fe@w+!$n&Ebm=5uqdN>5-E3E zA%~eKLUx#K`lDc4wCTV{ZYG}O5v_1x8zwqdN|nSM4B2{qWxDFY$Xu-GlzHXt6~{zS zxMzDJj@c(aYmJqs^CMr5?Z}ZGgTqAm6VmC>=BgB1d|b>BtEc0RCR2dp8F!M80kc33 zr*qhoOav^0N zy}0|HQTgv9U2%284;>Hew91?vW$T}4EVtJ*yy#y=nmiQvfkvzptS$;m@6 z^9s+_n0k}TZnvBk*bRr-=P5ZeaSDtlv~Ah3+BO9=0daME;g4nx4T=QOM4!$I5DE=YLvOe3)FtGvqRjaslQuWaD z)4+|DD#r+ogme3Xfx<*SA3NFx&e?a_%5uE{bE?)YXnEz0?%N^LRpan4aRDD3a;)3t z*{`4{=9`AYZHrO?%{!6aPng;kY^=CX=ED!ahOE3&a6J4P{YiucOC}50&{lmmt7_LF?RBDvfpqXQ13kafV}f1quA4cBjU?q;??cOfESUc^FBVO zrwiEMUFVxmBxeuendrMNe)r$`bVRHe# zJ}I0`)hDQjYd>rKez4LKH+6WT3j1HFL=Cozc`Ka(ULNVBCUQ~$_c;-O^dE;o;1_@$ zFk!Y0;j^Kkp`)XN;4s$K*7o-H2pVIbP&zm~B$$kolav25(2*1s^RBgd%pIW{OPZ&zsJ{qPw?l28D0Mq>-a}$ z9O18y@mHsWY6qdG@Q>TT{~&Zdf-{SbPR}l{uL(Yb(CE0h#vfnf|6b$I@c0uvp5QhJ z&P-aCpfOYxln4j|NkACtx3m!&dOCXd42>-A-m@|_vo`tXu(7iDc69Re3yTkr#70Kp z45HUCv5B{1HuR%+^kQ}lFuS@jKlCvB1c70OT`KS?Qb7(l=$K)&Grb{DUe8 zg$;tJ_{UPn-;!4#C<=n8xJ9rO1XrP`cvDFUp{%5#sHCB$ic(fas3;@VZ=%$1YQk^n z5KsjQX`rQf2Z=J&(z>muXQZoRq({h@=o#zl-@R>MV(<^JFuQAPWokl5ZP;5{+FDxL zTUxmgqy-x7;$ZLY?(Rzf7XJRBVWF{+5ed=J@t9~_Vq!{q`lHOu$C;UVxw-j-+Q!qT zwav{h-@fU7`?jaEv!}beZ*X9Ac4qF&mqmiKSX}(NxVW;kL|A?6>uZ~9YlH;H=H}+k z_STP`oxR=NU%R`%|6P&?zkmNB^fwL|D%I5{C8jK3!* z7k~c}j?0UG4uZoV9RJHN@bQtjzl3vrh2Q`6`=4`tbxm*>?EhaY95Uq?CUJ+cV%^s2 z_eDwpyGx_3H6Nb9vFQ=QFaPffhclnZtNKq3=B@v&aFEo+vg@}s&bPYG)>~7Ui2YB6 z{ zqn;1dgbK&|H^){VpF50~-hQiKJV$*VIPDL~{JGMDrQm!Hd)@D5+1AMvfNekAo~ley zn3P(|14!CP9g26oJ^j53yobNPgBxcMpD)nf{G4WUcDlbY?xMuO%_%k78cz1{(m~M~ z@LBt=s^N(JxXfOoDJ5otRA~hZ(-O+T5_8uS2YXvpk*NLJ>%|Z%v>NYHtM&fx&VH{zLy_k`AR zO&GM+;A{DhOJqKc7-cavRDt61cWLO~Q@I}a19YuDD=LJ=$>ZQmlS=)!^`{9rJrQlR zgOU8J)PiJrGV#{!(ibq`gp3pUfM#;yes*?wLUnen)I|Oow~m7nvkUUGtK9&ftH=RT z%3i39&*YQZp+UXr5MHD~>%IymA#A5>Us!Y4BsTHIBQEo)0=I{7S|v@fiV?}XYa60<#>CPiPE^& zdG_mxs6^MV?Vq>S`TqEcSWQ~xq|!~~Zf9ulZ8&(Z{N$zVDu{F{URvl0d$9IeZfx~5MOyjT!Z8GP zo3Zx{hN?7tRjl(7QDbww+sbl^05V&_!sQ-V)f)KB8NNJ(eK~5>U2G7F(i-r5EtCG$_oLK<9TdG+;dVcOgd!FahdGe z=USD?^-0PmymqJ8y7^byE5!RB67XRt8USWQ4~4bRVWPwuc_4Fxo2$Ml17vaL82vRl zF-0WJK zIO9<}zq2_Ph{tt~luu@yoy#>Bo+u<4|0Ug`@n=4j4j88Q3aWg*o>J(Kk$KdEDEjiyGlbk*Qt={vqkbf=r;@9% zLOB!Ie!p?5mw3Uh^o|7`uk;(O{)r^B;m=)25)1B_FL@?KE02$oU`^)G(KZx zG?cEb2$XnkMa4Bdd-)jV`oIC;4C}eWACfUR$YVIw&VRRxh5Xg$Fw+gMEiN^KOmzpK z?riOgrWoLhy!5u`nCE*&nsSSN7qHlO;LZ>?}h1%x%`rLudZ--4gwI=~qUG{2QQzH&=v9g~K58 zv8b97wM=IGBX?C|fN+aQz$o$P;p>Y_7n*mvP>}ACc$ITj9xXWG44=3p_G`&rx8I=k z=>hSmB>RLqYVIWwx5%VJ*`dd?V^4C6CF+yhB&}R`)o=MV`rFc(MRaHDA4sJWQijUo zikWD}+By5vo>x4Oc<$J3U6jNms_P>Dtm(aqFZ`l4ZMW~og1S*dISC@og%dXVNuvbb z-fS=avB|!0Uv*iZ*ypg=^wv0tZedlQo&8@l9LF z9fNg07It52D=)pJqHAMWyVg!z;%l+{P zit|ld*ViJE{P%9v@GP4?Kp9abe2GbPfhC_lc=ZT6W@Mbn7{;xsEhO(NA4il95Q~kq zk|KI|JHh13HqnE9+lO38(TX6A!F$R?;oPUP%r)p&Fw$L!KS>OwC&Yxb7i%jgyTlVp z_1Gq7%N2m7#0ZAYGP>UjjQGBFHA%8ahr2p4D1jVd{=zqeQ-FFFrW{Ke z|FVgK$Rd--O>Be95dZpK4KL>BIs&4b`TH>O9tqKquM_o1G*&Uj`7}1E#~;*eLi9Pw z0Fo>~##}*aS#>5a5T9J9-L;=014fCS)gmX^U-6!@%@OkS>BYxsDLl`2Q!mQg%USj-I0k+6lcJIdNbiL6H-4f zuUUJs1MV+v{*QG0iB>V{+wt)BtiaIhVqs=sGUItHvB2?N$@A>?c$msI%C4!<&KGxc z#zJ*9X=DgRmuOB?P5#z6SDV>^F`rbA%coF>;xzs)Es$in7TTyQnA8Sdc6#KtQ>0ER zwA4rR7Uk{VuF%;YLK2J#mvWz#qI7^$UgF#HjKW}wr)aP3EV%(Hza62|ASJ0SXCjjL zC#yudj{eHZNy+E8;w<8EWOjeHX+381N%P%uYO{Q6@`sem+{r@xbh3Nq3uxW>lTPo# z;IS|xr>7Q$jBv2n2t;pNYZqtTU+HG~G%2Vx?MfzTqpoOLDfP>!IM9glC%u|V7|oYV z(~Y`^O0qGN!suo)t_N_VxUfi7Uvi}zZm$89^tckg8RH-=D#FlTiu>+?@vx_gWhE{4 z&wNAbK2kXJaA2Gy`Q3BI;gkcyuph$)7F<%__!4)T+~4jHgXAIaq@w(1o+Rf#c`Qpg z*Tgk7bca%~Hb9RuG~Qcnol=e$>Wr77jCHDd#09l(wdV)X!BoogA2Jy+gn?GGS(9Vg z$71b`99!Wj?s~G~Gn9+EWG3a_4*ZIdnn7J=CYMRJj4$n?<-z0(#1N86RFO|aDtyhr8SEp!`Qv{Q# z|76ycx%afcBDy@jM!KoGo0iDV*e&egz4^Y(17`O@bk4?DCWBncbYeqTP#N68;)qsI zMbNBz!25GxUBTa`b#C4)7vS^bI@X7U2U~%p^l7hFW!)jqQedf+@bpg%rq#JYt>o%L z7Zq(PK|Y}DkvYi)5t=$T5HY@-WZpzp#If;nyU`1{S@~y|71sn?qL*shS$lorjYci- zv1eqcj1?Ai*V%122KPMKK7}lFWq_#qFSH@KWS_~Myd!7q;E8k@$wi@g$Z-CCkh4b) zk(y9}_^D`bA^`Q!C~dt7_V#sna~*6dTjG0N^>+}shRSfCB2hGCB)R?FRIwqN;sqDQ zg(Cnu)V|^jP1Scf>TiD!LnewsCuC9jd=yCs6o+&;awVEQOh*!hZ0cL~MWc@DB3M~Y z#}f}|;2V!=bFODn6hF>MW><5wE)Y!d643M8+FQIYDD264wfe)M-X>Jep%ncoB5Q=s zR}ZS+G892rAgDL5@J$p$tF_TB&@PzJ+G3PTQO6S*z@x>-{e8$!tQzxu?c?ruwnZtr znr@=^J2r$N>_?sQ^prq0imtM5cM;Fi@z+o*Mk6gMhD<1?0choH%plgDmC(#GP5GsX z^5-0_?|#isU=`0>j!$Kj56uD5g>R&NYu^A$(E!MDN(q~goao-e>Cpa@a!U5b=R~i= zIF|DKc_M^7`{!V9sMml+E>vYR{kSbk!=)Z$1ExHh&N1I!OEXI*wlL|@8ypx5veyvL z7}t`vq8ODyg2T9F#|&=bk7n&-5h4gXd+WbK%z_vPn$s2HZQIsAbzSUo2U$V?t~trccHO?gX;>|q_lj~=r%RifAQ zks1>tjZ0(5=}t6^L=hHyyI%@C4I+VSPxUz2!?kD1dMy!(N3nT862|86&ZlzE@w;Oa zOA{~lU_51@DK-#grSU`08{ejc?H+dd*imirLUmUudVQfCKPCtj4)(jE4H2Oa6DNON zPSTZ6(!816xB750QE(9P;cw>$Xz_>3%MXCG55SvKM9+q|Eh4LeN01)*e?C!FicoJ8QuJ3 z{BMQBtmKn<*C&F*u)6wW!~Pk4^RvD6=YJ|3CI2`KLWRSd;4s*~5Gou5hY?Jua1b0u z*FO~wg2M>*l2?3N$zwf-D`6q;=?m-aOCUIm_skD7-+220NcZRRBIk>^=b0aW%>O!H z`g5?~7)B)Z;feJ^^?SzZWXFogg~qQ7wd@P7-xgYKF8XCHcmva3mMp%ZWN7PJczd{Kw{^T z>IG8>7>785Nz3Kc6KN_V<Op`YjnLiKt)hhfmcGNN`c z)hHL7u>*>qX&)*h;%!v1n1W9DLgBeEPI$Et0AkAqrS^u=OqJpfm*f56ueCnBs4=H& z6){0A9DZFVMN-Z^$R@qJ(k{NBgNDQ$L5E?tff$izncS+AoHA_`VLbrKC@M`jgma4G zaoG5n(KkcPhU81?j158hGU5q%^_A45$v5a-Z?I^YkNf%B`YPWz*Eme78)!tt9j9K> zLTxkwBJzdGsu0mfd1Ty^a*%=yPg#O7Z@Xh$O{2iyq|{IU6p`SY)Rw0BKftK=M%g7e zzSA5~-i*szvf^!ewnR1!>|B-ZfOWp(0`y`wV@WCbjY(+fC{dH3{I^uEdx$4}iHw5A z8JXeH-P>MR5)L;eI(UWNDl-7gVT zq0~Rzs1q9G~(q!K3{Y?26M)@tp^#gk33R67k3v~p%(Z}o!a{(9ofAC0r z|I5KKdL%jPiy|{-FQEEbWJ6R#vI?Pw`T-4VY4JeaqC zUPewNpdPH|;;g_tm^B>~kgfX-2iK}W8Burl9(dpNC4K{;Y{B%z!JR$!=TtoNjRstift$-`~iKL+=9Lb!g$Hy zDb`0nK~j>3eHxm*I1;NnV4^Z2l6~b3n{WEdhATF|T}3GgQ_`82y4};31ci2M#HqU zayGet|KRg2HwlDCF+%LB;?QNp3pQZu9IXvJm@0pUQUQ#hnWRd440-?VrkTN-VlMF< zJedSV_zkPfr`I)8 zndQB|%}xK`4nyF`*Qlo#NcoJzPJ`Hu263vA>OdMowhxwjRHD zDr`|JJ#ubgF}H6wko3O}gZ~b0X=YU)D=qA^wKV^~4&%t}BbzwgfPqnf`&{#X9fsFZ zN07eF&8Fj?FK^?i1#SLy7>^`x%`Nu&kn|SZsriq?cqJG@W&JmJe{C>B(02JU4ENQp z!ewRoD*Wuv=3#J0)OFWhG|2JRzBCG}wKq@pkP zHK4M&K7BiKNBc+^lHN~|>K*GJ6#YFDzrj8|$3L1(4!M3>3075qwAcbZ(jZwwj{azK zVV9cJ0kfiTwg$KeoTbl7sg@biV@w$fcbwr#WfPO>NqJ^gW~>({l-NI7-i}GA0ark| zba^u_(M1hZ2)oo$a~0!Bso#4$;F==?5g`Tk{2>;pc)24Zl;AEtiys{)jT;wi77nZ+ z%g^F9uxi^C0@*Aj`g1!JEAfu&;*V;K411@!Rcs9$e-eK#n}_5}p4I~{kE`PeT zm1tsg-)5)>oCz+Z=}AI_-36tB@}##2uQIKI^k}&9PYYa%GwGp%FGImau3pw4X!(dR zs6-mW&Xn%@C5E9;A&n?hx;VZ4PA zX~JfO_OIruSxB3N^0vfMd#j6V&M14xq&=13DMrJDIOyk?^m!x*4dUj?SMVL|XLd@q z#-=#ML4J&t6Y2CncHo=h*_NK;(916-=?QX?5JvO3Ac#DievIOa|jnWJBlt`dJL z$T|Xl1~b`P3NFJ|3vA2CDosr|G-ET$lk>I6WVuKoQ2xnKz>Y0FVUt)KG@=1T_mu^O zJCA%>CzT(HejMVQJMUCzWfLj_wWoqruR3&|@vq4HG`}GQhKhh1YHvtS_M`yWHllQ; z`rEi*M6w?#g?-Gm0)3ms_1DO~=6pdTsWtdGg+?!^1mVUuY8vVf(`U(M)slBK!d#K@ zGdY`U45`3VLzK&iflBkxt^^r>cn{iUzpuHErdx__gLR0sKR+Rz#;(GGQOa(`lIYu^mW2iF7nrxd466O#O^jN*q9A zX${*QlznGt4Es?nTo%sD+=g73&F2DG0yQYs7ByK{6G#l}Vwih;nJG;e6RF_)aT6l& zw~h%Z_OFbXom+^R%j}?4N?fKiXYtITz*`cVzul4@ux%}I0P!Y~*ies0d;Vw{p6B~w zhW4y%H6hrJ?~=_Ky^`q*PK!~_w{+$ zcCdupLNWzAl$ZBZGV)elSQo2f3)WhAi1e5XB%~o;jAhzpY5`<8wd;%Qs=;LzzNbBb zqFnb}*EsggJ~$bG@lSf*=*e-N+?jATLjw6pm148v7J8>G_DBKGj)n(7T=Eber6Hy^ z=8hZ|UM3JzKR7>6uNm{6Lca`0YdnObRx0<9nCffKoqokCfe7w;G$tLz4Mj&Br)da_ z3;tM*lT@lBrZpcVEvJEc|3R>HF%8M{ld{?7GTOG5Ktj{jVrKuQx=$=<%Z&6=8oDFw zzBJ%8MR(er1G(>8NwJE(g(>m`_mf%gI0lLlo;bAADSgPc8o%C6rO`@ZHL4s^9E2lE z&B;OT0kn+mYoK=;4Io{QC(1o&2r+&f?DwO>*(+j$*srbiArB+z!@V@vK|Tbt`^O}7 z&!M(>!z32pF@_cbd<)No=^=Gg zBuXZlPK;Ij%pX?E`ZSbaZszrOTxeQJW>)F!g8IGr+D-1asil|0nMI?`$SbEoDz9sw z>N{CuD|jhg6mpUUW6_v@wSxTKRX&om1?|G#Hy#XQmh#V=84aoj zj0@^zi6(=H*sR^rB;h)bn?D2((PsPcS$?7MORkD1IE;+HAE&Dc4&!H;o9#ai<0P`B z9X- z{?}np?PLGzFvO$$QeCVzSpRQ_aXZRCmo8%dJ5O+yV=PtOz&{Qn?7df1K=Jnf=`ePX zgl_r&I*f<2CD(zq+W)V^a4Fe7sLgsKl*#a#>c8tJTWn5RYyRUfw!42mAHMi<6HguXmEbV?1*86?MPE+fV@?}| zgDbP}|8W>KQO7CIBf8#k?Df2kI_<(o?kCt@j@own6mnMosjZy*tDC=Irrp0j?H2vW6gZv%x; z+7ob{RFrNpO0N;6--$AqK;2$K8SbI(T%wGins*}x?uu!aShnyVQ6>2*n0ad6kI*zv z)wC$qe9)+A*{NwYp=rIOX|tzkd#Qg0ZF%WNE01iWyTs^j%b&n+JHu+$B;B2k%_0_IZ` z?&*58js}|mh>Tjpn4!K$x>czPWscg)i5)&o^;M~Qc9vshRs$kAdX0RqJY{(s=5&4U z4S1tpM&--kLh1CwJDM(E%_1;dfvFO2W89h=QeZJna$}I$w=X9iHKG)}cgUE+1;x+D zx=<+jz}`3vALNkrRaN4B|6&9)roo zA(eg>&Up?p;`!v(4_tl{LpurrK~Ji~nN}Rj?U=aP>v3ohHlGPVHdo-lRm%XL2*ftT z3Ki-sB)F6{!!qmbJGgHima0tGzu+c$0g8*2{*XJJO09&O@S8-2N;i>D%C_E4Absuu zNLh3H5GI^Qy$>R-eHp}ji?DYe)r=PS=-?b+g${17 z;?-VFv$Sg0ixaZ+(o8s?_ELu=@ROM4mUG4xQXIXLp`RawH~R&;C1$$-^0JOKmkj%U zUh4baD8dX+LknXGliM_^n3QL29p9{mZ+L?me)c_7y5GS%5t7YG6GOopvZirzJSvfP8A6ch~_e z_GXKHpFWNt<8W{74VyKuH(Swx=nLNo5Gu85nup(geIf>!xy1T=eKvgvkZ}7<-cDQJ zCHt)9iS)jRlX6^363#m-&qEWCQO}Pt<+1AmdyAOIlNt>mXeHt1@A|S|88=Y>NbnZ^ z&_+vcunCTTAQFGxAiOXGH!?JopDj`Ql*Sx4u(XINRtWg?cyf;{-og|f^g)DWk->wL zHb=x%9AI|_(R}a}mS{MZjFI|@VK}}w>?ZEw_6q+~CWkg3V6&5yTgMX``r)8Xhx+Ed z6z1HoH%N9aZ_nfw&|Bv1)UrFqfUg%m&v;FX42n+CfEkDx#ye&2-#?CQel-A`#$C;WD#*`7J>}xlJ&jO=<&u>)xwZO?GdE>|7d{e3--q zKhs%XK{_o4xKmb95ztPa+wpa`6W|3|DlvF@#2sD%pzi@_&C}td4wrB8?R(8750n)$ zs`Pve>||}a%`P_@Q|*)`(iDgk)ys!(Mt#!ocGT9QQIB%eEp@z3bkys1G>D?spL8_* z<@g8vI<5$Om&3_eV$(?7$;8mf)W*q7VY51Lvk2p4QR?*IxszqLlhve?^|F)AFDKh{ zCv>&Fv&SY{!r9^4$x&d-(Z<=?+u0?`*;UJVXbyW{-Px(z*<*6cb=lebm$T2cvoFJz ziKm7F-{5f5g=*q9=nz`i~&+$Do z*wz0zSx%{ImW|t_sM}+k&UB8QE!TnksP9vqZi8625(Tx7j=g;oh}d)$t{>m4-@Yuz zso-RGE4SRr!wq#WWvg*2QjU&~o_Ba~Rd~!%KfK%-ieg zj^2*Gbk73hk4{5Rn5PGSd57w5Y_rH-A-2>m(nApLIj;4lzSQMiUI%U8V`#)HCtqPl z?wK}P9^fJt*&LQ!FOx^u}8Bt)FEEBz}POL1K?P!~)0|0b* z9CPu!W9@n;UzFo z)X+MBq@aLw35YaEcb9;ml(a}lgL8)4d*6HS=XuVH^X9BIYu3D&m;W{K|6QN!3l%9L zqAgyWWZ>$G;vGF0;&HLZ2|p*npr3zx>q z&O>=o_@CWg?;U!l#m)A88;XT9Q5ZM_fP8FRMvPNy=!>UR`HPN z$nTge()`s+eyt+_Yscp}5(p!9p36~qCZ)^cRdU6j;@lKi7XDZ~pFFt;9l6wZ-PqoE zZ^L>^^KN_L&`&HOG2d{NyfmI4;aC<6^SZEZqZxOLio4-w;-}W}Q0>n!FcEr76L>kC z!*`psNQWN`J@Q#OL(6#e>+pa)A+gC|`BxwT_dIQpqQIdOosTiZ$8F1yt^>=tQNI0! z&)SQoQ8Jk6d}eek9Q!$zV6K6kbiR{FN!^<_wh(k~Di=2;Y$Rd_*JIov>s_I6Z@4{y zu^8^#1n&HWE=oDG2)k7;1*HhfVh?_iUX}A0)#pr$4AEY^3@lyw?(<`egvL*z{J7#T zuF@QB#{IA( zr+HO%ejmd=@JstIcY9#Kr>i(K+=|C6-p*H03fR5raPOQz*O;KOM-gCYC3ka|`f>R@ zv;CM*47Mki9jwhZ-=ce-w0Qj74gQ_(nhST5z3Dq|njZ5EoZB8QcI^5Yd=Ye`+5_Lj zx`_kdbVl1xd~WVF3#lc&Ra1`;_qfd)4%UAdxH#TCHy(mqjt=?iC-#MWyZ!6=x0lV! zTQ_TNjt`#vF1_BNZoQSZ4qZnE?|gImru2Ka|7J$-cHgdfyZ`sWr~N%tBE#=gk32Nw z;oh;{O%PA;vDEFb-|rOt=+lPZuu%Km=XVa{EjErE7)ZjU@1D~XiAT<0kF!NDA5F~s ze`hf?Xo13@TIZc(<`IhHd8mZwQPJq%RSdgvDJZ2sgso!*mWLh1r?XSHGmWZZOqDzO zeAOv2Z1DWCd&)UqZP}m9?etd_qlv?0@9bYy406{mt%2!Zf9##}-c>Q&d<^PVCc{(laa2BuK!N>yt_Fq|y+XaE$nKHc(u0O5>QCW;9(^W3lXZwF; zF%qvJojsW3>pZSEBF7s;f3g_Awx^1<-@D$5o$W7DV?1OFraStv)}O-b_FLlW*Y4*J zZa;rZ-W-72#c>FckAC0$$zn*s(D3Xtw3G?_>B4b28tEbk#4hL}8wQo$h7cS2)59qp z8|kBI1LvnAfuSM{vCLWi3~}sb{su8|l@|;N(7&n}WuMpFkuLR&FD0LDy-SqA6J<(L zkd0yVcPaD$rf7&=GQHAL6=hD5ekPT&=LNnZG34}JtgAV*ngSzK;DB+9GzUH)Aba4Y7OoGYzKcDAA~@pQA7>4nXli&|jv_xS2VQeG<_n?0L7%gNc$#-eVlrYD zRf&08kA|*)keY4e^0Z&>UOUxuyNL64py6{lwMicYLAr21&-1Dw!8h&&)v_RuPCTPv zXdfq^GoqVxZ_)O?>m!d|d~M}sEGh;$NA^LNu0SLf6|>hB`Y4ALM@@gWZZ>pW@;Z36 z56dU}q!1#kjYZWLI?2|+_}rtH%w~W~VLA!Vu#XaImeBE<`f|;``8i9^o-uc56F;9evLw@i=xZ^KxoR* zulXnVi<_%SPk6Q|{nlxZzIeqy65A0b+g?+9^V~G*n^~?$AD>O|5jq`en7^qlJY}+X zO}Bj2Z-k9E;&|#Ch3mDjNozviv{^~m@y2+{WB`9*RpS1xX|$=>`Erny$udUi@5|ZH zh?97rWdES?WAr}d37O-bTdLY{8kFwHb8m0Lf_2} z%BgC&OIR-EmwG{AeG7b;NW^O)eJq0A178xx2S-y%5`4d0T)^V1L%KLpgk_!X^9V{1 zseL!MXHC3Ff-Kp`hDuJrgadC773CnTX)o*`#47k35vv~Gr_@y{_Vu}amivu+KeR%e zLGM5@lu`ctN>7gw8uJh6`AY{IDUT7yflCi1*?H7m zYhM*T(`VIVQ4L&hPR(cd&Thr7=3O|2Os$tUr?V>^Ho+@TYq%){cTaGdl6=T04X4|H zm8$2<;1l%)vk2f~$#|H1WX|2wCk>_;b@BY5Ow@`-)T=w_k^CWhQ-W1&x^&E^_CwA= zaIsJe`*^_6_G{<`aNV?MJmmPp+ut{=(ij{QVI+0AKuI=PQdK^_jJP-8kdoN_(oD)% z<@scVY>K>PlZl>n?;hN;Da&z8B_-Dtu+Xy0YnM$CsCXChgs`iBn4Zd*sw)yw7*lsE zo6b3Y1r`0lt{K7cEI*q^NludEY0A}f0pG{cUy*WJ*q#7ik&k7%COgmGap;g=Y?hhc zI-cWo==f5~6MkbG(Qm<<`&jE^W{I@H4e^XjX_}hF@M$YIIf?t+w)^pY@NKyn2L5~} zUVU|>WCd!={(LV-eN940g%u?W?v58~*r(QOEiZ*|!yTa`=mrarJctl9djU zUy>V#;E<{iZf7gbFAG!k_4RGsu3qI|mXGTj+HbiHKQ7L#lBB0saPxSkydGTVXlNSC zq4#>rxxACi(>&A0;~QYRyzkl2aHIsvp@#ufpjBM$3o()^2%LW@ z8{et1`$0QFv=rAGu{cW)(<7*UoQ37uy$_AOoUYIWm76t+>BesUD(DOL;B}f4|4#7( zC<6CposKl%lN=9U^7o((CjNjnHCMh@z1JIT+M+GmReWiMLEpK&M4OBb_%gm+eTSqh zl%wPP!AAIZ*a#DV4VcFG3W!EYqd&|D1&mO-=<@Os)pof>C0>xozi3hIKeT9Taq0T> zf9oRV{qJ9q7kemFguGKkXUN+NaXM0_7Kl^4|quP`Zd8^(-JMAoz$+KoV7d;S-P&MtLJq*+1k+ zTv7q0j!?xHRQE+*@rjo9oj1}qFf%kp;TRiZQ#+JBvaxe@bN5H_qma<(|I;3+gzd|P z|ILqN!%t8GDJC{aBjMyPhm@9{`4(QVo>J0ZQuh8Iiqz57-__IipAKnme)03dm-&U2 zmDLTDN$T4`qFB=Rt?j>9(tnwxgOkhslgs}hlTe8l6i)i}FQ0_MNvG$R|ME$w#LM;N z_07Ma((TnBsPsoE{YF`(zo8O8-#-*d5=D{tQ4Z-}2ni*S_ywd;O&1Yi)Z-2ziHb_2 z9FmwQ>V*snA<4+9%gd?#;YTQY^jPB=3La@b(bs%psPoMDA8%x2Z2J#6vbAw>baZod z@pE_cL&2lK09bHv#2J^*V0hm*3#V8@u_=y z>aLTsw6uc4MyS5aA8)j}vbnZ)*Lp#zBUJ8XXM2Bd_Yei)4i8b}=oodW9{#*jM<*v| zf8f!{(b@kCJo;N5{VVr!=Z%h!j#1v|A8bVY{}mh677nLF{ts+~N2~fju#swx>VIJ) z^X|BRW20eTi+B9i)j9V6ioWPLR)R7~oK5#>|Hej)G|W5Q%*JZ5Aqh(Sy}BXOKlo;{>i#v%yH)yWk#RpB-L$QPO-CvYFS z8v5KA0uz29iSUGZAz^O?@wjy!Zb@OdIXu9aAx9F(tT42Zy9yp@Rn~;BU3L+wtZNR& zLa^|D!MV@SCZ?cHah^b22w7epjgYB9cYeYmQ9PeI13(%fmwykQpEw4?<8BWrz=6o( zSg05LP|#LO&3thlC8@4K>`3AlgJj>UNQ*V!!$CY-H^iM3K+lnHvfhnkqHt{N$u@=y zJQiqZE5&2Wmam@@sl`#_KzAeZu+L8zqbTri!^7OjS0@U5nzg(b9Z~c)m&8>maK3h% z^oE-$kths4Wbe1h(i@qo)T6rBfw|{Xj)ksop2$z|g3%yy_c8qgZckBa)>_UG96W(R z--MU1>D=mog>=5!Z0|hWjUq^$L`31lRCwAy3pR?p9kQp@z52*&AcpZG53HELL?@>4 zCgXHe7}A1v_b@QI9&y;%6QE(69M0;e_@Ig2Q=ae0$;0y*6RnDc%uS?N za1_#=P=~I;=*KU;7jPbBKY*0n799tq4Bz|NE9n>JEWIv2;;B^Mw>)j$=r>>=J^*@G zefs)GJx;90cc^o`+KyQMXJaDKNs1IqlHTm3^PO4snjYfEY+l0rnbeW41d)VwiXYb$ zLa+sT>1yJk_Ss%UOPw?x5`yDccJ=;BG4$t>*r!nShEQwm5z1P!U5gIBZj-BabkZyF3tG)V@wZ*%TCJ|FX zNKpguY~0^&C<`b&K#GHqL#Hd~z+|CAgG(xc#wj{*HGvp;#gW@1{x!1-dXY($^?kVe@3z*-S1^wN-val8M={$Cyq>L!|ARosXL8D&8XBN&$1lNpY zl8E5{{WQEuK^na=e}JiXx`?%1Hp7RXtoHH864A{kM)8i!j4=8LDvGcaoJPi87D%v8C@$I>%nDrQODt3}Ou3QK+w-`TRW(k_#uk%}Y~V&I@?rQZxQS@YbJX*Rb`L+Pm%h$FQ#a63Z2EYFP|?Sh;)B8k& zVIhI1B4(Brn)9M61J$}cx>Qn2Nt`wv%c&RXvrark^!42?u0 zs9OB3Ie=K2iF`r@$vL0Zl5FEi7X-B{*t$xVl9uT~jG)MMm2yY0*$ z<~BLWPw~oO*f+$)3EdSoi5-U2J-S$&`sif-(n1f9F$H_O6jm~wzc|Ol@;@U^V2$aD z7CriKc;!=_NCl*xpojDXt}7f~xDbfg#{OpV)?!YZQK>v5B2OMB-uf;tU(-8_?W0?$ zB$A>av!3AUA@Go-b}8N$n;n)_mx#AOd#{QZCT!kt55Kqnz@DDL(OvKZx=wEjezm0+ zRuYmT8lw40lj{wK)gEr?=!d%2d4*2>ofvb2k4+3 zND_9Guo6HQ6$q3_SSK&;k1aNL(el92A+b&kT7g6t7x%>q2+e5bM7#IRzzxrAA8n38p<#+~Qvr3D9!D|O>gzAkwCNU7Wq2@A5{QBE zAv&7ri`Ws-q+`C`B~w0AD@DXsC_}-)W)~5^hOq zUuuo$dA)rRg4TV@v%Xbdk4gz;y6x=u&bo4UfQJRA_FgQQ;OMc}&MFBz7GBdq`ABE@ z^QZwUy_TEr_+cLnW*tQwdF0TV6d{p8Az^Pg3z8-Xq|+mIF$6%U?q7FQ*aXF`WA7^3yBG631d?T$tyLK^T{nSxPLQdu9z29bcR&UJ`Vc z{3{RtrnXX_TsX%QrXwd|fssvfJ)&&#D>~*!1Ihy_4;Sd*X8Iqee>2V=tT0|1+I2Z2ZIL$PI93MoJ|)fnQinEIK_6@L@*X+gnhCCVqdi{c(O>Nii{JwIcRq8+u#eVFR_n0bP;L{DjvZeiZcBHKj| zv~ZUt*bE-W)*$Ya1%?sGM_Xsqhft8}NuPrjjtnuC4Ys!kb^Ls06qPX1v^)8=npu5q zgz0OEqKiI8BtGRS?l%C4ShKnFi^Bqd89qvSa@*2u$>fgjyzxF&I|7gtAo~t3r-`75 zemtybfY&KL9V4~`hQg0yYd11;>^$g)L$Om$!mnq}^&R*XC7A6Kab9cT5PS886^P%8 zR%Ih*<#w2G^=P$ok?j*Qj<#2wPw457)KGRBiI#naIz6igJb* zs7aeOYec|mLt4uALD{)a05dh3s7)mKT$o(o8UBKF!X^oz92o_pgfPIoJ#ow{F;7I-z@eQQi=Hkjz$dY?LgtJMTv_f7hg0|p|s z=$L_3mTCJPk4YH`=3xZRbfEXF_JvK+AN5mzeY7#L1=iudXeVW=h7f#)5R|>LYS347 z0~jqgCE>qQRfj#2ZhHObN{5`zX+|@#tJI4kH<2??Xh@Doy3u(h*T|_m?2$u4nnBtl z_OyI5odiKlB_cjQI@J>MB(jz3dMCA5M%^QbOIEHh^oqhg?Jc8Ss`Ar>m5|?Q z1*BW0JJ@Nd@>vFsfa2X3w|sh}M z9I`a;RqS-UX?Rtp)m>J#SdB$mfS0Q)FIJ;7|EicDs|#WHEiQ+W6V$d&&?19hf9Tdb zQR5#D|82Rhs+XE!81%&nztsd@3aCMl1A`E|_; z<%cXzwPr9Ni&ss9wC}Q2xC&jZ3Ia4B&p&U+{f@0}HHC;={-aq(&K4a(uiVF8_gI`m z@Z^Lr-3gY^grPp-vk)Sr}npVj>{PYo~D{G)J9g1;-jHG_bLd zHrFIJb(Z7wV)^5mT#b#;4?%#qEaevW3@vto3`cy?#pnE}y?Yj4GU}C!r_yG{I zM=Tg=YQ_6q32QB%ZeCNNxyup%U6)T>q!yG~{ z-~H3=>rN_l%2`c~&xe4La`PK{G(0*qV6`khAbYIXyv_FhH$)1bX85nyPY7Z$pS-Sa zS<#_x?Upd6c#Mw23kxpjMr+_B%EOnHqe63n^;D?cUq~`-Sg9bA02$yLza4~2X7?Iq zlasHY5qcEhz@n7J?r*Lz;q4~~(+JUX8}y4X6pv^4tlW^`p~WKCjh!*~pZ zjkdGLc3a2xm+r99AAwt;H18tL`7dLWMi2^rq~jxSaPPgmZx6TO!3f8 z^Hq{Vkdo6vA=8dp(;{ut5(H#om1t#i+Us;+UvUN{@tHM)1~!+r1xLD9fDL45_MZlSnk+r41l3S5FWA= zv@u~T-Yr#kE{9fKC#bj}&Pcuu5w1YPa^Ms$JENOm%oMC&xX|cFE5z3d=C-QD9H~{| z5GUv*S~|Qa58Sh**sYsi(bKB-C8}1_4cW z0GR=3qZ53U1pwv=g3b=*$wS~1&37+b@~+J@zS$B?nxi$l5D;iCCv<@Jt$=gVAbcWW z1u*zplR#)!c1E*v<1npY8Tif<#QhEgf@wZDn7>^9PUWmrZb@*+80lR`M25iZF#rBC z7xa@K1e*}xK~=>M7C^2Qgun6asHwFc%!d#(ctWrvFtFM^UNviWX1b$IA_dWpBIbh+ z5w5gY-9ON{z7o7c7YfP+X;0X^n<9{Vy>3?xAqq!JjER+aKs}xd7)1adAa-UETTIdm zU+IDPxtKnzpxbqT<_c#o9T-fq)c@mq$5{7Qz_K^TOEDL;JX*1gF+gVl0?!dNA?ZM= zxdrC=;sPt!t8Qyd++C~Qi*-l)9JTM6tAqiWe<2KxrUgquXR>4jhLh9SK(+MiqNF)Y{9_Iqfa^@4%!{->nqqymLPO)>C0O{l4 zD)PTpVWWC-aji9xl)qvTd`?uk6*$3*TBg*~g_Hc`vbZEY@zVtj;9=@dw3`6!SBhM+ zKi(Eh_lBS0xV*ihzL_rjc2#9YQo+0MUh2Azkhtd4S*_W1^ONg_PuK0pYc#x@E~y*B z$?KlyH_dK01D|fH-lGO-Z=8SLOi10D^4!imzs+*Fo&R(zj;y?0Lf-QIxLuL@&CdP1 z@yYLP-pS3kzxQ8Gx|v?1)W8EO6I zondv z$^GcWkPLDA4=>MX7}cg#4k9Y|#6c z^IyX%vn2X(0NIgi<)hSqY^}X`NODJa7W>z=L28?xMyoKRm`kTbVLAhhPTO`!qC9C< zUIdyz7lc3_+TH=oHk$~t#S?l)LD$PWpIZbCd*u)rX2G#jL?HmSrUr<jW_+ z`J+6xKUPwJ@axR=f{BRGVD=U4ecbGRI)HTtO*Kk=n}Zb(hD?*0THCcA9PLLA^U^;O z@0SnqJu54(M_xHre3%P#s!F7~pKn0iGe#o>UuC7twa?7w^>{P?*w(hiLzWOr=*1?! z`G_WC2Ecr0QUw`$nV-ZSNqLdTmg4|d1R!E9sceTjax*RFR}^0Qkapq|+Qm$|JL6l{ z^uUzmOTtH(rb(1cu=mb(phATWe?9Q~7OrE<2yRqwKn{T_5Suot2k$fK^%N za!c7JFOYW$@b*6FuN|2az9CVjvHndlqIusR112TcZ*2GDUgyGAA%p|%ZNRULf=DG9 zGk048hl-;rK_~satLFfqCJckg9F4#~gCSp`)QvT05MbeWr3i?I8R4qw z9{~|5Knh#jR*HD;EM;t*FyZ6KQN#~neT(VD&!!BQO?#J%T3aLM$%Xq^`4BEB&k7p6 zk4tf8fi5@#1&QhJfa~0sS1>X1#j|i6|W*0dfyV^N+YecC6Y zTkt?-BTg_dPvi_ zh*s&;3a3QCj1NE<==|yq?sl4r7=fp?{Px?BA$NG(<6Jt8d1f$rZ{IFDE*FLbW3+Zj zA9Y42H;?58H=ZUFwxV1(R1(8q@TswwDxOxnz)XtxcZVk-SK7I<*stxwDZGgbH+^b5bq%4EGPs;FJ~`t;hJ zE0aAJH}FUryl(xnz%muU9e}H9%LgljuR>3uG9H+<@P=)sGOa>gndJNB_9f1TwH>TmKYAT zY58RIhICoV_ZSW%&TL@^0o1{Mt-e^a5WPi2tFzNce}bRxFy1pQo5 za6`iavs=Jukm;{Cel0sTZb8e}rWbvmTlZ4kLVg69-E8W8%FF*5dV6gKz}D};P*i=6 z8*Glrs^5vtv2iJ(+e8Tb&ri>zpG-L|Pe(NfFx3p*L*Rp);>c4fh)Try%`mg9q{Yh(Y*Wb|>e`Nb@$j-l_ zFHs?f_Tqn{FWg{<7^R!Fzp;_myDx-vsOXDE=y9Uk>k>Az(`N>E(U+wO%B}hlsaw#z zHxr}KUG!zlHtYS(Ru&ICJ^U{E5;82~RyM_$*cm8}!bU$Yai4wlF5}NqFxU$GtTE;- z@nUH&=Ihn`Xy{pNgyg=K()F9+uPAIpyW%K?Cb2QL)$q;aXOP`_<<6*|csUvvhQdZ| zF0-^oIYE$wv(z}k*pg++U%=-j4(tkx?I^W~SkgChvHL6>E?i@tR2KNWO4jDdH2D)0xmZ=-fY=j1g; zOmTFukH|77#Eq*KZ(cFEuTa?0WvN{Q1tdy%FmrkL;Ydh9gRpV;_wDy=u_Y%-RU(+N zoZ%=<$NRd2NGz5s#+*1amc%*+=z-`isfO9auq^@}RL6i$%M*fYW3d1LHg_OWOTNk= z$F3SyG}yfdAz|C-+05k)<*UHPNrrN~gzCpWWM>v*U{@EBDnXaVQdEg zm<tr=oh&%joUYlsHn~NZ5CdBo7>n zYyHTUq$;2?0H0&PlMD76x4_^YmvhF;RC^kvh(8+Y9X8d3GXS2DUsiHs=&vV{F^qhreZHOb#QiEf+TLj5uHJzo)uv5ENi@#NpPq|8~h z!0^FS2^T@%D|uZUmc1{-#XhLA+468EBPIqK0dh$8(9DK~6D4XXP_x5qCMXU9;M!BF zPrX%lrK5GHV2^4tojOE;I9V})RJgGbQkp!;#>)7fS&ADGw-*YR`oN-BR5q|d?<{l- zd-dHU659*>My?K2ZX+`@yr4FzGXP+l`FcP;CWNTfA_JYxpTd|+$z1>*lNn>956k|= zLQFwBa5a2iW=JoxBG_9olfBSH3y%DB5${rIPHY<4p#byu6r$rKr%X~G z?xgO=ChiH4krSzhNfUHACafO8dkRqBA(;0mvEA9>ddVt7GNV}G;|oObDbVq;r2!8> zrqdyveIO%(@`)rHQFx!&ke+CS}PofMIf(b)ILwivng=Eog>|p!`W(IN~@B2Di5gw?sZoTJ<14= zo1j*$mg8sA)}o9%5+M8)gnO-tQ79TOec4Y^}DR(gt+$^#zE z_*1&0#a)?aeb$8ISCi3B&RkSLrd)0lji}pg}mKt1RR5QVn4VLSy(|X)u?< zyHUJT1dvc>tn`#AOzWiqH;#T1$bZ1FI(E3d%Mj5Bt4=jMCpG$+uV3F=c`YZ>5Mopi zV${-RR8wixx@^=Q^`z~GQ3rvs=#5b)w{bUtEE~RnjJ|Q7i*Y{z=0KwHV2JS$ca3+s z@yO`X;H>f3599G$;|T(jNm`RBZj))j<&U?*!zLzkE+(HtmZuX<7II7$D^0$%nJm$o zguo11_Dtq)myt^ZrmM83Yuu*mmCLMO^y-5oUHI|7*_Z}6f&KJNw-Z0As9{$%0 z5nclpw7%vXq%hL3W^QrPw<>EUxR#8*{J-yua>l5&?R=0vF%D`9iOpzZbV4s!qBIM3ssw$ORuY8mo(vCA zLeol_C$lwhjZ4ll)P`N+3~Xgj?zsYDt0o3Ft4W$$`xRz8&RZ*2@d>ga%uL7i;j6uJ z$$$ic#C$R zlRvS2K)O2x{A~hyku{}Zt(}NJMzKn`y@8Eq5uYP0>eLv+C^y~4b)CbAj5GG3{Y7PR z69w}3FFUpij@)g{8;kHdD*N!Xs0eV%D9W)<1ERHIxxW8_`SF!taO$_ zCU7G}1kaiMCilMG*{vHg!9b!7}15AYa0A+C5`bmCtR`v|5vpmd$|t%iUXm^X0oeY z-h)Z=47mEfopZHqI!l#j*?=n>HG}CprwOd*5A2#AM6(~F1zwImm8n;{!V7`T9*$LPl_T3 zZ?(}YqDJ{WIRyc8}y`qeb^(*D2x3WkH{edeT-_m+ijJ( zGXki=v?`Keks+@u6=UZ;@phc(dwL9pJs_g1M;|Na{%$V)Gg_a~v8Cz9tU&|yy*q!$jax7ceh`EUHP zX5OOf=1QOV4|2Y8zwpj=@>VNedo=z_E#2^(!27Y8ojRe9;56GY^C{z_Q&sY(x=KDn z?Ou9F%SG)|eKVh_*Iw%Nr-tvn&uC9g+}fnd+f*pdOnH5+qKtHM>Nr1*AO>$Ut^xybZ{DDV_d4 zAbULEx;X$88u#Wd`Vx@$@CxsiNlYZL;7MSiSzwV{VDa<7l9z#{Zv)HT2bO;dEc*#> z1PA8-45Sc%h_RvZuAtZQ2Hizpo&^0@^yO_(b8!$~F6aC4Af|m@VY+LMdG!B|z6AH0 z1^2lH_dgFFhz@3FLu>sUG<+^|MTO0KaXs)ecpMo#fr`F7yzNOx=c~>geiA}c@LrHE zUrEFzHV&^|GZ9y#O?*0uxhf8(RdHlzj3M|bS0@6$H-Qq%c5?fO zaR9-f6k3qHi532eL+=kZ%HXq`s&F`A8T%U>u}#TVacA{xnA^`HY#YUirHRaf1U^2;`?3yyy_l@ z%Yb>S|4x5fgB*#o%I2g4KEhz>z0)@Oj=!X_-GWg8#umiZ0;{Mc>O%M z6~8!K>z6vXnesjT#iUbQBNv_dT7cO)T`P2oYlqK&s$S<7ASC-CbVMtv&;<%0$yTu%+vG3_v4|lQ>jM>0|$mjUH#tlf*qW#X;sc z`ApPIgns&=$M`_CkB!U~6sCjz!0KXtF49-pz?xPTuff`^BQMSRm8GS!O?oUxGuyjF zv8!zxv)X$_c{{5$*yPsPzPecg^*c0_&<9MpuvRUcJX)+|DBKky zS_#B&AU(t_YHq4$EWt-QGGI8g-_e26XRPJCX8y{oQ2B^G8=Z{Ei{B$3-5d>%>r4MTyn==5uT0%ph(8eG$B!TX z8C&@u9Aa#s4+SAm=QOVNHveQ+ZU?zhrIp>4`HPdEsK5%!(A{x}E7Zpd%0HkK#J^C) z%?|SVc%>%u7ctaM>nY1{o6k%;(v$;RAc4h_g!oSm03ag2NZh{6PN!hv!aXw z4^OoX?x=&IrLMl2uD-?J;K9Te1s<%d9bMdf@63az|DWDUSVZ*mu;~9xuBgIL$&~|C zawQ@v;ZJqN50Qg15B_Pz|A2?m@+wq#<^9L5rk3`<@+;k)-2)w61E>N^Pu~ycs?zdL zqUGokiK?_5-IZDXgj#OTuaOsj;fL$n->5_j%0FEFU1OGKl zKO-#X|L(B-6Jh!NkBInB3qkt-tA+Sc%JwDAjlHkTWVpWaF1*sb(PyKUCcwS%ukgy- z#f2{B;ros}x|pUTjemt#gqOMt4^uh)Gn4s`lxw%f@4_o>mPr)DdhKj@4&hl&kV9pv z+~oM^w0Vm*gP_Wcx}T`CpkfcJ#a=b;?!@GLFZe>ZR+xX4u5tl*0w_=05~u&no3EQD9rWDT9I2^ zKxCM5+#-3I2m{e$>RanRP5sbnTj{ZyB}8Nx+zv2D2)ByF$vvcQ}t!NWy8`b*$d=G zB0UG$tW+6QWGvnJ@-Uck-Z8QC{bD7eZmRpNpf;GWz$C;qRk{_2EjYcAt1;F!;%{P} zK1jqKrLvvdpnk%v7;}#vA3Pv3r76_Pb-4{5zDS=T`Eg69lvYv{$AMdsd^q3$H$f(i zI+9(=+Cz0%5Sv-dIVqz;TDw&EnX}c_{ag*9N<`G+*6FypK-{w8h&Wr}a_LyUK{nMF zs`IAcQc$3alE1fMH*pqE-DpFUYB4vOIzb98p_h8uZrep*Um4c-XPRIWUlV!)T7Lak zeGO_O*92LPJVPvM&3JV&_!Tho7j=rqUm?$uFulno4^t=S?m&^bUp|^Yb+L63!ttT%Q?D3JPE64ZU z$k`*CY67EqxZTD!*ObU!R0z%I6{rjytJR?N3>yb#D`&;hv9zy!1PCHU7nb-1iBd#A`n9YzD{Y*C*K{znts=45Yozk<~%spM;VzI=Dmjdj_lf)t zs3kwzC+h_=$ z8HU8bW(_xAEPSZC9NC+R7sB(1gtJ2}@o3HnmX#P>UIS0kVlLoZYY7`fUk*F32hERZ zVAzzT5RkB zg8RY1K&0rNru02lQ9R8ar5{}+JB#`YEd!M5naKK-SvvApG|C$+pBco2 zpik6QtZO_NDR1M)LBiD?6UDb&94QD1{ya;F8^GNscaCUXkp%2iPelT&4KlcfnQrf+q}uX|Ut) z{1=E`L#~N*{n6dWJP<)#b412HHUsQb(L@`^+)RV=f?```WdvA03P&9v>jcY)(&f}{ zd2Kn>+OM3wi%K;p7yHf`3|Uy%%YSKx%M1cFzE~8%^R~xHWoqym#@ORA@5k_``3bQs zF(gWrASgT{vqdjHL@ELb#pHHBxq=v|-x!+J@EJxVBEgt|Mtc&|u_FTzZC>=)T9_Cn z-+~%S|65nTDk!0!(ocvX^JKyyO^DHhvvtQb!HMJh8%;Yc#$~M1=txcX(kBK9G zT^yHI>W9$8?sr!-BTNM@eRLv|ww$Z0)vJ6pnXH+993@$&x`I9&iK%s6rU%7A9r0O{dU^(o{t)xp-v=_}dr_-A>WnU(HdAn!lsB+i3a)RWvtzC`icV&O z))k^AoyY+L1a_l}6P3mkDlcD@%cCFc#Kp8zAVslZ75)l3M9|N4!`9b7pl87e&B=aR z`g;)>-TKqt6IaC%r!vMZr=ys`NkhRSuA=7q3Qq2dbO`Qndd9SIvW|C+t^T>M#*Mj6 z^bG;&Le*t@i6od2I$bjp;ewWhSh&3U5yV6QEZQmT_$XpPQRD&3bM-vYOgA| zuIVb|{ODXH-k>?m)YA~6S*xQx?euwW6qWIbXnWbK;tCKEE1DN6Jjt* zR&8(IJ@@{FG={f{1^z>8syCMCfQ|}$Nl9?YTl0K?C$z|9BhQKcwKIR3bB_s0aLsg; zFN3QD^g0;&%vHoL1P>i-)Oh=Y`D$tiyaCMk-3UVOt!Tne#bjane|Wp^rl!7z;r9s% z2_=EhJAyP(q;~}AT>(V|1PQ%EKsutKcL=?R2+|QXO7A@sLFv7BP%)_Vl9S(c-Pirx zXP%j7&N+XanLYajBx|y>*IJ+TU1ttn`0g|iKyv-Z6Gf{9_QA(LqJkl-OM;V~5|9>e zmIqW7xk)N1hZ7*@JBV@Sd;N)Oq=ygv8eZ3)T2lYGl|)0It3z{HJ^2_zMfdLMM}J|( z81m~el9J(Mm2lxi>o4xM0y$ix<2NYS-``lByEq-$j(HcWGv&||$1>Pb8x|`#1TmJq z^Q6s_P@4psc9R$Yvpppl6gK^lGan^FJFwqg3m8*DI)#&{whT_onS73;_K4|7lwA>Q5Mxf!??E^=zUJ+fspU}}?JIcb*;KD8Y_+*#X?wW*oHe`{a|b5`jGj@RNOuY!J}|Nf9Fk^fHoQaIZ|}H zVK}H$dlac??HF;Gr8(meCX0lSO**>?T(7}LKbMUboD>ITpmVTjnlgbMlF&G#fFQyH zKb4&a=M#2+L4n-sr0owNPAZ6u#}qQfoDu3UlpkP8RKkgulCMAPh*qo#EuXvQ{v(sJ z3jwQ^1=neFESIPh43fvf>UsjTV!U5Z!L!pnplIvCzUKnk zky8PQWY&=ggzMDyGs=<3rzb9~=?H@uj*rC6#p%(3Dhcd7@W51VKdiuSI~3|h^dUV* z)<~Q$v#yfw%PVzKG5aS>g`}_1+@!KX&>W7#hcRRau&-e;B7ZmxkI3i`QLUfMY}c&F zM&RsF;btt%+a_k&4{>>fCNZ)Z?+@lLiV0k`zuh2a)&mabQofq7Hpb|<68v8>`=j$k zgUJE+WCpE5= zvWE*~JetjW7?5FA3;0$*x_pu`b^1sXDu1=*8(x3=>(1RSp2rY^vxSm_S}*jad~DVg z0B#UTWDMzgeEbaoG>JJB@+)x`T6RHY*>r2Hl9xv| zyJ%=g2bF}g$f9_v4fFFJW$`0>N)Mh#EG{G)%Gw+b53*MRUl=0}eRVZQV8v_MZn3({ zc(^kXmN~0l8=I{pNL=G2w<=}pK)p&a4PBArW22x-lY6naVt#PSJA<@RZ6GmXiTo;8 zQdtU|heB2YUO(;EhZgGE@)vJ9m}}XY-Kj;zkcaOCW}VIiZPeXy=hZRC(8M}wgFXd5 z8^CbR*cFPR99<|%bKsr+;c^hSFY6#>Wck6QQr3191)(rkM}x8=J+BcFP$devHxc!d z)({%%Afs_Zs){K95;_oy&5k+_+%p zahyEOZ+;9Yl+4)iHV?XN^lh2;MCdP+ZH{v8(4z?4Oz5qG%GbL0cmycP}D8-mZ$IDhU{KP3S;o>zBEeXzqQX0hE_ zN^_Kd_X=DHe|;<7nFk{O3S9QvB>qDv1}w_?58mtClvfK3uvQTbDTU zq-ZoH*A0w3?VjLk|HzYfLLviKFCN_4>C?%8&R~H>P0V-pAgw;3 zqOFXmHd(>WqR{dw_>J9rVXwM0pZ9bEAtd39qp!$V5kN`=5DL&YOz32;ay79g2@Qg| zvM{P|2z|yWwJg$2fi0a7_$RSDS$AfiXE!j7{~$4l#%df zSVzG|d>*!RfIq&%5iLXk;UI((Na9FJJkYZ5aSD|qx?qc|1ldUy`K;+y6MU+;{~rs% z&JIEF7X81s5dC>WgDpeE@XCK%2#x>ULa=}RKUoMN0QDY#Xd!5t{)dGihF2^{AR!~f z@CrriKNjNbVg$i4O0*F4mZOaSScp;9)_=k)oR|NESBMsZ*YbZ0uMG3Ypx;aoEXJi1 zyP}_u%eRiV$^-Jc$CWuIjGb|+mJ^zn&p!oC=(bLfW=`l|P8h;f-mp&^TTYsZPZGl` z=5Tgmd*$inWa{W7F}z}T$wX|g5W_1TUQ--smnAiTpCR-YK>mAAtS@T%QV6=K(8l~u zI065HfC0{o^tzSVy}Uz`*4Vf)nk+;Mm@SyXTn;&gQ1xNK#u%C1ZkRzARqimj9}g)x zgcYfg@=4fGulNrD=0;PAlnxd=e4Pmc>npsqhXiV2>bh-ndF8w)t(9QPGZfr_UMy5K z6*B2Nlk$4u!w}>k<5t=|@GChOvIE95MXGHGF_|QpxSZaV0!I@Nj{L>kJpgI27jOi> zXuM)RoJKaIOv-Nq95;mb;}^BQ!*Gd;$~M4HkYYFz;#Y8O48J&sg(>ZklB@))kC749 zs2R{9DI0U`?tqzzijGL6cqn#>s~M}?9Wjp9P0sPM`LgNth) zEubnZpli;9Bx18__*)$#@F64&i3T71jJRdT*|fH3=b&nVwG4QSU_vL%VPJp`B@WdA z#WrYXH$W4=sP`du;ThyHa%u0K4kd~-J{>ZSfe&5gHw3rpV2TIPWD6^#tob?ceiPpn z))!3e%#yYuokU_#MCuPt=?3rGhI8^=J$v9KLi zIabkSF=djiXY=8J)PAn;&u|iJDnRDC&I>GTe|Q072#hIQ4aaXS7(Qk-j0KHvi6P;X zqHt>fiSG1zdugsH%C6Ay4lyR|I=JHN6NcEJjU zn_qc?<$WrEu_;p!JbYwiEj{WAiP(w78KB8PF_;R3CyM#1T31lOHN)!c8` z==)@g6`@HJBtIZT6NeI#*;)ZjPKE0l(To?^7W7YWrw@5EEUfT=WY~vk!E{hL^%Z+2 zl8>3PzD#@`2fJ$iYU%5_+`J>21tn!u$tz z3qaJuC*g4q#?HI|Zh*@`p7lGf>MvFF|=3Aco?Ju^zgkF1k5%7Dn(cABaqbY0NZcV5WE^!!RXY)h*$&sdg zmK&3r01%{9)olzYamw=JwxnsxHM%OvI2%Gw7XdJ$-aKH&j&gr zFGD0^*d20H!r@PoFjcVmL9A!4y~757iu2NmCYyt|&nK3f(!4mhQWLTZ#=?$GVUg%K z8RBxFcV5Y+C)`xFp|*(vfpXcQL@M{UM%FfxQvFsK%a#NEKqMHZjgtn{Jx~3}J7d^C z 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

9;#)ece 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 gKGWWmpi^5n9uQd2YmU#&rn2L-EKw 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%0ArD=1j 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

- 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 diff --git a/ToBeMigrated/workspace/alwrity_logo.png b/ToBeMigrated/workspace/alwrity_logo.png deleted file mode 100644 index 55ce65a00d4b350a26a1597bac46c39ccde8677a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 192304 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

9$lq#hrT#EJ%pYJbP>fD=YIXW!*T1>U>8=Q~V zCHX*kxiY%xavgLEoS95Zp$SPia9-Xm0x=?tRwj;;G4DjaGRs0OQoafnnqrV0~HVkMBT>2hq$eerOM5qqculFpC}rK z_)fo40h)L9quXuTz&kUzbKA&~x0=LaL`Y}x`tpLa(R%C5uDaca%1X{hJ0mYTVn|%? zkuZMKd^owa!KvS15>$`qxTR4Ui1sq}MX$PfKV-D*jl#q!%Uypb8O$9qXA=-AIh}rf zI?i^w+3tMG{r#K37%ge-TSw`hCr4%Z;^So1|F)Ns|3#^_cw@&DxWqQi zQMUKXu~9!$;knoGbe^vHm1c+uca8Om`?6#5vin8n(`NfE=whSIjufWF_!CQbt;(jv zKz$60Wgg@|9eTC=zD?yf_Jfzl67EUxY5K+0`*p3N`)3YDiJ~I*YP-{X9CtBlj1ASq_dhq%L`oXU4x{w~Lyo)h@`0?shy2_B>NK8CTx>wHrx$Zy zaGK^gPn?*mrO^#gP;;b@rclQDrXQ@*lE+r+4CH6{gcBEpW$OA>EE_>zdaM&GHNYmK zjmBSH2P3dJmxRZ8!-SOQYSGs^5+~i92!$P+o4?+7qOb8c-@bun7y>j}$k%4Hg`;CKnqeU-`Y?ZeRonwFOMR){~3z&3T?bt30f ztfZw>rnQF&8TNOR3HR%`JTmp~Pc~XEU)G{Em%8zFaz8?s27b*||8sWAMp+UQUy3WQ z3?L2RDw`KBx^##C-zNR^BRDYZY%C6`G3ybi|QJ zV1TJ1g;w`zO|+uWE6>G3X_>ID|1&?to1e$x{YnA#z7~32nmLgNYyJ&kCpH+Io&;8O zl(XyZ;W&1|Lt?CUbj;B!8M*CBoGDR6bzXHfw5Gn#VE?z|PT#)SBDv;o`?qshzIDGs z$5^AIYdt6@0QaRsI$-66w*kG#41YKXo`k-BbacETEyI!EnYKEJG?j%|=7LF|b_$ZhRFZ<}sU5V2N;E0a2Y=Xhe)NMRUTsH#S97;6pjTD>?^U_6MsIz( zQ~-~H$GJNQhZA}P%2<>Mtl|?qf!q&iWt8$oR%2FgzLF*)dU|?_zE_@aNYciRGk@5n zh*&?S)s000eu;L`p{Hk>tW&x!X8q10uy{oNcd6g zQ=MSrOI{GM49ZkUO@*Q|8u_$zEam06rgElua#ohJ;VD$G`{_*=o~IIthi<+oSzuXg z_o?QjLq#r(YEBf98tMS>HU_xuK6ZabxH5nrG*(lkG1S8}e^WlE-HenU=!oz@E>DGU z!WMy;vNu%zpZ8Me<#?DURp|x6(<;sO!v%j}(63=Irt3N-);QiTC};k#Iv zIGH$y^ZfBtt zm*=TH&4t~$GsbV~Z1#?PxDzcXM0S9a4k}vi9AwS-r9}IDXwJv0=vG-kDh7gDq6L+( z{QNWFAJfdEuU{gLca7ZvmwW=eq-T_V7}vWomzr(1NO}fsPx_uHS`<6qK6d_aGf8dB zk%LhC+l!koIlv^}(YjQIR18lgIks7+BZSi!M;Yd%p!vl1)rmw8ua_G;Q~P;>i0hWO z>o`#1xonTbr*~LYnA`A~Cjx1`e&WVnt4*Ra8HsH#5|KMUW_JG#ak&=8U48PyPTucLj~TQ@StnlyBKL(5a@Wp zbW#x*&jjXtb8siBhBAO3k;76DLYYCy<$*A^K@0C{s?hwn+`OZUxfvQN3;6b-hedh0 zkO);F)_JCdX-SC`4<;y!*900zU`pc|gEmc3`fa9>;gyp7)@FR0-F zJb~ACsiAeBw~GoGhrh|qpbjb{;=c~6Ogj0AeH-?Bj!@@KDhXk8xYOjBW%&vqP@n8Z z7Tz-fKzi?nDdD0w_b}29B6p?<#06&Z*od6&p9r5vv{R>8a*jbe)9>-4o`Vf`M0Z^5 zT@h@K=6oKp7kvE!6 zkrMJcuBM<(wzR&`+DP0~myn>iaQt>{NC#2)6EPw_=w~`=8NgON?}Xa3x1xw#a#20c zdO}v$edpy`)}0viXz@BkGJ7ExIN<5zAmV(Ai@xUul2p~kuM0W1OvbhDYv;uQlD}D6 zt^L;_KaqCL0W+y^6hvV>mzG67b_w%LT3e;tRn+Z&1-XCYgt2iv3YH{9- z=Aw?qM$sXNh1Rg3kG$Bk36T+Qp24<|D02hb2$J??*A7PV(j^vEFoJjIz~XxwXKfKHSy zt{J}Xj4%HcL^DPU4Uy7Oh&JFBig**B_~Pt57FKR`>`rvsf^`d zV7(zfRCxylDrQSUjGHxQ1O(l(`?6~@9nT4jR6#{WXfl4@tpPAnC8b-jNM&<^dn?li zB<%MF{SLw&L2$;`{|JHIh=wmq-41{tP!(^Sa=gH;?c>y@c$2xLn~QvnZ#r{Wl(zW^ zI7UK3s*sApWhKozhl)msLO9A&wv&T4M!O|%c3ae0Hy@f^TSS<;zScMszTStKLiG0e zs5le;f&&SrRzTNz={T!@KxO>UDL1JFJV}OEDRkP8T^_H?7D1dF!=>k&%#Xy=>OeKg zbnYia&TMQ<=&#%x(x4MFeh0|xY2RyQrf#CGy9^V#T?XTzp~5Ms0iy&`{wx^Nh3!{k zheM!YGyyvup}^yJDgAXNg(>>ca#gvW6@g2+<3_)-03bPDMI|S3@$_Dr+022fL>fM- zH^6bB90>G`8S(34N*TU=)Ucw*o|coO4%!$*2Qs*#|G1HUrUE$SEWZVSRcVPw|L`&y z?CjnQG%n*_;QA$TLsCwvK1W_m0=mF=UI@aDhP(j?Yy|zqFRiQ$ncE0{6$fy(L042j zrsz2d$+k+j{XZ_iE8i-r8}dIl#6gv1AF=};5B1`?mbXpM)vx!lvrw;w^NkA`u*k@# zmL3Ai1>>I$;G?GK#(WULddC1a352?{Tm(FU&QDvnedaHuCE6ZI@U8ufD4ghbzoA19ArrKZu|8U2d<6-i8ufx)NlK_I~eIJ z97nM!c-H1g&85I6axY)Xk&>kZeroW>rn_eHW6pSBsNYt|<133q$nL%SLKT1j%vje;JC3L1h;6r(8ofqCKtb$WKDERw$cB9Kw#WM$nyK;$Y;jy>FlbXL2h?`d>c z892SNGD@M%p!dzj(HO~;X<`;uL){q(S;&+LfF2R=+>!wC19STqU!fa(*q~cb)c6JE z6KGB@LCh*g5@>3Y$H?|P#`g~PxC9(?RAZ~|Pl07EUw-&i$F(3@9FpbMCuUL9u@Qp5 zhR%yIW6kVo)mWp%n2FixLOZ@D2;h+OCML6zEzr9yJ>~Bl=47SKP9drV9f>)gw|Cj>8o#4^!$p{fb zC{5(@ko3aInYzv#oboZUC3O*Ckc}F!MRI>KT#FTiyO0I4EAZoC3`Ol(BFY1=AFxGt zNOd}jD(IWPubE8MIjjRe?Z(%@3p3wN*NwuT@G00}l7Hkb zyMFa8<-;Ndf^SejqH3FwUcoqxjg2<3tK}fbUG8(+puWf_YwL!v-BV8FA($4>hkkcG z?UZvkKAB*AL7gW00i1loo7Pl8@g~Uqkv#6l)Mn(O;L!TvhdeI2?N*BFCri`q{*txC zJu4N1SXMa)KlUxXGK##B$GmlX{{^`;p*Q=IBSs1Vn^SqB+&!rnPV6>MhYGPwfnu!* zid)Z-lTW9)rkwoc`DKjc1NNqQ&gru?^Tr^@ z%NkWmGMUh-zR+mZAo@h~aP!u|;4zO#>~@0I@qTkgTSf(}QLbT>Hir;W#4Tm;6W6&f zF5Wpj`)eZa6~2aT6j|yU;oszWkhJ8};daApOSFCQW3v*J)z$w4O1j|O~2D^5Nj4A_qB@keFEr*H5fD<2zy`<%^CvPgy6dUHN7p)ix#@6&rfO10&2hns;B zE_{9ID${0#Ba}04Fbn!FVdT&-p}(@Ihx|=7(XsgD+#Q2(q}}p2D5N~Z4}vGT3V!<6 zXV#-MD7l6IehLz#dc)M-mj%y$J-Kh7CqDDg%w^mzyhMSyx1II+YDVfHnjXQ=_D^A1 zci%2prFLQL+S4#e+mp1is{F3+4a6+|@dmzOEQF1dW;*IRGP%G+B0e{6kh)XILny2? zYHZ=dKIOrv_XiGMK0v<#ofGL%ycB1;Os_`CM6dVuY4fTB6nt}(S@N=!Osf&<^1|qz z&3+;|h9A=QBUA%foF_v<8~{DXmiE<+#6>SOIA!2+_)X_#8F_e^TXPtKtc-LdzWj)B z2B2u@<5rnAguJBJ$5Ia-v4sYnC~hXT$a!8lloX-nb=f)OZ>FeVr zTYUSpves96?vGD-nDjo&sL9BDpx$qgq&7jkl(_DbyER2keF5p2(C09ENRZ|3_4v0s zxadrN28A^`U9^#=KwDdL!N6)H?C0(BPMjOxlf@S-5wEND{I{Tx0IO%__nV>c1%-aD z4D-#^m54%Ld!!1>GcHkcq0;l8z?Jsk13h-gSdkJs7;ov2e-oxL-O>JGEG}3nD~E6r zTPm%(8kiIVKnjJ%gCoQB?R-;emCfl8I%3uyKQXIQzr53;t*k zOea&E7&?JVY(}TDOeVzn(%~`y31rLu8K*knFtr2KMCU$>r`O3c=} z=g$dIRQ~(oqsQzI^c2+lFJ~y2_qumK9)ttbr)o)%YQOwuPJy>N^;raJamIoyYmVW2 zYnTEqePcB|-MfGGD2J`B$4xgbD=NUaw8nLzbF z^?z%jr)oX_o?UI&#l5SHWo~@DWpkO15;hqV{fHY-P*&3|*?h?p7R6y|YHBhB5v_1o zUD>pM{uJGC1)A_bF_TIfjvY>frvtMbS5dix=zia}Ve{=DE@Z~v$*31&L_4^*Hx?aKF zr(r;N3R1^{TJ_ca=Mi{E*Z!x6&{s<-E7ZMmfOg+G@seUBA zg!d%>y0`h&V|v68IF}l*@8P{EhH&19fEF%91^$qn-14}3w&{L%H5T`NT=>-KOp#sl zr0B}$a%S&jF=6k7Lo)$YApI?&1wP`kr#pmzYgxx~pzw-6=t$t5^)>;+Guw8UhMuZd zMnd<(;Mqu1JFW~+({+jGo`SqY)APi~Fp`vx+@a_RS*c#zb~c}+$ZbmeXY-o zR{cfcd9d}v9*UvuxIiD2Wb%;)rvtTk-@P~6Mig6`pw1<2^UAQIEWzZsFQwytV+1;d zUVVv3FHRA?KT!(4dnRl0R|67_jM4^;wb&>q3eu*6igq|mId)U9Q{Ve7XD@vWR}lG5 z=UdinCD@kSq5+jdi;IhwogPlKPpX-jlJ&u~T7?|!?9Bgs`a+T06)PytJD%7;=}w@V z{!VyESfPWxD3um|OYTZpC`(g6Me1@jZHko979@(8jWK`23xMx5z>3YB0kUEemj{w3 zVnpdcWDX>M!_ztgwQh8t!RNTEqD7 z>)75sg!Jdu9&q#4VyFBkjjaNvEWH3~Kx2>mdCBF81&F!E*CB$5* z;u0#z1W$df31k9}oYfQWLP=X@GiDMYR#Hxrl^8Orif2aGW;H-Ww_Vxr5#G z8%?%odzE7rm?RmS1)%mlh^KZoRJ*d|YuH`k*I&OK#lPPsYF@LY9vO|h({&Li`||2}AE-4!n#wAS>Mg)MO&v%WOTYOex_Y8=?aT9HsQuB!5{yYe$9y{ z9P53xCbVkg*G!!v5tXqK4?B8-%*X|)i;kG`qKbm_=!6qoutLhe=~}oHA5Hq5(>H4SboD zgu|MA*I;RGRfx25T~#h|Ujer-a69BISI_;X%nB4)+6Ch-n92#F1X+oL#IgFc)(85p zH0WFp_bPGed=9rk9~E{`Lcb$I2zN-v(pcn%nsDR8{auGHnu)w${w{q=N-z2eK3*ww z9NjS21H)jngo+#3FLGI01EG5$Ze77~yFiqP19WdH>oh$niz_#m>c0i$$5KOszr#xi zHB@vtV-ANSt|hD=V`CXObVz(2L0GTR0?7xxPBDuM9TOA&kM(MBIj>?5Xk!?rLqe32 z6oNJ^YK#k_?jnh>yTm+i2Cy3R?+#-j*6E^RjKo#!?-$n-&`=MoB*Kt@lEbiDr{wsZ zVSIsxYFv24l<~jk(WcAy72YVDnxqN$9FP4rw?GAf)@$txA49t9^V_tRrbH3+P#452 zWjbLM%#=RTs&ryWps_M*&7f!F=vB0CizGlr*ZMC;GoMu2vV$=&s?q@p%DM!802%E&-FL63VOa61W)8y*fA#xorh4p5(Qa$)s?lxAUNf zGr@sH&{x#%5|qw{Gtc7%4dWD6aU*)c-n>KDizMv$lc5_e7Ja=&Jf#-Sm&$f&#MOGC|@ za2gX(R5Nh)}@JzK}s# zb1kk4^gh=7U6}O94TLcjMm=gPG?~W;Az&s}eh}r%8!d9CB>i=K?b%j8R0PlEd?@Fx z9`Ue1o#gfo7JGCvb_7t=PXEya_* ze$3~q{^#x*6P4bUcCyopxxo`9(Ja4odF;bin003rqhJP#v5HN%H{k6uuJ3R{oH^6< zi61?GoRN3cgTe9?&;H8i>B{BlqWR18e^bM1@&6;_ZVV^;fwa?U|D7LS5K%USia2Th zs=Oq~EEfHd$l1Oxs7mYSuBfaqIE7KK(P`ZuCL(z23n18TfMm#EcPfR@{Nou zU-2c4IGl8}wx(kffL6W;jNgwxzQJLqI+sGcUh(RpLUg4pf5HG9Ux zbvtP;*VY!H5jC51L3qjQ)U*$nKLQO!6iZtA^%B*v(x?$Ip!gvgG+mmL*Q6_cKT4;A zglN#>X1n@u$9NjtNFk$_7?5q$(q+?ZX^G?hHBtLv4539_Jc1Ey!zbQ1MBw~;JkNZ2 zDy`XCm)B_r3K!^V%)~#%i#`CJf;#oGhsC9vo30!Cs%@9t`bdvQd)8jFn&;^hA^|99 zPT9^I@Z&Ck5nK>gO(+S)M`TF}cV>ERH4vYni{Pcx7Rxq2B#ALR-!?$kMBPJFmvmC# zt+Z6|VVt#VWz&bX!cp}+9@zLV<6fdzp;k<{0IyyZBNC5iX{JLOhOIa}N?*_qRqyqh z-2xN*wOt^k4w($Ivs8$);JwEJYOeVQpZAx~a*OW|h^fQ3w06jFGTfM<>C}lipPO5B zM3gnV|KF1bK};)snPTNPWxsT=Y{EsTcpo4Bb0u+8O;4dYDUAAo%rJJZ7d?V9vcN|&p z!<5Q>@F}B)?X73Q(OY%Ehkp1$Bqpm3Cn?FI2`wOLLcNnw7)uzGRJLTD(eMz6n+iQ) zBIgL<@+7ZfE)tebEp7cb@Huu!5zEUsu)T^?(6K;zMhhj#X_2LOp|akC=6J2l(JBjU z2+vv@5XS4Yot%b+IF2k3cCaSP=4*ej!m{-_jTm~Z)n(CjOQ3a6mA>Wpr`{7LO71>7 z4T%il0D*)F0p4aNG7q;*8b8dVo`AljHm@O;aIy@tao_`|pjQQ$!5y#do&o%gF@-V1 zyea-&#=nH2;174OnlEQMDN!Mwp!5%8O3(WDxc%)tf&a#ZbTuh zlbRJ0ko*t93lM>R-lfk~$th<&H3={BN_CGWfOF^R&hI@bo-iQj^? z;}MaQ#wD6}ga~Ql0Sj&S@`PE{t27f_bvebi4Rpk>Nd zn+q-6uu>5O#K=0*OfrY^hw;Wq5EiKk5*OoC6RlAVtg?W!(29lD8ntgq_$rHIRezRtEK5uy^j+4(YbM(Fd*s`f{$;uB2qo)En_FYtZo z7x+%y_ZqkXjdX$|O9=DhK)fC0CXw{Es)j;sIhA-eRWTET`{^Do$DaIQXJ;nH04U30 ziIlXj7jLYJE2I8!L$34Tki9Jr^OeYp4ME;gSHk9_aDMgZIF3SPSyEk%kz#M{=?KC+ zPXNyw56OaM%l+lpjqOz!)qqaR|75(g8re(#><(w)jfW))Pi<7Cw z@dS#O0I~<2rrMvAtZG}|Q!cXgUp_z*8HN8=Z7v1spV{Ez1~-^M5fr2ddos^Y5Iv%#V# zdH?;vrG=kD--qsBaJ(IWO(-E-g!w~+mX8`$IJwP{`>c8-sYGFAb#ZfHwjtu}jh&r+ z+_4m+t%Q2nX^Nj4-w$+>YiS3m0FYqb;sif&jyTzk%p2Q!9t9PVAH%{D#05~Y@jKyUG^Dqw&vqc?e#h_p zq*J^JGuFH_nxq}0Hc*H6Jq9L3Ym@bx#DHhRnX5XM%JKgp{V*Q^^=@O1IClMM(Jw`R zh3!gM6v(!fHHV?ox74gfKOfLxv4A}MN#q*4OciGNutnkmZbc>hjSzxI`n&=tRRJ#@ zC8Sz*Pv0|N=0ltZs1S9OX*tL45^AapGw&SvKIE!{<&6%VyKv2>)|+Y9@i3}o&baDE z%z2FJ`rPxH4KNNvl1C26i6+KiM~kD(m!(lv6wXfzz(~FB9bK}Y%S|Q5rx!uf{r)x8 zik3g~0L>LJj;J;_4IDLfm@rKhCSPi?Kw7aTQq^5K#4!(EM*yxdc^!hwLvnZh&!zPL zf-`@>e>n~%hm*NWh8As7(T^6tgGEJPxWEZbyP*p9l_hXJjX#L-uCzIP-=D!_Dze!g ziZTjIrq(h>OAUtiNiLbVrQN`zz&gkPq6e=3kWsr{dH)<|?ojFs7ev+6)Ql_qJ4b&a z-u@_-{pq}6an4v>`?ERLs|=*#*h9($%h}f-!HsQj()L!W{Rl*45CVys%*~tB_T@Go z%67NIat_cED7h~m`hP7G`+Uk7pwlUJ6N+^}#*dS+|$>~lrGY`LpHr<9+ z)YNBc=Eg33UgcPl6huV)$^L)|XAlF3!w~@T-{bY55tWOnsieM92l^}jMiH?9$4Eq* z^ zwabDjd^L^z+m_bIl2cb@6s0`i#7hTd+G+_)0h_=)Tf=IAwYv90*=ak!ndkoIX|(Ql zGA9k3-up{NHp+j$g@Gi)`$;N9*@(drXN$`u<)%NA-z_#w2Vmp6UfdP@d_*+BQ&3H? zzRKm&%!wq7xfS-`Rw~a8qWAJgk%naSDs~%P7f%P%4F%Yj)kYfE{YzR&=2%*S3>|Pr zOfzc}vUR1H!_6!H6O9{_4og_j{P*t+)3ZjWS&3N=ccW+5TM3(j3F~o!1>Ahw%!v+x zq8?|`l_d4#|8VsY!o>)X~AM-}YGo%zQ>L{T=^2<2PeF9D$v zAVWYx5<(C(j1u?$&2B*|QRS119?X&hgUj_+B(|q5KmEmjy6qMu3cMGp>hcB%_BEvo3KH~WDWZNy+F)5@!b|UTdz1!anFAzdUO1j)J)e4j0&LUWjLEF2VfEyjV(C6zG_9*Fyg#N) zln{gyf95yy&NM?1G zc|;c}0fY_VAd4|UHf0NZ7@Z-Aqr`jK8^Yl?d@;Kq+qN>-iPqfB&#{i?PGOP!c`3bK zeVxsm!7BZ7Ka?5#RLG$gaJJDwY6P;}$?ojMQFx5+KoOz29hF}xdScsKE0+t{y1|{7 z6V}y5Z;EErZ1nju0ISsLlC!}~+qUZn%1_UuSljs$dzI(9*S@!*;GarFas|}sMkXAi zvmQXh!jKgm6!MMU+^uKUO|6^QnZAeNl-#h1vE!+Il1hZJ>0hLhHsrejAXiG{@r9`? z6+d4B|i5qcT~QAHxN zDTt%;KnU1*k7V*PnukIqCTJ3q z&1gbg`7(udbRFe*)op40^CYineWigh8^29nKJ8y*@QBqdF(%QV>jkQMKaYsKe{RCA zxT`QL<`p(LP|R^K#p4GHq6bxq<%tcZ_ZM%p?Fu`(*>Z(%Vg6A&{?sm3u^OCruV2?X2n(6Lm z+uKj9!JWfc9_amT`|6Ry3D#tV>)q#XCtt;zb@+|etZ?Eq^bMpRFKW&l+s8z=+h+tI zoJ$HM8&6mw&dU5Nn1m=FJIQF^o|?3B=|f-9lZ!6?@&a@WP(VW{ZamCF znvr;8{h=L6?+#C{r&-{{kU*E;+`S#!s6){o;>@|FcY$Y8he0DoENT?~;{zW1gR9zi zrK+T}HAnux}g^LL}rPBsq14EUzNWq2AvnZp!kE&1){8EXzhBDArG z&|9wUw`W;w%;6!>{oyYsW6N>r(T6J+k^M+jt^$u?FLUlFHzxS(j=I#|nv>O7>76Qq zkaXSk<*eI{@7bHCooz6_i(w>6K|ao@@`IB2kJ^q`9zgl`;ZgR?u{!IDzke}@2%L~; zD@z-3|1{YeIUN^CG?|Q;FPpz^J|A+%N`SavF}<2udCAER-(g7m@;AZI3;{OoEbX*XMba)4D~*`1O;N< zp={VJ(i-36MTai}Fr)ge5CiAfTC)7tg$N7c!f>g!oBcj6LQ&U_Y#5%`PkaXWDr4g> z!E68`2~_`x%6!;tR@uCt`o9@wiZ{*VO{AFq4)r`PBEarXG##@O{2CJMbeBBR@aXz~ zp8T5azYF#*{VzQJ^;HvJgVsv01>uT!hA?E3eEaaes^5>6tl z-9S1OatQpBmX@X{qY@}d$89n9_1B{<1E#b-3MW<_K~z~+9H)-PYRJ}0K8|J=lK60u zc`{JMy0f$G;4+Zj`jZcIi_*~d!K|oYE#?~SJ@mOJvF$veP@>J0Sr4^gy3U7f?S&sF z&Gv2*#}oW!>b>{8m;XY#EqyRykMk{u1D5}TKT2+?YPRr(%p1KdALpLQ^cX^Jl^~o2 z(pepZ6jLU0{PaMd8)MVthhT#e;N>Df5c%B&F)tN!PxC7a7DDttOH&)6@M%eZTil$r z)kl#1pR*%6sgU`1ry&E7wb(Rt3!P{x9icIV=aOVs3-RBM%%Ykag)z;6HFpiJFrigQ z=U3qZJ_3SW^)j;60{_$l5+My@M3zd3`I5wN==Wh~w_WTdod9JDSZW2IiH0^eU3M+;TmLOtZJT~RWOpk35nB80{>4yI+q zG5y|*bv&J~XS+>#+13uH_UbfI1(!eN!~+5VVU~matV zlNKqmlyqjB*Sdiu*FT}7Z^>|VS1RO4$#CzCq;;U+)*%JKkNX^h=_~0vOTvGtW`E$j z%YVzKV}BGixa<0ms#j~j?KUeu9|HUM<23xc(F>$`uQ#JfjD-{nV3W1}8c=3oZH9e3S@+rB(h&$I^146^ ziR%{#I%EAm1|)cRr`H`qY0u(djRF=cqZ=ixo~%i`1?cm&K) zVZCxZ_`&Z{h{#Kx^PrfcWToRwBVrV8v;eFE!dGnYY!m%o<70*>rfi*u$?LdzsO5tZ z4Q2`R;B{-{D7y1&s^-RD|FMMBW^G(F1TrHvwEcpv*nvMXm#x03We3 zVraU}jNI4bVk+;}TT2^8Sb14 z0#j%U7)*0@r3z)+_3;P`NEkk0OOc>+jlmfQC90LPNu&O4SmcHekH!~-KgxAexDLVA z8%8<`y5zcT%RL7+4{ab2`7^xjJpDq`=^jqjgij$n)HS0deA#BU{=-R9i8t(oMUXo5 zyQ4I3|8OVO+53Go3}=B2=A)QSCtcFbjZ&H2fh-B0;(J4Wb+T6R;{3efdD%=FzZZwE z@5Em?7;m|-&iFB*8BElr@+linr=ucv!tlZC2je(VCPL8~1C~vHHI@V!Rl|W(%%hOK z1kSrAhn#)X+(L;8V%T0K>7nfP9VnVcSvpa-h&1-!`F0zkltPq71Ro?qrBlTX4B$Lx z`IR*9iKCjAZ9lMQMk9a;Hy)UE$= zUJ2}4a4@H5?|eN1N-y3H7#V|;f{!RW%gaBUj0%%Rwb~042FNonKmjM=QgCL)Bqb!}t5fLJn@{!f>M)*A0+{M~`(_0;sey)GSm_EgJ z*!+|cSw8#c=AYdvKRd}zvy1A06?z0^yi}0^7SeTef7)PPR$n8LVBC?wt7IFRqX?wy zWF^`%2d~C%gpzm|l&SIv7l;X|pI=%Di4pN~o#R4hV+sEpagvyDtVT!2vEpEDOob?Sf)sj?pk|(+1 zH?G+W8cdqj+AZE{V=|V>QD)0bwNdqrtWsei+GE02!l-ZOKM_eZ^MO$klPIQ?6vXmB zUS#P)K2BZ;M;a!)|;>!&o(mCU#nJYPPh5)C1|UT z2+v;mAM)zPsM(Ex&bhV`7)W|zlWb|sV~e;v_3L9rTyZA~{PzuOtJt!ap#5P)5eB90 z$Ta-4nwI}DXvH+7O#*dXvcm${d}Ya7<9LlE%$r-4ez87FFKmdTs8Sy=^Kk7C)K7{6bjb4;6~7-%8ixpOU$lZ^+9fNcgZ|$S$3T>;~Ilmko#Z z;rf`rVhzmaV}p^_V!}r)T!g~i66*dd_{I%ltHz;jW;&Uw=}w%cZu!2XGya=GL7C#a zh=*q-!o$T02o{XBr$R^%580Qt`^hxU*9c@UfSK&P)STMjUP z;&-3}dD+^fZP3|pl=TW7Nf!Ek3W0@)z`Gznw0s7@`h2xqb=Fo9BR%~Ca@SyhWS>{09P7`i8Y3aCs4N!#2JkZUC~#oP~Z%aGd(@+k9#ER zHd_*=_BNKbddDN)3L2{s8}!3=GUC4JBDf(zRfTqBq=1 z(LKVzIVYy(woXVCK1^vIPTPngPVop_=V#(S1Wd}H6s^7Hgvro)x4XMXvaM420&eyW zityZfcMt5S>n*8-YxgI`OvFIh(Tx%#PTHg}AL?{&hY`2jIucM=;P_qnjb?QSB2$Fc;ddIT5a#X zZnl)$Q2Dk~8TY}%IQn96g(PZ2WWnM992f|yLr1Ap&-l3p_tzlvnmm=71Qf`GLOj_-Y#)QVsXPddFamyS7NM4|1VAzEj1%p&~~;mVYGVc~E3 z;URh-1x$zYrOF+tnRjH|U8AFbR`M+iEUTRehsl051W&)~`d!>sUzI~0MF*iHRd~rv zp~LbLiljqbco+YpM*lohNo-E=K`uSW2p^K;$yr#*qsq=Mgt4m7!y6G42LV<;{L94V z^ZljeAmt~Hec}~&vO7H7uRf7ew=LHwQ1(RA^PpExI!a^=_l%#WmaL!mQovFDc@Wh=y z=^8=J-jy}AgSaO?Nl+;kQcW|)1#gR+$W=+16vie?$xlK=gO4)dz`mdjh#8?wDprW3!g$&*NGJM z5~0N7D*guzc{_`79BT?Mq|1oa+%*K`ecLJMvg^rY_4UDQx+@m^F7Q2)Tb(_B5zHgO z>HAZAfO)QOiaeGW0ORU8F7pm z=ikO8mp_ra!-=eW?F0XPdC)KdG)%Y&gy=rU%=S#1J17a$Nzh&#e=l97i;rj0|!)iGw?Iq`q@0Q#SITk3wgl14<$)@OcVyaP=>SuRWX2S2nTd>uvl6>+>1quZA&UHI|R;i}P>FWwA@$$zqBm zb)~t#{_sYEQ}*mgc6H$3%VW^80G(x&K7{upq1CwytVDgBmG|Cuew7-mrvdBagV6V3 zUSGow5BMLratXV6uR5IW8EaY(bNeE+4$@?xI%z;avUZ*5D+%s>Cr7aT;O-6e{tPd3 zptvf^KfXZ)!WCF>0|+W_1BNOz6@jSr7eydSL)we^)$zk|^Odisv&sEU#rIH}lWlAK z3JO*)83;&q7OcjWuWG>p4Sb=0EARru`6jD4thRKU9$p-eId$020tSaUZ-$py+-34= zB!rRm4b-JKaK(VMyAy(F0!{=hbJmv`kU}VvI)FJHxMZ3MSt3_*hJ%A+a9i}JMu@nd zU_O@rat)3$$^JWTx^+tRLTTC9KXn(mv$LQ4QfElfIII$gk|`ojcSc;z#_2)`Pl z0k9M=+KxY(sOvsA5GjP*-0iF{?g-oVTWdxz#{Pp3t8zdWG4(W8Uen_?vR+0IauhK0 z?qx-z5Gt*5@WKUEl`-5lX@2KZ%%rRnrO-(&4$_j5cDR*;c>jp|UN_VW&x>Ni@(&?VYn}6{s}vaE{K81pXd&5LOG)Phwi$2$N-er5;=T1;dYnQg;@A zNo0UeH#)uL`#~RkPdxka>(Fj%b0H!t!3(rb(e1K0D7bh{%xzoy#VJ?2vNsz1O~Of+ zHDX^h8S_~TGs`OfUl*jeNWW;~S0wgf7ZRmOVd*lgAJypcnOsy(jfemG7gw}}WjFGY zZrEbX8Hqi^x09QB3|)>k$*q{v)r_gfOlF_i*iOjgCtCDnAQX*%XCa*0=9VFp*+d5B zTMw#V-3S{!Ibm_@Sw6V#t2~5=k#*2{t+={loETuAdK0uR3J(48xhD$i?fvr8)@%a| z?^M#m_GjHnNxh)>{XZ+34v>j@1f-afL0@eO)_;cU!%5+HWl?xOP zr?muis;IFpf8+|pcliLkg?h(5ODJXV?^%FTNe&RIP_&;GhBdt1AK5Gkcx@bii4Gc* zxZ&a|0Vg`~JM-1?>!a6fai`8KW#B@IDeF3K+J_8Q zHr6WoWU^;SmT)W^8z(PmoIZfU98vVK99JFGJW3OJAEwLK75p!Gpti}VRE)^oHeEIC z(qulMj?stwI~;eOI6JTBjr%%k@=x1X#egljwn#Z8OH`e5J+bCzloMX!PdyF+nrwl} z6hViBFe%JLJZC}#-rb*c_)P>!Hg(IIWaxX5C~Uw%Cq=<9Rlo>TV4Ig$U8@!AY{+>C zjQP9G&F(<;TFw#r3~3;%o8We18oISbxupaXfl)(sx&7~$^M}%3NV5ZGokZAMF3{uQ z0Rmp}HX>3rDK(_Ou4V?~XjB@gwkv2EB>@=1ZMCT}4lEZQ7z#KU15aUri~58wPTL?V z)29r}j=ixqx9$IJAU|Ie8MwZxHrz6wB|*!iAn?bl*`Q>wEL$c|DeMShN_0ahVHX$n z%dW4_zRQ-q*riY>jHevOsq7??Lcdct=VKYLd*{+y({iO?wT5_?TPi4dzWdSKX$H5# zzLStju-NT_Ru8B}I{g@*$Fu7i3fR!b*KnL4qAKzEF3TLC%xRmvM+1tn0#y#ZR>sd-((ACd&laKNgOQ?X@pL1P%@nO-jIGG-7}Fz^ zZ}T8sy(JO9=lvs@NV6Bi)yFxq20^?KN4ffp!Rb#q)&2uRGr8}Wkhx}pea2UO5hDG< zsqA1gl)c!~!0{udPE$JdDg99DiKP5hmbOJVqr*mv)y)+JKZDY&z<{ zX`Z4)9@_&+qc?dCx~4j97z2=448BvW?yO@K(oDTfJINls6j zikwO*sBOeQ$pOEAd?Ha9FR){hPeM{Wh0+b2d{;^qPF_i)@Ig(Cz=45%b$GhEG@*|Y z;pm%;Ta?cH9;Ho-l9{6EJ$o}GPhh)FGo<$4a$=PKS}?A=N~=+s(&y^m55N@bi2PDh zJ5v7*q3Zp%QHS&Coeak5Dc&`x$ZUS}5q(~_?_`ZH!0Nn%mOfLSbVcgIRPfU}?h-U1 zbYh9B6D`B#9(?WF4s@e*;u0JQM@T|D=&{g-xZ-jI+<1taIdNKE6aBBIXUzE?d|a94 zAKndshk?MfW^0o9aD*HV2<9IRGI$pdW`y=&k?91ql`0;&goA9hY-v;V6JX#*YHG-_ zf|q2!t+5MEMSGfn4fJq{b*-Emywr`3rc;YnG0`|*ypy%LrD93;AHd-qs_%dS^d#Ny z34iJ0Rv04n!R{SHFX6|e=u}D*-!#B^xNB@O^Q}OJZ^yr(=3aRFYurL*E`Om;uOWSd zG>e$XpL=MGTD!_uDPJ$O*uR0G=k(9;ermiUdhTlub+QSI-7$I~-3&CIDx%XQxcyZc z35DCV+};hAXx1y5k9Mj;J$Q^whh6LqqoL~vzs3bj7JoQFBJ=X{LPzYMZfwN|@`t~D z*%QTb?c0|ObeZjGr`gxFRzgC)^hBBHcD^Mk3gqKGW9w;Le2hIwS}wdrBb1`eI3EiO zI+j4|(@jPjH$XxjC%u945xWL=H%-ylF}Z_0g;iZs`D4Hu$}v62_LvFWyM4Ltt-|us z#v1F{chjdscIu~*WKCe<{RY(o=%)(Ms z#UM?Ug>H-xAR0Lvf11VNySklb3}~~}>)H4Z*vhW~=0i-HD~(~?_KhTldsrHPHU9Oz zdGqmSw8bxBjVmxD8bjINt#?G$X-_wuYc=evd^^(A-v!V+!CLGgl!?a=r$K(e4foa~ z{uAH#psv2YmD^oCq=4E%4Bt$aEAF&(M6~D7Pbmk`g+i;;5@Jf`D(9URep)K04PPzH zLmLl%CrS!iR)2W*1yK5T%Ilbn4)h=O?;jO$D}AFYY^M_e8iK7)lYL=c zJ|`{q@_iqC>#WPxeBeBPvE2y+>4fiJmd809hT*1FZg9R0M1%w$Z?4B?*1VB()aZwu zzFPjKOEP_mZZzbvM}j3;2@Cst21D8WBKE%Sft7W^e{t zS#&rGzAvGt@wim@PAdA&mQc%(pNr8|6TptO{hKk{pHZjFU!rPA z{0F4+4fw8M)*59`oIrz5$zsYeK}V8x;$^%7+3aJ(wbbk_SJ3u(>Sz2?d(s76K@hKm zT%D|qPb1wO8U3I@AE(-YhgUsNN+QVQKVqzH-~Gv&m&hEcZ(e*UM**p;&NR&m)^jkk zuo^3lh?U>jL|D00V|=9&V!C&zPLurwz!=+PF<1C$c;=J?{*b>B3Gb``__wmQo#y^|FRt;X`bWnl|J!BPWl!9vYgw7_6SRSfMB$yB zEhae%D9#Q_?)~%=-+=w(c;|Im|5%8NP>2sBbP8KUQ3IvJ=7Y=Z6kt7W*g`vJl55`km z1HdSmN@D`3rxj6Z$dIT99jf9cWiCttMul`A!Tx1LMEoBvK=%9O2&@m>w5Z7>08wsi zL$T0`%$TR>0>qAxC1Yq@U;`0e&piG0#+eP%!3+B}L0j{%GqBi!!9^<3)G|C{t#~d% z0x~Lf_tErKgkI(3idtwuf{_ZPD8j{*o}%Rg^UrbZ_KVDm03X zO|e@3M!)S>$g%T$oG1bHOssDC@+NMQlp+Ddjwf`P_ARfsl@6P6eu12u?ol6aWNdSs z(=nUgQ@uLOUYn!IR$FV2S+(m|k(lMeTgSkN1S#?}9FjyfEC>?i&@oaw^KR%Le2J}SaenZ zF5&m09Zup2*os+94$J+yoHd@@_~$@x=^p$LS_hc@aH0Vbc(X+ba1Xju-C%415BSU% zwpV5__F+=O(wh>3!5G3gazyofl9^zK5up8>e9=3)$sM#9e&vkuz0usZ#IrG;dX-*C zhuL|EDXoUVVCNiqtOO9GfzV+Xdd@CXF6l0hJ(zais6e3r@ay>kT40sMum&yil3H?)X&&soo{Jj9ODT0|t_I&QO6U11_Gg$maxjS( z!K%pNj;f)ef^3suol$-K0pa|5RSll)o7&L?eh;cGGj&~TqN(LFh8ZBlk_Jrcy1&#{ z+(^e~$f@AYzz#kl(>ff{iZwbbAC%sXz&UEO7L_!RZ+ng*&A_oxc_Uui2&g4;g|oCe z!-a3??99<+wY*V643zT<|M9gnlp|*B1KGym#=1+OhPn8+CXBSz;%xc4ub5W-{nwh) zr}~^UQiZA zC#}sZbB^X4f1*}rBErrmLYQOc+;|)mo2oRE>I)xpmX}`qQs1Yd>}*^hRAM?MgjdaHp2kZyw%;MuyaV0sEH9NZpA)%*M$z}8`^ z!ablh)AQ`z`G)F2voo0Q#D--B4GXnO2-rMhhuTd9L`Q+1 z{#_y3MjP|^cVpS@$tM6DpV|+}HHU4M`_H)mVXfai&n{`9W|J*EMmbsU44RRew8Zbi z^Q?#wq*mkPN))!A3O-g9JVj0(SvQ4F(_BVmq;ViOWvYz0hbyOnUM+swR6BFJQz7Qr z*$ycr@geC19LReizIteo-BdFdIM#~)r&s7oUQt@Ve%dm^)MPepfK<+&HfRKe=|BR_ zogm6f^16#MLy{E1fRjEgWE&e>LLGY^7Cq48d%BSRFVwJ!d75&#FQ{=dRs5bYG{dYgFL+O{!x63!wg3ZbPKaS@$ zxc~7ZGnPKSJQupUo^ssSbhoxjsjp{-7nD}w;e%RgI4dOhU9jo;vYC91G<L{tAZ@g`*bU z=V7gbA&9oaLEN~V?>s(0h3v$Qr33Ko+2 z6xX3*kwFqS0HX3Im=rtFFdj((QX3rg{OKd2x$WkvxXwuLHi}5G1d|f1WyJj&d^yf*i`e{G*zsP#0=*YS* zTsZF7wr$(C(H%P-c5K_WZ9D1Mte}IAU2)Q}|9ZbM&VMe>OZLSlh)7n-Li1Fi_3oZw zuAlg2nbF&?oPJ;g6JP>;R{M^%4&onY0Q0X2oET5Py>risCqKkj7gl4jM>;?-KewaZ zxUk04=vi0|fY4Sv5}}wnSzI_Lq`JnMa4VAUPFQqnjh}I=m(YtQ;%~S#OtPeJ4wo(V zn?Rbs+{oBQsV940Dw(vY8lzr2Vurpu-#!>s9efBH30|U z%HK#XvL$ERlF~jaL;U?t4;qHzfymR!c&{1Y{MM97B|n4U`*a6nm4I0u!&p&!`X~R` zZaoD_tNTz4R*B{lb3Ccurs1$VVX>2NrN}cf*EY9Cr0+i*ab7t>fM}m-zVnkDV=ZFs*Yh@U-c3Q5~hJ1IY4o@>JTc39`6_HCybNEOU&?Ts+||4{E*k{u6|>6*yL>~s`p;IXG^zyY4t9gWieENt?jeZm5in#J1e zEfeJUw{VQS`S{ls%ej;XI5LTz{a3sHY}hkVq91%HOB#}fQZR|rLj1S` zF`=XXH|GY4DG>9#fl&DQarEPv4~!BZ1d3Z>-mAF*B*RFflj~0gjmY;Qibufm1P}Bk z^LiIR$oJHP5d;vFrY!gCr8vqS#Hu*enF8dQCRvOI7X~pL1NKv9z54s?)>gZHA+@zu z`-h^2Ob9(;4paA%L+M9z*j=L;J}5;ioyVl4;2`CL9o>2#wkhjc*e=}WkyWN5sRfh(QECA zg7PZ=@IJjG7-Qa{+C{{ns^kQ%hOPK*TL>i)B#_#*D zt)cM*lI#APA%r(yVI}ehMtTkmrS58joEDv)>A6M%$`$+1XpK)!(I8}G?+1&KKnDTyC z03|`++MgDseB({puZ)M+?=eC{OEs?~ z#4TLH-DnT&SajWbV=k&!5fcOFmLwX9Mr1Jrfm9ND{-l3vioM7SU0!>h3X@ z63%d^hx%EIFCOc!Y@CC8%u!!8^OYCZb}Kj*>kwqk9|;4A3p^XD9HS=m8`-19x`UOW zNaVuXI`!wqQC>CLvk-h6;m8!Ugy3JXGxmFo)e@I6LSZl4WMEir5On`|efTP>_`GDR z*cPPVdujGI;z9>eUT?&(^h1ZmTpv-$Q4xwcw!)?I6rA3sQHqV23IoYK;kNy3H(*DK zac9hTS6y+b5IjCU9aiXJZTR(<0#7}ea>T2EX!6iDkH2#Z}E}O_WF*8G}6(@9%6j-|zEqVUdb)=SqH>!;gM4!gry+ zF7hev*cxTxee+G1SYA*iQYO=(AJPU7kid*tVHW2^3qQr&<%Q;qx0VE%3|HIQviTL@ z)t1_-HRvbrdN=1bGND5xp{bPK#GLzw%}<0%CGAE+C{DrL!7Op$4DR&U-S)cl+0{iQ z9Xz#|zfe)(qwsozAzJ{OcxzBmr$NnuDxxYK1Vh__nopFm6qOYO->cjhE0o>6&kRal z)TpfDKq$Kth*V={TY99-=#k`oN~k*t(jduAD(;f1+Z4pAk&>BhDC$~X8jGA4S=q&a zdv_fgQjh9c27zN)0NslQmchs>6PXaWlHyk*_UwsiOE(h)xJs)fEldTeIxEv@dG8=%F!17tClp@1+6BpjYFDzk>so( z;oRl2Mt?sYDy$@}Km~g7Wv1c@KJz@W?TjT1AyOWf~8^sw_hik@AW$lkx;|0 zW?bVB57|~5fXT6vZaMe{ow3Ci{^s3Pi0rrK#AI?zElC$G3T+mHkkh3n341My^tm4} zU9^SLapZXMW*SB`)iSFGDRBj4x&&f60pIqcSgY094%tIyB6|9oz?CRuSj7knuB=35 z$VrPyOLRGPS2AXCex2Efh&ES;chy_SQ>loKmoKovWqodv<#03m-A%6$I1&f6Gfh6x zFYv+w41^{QCE+TqQ=`B@0UjF=-g;#57IlI_d>}KtYIG=IGi~!c4cJ1I3+V)-#Fr81 zbvlQ0K3Dp#C5g}s*U0p!pMyiuJOwFDM0|f5y1yk)X8Td<`R^R{zD3R!#Xu086muyw zcaMJMttcs5fcM8I#VPF?Ag~3XLT=^3PQlL!esJF3yP8NUa4>F<{(U%C)i6j97e<*( za$2qHICw7U4}*3&VG~#i(ucA46FMGSK^kw+eJb#C<-cyB&ik6V;_4y7Nez~TDu#XG z3jF|=6~wE{+~q^?^TiK%yVvUNym52w@niK0VcV#BpFhQ?;5~~z8IsPp%@^5>>zgHt zofnOFkZdoVWox>tYTa3AdZ}-jzy zX9M5+v9Zd~&<8`5w^b`C?_8)i zZSFG9Pa_d@zp^MrGHc2SWbqo!9yfBF{-^bw6I=#m@XrUJgw2U_zw{^V_eapa^3$#> zqK~O?sa7D)Eh$KjPa;DK&U{Wh&~OeQM-JQDu3DXi7XbW`eW*_AkPvQ1kg-`w=C%;R16{x7yi*Pi~Hd2?S@O6MPtk0Qdf zswIe%qdr~&@^Q%L7Ai!O8xJaHkR92-p(Dqyu}!+V3}@qwlqUt^sl;J*rNfi^tQB7+8Th|ZmmjDi1YdzA1c)VTs0rhE zg&2()SbO>r8{{wYV6ra5Am#13bR0gHb0^8o6;^`>1ChR9v9xL`-wH>X4OD#Q4i!Q? z{C$pJ=S$QE$r|q2ddb$+It4CbQCA-txZ!x8hLvcFuWpAqS7$N8pF_2S81X`GQB^51 z&YSh)G}QxsXKidV4}!S-Ic7-=HEGG8#D9h~f!0bRyyc9OP5PKf|E5W)J7PKJ1PPkV zgZUiM1iE1(_?n<4k)+F=KD)IFwjZ?4<2qvBLQ1SptQRn+0rpx}fpd&J9WbuhCpaQ3 zT>+r4B&%wvgPl&s^aRqXbKHYbOwobXj?LA|Lr|R{w_EB$jfF8LDH6{&6IWovP zxFB2yU3F_yMH9ijlRKJTLv)fopSG^{3_bXn7nU`tdfuh0g;K%uGOzOEdxm90Qma6Y zAL7KnE7T@`V6#?N!L8qeQO6O*Ak}D-W)Kg6lFm?r0!i4iZ*hR$-+|W(E!wDPhYs%# zNS*(Rr*Dr%3?WV;*8qPKX8nXZ{CJ;6zY@=w8V>etG8za8h=l0L!*th$h@;p)1C17p z4>_D%3svL~{`v&OY1?u*I}=l(|4Wm?WcpUTZjTk{4xhv}VBbA2r{t;X}FZ9h4(cCGu~Af+soLofNn+ zWX^Klp`l$w-z{V59QdE|>hr~FzVF`@!!^O&Hv_)Ap$`<20HA=}$eLnniF|D@(bJo=LsCxkf5|Pa2h2XuZ3}?I5u=(#hC{DGNx354ZkU5jIVZy>@-dC3HM^$`A zukLu~H2u|5l4;izonzILK0Pq6Y58sD+U+vj-N4Ay5gV|nzMKLo119t>2;kweWfIc` zYN2CZkw*ErbT<@;qFbuo0kUxifG#;J0zD79fp32UAc2QMARWKTri;7_5(1+H4HX}R zYXEMpmgF*%$w4lk+3hC-L%7S<^th&08zt|$;ry>&L+Z1nHXwk;0o-+JS#B+2>grQ8 zFeqO|2PC#;Giwl9=(gl)(Lu7NSN@!fDvYBJG7s0ELqv$5E)hu?{r$9+P!cbQf1chD zZWf~&BFCuPd-%yUo&H&Fe<@JY?r}BFlk537SYowJfGrM7i(ic{2Q@_2IilJ@bkiJ@ z?65oP)v&v;9w4R7zzJN*v8!qYKy$6Mm0J#5KuZM=BcoTN&m zrx_IW+*UIZF>UyNYM>kx>qSSLK#Ud@zIMGZ96_84I;8b4NkqzDoBtCN8oE93AgFC< zct9o|I}alfY64BPVyod+huICBy7&3ivy9Vg&4(7}QFi+}NP13M?$7$4zQuiT=d6>Y z!YIU1R45L2E*zl7jjZ+FRv*DO&n*5O@nk+_-*8(G)x}xYum}a zR1zRk16<>@(0v~Cy;~NdHp)F{MkVw8%A$-H;y?76Pr`~^yqcugc36jSV4!)v9LLb- zQ-t%PpPqZKyu4AjdBvHKgwFPaL)0S@YJ#mEtS%4khSo6s905AZ7-1_!s|t$XOFmqp zF&Y|oow4sN4+9Nk6g#9x9V4hju_hY89Fbw@LljSIGE&*3+t-a%m$L*UU@YXvI*hdKR8Z0DUqw;}t7kHv;Ppk6o*d+!qOX=5`izRkArcnKQS9s^^X z)9i143feLkHOQuMrhwsWtXU=JZoFWmYs z@;_-f?5J*8cIT~A1%VaD-)`T|kCIEq`t2sqOe{n@CTs;Rz`ILN5dlgOW`PbVUgLnZ z@1WxWjB603aRgZ2)E5Yi-l+KO2+XHKm>(2Voy^G@3q&7G`)4v=-y?28JsT`gW} zFC3{U`ewWLBxQoxf~$iwUc8#$@cro+A#bC8@8Z~nWxd2<$T3(RHA*(s1_xLjZp|8M z$BlGDWnPNt;J5em+C?)I&noV=iglpekYC`lpqEQN1y(NV}7cs$MQd>rLEyp-uDMB9Rs)XwOcdha`nn;Z%Rgp*<>|y z(*3k8B3Qw=#;DXw{QkGC>-XV5CH}w&6u}+xWnT(vsYxHq=F+AaU1uoNX0#SRz~!ij zh|j~H6YXAib#CIs?{QbBJ|tcv2$wJ@<0OIDu;i(cgZuiak!*@Nh-Y&A*kjA9B~vF7 zO${g{ALmNGuM32n+Bzl|kTU;usIC>w?4L=9HQC!vM#@f4@k;nrTyjD6@J2b(r25d#lM2P^_7+aFAU)Rh=HV-gd9P&|R@p+9qVmh@Kc!Ag| zu(a5PL!-~-(v-gbj7HCN*u4S-_Awd7+}J~gJ{R#z zDtvgt$tR(Z{nRFf4H>hNDZ+1jB77NDDM>Ea7AK{rS6vO@y_fYQo4qz2b8~YI=I#;r z_~g~q{m??KJ%m-kQj}Gqu*hgdvM5H>m+tfSabUTf^H6Ie|ELX|niHsYS$e}9pj#7It(f&zY(@VSavmUglirl=EIyxjjgzK~-v9GcoTbVUBGI|MfC zgu?_w4+SJ_gS3NmQu@xpJ8gUiw38sEPpl#=IE@eyaB_L0c+zhgj`<3MM8>ow_^y+t zSRz-N{M!FEUAipu=i8K~Lite~3x6ruI7Pmqs5(|Txh$1ixy|*z8yoOgJ3=@Ht3nHN z1os_3c*D0#+_kEf4IBq$N0Ex7H~U?gVK8t zFJO7CugD;C{qsNMqTYSf!}+&W?ytXW-v~W-T~ec3h)D*f7BthT%X^Lz3lZU*=oxE> z`HG>RM4aZI1+IHt)}4gU(nI|H*K2J5cfMG)T3*C&VcmP#ayqQQn|a#k`;vF7OyO|G^=Km*fdl2lv} zD9H;KgtM@;6wzI7NtuIhY>N*g1&$Xq934NqrbzD$G0tsAPBYA`2bc_Bp)D3W$ZJp7 z$pL&O(0rO5{>y~h5%Qm3Tb9X5rRQRNPEwRC9G7*;57FH>)`QXiGs@v&I8Y$s4?oJQ znrf#~H+R3XJHd=;09gg8ZgFmmUi_cDQ<|OD!g$G3i25-9yfE!k^orE+@-pZDB;ks4cG%;q>Jx)Qw3&jdX-S*e zW2Mi0;eNeuXiPl18aK#c{5q4PG0}J7;4t93?!5yD@D4QJuhb(;&lI!Uj^K#O*uJR= z5v=remT>8;u3n!4UlHo@tF=wt6shVFfzelHCq~Y)nq%t_K;~Y?O>9r<+M(C8RJ|Ao zNLPBH6qU{yIK}_+0@w?`VM08D>ZKO*2`kVcl6>Xyp@rDnCyCNsVFo*0_B$tkryEEq zf()`Q{sF=?T))8rE`4E&^pE@6Bd!E}WNz0UKdN8Ly`(mBtIyy!7>^XBEM4UFswK^A zxk;z_m*97KiTkWE!)XWAES6)frI*&4tS`?8eMmrKF!gyQJ1FlSIv~uI39FhSQe;+h?Hk=S&v~b&?KWu~%_ME5PN&fvdYrL0lJHv)P zSA+Cq@%F66Woq<+-|1REv$OHfv--bg16B<@7OtxP!$y1lH)$IK)r{|5CL+@M-!J=ICZ`*Qg05KX65e-+gVV z2MY@s&VvzYno^x=Z#@O9`Jk{WO#QU=)T-z2QaNGu3YVKnq=F4jP60=S6jN&`H0`#O z8gUX+MT{(7bwY|Hl}3ev#*>4TMV7$LBf}i0&00y|vYzc$_aw}Od-r0x-bRQ`z=r-4MXcXP~sf9<# zLe`nB#3vw3`_$I1MRvn00#qD>-c)xv3wRdl$CKsx&%FTO92M1 zi<(zKR>VtuJ}dGfu#ad8Ce!jpDFf0r#xwSKa>3P}Eh&_%D;p8=wZ-T%w2!W2h1-2C zNM-fR_xBI-F&oESVQk-HsD8N}oG)iHXFCKk{b8%MjV;;#rpO+q@@A?elWrCZ7#%Wo zzcUhkbdVnW3{eBXxhVUu`nNoNeqPv-FjiV$+Xq>2Y}F?wufN0GBV!o#-uu>WI`O=l z#!}yoUzeW^X zcPo>8{nHBq{W>rD=O=#UJAH=&4E7tFGzIh1A#UvFxhVQk@@3F81sNuhy;&8Hy=)$z zxfhxN3p~o5yEQ(p7q3a^|Il*>*Sjn&_q>86O{H&kzq`HPj4AB6OjeWl=@@p{E?j&h zi1=SZQczfD3E_liNtLVSg1JH$RTrIcu_-I4Yh;i_6@%r~S=_g#7CnQ$whcIZRAMhLu#yZ$C<|%ghw;Xi0=E%UzF>fCKdvMR$OhQj7}DyJ5@kr7 z(@dx?vH{R@&515{Yxq%4r-*q>kAh39uG(kSxp(H%25O7ug6)?!^^36>wGDr64ku7w zhhZh+y1_tICMRm8W7&M9EE-@rZ7{H8Tew_n*!3yW@4oL+H{Q~}!{#wY5p>Q%h88T% z5T8cYfCR9fK_8sKF+Pl`d?Cg+i7YQReRS|CNw1`Ra2>WXRvHV=nwRIP(xff?tt&sT zw^T?I?V1F^Bf4d8TBtpYVP>|rQaLH4sBUl}Wvoe8;qyoW)#da*Xm;!7=h$Cn(w4#)HEM^^O}iS(ZENYq)|+q=lC z>c5(tvo=d{<`D08TNg$z4B__qj&^+K!RB6pi8b}1Qq8#bpD`13cyc&;X0{dT}MhAK8T{gPd1p>V1h3SwkQr=^A?wxz{)Qqp?ao zD5n&A3~^m81sD4ox*;g6{r1^NB4{1r-$91brx2L=yF0&FVj1F z$4~*^sRhaRb;HU`W06IggV`SFhSZc%EuN`UnDmDvg7-F*XCGJ+FIuOb^t8)HA*yvq zOjH#s55McSy4AU()9<}Kb<)+o6w$A!ZHx~vqQ-fB$v+OreIvo~aP#PADVT>(Gc%aTtYp~a4|W@+E8u4!19<2%Xqr0+i;o)#8->V!=2qOUnrV`T@>u9HRD zP;N>AvXM07@IM>(#x`{9IxjoXh7(AtV%;a~x*8+< zSx&5H4U8%0t!79FBKh%RaP`cf)kPi5TupRAg-fB z6W;DHWWQ>NpgEqDfIdT?4%lDwd@g!Z#@p&P=~+LSH;iz0e2QpQygF~v2>$aoW^GDr z_6U?>mo_`8xJeaAjfVa`U%mK|QS`)1c@6*vT(0Lp$-B6SwVy`J!{P`3ZJe_K?K&wz z6J!qo81*5cuJ#XP%8vlOtq>BhHW75aj79{paLG~pgv_#W32~#M47b>?l4#%GuLEOW z?`QQIT`1HErxzD9mhxdpk!j7VH>JPxXVXUB%dp2PoguU42hZ$e`YI5-$r5fOvu;88 z_RXcIccv`YZGVu{C8fhYslz3Sl8fin9<~9Mz7UD=7ww%M*S)YJpe^{QTFoq9MEl(m40rJbL7|w{>*zU_j*yD$*A1g#;|( z#iQWKcTaFzDmb~zJmvLV{$5Sh_){X5Q<#3P6N_cUufhg#WUDNH64P^}|=c6g()jXkt{71i0W$G*790Ww@i z2-&4Jd@4Pzri9n?d~Jp6OEW;Y>*kWfXHFyUorVTnh;lm5yw3{EJ0y*Q;T}#@g;yd# zI!qW2NH=Ye5*JvDgI)#D5Vayj0N+Ya7jOfr7ZK1C&L;M^=#!E;okTP za`z%_>_dGVm<`#G7RDg^K>!LSomctpDyWU*R+Ese!z|slUKN-#IgSXB2QJoIE@97x z*;2g}sqUV;tHY&wF2ak-zqOPhww1vqTv{v05W#EGeB)sou+L=M%N&1Wmk{y!6DY-A zI(jPyhtDx7R}N`|eLB{@7lNG>!tSkzKJCP zD--5EW8BT((8_BLr|)LA%jLv3kea%dhi=QmtdC#g>(+rt&)fB0e}Fh6$TAizZug*-;Ig5=dN8rf$HHS z&F!3CLvQ!0i=&_5^zl@#99mj|Cy{}SjVWryyezNWc|n<5GLcrj$hMp5t70rxyCnsN z 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 diff --git a/tatus b/tatus deleted file mode 100644 index 39e1880f..00000000 --- a/tatus +++ /dev/null @@ -1,5 +0,0 @@ -cc8f9cd2e (HEAD -> main, origin/cleanup/remove-cache-files, cleanup/remove-cache-files) Clean up: Remove all cache files and add comprehensive .gitignore -c19fc3f22 (origin/main, origin/HEAD) ALwrity Prompts - AI Integration Plan -5efee4235 Added citation and quality metrics to the content editor. -10b50f973 Alwrity Copilot Integration for LinkedIn Writer -64944104a merge: LinkedIn Writer PR #223 - resolve conflicts and integrate with existing routers

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

8W!W`v+@m;HRQ$SxCDuZR^q##~1P!Y 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

$58d>V#yb=e0Fa+n8|_VyLO9W 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