diff --git a/.gitignore b/.gitignore index 85ecf5f..f4ef634 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,8 @@ Temporary Items oci-language-translation/config.yaml oci-subtitle-translation/config.yaml oci-csv-json-translation/config.yaml -oci-language-multiple-translation/config.yaml \ No newline at end of file +oci-language-multiple-translation/config.yaml + +agentic_rag/config.yaml +agentic_rag/chroma_db +agentic_rag/embeddings \ No newline at end of file diff --git a/agentic_rag/.gitignore b/agentic_rag/.gitignore new file mode 100644 index 0000000..a7b9b8c --- /dev/null +++ b/agentic_rag/.gitignore @@ -0,0 +1,29 @@ +# Python +__pycache__/ +*.py[cod] +*$py.class + +# Virtual Environment +venv/ +env/ +.env + +# IDE +.vscode/ +.idea/ + +# Gradio +.gradio/ + +# Generated files +embeddings/ +chroma_db/ +docs/*.json + +# Distribution / packaging +dist/ +build/ +*.egg-info/ + +# Logs +*.log \ No newline at end of file diff --git a/agentic_rag/README.md b/agentic_rag/README.md new file mode 100644 index 0000000..6367cd6 --- /dev/null +++ b/agentic_rag/README.md @@ -0,0 +1,333 @@ +# Agentic RAG System + +## Introduction + +An intelligent RAG (Retrieval Augmented Generation) system that uses an LLM agent to make decisions about information retrieval and response generation. The system processes PDF documents and can intelligently decide which knowledge base to query based on the user's question. + +The system has the following features: + +- Intelligent query routing +- PDF processing using Docling for accurate text extraction and chunking +- Persistent vector storage with ChromaDB (PDF and Websites) +- Smart context retrieval and response generation +- FastAPI-based REST API for document upload and querying +- Support for both OpenAI-based agents or local, transformer-based agents (`Mistral-7B` by default) +- Optional Chain of Thought (CoT) reasoning for more detailed and structured responses + +## 0. Prerequisites and setup + +### Prerequisites + +- Python 3.8 or higher +- OpenAI API key (optional, for OpenAI-based agent) +- HuggingFace token (optional, for local Mistral model) + +### Hardware Requirements + +- For the OpenAI Agent: Standard CPU machine +- For the Local Agent: + - Minimum 16GB RAM (recommended >24GBs) + - GPU with 8GB VRAM recommended for better performance + - Will run on CPU if GPU is not available, but will be significantly slower. + +### Setup + +1. Clone the repository and install dependencies: + + ```bash + git clone https://github.com/oracle-devrel/devrel-labs.git + cd agentic-rag + pip install -r requirements.txt + ``` + +2. Authenticate with HuggingFace: + + The system uses `Mistral-7B` by default, which requires authentication with HuggingFace: + + a. Create a HuggingFace account [here](https://huggingface.co/join), if you don't have one yet. + + b. Accept the Mistral-7B model terms & conditions [here](https://huggingface.co/mistralai/Mistral-7B-Instruct-v0.2) + + c. Create an access token [here](https://huggingface.co/settings/tokens) + + d. Create a `config.yaml` file (you can copy from `config_example.yaml`), and add your HuggingFace token: + ```yaml + HUGGING_FACE_HUB_TOKEN: your_token_here + ``` + +3. (Optional) If you want to use the OpenAI-based agent instead of the default local model, create a `.env` file with your OpenAI API key: + + ```bash + OPENAI_API_KEY=your-api-key-here + ``` + + If no API key is provided, the system will automatically download and use `Mistral-7B-Instruct-v0.2` for text generation when using the local model. No additional configuration is needed. + +## 1. Getting Started + +You can launch this solution in three ways: + +### 1. Using the Complete REST API + +Start the API server: + +```bash +python main.py +``` + +The API will be available at `http://localhost:8000`. You can then use the API endpoints as described in the API Endpoints section below. + +### 2. Using the Gradio Interface + +The system provides a user-friendly web interface using Gradio, which allows you to: +- Upload and process PDF documents +- Process web content from URLs +- Chat with your documents using either local or OpenAI models +- Toggle Chain of Thought reasoning + +To launch the interface: + +```bash +python gradio_app.py +``` + +This will start the Gradio server and automatically open the interface in your default browser at `http://localhost:7860`. The interface has two main tabs: + +1. **Document Processing**: + - Upload PDFs using the file uploader + - Process web content by entering URLs + - View processing status and results + +2. **Chat Interface**: + - Select between Local (Mistral) and OpenAI models + - Toggle Chain of Thought reasoning for more detailed responses + - Chat with your documents using natural language + - Clear chat history as needed + +Note: The interface will automatically detect available models based on your configuration: +- Local Mistral model requires HuggingFace token in `config.yaml` +- OpenAI model requires API key in `.env` file + +### 3. Using Individual Python Components via Command Line + +#### Process PDFs + +To process a PDF file and save the chunks to a JSON file, run: + +```bash +# Process a single PDF +python pdf_processor.py --input path/to/document.pdf --output chunks.json + +# Process multiple PDFs in a directory +python pdf_processor.py --input path/to/pdf/directory --output chunks.json + +# Process a single PDF from a URL +python pdf_processor.py --input https://example.com/document.pdf --output chunks.json +# sample pdf: https://arxiv.org/pdf/2203.06605 +``` + +#### Process Websites with Trafilatura + +Process a single website and save the content to a JSON file: + +```bash +python web_processor.py --input https://example.com --output docs/web_content.json +``` + +Or, process multiple URLs from a file and save them into a single JSON file: + +```bash +python web_processor.py --input urls.txt --output docs/web_content.json +``` + +#### Manage Vector Store + +To add documents to the vector store and query them, run: + +```bash +# Add documents from a chunks file, by default to the pdf_collection +python store.py --add chunks.json +# for websites, use the --add-web flag +python store.py --add-web docs/web_content.json + +# Query the vector store directly, both pdf and web collections +# llm will make the best decision on which collection to query based upon your input +python store.py --query "your search query" +python local_rag_agent.py --query "your search query" +``` + +#### Use RAG Agent + +To query documents using either OpenAI or a local model, run: + +```bash +# Using OpenAI (requires API key in .env) +python rag_agent.py --query "Can you explain the DaGAN Approach proposed in the Depth-Aware Generative Adversarial Network for Talking Head Video Generation article?" + +# Using local Mistral model +python local_rag_agent.py --query "Can you explain the DaGAN Approach proposed in the Depth-Aware Generative Adversarial Network for Talking Head Video Generation article?" +``` + +### 4. Complete Pipeline Example + +First, we process a document and query it using the local model. Then, we add the document to the vector store and query from the knowledge base to get the RAG system in action. + +```bash +# 1. Process the PDF +python pdf_processor.py --input example.pdf --output chunks.json + +#python pdf_processor.py --input https://arxiv.org/pdf/2203.06605 --output chunks.json + +# 2. Add to vector store +python store.py --add chunks.json + +# 3. Query using local model +python local_rag_agent.py --query "Can you explain the DaGAN Approach proposed in the Depth-Aware Generative Adversarial Network for Talking Head Video Generation article?" + +# Or using OpenAI (requires API key): +python rag_agent.py --query "Can you explain the DaGAN Approach proposed in the Depth-Aware Generative Adversarial Network for Talking Head Video Generation article?" +``` + +## 2. Chain of Thought (CoT) Support + +The system implements an advanced multi-agent Chain of Thought system, allowing complex queries to be broken down and processed through multiple specialized agents. This feature enhances the reasoning capabilities of both local and cloud-based models. + +### Multi-Agent System + +The CoT system consists of four specialized agents: + +1. **Planner Agent**: Breaks down complex queries into clear, manageable steps +2. **Research Agent**: Gathers and analyzes relevant information from knowledge bases +3. **Reasoning Agent**: Applies logical analysis to information and draws conclusions +4. **Synthesis Agent**: Combines multiple pieces of information into a coherent response + +### Using CoT + +You can activate the multi-agent CoT system in several ways: + +1. **Command Line**: +```bash +# Using local Mistral model (default) +python local_rag_agent.py --query "your query" --use-cot + +# Using OpenAI model +python rag_agent.py --query "your query" --use-cot +``` + +2. **Testing the System**: +```bash +# Test with local model (default) +python tests/test_new_cot.py + +# Test with OpenAI model +python tests/test_new_cot.py --model openai +``` + +3. **API Endpoint**: +```http +POST /query +Content-Type: application/json + +{ + "query": "your query", + "use_cot": true +} +``` + +### Example Output + +When CoT is enabled, the system will show: +- The initial plan for answering the query +- Research findings for each step +- Reasoning process and conclusions +- Final synthesized answer +- Sources used from the knowledge base + +Example: +``` +Step 1: Planning +- Break down the technical components +- Identify key features +- Analyze implementation details + +Step 2: Research +[Research findings for each step...] + +Step 3: Reasoning +[Logical analysis and conclusions...] + +Final Answer: +[Comprehensive response synthesized from all steps...] + +Sources used: +- document.pdf (pages: 1, 2, 3) +- implementation.py +``` + +### Benefits + +The multi-agent CoT approach offers several advantages: +- More structured and thorough analysis of complex queries +- Better integration with knowledge bases +- Transparent reasoning process +- Improved answer quality through specialized agents +- Works with both local and cloud-based models + +## Annex: API Endpoints + +### Upload PDF + +```http +POST /upload/pdf +Content-Type: multipart/form-data + +file: +``` + +This endpoint uploads and processes a PDF file, storing its contents in the vector database. + +### Query + +```http +POST /query +Content-Type: application/json + +{ + "query": "your question here" +} +``` + +This endpoint processes a query through the agentic RAG pipeline and returns a response with context. + +## Annex: Architecture + +The system consists of several key components: + +1. **PDF Processor**: we use Docling to extract and chunk text from PDF documents +2. **Vector Store**: Manages document embeddings and similarity search using ChromaDB +3. **RAG Agent**: Makes intelligent decisions about query routing and response generation + - OpenAI Agent: Uses `gpt-4-turbo-preview` for high-quality responses, but requires an OpenAI API key + - Local Agent: Uses `Mistral-7B` as an open-source alternative +4. **FastAPI Server**: Provides REST API endpoints for document upload and querying + +The RAG Agent flow is the following: + +1. Analyzes query type +2. Try to find relevant PDF context, regardless of query type +3. If PDF context is found, use it to generate a response. +4. If no PDF context is found OR if it's a general knowledge query, use the pre-trained LLM directly +5. Fall back to a "no information" response only in edge cases. + +## Contributing + +This project is open source. Please submit your contributions by forking this repository and submitting a pull request! Oracle appreciates any contributions that are made by the open source community. + +## License + +Copyright (c) 2024 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](../LICENSE) for more details. + +ORACLE AND ITS AFFILIATES DO NOT PROVIDE ANY WARRANTY WHATSOEVER, EXPRESS OR IMPLIED, FOR ANY SOFTWARE, MATERIAL OR CONTENT OF ANY KIND CONTAINED OR PRODUCED WITHIN THIS REPOSITORY, AND IN PARTICULAR SPECIFICALLY DISCLAIM ANY AND ALL IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. FURTHERMORE, ORACLE AND ITS AFFILIATES DO NOT REPRESENT THAT ANY CUSTOMARY SECURITY REVIEW HAS BEEN PERFORMED WITH RESPECT TO ANY SOFTWARE, MATERIAL OR CONTENT CONTAINED OR PRODUCED WITHIN THIS REPOSITORY. IN ADDITION, AND WITHOUT LIMITING THE FOREGOING, THIRD PARTIES MAY HAVE POSTED SOFTWARE, MATERIAL OR CONTENT TO THIS REPOSITORY WITHOUT ANY REVIEW. USE AT YOUR OWN RISK. \ No newline at end of file diff --git a/agentic_rag/agents/agent_factory.py b/agentic_rag/agents/agent_factory.py new file mode 100644 index 0000000..2f26055 --- /dev/null +++ b/agentic_rag/agents/agent_factory.py @@ -0,0 +1,190 @@ +from typing import List, Dict, Any +from pydantic import BaseModel, Field +from langchain_openai import ChatOpenAI +from langchain.prompts import ChatPromptTemplate +import logging +import warnings +from transformers import logging as transformers_logging + +# Configure logging +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s | %(name)s | %(levelname)s | %(message)s', + datefmt='%Y-%m-%d %H:%M:%S' +) +logger = logging.getLogger(__name__) + +# Suppress specific transformers warnings +transformers_logging.set_verbosity_error() +warnings.filterwarnings("ignore", message="Setting `pad_token_id` to `eos_token_id`") + +class Agent(BaseModel): + """Base agent class with common properties""" + name: str + role: str + description: str + llm: Any = Field(description="Language model for the agent") + + def log_prompt(self, prompt: str, prefix: str = ""): + """Log a prompt being sent to the LLM""" + logger.info(f"\n{'='*80}\n{prefix} Prompt:\n{'-'*40}\n{prompt}\n{'='*80}") + + def log_response(self, response: str, prefix: str = ""): + """Log a response received from the LLM""" + logger.info(f"\n{'='*80}\n{prefix} Response:\n{'-'*40}\n{response}\n{'='*80}") + +class PlannerAgent(Agent): + """Agent responsible for breaking down problems and planning steps""" + def __init__(self, llm): + super().__init__( + name="Planner", + role="Strategic Planner", + description="Breaks down complex problems into manageable steps", + llm=llm + ) + + def plan(self, query: str, context: List[Dict[str, Any]] = None) -> str: + logger.info(f"\n🎯 Planning step for query: {query}") + + if context: + template = """As a strategic planner, break down this problem into 3-4 clear steps. + + Context: {context} + Query: {query} + + Steps:""" + context_str = "\n\n".join([f"Context {i+1}:\n{item['content']}" for i, item in enumerate(context)]) + logger.info(f"Using context ({len(context)} items)") + else: + template = """As a strategic planner, break down this problem into 3-4 clear steps. + + Query: {query} + + Steps:""" + context_str = "" + logger.info("No context available") + + prompt = ChatPromptTemplate.from_template(template) + messages = prompt.format_messages(query=query, context=context_str) + prompt_text = "\n".join([msg.content for msg in messages]) + self.log_prompt(prompt_text, "Planner") + + response = self.llm.invoke(messages) + self.log_response(response.content, "Planner") + return response.content + +class ResearchAgent(Agent): + """Agent responsible for gathering and analyzing information""" + vector_store: Any = Field(description="Vector store for searching") + + def __init__(self, llm, vector_store): + super().__init__( + name="Researcher", + role="Information Gatherer", + description="Gathers and analyzes relevant information from knowledge bases", + llm=llm, + vector_store=vector_store + ) + + def research(self, query: str, step: str) -> List[Dict[str, Any]]: + logger.info(f"\n🔍 Researching for step: {step}") + + # Query all collections + pdf_results = self.vector_store.query_pdf_collection(query) + repo_results = self.vector_store.query_repo_collection(query) + + # Combine results + all_results = pdf_results + repo_results + logger.info(f"Found {len(all_results)} relevant documents") + + if not all_results: + logger.warning("No relevant documents found") + return [] + + template = """Extract and summarize key information relevant to this step. + + Step: {step} + Context: {context} + + Key Findings:""" + + context_str = "\n\n".join([f"Source {i+1}:\n{item['content']}" for i, item in enumerate(all_results)]) + prompt = ChatPromptTemplate.from_template(template) + messages = prompt.format_messages(step=step, context=context_str) + prompt_text = "\n".join([msg.content for msg in messages]) + self.log_prompt(prompt_text, "Researcher") + + response = self.llm.invoke(messages) + self.log_response(response.content, "Researcher") + + return [{"content": response.content, "metadata": {"source": "Research Summary"}}] + +class ReasoningAgent(Agent): + """Agent responsible for logical reasoning and analysis""" + def __init__(self, llm): + super().__init__( + name="Reasoner", + role="Logic and Analysis", + description="Applies logical reasoning to information and draws conclusions", + llm=llm + ) + + def reason(self, query: str, step: str, context: List[Dict[str, Any]]) -> str: + logger.info(f"\n🤔 Reasoning about step: {step}") + + template = """Analyze the information and draw a clear conclusion for this step. + + Step: {step} + Context: {context} + Query: {query} + + Conclusion:""" + + context_str = "\n\n".join([f"Context {i+1}:\n{item['content']}" for i, item in enumerate(context)]) + prompt = ChatPromptTemplate.from_template(template) + messages = prompt.format_messages(step=step, query=query, context=context_str) + prompt_text = "\n".join([msg.content for msg in messages]) + self.log_prompt(prompt_text, "Reasoner") + + response = self.llm.invoke(messages) + self.log_response(response.content, "Reasoner") + return response.content + +class SynthesisAgent(Agent): + """Agent responsible for combining information and generating final response""" + def __init__(self, llm): + super().__init__( + name="Synthesizer", + role="Information Synthesizer", + description="Combines multiple pieces of information into a coherent response", + llm=llm + ) + + def synthesize(self, query: str, reasoning_steps: List[str]) -> str: + logger.info(f"\n📝 Synthesizing final answer from {len(reasoning_steps)} reasoning steps") + + template = """Combine the reasoning steps into a clear, comprehensive answer. + + Query: {query} + Steps: {steps} + + Answer:""" + + steps_str = "\n\n".join([f"Step {i+1}:\n{step}" for i, step in enumerate(reasoning_steps)]) + prompt = ChatPromptTemplate.from_template(template) + messages = prompt.format_messages(query=query, steps=steps_str) + prompt_text = "\n".join([msg.content for msg in messages]) + self.log_prompt(prompt_text, "Synthesizer") + + response = self.llm.invoke(messages) + self.log_response(response.content, "Synthesizer") + return response.content + +def create_agents(llm, vector_store=None): + """Create and return the set of specialized agents""" + return { + "planner": PlannerAgent(llm), + "researcher": ResearchAgent(llm, vector_store) if vector_store else None, + "reasoner": ReasoningAgent(llm), + "synthesizer": SynthesisAgent(llm) + } \ No newline at end of file diff --git a/agentic_rag/config_example.yaml b/agentic_rag/config_example.yaml new file mode 100644 index 0000000..8c77e47 --- /dev/null +++ b/agentic_rag/config_example.yaml @@ -0,0 +1 @@ +HUGGING_FACE_HUB_TOKEN: your_token_here \ No newline at end of file diff --git a/agentic_rag/docs/gan.json b/agentic_rag/docs/gan.json new file mode 100644 index 0000000..c115d17 --- /dev/null +++ b/agentic_rag/docs/gan.json @@ -0,0 +1,528 @@ +[ + { + "text": "arXiv:2203.06605v2 [cs.CV] 15 Mar 2022", + "metadata": { + "headings": null, + "page_numbers": [ + 1 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Fa-Ting Hong 1\nLonghao Zhang 2\nLi Shen 2\nDan Xu 1 *\n1 Department of Computer Science and Engineering, HKUST 2 Alibaba Cloud\nfhongac@cse.ust.hk, longhao.zlh@alibaba-inc.com, lshen.lsh@gmail.com, danxu@cse.ust.hk", + "metadata": { + "headings": [ + "Depth-Aware Generative Adversarial Network for Talking Head Video Generation" + ], + "page_numbers": [ + 1 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Talking head video generation aims to produce a synthetic human face video that contains the identity and pose information respectively from a given source image and a driving video. Existing works for this task heavily rely on 2D representations (e.g. appearance and motion) learned from the input images. However, dense 3D facial geometry (e.g. pixel-wise depth) is extremely important for this task as it is particularly beneficial for us to essentially generate accurate 3D face structures and distinguish noisy information from the possibly cluttered background. Nevertheless, dense 3D geometry annotations are prohibitively costly for videos and are typically not available for this video generation task. In this paper, we first introduce a self-supervised geometry learning method to automatically recover the dense 3D geometry (i.e. depth) from the face videos without the requirement of any expensive 3D annotation data. Based on the learned dense depth maps, we further propose to leverage them to estimate sparse facial keypoints that capture the critical movement of the human head. In a more dense way, the depth is also utilized to learn 3D-aware cross-modal (i.e. appearance and depth) attention to guide the generation of motion fields for warping source image representations. All these contributions compose a novel depth-aware generative adversarial network (DaGAN) for talking head generation. Extensive experiments conducted demonstrate that our proposed method can generate highly realistic faces, and achieve significant results on the unseen human faces. 1", + "metadata": { + "headings": [ + "Abstract" + ], + "page_numbers": [ + 1 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "In this paper, we target the task of generating a realistic talking head video of a person using a source image of that person and a driving video, possibly derived from another person [30, 31, 33]. In the real world, a wide range of\n* Corresponding author\n1 https://github.com/harlanhong/CVPR2022-DaGAN\nFigure 1. Qualitative results of the learned depth maps (Fig. 1b) of the face images (Fig. 1a) using a self-supervised manner, and dense depth-aware attention maps (Fig. 1c), which can attend to important semantic parts of the face such as eyes.\npractical applications can be benefited from this task such as role-playing video games and virtual anchors.\nRapid progress has been achieved on talking head video generation in terms of both quality and robustness in recent years, using generative adversarial networks (GANs) [5]. A successful direction for the task in the literature focuses on decoupling identity and pose information from the face images [24, 27, 33]. For instance, pioneering works [24, 27] propose to model relative poses between two face images based on estimated sparse facial keypoints, and the poses are further used to generate dense motion fields, which warps the feature maps of the source image to drive the image generation. Similarly, Eurkov et al . [1] aimed to specifically learn two latent codes for the pose and the identity, and then input them into a designed generator network for face video synthesis. More than that, data augmentation strategies [1,40] are also explored to more effectively perform the disentanglement of the pose and identity information. Although these methods show highly promising performance on the task, they still pay large attention to learning more representative 2D appearance and motion features from the input images. However, for face video generation, 3D dense geometry is critically important for the task while rarely in-\nvestigated in the existing methods.", + "metadata": { + "headings": [ + "1. Introduction" + ], + "page_numbers": [ + 1, + 2 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "The dense 3D geometry ( e.g . pixel-level depth) can bring several significant benefits for the talking-head video generation. First, as the video captures the moving heads in a realistic 3D physical world, the 3D geometry can greatly facilitate an accurate recovery of 3D face structures, and the model capability of maintaining a realistic 3D face structure is a key factor for generating high-fidelity face videos. Second, the dense geometry can also help the model to robustly distinguish the noisy background information for generation especially under cluttered background conditions. Finally, the dense geometry is also particularly useful for the model to identify expression-related micro-movements on the faces. However, a severe issue of utilizing the 3D dense geometry to significantly boost the generation is that the 3D geometry annotations are highly expensive and typically not available for this task.\nTo address this problem, in this paper, we first propose to learn the pixel-wise depth map (see Fig. 1b) via geometric warping and photometric consistency in a self-supervised manner, to automatically recover dense 3D facial geometry from the training face videos, without requiring any expensive 3D geometry annotations. Based on the learned dense facial depth maps, we further propose two mechanisms to effectively leverage the depth information for better talkinghead video generation. The first mechanism is depth-guided facial keypoint detection. The facial keypoints estimated by the network should well reflect the structure of the face, as they are further used to produce the motion field for feature warping, while the depth map explicitly indicates the 3D structure of the face. Thus, we combine geometry representations learned from the input depth maps with the appearance representations learned from the input images, to predict more accurate facial keypoints. The second mechanism is a cross-modal attention mechanism to guide the learning of the motion field. The motion field may contain noisy information from the cluttered background, and cannot effectively capture the expression-related micro-movements as they are generated from sparse facial keypoints. Therefore, we propose to learn depth-aware attention to have pixel-wise 3D geometry constraint on the motion field (see Fig. 1c), to drive the generation with more fine-grained details of facial structure and movements.", + "metadata": { + "headings": [ + "1. Introduction" + ], + "page_numbers": [ + 2 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "All the above-illustrated contributions compose a D eptha ware G enerative A dversarial N etwork ( DaGAN ) to advance talking head video generation. Extensive experiments are conducted to qualitatively and quantitatively evaluate the proposed DaGAN model on two different datasets, i.e . VoxCeleb1 [20] and CelebV [30]. The experimental results show that our proposed self-supervised depth learning strategy can produce accurate depth maps on both the source and the target human face images. Our DaGAN model can also generate higher-quality face images com-\npared with state-of-the-art methods. More specifically, our model is able to better preserve facial details, yielding a synthesized face with a more accurate expression and pose.\nIn summary, the main contribution is three-fold:\n· To the best of our knowledge, we are the first to introduce a self-supervised learning method to recover explicit dense 3D geometry ( i.e . depth maps) from face videos for talking head video generation, and utilize the learned depth to boost the performance.\n· We propose a novel depth-aware generative adversarial network for talking head generation, which effectively incorporates the depth information into the generation network via two carefully designed mechanisms, i.e . depth-guided facial keypoint estimation, and crossmodal ( i.e . depth and image) attention learning.\n· Extensive experimental results show accurate depth recovery of face images and also achieve superior generation performance compared with state-of-the-arts.", + "metadata": { + "headings": [ + "1. Introduction" + ], + "page_numbers": [ + 2 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Generative Adversarial Networks. The generative adversarial network (GAN) was introduced by Goodfellow et al . [5] to produce realistic images under certain conditions. GANs have attracted substantial attention and has been studied in many tasks [17], such as image synthesis [5, 13, 14, 21], text-to-image translation [22,36], and image inpainting [11,15,16]. In this work, we focus on talking head video generation with GAN guided by 3D facial depth maps learned without any ground-truth depths.\nDepth Estimation. Many works have been proposed to tackle the problem of depth estimation from stereo images or video sequences [3, 4, 7, 18, 41]. Zhou et al . [41] use an end-to-end learning approach with view synthesis as the supervisory signal to estimate the depth map in monocular video sequences in an unsupervised manner. Based on [41], Clement et al . [4] gain a significant improvement using a minimum reprojection loss to deal with occlusions between frames and an auto-masking loss to ignore confusing stationary pixels. Gordon et al . [6] tried to learn camera intrinsics for every two consecutive frames to make the model able to perform inference in the wild.\nHowever, our work aims to learn facial depth maps in an unsupervised manner for the talking head generation task with only video images required. The depth map can provide dense 3D geometric information for the keypoint detection and can serve as an important cue to guide the model to focus on fine-grained critical parts of the human face ( e.g . eyes, and mouth) during image generation.\nTalking Head Video Generation. Talking head video generation can be divided into three major strategies according to its driven-modality, i.e . image-driving methods [1, 24, 27, 29, 33, 37], landmark-driving methods [8, 34, 35, 38] and audio-driving methods [2, 25, 39, 40]. To exclude the", + "metadata": { + "headings": [ + "2. Related Works" + ], + "page_numbers": [ + 2 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Figure 2. An illustration of the proposed DaGAN approach, which can be mainly divided into three sub-networks: (1) a self-supervised depth learning sub-network F d . We learn pixel-wise face depth maps in a self-supervised manner to recover the dense 3D facial geometry from the training face videos. (2) a depth-guided facial keypoints detection sub-network F kp . In this part, we combine both the geometry representations from depth maps with the appearance representations from the images to predict more accurate facial keypoints. (3) a cross-modal ( i.e . depth and rgb image) attention learning sub-network. We learn dense depth-aware attention map using depth maps to constrain the motion field, to obtain a more accurate generation of fine-grained details of facial structure and movements.\ndriving face's identity information, several image-driving methods [24, 27] tried to predict keypoints of both the source image and driving image, and model local motion using changes in the positions of corresponding keypoints. Using facial landmarks instead of pure images to encode the pose information is an intuitive method. The fsvid2vid [35] models person appearance by decomposing it into two layers, i.e . a pose-dependent coarse image and a pose-independent texture image. Zhao et al . [38] not only model global motions using full facial landmarks, but also use local landmarks to enforce the model to focus on local regions. The audio-driving method is a more popular way to perform face reenactment since the audio does not contain identity information, which can enable the model to more easily obtain a latent code of pose information from the audio. In [39], the encoder disentangles the pose information from identity information assisted by the audio modality.\nIn contrast to these existing works, we learn explicit pixel-wise depth map in a self-supervised manner, to provide highly beneficial 3D dense geometry information of the human faces, which allows the proposed model to accurately perceive 3D structures of the faces, and generate more fine-grained details of face spatial structures.", + "metadata": { + "headings": [ + "2. Related Works" + ], + "page_numbers": [ + 3 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Generating talking head videos is a technically challenging task as it requires the preserving of the identity information while imitating the facial motion from the driving faces. In this work, under the same setting as utilized in pre-\nvious works [24, 33], we propose a depth-aware generative adversarial network, termed as DaGAN, for talking head video generation. It learns a depth estimation network in a self-supervised manner from training face videos, without requiring any expensive 3D geometry data as input. Thus, we can recover reliable face depth maps for both the input source and driving images to capture accurate 3D face structures and the expression-related micro-movements for higher-quality talking-head video generation.", + "metadata": { + "headings": [ + "3. The proposed DaGAN Approach" + ], + "page_numbers": [ + 3 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Our proposed DaGAN approach consists of a generator and a discriminator. The core network architecture of our generator is depicted in Fig. 2, while the implementation of the discriminator is directly inspired from FOMM [24]. Our generation network can be split into three parts: (i) a self-supervised depth learning sub-network F d . The face depth network F d first learns depth estimation using two consecutive frames ( i.e . I i and I i +1 ) from a face video in a self-supervised manner. Then the whole deep framework is jointly trained while with F d fixed. (ii) a depthguided sparse keypoints detection sub-network F kp . Given a source image I s and a driving image I d from the driving video, we exploit F d to produce depth maps ( D s and D d ) for each image. These depth maps and their RGB images are concatenated to learn geometry and appearance features for detecting face keypoints ( i.e . { x s,n } N n =1 and { x d,n } N n =1 ), which can be used to generate relative motion fields of the human faces; (iii) the feature warping module accepts the keypoints as input to generate motion fields,\nFigure 3. The training process of our face depth network. In addition to the face depth network, we use a pose network to estimate the relative camera poses [ R I i → I i +1 , t I i → I i +1 ] and the camera intrinsic matrix K I i → I i +1 . The symbol c represents the concatenated operation.\nwhich are used to warp the source-image feature map to fuse the motion with the appearance information, resulting in a warped feature F w . To enforce the model to focus on fine-grained details of face structures and micro-expression movements, we further learn a dense depth-aware attention map using the source depth map D s and the warped feature F w . The depth-aware attention map can be used to refine the warped feature to produce a refined feature F g , resulting in a better generated image I g .", + "metadata": { + "headings": [ + "3.1. Overview" + ], + "page_numbers": [ + 3, + 4 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "In this part, we elaborate the technical details of the proposed self-supervised facial depth learning network, which can automatically recover dense face depth maps from the input source and driving images. Although SfMLearner [41] previously proposed to learn outdoor scene depth in an unsupervised manner in an autonomous driving scenario, while in this work, we extend the method to learn face depths specifically for talking head video generation. Since the facial videos contain relatively larger-area dynamic motion (moving head dominating on the image) compared to the outdoor scenes, unsupervised facial depth estimation is a challenging problem in our task.\nWe optimize the depth network using available training face videos. Specifically, given two consecutive video frames I i and I i +1 from a face video, with I i +1 as a source image and I i as a target image, we aim to learn several geometric elements, including a depth map D I i for the target image I i , a camera intrinsic matrix K I i → I i +1 , and a relative camera pose R I i → I i +1 with translation t I i → I i +1 between the two images. It should be noted that the camera intrinsic K I i → I i +1 is also not available in our training face video dataset, which is clearly different from [41] directly using provided camera intrinsic parameters for geometric warping. K I i → I i +1 is input-video-clip specifically learned in our method, as each face video can be possibly captured by any camera. So the input of our method only requires video frames.\nThe depth map D I i can be produced using the depth network F d ( · ) . The pose R I i → I i +1 , the translation t I i → I i +1 , and the camera intrinsic matrix K I i → I i +1 are predicted from the same pose network F p ( · ) as follows:\nD I i = F d ( I i ) , (1)\n[ R I i → I i +1 , t I i → I i +1 ] , K I i → I i +1 = F p ( I i || I i +1 ) , (2)\nwhere the symbol || indicates a concatenation of the two images. Then, we can warp the source image I i +1 to the view of the target image I i as follows:", + "metadata": { + "headings": [ + "3.2. Self-supervised Face Depth Learning" + ], + "page_numbers": [ + 4 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "q k ∼ K I i → I i +1 [ R I i → I i +1 | t I i → I i +1 ] D I i ( p j ) K -1 n p j , (3)\n˜ I i = B I ( I i +1 , { q k } N k =1 ) , (4)\nwhere q k and p j denote the warped pixel on the source image I i +1 and an original pixel on the target image I i ; N is the overall number of pixels of the image; B I ( · ) is a differentiable bilinear interpolation function; ˜ I i is a reconstructed image at the source view. Therefore, we can construct a photometric consistency error Pe ( · , · ) between ˜ I i and I i to train our depth network in a self-supervised manner. Following [4], we use L1 and SSIM [28] to construct the photometric consistency error Pe as:\nPe ( I i , ˜ I i ) = α (1 -SSIM ( I i , ˜ I i ))+(1 -α ) || I i -˜ I i || , (5)\nwhere α is set to 0.8 which shows better optimization in our experiments. After training the framework, we only utilize the face depth network F d in DaGAN to estimate the depth maps of input face images, which are further employed by our proposed mechanisms for talking head generation.", + "metadata": { + "headings": [ + "3.2. Self-supervised Face Depth Learning" + ], + "page_numbers": [ + 4 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "After we obtain the depth map from the face depth network, we concatenate the RGB image and its corresponding depth map produced by F d . Then, the keypoints estimator F kp accepts the concatenated appearance ( i.e . I τ ) and geometry ( i.e . D τ ) information as inputs to more accurately predict a set of sparse keypoints of the human face:\n{ x τ,n } K n =1 = F kp ( I τ || D τ ) , τ ∈ { s, d } , (6)\nwhere K is the number of the detected face keypoint, and the subscript τ indicates a source image or a driving image; || denotes a concatenation operation. We follow the design of [24] to implement our keypoints detector.\nWe adopt a feature warping strategy to capture head movements between the source and the target images, and implement a proposed feature warping module. Firstly, we compute a set of initial 2D offsets { O n } K n =1 for all the keypoints as follows:\n{ O n } K n =1 = { x s,n } K n =1 -{ x d,n } K n =1 . (7)\nFigure 4. The illustration of our feature warping module. Here, D is the downsampling operation, w is the warping operation, ⊙ is the element-wise multiplication. The ⊕ and -represent the addition and subtraction operation, respectively.\n0\nThen, we generate a 2D dense coordinate map z similar to [24]. After that, a dense 2D motion field w m is generated by adding the K offsets { O n } K n =1 into the 2D coordinate map at the corresponding coordinates of the K keypoints.", + "metadata": { + "headings": [ + "3.3. Motion Modeling by Sparse Keypoints" + ], + "page_numbers": [ + 4, + 5 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "As shown in Fig. 4, we first utilize the dense 2D motion field w m to warp the downsampled image to produce an initial warped feature map. After that, an occlusion estimator T take as input the initial warped feature map to predict a motion flow mask M m and an occlusion map M o [33]. The motion flow mask M m assigns different confidence values for the estimated dense 2D motion field w m , resulting in masked motion field, while the occlusion map M o aims to mask out the feature map regions that should be inpainted since the head has varying rotations. we utilize the masked motion field to warp the appearance feature map learned from the source image I s extracted by the feature encoder E I . Then, they are fused with the occlusion map M o to produce the warped soruce-image feature F w as follows:\nF w = M o ∗ W p ( E I ( I s ) , M m ∗ w m ) , (8)\nwhere W p denotes the warping function. By so doing, the warped features F w can better preserve the identity of the source image while maintaining the head motion information between two faces.", + "metadata": { + "headings": [ + "3.3. Motion Modeling by Sparse Keypoints" + ], + "page_numbers": [ + 5 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "To effectively embed the learned depth maps to boost the generation in a more dense way, we propose a cross-modal ( i.e . depth and image) attention mechanism to enable the model to better preserve the facial structure and generate for expression-related micro facial movements, as the depth can provide us dense 3D geometry, which is essentially beneficial for maintaining the facial structure and identifying the critical movements when performing the generation. More specifically, we develop a cross-modal attention module to produce a dense depth-aware attention map to guide the warped feature F w for face generation.\nAs shown in Fig. 5, a depth encoder E d take a source depth map D s as input to encode a depth feature map F d ,\nFigure 5. The illustration of our cross-modal attention module. Here, 1 × 1 convolutional layers do not share the parameters with each other, and the symbol ⊗ represents the matrix multiplication.\nand we perform linear projection on F d and the warped source-image feature F w into three latent feature maps F q , F k and F v by three different 1 × 1 convolutional layers with kernels W q , W k , and W v , respectively. The F q , F k and F v can respectively represent the query, key and value in the self-attention mechanism. Thus, the geometryrelated query feature F q produced by the depth map can be fused with the appearance-related key feature F k to generate dense guidance for the human face generation. We obtain the final refined features F g for generation:\nF g = Softmax ( ( W q F d )( W k F w ) T ) × ( W v F w ) , (9)\nwhere Softmax( · ) represents a softmax normalization function which outputs the dense depth-aware attention map A in Fig. 5. The A contains important 3D geometric guidance for generating the faces with more fine-grained details of facial structure and micro-movements. Finally, the decoder takes as input the refined warped features F g to produce the final synthesized image I g .", + "metadata": { + "headings": [ + "3.4. Cross-Modal Attention Module" + ], + "page_numbers": [ + 5 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "In the training stage, the identities of the source and the driving image are the same, while they can be different in the inference stage. Following the previous works [24, 27], we train the proposed DaGAN in a self-supervised manner by minimizing the following loss:\nL = λ P L P ( I g , I d ) + λ G L G ( I g , I d ) + λ E L E ( { x d,n } K n =1 ) + λ D ( L D ( { x s,n } K n =1 ) + L D ( { x d,n } K n =1 )) . (10)\nPerceptual loss L P . We minimize the perceptual loss [12] between the driving image I d and the generated image I g , which has been effectively demonstrated being able to produce visually sharp outputs [24]. Moreover, we create an image pyramid for the driving image I d and the generated image I g to compute a pyramid perceptual loss.\nGAN loss L G . We adopt the least-squares loss [19] as our adversarial loss. We use the discriminator to compute feature maps of different scales from the input image, and per-\nform L G on multiple levels as L P . We also minimize the discriminator feature matching loss [27].\nEquivariance loss L E . For a valid keypoint, when applying a 2D transformation to the image, the predicted keypoint should change according to the applied transformation [24]. Thus, we utilize an equivariance loss L E to ensure the consistency of image-specific keypoints.\nKeypoints distance loss L D . In order to make the detected facial keypoints aovid crowded around a small neighbourhood, we employ a keypoints distance loss to penalize the model if the distance of two corresponding keypoints falls below a predefined threshold.\nOverall, the first two terms ensure the generated image being similar to the ground-truth. The third one enforces the predicted keypoints to be consistent, while the last one constrains the keypoints not to be clustered together. The λ P , λ G , λ E and λ D are the hyper-parameters to allow for a balanced learning from those losses. More details about the losses are presented in the Supplementary Material.", + "metadata": { + "headings": [ + "3.5. Training" + ], + "page_numbers": [ + 5, + 6 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "In this section, we conduct extensive experiments on two talking face datasets to evaluate our proposed method. More additional experiments results and video samples are reported in the Supplementary Material.", + "metadata": { + "headings": [ + "4. Experiments" + ], + "page_numbers": [ + 6 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Dataset . We mainly conduct experiments on two talking head generation datasets ( i.e . VoxCeleb1 [20] dataset and CelebV [30] dataset) in this work. We follow the test set sampling strategy of MarioNETte [8].\nMetrics . In this work, several metrics are utilized to evaluate the quality of the generated images. Specifically, we use structured similarity ( SSIM ) and peak signal-to-noise ratio ( PSNR ) to evaluate the low-level similarity between the generated image and the driving image. Also, we adopt other three metrics, i.e . L 1 , Average Keypoint Distance ( AKD ), and Average Euclidean Distance ( AED ) proposed in [23] to evaluate the keypoint-based methods.\nIn cross-identity reenacting experiments, following the previous work [8], we adopt the CSIM to evaluate the quality of identity preservation between source images and generated images. PRMSE is utilized to evaluate the head poses, while AUCON for expression evaluation.", + "metadata": { + "headings": [ + "4.1. Dataset and Metrics" + ], + "page_numbers": [ + 6 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "The structure of the keypoints estimator is an hourglass network [32]. We use similar architectures as in [4] for implementing our depth and pose networks, while the decoder in the generator is the same as in [24]. The details of the structures of each sub-network in the proposed DaGAN is elaborated in Supplementary Material. For the optimization losses, we set λ P = 10, λ G =1, λ E = 10, and λ D = 10. We set the number of keypoints in DaGAN as 15 . In the training\nTable 1. Comparisons with state-of-the-art methods on the selfreenactment on the VoxCeleb1 dataset [20]. ↑ indicates larger is better, while ↓ indicates smaller is better.", + "metadata": { + "headings": [ + "4.2. Implementation Details" + ], + "page_numbers": [ + 6 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "X2face [29], CSIM ↑ = 0.689. X2face [29], SSIM ↑ = 0.719. X2face [29], PSNR ↑ = 22.537. X2face [29], PRMSE ↓ = 3.26. X2face [29], AUCON ↑ = 0.813. NeuralHead-FF [35], CSIM ↑ = 0.229. NeuralHead-FF [35], SSIM ↑ = 0.635. NeuralHead-FF [35], PSNR ↑ = 20.818. NeuralHead-FF [35], PRMSE ↓ = 3.76. NeuralHead-FF [35], AUCON ↑ = 0.719. MarioNETte [8], CSIM ↑ = 0.755. MarioNETte [8], SSIM ↑ = 0.744. MarioNETte [8], PSNR ↑ = 23.244. MarioNETte [8], PRMSE ↓ = 3.13. MarioNETte [8], AUCON ↑ = 0.825. FOMM[24], CSIM ↑ = 0.813. FOMM[24], SSIM ↑ = 0.723. FOMM[24], PSNR ↑ = 30.394. FOMM[24], PRMSE ↓ = 3.20. FOMM[24], AUCON ↑ = 0.886. MeshG [33], CSIM ↑ = 0.822. MeshG [33], SSIM ↑ = 0.739. MeshG [33], PSNR ↑ = 30.394. MeshG [33], PRMSE ↓ = 3.20. MeshG [33], AUCON ↑ = 0.887. OSFV [27], CSIM ↑ = 0.895. OSFV [27], SSIM ↑ = 0.761. OSFV [27], PSNR ↑ = 30.695. OSFV [27], PRMSE ↓ = 1.64. OSFV", + "metadata": { + "headings": [ + "4.2. Implementation Details" + ], + "page_numbers": [ + 6 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "[27], AUCON ↑ = 0.921. DaGAN (ours), CSIM ↑ = 0.899. DaGAN (ours), SSIM ↑ = 0.804. DaGAN (ours), PSNR ↑ = 31.220. DaGAN (ours), PRMSE ↓ = 1.22. DaGAN (ours), AUCON ↑ = 0.939", + "metadata": { + "headings": [ + "4.2. Implementation Details" + ], + "page_numbers": [ + 6 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Table 2. Comparisons with keypoint-based methods on selfreenactment on the VoxCeleb1 dataset [20]. ↓ smaller is better.", + "metadata": { + "headings": [ + "4.2. Implementation Details" + ], + "page_numbers": [ + 6 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "X2face [29], L 1 ↓ = 0.078. X2face [29], AKD ↓ = 7.687. X2face [29], AED ↓ = 0.405. Monkey-Net [23], L 1 ↓ = 0.049. Monkey-Net [23], AKD ↓ = 1.878. Monkey-Net [23], AED ↓ = 0.199. FOMM[24], L 1 ↓ = 0.043. FOMM[24], AKD ↓ = 1.294. FOMM[24], AED ↓ = 0.140. OSFV [27], L 1 ↓ = 0.043. OSFV [27], AKD ↓ = 1.620. OSFV [27], AED ↓ = 0.153. DaGAN (ours), L 1 ↓ = 0.036. DaGAN (ours), AKD ↓ = 1.279. DaGAN (ours), AED ↓ = 0.117", + "metadata": { + "headings": [ + "4.2. Implementation Details" + ], + "page_numbers": [ + 6 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Figure 6. Qualitative comparisons of cross-identity reenactment on the VoxCeleb1 dataset [20].\nstage, we first train our face depth network using consecutive frames from videos in VoxCeleb1, and we fix it during the training of the whole deep generation framework.", + "metadata": { + "headings": [ + "4.2. Implementation Details" + ], + "page_numbers": [ + 6 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Self-reenactment. We first compare the face synthesis results where the source and driving images are of the same person, and report the results in Tab. 1. It can be observed that our DaGAN achieves the best results among all the compared methods. With a comparison to the other two keypoint-driven methods, i.e . FOMM [24] and OSFV [27], our DaGAN model obtains the most accurate head movements (1.22 of ours vs. 3.20 of FOMM, resulting in 1.64 point improvement on the PRMSE metric), which verifies that our depth-guided facial-keypoints estimation can better capture the motion of human heads. Regarding the facial expression, our method still obtains the highest score ( i.e . 0 . 939 on AUCON), meaning that our method can recover more fine-grained details of the face structures and micro-expression movements of the face. Also, our method produces the highest scores in both SSIM and PSNR, which\nTable 3. Comparisons with state-of-the-art methods on crossidentity reenactment on CelebV dataset [30].", + "metadata": { + "headings": [ + "4.3. Comparison with State-of-the-art Methods" + ], + "page_numbers": [ + 6, + 7 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "X2face [29], CSIM ↑ = 0.450. X2face [29], PRMSE ↓ = 3.62. X2face [29], AUCON ↑ = 0.679. NeuralHead-FF [35], CSIM ↑ = 0.108. NeuralHead-FF [35], PRMSE ↓ = 3.30. NeuralHead-FF [35], AUCON ↑ = 0.722. marioNETte [8], CSIM ↑ = 0.520. marioNETte [8], PRMSE ↓ = 3.41. marioNETte [8], AUCON ↑ = 0.710. FOMM[24], CSIM ↑ = 0.462. FOMM[24], PRMSE ↓ = 3.90. FOMM[24], AUCON ↑ = 0.667. MeshG [33], CSIM ↑ = 0.635. MeshG [33], PRMSE ↓ = 3.41. MeshG [33], AUCON ↑ = 0.709. OSFV [27], CSIM ↑ = 0.791. OSFV [27], PRMSE ↓ = 3.15. OSFV [27], AUCON ↑ = 0.805. DaGAN (ours), CSIM ↑ = 0.723. DaGAN (ours), PRMSE ↓ = 2.33. DaGAN (ours), AUCON ↑ = 0.873", + "metadata": { + "headings": [ + "4.3. Comparison with State-of-the-art Methods" + ], + "page_numbers": [ + 7 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Figure 7. Qualitative comparisons of cross-identity reenactment on the CelebV dataset [30].\nSource image\nDriving image\nFOMM\nOSFV\nOurs\ndemonstrates that our method can produce more realistic images compared with the most competitive methods. Additionally, we report the results on other three metrics proposed by [23] in Tab. 2. Our method obtains the best scores in these three metrics, clearly confirming our initial motivation that introducing the 3D depth maps can greatly benefit the keypoint-based generation.\nCross-identity reenactment. Wealso perform experiments on the CelebV dataset to exploit the cross-identity motion transfer, where the source and driving images are from different persons. We report the experimental results in Table 3. As we can observe that the PRMSE and AUCON of our DaGAN method remain the best among all methods, achieving 2.33 for PRMSE and 0.873 for AUCON. We also present several generated examples in Fig 6 and 7. As some methods do not release their code, we only show the results of those methods with available codes ( e.g . FOMM and OSFV). For the seen faces in Fig. 6, our method produces face images with more fine-grained details than the others. For instance, the mouth and eyes regions in three rows. It verifies that the utilization of depth maps enables the model to identify micro-expression movements of the human faces. For the unseen targets in the CelebV dataset, we also show some generated samples in Fig. 7. Our method can also produce visually natural results for unseen targets. Notably, the generated images of OSFV in the first row is almost the same as the source image as it cannot detect the subtle motion on the face, which is also part of the reason why it outperforms our method in terms of CSIM in Tab. 3.\nTable 4. Ablation study. 'Baseline' demotes the simplest model trained without the face depth network and cross-modal attention module. 'Baseline w/ CAM' indicates that the baseline employs the cross-modal attention module after feature warping module, while 'Baseline w/ FDN' combines the face depth network to estimate facial keypoints.", + "metadata": { + "headings": [ + "4.3. Comparison with State-of-the-art Methods" + ], + "page_numbers": [ + 7 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Baseline, CSIM ↑ = 0.688. Baseline, PRMSE ↓ = 5.39. Baseline, AUCON ↑ = 0.657. Baseline w/ FDN, CSIM ↑ = 0.710. Baseline w/ FDN, PRMSE ↓ = 2.69. Baseline w/ FDN, AUCON ↑ = 0.852. Baseline w/ CAM, CSIM ↑ = 0.698. Baseline w/ CAM, PRMSE ↓ = 2.56. Baseline w/ CAM, AUCON ↑ = 0.838. Ours (SA), CSIM ↑ = 0.681. Ours (SA), PRMSE ↓ = 5.18. Ours (SA), AUCON ↑ = 0.832. DaGAN (ours), CSIM ↑ = 0.723. DaGAN (ours), PRMSE ↓ = 2.33. DaGAN (ours), AUCON ↑ = 0.873. FOMM, CSIM ↑ = 0.462. FOMM, PRMSE ↓ = 3.90. FOMM, AUCON ↑ = 0.667. FOMMw/ FDN, CSIM ↑ = 0.695. FOMMw/ FDN, PRMSE ↓ = 2.81. FOMMw/ FDN, AUCON ↑ = 0.812. FOMMw/ CAM, CSIM ↑ = 0.669. FOMMw/ CAM, PRMSE ↓ = 2.36. FOMMw/ CAM, AUCON ↑ = 0.821. FOMMw/ FDN+CAM, CSIM ↑ = 0.716. FOMMw/ FDN+CAM, PRMSE ↓ = 2.28. FOMMw/ FDN+CAM, AUCON ↑ = 0.865", + "metadata": { + "headings": [ + "4.3. Comparison with State-of-the-art Methods" + ], + "page_numbers": [ + 7 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "In this section, we conduct ablation studies to demonstrate the effectiveness of the proposed self-supervised face depth learning method and the proposed two mechanisms for talking head generation. We report results of ablation studies in Tab. 4, and show several qualitative examples of the generation results in Fig. 8 and Fig. 10. Here, our baseline is the simplest model trained without the depth map and depth attention module.\nDense face geometry recovery. We first show recovered depth maps for human faces from the proposed face depth network. Since we do not have any ground-truth depths for the face images, it is tricky to directly evaluate the depth estimation quantitatively. Thus, we visualize the learned face depth maps and their corresponding 3d point clouds in Fig. 9. These visualization results strongly demonstrate that our proposed depth learning network is able to effectively recover the dense 3D geometry of human faces. The learned dense 3D facial structures are clearly very beneficial, and directly embedded in the proposed model to learn both sparse facial keypoints and global pixel-wise dense attention for the warping of features for generation, leading to a significant improvement on the generation.\nEffectiveness of depth-guided keypionts. We aim to explore the impact of depth map on keypoints detection and report the related results in Tab. 4. From Tab. 4, we can easily recognize that the depth-guided keypoints helps our model gain significant gain in PRMSE and AUCON, which indicate that the depth map really plays a significant role in the talking head generation task. From Fig. 8, the 'Baseline w/ FDN' predicts more accurate head orientation than 'Baseline', which can also be observed in Tab. 4, i.e . 2.69 vs. 5.39, on the PRMSE metric. This indicates that the proposed depth-guided facial-keypoints estimator models more accurate motions of the human heads.\nSource image\nDriving image\nBaseline\nBaseline w/ FDN\nBaseline w/ CAM\nOurs\nDepth map 𝐃 \"\nFigure 8. Qualitative ablation studies. Depth map and depth attention module can obtain improvements compared with baseline, while our full method produce the most realistic image.\nFigure 9. Visualization of estimated face depths and point clouds.\nImage\nDepth map\n3D point cloud\nImage\nDepth map\n3D point cloud\nSource image\nDriving image\nAttention map 1 Attention map 2 Attention map 3", + "metadata": { + "headings": [ + "4.4. Ablation study" + ], + "page_numbers": [ + 7, + 8 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Figure 10. Visualizing the dense depth-aware attention map in cross-modal attention module. In the last three columns, the red mark ' × ' indicates the query location.\nEffectiveness of cross-modal attention module. From the Tab. 4 and Fig. 8, the cross-modal attention module (CAM) can clearly improve the generation quality of expressionrelated micro-movements of human faces. In Fig. 8, we can observe that the generated face results with the proposed CAM module ( i.e . 'Baseline w/ CAM') have more vivid expression ( e.g . at eye regions) than that of 'Baseline w/ FDN' and 'Baseline'. It verifies that the proposed CAM enables the model to capture the expression-related micro-movements at important facial regions ( e.g ., eyes and mouth). Additionally, the variance 'Baseline w/ CAM'\noutperform 'Baseline' by 0.181 in AUCON. The results in Tab. 4 and Fig. 8 verify that our proposed depth attention module can effectively utilize the depth map to enable model focus on micro-movement of the human face to boost the quality of the generated image.\nAdditionally, we visualize the dense depth-aware attention maps in Fig. 10. The high activation areas of each query point are mainly located in the expression-related parts of the human face, ( e.g . eyes, nose, and mouth). These visualization results indicate that our designed cross-modal ( i.e . depth and RGB) attention module can indeed address the micro-movements of the human face to produce more vivid expression in generation.\nPlug-and-play experiments. Additionally, we also plug our proposed face depth network and depth-aware crossmodal attention module into FOMM [24], i.e ., using FOMM as a strong baseline, as our proposed modules can be flexibly deployed into existing video generation methods. The results are reported in Tab. 4. It is obvious that FOMM with the proposed modules can further achieve a significant improvement. These results fully demonstrate the effectiveness of learning dense 3D facial geometry ( i.e . depth) for the talking head video generation task.", + "metadata": { + "headings": [ + "4.4. Ablation study" + ], + "page_numbers": [ + 8 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "In this work, we proposed a depth-aware generative adversarial network (DaGAN) for talking head generation. DaGAN learns pixel-wise face depth maps in a selfsupervised manner to recover dense 3D facial geometry. We also design two mechanisms to better leverage the depth for the generation. First, we combine the geometry from depth maps and appearance from RGB images to predict more accurate facial keypoints. Second, we design a cross-modal\n( i.e . depth and RGB) attention mechanism to capture the expression-related micro movements to produce more finegrained details of facial structures. Ablation studies clearly show that depth maps can benefit the motion transfer between two faces. Our DaGAN also produces more realistic and natural-looking results compared to state-of-the-arts.", + "metadata": { + "headings": [ + "5. Conclusions" + ], + "page_numbers": [ + 8, + 9 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "[1] Egor Burkov, Igor Pasechnik, Artur Grigorev, and Victor Lempitsky. Neural head reenactment with latent pose descriptors. In CVPR , pages 13786-13795, 2020. 1, 2\n[2] Yu Deng, Jiaolong Yang, Dong Chen, Fang Wen, and Xin Tong. Disentangled and controllable face image generation via 3d imitative-contrastive learning. In CVPR , 2020. 2\n[3] Huan Fu, Mingming Gong, Chaohui Wang, Kayhan Batmanghelich, and Dacheng Tao. Deep ordinal regression network for monocular depth estimation. In CVPR , 2018. 2\n[4] Cl'ement Godard, Oisin Mac Aodha, Michael Firman, and Gabriel J. Brostow. Digging into self-supervised monocular depth prediction. In ICCV , 2019. 2, 4, 6\n[5] Ian Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, and Yoshua Bengio. Generative adversarial nets. In NIPS , 2014. 1, 2\n[6] Ariel Gordon, Hanhan Li, Rico Jonschkowski, and Anelia Angelova. Depth from videos in the wild: Unsupervised monocular depth learning from unknown cameras. In ICCV , 2019. 2\n[7] Hyowon Ha, Sunghoon Im, Jaesik Park, Hae-Gon Jeon, and In So Kweon. High-quality depth from uncalibrated small motion clip. In CVPR , 2016. 2\n[8] Sungjoo Ha, Martin Kersner, Beomsu Kim, Seokjun Seo, and Dongyoung Kim. Marionette: Few-shot face reenactment preserving identity of unseen targets. In AAAI , 2020. 2, 6, 7, 12, 13\n[9] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun. Deep residual learning for image recognition. In CVPR , 2016. 11\n[10] Xun Huang and Serge Belongie. Arbitrary style transfer in real-time with adaptive instance normalization. In ICCV , 2017. 13", + "metadata": { + "headings": [ + "References" + ], + "page_numbers": [ + 9 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "[11] Jireh Jam, Connah Kendrick, Vincent Drouard, Kevin Walker, Gee-Sern Hsu, and Moi Hoon Yap. R-mnet: A perceptual adversarial network for image inpainting. In WACV , 2021. 2\n[12] Justin Johnson, Alexandre Alahi, and Li Fei-Fei. Perceptual losses for real-time style transfer and super-resolution. In ECCV , 2016. 5\n[13] Tero Karras, Samuli Laine, and Timo Aila. A style-based generator architecture for generative adversarial networks. In CVPR , 2019. 2, 13\n[14] Tero Karras, Samuli Laine, Miika Aittala, Janne Hellsten, Jaakko Lehtinen, and Timo Aila. Analyzing and improving the image quality of stylegan. In CVPR , 2020. 2\n[15] Ang Li, Jianzhong Qi, Rui Zhang, and Ramamohanarao Kotagiri. Boosted gan with semantically interpretable information for image inpainting. In IJCNN . IEEE, 2019. 2\n[16] Hongyu Liu, Ziyu Wan, Wei Huang, Yibing Song, Xintong Han, and Jing Liao. Pd-gan: Probabilistic diverse gan for image inpainting. In CVPR , 2021. 2\n[17] Ming-Yu Liu, Xun Huang, Jiahui Yu, Ting-Chun Wang, and Arun Mallya. Generative adversarial networks for image and video synthesis: Algorithms and applications. Proceedings of the IEEE , 2021. 2\n[18] Xuan Luo, Jia-Bin Huang, Richard Szeliski, Kevin Matzen, and Johannes Kopf. Consistent video depth estimation. TOG , 2020. 2\n[19] Xudong Mao, Qing Li, Haoran Xie, Raymond YK Lau, Zhen Wang, and Stephen Paul Smolley. Least squares generative adversarial networks. In ICCV , 2017. 5\n[20] Arsha Nagrani, Joon Son Chung, and Andrew Zisserman. Voxceleb: a large-scale speaker identification dataset. arXiv preprint arXiv:1706.08612 , 2017. 2, 6", + "metadata": { + "headings": [ + "References" + ], + "page_numbers": [ + 9 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "[21] Alec Radford, Luke Metz, and Soumith Chintala. Unsupervised representation learning with deep convolutional generative adversarial networks. arXiv preprint arXiv:1511.06434 , 2015. 2\n[22] Scott Reed, Zeynep Akata, Xinchen Yan, Lajanugen Logeswaran, Bernt Schiele, and Honglak Lee. Generative adversarial text to image synthesis. In ICML , 2016. 2\n[23] Aliaksandr Siarohin, St'ephane Lathuili'ere, Sergey Tulyakov, Elisa Ricci, and Nicu Sebe. Animating arbitrary objects via deep motion transfer. In CVPR , 2019. 6, 7\n[24] Aliaksandr Siarohin, St'ephane Lathuili'ere, Sergey Tulyakov, Elisa Ricci, and Nicu Sebe. First order motion model for image animation. NeurIPS , 2019. 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13\n[25] Suzhen Wang, Lincheng Li, Yu Ding, Changjie Fan, and Xin Yu. Audio2head: Audio-driven one-shot talkinghead generation with natural head motion. arXiv preprint arXiv:2107.09293 , 2021. 2\n[26] Ting-Chun Wang, Ming-Yu Liu, Jun-Yan Zhu, Andrew Tao, Jan Kautz, and Bryan Catanzaro. High-resolution image synthesis and semantic manipulation with conditional gans. In CVPR , 2018. 11\n[27] Ting-Chun Wang, Arun Mallya, and Ming-Yu Liu. One-shot free-view neural talking-head synthesis for video conferencing. In CVPR , 2021. 1, 2, 3, 5, 6, 7, 13\n[28] Zhou Wang, Alan C Bovik, Hamid R Sheikh, and Eero P Simoncelli. Image quality assessment: from error visibility to structural similarity. TIP , 2004. 4\n[29] Olivia Wiles, A Koepke, and Andrew Zisserman. X2face: A network for controlling face generation using images, audio, and pose codes. In ECCV , 2018. 2, 6, 7, 12", + "metadata": { + "headings": [ + "References" + ], + "page_numbers": [ + 9 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "[30] Wayne Wu, Yunxuan Zhang, Cheng Li, Chen Qian, and Chen Change Loy. Reenactgan: Learning to reenact faces via boundary transfer. In ECCV , 2018. 1, 2, 6, 7\n[31] Runze Xu, Zhiming Zhou, Weinan Zhang, and Yong Yu. Face transfer with generative adversarial network. arXiv preprint arXiv:1710.06090 , 2017. 1\n[32] Jing Yang, Qingshan Liu, and Kaihua Zhang. Stacked hourglass network for robust facial landmark localisation. In CVPR Workshops , 2017. 6\n[33] Guangming Yao, Yi Yuan, Tianjia Shao, and Kun Zhou. Mesh guided one-shot face reenactment using graph convolutional networks. In ACM MM , 2020. 1, 2, 3, 5, 6, 7, 12, 13\n[34] Egor Zakharov, Aleksei Ivakhnenko, Aliaksandra Shysheya, and Victor Lempitsky. Fast bi-layer neural synthesis of oneshot realistic head avatars. In ECCV , 2020. 2\n[35] Egor Zakharov, Aliaksandra Shysheya, Egor Burkov, and Victor Lempitsky. Few-shot adversarial learning of realistic neural talking head models. In ICCV , 2019. 2, 3, 6, 7, 13\n[36] Han Zhang, Tao Xu, Hongsheng Li, Shaoting Zhang, Xiaogang Wang, Xiaolei Huang, and Dimitris N Metaxas. Stackgan: Text to photo-realistic image synthesis with stacked generative adversarial networks. In ICCV , 2017. 2\n[37] Yunxuan Zhang, Siwei Zhang, Yue He, Cheng Li, Chen Change Loy, and Ziwei Liu. One-shot face reenactment. arXiv preprint arXiv:1908.03251 , 2019. 2\n[38] Ruiqi Zhao, Tianyi Wu, and Guodong Guo. Sparse to dense motion transfer for face image animation. In ICCV , 2021. 2, 3", + "metadata": { + "headings": [ + "References" + ], + "page_numbers": [ + 9, + 10 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "[39] Hang Zhou, Yu Liu, Ziwei Liu, Ping Luo, and Xiaogang Wang. Talking face generation by adversarially disentangled audio-visual representation. In AAAI , 2019. 2, 3\n[40] Hang Zhou, Yasheng Sun, Wayne Wu, Chen Change Loy, Xiaogang Wang, and Ziwei Liu. Pose-controllable talking face generation by implicitly modularized audio-visual representation. In CVPR , 2021. 1, 2\n[41] Tinghui Zhou, Matthew Brown, Noah Snavely, and David G Lowe. Unsupervised learning of depth and ego-motion from video. In CVPR , 2017. 2, 4", + "metadata": { + "headings": [ + "References" + ], + "page_numbers": [ + 10 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Perceptual loss L P . To ensure that the generated images are similar to their corresponding ground truths, we use a multiscale implementation introduced by FOMM [24]. Specifically, we first downsample the ground truth and the output image to 4 different resolutions ( i.e . 256 × 256 , 128 × 128 , 64 × 64 and 32 × 32 ). We denote R 1 , R 2 , R 3 , R 4 as the generated images, and G 1 , G 2 , G 3 , G 4 as the corresponding ground truths of the four different resolutions, respectively. Then a pre-trained VGG network is used to extract features from both these downsampled ground truths and the output images. We compute the L 1 distance between the ground truth and output image in different resolutions:\nL P = 4 ∑ i =1 L 1 ( G i , R i ) (11)\nGAN loss L G . Given the ground truths and the generated images in 256 × 256 resolution, we adopt an adversarial learning objective function consisting of a least square loss and a feature matching loss introduced in the pix2pixHD [26] to train our DaGAN. Single-scale discriminators are used for training 256 × 256 images.\nEquivariance loss L E . This loss is utilized to ensure the consistency of the estimated keypoints, which is also adopted by FOMM [24]. Given an image I and one of its detected keypoint x k , we perform a known spatial transformation T on image I , resulting in a transformed image I T . Therefore, the detected keypoints x T ( k ) on this transformed image I T should be transformed in the same way. Thus, for the K detected keypoints from image I , we have:\nL E = K ∑ i =1 || x k -T -1 ( x T ( k ) ) || 1 (12)\nKeypoints distance loss L D . To make the detected facial keypoints much less crowded around a small neighbourhood, we employ a keypoints distance loss to penalize the model if the distance between two corresponding keypoints falls below a pre-defined threshold. For every two keypoints x i and x j in an image, we thus have:\nglyph[negationslash]", + "metadata": { + "headings": [ + "A.1. Loss details" + ], + "page_numbers": [ + 11 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "L D = K ∑ i =1 K ∑ j =1 (1 -sign ( || x i -x j || 1 -α )) , i = j, (13)\nwhere sign ( · ) is a sign function, and the α is the threshold of distance. It is set to 0.2 in our work, which shows good performance in our practice.", + "metadata": { + "headings": [ + "A.1. Loss details" + ], + "page_numbers": [ + 11 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "The implementation details of the sub-networks in our model are shown in Fig. 11 and described below.\nFace depth network F d . Our face depth network consists of an encoder and a decoder. The encoder is a ResNet18 network [9] without the final fully connected and pooling layers. The structure of the decoder is illustrated in Fig. 11a, which predicts a depth map with a size of 1 × 256 × 256 .\nKeypoint estimator F kp . In the training process, we concatenate the RGB image and its corresponding depth map to form an RGB-D input with a size of 4 × 256 × 256 , while the ouputs are K keypoints { x τ,n } K n =1 , x τ,n ∈ R 1 × 2 . The detailed structure of the keypoint estimator is shown in Fig. 11b.\nOcclusion estimator T . We utilize the occlusion estimator to predict an occlusion map to filter out the regions that should be inpainted, and a motion flow mask for weighting the motion field. As illustrated in Fig. 11c, there are two heads at the end to predict these two parts.\nFeature encoder E I . In Fig. 11f, to preserve low-level texture of the image, we only apply two DownBlocks to construct the feature encoder E I in the feature warping module.\nDepth encoder E d . The architecture of our depth encoder E d in the cross-modal attention module is shown in Fig. 11g. The structure is the same as E I , and thus we can make the features learned from both modalities with the same level of representation power.\nFigure 11. Architecture details of each components in our model. The 'DownBlock2d' (Fig. 11d) contains a convolutional layer with 3 × 3 kernel, a batch normalization layer, a ReLU activation layer, and an average pooling layer that downsamples the input. The interpolation layer in 'UpBlock2d' (Fig. 11d) is utilized to upsample the image. The symbol '/2' in other sub-networks indicates an average pooling layer to downsample the input.", + "metadata": { + "headings": [ + "A.2. Network architecture details of DaGAN" + ], + "page_numbers": [ + 11, + 12 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Discriminator D . The architecture of our discriminator (Fig. 11h) is inspired by FOMM [24]. The input image is first down-sampled four times, and then passed through a convolutional layer with a kernel size of 1 × 1 , and we finally output a prediction map with a size of 512 × 26 × 26 . Moreover, we collect the intermediate feature maps and feed them into the GAN loss L G .", + "metadata": { + "headings": [ + "A.2. Network architecture details of DaGAN" + ], + "page_numbers": [ + 12 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "· VoxCeleb1 dataset contains videos of 1,251 different identities with a resolution of 256 × 256 . We extract frames for each video and utilized the test split of VoxCeleb1 for evaluating self-reenactment. Following [8, 33], we created the test set by sampling 2,083 image sets from randomly selected 100 videos of the VoxCeleb1 test split.\n· CelebV dataset contains videos of five different celebrities with widely varying characteristics, which are utilize to evaluate the performance of the models for reenacting unseen targets, similar to the in-the-wild scenarios. Moreover, we uniformly sampled 2000 image sets from CelebV to perform the experiments.", + "metadata": { + "headings": [ + "B.1. Dataset Details" + ], + "page_numbers": [ + 12 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "· X2Face [29]. X2Face utilizes a simple framework to warp the image directly. We obtain its results on VoxCeleb1 from a previous work [8].\n· NeuralHead [35]. NeuralHead adopts an important component from style transfer [10, 13], i.e . AdaIN layers [10]. Since a reference implementation is absent, we directly report the replicated results from [8].\n· MarioNETte [8]. MarioNETte utilizes three components ( i.e . image attention block, target feature alignment, and landmark transformer) to address the identity preservation problem. We compare with it based on the results reported in the original paper.\n· FOMM [24]. FOMM propose a paradigm that aims to detect the keypoints of the face image and model the motion between two images using detected keypoints.\n· MeshG [33]. MeshG aims to generate a dense face mesh to model a dense motion map using graph convolutional network. As there is no official code available, we only report the its results from the original paper.\n· OSFV [27]. OSFV provides a novel keypoint generation method. We reimplemented this method according to its published paper and train it on the VoxCeleb1 dataset to compare with the proposed method.", + "metadata": { + "headings": [ + "B.2. Compare methods" + ], + "page_numbers": [ + 12, + 13 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + }, + { + "text": "Source\nDriving Attention of Ours(SA) Ours(SA) Attention of Ours Figure 12. Visualization of attention maps of different methods.\nOurs\nMore explanation of depth-aware attention. Each learned 3D spatial depth point is inherently used as a query for calculating a global self-attention, which is thus depth-aware. Here, we disable the depth in the cross-modal attention module, which then becomes a standard self-attention module, termed as Ours (SA). A qualitative comparison in Fig. 12 shows the difference of using and not using depth for the attention learning. Our cross-modal attention can effectively learn to attend to key foreground facial regions (e.g. expression-related keypoint regions), comparing to the one without depth ( i.e . Ours (SA)) which also attends to cluttered backgrounds, further confirming the advantage of dense 3D geometry for overcoming noisy background in generation.\nMore qualitative results. We show more samples in Fig. 13 and Fig. 14. The visualization shows that our DaGAN can produce more natural-looking faces than the other comparison methods. More than that, we also present our generated depth maps of the source images and the driving images. We can observe that our estimated depth maps can effectively distinguish the face foreground area of an image from the background. These robustly predicted depth maps can also verify the effectiveness of our method for self-supervised dense geometry recovery.\nVideo generation demo. Wealso provide a video generation demonstration to show a more detailed comparison qualitatively with the most competitive methods in the literature, including FOMM [24] and OSFV [27]. The demo is attached together with this supplement document.\nFigure 13. Qualitative comparisons of different methods on cross-identity face reenactment. We also show the predicted face depth maps and detected keypoints of source images and driving images.\nFigure 14. Qualitative comparisons of different methods on cross-identity face reenactment. We also show the predicted face depth maps and detected keypoints of source images and driving images.", + "metadata": { + "headings": [ + "B.3. More results" + ], + "page_numbers": [ + 13, + 14, + 15 + ], + "source": "https://arxiv.org/pdf/2203.06605" + } + } +] \ No newline at end of file diff --git a/agentic_rag/gradio_app.py b/agentic_rag/gradio_app.py new file mode 100644 index 0000000..e07cd17 --- /dev/null +++ b/agentic_rag/gradio_app.py @@ -0,0 +1,354 @@ +import gradio as gr +import os +from typing import List, Dict, Any +from pathlib import Path +import tempfile +from dotenv import load_dotenv +import yaml + +from pdf_processor import PDFProcessor +from web_processor import WebProcessor +from repo_processor import RepoProcessor +from store import VectorStore +from local_rag_agent import LocalRAGAgent +from rag_agent import RAGAgent + +# Load environment variables and config +load_dotenv() + +def load_config(): + """Load configuration from config.yaml""" + try: + with open('config.yaml', 'r') as f: + config = yaml.safe_load(f) + return config.get('HUGGING_FACE_HUB_TOKEN') + except Exception as e: + print(f"Error loading config: {str(e)}") + return None + +# Initialize components +pdf_processor = PDFProcessor() +web_processor = WebProcessor() +repo_processor = RepoProcessor() +vector_store = VectorStore() + +# Initialize agents +hf_token = load_config() +openai_key = os.getenv("OPENAI_API_KEY") + +# Initialize agents with use_cot=True to ensure CoT is available +local_agent = LocalRAGAgent(vector_store, use_cot=True) if hf_token else None +openai_agent = RAGAgent(vector_store, openai_api_key=openai_key, use_cot=True) if openai_key else None + +def process_pdf(file: tempfile._TemporaryFileWrapper) -> str: + """Process uploaded PDF file""" + try: + chunks, document_id = pdf_processor.process_pdf(file.name) + vector_store.add_pdf_chunks(chunks, document_id=document_id) + return f"✓ Successfully processed PDF and added {len(chunks)} chunks to knowledge base (ID: {document_id})" + except Exception as e: + return f"✗ Error processing PDF: {str(e)}" + +def process_url(url: str) -> str: + """Process web content from URL""" + try: + # Process URL and get chunks + chunks = web_processor.process_url(url) + if not chunks: + return "✗ No content extracted from URL" + + # Add chunks to vector store with URL as source ID + vector_store.add_web_chunks(chunks, source_id=url) + return f"✓ Successfully processed URL and added {len(chunks)} chunks to knowledge base" + except Exception as e: + return f"✗ Error processing URL: {str(e)}" + +def process_repo(repo_path: str) -> str: + """Process repository content""" + try: + # Process repository and get chunks + chunks, document_id = repo_processor.process_repo(repo_path) + if not chunks: + return "✗ No content extracted from repository" + + # Add chunks to vector store + vector_store.add_repo_chunks(chunks, document_id=document_id) + return f"✓ Successfully processed repository and added {len(chunks)} chunks to knowledge base (ID: {document_id})" + except Exception as e: + return f"✗ Error processing repository: {str(e)}" + +def chat(message: str, history: List[List[str]], agent_type: str, use_cot: bool, language: str, collection: str) -> List[List[str]]: + """Process chat message using selected agent and collection""" + try: + print("\n" + "="*50) + print(f"New message received: {message}") + print(f"Agent: {agent_type}, CoT: {use_cot}, Language: {language}, Collection: {collection}") + print("="*50 + "\n") + + # Select appropriate agent and reinitialize with correct settings + if agent_type == "Local (Mistral)": + if not hf_token: + response_text = "Local agent not available. Please check your HuggingFace token configuration." + print(f"Error: {response_text}") + return history + [[message, response_text]] + agent = LocalRAGAgent(vector_store, use_cot=use_cot) + else: + if not openai_key: + response_text = "OpenAI agent not available. Please check your OpenAI API key configuration." + print(f"Error: {response_text}") + return history + [[message, response_text]] + agent = RAGAgent(vector_store, openai_api_key=openai_key, use_cot=use_cot) + + # Convert language selection to language code + lang_code = "es" if language == "Spanish" else "en" + agent.language = lang_code + + # Process query and get response + print("Processing query...") + response = agent.process_query(message) + print("Query processed successfully") + + # Format response with reasoning steps if CoT is enabled + if use_cot and "reasoning_steps" in response: + formatted_response = "🤔 Let me think about this step by step:\n\n" + print("\nChain of Thought Reasoning Steps:") + print("-" * 50) + + # Add each reasoning step with conclusion + for i, step in enumerate(response["reasoning_steps"], 1): + step_text = f"Step {i}:\n{step}\n" + formatted_response += step_text + print(step_text) + + # Add intermediate response to chat history to show progress + history.append([None, f"🔄 Step {i} Conclusion:\n{step}"]) + + # Add final answer + print("\nFinal Answer:") + print("-" * 50) + final_answer = "\n🎯 Final Answer:\n" + response["answer"] + formatted_response += final_answer + print(final_answer) + + # Add sources if available + if response.get("context"): + print("\nSources Used:") + print("-" * 50) + sources_text = "\n📚 Sources used:\n" + formatted_response += sources_text + print(sources_text) + + for ctx in response["context"]: + source = ctx["metadata"].get("source", "Unknown") + if "page_numbers" in ctx["metadata"]: + pages = ctx["metadata"].get("page_numbers", []) + source_line = f"- {source} (pages: {pages})\n" + else: + file_path = ctx["metadata"].get("file_path", "Unknown") + source_line = f"- {source} (file: {file_path})\n" + formatted_response += source_line + print(source_line) + + # Add final formatted response to history + history.append([message, formatted_response]) + else: + formatted_response = response["answer"] + print("\nStandard Response:") + print("-" * 50) + print(formatted_response) + history.append([message, formatted_response]) + + print("\n" + "="*50) + print("Response complete") + print("="*50 + "\n") + + return history + except Exception as e: + error_msg = f"Error processing query: {str(e)}" + print(f"\nError occurred:") + print("-" * 50) + print(error_msg) + print("="*50 + "\n") + history.append([message, error_msg]) + return history + +def create_interface(): + """Create Gradio interface""" + with gr.Blocks(title="Agentic RAG System", theme=gr.themes.Soft()) as interface: + gr.Markdown(""" + # 🤖 Agentic RAG System + + Upload PDFs, process web content, repositories, and chat with your documents using local or OpenAI models. + """) + + with gr.Tab("Document Processing"): + with gr.Row(): + with gr.Column(): + pdf_file = gr.File(label="Upload PDF") + pdf_button = gr.Button("Process PDF") + pdf_output = gr.Textbox(label="PDF Processing Output") + + with gr.Column(): + url_input = gr.Textbox(label="Enter URL") + url_button = gr.Button("Process URL") + url_output = gr.Textbox(label="URL Processing Output") + + with gr.Column(): + repo_input = gr.Textbox(label="Enter Repository Path or URL") + repo_button = gr.Button("Process Repository") + repo_output = gr.Textbox(label="Repository Processing Output") + + with gr.Tab("Standard Chat Interface"): + with gr.Row(): + with gr.Column(): + standard_agent_dropdown = gr.Dropdown( + choices=["Local (Mistral)", "OpenAI"] if openai_key else ["Local (Mistral)"], + value="Local (Mistral)", + label="Select Agent" + ) + with gr.Column(): + standard_language_dropdown = gr.Dropdown( + choices=["English", "Spanish"], + value="English", + label="Response Language" + ) + with gr.Column(): + standard_collection_dropdown = gr.Dropdown( + choices=["PDF Collection", "Repository Collection", "General Knowledge"], + value="PDF Collection", + label="Knowledge Collection" + ) + standard_chatbot = gr.Chatbot(height=400) + with gr.Row(): + standard_msg = gr.Textbox(label="Your Message", scale=9) + standard_send = gr.Button("Send", scale=1) + standard_clear = gr.Button("Clear Chat") + + with gr.Tab("Chain of Thought Chat Interface"): + with gr.Row(): + with gr.Column(): + cot_agent_dropdown = gr.Dropdown( + choices=["Local (Mistral)", "OpenAI"] if openai_key else ["Local (Mistral)"], + value="Local (Mistral)", + label="Select Agent" + ) + with gr.Column(): + cot_language_dropdown = gr.Dropdown( + choices=["English", "Spanish"], + value="English", + label="Response Language" + ) + with gr.Column(): + cot_collection_dropdown = gr.Dropdown( + choices=["PDF Collection", "Repository Collection", "General Knowledge"], + value="PDF Collection", + label="Knowledge Collection" + ) + cot_chatbot = gr.Chatbot(height=400) + with gr.Row(): + cot_msg = gr.Textbox(label="Your Message", scale=9) + cot_send = gr.Button("Send", scale=1) + cot_clear = gr.Button("Clear Chat") + + # Event handlers + pdf_button.click(process_pdf, inputs=[pdf_file], outputs=[pdf_output]) + url_button.click(process_url, inputs=[url_input], outputs=[url_output]) + repo_button.click(process_repo, inputs=[repo_input], outputs=[repo_output]) + + # Standard chat handlers + standard_msg.submit( + chat, + inputs=[ + standard_msg, + standard_chatbot, + standard_agent_dropdown, + gr.State(False), # use_cot=False + standard_language_dropdown, + standard_collection_dropdown + ], + outputs=[standard_chatbot] + ) + standard_send.click( + chat, + inputs=[ + standard_msg, + standard_chatbot, + standard_agent_dropdown, + gr.State(False), # use_cot=False + standard_language_dropdown, + standard_collection_dropdown + ], + outputs=[standard_chatbot] + ) + standard_clear.click(lambda: None, None, standard_chatbot, queue=False) + + # CoT chat handlers + cot_msg.submit( + chat, + inputs=[ + cot_msg, + cot_chatbot, + cot_agent_dropdown, + gr.State(True), # use_cot=True + cot_language_dropdown, + cot_collection_dropdown + ], + outputs=[cot_chatbot] + ) + cot_send.click( + chat, + inputs=[ + cot_msg, + cot_chatbot, + cot_agent_dropdown, + gr.State(True), # use_cot=True + cot_language_dropdown, + cot_collection_dropdown + ], + outputs=[cot_chatbot] + ) + cot_clear.click(lambda: None, None, cot_chatbot, queue=False) + + # Instructions + gr.Markdown(""" + ## Instructions + + 1. **Document Processing**: + - Upload PDFs using the file uploader + - Process web content by entering URLs + - Process repositories by entering paths or GitHub URLs + - All processed content is added to the knowledge base + + 2. **Standard Chat Interface**: + - Quick responses without detailed reasoning steps + - Select your preferred agent (Local Mistral or OpenAI) + - Choose your preferred response language + - Select which knowledge collection to query + + 3. **Chain of Thought Chat Interface**: + - Detailed responses with step-by-step reasoning + - See the planning, research, reasoning, and synthesis steps + - Great for complex queries or when you want to understand the reasoning process + - May take longer but provides more detailed and thorough answers + + Note: OpenAI agent requires an API key in `.env` file + """) + + return interface + +def main(): + # Check configuration + if not hf_token and not openai_key: + print("⚠️ Warning: Neither HuggingFace token nor OpenAI key found. Please configure at least one.") + + # Launch interface + interface = create_interface() + interface.launch( + server_name="0.0.0.0", + server_port=7860, + share=True, + inbrowser=True + ) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/agentic_rag/img/output_1.png b/agentic_rag/img/output_1.png new file mode 100644 index 0000000..7709e99 Binary files /dev/null and b/agentic_rag/img/output_1.png differ diff --git a/agentic_rag/img/output_2.png b/agentic_rag/img/output_2.png new file mode 100644 index 0000000..9e36858 Binary files /dev/null and b/agentic_rag/img/output_2.png differ diff --git a/agentic_rag/img/output_3.png b/agentic_rag/img/output_3.png new file mode 100644 index 0000000..87be763 Binary files /dev/null and b/agentic_rag/img/output_3.png differ diff --git a/agentic_rag/img/output_response.png b/agentic_rag/img/output_response.png new file mode 100644 index 0000000..ae358e3 Binary files /dev/null and b/agentic_rag/img/output_response.png differ diff --git a/agentic_rag/local_rag_agent.py b/agentic_rag/local_rag_agent.py new file mode 100644 index 0000000..308b13c --- /dev/null +++ b/agentic_rag/local_rag_agent.py @@ -0,0 +1,353 @@ +from typing import List, Dict, Any, Optional +from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline +import torch +from pydantic import BaseModel, Field +from store import VectorStore +from agents.agent_factory import create_agents +import argparse +import yaml +import os +import logging + +# Configure logging +logging.basicConfig( + level=logging.INFO, + format='%(asctime)s - %(levelname)s - %(message)s', + datefmt='%H:%M:%S' +) +logger = logging.getLogger(__name__) + +class QueryAnalysis(BaseModel): + """Pydantic model for query analysis output""" + query_type: str = Field( + description="Type of query: 'pdf_documents', 'general_knowledge', or 'unsupported'" + ) + reasoning: str = Field( + description="Reasoning behind the query type selection" + ) + requires_context: bool = Field( + description="Whether the query requires additional context to answer" + ) + +class LocalLLM: + """Wrapper for local LLM to match LangChain's ChatOpenAI interface""" + def __init__(self, pipeline): + self.pipeline = pipeline + + def invoke(self, messages): + # Convert messages to a single prompt + prompt = "\n".join([msg.content for msg in messages]) + result = self.pipeline( + prompt, + max_new_tokens=512, + do_sample=True, + temperature=0.1, + top_p=0.95, + return_full_text=False + )[0]["generated_text"] + + # Create a response object with content attribute + class Response: + def __init__(self, content): + self.content = content + + return Response(result.strip()) + +class LocalRAGAgent: + def __init__(self, vector_store: VectorStore, model_name: str = "mistralai/Mistral-7B-Instruct-v0.2", use_cot: bool = False, language: str = "en"): + """Initialize local RAG agent with vector store and local LLM""" + self.vector_store = vector_store + self.use_cot = use_cot + self.language = language + + # Load HuggingFace token from config + try: + with open('config.yaml', 'r') as f: + config = yaml.safe_load(f) + token = config.get('HUGGING_FACE_HUB_TOKEN') + if not token: + raise ValueError("HUGGING_FACE_HUB_TOKEN not found in config.yaml") + except Exception as e: + raise Exception(f"Failed to load HuggingFace token from config.yaml: {str(e)}") + + # Load model and tokenizer + print("\nLoading model and tokenizer...") + self.model = AutoModelForCausalLM.from_pretrained( + model_name, + torch_dtype=torch.float16, + device_map="auto", + token=token + ) + self.tokenizer = AutoTokenizer.from_pretrained(model_name, token=token) + + # Create text generation pipeline + self.pipeline = pipeline( + "text-generation", + model=self.model, + tokenizer=self.tokenizer, + max_new_tokens=512, + do_sample=True, + temperature=0.1, + top_p=0.95, + device_map="auto" + ) + print("✓ Model loaded successfully") + + # Create LLM wrapper + self.llm = LocalLLM(self.pipeline) + + # Initialize specialized agents if CoT is enabled + self.agents = create_agents(self.llm, vector_store) if use_cot else None + + def process_query(self, query: str) -> Dict[str, Any]: + """Process a user query using the agentic RAG pipeline""" + # Analyze the query + analysis = self._analyze_query(query) + logger.info(f"Query analysis: {analysis}") + + if self.use_cot: + return self._process_query_with_cot(query, analysis) + else: + return self._process_query_standard(query, analysis) + + def _process_query_with_cot(self, query: str, analysis: QueryAnalysis) -> Dict[str, Any]: + """Process query using Chain of Thought reasoning with multiple agents""" + logger.info("Processing query with Chain of Thought reasoning") + + # Get initial context if needed + initial_context = [] + if analysis.requires_context and analysis.query_type != "unsupported": + pdf_context = self.vector_store.query_pdf_collection(query) + repo_context = self.vector_store.query_repo_collection(query) + initial_context = pdf_context + repo_context + + try: + # Step 1: Planning + logger.info("Step 1: Planning") + if not self.agents or "planner" not in self.agents: + logger.warning("No planner agent available, using direct response") + return self._generate_general_response(query) + + plan = self.agents["planner"].plan(query, initial_context) + logger.info(f"Generated plan:\n{plan}") + + # Step 2: Research each step (if researcher is available) + logger.info("Step 2: Research") + research_results = [] + if self.agents.get("researcher") is not None and initial_context: + for step in plan.split("\n"): + if not step.strip(): + continue + step_research = self.agents["researcher"].research(query, step) + research_results.append({"step": step, "findings": step_research}) + logger.info(f"Research for step: {step}\nFindings: {step_research}") + else: + # If no researcher or no context, use the steps directly + research_results = [{"step": step, "findings": []} for step in plan.split("\n") if step.strip()] + logger.info("No research performed (no researcher agent or no context available)") + + # Step 3: Reasoning about each step + logger.info("Step 3: Reasoning") + if not self.agents.get("reasoner"): + logger.warning("No reasoner agent available, using direct response") + return self._generate_general_response(query) + + reasoning_steps = [] + for result in research_results: + step_reasoning = self.agents["reasoner"].reason( + query, + result["step"], + result["findings"] if result["findings"] else [{"content": "Using general knowledge", "metadata": {"source": "General Knowledge"}}] + ) + reasoning_steps.append(step_reasoning) + logger.info(f"Reasoning for step: {result['step']}\n{step_reasoning}") + + # Step 4: Synthesize final answer + logger.info("Step 4: Synthesis") + if not self.agents.get("synthesizer"): + logger.warning("No synthesizer agent available, using direct response") + return self._generate_general_response(query) + + final_answer = self.agents["synthesizer"].synthesize(query, reasoning_steps) + logger.info(f"Final synthesized answer:\n{final_answer}") + + return { + "answer": final_answer, + "context": initial_context, + "reasoning_steps": reasoning_steps + } + except Exception as e: + logger.error(f"Error in CoT processing: {str(e)}") + logger.info("Falling back to general response") + return self._generate_general_response(query) + + def _process_query_standard(self, query: str, analysis: QueryAnalysis) -> Dict[str, Any]: + """Process query using standard approach without Chain of Thought""" + # If query type is unsupported, use general knowledge + if analysis.query_type == "unsupported": + return self._generate_general_response(query) + + # First try to get context from PDF documents + pdf_context = self.vector_store.query_pdf_collection(query) + + # Then try repository documents + repo_context = self.vector_store.query_repo_collection(query) + + # Combine all context + all_context = pdf_context + repo_context + + # Generate response using context if available, otherwise use general knowledge + if all_context and analysis.requires_context: + response = self._generate_response(query, all_context) + else: + response = self._generate_general_response(query) + + return response + + def _analyze_query(self, query: str) -> QueryAnalysis: + """Analyze the query to determine the best source of information""" + prompt = f"""You are an intelligent agent that analyzes user queries to determine the best source of information. + + Analyze the following query and determine: + 1. Whether it should query the PDF documents collection or general knowledge collection + 2. Your reasoning for this decision + 3. Whether the query requires additional context to provide a good answer + + Query: {query} + + Provide your response in the following JSON format: + {{ + "query_type": "pdf_documents OR general_knowledge OR unsupported", + "reasoning": "your reasoning here", + "requires_context": true OR false + }} + + Response:""" + + try: + response = self._generate_text(prompt) + # Extract JSON from the response using string manipulation + start_idx = response.find("{") + end_idx = response.rfind("}") + 1 + if start_idx != -1 and end_idx != -1: + json_str = response[start_idx:end_idx] + return QueryAnalysis.model_validate_json(json_str) + raise ValueError("Could not parse JSON from response") + except Exception as e: + # Default to PDF documents if parsing fails + return QueryAnalysis( + query_type="pdf_documents", + reasoning="Defaulting to PDF documents due to parsing error", + requires_context=True + ) + + def _generate_text(self, prompt: str, max_length: int = 512) -> str: + """Generate text using the local model""" + result = self.pipeline( + prompt, + max_new_tokens=max_length, + do_sample=True, + temperature=0.1, + top_p=0.95, + return_full_text=False + )[0]["generated_text"] + + return result.strip() + + def _generate_response(self, query: str, context: List[Dict[str, Any]]) -> Dict[str, Any]: + """Generate a response using the retrieved context""" + context_str = "\n\n".join([f"Context {i+1}:\n{item['content']}" + for i, item in enumerate(context)]) + + template = """Answer the following query using the provided context. +If the context doesn't contain enough information to answer accurately, +say so explicitly. + +Context: +{context} + +Query: {query} + +Answer:""" + + prompt = template.format(context=context_str, query=query) + response = self._generate_text(prompt) + + return { + "answer": response, + "context": context + } + + def _generate_general_response(self, query: str) -> Dict[str, Any]: + """Generate a response using general knowledge when no context is available""" + template = """You are a helpful AI assistant. While I don't have specific information from my document collection about this query, I'll share what I know about it. + +Query: {query} + +Answer:""" + + prompt = template.format(query=query) + response = self._generate_text(prompt) + + prefix = "I didn't find specific information in my documents, but here's what I know about it:\n\n" + + return { + "answer": prefix + response, + "context": [] + } + +def main(): + parser = argparse.ArgumentParser(description="Query documents using local Mistral model") + parser.add_argument("--query", required=True, help="Query to process") + parser.add_argument("--store-path", default="embeddings", help="Path to the vector store") + parser.add_argument("--model", default="mistralai/Mistral-7B-Instruct-v0.2", help="Model to use") + parser.add_argument("--quiet", action="store_true", help="Disable verbose logging") + parser.add_argument("--use-cot", action="store_true", help="Enable Chain of Thought reasoning") + + args = parser.parse_args() + + # Set logging level based on quiet flag + if args.quiet: + logger.setLevel(logging.WARNING) + else: + logger.setLevel(logging.INFO) + + print("\nInitializing RAG agent...") + print("=" * 50) + + try: + logger.info(f"Initializing vector store from: {args.store_path}") + store = VectorStore(persist_directory=args.store_path) + logger.info("Initializing local RAG agent...") + agent = LocalRAGAgent(store, model_name=args.model, use_cot=args.use_cot) + + print(f"\nProcessing query: {args.query}") + print("=" * 50) + + response = agent.process_query(args.query) + + print("\nResponse:") + print("-" * 50) + print(response["answer"]) + + if response.get("reasoning_steps"): + print("\nReasoning Steps:") + print("-" * 50) + for i, step in enumerate(response["reasoning_steps"]): + print(f"\nStep {i+1}:") + print(step) + + if response.get("context"): + print("\nSources used:") + for ctx in response["context"]: + source = ctx["metadata"].get("source", "Unknown") + pages = ctx["metadata"].get("page_numbers", []) + print(f"- {source} (pages: {pages})") + + except Exception as e: + logger.error(f"Error during execution: {str(e)}", exc_info=True) + print(f"\n✗ Error: {str(e)}") + exit(1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/agentic_rag/main.py b/agentic_rag/main.py new file mode 100644 index 0000000..6a37fc2 --- /dev/null +++ b/agentic_rag/main.py @@ -0,0 +1,105 @@ +import os +from typing import List, Optional +from fastapi import FastAPI, File, UploadFile, HTTPException +from fastapi.middleware.cors import CORSMiddleware +from pydantic import BaseModel +from dotenv import load_dotenv +import uuid + +from pdf_processor import PDFProcessor +from store import VectorStore +from local_rag_agent import LocalRAGAgent +from rag_agent import RAGAgent + +# Load environment variables +load_dotenv() + +# Initialize FastAPI app +app = FastAPI( + title="Agentic RAG API", + description="API for processing PDFs and answering queries using an agentic RAG system", + version="1.0.0" +) + +# Add CORS middleware +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +# Initialize components +pdf_processor = PDFProcessor() +vector_store = VectorStore() + +# Initialize RAG agent - use OpenAI if API key is available, otherwise use local model. by default = local model +openai_api_key = os.getenv("OPENAI_API_KEY") +if openai_api_key: + print("\nUsing OpenAI GPT-4 for RAG...") + rag_agent = RAGAgent(vector_store=vector_store, openai_api_key=openai_api_key) +else: + print("\nOpenAI API key not found. Using local Mistral model for RAG...") + rag_agent = LocalRAGAgent(vector_store=vector_store) + +class QueryRequest(BaseModel): + query: str + use_cot: bool = False + +class QueryResponse(BaseModel): + answer: str + reasoning: Optional[str] = None + context: List[dict] + +@app.post("/upload/pdf") +async def upload_pdf(file: UploadFile = File(...)): + """Upload and process a PDF file""" + if not file.filename.lower().endswith('.pdf'): + raise HTTPException(status_code=400, detail="File must be a PDF") + + try: + # Save the uploaded file temporarily + temp_path = f"temp_{uuid.uuid4()}.pdf" + with open(temp_path, "wb") as buffer: + content = await file.read() + buffer.write(content) + + # Process the PDF + chunks, document_id = pdf_processor.process_pdf(temp_path) + + # Add chunks to vector store + vector_store.add_pdf_chunks(chunks, document_id=document_id) + + # Clean up + os.remove(temp_path) + + return { + "message": "PDF processed successfully", + "document_id": document_id, + "chunks_processed": len(chunks) + } + + except Exception as e: + if os.path.exists(temp_path): + os.remove(temp_path) + raise HTTPException(status_code=500, detail=str(e)) + +@app.post("/query", response_model=QueryResponse) +async def query(request: QueryRequest): + """Process a query using the RAG agent""" + try: + # Reinitialize agent with CoT setting + if openai_api_key: + rag_agent = RAGAgent(vector_store=vector_store, openai_api_key=openai_api_key, use_cot=request.use_cot) + else: + rag_agent = LocalRAGAgent(vector_store=vector_store, use_cot=request.use_cot) + + response = rag_agent.process_query(request.query) + return response + except Exception as e: + raise HTTPException(status_code=500, detail=str(e)) + +if __name__ == "__main__": + import uvicorn + uvicorn.run(app, host="0.0.0.0", port=8000) \ No newline at end of file diff --git a/agentic_rag/pdf_processor.py b/agentic_rag/pdf_processor.py new file mode 100644 index 0000000..03fc0eb --- /dev/null +++ b/agentic_rag/pdf_processor.py @@ -0,0 +1,248 @@ +from pathlib import Path +from typing import List, Dict, Any +import json +import argparse +from docling.document_converter import DocumentConverter +from docling.chunking import HybridChunker +from urllib.parse import urlparse +import warnings +import transformers +import uuid # Add at the top with other imports + +# Suppress the token length warning +warnings.filterwarnings('ignore', category=UserWarning, module='transformers.generation.utils') + +def is_url(string: str) -> bool: + """Check if a string is a valid URL""" + try: + result = urlparse(string) + return all([result.scheme, result.netloc]) + except: + return False + +class PDFProcessor: + def __init__(self, tokenizer: str = "BAAI/bge-small-en-v1.5"): + """Initialize PDF processor with Docling components""" + # Suppress CUDA compilation warnings + warnings.filterwarnings('ignore', category=UserWarning, module='torch.utils.cpp_extension') + # Suppress token length warnings + warnings.filterwarnings('ignore', category=UserWarning, module='transformers.generation.utils') + warnings.filterwarnings('ignore', category=UserWarning, module='transformers.modeling_utils') + + self.converter = DocumentConverter() + self.tokenizer = tokenizer + + def _extract_metadata(self, meta: Any) -> Dict[str, Any]: + """Safely extract metadata from various object types""" + try: + if hasattr(meta, '__dict__'): + # If it's an object with attributes + return { + "headings": getattr(meta, "headings", []), + "page_numbers": self._extract_page_numbers(meta) + } + elif isinstance(meta, dict): + # If it's a dictionary + return { + "headings": meta.get("headings", []), + "page_numbers": self._extract_page_numbers(meta) + } + else: + # Default empty metadata + return { + "headings": [], + "page_numbers": [] + } + except Exception as e: + print(f"Warning: Error extracting metadata: {str(e)}") + return { + "headings": [], + "page_numbers": [] + } + + def _try_chunk_with_size(self, document: Any, chunk_size: int) -> List[Any]: + """Try chunking with a specific size, return None if it fails""" + try: + # Create a new chunker with the specified size + chunker = HybridChunker( + tokenizer=self.tokenizer, + chunk_size=chunk_size, + chunk_overlap=0.1 + ) + return list(chunker.chunk(document)) + except Exception as e: + print(f"Warning: Chunking failed with size {chunk_size}: {str(e)}") + return None + + def process_pdf(self, file_path: str | Path) -> List[Dict[str, Any]]: + """Process a PDF file and return chunks of text with metadata""" + try: + # Generate a unique document ID + document_id = str(uuid.uuid4()) + + # Convert PDF using Docling + conv_result = self.converter.convert(file_path) + if not conv_result or not conv_result.document: + raise ValueError(f"Failed to convert PDF: {file_path}") + + # Try chunking with progressively smaller sizes + chunks = None + for chunk_size in [200, 150, 100, 75]: + chunks = self._try_chunk_with_size(conv_result.document, chunk_size) + if chunks: + print(f"Successfully chunked with size {chunk_size}") + break + + if not chunks: + raise ValueError("Failed to chunk document with any chunk size") + + # Process chunks into a standardized format + processed_chunks = [] + for chunk in chunks: + # Handle both dictionary and DocChunk objects + text = chunk.text if hasattr(chunk, 'text') else chunk.get('text', '') + meta = chunk.meta if hasattr(chunk, 'meta') else chunk.get('meta', {}) + + metadata = self._extract_metadata(meta) + metadata["source"] = str(file_path) + metadata["document_id"] = document_id # Add document_id to metadata + + processed_chunk = { + "text": text, + "metadata": metadata + } + processed_chunks.append(processed_chunk) + + return processed_chunks, document_id # Return both chunks and document_id + + except Exception as e: + raise Exception(f"Error processing PDF {file_path}: {str(e)}") + + def process_pdf_url(self, url: str) -> List[Dict[str, Any]]: + """Process a PDF file from a URL and return chunks of text with metadata""" + try: + # Convert PDF using Docling's built-in URL support + conv_result = self.converter.convert(url) + if not conv_result or not conv_result.document: + raise ValueError(f"Failed to convert PDF from URL: {url}") + + # Generate a unique document ID + document_id = str(uuid.uuid4()) + + # Chunk the document + chunks = list(self.chunker.chunk(conv_result.document)) + + # Process chunks into a standardized format + processed_chunks = [] + for chunk in chunks: + # Handle both dictionary and DocChunk objects + text = chunk.text if hasattr(chunk, 'text') else chunk.get('text', '') + meta = chunk.meta if hasattr(chunk, 'meta') else chunk.get('meta', {}) + + metadata = self._extract_metadata(meta) + metadata["source"] = url + metadata["document_id"] = document_id + + processed_chunk = { + "text": text, + "metadata": metadata + } + processed_chunks.append(processed_chunk) + + return processed_chunks, document_id + + except Exception as e: + raise Exception(f"Error processing PDF from URL {url}: {str(e)}") + + def process_directory(self, directory: str | Path) -> List[Dict[str, Any]]: + """Process all PDF files in a directory""" + directory = Path(directory) + all_chunks = [] + document_ids = [] + + for pdf_file in directory.glob("**/*.pdf"): + try: + chunks, doc_id = self.process_pdf(pdf_file) + all_chunks.extend(chunks) + document_ids.append(doc_id) + print(f"✓ Processed {pdf_file} (ID: {doc_id})") + except Exception as e: + print(f"✗ Failed to process {pdf_file}: {str(e)}") + + return all_chunks, document_ids + + def _extract_page_numbers(self, meta: Any) -> List[int]: + """Extract page numbers from chunk metadata""" + page_numbers = set() + try: + if hasattr(meta, 'doc_items'): + items = meta.doc_items + elif isinstance(meta, dict) and 'doc_items' in meta: + items = meta['doc_items'] + else: + return [] + + for item in items: + if hasattr(item, 'prov'): + provs = item.prov + elif isinstance(item, dict) and 'prov' in item: + provs = item['prov'] + else: + continue + + for prov in provs: + if hasattr(prov, 'page_no'): + page_numbers.add(prov.page_no) + elif isinstance(prov, dict) and 'page_no' in prov: + page_numbers.add(prov['page_no']) + + return sorted(list(page_numbers)) + except Exception as e: + print(f"Warning: Error extracting page numbers: {str(e)}") + return [] + +def main(): + parser = argparse.ArgumentParser(description="Process PDF files and extract text chunks") + parser.add_argument("--input", required=True, + help="Input PDF file, directory, or URL (http/https URLs supported)") + parser.add_argument("--output", required=True, help="Output JSON file for chunks") + parser.add_argument("--tokenizer", default="BAAI/bge-small-en-v1.5", help="Tokenizer to use for chunking") + + args = parser.parse_args() + processor = PDFProcessor(tokenizer=args.tokenizer) + + try: + # Create output directory if it doesn't exist + output_dir = Path(args.output).parent + output_dir.mkdir(parents=True, exist_ok=True) + + if is_url(args.input): + print(f"\nProcessing PDF from URL: {args.input}") + print("=" * 50) + chunks, doc_id = processor.process_pdf_url(args.input) + print(f"Document ID: {doc_id}") + elif Path(args.input).is_dir(): + print(f"\nProcessing directory: {args.input}") + print("=" * 50) + chunks, doc_ids = processor.process_directory(args.input) + print(f"Document IDs: {', '.join(doc_ids)}") + else: + print(f"\nProcessing file: {args.input}") + print("=" * 50) + chunks, doc_id = processor.process_pdf(args.input) + print(f"Document ID: {doc_id}") + + # Save chunks to JSON + with open(args.output, 'w', encoding='utf-8') as f: + json.dump(chunks, f, ensure_ascii=False, indent=2) + + print("\nSummary:") + print(f"✓ Processed {len(chunks)} chunks") + print(f"✓ Saved to {args.output}") + + except Exception as e: + print(f"\n✗ Error: {str(e)}") + exit(1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/agentic_rag/rag_agent.py b/agentic_rag/rag_agent.py new file mode 100644 index 0000000..9e77f54 --- /dev/null +++ b/agentic_rag/rag_agent.py @@ -0,0 +1,272 @@ +from typing import List, Dict, Any, Optional +from langchain_openai import ChatOpenAI +from langchain.prompts import ChatPromptTemplate +from langchain.output_parsers import PydanticOutputParser +from pydantic import BaseModel, Field +from store import VectorStore +from agents.agent_factory import create_agents +import os +import argparse +from dotenv import load_dotenv +import logging + +# Configure logging +logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') +logger = logging.getLogger(__name__) + +class QueryAnalysis(BaseModel): + """Pydantic model for query analysis output""" + query_type: str = Field( + description="Type of query: 'pdf_documents', 'general_knowledge', or 'unsupported'" + ) + reasoning: str = Field( + description="Reasoning behind the query type selection" + ) + requires_context: bool = Field( + description="Whether the query requires additional context to answer" + ) + +class RAGAgent: + def __init__(self, vector_store: VectorStore, openai_api_key: str, use_cot: bool = False, language: str = "en"): + """Initialize RAG agent with vector store and LLM""" + self.vector_store = vector_store + self.use_cot = use_cot + self.language = language + self.llm = ChatOpenAI( + model="gpt-4-turbo-preview", + temperature=0, + api_key=openai_api_key + ) + self.query_analyzer = self._create_query_analyzer() + + # Initialize specialized agents + self.agents = create_agents(self.llm, vector_store) if use_cot else None + + def _create_query_analyzer(self): + """Create a chain for analyzing queries""" + template = """You are an intelligent agent that analyzes user queries to determine the best source of information. + + Analyze the following query and determine: + 1. Whether it should query the PDF documents collection or general knowledge collection + 2. Your reasoning for this decision + 3. Whether the query requires additional context to provide a good answer + + Query: {query} + + {format_instructions} + """ + + prompt = ChatPromptTemplate.from_template(template) + output_parser = PydanticOutputParser(pydantic_object=QueryAnalysis) + + prompt = prompt.partial(format_instructions=output_parser.get_format_instructions()) + + return {"prompt": prompt, "parser": output_parser} + + def process_query(self, query: str) -> Dict[str, Any]: + """Process a user query using the agentic RAG pipeline""" + # Analyze the query + analysis = self._analyze_query(query) + logger.info(f"Query analysis: {analysis}") + + if self.use_cot: + return self._process_query_with_cot(query, analysis) + else: + return self._process_query_standard(query, analysis) + + def _process_query_with_cot(self, query: str, analysis: QueryAnalysis) -> Dict[str, Any]: + """Process query using Chain of Thought reasoning with multiple agents""" + logger.info("Processing query with Chain of Thought reasoning") + + # Get initial context if needed + initial_context = [] + if analysis.requires_context and analysis.query_type != "unsupported": + pdf_context = self.vector_store.query_pdf_collection(query) + repo_context = self.vector_store.query_repo_collection(query) + initial_context = pdf_context + repo_context + + try: + # Step 1: Planning + logger.info("Step 1: Planning") + if not self.agents or "planner" not in self.agents: + logger.warning("No planner agent available, using direct response") + return self._generate_general_response(query) + + plan = self.agents["planner"].plan(query, initial_context) + logger.info(f"Generated plan:\n{plan}") + + # Step 2: Research each step (if researcher is available) + logger.info("Step 2: Research") + research_results = [] + if self.agents.get("researcher") is not None and initial_context: + for step in plan.split("\n"): + if not step.strip(): + continue + step_research = self.agents["researcher"].research(query, step) + research_results.append({"step": step, "findings": step_research}) + logger.info(f"Research for step: {step}\nFindings: {step_research}") + else: + # If no researcher or no context, use the steps directly + research_results = [{"step": step, "findings": []} for step in plan.split("\n") if step.strip()] + logger.info("No research performed (no researcher agent or no context available)") + + # Step 3: Reasoning about each step + logger.info("Step 3: Reasoning") + if not self.agents.get("reasoner"): + logger.warning("No reasoner agent available, using direct response") + return self._generate_general_response(query) + + reasoning_steps = [] + for result in research_results: + step_reasoning = self.agents["reasoner"].reason( + query, + result["step"], + result["findings"] if result["findings"] else [{"content": "Using general knowledge", "metadata": {"source": "General Knowledge"}}] + ) + reasoning_steps.append(step_reasoning) + logger.info(f"Reasoning for step: {result['step']}\n{step_reasoning}") + + # Step 4: Synthesize final answer + logger.info("Step 4: Synthesis") + if not self.agents.get("synthesizer"): + logger.warning("No synthesizer agent available, using direct response") + return self._generate_general_response(query) + + final_answer = self.agents["synthesizer"].synthesize(query, reasoning_steps) + logger.info(f"Final synthesized answer:\n{final_answer}") + + return { + "answer": final_answer, + "context": initial_context, + "reasoning_steps": reasoning_steps + } + except Exception as e: + logger.error(f"Error in CoT processing: {str(e)}") + logger.info("Falling back to general response") + return self._generate_general_response(query) + + def _process_query_standard(self, query: str, analysis: QueryAnalysis) -> Dict[str, Any]: + """Process query using standard approach without Chain of Thought""" + # If query type is unsupported, use general knowledge + if analysis.query_type == "unsupported": + return self._generate_general_response(query) + + # First try to get context from PDF documents + pdf_context = self.vector_store.query_pdf_collection(query) + + # Then try repository documents + repo_context = self.vector_store.query_repo_collection(query) + + # Combine all context + all_context = pdf_context + repo_context + + # Generate response using context if available, otherwise use general knowledge + if all_context and analysis.requires_context: + response = self._generate_response(query, all_context) + else: + response = self._generate_general_response(query) + + return response + + def _analyze_query(self, query: str) -> QueryAnalysis: + """Analyze the query to determine the best source of information""" + chain_input = {"query": query} + result = self.llm.invoke(self.query_analyzer["prompt"].format_messages(**chain_input)) + return self.query_analyzer["parser"].parse(result.content) + + def _generate_response(self, query: str, context: List[Dict[str, Any]]) -> Dict[str, Any]: + """Generate a response using the retrieved context""" + context_str = "\n\n".join([f"Context {i+1}:\n{item['content']}" + for i, item in enumerate(context)]) + + template = """Answer the following query using the provided context. +If the context doesn't contain enough information to answer accurately, +say so explicitly. + +Context: +{context} + +Query: {query} + +Answer:""" + + prompt = ChatPromptTemplate.from_template(template) + messages = prompt.format_messages(context=context_str, query=query) + response = self.llm.invoke(messages) + + return { + "answer": response.content, + "context": context + } + + def _generate_general_response(self, query: str) -> Dict[str, Any]: + """Generate a response using general knowledge when no context is available""" + template = """You are a helpful AI assistant. While I don't have specific information from my document collection about this query, I'll share what I know about it. + +Query: {query} + +Answer:""" + + prompt = ChatPromptTemplate.from_template(template) + messages = prompt.format_messages(query=query) + response = self.llm.invoke(messages) + + prefix = "I didn't find specific information in my documents, but here's what I know about it:\n\n" + + return { + "answer": prefix + response.content, + "context": [] + } + +def main(): + parser = argparse.ArgumentParser(description="Query documents using OpenAI GPT-4") + parser.add_argument("--query", required=True, help="Query to process") + parser.add_argument("--store-path", default="chroma_db", help="Path to the vector store") + parser.add_argument("--use-cot", action="store_true", help="Enable Chain of Thought reasoning") + + args = parser.parse_args() + + # Load environment variables + load_dotenv() + + if not os.getenv("OPENAI_API_KEY"): + print("✗ Error: OPENAI_API_KEY not found in environment variables") + print("Please create a .env file with your OpenAI API key") + exit(1) + + print("\nInitializing RAG agent...") + print("=" * 50) + + try: + store = VectorStore(persist_directory=args.store_path) + agent = RAGAgent(store, openai_api_key=os.getenv("OPENAI_API_KEY"), use_cot=args.use_cot) + + print(f"\nProcessing query: {args.query}") + print("=" * 50) + + response = agent.process_query(args.query) + + print("\nResponse:") + print("-" * 50) + print(response["answer"]) + + if response.get("reasoning_steps"): + print("\nReasoning Steps:") + print("-" * 50) + for i, step in enumerate(response["reasoning_steps"]): + print(f"\nStep {i+1}:") + print(step) + + if response.get("context"): + print("\nSources used:") + for ctx in response["context"]: + source = ctx["metadata"].get("source", "Unknown") + pages = ctx["metadata"].get("page_numbers", []) + print(f"- {source} (pages: {pages})") + + except Exception as e: + print(f"\n✗ Error: {str(e)}") + exit(1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/agentic_rag/repo_processor.py b/agentic_rag/repo_processor.py new file mode 100644 index 0000000..0f46327 --- /dev/null +++ b/agentic_rag/repo_processor.py @@ -0,0 +1,176 @@ +from pathlib import Path +from typing import List, Dict, Any, Tuple +import json +import argparse +from urllib.parse import urlparse +import warnings +import uuid +from gitingest import ingest + +def is_github_url(url: str) -> bool: + """Check if a string is a valid GitHub URL""" + try: + parsed = urlparse(url) + return parsed.netloc.lower() == "github.com" + except: + return False + +def extract_repo_name(repo_path: str) -> str: + """Extract repository name from path or URL""" + if is_github_url(repo_path): + # For GitHub URLs, extract owner/repo format + parts = repo_path.rstrip('/').split('/') + if len(parts) >= 5: + return f"{parts[3]}/{parts[4]}" # owner/repo format + + # For local paths, use the last directory name + return Path(repo_path).name + +class RepoProcessor: + def __init__(self, chunk_size: int = 500): + """Initialize repository processor with chunk size""" + self.chunk_size = chunk_size + + def _extract_metadata(self, summary: Dict[str, Any], tree: Dict[str, Any], repo_path: str) -> Dict[str, Any]: + """Extract metadata from repository summary and tree""" + # Extract repo name from path or URL + repo_name = extract_repo_name(repo_path) + + # Handle case where summary might be a string + if isinstance(summary, str): + return { + "repo_name": repo_name, + "file_count": len(tree) if tree else 0 + } + + return { + "repo_name": repo_name, # Use extracted name instead of summary + "file_count": len(tree) if tree else 0 + } + + def _chunk_text(self, text: str) -> List[str]: + """Split text into chunks of roughly equal size""" + # Split into sentences (roughly) + sentences = [s.strip() for s in text.split('.') if s.strip()] + + chunks = [] + current_chunk = [] + current_length = 0 + + for sentence in sentences: + # Add period back + sentence = sentence + '.' + # If adding this sentence would exceed chunk size, save current chunk + if current_length + len(sentence) > self.chunk_size and current_chunk: + chunks.append(' '.join(current_chunk)) + current_chunk = [] + current_length = 0 + + current_chunk.append(sentence) + current_length += len(sentence) + + # Add any remaining text + if current_chunk: + chunks.append(' '.join(current_chunk)) + + return chunks + + def process_repo(self, repo_path: str | Path) -> Tuple[List[Dict[str, Any]], str]: + """Process a repository and return chunks of text with metadata""" + try: + # Generate a unique document ID + document_id = str(uuid.uuid4()) + + # Check if it's a GitHub URL + if isinstance(repo_path, str) and is_github_url(repo_path): + print(f"Processing GitHub repository: {repo_path}") + else: + print(f"Processing local repository: {repo_path}") + + # Ingest repository + summary, tree, content = ingest(str(repo_path)) + + # Extract metadata + metadata = self._extract_metadata(summary, tree, str(repo_path)) + + # Process content into chunks + processed_chunks = [] + chunk_id = 0 + + if isinstance(content, dict): + # Handle dictionary of file contents + for file_path, file_content in content.items(): + if isinstance(file_content, str) and file_content.strip(): # Only process non-empty content + # Split content into chunks + text_chunks = self._chunk_text(file_content) + + for text_chunk in text_chunks: + chunk = { + "text": text_chunk, + "metadata": { + **metadata, + "source": str(repo_path), + "document_id": document_id, + "chunk_id": chunk_id + } + } + processed_chunks.append(chunk) + chunk_id += 1 + elif isinstance(content, str): + # Handle single string content + text_chunks = self._chunk_text(content) + + for text_chunk in text_chunks: + chunk = { + "text": text_chunk, + "metadata": { + **metadata, + "source": str(repo_path), + "document_id": document_id, + "chunk_id": chunk_id + } + } + processed_chunks.append(chunk) + chunk_id += 1 + + return processed_chunks, document_id + + except Exception as e: + raise Exception(f"Error processing repository {repo_path}: {str(e)}") + +def main(): + parser = argparse.ArgumentParser(description="Process GitHub repositories and extract content") + parser.add_argument("--input", required=True, + help="Input repository path or GitHub URL") + parser.add_argument("--output", required=True, help="Output JSON file for chunks") + parser.add_argument("--chunk-size", type=int, default=500, + help="Maximum size of text chunks") + + args = parser.parse_args() + processor = RepoProcessor(chunk_size=args.chunk_size) + + try: + # Create output directory if it doesn't exist + output_dir = Path(args.output).parent + output_dir.mkdir(parents=True, exist_ok=True) + + print(f"\nProcessing repository: {args.input}") + print("=" * 50) + + chunks, doc_id = processor.process_repo(args.input) + + # Save chunks to JSON + with open(args.output, 'w', encoding='utf-8') as f: + json.dump(chunks, f, ensure_ascii=False, indent=2) + + print("\nSummary:") + print(f"✓ Processed {len(chunks)} chunks") + print(f"✓ Document ID: {doc_id}") + print(f"✓ Saved to {args.output}") + + except Exception as e: + print(f"\n✗ Error: {str(e)}") + exit(1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/agentic_rag/requirements.txt b/agentic_rag/requirements.txt new file mode 100644 index 0000000..5cb347c --- /dev/null +++ b/agentic_rag/requirements.txt @@ -0,0 +1,18 @@ +docling +langchain-openai +chromadb +python-dotenv +openai +pydantic +fastapi +uvicorn +python-multipart +transformers +torch +accelerate +pyyaml +trafilatura +gradio +lxml_html_clean +langchain +gitingest \ No newline at end of file diff --git a/agentic_rag/store.py b/agentic_rag/store.py new file mode 100644 index 0000000..1fb5768 --- /dev/null +++ b/agentic_rag/store.py @@ -0,0 +1,234 @@ +from typing import List, Dict, Any +import chromadb +import json +import argparse +from chromadb.config import Settings + +class VectorStore: + def __init__(self, persist_directory: str = "embeddings"): + """Initialize vector store with ChromaDB""" + self.client = chromadb.PersistentClient( + path=persist_directory, + settings=Settings(allow_reset=True) + ) + + # Create or get collections + self.pdf_collection = self.client.get_or_create_collection( + name="pdf_documents", + metadata={"hnsw:space": "cosine"} + ) + self.web_collection = self.client.get_or_create_collection( + name="web_documents", + metadata={"hnsw:space": "cosine"} + ) + self.repo_collection = self.client.get_or_create_collection( + name="repository_documents", + metadata={"hnsw:space": "cosine"} + ) + self.general_collection = self.client.get_or_create_collection( + name="general_knowledge", + metadata={"hnsw:space": "cosine"} + ) + + def _sanitize_metadata(self, metadata: Dict) -> Dict: + """Sanitize metadata to ensure all values are valid types for ChromaDB""" + sanitized = {} + for key, value in metadata.items(): + if isinstance(value, (str, int, float, bool)): + sanitized[key] = value + elif isinstance(value, list): + # Convert list to string representation + sanitized[key] = str(value) + elif value is None: + # Replace None with empty string + sanitized[key] = "" + else: + # Convert any other type to string + sanitized[key] = str(value) + return sanitized + + def add_pdf_chunks(self, chunks: List[Dict[str, Any]], document_id: str): + """Add chunks from a PDF document to the vector store""" + if not chunks: + return + + # Prepare data for ChromaDB + texts = [chunk["text"] for chunk in chunks] + metadatas = [self._sanitize_metadata(chunk["metadata"]) for chunk in chunks] + ids = [f"{document_id}_{i}" for i in range(len(chunks))] + + # Add to collection + self.pdf_collection.add( + documents=texts, + metadatas=metadatas, + ids=ids + ) + + def add_web_chunks(self, chunks: List[Dict[str, Any]], source_id: str): + """Add chunks from web content to the vector store""" + if not chunks: + return + + # Prepare data for ChromaDB + texts = [chunk["text"] for chunk in chunks] + metadatas = [self._sanitize_metadata(chunk["metadata"]) for chunk in chunks] + ids = [f"{source_id}_{i}" for i in range(len(chunks))] + + # Add to collection + self.web_collection.add( + documents=texts, + metadatas=metadatas, + ids=ids + ) + + def add_general_knowledge(self, chunks: List[Dict[str, Any]], source_id: str): + """Add general knowledge chunks to the vector store""" + if not chunks: + return + + # Prepare data for ChromaDB + texts = [chunk["text"] for chunk in chunks] + metadatas = [self._sanitize_metadata(chunk["metadata"]) for chunk in chunks] + ids = [f"{source_id}_{i}" for i in range(len(chunks))] + + # Add to collection + self.general_collection.add( + documents=texts, + metadatas=metadatas, + ids=ids + ) + + def add_repo_chunks(self, chunks: List[Dict[str, Any]], document_id: str): + """Add chunks from a repository to the vector store""" + if not chunks: + return + + # Prepare data for ChromaDB + texts = [chunk["text"] for chunk in chunks] + metadatas = [self._sanitize_metadata(chunk["metadata"]) for chunk in chunks] + ids = [f"{document_id}_{i}" for i in range(len(chunks))] + + # Add to collection + self.repo_collection.add( + documents=texts, + metadatas=metadatas, + ids=ids + ) + + def query_pdf_collection(self, query: str, n_results: int = 3) -> List[Dict[str, Any]]: + """Query the PDF documents collection""" + results = self.pdf_collection.query( + query_texts=[query], + n_results=n_results + ) + + # Format results + formatted_results = [] + for i in range(len(results["documents"][0])): + result = { + "content": results["documents"][0][i], + "metadata": results["metadatas"][0][i] + } + formatted_results.append(result) + + return formatted_results + + def query_web_collection(self, query: str, n_results: int = 3) -> List[Dict[str, Any]]: + """Query the web documents collection""" + results = self.web_collection.query( + query_texts=[query], + n_results=n_results + ) + + # Format results + formatted_results = [] + for i in range(len(results["documents"][0])): + result = { + "content": results["documents"][0][i], + "metadata": results["metadatas"][0][i] + } + formatted_results.append(result) + + return formatted_results + + def query_general_collection(self, query: str, n_results: int = 3) -> List[Dict[str, Any]]: + """Query the general knowledge collection""" + results = self.general_collection.query( + query_texts=[query], + n_results=n_results + ) + + # Format results + formatted_results = [] + for i in range(len(results["documents"][0])): + result = { + "content": results["documents"][0][i], + "metadata": results["metadatas"][0][i] + } + formatted_results.append(result) + + return formatted_results + + def query_repo_collection(self, query: str, n_results: int = 3) -> List[Dict[str, Any]]: + """Query the repository documents collection""" + results = self.repo_collection.query( + query_texts=[query], + n_results=n_results + ) + + # Format results + formatted_results = [] + for i in range(len(results["documents"][0])): + result = { + "content": results["documents"][0][i], + "metadata": results["metadatas"][0][i] + } + formatted_results.append(result) + + return formatted_results + +def main(): + parser = argparse.ArgumentParser(description="Manage vector store") + parser.add_argument("--add", help="JSON file containing chunks to add") + parser.add_argument("--add-web", help="JSON file containing web chunks to add") + parser.add_argument("--query", help="Query to search for") + parser.add_argument("--store-path", default="embeddings", help="Path to vector store") + + args = parser.parse_args() + store = VectorStore(persist_directory=args.store_path) + + if args.add: + with open(args.add, 'r', encoding='utf-8') as f: + chunks = json.load(f) + store.add_pdf_chunks(chunks, document_id=args.add) + print(f"✓ Added {len(chunks)} PDF chunks to vector store") + + if args.add_web: + with open(args.add_web, 'r', encoding='utf-8') as f: + chunks = json.load(f) + store.add_web_chunks(chunks, source_id=args.add_web) + print(f"✓ Added {len(chunks)} web chunks to vector store") + + if args.query: + # Query both collections + pdf_results = store.query_pdf_collection(args.query) + web_results = store.query_web_collection(args.query) + + print("\nPDF Results:") + print("-" * 50) + for result in pdf_results: + print(f"Content: {result['content'][:200]}...") + print(f"Source: {result['metadata'].get('source', 'Unknown')}") + print(f"Pages: {result['metadata'].get('page_numbers', [])}") + print("-" * 50) + + print("\nWeb Results:") + print("-" * 50) + for result in web_results: + print(f"Content: {result['content'][:200]}...") + print(f"Source: {result['metadata'].get('source', 'Unknown')}") + print(f"Title: {result['metadata'].get('title', 'Unknown')}") + print("-" * 50) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/agentic_rag/test_cot.py b/agentic_rag/test_cot.py new file mode 100644 index 0000000..3a60068 --- /dev/null +++ b/agentic_rag/test_cot.py @@ -0,0 +1,105 @@ +import sys +import os +sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +from local_rag_agent import LocalRAGAgent +from rag_agent import RAGAgent +from store import VectorStore +from dotenv import load_dotenv +import yaml +import argparse +from rich.console import Console +from rich.panel import Panel +from rich.table import Table + +console = Console() + +def load_config(): + """Load configuration from config.yaml and .env""" + try: + with open('config.yaml', 'r') as f: + config = yaml.safe_load(f) + load_dotenv() + return { + 'hf_token': config.get('HUGGING_FACE_HUB_TOKEN'), + 'openai_key': os.getenv('OPENAI_API_KEY') + } + except Exception as e: + console.print(f"[red]Error loading configuration: {str(e)}") + sys.exit(1) + +def compare_responses(agent, query: str, description: str): + """Compare standard vs CoT responses for the same query""" + console.print(f"\n[bold cyan]Test Case: {description}") + console.print(Panel(f"Query: {query}", style="yellow")) + + # Standard response + agent.use_cot = False + standard_response = agent.process_query(query) + console.print(Panel( + "[bold]Standard Response:[/bold]\n" + standard_response["answer"], + title="Without Chain of Thought", + style="blue" + )) + + # CoT response + agent.use_cot = True + cot_response = agent.process_query(query) + console.print(Panel( + "[bold]Chain of Thought Response:[/bold]\n" + cot_response["answer"], + title="With Chain of Thought", + style="green" + )) + +def main(): + parser = argparse.ArgumentParser(description="Compare standard vs Chain of Thought prompting") + parser.add_argument("--model", choices=['local', 'openai'], default='local', + help="Choose between local Mistral model or OpenAI") + args = parser.parse_args() + + config = load_config() + store = VectorStore(persist_directory="chroma_db") + + # Initialize appropriate agent + if args.model == 'local': + if not config['hf_token']: + console.print("[red]Error: HuggingFace token not found in config.yaml") + sys.exit(1) + agent = LocalRAGAgent(store) + model_name = "Mistral-7B" + else: + if not config['openai_key']: + console.print("[red]Error: OpenAI API key not found in .env") + sys.exit(1) + agent = RAGAgent(store, openai_api_key=config['openai_key']) + model_name = "GPT-4" + + console.print(f"\n[bold]Testing {model_name} Responses[/bold]") + console.print("=" * 80) + + # Test cases that highlight CoT benefits + test_cases = [ + { + "query": "A train travels at 60 mph for 2.5 hours, then at 45 mph for 1.5 hours. What's the total distance covered?", + "description": "Multi-step math problem" + }, + { + "query": "Compare and contrast REST and GraphQL APIs, considering their strengths and use cases.", + "description": "Complex comparison requiring structured analysis" + }, + { + "query": "If a tree falls in a forest and no one is around to hear it, does it make a sound? Explain your reasoning.", + "description": "Philosophical question requiring detailed reasoning" + } + ] + + for test_case in test_cases: + try: + compare_responses(agent, test_case["query"], test_case["description"]) + except Exception as e: + console.print(f"[red]Error in test case '{test_case['description']}': {str(e)}") + + console.print("\n[bold green]Testing complete!") + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/agentic_rag/test_new_cot.py b/agentic_rag/test_new_cot.py new file mode 100644 index 0000000..4f25cab --- /dev/null +++ b/agentic_rag/test_new_cot.py @@ -0,0 +1,118 @@ +import sys +import os +import argparse +from dotenv import load_dotenv +from rich.console import Console +from rich.panel import Panel +from store import VectorStore +from rag_agent import RAGAgent +from local_rag_agent import LocalRAGAgent +import yaml + +# Configure rich console +console = Console() + +def test_multi_agent_cot(agent, query: str, description: str): + """Test the multi-agent Chain of Thought system""" + console.print(f"\n[bold cyan]Test Case: {description}") + console.print(Panel(f"Query: {query}", style="yellow")) + + # Process query with multi-agent CoT + response = agent.process_query(query) + + # Print each step's result + if response.get("reasoning_steps"): + for i, step in enumerate(response["reasoning_steps"]): + console.print(Panel( + f"[bold]Step {i+1}:[/bold]\n{step}", + title=f"Reasoning Step {i+1}", + style="blue" + )) + + # Print final answer + console.print(Panel( + f"[bold]Final Answer:[/bold]\n{response['answer']}", + title="Synthesized Response", + style="green" + )) + + # Print sources if available + if response.get("context"): + console.print("\n[bold]Sources Used:[/bold]") + for ctx in response["context"]: + source = ctx["metadata"].get("source", "Unknown") + if "page_numbers" in ctx["metadata"]: + pages = ctx["metadata"].get("page_numbers", []) + console.print(f"- {source} (pages: {pages})") + else: + file_path = ctx["metadata"].get("file_path", "Unknown") + console.print(f"- {source} (file: {file_path})") + +def main(): + parser = argparse.ArgumentParser(description="Test multi-agent Chain of Thought reasoning") + parser.add_argument("--model", choices=['local', 'openai'], default='local', + help="Choose between local Mistral model or OpenAI (default: local)") + parser.add_argument("--store-path", default="chroma_db", help="Path to the vector store") + args = parser.parse_args() + + # Load environment variables and config + load_dotenv() + + try: + with open('config.yaml', 'r') as f: + config = yaml.safe_load(f) + hf_token = config.get('HUGGING_FACE_HUB_TOKEN') + except Exception: + hf_token = None + + console.print("\n[bold]Testing Multi-Agent Chain of Thought System[/bold]") + console.print("=" * 80) + + try: + # Initialize vector store + store = VectorStore(persist_directory=args.store_path) + + # Initialize appropriate agent + if args.model == 'local': + if not hf_token: + console.print("[red]Error: HuggingFace token not found in config.yaml") + sys.exit(1) + agent = LocalRAGAgent(store, use_cot=True) + model_name = "Mistral-7B" + else: + if not os.getenv("OPENAI_API_KEY"): + console.print("[red]Error: OpenAI API key not found in .env") + sys.exit(1) + agent = RAGAgent(store, openai_api_key=os.getenv("OPENAI_API_KEY"), use_cot=True) + model_name = "GPT-4" + + console.print(f"\n[bold]Using {model_name} with Multi-Agent CoT[/bold]") + console.print("=" * 80) + + # Test cases that demonstrate multi-agent CoT benefits + test_cases = [ + { + "query": "What are the key differences between traditional RAG systems and the agentic RAG approach implemented in this project?", + "description": "Complex comparison requiring analysis of implementation details" + }, + { + "query": "How does the system handle PDF document processing and what are the main steps involved?", + "description": "Technical process analysis requiring step-by-step breakdown" + }, + { + "query": "What are the advantages and limitations of using local LLMs versus cloud-based models in this implementation?", + "description": "Trade-off analysis requiring multiple perspectives" + } + ] + + # Run test cases + for test_case in test_cases: + test_multi_agent_cot(agent, test_case["query"], test_case["description"]) + console.print("\n" + "=" * 80) + + except Exception as e: + console.print(f"\n[red]Error: {str(e)}") + sys.exit(1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/agentic_rag/web_processor.py b/agentic_rag/web_processor.py new file mode 100644 index 0000000..4927cfd --- /dev/null +++ b/agentic_rag/web_processor.py @@ -0,0 +1,218 @@ +from pathlib import Path +import json +import argparse +from typing import List, Dict, Any +from trafilatura import fetch_url, extract, extract_metadata +from urllib.parse import urlparse +import re + +def is_url(string: str) -> bool: + """Check if a string is a valid URL""" + try: + result = urlparse(string) + return all([result.scheme, result.netloc]) + except: + return False + +def get_domain(url: str) -> str: + """Extract domain from URL""" + parsed = urlparse(url) + return parsed.netloc.lower() + +class WebProcessor: + def __init__(self, chunk_size: int = 500): + """Initialize web processor with chunk size""" + self.chunk_size = chunk_size + # Define domains that need special handling + self.special_domains = { + 'x.com': 'twitter', + 'twitter.com': 'twitter', + 'github.com': 'github' + } + + def _handle_twitter(self, url: str) -> Dict[str, Any]: + """Special handling for Twitter/X URLs""" + # Extract tweet ID from URL + tweet_id = url.split('/')[-1] + return { + 'text': f"Twitter/X content (Tweet ID: {tweet_id}). Note: Twitter content cannot be directly extracted. Please visit {url} to view the content.", + 'metadata': { + 'source': url, + 'type': 'twitter', + 'tweet_id': tweet_id + } + } + + def _handle_github(self, url: str) -> Dict[str, Any]: + """Special handling for GitHub URLs""" + # Extract repo info from URL + parts = url.split('/') + if len(parts) >= 5: + owner = parts[3] + repo = parts[4] + return { + 'text': f"GitHub Repository: {owner}/{repo}. This is a GitHub repository. For better results, try accessing specific files or the README directly.", + 'metadata': { + 'source': url, + 'type': 'github', + 'owner': owner, + 'repo': repo + } + } + return None + + def _chunk_text(self, text: str) -> List[str]: + """Split text into chunks of roughly equal size""" + # Split into sentences (roughly) + sentences = [s.strip() for s in text.split('.') if s.strip()] + + chunks = [] + current_chunk = [] + current_length = 0 + + for sentence in sentences: + # Add period back + sentence = sentence + '.' + # If adding this sentence would exceed chunk size, save current chunk + if current_length + len(sentence) > self.chunk_size and current_chunk: + chunks.append(' '.join(current_chunk)) + current_chunk = [] + current_length = 0 + + current_chunk.append(sentence) + current_length += len(sentence) + + # Add any remaining text + if current_chunk: + chunks.append(' '.join(current_chunk)) + + return chunks + + def process_url(self, url: str) -> List[Dict[str, Any]]: + """Process a URL and return chunks of text with metadata""" + try: + domain = get_domain(url) + + # Check if this domain needs special handling + if domain in self.special_domains: + handler = getattr(self, f"_handle_{self.special_domains[domain]}", None) + if handler: + result = handler(url) + if result: + return [{ + "text": result["text"], + "metadata": result["metadata"] + }] + + # Standard processing for other domains + downloaded = fetch_url(url) + if not downloaded: + raise ValueError(f"Failed to fetch URL: {url}") + + # Extract text and metadata + text = extract(downloaded, include_comments=False, include_tables=False) + try: + metadata = extract_metadata(downloaded) + # Convert metadata to dict if it's not already + if not isinstance(metadata, dict): + metadata = { + 'title': getattr(metadata, 'title', ''), + 'author': getattr(metadata, 'author', ''), + 'date': getattr(metadata, 'date', ''), + 'sitename': getattr(metadata, 'sitename', ''), + 'categories': getattr(metadata, 'categories', []), + 'tags': getattr(metadata, 'tags', []) + } + except Exception as e: + print(f"Warning: Metadata extraction failed: {str(e)}") + metadata = {} + + if not text: + raise ValueError(f"No text content extracted from URL: {url}. This might be due to:\n" + + "1. Website blocking automated access\n" + + "2. Content requiring JavaScript\n" + + "3. Content behind authentication\n" + + "4. Website using non-standard HTML structure") + + # Split into chunks + text_chunks = self._chunk_text(text) + + # Process chunks into a standardized format + processed_chunks = [] + for i, chunk in enumerate(text_chunks): + processed_chunk = { + "text": chunk, + "metadata": { + "source": url, + "title": metadata.get('title', ''), + "author": metadata.get('author', ''), + "date": metadata.get('date', ''), + "sitename": metadata.get('sitename', ''), + "categories": metadata.get('categories', []), + "tags": metadata.get('tags', []), + "chunk_id": i, + "type": "webpage" + } + } + processed_chunks.append(processed_chunk) + + return processed_chunks + + except Exception as e: + raise Exception(f"Error processing URL {url}: {str(e)}") + + def process_urls(self, urls: List[str]) -> List[Dict[str, Any]]: + """Process multiple URLs and return combined chunks""" + all_chunks = [] + + for url in urls: + try: + chunks = self.process_url(url) + all_chunks.extend(chunks) + print(f"✓ Processed {url}") + except Exception as e: + print(f"✗ Failed to process {url}: {str(e)}") + + return all_chunks + +def main(): + parser = argparse.ArgumentParser(description="Process web pages and extract text chunks") + parser.add_argument("--input", required=True, help="Input URL or file containing URLs (one per line)") + parser.add_argument("--output", required=True, help="Output JSON file for chunks") + parser.add_argument("--chunk-size", type=int, default=500, help="Maximum size of text chunks") + + args = parser.parse_args() + processor = WebProcessor(chunk_size=args.chunk_size) + + try: + # Create output directory if it doesn't exist + output_dir = Path(args.output).parent + output_dir.mkdir(parents=True, exist_ok=True) + + if is_url(args.input): + print(f"\nProcessing URL: {args.input}") + print("=" * 50) + chunks = processor.process_url(args.input) + else: + # Read URLs from file + with open(args.input, 'r', encoding='utf-8') as f: + urls = [line.strip() for line in f if line.strip()] + + print(f"\nProcessing {len(urls)} URLs from: {args.input}") + print("=" * 50) + chunks = processor.process_urls(urls) + + # Save chunks to JSON + with open(args.output, 'w', encoding='utf-8') as f: + json.dump(chunks, f, ensure_ascii=False, indent=2) + + print("\nSummary:") + print(f"✓ Processed {len(chunks)} chunks") + print(f"✓ Saved to {args.output}") + + except Exception as e: + print(f"\n✗ Error: {str(e)}") + exit(1) + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/oci-csv-json-translation/README.md b/oci-csv-json-translation/README.md new file mode 100644 index 0000000..1c3a7b5 --- /dev/null +++ b/oci-csv-json-translation/README.md @@ -0,0 +1,216 @@ +# Translating CSV/JSON Files with OCI Language + +## Introduction + +Advancements in AI and large language models have led to significant improvements in language translation, making it much easier. + +In this solution, we’ll use Oracle Cloud Infrastructure (OCI) Language to enable the translation of specific columns in CSV files or keys in CSV and JSON documents while preserving the original structure of the files. This use case is particularly useful for localizing data files while maintaining their format and untranslated fields. + +The following OCI services are present in this solution: +1. **OCI Language** for document/field translation +2. **OCI Compute** or **OCI Cloud Shell** for easily running the code present in this solution's repository, having authenticated this instance with the OCI SDK. + +We will use the OCI Python Source Development Kit to allow a customizable translation experience for CSV and JSON documents: + + + +## 0. Prerequisites and setup + +### Prerequisites + +- Python 3.8 or higher +- OCI Account with Language Translation service enabled +- Required IAM Policies and Permissions for async jobs +- Object Storage bucket for input/output files +- OCI CLI configured with proper credentials + +### Docs + +- [ISO Language Codes](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) +- [OCI SDK](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm) +- [Asynchronous Job Policies on IAM](https://docs.oracle.com/en-us/iaas/language/using/policies-async-jobs.htm) +- [OCI Document Translation](https://docs.oracle.com/en-us/iaas/language/using/translate-document.htm#translate-document) +- [List of Supported Languages in OCI Language](https://docs.oracle.com/en-us/iaas/language/using/translate.htm#supported-langs) +- [List of Supported Document Types in OCI Document Translation](https://docs.oracle.com/en-us/iaas/language/using/translate-document.htm#doc-types) + +### Setup + +1. Create an OCI account +2. Enable the Language Translation service in your tenancy if you haven't already +3. Set up OCI CLI and create API keys: + + ```bash + # Install OCI CLI + bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)" + + # Configure OCI CLI (this will create ~/.oci/config) + oci setup config + ``` + +4. Set up the appropriate IAM policies to use the service if you haven't ([see this link for more information](https://docs.oracle.com/en-us/iaas/language/using/policies.htm)). + +5. Create a bucket in OCI Object Storage, where we'll put the file we want to translate: + + ![bucket creation](./img/create_bucket.png) + +6. Take note of the Object Storage namespace containing the bucket(visible in the OCI Console under Object Storage), as you will need to add it to your `config.yaml`: + + ![bucket namespace](./img/bucket_namespace.png) + +7. Upload the documents you want translated to the source bucket: + + ![uploaded documents](./img/uploaded_documents.png) + + > **Note**: you can find the list of supported document types and extensions for the translation service [here.](https://docs.oracle.com/en-us/iaas/language/using/translate-document.htm#doc-types) + +8. Set up an additional IAM policy to allow all OCI Language resources to access and read the bucket. For that, you will need to create a dynamic group, associate all OCI Language resources to that dynamic group, and give permissions to the dynamic group to read the bucket you created in the previous step. [(More info on this link)](https://docs.oracle.com/en-us/iaas/language/using/policies-async-jobs.htm) + + First, we create the dynamic group: + + ![dynamic group creation](./img/language_dynamic_group.png) + + Now, we create the policy: + + ![policy creation](./img/language_policy.png) + + Note that, depending on your Identity Domain, you will need to preprend the name of your Identity Domain to the group name, as demonstrated in the third policy in the image above. + +## 1. Getting Started + +1. Clone this repository: + + ```bash + git clone https://github.com/oracle-devrel/devrel-labs.git + cd oci-csv-json-translation + ``` + +2. Install required dependencies: + + ```bash + pip install -r requirements.txt + ``` + +3. Update `config.yaml` with your settings: + + ```yaml + # Language Translation Service Configuration + language_translation: + compartment_id: "ocid1.compartment.oc1..your-compartment-id" + source_language: "en" # ISO language code, refer to the Docs for all supported languages & codes + target_language: "es" # ISO language code + + # Object Storage Configuration # the bucket's information that will contain input & output documents + object_storage: + namespace: "your-namespace" # Your tenancy's Object Storage namespace + bucket_name: "your-bucket-name" # Bucket for CSV/JSON translations + ``` + +4. Run the translation: + + ```bash + # note the input file refers to the contents of the Object Storage bucket, not local files + # For CSV files (column numbers start counting from 1, not 0) + python csv_json_translation.py csv input.csv output.csv 1 2 3 + + # For JSON files + python csv_json_translation.py json input.json output.json key1 key2 + ``` + +## Usage Examples + +### CSV Translation + +```bash +# Translate columns 1, 3, and 5 from English to Spanish, and put it into the translated_files dir +python csv_json_translation.py csv products.csv translated_files 1 3 5 +``` + +In my case, with the sample files in [the data directory](./data/), it would be something like: + +```bash +python csv_json_translation.py csv dog_healthcare.csv translated_files 7 +``` + +### JSON Translation + +```bash +# Translate 'name' and 'details' fields in a JSON file +python csv_json_translation.py json catalog.json catalog_es.json name details +``` + +![program output](./img/output.png) + +When the translation job is done, we'll be able to have a look at the translated document(s) in our Object Storage bucket: + +![object storage translation output](./img/os_output.png) + +For example, with the CSV file, it translated only the comments column as I specified, from this: + +![original](./img/original.png) + +To this: + +![translated](./img/translated.png) + +## Annex: Configuration + +The project uses three types of configuration: + +1. **OCI Configuration** (`~/.oci/config`): + - Created automatically by `oci setup config` + - Contains your OCI authentication details + - Used for API authentication + +2. **Translation Configuration** (`config.yaml`): + ```yaml + # Language Translation Service Configuration + language_translation: + compartment_id: "ocid1.compartment.oc1..your-compartment-id" + source_language: "en" + target_language: "es" + + # Object Storage Configuration + object_storage: + namespace: "your-namespace" + bucket_name: "your-bucket-name" + ``` + +3. **Environment Variables** (optional, override config.yaml): + - `OCI_COMPARTMENT_ID`: Your OCI compartment OCID + - `OCI_SOURCE_LANG`: Source language code + - `OCI_TARGET_LANG`: Target language code + +### Configuration Priority + +The configuration values are loaded in the following priority order: +1. Environment variables (if set) +2. Values from config.yaml +3. Default values (for language codes only: en -> es) + +## Supported Languages + +The service supports a wide range of languages. Common language codes include: +- English (en) +- Spanish (es) +- French (fr) +- German (de) +- Italian (it) +- Portuguese (pt) +- Chinese Simplified (zh-CN) +- Japanese (ja) + +For a complete list of supported languages, refer to [the OCI Documentation](https://docs.oracle.com/en-us/iaas/language/using/translate.htm#supported-langs). + +## Contributing + +This project is open source. Please submit your contributions by forking this repository and submitting a pull request! Oracle appreciates any contributions that are made by the open source community. + +## License + +Copyright (c) 2024 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](../LICENSE) for more details. + +ORACLE AND ITS AFFILIATES DO NOT PROVIDE ANY WARRANTY WHATSOEVER, EXPRESS OR IMPLIED, FOR ANY SOFTWARE, MATERIAL OR CONTENT OF ANY KIND CONTAINED OR PRODUCED WITHIN THIS REPOSITORY, AND IN PARTICULAR SPECIFICALLY DISCLAIM ANY AND ALL IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. FURTHERMORE, ORACLE AND ITS AFFILIATES DO NOT REPRESENT THAT ANY CUSTOMARY SECURITY REVIEW HAS BEEN PERFORMED WITH RESPECT TO ANY SOFTWARE, MATERIAL OR CONTENT CONTAINED OR PRODUCED WITHIN THIS REPOSITORY. IN ADDITION, AND WITHOUT LIMITING THE FOREGOING, THIRD PARTIES MAY HAVE POSTED SOFTWARE, MATERIAL OR CONTENT TO THIS REPOSITORY WITHOUT ANY REVIEW. USE AT YOUR OWN RISK. \ No newline at end of file diff --git a/oci-csv-json-translation/config_example.yaml b/oci-csv-json-translation/config_example.yaml new file mode 100644 index 0000000..ddaf226 --- /dev/null +++ b/oci-csv-json-translation/config_example.yaml @@ -0,0 +1,10 @@ +# Language Translation Service Configuration + language_translation: + compartment_id: "ocid1.compartment.oc1..your-compartment-id" + source_language: "en" # ISO language code, refer to the Docs for all supported languages & codes + target_language: "es" # ISO language code + + # Object Storage Configuration # the bucket's information that will contain input & output documents + object_storage: + namespace: "your-namespace" # Your tenancy's Object Storage namespace + bucket_name: "your-bucket-name" # Bucket for CSV/JSON translations \ No newline at end of file diff --git a/oci-language-translation/csv_json_translation.py b/oci-csv-json-translation/csv_json_translation.py similarity index 95% rename from oci-language-translation/csv_json_translation.py rename to oci-csv-json-translation/csv_json_translation.py index cacc523..8938d18 100644 --- a/oci-language-translation/csv_json_translation.py +++ b/oci-csv-json-translation/csv_json_translation.py @@ -10,6 +10,10 @@ import pandas as pd from pathlib import Path +import logging +# Enable debug logging +logging.getLogger('oci').setLevel(logging.DEBUG) + def generate_job_name(): """Generate a unique job name with timestamp""" current_date = datetime.date.today() @@ -45,6 +49,11 @@ def translate_csv(ai_client, input_file, output_file, columns_to_translate, sour object_names=[input_file] ) + #input_location = oci.ai_language.models.ObjectStoragePrefixLocation( + # namespace_name=namespace, + # bucket_name=bucket, + #) + # Set up model metadata model_metadata_details = oci.ai_language.models.ModelMetadataDetails( model_type="PRE_TRAINED_TRANSLATION", @@ -160,6 +169,7 @@ def translate_json(ai_client, input_file, output_file, keys_to_translate, source print(f"{datetime.datetime.now()}: Job status: {current_state}") if current_state in ["SUCCEEDED", "FAILED"]: + print('Job ID {}'.format(job_id)) break time.sleep(5) @@ -189,7 +199,7 @@ def main(): config = load_config() # Initialize OCI client using default config - oci_config = oci.config.from_file() + oci_config = oci.config.from_file(profile_name="comm") ai_client = oci.ai_language.AIServiceLanguageClient(config=oci_config) # Get configuration values diff --git a/oci-csv-json-translation/data/dog_healthcare.csv b/oci-csv-json-translation/data/dog_healthcare.csv new file mode 100644 index 0000000..1941c55 --- /dev/null +++ b/oci-csv-json-translation/data/dog_healthcare.csv @@ -0,0 +1,21 @@ +id,name,species,age,healthStatus,nextVisit,comments +1,Pochi,dog,5,Healthy,2024-02-15,次の訪問で血液検査を実施する予定。 +2,Taro,dog,8,Needs Monitoring,2024-01-20,胃肠不調が常識化しているため、追加検査が必要。 +3,Momo,dog,3,Healthy,2024-03-01,狂犬病ワクチン接種完了。来年の更新を忘れずに。 +4,Hachi,dog,12,Needs Monitoring,2024-01-25,関節炎の症状あり。痛み止めの投与を継続中。 +5,Koro,dog,2,Healthy,2024-04-10,予防接種はすべて完了。とても元気な状態。 +6,Shiro,dog,6,Treatment Required,2024-01-18,歯石の除去が必要。歯肉炎の初期症状あり。 +7,Luna,dog,4,Healthy,2024-03-20,フィラリア予防薬の処方済み。定期投与を継続。 +8,Buddy,dog,9,Needs Monitoring,2024-02-01,心臓の検査結果要注意。投薬開始を検討。 +9,Riki,dog,1,Healthy,2024-02-28,初回ワクチン接種完了。発育状態良好。 +10,Mei,dog,7,Treatment Required,2024-01-22,皮膚アレルギーの治療中。食事制限継続。 +11,Kenta,dog,5,Healthy,2024-04-05,年次健康診断済み。特に問題なし。 +12,Sora,dog,10,Needs Monitoring,2024-02-10,甲状腺機能の検査値が境界線。経過観察必要。 +13,Hana,dog,3,Healthy,2024-03-15,混合ワクチン接種完了。体重管理順調。 +14,Rocky,dog,8,Treatment Required,2024-01-30,耳の感染症治療中。清潔維持の指導実施。 +15,Goro,dog,4,Healthy,2024-04-20,予防接種とフィラリア予防を定期的に実施中。 +16,Sakura,dog,6,Needs Monitoring,2024-02-05,軽度の貧血あり。食事療法開始。 +17,Chibi,dog,2,Healthy,2024-03-10,すべての予防接種完了。成長は順調。 +18,Max,dog,11,Treatment Required,2024-01-28,白内障の初期症状。点眼薬処方中。 +19,Yuki,dog,5,Healthy,2024-04-15,定期検診済み。予防接種も完了。 +20,Kiki,dog,7,Needs Monitoring,2024-02-20,体重過多。食事制限と運動療法を開始。 \ No newline at end of file diff --git a/oci-csv-json-translation/data/dog_healthcare.json b/oci-csv-json-translation/data/dog_healthcare.json new file mode 100644 index 0000000..ba245b5 --- /dev/null +++ b/oci-csv-json-translation/data/dog_healthcare.json @@ -0,0 +1,184 @@ +{ + "pets": [ + { + "id": 1, + "name": "Pochi", + "species": "dog", + "age": 5, + "healthStatus": "Healthy", + "nextVisit": "2024-02-15", + "comments": "次の訪問で血液検査を実施する予定。" + }, + { + "id": 2, + "name": "Taro", + "species": "dog", + "age": 8, + "healthStatus": "Needs Monitoring", + "nextVisit": "2024-01-20", + "comments": "胃肠不調が常識化しているため、追加検査が必要。" + }, + { + "id": 3, + "name": "Momo", + "species": "dog", + "age": 3, + "healthStatus": "Healthy", + "nextVisit": "2024-03-01", + "comments": "狂犬病ワクチン接種完了。来年の更新を忘れずに。" + }, + { + "id": 4, + "name": "Hachi", + "species": "dog", + "age": 12, + "healthStatus": "Needs Monitoring", + "nextVisit": "2024-01-25", + "comments": "関節炎の症状あり。痛み止めの投与を継続中。" + }, + { + "id": 5, + "name": "Koro", + "species": "dog", + "age": 2, + "healthStatus": "Healthy", + "nextVisit": "2024-04-10", + "comments": "予防接種はすべて完了。とても元気な状態。" + }, + { + "id": 6, + "name": "Shiro", + "species": "dog", + "age": 6, + "healthStatus": "Treatment Required", + "nextVisit": "2024-01-18", + "comments": "歯石の除去が必要。歯肉炎の初期症状あり。" + }, + { + "id": 7, + "name": "Luna", + "species": "dog", + "age": 4, + "healthStatus": "Healthy", + "nextVisit": "2024-03-20", + "comments": "フィラリア予防薬の処方済み。定期投与を継続。" + }, + { + "id": 8, + "name": "Buddy", + "species": "dog", + "age": 9, + "healthStatus": "Needs Monitoring", + "nextVisit": "2024-02-01", + "comments": "心臓の検査結果要注意。投薬開始を検討。" + }, + { + "id": 9, + "name": "Riki", + "species": "dog", + "age": 1, + "healthStatus": "Healthy", + "nextVisit": "2024-02-28", + "comments": "初回ワクチン接種完了。発育状態良好。" + }, + { + "id": 10, + "name": "Mei", + "species": "dog", + "age": 7, + "healthStatus": "Treatment Required", + "nextVisit": "2024-01-22", + "comments": "皮膚アレルギーの治療中。食事制限継続。" + }, + { + "id": 11, + "name": "Kenta", + "species": "dog", + "age": 5, + "healthStatus": "Healthy", + "nextVisit": "2024-04-05", + "comments": "年次健康診断済み。特に問題なし。" + }, + { + "id": 12, + "name": "Sora", + "species": "dog", + "age": 10, + "healthStatus": "Needs Monitoring", + "nextVisit": "2024-02-10", + "comments": "甲状腺機能の検査値が境界線。経過観察必要。" + }, + { + "id": 13, + "name": "Hana", + "species": "dog", + "age": 3, + "healthStatus": "Healthy", + "nextVisit": "2024-03-15", + "comments": "混合ワクチン接種完了。体重管理順調。" + }, + { + "id": 14, + "name": "Rocky", + "species": "dog", + "age": 8, + "healthStatus": "Treatment Required", + "nextVisit": "2024-01-30", + "comments": "耳の感染症治療中。清潔維持の指導実施。" + }, + { + "id": 15, + "name": "Goro", + "species": "dog", + "age": 4, + "healthStatus": "Healthy", + "nextVisit": "2024-04-20", + "comments": "予防接種とフィラリア予防を定期的に実施中。" + }, + { + "id": 16, + "name": "Sakura", + "species": "dog", + "age": 6, + "healthStatus": "Needs Monitoring", + "nextVisit": "2024-02-05", + "comments": "軽度の貧血あり。食事療法開始。" + }, + { + "id": 17, + "name": "Chibi", + "species": "dog", + "age": 2, + "healthStatus": "Healthy", + "nextVisit": "2024-03-10", + "comments": "すべての予防接種完了。成長は順調。" + }, + { + "id": 18, + "name": "Max", + "species": "dog", + "age": 11, + "healthStatus": "Treatment Required", + "nextVisit": "2024-01-28", + "comments": "白内障の初期症状。点眼薬処方中。" + }, + { + "id": 19, + "name": "Yuki", + "species": "dog", + "age": 5, + "healthStatus": "Healthy", + "nextVisit": "2024-04-15", + "comments": "定期検診済み。予防接種も完了。" + }, + { + "id": 20, + "name": "Kiki", + "species": "dog", + "age": 7, + "healthStatus": "Needs Monitoring", + "nextVisit": "2024-02-20", + "comments": "体重過多。食事制限と運動療法を開始。" + } + ] +} \ No newline at end of file diff --git a/oci-csv-json-translation/data/translated_dog_healthcare.csv b/oci-csv-json-translation/data/translated_dog_healthcare.csv new file mode 100644 index 0000000..29142e5 --- /dev/null +++ b/oci-csv-json-translation/data/translated_dog_healthcare.csv @@ -0,0 +1,21 @@ +"id","name","species","age","healthStatus","nextVisit","Comments" +"1","Pochi","dog","5","Healthy","2024-02-15","A blood test will be conducted on the next visit." +"2","Taro","dog","8","Needs Monitoring","2024-01-20","Because the stomach is common sense, additional tests are required." +"3","Momo","dog","3","Healthy","2024-03-01","Rabies vaccination is complete.Don't forget to update next year." +"4","Hachi","dog","12","Needs Monitoring","2024-01-25","Symptoms of arthritis.Continue to receive pain relief." +"5","Koro","dog","2","Healthy","2024-04-10","All vaccinations are complete.He is in a very healthy state." +"6","Shiro","dog","6","Treatment Required","2024-01-18","Removal of teeth is necessary.Early symptoms of gingivitis." +"7","Luna","dog","4","Healthy","2024-03-20","Prescribed phylaria-preventive medications.Continued periodic administration." +"8","Buddy","dog","9","Needs Monitoring","2024-02-01","Beware of heart test results.Consider starting medication." +"9","Riki","dog","1","Healthy","2024-02-28","The first vaccination was completed.The development is good." +"10","Mei","dog","7","Treatment Required","2024-01-22","Treatment of skin allergies.Meal restrictions continued." +"11","Kenta","dog","5","Healthy","2024-04-05","Annual medical examination.Especially no problem." +"12","Sora","dog","10","Needs Monitoring","2024-02-10","Test values for thyroid function are boundaries.Follow-up is required." +"13","Hana","dog","3","Healthy","2024-03-15","Mixed vaccination is complete.Weight management is fine." +"14","Rocky","dog","8","Treatment Required","2024-01-30","Treatment of ear infections.Provide guidance to maintain cleanliness." +"15","Goro","dog","4","Healthy","2024-04-20","Vaccination and phylaria prevention are carried out regularly." +"16","Sakura","dog","6","Needs Monitoring","2024-02-05","There is mild anemia.Beginning of diet." +"17","Chibi","dog","2","Healthy","2024-03-10","All vaccinations are complete.Growth is going well." +"18","Max","dog","11","Treatment Required","2024-01-28","Early symptoms of cataracts.Prescription of eye drops." +"19","Yuki","dog","5","Healthy","2024-04-15","Regularly screened.The vaccination is complete." +"20","Kiki","dog","7","Needs Monitoring","2024-02-20","Too much weight.Start diet restrictions and exercise therapy." diff --git a/oci-csv-json-translation/img/bucket_namespace.png b/oci-csv-json-translation/img/bucket_namespace.png new file mode 100644 index 0000000..2bd3ca5 Binary files /dev/null and b/oci-csv-json-translation/img/bucket_namespace.png differ diff --git a/oci-csv-json-translation/img/create_bucket.png b/oci-csv-json-translation/img/create_bucket.png new file mode 100644 index 0000000..27eb500 Binary files /dev/null and b/oci-csv-json-translation/img/create_bucket.png differ diff --git a/oci-csv-json-translation/img/language_dynamic_group.png b/oci-csv-json-translation/img/language_dynamic_group.png new file mode 100644 index 0000000..2136b0a Binary files /dev/null and b/oci-csv-json-translation/img/language_dynamic_group.png differ diff --git a/oci-csv-json-translation/img/language_policy.png b/oci-csv-json-translation/img/language_policy.png new file mode 100644 index 0000000..be0bded Binary files /dev/null and b/oci-csv-json-translation/img/language_policy.png differ diff --git a/oci-csv-json-translation/img/matching_rules.png b/oci-csv-json-translation/img/matching_rules.png new file mode 100644 index 0000000..9dbbb14 Binary files /dev/null and b/oci-csv-json-translation/img/matching_rules.png differ diff --git a/oci-csv-json-translation/img/original.png b/oci-csv-json-translation/img/original.png new file mode 100644 index 0000000..35e1437 Binary files /dev/null and b/oci-csv-json-translation/img/original.png differ diff --git a/oci-csv-json-translation/img/os_output.png b/oci-csv-json-translation/img/os_output.png new file mode 100644 index 0000000..25d4f33 Binary files /dev/null and b/oci-csv-json-translation/img/os_output.png differ diff --git a/oci-csv-json-translation/img/output.png b/oci-csv-json-translation/img/output.png new file mode 100644 index 0000000..3d6e8f9 Binary files /dev/null and b/oci-csv-json-translation/img/output.png differ diff --git a/oci-csv-json-translation/img/preview.png b/oci-csv-json-translation/img/preview.png new file mode 100644 index 0000000..953f061 Binary files /dev/null and b/oci-csv-json-translation/img/preview.png differ diff --git a/oci-csv-json-translation/img/translated.png b/oci-csv-json-translation/img/translated.png new file mode 100644 index 0000000..9a4e92a Binary files /dev/null and b/oci-csv-json-translation/img/translated.png differ diff --git a/oci-csv-json-translation/img/uploaded_documents.png b/oci-csv-json-translation/img/uploaded_documents.png new file mode 100644 index 0000000..e7534b6 Binary files /dev/null and b/oci-csv-json-translation/img/uploaded_documents.png differ diff --git a/oci-csv-json-translation/requirements.txt b/oci-csv-json-translation/requirements.txt new file mode 100644 index 0000000..3034e0f --- /dev/null +++ b/oci-csv-json-translation/requirements.txt @@ -0,0 +1,3 @@ +oci>=2.141.1 +pyyaml +pandas \ No newline at end of file diff --git a/oci-language-multiple-translation/README.md b/oci-language-multiple-translation/README.md new file mode 100644 index 0000000..194945f --- /dev/null +++ b/oci-language-multiple-translation/README.md @@ -0,0 +1,218 @@ +# OCI Multiple Document Translation + +## Introduction + +Language translation has been revolutionized by artificial intelligence, particularly through the development of Large Language Models (LLMs). These models have dramatically simplified and enhanced our ability to translate between languages compared to earlier methods. + +This solution aims to automate the translation of multiple documents that have been previously stored in an OCI Object Storage bucket. For instance, a company is working on an open-source collaborative project with multiple people from all over the world; the documentation and instructions can be translated to all languages and allow developers from all over the world from contributing. + +It's also particularly useful for companies handling worldwide customer support, where documents, conversations and reports need to be quickly translated into multiple languages to serve a global user base. + +These documents can be anything from HTML documents (translating whole websites), to JSON, CSV/TSV, TXT, DOCX, PPTX, XLSX, and more formats. + +This solution supports various document formats and maintains the original file structure in the target bucket, making it ideal for bulk document translation tasks. + + + +## 0. Prerequisites and setup + +### Prerequisites + +- Python 3.8 or higher +- OCI Account with Language Translation service enabled +- Required IAM Policies and Permissions for async jobs +- Source and target Object Storage buckets +- OCI CLI configured with proper credentials + +### Docs + +- [ISO Language Codes](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) +- [OCI SDK](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm) +- [Async Job Policies on IAM](https://docs.oracle.com/en-us/iaas/language/using/policies-async-jobs.htm) +- [OCI Document Translation](https://docs.oracle.com/en-us/iaas/language/using/translate-document.htm#translate-document) +- [List of Supported Languages in OCI Language](https://docs.oracle.com/en-us/iaas/language/using/translate.htm#supported-langs) + +### Setup + +1. Create an OCI account if you don't have one +2. Enable Language Translation service in your tenancy +3. Set up OCI CLI and create API keys: + + ```bash + # Install OCI CLI + bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)" + + # Configure OCI CLI (this will create ~/.oci/config) + oci setup config + ``` + +4. Set up the appropriate IAM policies to use the OCI Language service ([see this link for more information](https://docs.oracle.com/en-us/iaas/language/using/policies.htm)). + +5. Create source and target buckets in OCI Object Storage: + + ![bucket creation](./img/create_bucket.png) + + After we've created these buckets, we're ready to upload documents to the source bucket. + +6. Take note of the Object Storage namespace containing the bucket(visible in the OCI Console under Object Storage), as you will need to add it to your `config.yaml`: + + ![bucket namespace](./img/bucket_namespace.png) + +7. Upload the documents you want translated to the source bucket: + + ![uploaded documents](./img/uploaded_documents.png) + + > **Note**: you can find the list of supported document types and extensions for the translation service [here.](https://docs.oracle.com/en-us/iaas/language/using/translate-document.htm#doc-types) + +8. Set up an additional IAM policy to allow all OCI Language resources to access and read the bucket. You will need to create a dynamic group, associate all OCI Language resources to that dynamic group, and give permissions to the dynamic group to read the bucket you created in the previous step. [(More info on this link)](https://docs.oracle.com/en-us/iaas/language/using/policies-async-jobs.htm) + + First, we create the dynamic group: + + ![dynamic group creation](./img/language_dynamic_group.png) + + Now, we create the policy: + + ![policy creation](./img/language_policy.png) + + Note that, depending on your Identity Domain, you will need to preprend the name of your Identity Domain to the group name, as demonstrated in the third policy in the image above. + +### Docs + +- [ISO Language Codes](https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes) +- [OCI SDK](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm) +- [Document Translation](https://docs.oracle.com/en-us/iaas/language/using/translate-document.htm#translate-document) +- [List of Supported Languages in OCI Language](https://docs.oracle.com/en-us/iaas/language/using/translate.htm#supported-langs) +- [List of Supported Document Types in OCI Document Translation](https://docs.oracle.com/en-us/iaas/language/using/translate-document.htm#doc-types) + +## 1. Getting Started + +1. Clone this repository: + + ```bash + git clone https://github.com/oracle-devrel/devrel-labs.git + cd oci-language-multiple-translation + ``` + +2. Install required dependencies: + + ```bash + pip install -r requirements.txt + ``` + +3. Update `config.yaml` with your settings: + + ```yaml + # Language Translation Service Configuration + language_translation: + compartment_id: "ocid1.compartment.oc1..your-compartment-id" + source_bucket: "source-bucket-name" + target_bucket: "target-bucket-name" + source_language: "en" # ISO language code + target_language: "es" # ISO language code + ``` + +4. Run the translation: + + ```bash + python bucket_translation.py + ``` + +You should get a detailed report of the whole process: + +![output](./img/multiple_output.png) + +## 2. Results + +My files have been translated to my target language wholly. For example, in my PPT presentation, all elements of the presentation keep their same structure, and the text elements change. Take a look at the following comparisons between the original and translated documents: + +### PowerPoint Presentations + +![ppt original](./img/ppt_original.png) + +![ppt translated](./img/ppt_translated.png) + +### Microsoft Word Documents + +![docx original](./img/docx_original.png) + +![docx translated](./img/docx_translated.png) + +## Configuration + +The project uses two types of configuration: + +1. **OCI Configuration** (`~/.oci/config`): + - Created automatically by `oci setup config` + - Contains your OCI authentication details + - Used for API authentication + +2. **Translation Configuration** (`config.yaml`): + + ```yaml + language_translation: + compartment_id: "ocid1.compartment.oc1..your-compartment-id" + source_bucket: "source-bucket-name" + target_bucket: "target-bucket-name" + source_language: "en" + target_language: "es" + ``` + +## Annex: Supported Languages + +| Language | Language Code | +|----------|------| +| Arabic | ar | +| Croatian | hr | +| Czech | cs | +| Danish | da | +| Dutch | nl | +| English | en | +| Finnish | fi | +| French | fr | +| French Canadian | fr-CA | +| German | de | +| Greek | el | +| Hebrew | he | +| Hungarian | hu | +| Italian | it | +| Japanese | ja | +| Korean | ko | +| Norwegian | no | +| Polish | pl | +| Portuguese | pt | +| Portuguese Brazilian | pt-BR | +| Romanian | ro | +| Russian | ru | +| Simplified Chinese | zh-CN | +| Slovak | sk | +| Slovenian | sl | +| Spanish | es | +| Swedish | sv | +| Thai | th | +| Traditional Chinese | zh-TW | +| Turkish | tr | +| Vietnamese | vi | + +For an updated list of supported languages, refer to [the OCI Documentation](https://docs.oracle.com/en-us/iaas/language/using/translate.htm#supported-langs). + +## Error Handling + +The tool includes comprehensive error handling: +- Configuration validation +- Service availability checks +- File format validation +- Translation status monitoring + +## Contributing + +This project is open source. Please submit your contributions by forking this repository and submitting a pull request! Oracle appreciates any contributions that are made by the open source community. + +## License + +Copyright (c) 2024 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](../LICENSE) for more details. + +ORACLE AND ITS AFFILIATES DO NOT PROVIDE ANY WARRANTY WHATSOEVER, EXPRESS OR IMPLIED, FOR ANY SOFTWARE, MATERIAL OR CONTENT OF ANY KIND CONTAINED OR PRODUCED WITHIN THIS REPOSITORY, AND IN PARTICULAR SPECIFICALLY DISCLAIM ANY AND ALL IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. FURTHERMORE, ORACLE AND ITS AFFILIATES DO NOT REPRESENT THAT ANY CUSTOMARY SECURITY REVIEW HAS BEEN PERFORMED WITH RESPECT TO ANY SOFTWARE, MATERIAL OR CONTENT CONTAINED OR PRODUCED WITHIN THIS REPOSITORY. IN ADDITION, AND WITHOUT LIMITING THE FOREGOING, THIRD PARTIES MAY HAVE POSTED SOFTWARE, MATERIAL OR CONTENT TO THIS REPOSITORY WITHOUT ANY REVIEW. USE AT YOUR OWN RISK. \ No newline at end of file diff --git a/oci-language-multiple-translation/bucket_translation.py b/oci-language-multiple-translation/bucket_translation.py new file mode 100644 index 0000000..2f91999 --- /dev/null +++ b/oci-language-multiple-translation/bucket_translation.py @@ -0,0 +1,189 @@ +import oci +import yaml +import sys +import time +import datetime +from pathlib import Path + +def load_config(): + """Load configuration from config.yaml file""" + try: + print("Loading configuration from config.yaml...") + with open("config.yaml", "r") as file: + config = yaml.safe_load(file) + print("✓ Configuration loaded successfully") + print(f" • Source bucket: {config['language_translation']['source_bucket']}") + print(f" • Target bucket: {config['language_translation']['target_bucket']}") + return config + except Exception as e: + print(f"✗ Error loading config.yaml: {str(e)}") + sys.exit(1) + +def init_clients(): + """Initialize OCI clients""" + try: + print("\nInitializing OCI clients...") + config = oci.config.from_file() + ai_client = oci.ai_language.AIServiceLanguageClient(config=config) + object_storage = oci.object_storage.ObjectStorageClient(config=config) + print("✓ AI Language client initialized") + print("✓ Object Storage client initialized") + return ai_client, object_storage + except Exception as e: + print(f"✗ Error initializing OCI clients: {str(e)}") + sys.exit(1) + +def generate_job_name(): + """Generate a unique job name with timestamp""" + current_date = datetime.date.today() + current_time = datetime.datetime.now() + return f"translation_job_{current_date.strftime('%Y-%m-%d')}T{current_time.strftime('%H-%M-%S')}" + +def list_bucket_objects(object_storage, namespace, bucket_name): + """List objects in a bucket""" + try: + print(f"\nListing objects in bucket '{bucket_name}'...") + response = object_storage.list_objects( + namespace_name=namespace, + bucket_name=bucket_name + ) + objects = [obj.name for obj in response.data.objects] + print(f"✓ Found {len(objects)} objects:") + for obj in objects: + print(f" • {obj}") + return objects + except Exception as e: + print(f"✗ Error listing bucket objects: {str(e)}") + return [] + +def translate_documents(ai_client, object_storage, config): + """Translate all documents in the source bucket""" + try: + start_time = time.time() + + # Get configuration values + compartment_id = config["language_translation"]["compartment_id"] + source_bucket = config["language_translation"]["source_bucket"] + target_bucket = config["language_translation"]["target_bucket"] + source_language = config["language_translation"]["source_language"] + target_language = config["language_translation"]["target_language"] + + # Get namespace + namespace = object_storage.get_namespace().data + print(f"\nUsing Object Storage namespace: {namespace}") + + # List source bucket contents + source_objects = list_bucket_objects(object_storage, namespace, source_bucket) + if not source_objects: + print("✗ No files found in source bucket. Please upload some files first.") + return False + + print(f"\nPreparing translation job...") + print(f" • Source language: {source_language}") + print(f" • Target language: {target_language}") + print(f" • Files to translate: {len(source_objects)}") + + # Create input location for all files in the bucket + input_location = oci.ai_language.models.ObjectStoragePrefixLocation( + namespace_name=namespace, + bucket_name=source_bucket + ) + + # Set up model metadata for translation + model_metadata_details = oci.ai_language.models.ModelMetadataDetails( + model_type="PRE_TRAINED_TRANSLATION", + language_code=source_language, + configuration={ + "targetLanguageCodes": oci.ai_language.models.ConfigurationDetails( + configuration_map={"languageCodes": target_language} + ) + } + ) + + # Set up output location + output_location = oci.ai_language.models.ObjectPrefixOutputLocation( + namespace_name=namespace, + bucket_name=target_bucket + ) + + # Create job details + job_name = generate_job_name() + create_job_details = oci.ai_language.models.CreateJobDetails( + display_name=job_name, + compartment_id=compartment_id, + input_location=input_location, + model_metadata_details=[model_metadata_details], + output_location=output_location + ) + + # Create and submit translation job + print(f"\nCreating translation job '{job_name}'...") + job_response = ai_client.create_job( + create_job_details=create_job_details + ) + + job_id = job_response.data.id + print(f"✓ Translation job created with ID: {job_id}") + + # Monitor job status + print("\nMonitoring translation progress...") + while True: + job_status = ai_client.get_job(job_id=job_id) + current_state = job_status.data.lifecycle_state + print(f" • {datetime.datetime.now().strftime('%H:%M:%S')}: Job status: {current_state}") + + if current_state in ["SUCCEEDED", "FAILED"]: + break + time.sleep(30) + + end_time = time.time() + duration = end_time - start_time + + if current_state == "SUCCEEDED": + print(f"\n✓ Translation completed successfully in {duration:.1f} seconds!") + print(f" • Translated files will be available in the '{target_bucket}' bucket") + print(f" • Files will have the same names with language code suffix") + return True + else: + print(f"\n✗ Translation failed after {duration:.1f} seconds") + print(f" • Final status: {current_state}") + return False + + except Exception as e: + print(f"\n✗ Error during translation: {str(e)}") + return False + +def main(): + try: + start_time = time.time() + print("=" * 70) + print("OCI Language Multiple Document Translation".center(70)) + print("=" * 70) + + # Load OCI configuration + config = load_config() + + # Initialize clients + ai_client, object_storage = init_clients() + + # Start translation + success = translate_documents(ai_client, object_storage, config) + + end_time = time.time() + total_duration = end_time - start_time + + print("\nSummary:") + print("-" * 70) + if success: + print("✓ Translation job completed successfully") + else: + print("✗ Translation job failed") + print(f"Total execution time: {total_duration:.1f} seconds") + print("=" * 70) + + except Exception as e: + print(f"\n✗ Error: {str(e)}") + sys.exit(1) + +if __name__ == "__main__": + main() diff --git a/oci-language-multiple-translation/config_example.yaml b/oci-language-multiple-translation/config_example.yaml new file mode 100644 index 0000000..9fee807 --- /dev/null +++ b/oci-language-multiple-translation/config_example.yaml @@ -0,0 +1,7 @@ +# Language Translation Service Configuration +language_translation: + compartment_id: "ocid1.compartment.oc1..aaaaaaaauyfykbiauv4nntvl3b57ydx3wcrqsnax7bbbvhov4vmdvqo2nqca" + source_bucket: "bucket-translation" + target_bucket: "bucket-translated" + source_language: "ja" # ISO language code + target_language: "es" # ISO language code \ No newline at end of file diff --git a/oci-language-multiple-translation/docs/object_detection.docx b/oci-language-multiple-translation/docs/object_detection.docx new file mode 100644 index 0000000..8a56df2 Binary files /dev/null and b/oci-language-multiple-translation/docs/object_detection.docx differ diff --git a/oci-language-multiple-translation/docs/ot_pptx_sample.pptx b/oci-language-multiple-translation/docs/ot_pptx_sample.pptx new file mode 100644 index 0000000..2cc47d7 Binary files /dev/null and b/oci-language-multiple-translation/docs/ot_pptx_sample.pptx differ diff --git a/oci-language-multiple-translation/docs/output_es_source_object_detection.docx b/oci-language-multiple-translation/docs/output_es_source_object_detection.docx new file mode 100644 index 0000000..b119151 Binary files /dev/null and b/oci-language-multiple-translation/docs/output_es_source_object_detection.docx differ diff --git a/oci-language-multiple-translation/docs/output_es_source_ot_pptx_sample.pptx b/oci-language-multiple-translation/docs/output_es_source_ot_pptx_sample.pptx new file mode 100644 index 0000000..5483173 Binary files /dev/null and b/oci-language-multiple-translation/docs/output_es_source_ot_pptx_sample.pptx differ diff --git a/oci-language-multiple-translation/docs/output_ja_source_object_detection.docx b/oci-language-multiple-translation/docs/output_ja_source_object_detection.docx new file mode 100644 index 0000000..5d3d8dc Binary files /dev/null and b/oci-language-multiple-translation/docs/output_ja_source_object_detection.docx differ diff --git a/oci-language-multiple-translation/docs/output_ja_source_ot_pptx_sample.pptx b/oci-language-multiple-translation/docs/output_ja_source_ot_pptx_sample.pptx new file mode 100644 index 0000000..277fc11 Binary files /dev/null and b/oci-language-multiple-translation/docs/output_ja_source_ot_pptx_sample.pptx differ diff --git a/oci-language-multiple-translation/img/bucket_namespace.png b/oci-language-multiple-translation/img/bucket_namespace.png new file mode 100644 index 0000000..2bd3ca5 Binary files /dev/null and b/oci-language-multiple-translation/img/bucket_namespace.png differ diff --git a/oci-language-multiple-translation/img/buckets_total.png b/oci-language-multiple-translation/img/buckets_total.png new file mode 100644 index 0000000..9d7d273 Binary files /dev/null and b/oci-language-multiple-translation/img/buckets_total.png differ diff --git a/oci-language-multiple-translation/img/create_bucket.png b/oci-language-multiple-translation/img/create_bucket.png new file mode 100644 index 0000000..27eb500 Binary files /dev/null and b/oci-language-multiple-translation/img/create_bucket.png differ diff --git a/oci-language-multiple-translation/img/docx_original.png b/oci-language-multiple-translation/img/docx_original.png new file mode 100644 index 0000000..ba76e1f Binary files /dev/null and b/oci-language-multiple-translation/img/docx_original.png differ diff --git a/oci-language-multiple-translation/img/docx_translated.png b/oci-language-multiple-translation/img/docx_translated.png new file mode 100644 index 0000000..5617633 Binary files /dev/null and b/oci-language-multiple-translation/img/docx_translated.png differ diff --git a/oci-language-multiple-translation/img/language_dynamic_group.png b/oci-language-multiple-translation/img/language_dynamic_group.png new file mode 100644 index 0000000..2136b0a Binary files /dev/null and b/oci-language-multiple-translation/img/language_dynamic_group.png differ diff --git a/oci-language-multiple-translation/img/language_policy.png b/oci-language-multiple-translation/img/language_policy.png new file mode 100644 index 0000000..be0bded Binary files /dev/null and b/oci-language-multiple-translation/img/language_policy.png differ diff --git a/oci-language-multiple-translation/img/multiple_output.png b/oci-language-multiple-translation/img/multiple_output.png new file mode 100644 index 0000000..43ceb62 Binary files /dev/null and b/oci-language-multiple-translation/img/multiple_output.png differ diff --git a/oci-language-multiple-translation/img/ppt_original.png b/oci-language-multiple-translation/img/ppt_original.png new file mode 100644 index 0000000..7c88591 Binary files /dev/null and b/oci-language-multiple-translation/img/ppt_original.png differ diff --git a/oci-language-multiple-translation/img/ppt_translated.png b/oci-language-multiple-translation/img/ppt_translated.png new file mode 100644 index 0000000..e237b4a Binary files /dev/null and b/oci-language-multiple-translation/img/ppt_translated.png differ diff --git a/oci-language-multiple-translation/img/preview.png b/oci-language-multiple-translation/img/preview.png new file mode 100644 index 0000000..3bea321 Binary files /dev/null and b/oci-language-multiple-translation/img/preview.png differ diff --git a/oci-language-multiple-translation/img/uploaded_documents.png b/oci-language-multiple-translation/img/uploaded_documents.png new file mode 100644 index 0000000..e7534b6 Binary files /dev/null and b/oci-language-multiple-translation/img/uploaded_documents.png differ diff --git a/oci-language-multiple-translation/requirements.txt b/oci-language-multiple-translation/requirements.txt new file mode 100644 index 0000000..b8913e3 --- /dev/null +++ b/oci-language-multiple-translation/requirements.txt @@ -0,0 +1,2 @@ +oci>=2.141.1 +pyyaml \ No newline at end of file diff --git a/oci-language-multiple-translation/sample_texts.txt b/oci-language-multiple-translation/sample_texts.txt new file mode 100644 index 0000000..c92e14e --- /dev/null +++ b/oci-language-multiple-translation/sample_texts.txt @@ -0,0 +1,10 @@ +The rapid advancement of artificial intelligence has transformed many industries. +Cloud computing enables businesses to scale their operations efficiently. +Machine learning algorithms can identify patterns in vast amounts of data. +Developers must consider security implications when designing applications. +Open source communities contribute significantly to software development. +Modern programming languages emphasize both performance and readability. +Containerization has revolutionized application deployment processes. +Agile methodologies help teams adapt to changing project requirements. +Version control systems are essential for collaborative development. +Documentation is crucial for maintaining and understanding code. \ No newline at end of file diff --git a/oci-language-translation/README.md b/oci-language-translation/README.md index 301bf0b..f5ec510 100644 --- a/oci-language-translation/README.md +++ b/oci-language-translation/README.md @@ -152,7 +152,7 @@ The service supports a wide range of languages. Common language codes include: - Chinese Simplified (zh-CN) - Japanese (ja) -For a complete list of supported languages, refer to the OCI Documentation. +For a complete list of supported languages, refer to [the OCI Documentation](https://docs.oracle.com/en-us/iaas/language/using/translate.htm#supported-langs). ## Error Handling diff --git a/oci-language-translation/requirements.txt b/oci-language-translation/requirements.txt index f10b2d9..3034e0f 100644 --- a/oci-language-translation/requirements.txt +++ b/oci-language-translation/requirements.txt @@ -1,3 +1,3 @@ -oci>=2.110.0 +oci>=2.141.1 pyyaml pandas \ No newline at end of file diff --git a/oci-subtitle-translation/README.md b/oci-subtitle-translation/README.md new file mode 100644 index 0000000..cb08f99 --- /dev/null +++ b/oci-subtitle-translation/README.md @@ -0,0 +1,158 @@ +# OCI Subtitle Translation + +## Introduction + +In today's global digital landscape, making audio and video content accessible across different languages is crucial. This solution leverages OCI's AI services to automatically generate and translate subtitles for audio content into multiple languages. + +The solution combines two powerful OCI services: +- **OCI Speech** to transcribe audio into text and generate SRT subtitle files +- **OCI Language** to translate the generated subtitles into multiple target languages + +This automated approach significantly reduces the time and effort required to create multilingual subtitles, making content more accessible to a global audience. + +## 0. Prerequisites and setup + +### Prerequisites + +- Python 3.8 or higher +- OCI Account with Speech and Language services enabled +- Required IAM Policies and Permissions +- Object Storage bucket for input/output files +- OCI CLI configured with proper credentials + +### Setup + +1. Create an OCI account if you don't have one +2. Enable OCI Speech and Language services in your tenancy +3. Set up OCI CLI and create API keys: + ```bash + # Install OCI CLI + bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)" + + # Configure OCI CLI (this will create ~/.oci/config) + oci setup config + ``` +4. Set up the appropriate IAM policies to use both OCI Speech and Language services +5. Create a bucket in OCI Object Storage for your audio files and generated subtitles +6. Take note of your Object Storage namespace (visible in the OCI Console under Object Storage) + +### Docs + +- [OCI Speech Service Documentation](https://docs.oracle.com/en-us/iaas/api/#/en/speech/20220101) +- [OCI Language Translation Documentation](https://docs.oracle.com/en-us/iaas/language) +- [OCI SDK Documentation](https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdkconfig.htm) + +## 1. Getting Started + +1. Clone this repository: + ```bash + git clone https://github.com/oracle-devrel/devrel-labs.git + cd oci-subtitle-translation + ``` + +2. Install required dependencies: + ```bash + pip install -r requirements.txt + ``` + +3. Update `config.yaml` with your settings: + ```yaml + # Speech Service Configuration + speech: + compartment_id: "ocid1.compartment.oc1..your-compartment-id" + bucket_name: "your-bucket-name" + namespace: "your-namespace" + + # Language Translation Configuration + language: + compartment_id: "ocid1.compartment.oc1..your-compartment-id" + ``` + +## 2. Usage + +This solution works in two steps: + +1. First, we generate SRT from audio: + + ```bash + python generate_srt_from_audio.py --input-file your_audio.mp3 + ``` + +2. Then, we translate the generated SRT file to multiple languages: + + ```bash + python translate_srt.py --input-file input.srt + ``` + +## Annex: Supported Languages + +The solution supports translation to the following languages: + +| Language | Language Code | +|----------|------| +| Arabic | ar | +| Croatian | hr | +| Czech | cs | +| Danish | da | +| Dutch | nl | +| English | en | +| Finnish | fi | +| French | fr | +| French Canadian | fr-CA | +| German | de | +| Greek | el | +| Hebrew | he | +| Hungarian | hu | +| Italian | it | +| Japanese | ja | +| Korean | ko | +| Norwegian | no | +| Polish | pl | +| Portuguese | pt | +| Portuguese Brazilian | pt-BR | +| Romanian | ro | +| Russian | ru | +| Simplified Chinese | zh-CN | +| Slovak | sk | +| Slovenian | sl | +| Spanish | es | +| Swedish | sv | +| Thai | th | +| Traditional Chinese | zh-TW | +| Turkish | tr | +| Vietnamese | vi | + +For an updated list of supported languages, refer to [the OCI Documentation](https://docs.oracle.com/en-us/iaas/language/using/translate.htm#supported-langs). + +## Supported Language Codes + +For the Speech-to-Text transcription service with GENERIC domain, the following language codes are supported: + +| Language | Code | +|----------|------| +| US English | en-US | +| British English | en-GB | +| Australian English | en-AU | +| Indian English | en-IN | +| Spanish (Spain) | es-ES | +| Brazilian Portuguese | pt-BR | +| Hindi (India) | hi-IN | +| French (France) | fr-FR | +| German (Germany) | de-DE | +| Italian (Italy) | it-IT | + +Note: When using the service, make sure to use the exact language code format as shown above. Simple codes like 'en' or 'es' will not work. + +## Contributing + +This project is open source. Please submit your contributions by forking this repository and submitting a pull request! Oracle appreciates any contributions that are made by the open source community. + +## License + +Copyright (c) 2024 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](../LICENSE) for more details. + +ORACLE AND ITS AFFILIATES DO NOT PROVIDE ANY WARRANTY WHATSOEVER, EXPRESS OR IMPLIED, FOR ANY SOFTWARE, MATERIAL OR CONTENT OF ANY KIND CONTAINED OR PRODUCED WITHIN THIS REPOSITORY, AND IN PARTICULAR SPECIFICALLY DISCLAIM ANY AND ALL IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. FURTHERMORE, ORACLE AND ITS AFFILIATES DO NOT REPRESENT THAT ANY CUSTOMARY SECURITY REVIEW HAS BEEN PERFORMED WITH RESPECT TO ANY SOFTWARE, MATERIAL OR CONTENT CONTAINED OR PRODUCED WITHIN THIS REPOSITORY. IN ADDITION, AND WITHOUT LIMITING THE FOREGOING, THIRD PARTIES MAY HAVE POSTED SOFTWARE, MATERIAL OR CONTENT TO THIS REPOSITORY WITHOUT ANY REVIEW. USE AT YOUR OWN RISK. \ No newline at end of file diff --git a/oci-subtitle-translation/config_example.yaml b/oci-subtitle-translation/config_example.yaml new file mode 100644 index 0000000..d51643c --- /dev/null +++ b/oci-subtitle-translation/config_example.yaml @@ -0,0 +1,9 @@ +# Speech Service Configuration +speech: + compartment_id: "ocid1.compartment.oc1..your-compartment-id" + bucket_name: "your-bucket-name" + namespace: "your-namespace" + +# Language Translation Configuration +language: + compartment_id: "ocid1.compartment.oc1..your-compartment-id" \ No newline at end of file diff --git a/oci-subtitle-translation/generate_srt_from_audio.py b/oci-subtitle-translation/generate_srt_from_audio.py new file mode 100644 index 0000000..03c139a --- /dev/null +++ b/oci-subtitle-translation/generate_srt_from_audio.py @@ -0,0 +1,103 @@ +# https://docs.oracle.com/en-us/iaas/api/#/en/speech/20220101/TranscriptionJob/CreateTranscriptionJob + +import oci +import yaml +import argparse +import sys +from datetime import datetime + +def log_step(message, is_error=False): + """Print a formatted log message with timestamp""" + timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S") + prefix = "ERROR" if is_error else "INFO" + print(f"[{timestamp}] {prefix}: {message}") + +# Parse command line arguments +parser = argparse.ArgumentParser(description='Generate SRT file from audio using OCI Speech service') +parser.add_argument('--input-file', required=True, help='Input audio file name in the configured bucket') +args = parser.parse_args() + +log_step(f"Starting transcription process for file: {args.input_file}") + +# Create a default config using DEFAULT profile in default location +try: + config = oci.config.from_file() + log_step("Successfully loaded OCI configuration") +except Exception as e: + log_step(f"Failed to load OCI configuration: {str(e)}", True) + sys.exit(1) + +# Initialize service client with default config file +try: + ai_speech_client = oci.ai_speech.AIServiceSpeechClient(config) + log_step("Successfully initialized AI Speech client") +except Exception as e: + log_step(f"Failed to initialize AI Speech client: {str(e)}", True) + sys.exit(1) + +# Load config from yaml file +def load_config(): + """Load configuration from config.yaml""" + try: + with open('config.yaml', 'r') as f: + config = yaml.safe_load(f) + log_step("Successfully loaded config.yaml") + log_step(f"Using bucket: {config['speech']['bucket_name']}") + log_step(f"Using namespace: {config['speech']['namespace']}") + return config + except Exception as e: + log_step(f"Failed to load config.yaml: {str(e)}", True) + sys.exit(1) + +config_yaml = load_config() + +# Send the request to service +log_step("Creating transcription job with following settings:") +log_step(f" • Input file: {args.input_file}") +log_step(f" • Output format: SRT") +log_step(f" • Language: en-US") +log_step(f" • Diarization: Enabled (2 speakers)") +log_step(f" • Profanity filter: Enabled (TAG mode)") + +try: + create_transcription_job_response = ai_speech_client.create_transcription_job( + create_transcription_job_details=oci.ai_speech.models.CreateTranscriptionJobDetails( + compartment_id=config_yaml['speech']['compartment_id'], + input_location=oci.ai_speech.models.ObjectListFileInputLocation( + location_type="OBJECT_LIST_FILE_INPUT_LOCATION", + object_location=oci.ai_speech.models.ObjectLocation( + namespace_name=config_yaml['speech']['namespace'], + bucket_name=config_yaml['speech']['bucket_name'], + object_names=[args.input_file])), # Fixed: Use actual input file name + output_location=oci.ai_speech.models.OutputLocation( + namespace_name=config_yaml['speech']['namespace'], + bucket_name=config_yaml['speech']['bucket_name'], + prefix="transcriptions"), + display_name=f"Transcription_{args.input_file}", + description=f"transcription_job_{args.input_file.replace('.', '_')}", + additional_transcription_formats=["SRT"], + model_details=oci.ai_speech.models.TranscriptionModelDetails( + domain="GENERIC", + language_code="en-US", + transcription_settings=oci.ai_speech.models.TranscriptionSettings( + diarization=oci.ai_speech.models.Diarization( + is_diarization_enabled=True, + number_of_speakers=2))), + normalization=oci.ai_speech.models.TranscriptionNormalization( + is_punctuation_enabled=True, + filters=[ + oci.ai_speech.models.ProfanityTranscriptionFilter( + type="PROFANITY", + mode="TAG")]), + freeform_tags={}, + defined_tags={})) + + log_step("Successfully created transcription job") + log_step("Job details:") + log_step(f" • Job ID: {create_transcription_job_response.data.id}") + log_step(f" • Status: {create_transcription_job_response.data.lifecycle_state}") + log_step(f" • Output will be saved to: {config_yaml['speech']['bucket_name']}/transcriptions/") + +except Exception as e: + log_step(f"Failed to create transcription job: {str(e)}", True) + sys.exit(1) diff --git a/oci-subtitle-translation/requirements.txt b/oci-subtitle-translation/requirements.txt new file mode 100644 index 0000000..74e0290 --- /dev/null +++ b/oci-subtitle-translation/requirements.txt @@ -0,0 +1,2 @@ +oci>=2.141.1 +pyyaml>=6.0.1 \ No newline at end of file diff --git a/rag_in_a_box/LICENSE b/rag_in_a_box/LICENSE new file mode 100644 index 0000000..fe41e72 --- /dev/null +++ b/rag_in_a_box/LICENSE @@ -0,0 +1,35 @@ +Copyright (c) 2021 Oracle and/or its affiliates. + +The Universal Permissive License (UPL), Version 1.0 + +Subject to the condition set forth below, permission is hereby granted to any +person obtaining a copy of this software, associated documentation and/or data +(collectively the "Software"), free of charge and under any and all copyright +rights in the Software, and any and all patent rights owned or freely +licensable by each licensor hereunder covering either (i) the unmodified +Software as contributed to or provided by such licensor, or (ii) the Larger +Works (as defined below), to deal in both + +(a) the Software, and +(b) any piece of software and/or hardware listed in the lrgrwrks.txt file if +one is included with the Software (each a "Larger Work" to which the Software +is contributed by such licensors), + +without restriction, including without limitation the rights to copy, create +derivative works of, display, perform, and distribute the Software and make, +use, sell, offer for sale, import, export, have made, and have sold the +Software and the Larger Work(s), and to sublicense the foregoing rights on +either these or other terms. + +This license is subject to the following condition: +The above copyright notice and either this complete permission notice or at +a minimum a reference to the UPL must be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/rag_in_a_box/README.md b/rag_in_a_box/README.md new file mode 100644 index 0000000..a5c277b --- /dev/null +++ b/rag_in_a_box/README.md @@ -0,0 +1,103 @@ +# AI RAG in a BOX Demo using Oracle Autonomous Database 23ai and Local LLMs + +## Introduction + +An innovative RAG (Retrieval Augmented Generation) system designed to leverage an LLM agent for effective information retrieval and response generation. + +This system efficiently processes various document formats and intelligently selects the appropriate knowledge base based on user queries. + +The AI RAG in a BOX Demo utilizing the Internal LLM Engine "Ollama" is deployable via Podman across multiple platforms, including Mac OSX, Windows, and Linux. + +AI RAG in a BOX Demo using Internal LLM Engine "Ollama" can be deployed in Podman on your PC - Mac OSX (Intel or ARM), Windows (Intel or ARM), or Linux. + +This solution includes 2 containers: +- Oracle Database 23ai +- AIRAG Container + +## 1. Install the containers + +#### Windows Deployment + +1. Install Podman in Windows + - Follow the installation guide [here](https://github.com/containers/podman/blob/main/docs/tutorials/podman-for-windows.md) + - See detailed tutorial for [Windows Installation](./install_win_llama3_db23ai.md) + +2. Install Containers + - Deploy using the script: [install_airagdb23ai_win.bat](./scripts/install_airagdb23ai_win.bat) + +#### Mac OSX Deployment + +- Deploy using the script. You can check all the steps which are commented in the script: [install_airagdb23ai_macosx.sh](./scripts/install_airagdb23ai_macosx.sh) + +#### Linux Deployment + +- Deploy using the script: [install_airagdb23ai_linux.sh](./scripts/install_airagdb23ai_linux.sh) + +## 2.Verifying Installation + +1. Check Podman network: + +```bash +podman network ls +``` + +2. Verify downloaded images: + +```bash +podman images +``` + +3. Check running containers: +```bash +podman ps +``` + +4. Check container logs: +```bash +podman logs -f 23aidb +podman logs -f airagdb23aiinbox +``` + +5. Connect to the database: +```bash +podman exec -it 23aidb sqlplus VECDEMO/@FREEPDB1 +``` + +## Appendix: Troubleshooting + +### Database Connection + +To verify database functionality for the user `VECDEMO`: + +```bash +podman exec -it 23aidb sqlplus VECDEMO/@FREEPDB1 +``` + +### HuggingFace Embeddings Error + +If you encounter this error: + +```bash +OSError: We couldn't connect to 'https://huggingface.co' to load this file... +``` + +Restart the container: + +```bash +podman stop airagdb23aiinbox +podman start airagdb23aiinbox +``` + +## Contributing + +This project is open source. Please submit your contributions by forking this repository and submitting a pull request! Oracle appreciates any contributions that are made by the open source community. + +## License + +Copyright (c) 2024 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](../LICENSE) for more details. + +ORACLE AND ITS AFFILIATES DO NOT PROVIDE ANY WARRANTY WHATSOEVER, EXPRESS OR IMPLIED, FOR ANY SOFTWARE, MATERIAL OR CONTENT OF ANY KIND CONTAINED OR PRODUCED WITHIN THIS REPOSITORY, AND IN PARTICULAR SPECIFICALLY DISCLAIM ANY AND ALL IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. FURTHERMORE, ORACLE AND ITS AFFILIATES DO NOT REPRESENT THAT ANY CUSTOMARY SECURITY REVIEW HAS BEEN PERFORMED WITH RESPECT TO ANY SOFTWARE, MATERIAL OR CONTENT CONTAINED OR PRODUCED WITHIN THIS REPOSITORY. IN ADDITION, AND WITHOUT LIMITING THE FOREGOING, THIRD PARTIES MAY HAVE POSTED SOFTWARE, MATERIAL OR CONTENT TO THIS REPOSITORY WITHOUT ANY REVIEW. USE AT YOUR OWN RISK. \ No newline at end of file diff --git a/rag_in_a_box/Untitled-58.md b/rag_in_a_box/Untitled-58.md new file mode 100644 index 0000000..a0c0012 --- /dev/null +++ b/rag_in_a_box/Untitled-58.md @@ -0,0 +1,1085 @@ + + + +operard@MacBook-Pro podman % ./setup.sh +Machine "podman-machine-default" stopped successfully +Starting machine "podman-machine-default" + +This machine is currently configured in rootless mode. If your containers +require root permissions (e.g. ports < 1024), or if you run into compatibility +issues with non-podman clients, you can switch using the following command: + + podman machine set --rootful + +API forwarding listening on: /var/folders/kb/jznn9w2n1bs3kjyyxdbnmydh0000gn/T/podman/podman-machine-default-api.sock + +The system helper service is not installed; the default Docker API socket +address can't be used by podman. If you would like to install it, run the following commands: + + sudo /opt/homebrew/Cellar/podman/5.2.2/bin/podman-mac-helper install + podman machine stop; podman machine start + +You can still connect Docker API clients by setting DOCKER_HOST using the +following command in your terminal session: + + export DOCKER_HOST='unix:///var/folders/kb/jznn9w2n1bs3kjyyxdbnmydh0000gn/T/podman/podman-machine-default-api.sock' + +Machine "podman-machine-default" started successfully +error: "qemu-user-static" is already provided by: qemu-user-static-2:8.2.2-1.fc40.aarch64. Use --allow-inactive to explicitly require it. +Machine "podman-machine-default" stopped successfully +Starting machine "podman-machine-default" + + + +podman machine ssh "${PODMAN_MACHINE_NAME}" 'sudo rpm-ostree install qemu-system-aarch64' + + + +https://github.com/containers/podman/releases/tag/v5.0.0 + +./setup-x86_64.sh --cpus 4 --memory 8192 --disk-size 24 + + +export ORACLE_BASE=/opt/oracle +export ORACLE_HOME=/opt/oracle/product/23ai/dbhomeFree +export INSTALL_FILE_1=oracle-database-free-23ai-1.0-1.el8.x86_64.rpm +export PWD_FILE=setPassword.sh +export CREATE_DB_FILE=createDB.sh +export USER_SCRIPTS_FILE=runUserScripts.sh +export CONF_FILE=oracle-free-23ai.conf +export CHECK_SPACE_FILE=checkSpace.sh +export CHECK_DB_FILE=checkDBStatus.sh +export SETUP_LINUX_FILE=setupLinuxEnv.sh +export DECRYPT_PWD_FILE=decryptPassword.sh +export CONFIG_TCPS_FILE=configTcps.sh +export INSTALL_DIR=/install +export ORACLE_DOCKER_INSTALL=true +export CHECKPOINT_FILE_EXTN=.created +export PATH=/opt/oracle/product/23ai/dbhomeFree/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +export CRYPTOGRAPHY_OPENSSL_NO_LEGACY=1 +export SETUPTC=setup.sh +export BLOBREADER=blobReader.py +export CREATE_TC_SVCS_SCRIPT=createService.sh +export CREATE_BLOB_SCRIPT=createBlob.sh +export REGISTER_TC_SVCS_SCRIPT=registerService.sh +export ENABLE_ARCHIVELOG=true +export ENABLE_FORCE_LOGGING=true +export ORACLE_SID=FREE +export ORACLE_PDB=FREEPDB1 +export ORACLE_PWD=Oracle4U +export AUTO_MEM_CALCULATION=false +export CMD_EXEC=cmdExec +export DEMO_APP=demoapp.sql +export MAIN_PY=main.py +export COMMON_PY=oracommon.py +export ENV_PY=oraenv.py +export FACTORY_PY=orafactory.py +export GSM_PY=oragsm.py +export LOGGER_PY=oralogger.py +export MACHINE_PY=oramachine.py +export PCATALOG_PY=orapcatalog.py +export SHARD_PY=orapshard.py +export SCATALOG_PY=orascatalog.py +export SSHARD_PY=orasshard.py +export RUN_SHARD_FILE=runOraShardSetup.sh +export RUN_FILE=runOracle.sh +export PYTHON_FILE=/usr/bin/python +export PYTHON3_FILE=/usr/libexec/platform-python3.6 +export SHARD_SETUP=false + + +podman machine init --cpus 4 --memory=8170 + + +podman pull --arch=arm64 container-registry.oracle.com/database/free:latest + +podman run -it --name 23aidb --entrypoint /bin/bash container-registry.oracle.com/database/free:latest + + + + +mkdir /Users/operard/Desktop/dev/models + + + +/Users/operard/Documents/customers/administracion/junta_extremadura/data + +docker run -it --network airag --ip 10.22.1.11 -p 8501:8501 -v /Users/operard/database:/config -v /Users/operard/Documents/customers/administracion/junta_extremadura/data:/data --name airagdb23aiinbox --entrypoint /bin/bash localhost/airagdb23aiinbox:1.0.0.0.0 + + +Test en LINUX: +----------------- +podman exec -it 23aidb sqlplus VECDEMO/Oracle4U@FREEPDB1 + +select table_name from user_tables; + + +/home/cloud-user/input + +export username=VECDEMO +export password=Oracle4U +export service="localhost:1521/FREEPDB1" + +python3 ovs_embed.py + +python3 rag.py + + +=> DB + +podman exec -it 23aidb sqlplus VECDEMO/Oracle4U@FREEPDB1 + +SQL> select table_name from user_tables; + +TABLE_NAME +-------------------------------------------------------------------------------- +JUNTA_EXT +AIRAGINBOX +OVS +VECTOR$IVF_IDX1$73611_73619_0$IVF_FLAT_CENTROIDS +VECTOR$IVF_IDX1$73611_73619_0$IVF_FLAT_CENTROID_PARTITIONS + +SQL> select count(*) from OVS; + + COUNT(*) +---------- + 91 + + + +Test en MacOSX: +----------------- + + +export username=VECDEMO +export password=Oracle4U +export service="10.22.1.12:1521/FREEPDB1" + + +export username=VECDEMO +export password=Oracle4U +export service="localhost:1522/FREEPDB1" + +export model="/Users/operard/Desktop/dev/models/Meta-Llama-3-8B-Instruct.Q4_K_M.gguf" + + +export username=VECDEMO +export password=Oracle4U +export service="localhost:1522/FREEPDB1" +export ollamaurl="http://localhost:11434" + + +export dbuser=VECDEMO +export dbpassword=Oracle4U +export dbservice="localhost:1522/FREEPDB1" +export ollamaurl="http://localhost:11434" + + + + + + + + + + +Simplificación Administrativa basada en IA + + +Modelos en Castellano: +------------------------ + + + +wget https://huggingface.co/Nichonauta/brasa-3.1-8b-it-v1-Q4_0-GGUF/blob/main/brasa-3.1-8b-it-v1-q4_0.gguf + + + + +podman run -d --name 23aidb --network airag --ip 10.22.1.12 -p 1522:1521 container-registry.oracle.com/database/free:latest + +podman exec 23aidb ./setPassword.sh Oracle4U + +podman exec -it 23aidb sqlplus / as SYSDBA + +ALTER SESSION SET CONTAINER=FREEPDB1; +CREATE USER VECDEMO IDENTIFIED BY "Oracle4U" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; +GRANT CONNECT, RESOURCE TO VECDEMO; +GRANT DB_DEVELOPER_ROLE to VECDEMO; +COMMIT; + + +podman exec -it 23aidb sqlplus VECDEMO/Oracle4U@FREEPDB1 + + +podman build -f=Dockerfile --tag=oracle/llama3finetuning:1.0.0.0.0 . + + +podman run -it --network airag --ip 10.22.1.15 --name llama3finetuning -v /home/cloud-user:/data localhost/oracle/llama3finetuning:1.0.0.0.0 createRAGDataset.py "VECDEMO" "Oracle4U" "10.22.1.12:1521/FREEPDB1" "JUNTA_OVS" "/data/pdf" + + +podman run -it --network airag --ip 10.22.1.15 --name llama3finetuning -v /home/cloud-user:/data --replace localhost/oracle/llama3finetuning:1.0.0.0.0 createRAGDataset.py "VECDEMO" "Oracle4U" "10.22.1.12:1521/FREEPDB1" "JUNTA_OVS2" "/data/pdf" + + +podman run -it --network airag --ip 10.22.1.15 --name llama3finetuning -v /home/cloud-user:/data --entrypoint /bin/bash localhost/oracle/llama3finetuning:1.0.0.0.0 + + +podman tag localhost/oracle/llama3finetuning:1.0.0.0.0 operard/llama3finetuning:1.0.0.0.0 + +podman push operard/llama3finetuning:1.0.0.0.0 + + + + +JSONLOADER +---------------- + +podman build -f=Dockerfile --tag=oracle/jsonvector2db23ai:1.0.0.0.0 . + +podman tag localhost/oracle/jsonvector2db23ai:1.0.0.0.0 operard/jsonvector2db23ai:1.0.0.0.0 + +docker exec -it 23aidb /opt/oracle/product/23ai/dbhomeFree/python/bin/python3.12 csv2db.py load -f "/data/cartografia/xxxxx.csv" --dbtype oracle -t JUNTA_CSV -u JUNTEXTUSER -p "Oracle4U" -d "FREEPDB1" + + + + +docker run -d --network junta-tier --ip 10.22.0.10 --name 23aidb -p 1522:1521 -v cfsdocker:/data \ +-v /root/oradata:/opt/oracle/oradata \ +-v /root/reco:/opt/oracle/reco \ +-e ENABLE_ARCHIVELOG=true \ +docker.io/operard/jsonvector2db23ai:1.0.0.0.0 + + + +docker exec -it 23aidb sqlplus JUNTEXTUSER/Oracle4U@FREEPDB1 + + + +docker run -it --network junta-tier --ip 10.22.0.15 -v cfsdocker:/data --name llama3finetuning docker.io/operard/llama3finetuning:1.0.0.0.0 createRAGDataset.py "JUNTEXTUSER" "Oracle4U" "10.22.0.10:1521/FREEPDB1" "JUNTA_OVS" "/data/pdf" + + + + + +docker exec -it 23aidb /opt/oracle/product/23ai/dbhomeFree/python/bin/python3.12 csv2db.py load -f "/data/cartografia/xxxxx.csv" --dbtype oracle -t JUNTA_CSV -u JUNTEXTUSER -p "Oracle4U" -d "FREEPDB1" + + +docker exec -it 23aidb /opt/oracle/product/23ai/dbhomeFree/python/bin/python3.12 csv2db.py load -f "/data/cartografia/yacimiento_xxxxx.csv" --dbtype oracle -t JUNTA_YACIMIENTO -u JUNTEXTUSER -p "Oracle4U" -d "FREEPDB1" + + + +CMAKE_ARGS="-DLLAMA_METAL=on" FORCE_CMAKE=1 pip install --upgrade --force-reinstall llama-cpp-python --no-cache-dir + + +/Users/operard/Desktop/dev/models/Phi-3-mini-4k-instruct-q4.gguf + + + +llm = Llama( + #model_path="/Users/operard/Desktop/dev/models/Phi-3-mini-4k-instruct-q4.gguf", + model_path="/Users/operard/Desktop/dev/models/Meta-Llama-3-8B-Instruct.Q4_K_M.gguf", + #n_gpu_layers=10, # Uncomment to use GPU acceleration + # seed=1337, # Uncomment to set a specific seed + #n_ctx=2048, # Uncomment to increase the context window + n_gpu_layers=-1, + ctx_size=2048, + temperature=0.8, + top_p=0.9, + max_tokens=128, + stop=["\n", "Q:"], + echo=True, + verbose=True, + seed=1234, + model_kwargs={"use_fp16": True}, + generate_kwargs={"temperature": 0.7, "top_k": 50} +) + + + + +llama-server \ + --model "/Users/operard/Desktop/dev/models/Meta-Llama-3-8B-Instruct.Q4_K_M.gguf" \ + --ctx_size 2048 -n -1 -b 256 \ + --temp 0.8 --repeat_penalty 1.1 -t 8 + + +---------------- + + +docker run -d --network airag --ip 10.22.1.11 -p 8501:8501 -p 11434:11434 -v /home/cloud-user/database:/config --name airagdb23aiinbox localhost/airagdb23aiinbox:1.0.0.0.0 + + + +[cloud-user@ordsrhel89 ollama]$ curl -fsSL https://ollama.com/install.sh | sh +>>> Installing ollama to /usr/local +>>> Downloading Linux amd64 bundle +######################################################################## 100.0%##O#- # ######################################################################## 100.0% +>>> Adding ollama user to render group... +>>> Adding ollama user to video group... +>>> Adding current user to ollama group... +>>> Creating ollama systemd service... +>>> Enabling and starting ollama service... +Created symlink /etc/systemd/system/default.target.wants/ollama.service → /etc/systemd/system/ollama.service. +>>> The Ollama API is now available at 127.0.0.1:11434. +>>> Install complete. Run "ollama" from the command line. +WARNING: No NVIDIA/AMD GPU detected. Ollama will run in CPU-only mode. + + + +11435 + +OLLAMA_HOST=127.0.0.1:11435 ollama serve & + +ollama run llama3.1 + +streamlit run llama3_1_Db23ai.py --server.port=8501 --server.address=0.0.0.0 + + +wget https://huggingface.co/Nichonauta/brasa-3.1-8b-it-v1-Q4_0-GGUF/blob/main/brasa-3.1-8b-it-v1-q4_0.gguf + + + +curl --location 'http://127.0.0.1:11434/api/chat' \ +--data '{ + "model": "mistral:latest", + "messages": [ + { + "role": "system", + "content": "you are a salty pirate" + }, + { + "role": "user", + "content": "why is the sky blue" + } + ], + "stream": false +}' + + + +curl --location 'http://localhost:11434/api/generate' \ +--data '{ + "model": "llama3.1", + "prompt": "what is the meaning of life?", + "system": "talk like a pirate", + "stream": false +}' + + + + +generame un contrato de alquiler de casa + + +curl --location 'http://localhost:11434/api/generate' \ +--data '{ + "model": "llama3.1", + "prompt": "generame un contrato de alquiler de casa", + "system": "Hablame como un profesional", + "stream": true +}' + + +time curl --location 'http://localhost:11434/api/generate' \ +--data '{ + "model": "llama3.1", + "prompt": "generame un contrato de alquiler de casa", + "system": "Hablame como un profesional", + "stream": false +}' + + + + +curl http://localhost:11434/v1/chat/completions \ + -H "Content-Type: application/json" \ + -d '{ + "model": "llama3.1", + "messages": [ + { + "role": "user", + "content": [ + { + "type": "text", + "text": "What'\''s in this image?" + }, + { + "type": "image_url", + "image_url": { + "url": "iVBORw0KGgoAAAANSUhEUgAAAG0AAABmCAYAAADBPx+VAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAA3VSURBVHgB7Z27r0zdG8fX743i1bi1ikMoFMQloXRpKFFIqI7LH4BEQ+NWIkjQuSWCRIEoULk0gsK1kCBI0IhrQVT7tz/7zZo888yz1r7MnDl7z5xvsjkzs2fP3uu71nNfa7lkAsm7d++Sffv2JbNmzUqcc8m0adOSzZs3Z+/XES4ZckAWJEGWPiCxjsQNLWmQsWjRIpMseaxcuTKpG/7HP27I8P79e7dq1ars/yL4/v27S0ejqwv+cUOGEGGpKHR37tzJCEpHV9tnT58+dXXCJDdECBE2Ojrqjh071hpNECjx4cMHVycM1Uhbv359B2F79+51586daxN/+pyRkRFXKyRDAqxEp4yMlDDzXG1NPnnyJKkThoK0VFd1ELZu3TrzXKxKfW7dMBQ6bcuWLW2v0VlHjx41z717927ba22U9APcw7Nnz1oGEPeL3m3p2mTAYYnFmMOMXybPPXv2bNIPpFZr1NHn4HMw0KRBjg9NuRw95s8PEcz/6DZELQd/09C9QGq5RsmSRybqkwHGjh07OsJSsYYm3ijPpyHzoiacg35MLdDSIS/O1yM778jOTwYUkKNHWUzUWaOsylE00MyI0fcnOwIdjvtNdW/HZwNLGg+sR1kMepSNJXmIwxBZiG8tDTpEZzKg0GItNsosY8USkxDhD0Rinuiko2gfL/RbiD2LZAjU9zKQJj8RDR0vJBR1/Phx9+PHj9Z7REF4nTZkxzX4LCXHrV271qXkBAPGfP/atWvu/PnzHe4C97F48eIsRLZ9+3a3f/9+87dwP1JxaF7/3r17ba+5l4EcaVo0lj3SBq5kGTJSQmLWMjgYNei2GPT1MuMqGTDEFHzeQSP2wi/jGnkmPJ/nhccs44jvDAxpVcxnq0F6eT8h4ni/iIWpR5lPyA6ETkNXoSukvpJAD3AsXLiwpZs49+fPn5ke4j10TqYvegSfn0OnafC+Tv9ooA/JPkgQysqQNBzagXY55nO/oa1F7qvIPWkRL12WRpMWUvpVDYmxAPehxWSe8ZEXL20sadYIozfmNch4QJPAfeJgW3rNsnzphBKNJM2KKODo1rVOMRYik5ETy3ix4qWNI81qAAirizgMIc+yhTytx0JWZuNI03qsrgWlGtwjoS9XwgUhWGyhUaRZZQNNIEwCiXD16tXcAHUs79co0vSD8rrJCIW98pzvxpAWyyo3HYwqS0+H0BjStClcZJT5coMm6D2LOF8TolGJtK9fvyZpyiC5ePFi9nc/oJU4eiEP0jVoAnHa9wyJycITMP78+eMeP37sXrx44d6+fdt6f82aNdkx1pg9e3Zb5W+RSRE+n+VjksQWifvVaTKFhn5O8my63K8Qabdv33b379/PiAP//vuvW7BggZszZ072/+TJk91YgkafPn166zXB1rQHFvouAWHq9z3SEevSUerqCn2/dDCeta2jxYbr69evk4MHDyY7d+7MjhMnTiTPnz9Pfv/+nfQT2ggpO2dMF8cghuoM7Ygj5iWCqRlGFml0QC/ftGmTmzt3rmsaKDsgBSPh0/8yPeLLBihLkOKJc0jp8H8vUzcxIA1k6QJ/c78tWEyj5P3o4u9+jywNPdJi5rAH9x0KHcl4Hg570eQp3+vHXGyrmEeigzQsQsjavXt38ujRo44LQuDDhw+TW7duRS1HGgMxhNXHgflaNTOsHyKvHK5Ijo2jbFjJBQK9YwFd6RVMzfgRBmEfP37suBBm/p49e1qjEP2mwTViNRo0VJWH1deMXcNK08uUjVUu7s/zRaL+oLNxz1bpANco4npUgX4G2eFbpDFyQoQxojBCpEGSytmOH8qrH5Q9vuzD6ofQylkCUmh8DBAr+q8JCyVNtWQIidKQE9wNtLSQnS4jDSsxNHogzFuQBw4cyM61UKVsjfr3ooBkPSqqQHesUPWVtzi9/vQi1T+rJj7WiTz4Pt/l3LxUkr5P2VYZaZ4URpsE+st/dujQoaBBYokbrz/8TJNQYLSonrPS9kUaSkPeZyj1AWSj+d+VBoy1pIWVNed8P0Ll/ee5HdGRhrHhR5GGN0r4LGZBaj8oFDJitBTJzIZgFcmU0Y8ytWMZMzJOaXUSrUs5RxKnrxmbb5YXO9VGUhtpXldhEUogFr3IzIsvlpmdosVcGVGXFWp2oU9kLFL3dEkSz6NHEY1sjSRdIuDFWEhd8KxFqsRi1uM/nz9/zpxnwlESONdg6dKlbsaMGS4EHFHtjFIDHwKOo46l4TxSuxgDzi+rE2jg+BaFruOX4HXa0Nnf1lwAPufZeF8/r6zD97WK2qFnGjBxTw5qNGPxT+5T/r7/7RawFC3j4vTp09koCxkeHjqbHJqArmH5UrFKKksnxrK7FuRIs8STfBZv+luugXZ2pR/pP9Ois4z+TiMzUUkUjD0iEi1fzX8GmXyuxUBRcaUfykV0YZnlJGKQpOiGB76x5GeWkWWJc3mOrK6S7xdND+W5N6XyaRgtWJFe13GkaZnKOsYqGdOVVVbGupsyA/l7emTLHi7vwTdirNEt0qxnzAvBFcnQF16xh/TMpUuXHDowhlA9vQVraQhkudRdzOnK+04ZSP3DUhVSP61YsaLtd/ks7ZgtPcXqPqEafHkdqa84X6aCeL7YWlv6edGFHb+ZFICPlljHhg0bKuk0CSvVznWsotRu433alNdFrqG45ejoaPCaUkWERpLXjzFL2Rpllp7PJU2a/v7Ab8N05/9t27Z16KUqoFGsxnI9EosS2niSYg9SpU6B4JgTrvVW1flt1sT+0ADIJU2maXzcUTraGCRaL1Wp9rUMk16PMom8QhruxzvZIegJjFU7LLCePfS8uaQdPny4jTTL0dbee5mYokQsXTIWNY46kuMbnt8Kmec+LGWtOVIl9cT1rCB0V8WqkjAsRwta93TbwNYoGKsUSChN44lgBNCoHLHzquYKrU6qZ8lolCIN0Rh6cP0Q3U6I6IXILYOQI513hJaSKAorFpuHXJNfVlpRtmYBk1Su1obZr5dnKAO+L10Hrj3WZW+E3qh6IszE37F6EB+68mGpvKm4eb9bFrlzrok7fvr0Kfv727dvWRmdVTJHw0qiiCUSZ6wCK+7XL/AcsgNyL74DQQ730sv78Su7+t/A36MdY0sW5o40ahslXr58aZ5HtZB8GH64m9EmMZ7FpYw4T6QnrZfgenrhFxaSiSGXtPnz57e9TkNZLvTjeqhr734CNtrK41L40sUQckmj1lGKQ0rC37x544r8eNXRpnVE3ZZY7zXo8NomiO0ZUCj2uHz58rbXoZ6gc0uA+F6ZeKS/jhRDUq8MKrTho9fEkihMmhxtBI1DxKFY9XLpVcSkfoi8JGnToZO5sU5aiDQIW716ddt7ZLYtMQlhECdBGXZZMWldY5BHm5xgAroWj4C0hbYkSc/jBmggIrXJWlZM6pSETsEPGqZOndr2uuuR5rF169a2HoHPdurUKZM4CO1WTPqaDaAd+GFGKdIQkxAn9RuEWcTRyN2KSUgiSgF5aWzPTeA/lN5rZubMmR2bE4SIC4nJoltgAV/dVefZm72AtctUCJU2CMJ327hxY9t7EHbkyJFseq+EJSY16RPo3Dkq1kkr7+q0bNmyDuLQcZBEPYmHVdOBiJyIlrRDq41YPWfXOxUysi5fvtyaj+2BpcnsUV/oSoEMOk2CQGlr4ckhBwaetBhjCwH0ZHtJROPJkyc7UjcYLDjmrH7ADTEBXFfOYmB0k9oYBOjJ8b4aOYSe7QkKcYhFlq3QYLQhSidNmtS2RATwy8YOM3EQJsUjKiaWZ+vZToUQgzhkHXudb/PW5YMHD9yZM2faPsMwoc7RciYJXbGuBqJ1UIGKKLv915jsvgtJxCZDubdXr165mzdvtr1Hz5LONA8jrUwKPqsmVesKa49S3Q4WxmRPUEYdTjgiUcfUwLx589ySJUva3oMkP6IYddq6HMS4o55xBJBUeRjzfa4Zdeg56QZ43LhxoyPo7Lf1kNt7oO8wWAbNwaYjIv5lhyS7kRf96dvm5Jah8vfvX3flyhX35cuX6HfzFHOToS1H4BenCaHvO8pr8iDuwoUL7tevX+b5ZdbBair0xkFIlFDlW4ZknEClsp/TzXyAKVOmmHWFVSbDNw1l1+4f90U6IY/q4V27dpnE9bJ+v87QEydjqx/UamVVPRG+mwkNTYN+9tjkwzEx+atCm/X9WvWtDtAb68Wy9LXa1UmvCDDIpPkyOQ5ZwSzJ4jMrvFcr0rSjOUh+GcT4LSg5ugkW1Io0/SCDQBojh0hPlaJdah+tkVYrnTZowP8iq1F1TgMBBauufyB33x1v+NWFYmT5KmppgHC+NkAgbmRkpD3yn9QIseXymoTQFGQmIOKTxiZIWpvAatenVqRVXf2nTrAWMsPnKrMZHz6bJq5jvce6QK8J1cQNgKxlJapMPdZSR64/UivS9NztpkVEdKcrs5alhhWP9NeqlfWopzhZScI6QxseegZRGeg5a8C3Re1Mfl1ScP36ddcUaMuv24iOJtz7sbUjTS4qBvKmstYJoUauiuD3k5qhyr7QdUHMeCgLa1Ear9NquemdXgmum4fvJ6w1lqsuDhNrg1qSpleJK7K3TF0Q2jSd94uSZ60kK1e3qyVpQK6PVWXp2/FC3mp6jBhKKOiY2h3gtUV64TWM6wDETRPLDfSakXmH3w8g9Jlug8ZtTt4kVF0kLUYYmCCtD/DrQ5YhMGbA9L3ucdjh0y8kOHW5gU/VEEmJTcL4Pz/f7mgoAbYkAAAAAElFTkSuQmCC" + } + } + ] + } + ], + "max_tokens": 300 + }' + + + + +-------------------------------------------- + + + # Prompt + template = """Lo siguiente es el uso del contexto y la pregunta final es la respuesta concisa. La respuesta es la ocasión, la respuesta es la ocasión.。 + {context} + Preguntar: {question} + Respuesta :""" + + #prompt_template = '''[INST] <> + #You are a friendly chatbot who always responds in the style of a pirate + #<> + #{prompt}[/INST] + #''' + + # + question_prompt = PromptTemplate( + template=template, + input_variables=["question"] + ) + + # RAG + qa = RetrievalQA.from_chain_type( + llm=llm, + chain_type="stuff", + retriever=ovs.as_retriever(search_kwargs={'k': 5}), + return_source_documents=True, + chain_type_kwargs={"prompt": question_prompt} + ) + + + +# First Version +def call_llama3(modelname, prompt): + # First Version + # return ollama.chat(model='llama3', messages=[{'role':'user', 'content': prompt}])['message']['content'] + #return ollama.chat(model=modelname, messages=[{'role':'user', 'content': prompt}])['message']['content'] + # client = Client(host='http://localhost:11434') + client = Client(host=llama_url) + return client.chat(model=modelname, messages=[{'role':'user', 'content': prompt}])['message']['content'] + + + + + +Simplificación Administrativa basada en IA + +Para el Congreso de Extremadura me piden una foto tuya, que ya la tengo del evento de la Universidad y un título de tu Ponencia, en la que mostraríamos el caso de uso de Patrimonio Cultural + + + +¿Qué te parece el título “Simplificación Administrativa basada en IA”? si se te ocurre algún otro bienvenido sea + + + +IA a gran escala: Escalando tus modelos con OCI Superclusters, GPUs y NVIDIA + + + +1. Introducción a OCI Superclusters
+- ¿Qué son los Superclusters?
+- Beneficios clave para la IA
+- Comparación con otras soluciones en la nube
+2. GPUs NVIDIA y su papel en la IA
+- Arquitecturas de las GPUs NVIDIA relevantes para la IA
+- Frameworks de deep learning soportados
+- Optimizaciones específicas para OCI
+3. Caso de uso: Entrenamiento de modelos de lenguaje grande
+- Desafíos del entrenamiento a gran escala
+- Cómo OCI Superclusters agiliza este proceso
+- Resultados y métricas
+4. Caso de uso: Inferencia en tiempo real
+- Requisitos para la inferencia en producción
+- Optimizaciones para la latencia y el rendimiento
+- Implementación de servicios de IA
+5. Preguntas y respuestas

+¿Qué se va a aprender?  +Superclusters + GPU + NVIDIA
+ + + + + +Andrew + +"Olivier Francois Xavier Perard" ; + +"Angus Myles" ; +"Enrique Diaz Galan" ; +"Oscar Bernacer" ; +"Pascal GIRAUD" ; +"Ervan Pouliquen" ; +"Sara Larragueta Gonzalo" ; +"Mark Newall" ; +"Riccardo Ottolenghi" ; +"Sergio Saez Fernandez" ; +"Begona Diaz Agudo" ; + + +"Javier Herrera" ; +"Ivan Rodriguez Diaz" ; + +"Filippos Boufis" ; +"Faisal Hasan" + + + + +In ExaCC, the policies on Database for previous version of 19c have changed from January 2024 +If a customer has "Upgrade Support" (previously named "Market Driven Support" or MDS), the automatic processes of EXACC detect this support option and allow the deployment of previous DB ( pre-19c). + +You have the info in einstein: https://einstein.oracle.com/q/cloud-support-for-legacy-11-2-0-4-12-1-0-2-12-2-0-1-databas-2699 + +If you have this support option, you can deploy until 11.2.0.4 patch April 2021.If you want to deploy other patch for this version, download from MOS, and apply manually in EXACC; los automatismos seguirán funcionando + + + + +For Oracle Forms, the last version is 12.2.1.19. + +To migrate to Forms 12c, I have done in 2 customers "Ahorramas" and RIU with lots of problems. + +You can find the Support tickets here: +3-33937968461, related to Bug 34001741 - FORMS HANGS OR CRASHES WHEN LOV OR EDITOR FILL PATTERN SET TO "NONE" +3-33909272871, related to error 422 when you compile PL/SQLs in Oracle Forms and corrected in the patch 35687821 + + +Yesterday, we have had a meeting with the Telefonica GCTIO and I wanted to inform you that our customer has expressed a keen interest in organizing a 3-day technical workshop. The primary focus of this workshop will be to explore, in detail, the integration of their core network with OCI DRCC. Additionally, they would like to deploy and test a network function, either from Nokia or Ericsson, on OCI. + +The goal of this workshop is to demonstrate a complete end-to-end solution, showcasing the integration process of the network function with their core network. They are particularly interested in observing the seamless orchestration and deployment capabilities within OCI’s environment. + +This presents a great opportunity for us to deepen our engagement with the customer and highlight OCI’s robust infrastructure for telecommunications. + +Please let me know your thoughts or if any further details are needed. + + +pip install llama-stack + +llama model list + +llama model list --show-all + +llama model download --source meta --model-id MODEL_ID + +https://llama3-2-lightweight.llamameta.net/*?Policy=eyJTdGF0ZW1lbnQiOlt7InVuaXF1ZV9oYXNoIjoieWFweWNxeGw0ZTE4MGhsMDl1Zzd4a2tyIiwiUmVzb3VyY2UiOiJodHRwczpcL1wvbGxhbWEzLTItbGlnaHR3ZWlnaHQubGxhbWFtZXRhLm5ldFwvKiIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTcyNzYyNTYyNH19fV19&Signature=aVWNn1PKouc1EQvNsAbo1GLQ5BW%7EKlSBIhp0iQIQvg%7EsB0OYkhTbNaUgWuGhH4ZKvirbAbwrxuLa0rpj4dn%7ENyelYb1izstmFYnDCETIiQDnHoeVfgcB44y-h73kW%7EYed2om4BKrryu3w00bO%7EoAZRnocHewOYTvH4yMnhiBWWB1I2CLxMJUEsQ5IAa6aeAV1%7EbkUyt%7Eg%7EF1-OpK723aiccf%7ErPmxHmYJtkCFiwuRlCsuuZDJtucFDjDLxZDBIchSUho0l-rMTMELacUeyQbbgughWcXYIKwUc1%7E3E5ioHzlzBZXhVykD44T2oLZbkvlBQSd8vDxTThwvIa-0yvf5g__&Key-Pair-Id=K15QRJLYKIFSLZ&Download-Request-ID=1262419888082684 + + +https://llama3-1.llamameta.net/*?Policy=eyJTdGF0ZW1lbnQiOlt7InVuaXF1ZV9oYXNoIjoicnl2MHF3Z2ZlNm83bDFwamd5b2lzY2k2IiwiUmVzb3VyY2UiOiJodHRwczpcL1wvbGxhbWEzLTEubGxhbWFtZXRhLm5ldFwvKiIsIkNvbmRpdGlvbiI6eyJEYXRlTGVzc1RoYW4iOnsiQVdTOkVwb2NoVGltZSI6MTcyNzYyNTYyNH19fV19&Signature=nWA%7El0XkSF6PdWPJ0VRmsqTZZxzPrWxXZI4t3hwy616RBm0HwSNvtwXcxgB-0-54AMf1FX-N3p2tUXumauCMcTWoMx00C7DnAGbLtHQGqMlyEWuW1aqKecxYFEaOFBOaubcF7HrAgPD5MGjXJEZTpjvwQUEayeA6tV6dcSbLq5QVHnxrzRw8nhq1YZTp17HJdLp9TmtRfBti8LFTYDa6DyYM45%7EMJ6erioPSaXhK8sIP7Y%7EgjElFJ2FeYErT5WnK8ClUFVc4ThAfqqRubH8bccvBTATlKmCdbaZJ8TYnPAH154NnVqVvBymFZSdpijty3nT42CPKA2W0cSumsH-QGA__&Key-Pair-Id=K15QRJLYKIFSLZ&Download-Request-ID=1606903917376685 + + + +curl 'https://dc.oracleinfinity.io/v3/wh3g12c3gg' \ + -H 'Accept: */*' \ + -H 'Accept-Language: en-US,en;q=0.9,es;q=0.8,fr;q=0.7' \ + -H 'Connection: keep-alive' \ + -H 'Content-Type: text/plain;charset=UTF-8' \ + -H 'Origin: https://reg.rf.oracle.com' \ + -H 'Referer: https://reg.rf.oracle.com/' \ + -H 'Sec-Fetch-Dest: empty' \ + -H 'Sec-Fetch-Mode: no-cors' \ + -H 'Sec-Fetch-Site: cross-site' \ + -H 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Mobile Safari/537.36' \ + -H 'sec-ch-ua: "Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"' \ + -H 'sec-ch-ua-mobile: ?1' \ + -H 'sec-ch-ua-platform: "Android"' \ + --data-raw '{"events":[{"wt.page_scroll_depth":100,"wt.dl":"71","dcsdat":1727457406828,"dcssip":"reg.rf.oracle.com","dcsuri":"/flow/oracle/ocw24/catalog/page/catalog","dcsref":"https://reg.rf.oracle.com/flow/oracle/ocw24/catalog/page/catalog/session/1719967755139001U0Au","wt.tz":2,"wt.bh":19,"wt.ul":"en-US","wt.cd":30,"wt.sr":"1512x982","wt.jo":"No","wt.ti":"Content Catalog - Sessions","wt.js":"Yes","wt.bs":"1482x752","wt.ssl":"1","wt.es":"reg.rf.oracle.com/flow/oracle/ocw24/catalog/page/catalog","wt.tv":"1.0.4","wt.ce":"1","wt.co_f":"dd0a9e3a-87b8-4d58-a8b5-4b1927e72284","ora.tag_id":"oracle","ora.tag_config":"production","ora.c_id":"dd0a9e3a-87b8-4d58-a8b5-4b1927e72284","ora.elq.vid":"20DE8F5219BB4975947E77A77790C93A","ora.eloqua_flag":"1","wt.cg_l1":"flow","wt.cg_l2":"oracle","wt.cg_l3":"ocw24","wt.cg_l4":"catalog","wt.cg_l5":"page","wt.cg_l6":"catalog"}]}' ; +curl 'https://dc.oracleinfinity.io/wh3g12c3gg/dcs.gif?wt.hm_scrolldepth=100&wt.hm_scrolldepthtype=regular&wt.dl=125&wt.hm_timespan=132246&dcsdat=1727457539068&dcssip=reg.rf.oracle.com&dcsuri=%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog&dcsref=https%3A%2F%2Freg.rf.oracle.com%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog%2Fsession%2F1719967755139001U0Au&wt.tz=2&wt.bh=19&wt.ul=en-US&wt.cd=30&wt.sr=1512x982&wt.jo=No&wt.ti=Content%20Catalog%20-%20Sessions&wt.js=Yes&wt.bs=1482x752&wt.ssl=1&wt.es=reg.rf.oracle.com%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog&wt.tv=1.0.4&wt.ce=1&wt.co_f=dd0a9e3a-87b8-4d58-a8b5-4b1927e72284&ora.tag_id=oracle&ora.tag_config=production&ora.c_id=dd0a9e3a-87b8-4d58-a8b5-4b1927e72284&ora.elq.vid=20DE8F5219BB4975947E77A77790C93A&ora.eloqua_flag=1&wt.cg_l1=flow&wt.cg_l2=oracle&wt.cg_l3=ocw24&wt.cg_l4=catalog&wt.cg_l5=page&wt.cg_l6=catalog' \ + -H 'Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8' \ + -H 'Accept-Language: en-US,en;q=0.9,es;q=0.8,fr;q=0.7' \ + -H 'Connection: keep-alive' \ + -H 'Referer: https://reg.rf.oracle.com/' \ + -H 'Sec-Fetch-Dest: image' \ + -H 'Sec-Fetch-Mode: no-cors' \ + -H 'Sec-Fetch-Site: cross-site' \ + -H 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Mobile Safari/537.36' \ + -H 'sec-ch-ua: "Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"' \ + -H 'sec-ch-ua-mobile: ?1' \ + -H 'sec-ch-ua-platform: "Android"' ; +curl 'https://dc.oracleinfinity.io/wh3g12c3gg/dcs.gif?wt.hm_winx=210&wt.hm_winy=521&wt.hm_targetx=0&wt.hm_targety=0&wt.hm_scrolldx=0&wt.hm_scrolldy=1359.5&wt.hm_x=210&wt.hm_y=1880.5&wt.hm_width=356&wt.hm_height=1619&wt.hm_scaled_x=26&wt.hm_scaled_y=49&wt.hm_target_id=%23widget-page-session-details&wt.hm_targetw=356&wt.hm_targeth=1619&wt.hm_resolution=50&wt.hm_selectortype=default&wt.dl=125&wt.hm_timespan=133281&dcsdat=1727457540103&dcssip=reg.rf.oracle.com&dcsuri=%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog&dcsref=https%3A%2F%2Freg.rf.oracle.com%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog%2Fsession%2F1719967755139001U0Au&wt.tz=2&wt.bh=19&wt.ul=en-US&wt.cd=30&wt.sr=1512x982&wt.jo=No&wt.ti=Content%20Catalog%20-%20Sessions&wt.js=Yes&wt.bs=1482x752&wt.ssl=1&wt.es=reg.rf.oracle.com%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog&wt.tv=1.0.4&wt.ce=1&wt.co_f=dd0a9e3a-87b8-4d58-a8b5-4b1927e72284&ora.tag_id=oracle&ora.tag_config=production&ora.c_id=dd0a9e3a-87b8-4d58-a8b5-4b1927e72284&ora.elq.vid=20DE8F5219BB4975947E77A77790C93A&ora.eloqua_flag=1&wt.cg_l1=flow&wt.cg_l2=oracle&wt.cg_l3=ocw24&wt.cg_l4=catalog&wt.cg_l5=page&wt.cg_l6=catalog' \ + -H 'Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8' \ + -H 'Accept-Language: en-US,en;q=0.9,es;q=0.8,fr;q=0.7' \ + -H 'Connection: keep-alive' \ + -H 'Referer: https://reg.rf.oracle.com/' \ + -H 'Sec-Fetch-Dest: image' \ + -H 'Sec-Fetch-Mode: no-cors' \ + -H 'Sec-Fetch-Site: cross-site' \ + -H 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Mobile Safari/537.36' \ + -H 'sec-ch-ua: "Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"' \ + -H 'sec-ch-ua-mobile: ?1' \ + -H 'sec-ch-ua-platform: "Android"' ; +curl 'https://px.ads.linkedin.com/wa/' \ + -H 'accept: *' \ + -H 'accept-language: en-US,en;q=0.9,es;q=0.8,fr;q=0.7' \ + -H 'content-type: text/plain;charset=UTF-8' \ + -H 'cookie: bcookie="v=2&b54c3432-4a65-4f01-8bff-3abff325644b"; li_gc=MTsyMTsxNzIzODEwNTg4OzI7MDIxij+zpGNzJkZ/F8cks/mv92veOr4u6CrErtGkut/JwEM=; li_sugr=ecc98483-6779-4faa-b905-03f719b18511; _guid=439155f2-ae40-46a2-a1e6-b8db400f695b; ar_debug=1; AnalyticsSyncHistory=AQIjMESLdCobTAAAAZIsjALdrDNKCNkxZ0aNmUbCp8G03pH2wJP8zXgeEmSVo4KI-RjojAuxy0PzrIAiUh8iaw; lms_ads=AQEQwLZxOND2hQAAAZIsjASRBbkyYj5wAsJ3pLtOGBrAYiZ1B0cBxDIeTw2aMHiF6FQAfJqOe-pTeVqRE8HdxC7y9OvIlUHr; lms_analytics=AQEQwLZxOND2hQAAAZIsjASRBbkyYj5wAsJ3pLtOGBrAYiZ1B0cBxDIeTw2aMHiF6FQAfJqOe-pTeVqRE8HdxC7y9OvIlUHr; lang=v=2&lang=en-us; liap=true; UserMatchHistory=AQIDo889jDzT0gAAAZI0MfvqLIhxdUhut7N35qk5pOAP4xGDFDR1QMUc1lcoxQux6YIPMQx5ieEgxb5p2gkxki0x1u6anNBJML-CSwPteXj3WnzEgz9Xp7tJXIjwcnpllKM9UF9OLmub1K9aIJzGIIAQvdJEze_n8y3pY4qJM6JqqfN-9a4W8F7P6QUVG-FMejUFnhfO8VTg_CbvVvACf9Wen9hOsvvVBmrfCwlP0lJjD8haGaZcNNOEFCHZgj-c4xRCk6sBLpEdMsq7fIzmWbR8ShnSXaL-qqybV9f-e23fhSmmoheV-wJ6iaCKJ8rhLxgRLK82eTMV94yEaoBYz2V5Of3C4YMqpHT08yjUqrzXoft3fQ; li_mc=MTsyMTsxNzI3NDU3MDEyOzI7MDIxTJyHGtyrW4dw41Y8wrOAtJ1IJckDgymtWRa0Pln4CLw=; __cf_bm=91OQW5.B5FaZPJV8Uj89QKOrISPvTT6KLCvt2BmA3zY-1727457284-1.0.1.1-kVmUlfr.Zurb2eZX2fTYBr0e17GbwR4lh_5VCRccRb6vw3PLr7sCt6JCYpIhLiI4YOHzbZNSiMgRWP5SbqLkDQ; lidc="b=VB30:s=V:r=V:a=V:p=V:g=4626:u=2090:x=1:i=1727457498:t=1727537886:v=2:sig=AQFiM8qvrQwPMlBqjTNcMZgWMEd-dthl"' \ + -H 'origin: https://reg.rf.oracle.com' \ + -H 'priority: u=1, i' \ + -H 'referer: https://reg.rf.oracle.com/' \ + -H 'sec-ch-ua: "Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"' \ + -H 'sec-ch-ua-mobile: ?1' \ + -H 'sec-ch-ua-platform: "Android"' \ + -H 'sec-fetch-dest: empty' \ + -H 'sec-fetch-mode: cors' \ + -H 'sec-fetch-site: cross-site' \ + -H 'user-agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Mobile Safari/537.36' \ + --data-raw '{"pids":[89045],"scriptVersion":172,"time":1727457543917,"domain":"reg.rf.oracle.com","url":"https://reg.rf.oracle.com/flow/oracle/ocw24/catalog/page/catalog/session/1719587813187001onK8","pageTitle":"Content Catalog - Sessions","websiteSignalRequestId":"d8c80590-7aa7-8f38-ab68-b9ea3f235246","isTranslated":false,"liFatId":"","liGiant":"","misc":{"psbState":-4},"isLinkedInApp":false,"hem":null,"signalType":"CLICK","href":"","domAttributes":{"elementSemanticType":null,"elementValue":null,"elementType":null,"tagName":"A","backgroundImageSrc":null,"imageSrc":null,"imageAlt":null,"innerText":"AI-led transformation - Rethink everything.pdf","elementTitle":null,"cursor":"pointer"},"innerElements":[{"elementSemanticType":"IMAGE","elementValue":null,"elementType":null,"tagName":"svg","backgroundImageSrc":null,"imageSrc":null,"imageAlt":null,"elementTitle":null,"cursor":"pointer"}],"elementCrumbsTree":[{"tagName":"div","nthChild":3,"id":"rf-content","classes":["rf-accessibility","rf-workflow","rfComp-canvas"]},{"tagName":"div","nthChild":0,"id":"special-div","classes":["special-div"]},{"tagName":"div","nthChild":0,"classes":["rf-workflow-body-content","rfwf-body-content"]},{"tagName":"div","nthChild":0,"classes":["page-builder-display-reset","rf-accessibility"]},{"tagName":"div","nthChild":1,"classes":["flex-box-section-full"]},{"tagName":"div","nthChild":0,"classes":["flex-box-section-full-interior"]},{"tagName":"div","nthChild":0,"classes":["flex-box-section"],"attributes":{"data-path":"children[1]"}},{"tagName":"div","nthChild":0,"classes":["flex-box-child","rf-grid-layout-100"],"attributes":{"data-path":"children[1].children[0]"}},{"tagName":"div","nthChild":0},{"tagName":"div","nthChild":0,"id":"rf-catalog","classes":["rf-widget"],"attributes":{"data-widgetid":"1712160686020003GgYw"}},{"tagName":"div","nthChild":0,"id":"widget-page-session-details","classes":["recommended","session-details-page"]},{"tagName":"div","nthChild":1,"classes":["session-details-container"]},{"tagName":"div","nthChild":0,"attributes":{"data-test":"component-container"}},{"tagName":"div","nthChild":1},{"tagName":"div","nthChild":0},{"tagName":"div","nthChild":11,"classes":["rf-attribute","sessionFiles-component"],"attributes":{"data-test":"sessionFiles-component"}},{"tagName":"div","nthChild":0,"classes":["download-file-link","session-files-component"]},{"tagName":"ul","nthChild":1},{"tagName":"li","nthChild":0},{"tagName":"a","nthChild":0}],"isFilteredByClient":false}' ; +curl 'https://dc.oracleinfinity.io/wh3g12c3gg/dcs.gif?wt.hm_winx=111&wt.hm_winy=465&wt.hm_targetx=20&wt.hm_targety=1540&wt.hm_scrolldx=0&wt.hm_scrolldy=1359.5&wt.hm_x=91&wt.hm_y=284.5&wt.hm_width=0&wt.hm_height=0&wt.hm_scaled_x=13&wt.hm_scaled_y=16&wt.hm_target_id=%23widget-page-session-details%20%3E%20DIV%3Anth-child(2)%20%3E%20DIV%3Anth-child(1)%20%3E%20DIV%3Anth-child(2)%20%3E%20DIV%3Anth-child(1)%20%3E%20DIV%3Anth-child(12)%20%3E%20DIV%3Anth-child(1)%20%3E%20UL%3Anth-child(2)%20%3E%20LI%3Anth-child(1)%20%3E%20A%3Anth-child(1)&wt.hm_targetw=0&wt.hm_targeth=0&wt.hm_resolution=50&wt.hm_selectortype=default&wt.dl=125&wt.hm_timespan=137097&dcsdat=1727457543919&dcssip=reg.rf.oracle.com&dcsuri=%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog&dcsref=https%3A%2F%2Freg.rf.oracle.com%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog%2Fsession%2F1719967755139001U0Au&wt.tz=2&wt.bh=19&wt.ul=en-US&wt.cd=30&wt.sr=1512x982&wt.jo=No&wt.ti=Content%20Catalog%20-%20Sessions&wt.js=Yes&wt.bs=1482x752&wt.ssl=1&wt.es=reg.rf.oracle.com%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog&wt.tv=1.0.4&wt.ce=1&wt.co_f=dd0a9e3a-87b8-4d58-a8b5-4b1927e72284&ora.tag_id=oracle&ora.tag_config=production&ora.c_id=dd0a9e3a-87b8-4d58-a8b5-4b1927e72284&ora.elq.vid=20DE8F5219BB4975947E77A77790C93A&ora.eloqua_flag=1&wt.cg_l1=flow&wt.cg_l2=oracle&wt.cg_l3=ocw24&wt.cg_l4=catalog&wt.cg_l5=page&wt.cg_l6=catalog' \ + -H 'Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8' \ + -H 'Accept-Language: en-US,en;q=0.9,es;q=0.8,fr;q=0.7' \ + -H 'Connection: keep-alive' \ + -H 'Referer: https://reg.rf.oracle.com/' \ + -H 'Sec-Fetch-Dest: image' \ + -H 'Sec-Fetch-Mode: no-cors' \ + -H 'Sec-Fetch-Site: cross-site' \ + -H 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Mobile Safari/537.36' \ + -H 'sec-ch-ua: "Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"' \ + -H 'sec-ch-ua-mobile: ?1' \ + -H 'sec-ch-ua-platform: "Android"' ; +curl 'https://events.rf.oracle.com/api/clickStore' \ + -H 'Accept: */*' \ + -H 'Accept-Language: en-US,en;q=0.9,es;q=0.8,fr;q=0.7' \ + -H 'Connection: keep-alive' \ + -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \ + -H 'Cookie: s_fid=71CFB3AE96A408D5-2A6F91EC99199E7A; ORA_FPC=id=dd0a9e3a-87b8-4d58-a8b5-4b1927e72284; _gcl_au=1.1.85941139.1724868999; ELOQUA=GUID=20DE8F5219BB4975947E77A77790C93A&FPCVISITED=1; atgRecVisitorId=11B3ZPWLZ7cWJnFGdPmgS_HW4z1Y25noMzN9rawT2pDBdbA4B28; FPC=id=0608165d-66b4-43cf-85fb-0e650ecdce6d; AMCVS_93263704532955710A490D44%40AdobeOrg=1; ora_session=set; s_cc=true; _ga=GA1.1.1450734823.1725829735; _ga_39ZQL0LH63=GS1.1.1725862691.2.1.1725863955.0.0.0; _abck=1A21FAA6033E34195562D019609952E9~0~YAAQH7U+F9+1M9qRAQAA5f4m8wzZ2kbvcBUPyQabENk+skso6MyYs3qU941pTv25+TM4NNhmqECCJLGERBCqGCIWsseNcBpmWS+ZRDB06+bguB5SBJaYNyflofLX3dYEfrjRUglOz7GVy3zJxiSaBr/pW0iR5rF365/0Qa+VtcaOLLm41TeEKobm8sHZSTKT0k8ywbki22rGgXqvN0I1Qgxu9aBWW4GKXcr+HOP1/wQvJMGVYhRK2FWTWVcsAj0xXSAcrdeG0jI2UmvyW36Ugl5p/FrGDs79mv9RRwlZgVaaXiAOgTC0O+pf7yHYzAj2bOvfU9IaKLJkJMfos3mwTrx1W9lFXaO1MzCpGFRdpwVbJCCSaKAVGD77ccbO1xrrNEPAcbiOtzCSWz8VeaaT4RZmfjAyhnEViPC8HhrZ7JzihtaHZYCmi7wnkPvMZuO0b1LuldQl2e0a~-1~-1~1726340878; s_eVar21=%3Aow%3Alp%3Acpo%3A%3A%3A%3ARC_DEVT230728P00017%3ALPD400301073; bm_lso=0EF8619CBA4600D108BD1E235F0E3038C1651920B8B3ADC21198B81A1A27B49B~YAAQH7U+F/p4SxSSAQAAj6kyLQH7LJsrn3UBLSWRd0tIu7v+U+D6703B15TnoIZkcPEseVGRbhmj9p153kZL0XfGHZrBytDCMw9PDdmYh0ODyd356/S3DNn+eIptRAF39bW/yKRtVuj4CSF7l1qZ8UPWEuZrBiR0VwG95WmPbuHh8EqT5pD5bKc9tNG3TBvDH1aysCDqjY8aYFaznfw3GBxmlnxshOHHWrs/CTRYXVTPv/MFu1q1lqYiQ/P89m6ZZnPAS2iXxnrSQcCvhGfXcy7VgRNQB+A1xNftx57jvIBubYmMI/HLGfOoX7DdUr3U8xz+L7JYvmleOSTI4Gu2rCN+MDaNwHitFt8EwhHY7A+h96I1A4wWRux/wzAep27/1uKV+J1CJyXoVixOq+Sy3QhFWlYIFAbSZBteqpiiCfDeQaV4aHYERMcfXN6gS31MRgD8mweiawFG/92eyA/GhFsOsnlKLZjZ59BeMsrWodizR8f/SnGiN+ayblaAwI7lpTQhqUKBXly4x8IDavV/XOAoj2Ns1TfqVc9hf68TfBtNHuBFOgAOj1XgK40r1kDMlyHKVZTkhKVjDP4FoATE^1727335148547; bm_s=YAAQH7U+F0PdRTGSAQAAJdrgMgKGqZ2rRDnHNMu2fkDOph0+wO4+W4SY6lH/Y+Gk3P53WYckjcGo25G1nlRAuaDaHy6g6kgHRCRXcoNljO/2YkSrfbxZo8hZI1BlRZpBPCgx8y/6w2YpDlOYgJHs+PVt6v40UtfZr1fQo2lMSfp6xdnaIrvTGuGcC07Idlrhaz5iTrb+KXotQLw5sZl4QKRLLy0gbM4BfSmxvFa/QMzGHo6gYqq3kzd/Ac6BLrlzD/AruRtW0N30dksQYKorzkFnTBArcL05WvB96DdrKErShmqL/ZuG1Gp3bslYVQ8uGx/QE0V+PDLPDbbvJXa26nLajPo=; notice_behavior=expressed,eu; notice_gdpr_prefs=0,1,2:cb8350a2759273dccf1e483791e6f8fd; notice_preferences=2:cb8350a2759273dccf1e483791e6f8fd; cmapi_gtm_bl=; cmapi_cookie_privacy=permit 1,2,3; ORA_PERS={"ids":["4055985002883040285","6324384103808243518"],"campaigns":{"5a574221-cb7b-47c3-ac7b-293f45578101":{"activeBlocks":["C1","C2"],"pointer":"E1"},"edfd9d7b-f6ac-41ee-9add-232597b14646":{"activeBlocks":["C1"],"pointer":"E1"},"a98691bd-a586-4470-9ec4-ef2474f8d3ba":{"activeBlocks":["C1","C2","C3"],"pointer":"E1"},"1f777a44-4a26-4fa4-870a-ee3a0f8c5cbd":{"activeBlocks":["c1","C2"],"pointer":"E1"},"25a1adfa-7dfe-400a-83fd-04f635862dda":{"activeBlocks":["C1","C2"],"pointer":"E1","event":"-4137955223049953571"},"1b06383a-0439-43cb-8088-1d004dfcb9b1":{"activeBlocks":["C2"],"pointer":"T2","event":"-4137955223049953571"},"7ab92038-41fc-4e05-a783-0826d466adb0":{"activeBlocks":["C1","C2"],"pointer":"E1"}},"hash":"TnD/cfQJVLi3mfZhcAm4aQdwi5rIJkEDeL3kpdBicsI="}; AMCV_93263704532955710A490D44%40AdobeOrg=1585540135%7CMCIDTS%7C19994%7CMCMID%7C22201730152700497652706826613346940968%7CMCAAMLH-1728056114%7C6%7CMCAAMB-1728056114%7CRKhpRz8krg2tLO6pguXWp5olkAcUniQYPHaMWWgdJ3xzPWQmdj0y%7CMCOPTOUT-1727458514s%7CNONE%7CMCAID%7CNONE%7CvVersion%7C4.4.0; ak_bmsc=2A9522FF2224E03CFE5A215CF48C2062~000000000000000000000000000000~YAAQG1UQYB4YEB6SAQAAUxpQNBlBgfaIhYh4IvkxokQU2oVVrR0u4N6b1DQP6uOciiGDwovHYhuy7d1ppDj5FXi/zzT3arGuiUH7V06LdSKkjoJrvyqQgyMZmmj1PAAHgrJeKlT8NQ69ceUYFF2+CRVsnRNK6tSk45+pMbxomyZ1gyWRvix1WzOecHRg2wphI+KC3ZkwoNO0xPzwzBy5WgHIrNqJG03cXHPEk7eXmDdQdYrL+dzcxovNAfGqK9J81riIpx6aZYjDKkQecwoy3/WJhaIsJYeTbyCPs4foppRdeD7MXOscRfTsgdah+ExDSf577/VlrmaYr0qhH2kzlV1bfR1kQkKYvOewEJshHgfS6frSkwGnECEcdBYnPtBZrXGO2vwRoafJ; s_ips=773; bm_sv=96544713A754550E83C3AC958F5D3A38~YAAQMLkUApraCjKSAQAAOuRQNBmXIIpe5E2V6nxjHz1saadDxlHjIoiBnlV3XyrI4HnrBHRLD4P2sH4axIi2RrY/eXg/5+U83hUkk5m1MZ8cPQXWgisyLDaP14mD71xFyFMm1Ae/+m1UV1kHlimtVDIabuLdziVa5T9eJbLKICAzJ66KHZOzZQJmXnu72+zCQJ4V2KgiP3zdZUYD0j8VnV50TSQyapqvF4gYpce+k8W2cPibWfGOBQ1jLy2cM8mx~1; s_tp=1041; s_ppv=mysites%253A%253A%252Fsearch%252F%2C74%2C74%2C74%2C773%2C1%2C1; TAsessionID=0911ed88-0bc4-4f64-9da8-da7ef354fd88|EXISTING; WTPERSIST=; RF.EVENTS.prd.SESSION=9ec7268d-7eed-4073-9d15-4282940a1389; 1586783053443001TvYm=1727457293192002ORWA; rfjwt=1c7d87c666ed48c1bb28c53b0e9b645f; rfjwt=1c7d87c666ed48c1bb28c53b0e9b645f; RT="z=1&dm=oracle.com&si=3380e2e9-ac85-4fd0-b694-aeb527216c3f&ss=m1klxe53&sl=0&tt=0&bcn=%2F%2F02179919.akstat.io%2F"; gpw_e24=https%3A%2F%2Freg.rf.oracle.com%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog; utag_main=v_id:01915a9291ca00142d6b7dceeb7805075002906d009dc$_sn:43$_se:18$_ss:0$_st:1727459293914$ses_id:1727457276769%3Bexp-session$_pn:4%3Bexp-session; s_tp=2024; s_ips=2024.5; s_ppv=https%253A%252F%252Freg.rf.oracle.com%252Fflow%252Foracle%252Focw24%252Fcatalog%252Fpage%252Fcatalog%252Fsession%252F1719587813187001onK8%2C100%2C100%2C100%2C2024.5%2C3%2C3; s_nr=1727457543922-Repeat; s_sq=oracleglobal%3D%2526c.%2526a.%2526activitymap.%2526page%253Dcloudworld%25253Aen-us%25253A%25252Fflow%25252Foracle%25252Focw24%25252Fcatalog%25252Fpage%25252Fcatalog%25252Fsession%25252F1719587813187001onk8%2526link%253DAI-led%252520transformation%252520-%252520Rethink%252520everything.pdf%2526region%253DBODY%2526pageIDType%253D1%2526.activitymap%2526.a%2526.c%2526pid%253Dcloudworld%25253Aen-us%25253A%25252Fflow%25252Foracle%25252Focw24%25252Fcatalog%25252Fpage%25252Fcatalog%25252Fsession%25252F1719587813187001onk8%2526pidt%253D1%2526oid%253DfunctionPr%252528%252529%25257B%25257D%2526oidt%253D2%2526ot%253DA%26oracleglobal-test%252Coraclecom-test%252Coracleinteractive-test%3D%2526c.%2526a.%2526activitymap.%2526page%253Dhttps%25253A%25252F%25252Fwww.oracle.com%25252Fai-infrastructure%25252F%2526link%253DNetworking%252520for%252520Supercluster%2526region%253DBODY%2526.activitymap%2526.a%2526.c' \ + -H 'Origin: https://reg.rf.oracle.com' \ + -H 'Referer: https://reg.rf.oracle.com/' \ + -H 'Sec-Fetch-Dest: empty' \ + -H 'Sec-Fetch-Mode: cors' \ + -H 'Sec-Fetch-Site: same-site' \ + -H 'User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Mobile Safari/537.36' \ + -H 'rfApiProfileId: k5qIfk5iZUYpPxKjzmX3F3RdivJ9F5ru' \ + -H 'rfAuthToken: 1c7d87c666ed48c1bb28c53b0e9b645f' \ + -H 'rfWidgetId: BNts4YIR7pc0gQNrWbKcxNYs4jHgTgoz' \ + -H 'sec-ch-ua: "Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"' \ + -H 'sec-ch-ua-mobile: ?1' \ + -H 'sec-ch-ua-platform: "Android"' \ + --data-raw 'clicks=%7B%22clicks%22%3A%5B%7B%22foreignType%22%3A%22sessionFile%22%2C%22foreignId%22%3A%221725032543322001ctpH%22%2C%22clickDate%22%3A%222024-09-27%2019%3A19%3A3%22%2C%22entityType%22%3A%22sessionDetails%22%2C%22entityId%22%3A%221719587813187001onK8%22%2C%22widgetApiToken%22%3A%22BNts4YIR7pc0gQNrWbKcxNYs4jHgTgoz%22%2C%22workflowId%22%3A%221706122668986079VScw%22%2C%22componentType%22%3A%22sessionV2%22%7D%5D%2C%22widgetApiTokens%22%3A%5B%22BNts4YIR7pc0gQNrWbKcxNYs4jHgTgoz%22%5D%2C%22workflowId%22%3A%221706122668986079VScw%22%2C%22unAuthClickIds%22%3A%5B%5D%2C%22rf%22%3Atrue%7D' + + + +cat ocw_file_list | while read f1 f2 +do +echo $f1 $f2 +curl -o $f1 "$f2" \ + -H $'Cookie: s_fid=71CFB3AE96A408D5-2A6F91EC99199E7A; ORA_FPC=id=dd0a9e3a-87b8-4d58-a8b5-4b1927e72284; _gcl_au=1.1.85941139.1724868999; ELOQUA=GUID=20DE8F5219BB4975947E77A77790C93A&FPCVISITED=1; atgRecVisitorId=11B3ZPWLZ7cWJnFGdPmgS_HW4z1Y25noMzN9rawT2pDBdbA4B28; FPC=id=0608165d-66b4-43cf-85fb-0e650ecdce6d; AMCVS_93263704532955710A490D44%40AdobeOrg=1; ora_session=set; s_cc=true; _ga=GA1.1.1450734823.1725829735; _ga_39ZQL0LH63=GS1.1.1725862691.2.1.1725863955.0.0.0; _abck=1A21FAA6033E34195562D019609952E9~0~YAAQH7U+F9+1M9qRAQAA5f4m8wzZ2kbvcBUPyQabENk+skso6MyYs3qU941pTv25+TM4NNhmqECCJLGERBCqGCIWsseNcBpmWS+ZRDB06+bguB5SBJaYNyflofLX3dYEfrjRUglOz7GVy3zJxiSaBr/pW0iR5rF365/0Qa+VtcaOLLm41TeEKobm8sHZSTKT0k8ywbki22rGgXqvN0I1Qgxu9aBWW4GKXcr+HOP1/wQvJMGVYhRK2FWTWVcsAj0xXSAcrdeG0jI2UmvyW36Ugl5p/FrGDs79mv9RRwlZgVaaXiAOgTC0O+pf7yHYzAj2bOvfU9IaKLJkJMfos3mwTrx1W9lFXaO1MzCpGFRdpwVbJCCSaKAVGD77ccbO1xrrNEPAcbiOtzCSWz8VeaaT4RZmfjAyhnEViPC8HhrZ7JzihtaHZYCmi7wnkPvMZuO0b1LuldQl2e0a~-1~-1~1726340878; s_eVar21=%3Aow%3Alp%3Acpo%3A%3A%3A%3ARC_DEVT230728P00017%3ALPD400301073; bm_lso=0EF8619CBA4600D108BD1E235F0E3038C1651920B8B3ADC21198B81A1A27B49B~YAAQH7U+F/p4SxSSAQAAj6kyLQH7LJsrn3UBLSWRd0tIu7v+U+D6703B15TnoIZkcPEseVGRbhmj9p153kZL0XfGHZrBytDCMw9PDdmYh0ODyd356/S3DNn+eIptRAF39bW/yKRtVuj4CSF7l1qZ8UPWEuZrBiR0VwG95WmPbuHh8EqT5pD5bKc9tNG3TBvDH1aysCDqjY8aYFaznfw3GBxmlnxshOHHWrs/CTRYXVTPv/MFu1q1lqYiQ/P89m6ZZnPAS2iXxnrSQcCvhGfXcy7VgRNQB+A1xNftx57jvIBubYmMI/HLGfOoX7DdUr3U8xz+L7JYvmleOSTI4Gu2rCN+MDaNwHitFt8EwhHY7A+h96I1A4wWRux/wzAep27/1uKV+J1CJyXoVixOq+Sy3QhFWlYIFAbSZBteqpiiCfDeQaV4aHYERMcfXN6gS31MRgD8mweiawFG/92eyA/GhFsOsnlKLZjZ59BeMsrWodizR8f/SnGiN+ayblaAwI7lpTQhqUKBXly4x8IDavV/XOAoj2Ns1TfqVc9hf68TfBtNHuBFOgAOj1XgK40r1kDMlyHKVZTkhKVjDP4FoATE^1727335148547; bm_s=YAAQH7U+F0PdRTGSAQAAJdrgMgKGqZ2rRDnHNMu2fkDOph0+wO4+W4SY6lH/Y+Gk3P53WYckjcGo25G1nlRAuaDaHy6g6kgHRCRXcoNljO/2YkSrfbxZo8hZI1BlRZpBPCgx8y/6w2YpDlOYgJHs+PVt6v40UtfZr1fQo2lMSfp6xdnaIrvTGuGcC07Idlrhaz5iTrb+KXotQLw5sZl4QKRLLy0gbM4BfSmxvFa/QMzGHo6gYqq3kzd/Ac6BLrlzD/AruRtW0N30dksQYKorzkFnTBArcL05WvB96DdrKErShmqL/ZuG1Gp3bslYVQ8uGx/QE0V+PDLPDbbvJXa26nLajPo=; notice_behavior=expressed,eu; notice_gdpr_prefs=0,1,2:cb8350a2759273dccf1e483791e6f8fd; notice_preferences=2:cb8350a2759273dccf1e483791e6f8fd; cmapi_gtm_bl=; cmapi_cookie_privacy=permit 1,2,3; ORA_PERS={"ids":["4055985002883040285","6324384103808243518"],"campaigns":{"5a574221-cb7b-47c3-ac7b-293f45578101":{"activeBlocks":["C1","C2"],"pointer":"E1"},"edfd9d7b-f6ac-41ee-9add-232597b14646":{"activeBlocks":["C1"],"pointer":"E1"},"a98691bd-a586-4470-9ec4-ef2474f8d3ba":{"activeBlocks":["C1","C2","C3"],"pointer":"E1"},"1f777a44-4a26-4fa4-870a-ee3a0f8c5cbd":{"activeBlocks":["c1","C2"],"pointer":"E1"},"25a1adfa-7dfe-400a-83fd-04f635862dda":{"activeBlocks":["C1","C2"],"pointer":"E1","event":"-4137955223049953571"},"1b06383a-0439-43cb-8088-1d004dfcb9b1":{"activeBlocks":["C2"],"pointer":"T2","event":"-4137955223049953571"},"7ab92038-41fc-4e05-a783-0826d466adb0":{"activeBlocks":["C1","C2"],"pointer":"E1"}},"hash":"TnD/cfQJVLi3mfZhcAm4aQdwi5rIJkEDeL3kpdBicsI="}; AMCV_93263704532955710A490D44%40AdobeOrg=1585540135%7CMCIDTS%7C19994%7CMCMID%7C22201730152700497652706826613346940968%7CMCAAMLH-1728056114%7C6%7CMCAAMB-1728056114%7CRKhpRz8krg2tLO6pguXWp5olkAcUniQYPHaMWWgdJ3xzPWQmdj0y%7CMCOPTOUT-1727458514s%7CNONE%7CMCAID%7CNONE%7CvVersion%7C4.4.0; ak_bmsc=2A9522FF2224E03CFE5A215CF48C2062~000000000000000000000000000000~YAAQG1UQYB4YEB6SAQAAUxpQNBlBgfaIhYh4IvkxokQU2oVVrR0u4N6b1DQP6uOciiGDwovHYhuy7d1ppDj5FXi/zzT3arGuiUH7V06LdSKkjoJrvyqQgyMZmmj1PAAHgrJeKlT8NQ69ceUYFF2+CRVsnRNK6tSk45+pMbxomyZ1gyWRvix1WzOecHRg2wphI+KC3ZkwoNO0xPzwzBy5WgHIrNqJG03cXHPEk7eXmDdQdYrL+dzcxovNAfGqK9J81riIpx6aZYjDKkQecwoy3/WJhaIsJYeTbyCPs4foppRdeD7MXOscRfTsgdah+ExDSf577/VlrmaYr0qhH2kzlV1bfR1kQkKYvOewEJshHgfS6frSkwGnECEcdBYnPtBZrXGO2vwRoafJ; s_ips=773; bm_sv=96544713A754550E83C3AC958F5D3A38~YAAQMLkUApraCjKSAQAAOuRQNBmXIIpe5E2V6nxjHz1saadDxlHjIoiBnlV3XyrI4HnrBHRLD4P2sH4axIi2RrY/eXg/5+U83hUkk5m1MZ8cPQXWgisyLDaP14mD71xFyFMm1Ae/+m1UV1kHlimtVDIabuLdziVa5T9eJbLKICAzJ66KHZOzZQJmXnu72+zCQJ4V2KgiP3zdZUYD0j8VnV50TSQyapqvF4gYpce+k8W2cPibWfGOBQ1jLy2cM8mx~1; s_tp=1041; s_ppv=mysites%253A%253A%252Fsearch%252F%2C74%2C74%2C74%2C773%2C1%2C1; TAsessionID=0911ed88-0bc4-4f64-9da8-da7ef354fd88|EXISTING; WTPERSIST=; RF.EVENTS.prd.SESSION=9ec7268d-7eed-4073-9d15-4282940a1389; 1586783053443001TvYm=1727457293192002ORWA; rfjwt=1c7d87c666ed48c1bb28c53b0e9b645f; rfjwt=1c7d87c666ed48c1bb28c53b0e9b645f; RT="z=1&dm=oracle.com&si=3380e2e9-ac85-4fd0-b694-aeb527216c3f&ss=m1klxe53&sl=0&tt=0&bcn=%2F%2F02179919.akstat.io%2F"; gpw_e24=https%3A%2F%2Freg.rf.oracle.com%2Fflow%2Foracle%2Focw24%2Fcatalog%2Fpage%2Fcatalog; utag_main=v_id:01915a9291ca00142d6b7dceeb7805075002906d009dc$_sn:43$_se:18$_ss:0$_st:1727459293914$ses_id:1727457276769%3Bexp-session$_pn:4%3Bexp-session; s_tp=2024; s_ips=2024.5; s_ppv=https%253A%252F%252Freg.rf.oracle.com%252Fflow%252Foracle%252Focw24%252Fcatalog%252Fpage%252Fcatalog%252Fsession%252F1719587813187001onK8%2C100%2C100%2C100%2C2024.5%2C3%2C3; s_nr=1727457543922-Repeat; s_sq=oracleglobal%3D%2526c.%2526a.%2526activitymap.%2526page%253Dcloudworld%25253Aen-us%25253A%25252Fflow%25252Foracle%25252Focw24%25252Fcatalog%25252Fpage%25252Fcatalog%25252Fsession%25252F1719587813187001onk8%2526link%253DAI-led%252520transformation%252520-%252520Rethink%252520everything.pdf%2526region%253DBODY%2526pageIDType%253D1%2526.activitymap%2526.a%2526.c%2526pid%253Dcloudworld%25253Aen-us%25253A%25252Fflow%25252Foracle%25252Focw24%25252Fcatalog%25252Fpage%25252Fcatalog%25252Fsession%25252F1719587813187001onk8%2526pidt%253D1%2526oid%253DfunctionPr%252528%252529%25257B%25257D%2526oidt%253D2%2526ot%253DA%26oracleglobal-test%252Coraclecom-test%252Coracleinteractive-test%3D%2526c.%2526a.%2526activitymap.%2526page%253Dhttps%25253A%25252F%25252Fwww.oracle.com%25252Fai-infrastructure%25252F%2526link%253DNetworking%252520for%252520Supercluster%2526region%253DBODY%2526.activitymap%2526.a%2526.c' +done + + + + +Genérame un documento de Resoluciones con las Secciones siguientes: Documentos Remitidos, Análisis de Tratamiento con Tramite, Valoración y Evaluación, Recomendaciones y Conclusiones + + +Genérame un documento de Resoluciones con las Secciones siguientes: Documentos Remitidos, Análisis de Tratamiento con sub-secciones (Tramite, Valoración y Evaluación), Recomendaciones y Conclusiones + + +Genérame un documento de Resoluciones con un informe las Secciones siguientes: Documentos Remitidos, Análisis de Tratamiento con sub-secciones (Tramite, Valoración y Evaluación), Recomendaciones y Conclusiones + + + + + +Genérame un documento de Resoluciones con un informe favorable o no, despues de consultar los registros, inventarios, carta arqueológica y Catalógos de bienes culturales de la junta de Extremadura con las Secciones siguientes: nombre del document original, nombre del promotor, resultado favorable o no y referencia a los articulos 30 y 49 de la ley 2/1999. + + +Genérame un documento de Resoluciones con un informe favorable o no, despues de consultar los registros, inventarios, carta arqueológica y Catalógos de bienes culturales de la junta de Extremadura con las Secciones siguientes: nombre del document original, nombre del promotor, resultado favorable o no y referencia a los articulos 30 y 49 de la ley 2/1999. + + + +Genérame un documento de Resoluciones con un informe favorable o no, despues de consultar los registros, inventarios, carta arqueológica y Catalógos de bienes culturales de la junta de Extremadura con las Secciones siguientes: nombre del expediente, nombre del promotor, resultado favorable o no y referencia a los articulos 30 y 49 de la ley 2/1999. + + + +Genérame un informe favorable o no para este expediente apoyandote sobre los modelos adjuntos despues de consultar los registros, inventarios, carta arqueológica y Catalógos de bienes culturales de la junta de Extremadura con las Secciones siguientes: nombre del expediente, nombre del promotor, resultado favorable o no y referencia a los articulos 30 y 49 de la ley 2/1999. + + + +python3 informe_generator.py "/Users/operard/Documents/customers/administracion/junta_extremadura/data/PatrimonioCultural/test3/6-Comunic._Cultura_ 23_059_CC_F.pdf" "/Users/operard/Documents/customers/administracion/junta_extremadura/generator" + + + + +python3 informe_generator.py "/Users/operard/Documents/customers/administracion/junta_extremadura/data/PatrimonioCultural/test1/18_Com_Cult_24_110_130_CC_F_.pdf" "/Users/operard/Documents/customers/administracion/junta_extremadura/generator" + + + +# Generate all output informes + +python3 informe_generator_all.py "/Users/operard/Documents/customers/administracion/junta_extremadura/data/" "/Users/operard/Documents/customers/administracion/junta_extremadura/generator" + + + + + + +EXPTE.: PLN/ 2024/192 (JAEB) +INFORME: AFECCIÓN PATRIMONIAL EN EXPEDIENTE: “INSTALACIÓN DE PLANTA SOLAR FOTOVOLTAICA DE +AUTOCONSUMO. SITUACION: PARCELA 117 (REF. CAT. 06022A013001170000PR), PARCELA 67 (REF. CAT. +06022A013000670000PH) DEL POLÍGONO 13. BURGUILLOS DEL CERRO. (2024/143/BA) ” +PROMOTOR: INDUSTRIAS CARNICAS VILLAR, S.A. +Su Expte.: (2024/143/BA) + +Se ha recibido en esta Dirección General, solicitud de informe sectorial por parte de la Dirección General de +Urbanismo y Ordenación del Territorio, respecto al proyecto al que se refiere el encabezamiento (registro de salida CSV: +FDJEXH94KM4AAKCMMM74LVAQX7V439 , de Fecha 04/07/2024 08:50:12 ). A la vista de la solicitud recibida, y tras +consultar los diferentes Registros, Inventarios, Carta Arqueológica y Catálogos, que protegen y recopilan los bienes +culturales del término municipal, cabe señalar que en la s parcela s de referencia se ha constatado que: +- No existen bienes que hayan sido declarados Bien de Interés Cultural, ni que tengan incoado expediente para su +declaración. +- No existen bienes incluidos en e l Inventario de Patrimonio Hist órico y Cultural de Extremadura , +- No e xisten bienes incluidos en el Registro de los bienes restantes del Patrimonio Hist órico y Cultural de Extremadura . +- No existen bienes incluidos en el Registro de bienes de l Patrimonio Arqueológico , + +A la vista de lo anteriormente reseñado, se propone se emita informe FAVORABLE de cara a futuras tramitaciones +del citado proyecto. No obstante, como medida preventiva, y con el fin de garantizar la protección del patrimonio +arqueológico no detectado, en el caso de desarrollo de actividades que supongan remociones en el terreno, se impone +la siguiente medida correctora, contemplada en el art. 54 de la Ley 2/1999, de 29 de marzo, de Patrimonio Histórico y +Cultural de Extremadura: + +“Si durante la ejecución de las obras se hallasen restos u objetos con valor arqueológico, el promotor y/o la +dirección facultativa de la misma paralizarán inmediatamente los trabajos, tomarán las medidas adecuadas +para la protección de los restos y comuni carán su descubrimiento en el plazo de cuarenta y ocho horas a +la Consejería de Cultura”. + +El presente informe se emite en virtud de lo establecido en los artículos 30 y 49 de la Ley 2/1999, de 29 de marzo, +de Patrimonio Histórico y Cultural de Extremadura, sin perjuicio del cumplimiento de aquellos requisitos legales o +reglamentariamente establecidos. +En Badajoz, a julio y 11, de 2024 + + + + +10.22.1.12 + +podman run -d --network airag --ip 10.22.1.15 -v /home/cloud-user:/data --name llama3finetuning operard/llama3finetuning:1.0.0.0.0 createRAGDataset.py "VECDEMO" "Oracle4U" "10.22.1.12:1521/FREEPDB1" "JUNTA_OVS2" "/data/pdf" + +python3 createRAGDataset.py "VECDEMO" "Oracle4U" "localhost:1522/FREEPDB1" "JUNTA_OVS2" "/home/cloud-user/pdf" + + + + + + + +podman run -d --name airagdb23aiinbox --network airag --ip 10.22.1.11 -p 8501:8501 -e dbuser=VECDEMO -e dbpassword=Oracle4U -e dbservice="10.22.1.12:1522/FREEPDB1" -e dbtablename=AIRAGINBOX docker.io/operard/airagdb23aiinbox:1.0.0-arm64 + +podman run -d --name airagdb23aiinbox --network airag --ip 10.22.1.11 -p 8501:8501 -e dbuser=VECDEMO -e dbpassword=Oracle4U -e dbservice="10.22.1.12:1522/FREEPDB1" -e dbtablename=AIRAGINBOX localhost/airagdb23aiinbox:1.0.0.0.0 + +podman run -d --name llama3gen --network airag --ip 10.22.1.13 -p 8501:8501 docker.io/operard/llama3generator:1.0.0.0.0 + + +export dbuser=VECDEMO +export dbpassword=Oracle4U +export dbservice="10.22.1.12:1522/FREEPDB1" +export dbtablename=AIRAGINBOX + +export + + + + +podman run -it --name airagdb23aiinbox --network airag --ip 10.22.1.11 -p 8501:8501 -e dbuser=VECDEMO -e dbpassword=Oracle4U -e dbservice="10.22.1.12:1522/FREEPDB1" -e dbtablename=AIRAGINBOX --entrypoint /bin/bash localhost/airagdb23aiinbox:1.0.0.0.0 + + + +podman run -d -p 8889:8888 -v /Users/operard/jupyter-data:/home/jovyan/work --network mynetwork --ip 10.22.1.75 docker.io/fcoalvrz/jupyter-onnx:latest start-notebook.py --NotebookApp.token='oracle12345' + + +podman run -d --name jupyter-onnx -p 8889:8888 -v /Users/operard/Desktop/dev/data:/home/jovyan/work --network airag --ip 10.22.1.75 docker.io/fcoalvrz/jupyter-onnx:latest start-notebook.py --NotebookApp.token='oracle12345' + + + + +podman run -d --name airagdb23aiinbox --network airag --ip 10.22.1.11 -p 8501:8501 -p 11434:11434 -e dbuser=VECDEMO -e dbpassword=Oracle4U -e dbservice="10.22.1.12:1521/FREEPDB1" -e dbtablename=AIRAGINBOX -v /Users/operard/Documents/customers/administracion/junta_extremadura/data:/data localhost/operard/airagdb23aiinbox:1.0.0-arm64 + + +export username=VECDEMO +export password=Oracle4U +export service="10.22.1.12:1521/FREEPDB1" + + +podman run -it --name airagdb23aiinbox --network airag --ip 10.22.1.11 -p 8501:8501 -e dbuser=VECDEMO -e dbpassword=Oracle4U -e dbservice="10.22.1.12:1521/FREEPDB1" -e dbtablename=AIRAGINBOX --entrypoint /bin/bash -v /Users/operard/Documents/customers/administracion/junta_extremadura/data:/data localhost/operard/airagdb23aiinbox:1.0.0-arm64 + + +An error occurred: 'st.session_state has no key "$$WIDGET_ID-60fb03dbad6d48b1736a8c995a6feef0-None". Did you forget to initialize it? More info: https://docs.streamlit.io/develop/concepts/architecture/session-state#initialization' + + +podman run -d --name airagdb23aiinbox --network airag --ip 10.22.1.11 -p 8501:8501 -p 11434:11434 -e username=VECDEMO -e password=Oracle4U -e service="10.22.1.12:1521/FREEPDB1" -e dbtablename=AIRAGINBOX -e tablename=AIRAGINBOX docker.io/operard/airagdb23aiinbox:1.0.0-arm64 + + +podman run -it --name airagdb23aiinbox --network airag --ip 10.22.1.11 -p 8501:8501 -e dbuser=VECDEMO -e dbpassword=Oracle4U -e dbservice="10.22.1.12:1521/FREEPDB1" -e dbtablename=AIRAGINBOX docker.io/operard/airagdb23aiinbox:1.0.0-arm64 + +podman run -d --name airagdb23aiinbox --network airag --ip 10.22.1.11 -p 8501:8501 -e dbuser=VECDEMO -e dbpassword=Oracle4U -e dbservice="10.22.1.12:1521/FREEPDB1" -e dbtablename=AIRAGINBOX docker.io/operard/airagdb23aiinbox:1.0.0-arm64 + + +extract_text() + + +http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5147/7b9d8397672a8fcb92d48b5a10a2df43 + +http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5147/7b9d8397672a8fcb92d48b5a10a2df43 +http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5332/ab70c83b4d54f550b5d78d6976395983 + + + + +operard@MacBook-Pro extract_pdf % python3 extractpdfurl.py "/Users/operard/Downloads/18_Com_Cult_24_110_130_CC_F_.pdf" +['http://www.juntaex.es', 'http://sitex.gobex.es/SITEX/calificacionexpedients/mostrardatossectoriales/2794/fd75adaf', 'http://sitex.gobex.es/SITEX/calificacionexpedients/mostrardatossectoriales/2815/ad4af10d', 'https://sede.gobex.es/SEDE/csv/codSeguroVerificacion.jsf'] +--> Execute webscrapping in :http://sitex.gobex.es/SITEX/calificacionexpedients/mostrardatossectoriales/2794/fd75adaf +--> Download next file : http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5147/7b9d8397672a8fcb92d48b5a10a2df43 +content-type: application/octet-stream +content-disposition: attachment; filename="Serradilla_Const_edificio_uso_almacen_JesusMGines.zip.zip"; +ffname: "Serradilla_Const_edificio_uso_almacen_JesusMGines.zip.zip"; +Downloaded: http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5147/7b9d8397672a8fcb92d48b5a10a2df43 +--> Download next file : http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5332/ab70c83b4d54f550b5d78d6976395983 +content-type: application/octet-stream +content-disposition: attachment; filename="Inf_Serv_Protección_24_110_CC.zip.zip"; +ffname: "Inf_Serv_Protección_24_110_CC.zip.zip"; +Downloaded: http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5332/ab70c83b4d54f550b5d78d6976395983 +--> Execute webscrapping in :http://sitex.gobex.es/SITEX/calificacionexpedients/mostrardatossectoriales/2815/ad4af10d +--> Download next file : http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5219/b95d816c1b91d52544b4c24b9aef7f63 +content-type: application/octet-stream +content-disposition: attachment; filename="Aldea_Cano_observatorio_astronomico_autocaravanas_Ecozona.7z.7z"; +ffname: "Aldea_Cano_observatorio_astronomico_autocaravanas_Ecozona.7z.7z"; +Downloaded: http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5219/b95d816c1b91d52544b4c24b9aef7f63 +--> Download next file : http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5322/6e5ece605bbe997fabc0711ba0ea5a9d +content-type: application/octet-stream +content-disposition: attachment; filename="Doc_24_130_CC_Aldea_Cano.zip.zip"; +ffname: "Doc_24_130_CC_Aldea_Cano.zip.zip"; +Downloaded: http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5322/6e5ece605bbe997fabc0711ba0ea5a9d +--> Download next file : http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5368/a9dbf5a9a0aeb488c4cdb89aa81c8705 +content-type: application/octet-stream +content-disposition: attachment; filename="Doc_expte._2024-130-CC.zip.zip"; +ffname: "Doc_expte._2024-130-CC.zip.zip"; +Downloaded: http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/5368/a9dbf5a9a0aeb488c4cdb89aa81c8705 +operard@MacBook-Pro extract_pdf % + + +#pip3 install pyunpack +#pip3 install patool +#pip3 install zipfile +pip3 install shutil +pip3 install py7zr + + + + +http://sitex.gobex.es/SITEX/calificacionexpedients/downloadFicheroExpediente/3961/80991873d49316e651e3c4310d5f3786 + +[http://sitex.gobex.es/SITEX/calificacion](http://sitex.gobex.es/SITEX/calificacionexpedients/mostrardatossectoriales/2815/ad4af10d) + + +http://sitex.gobex.es/SITEX/calificacionexpedients/mostrardatossectoriales/2815/ad4af10d + +http://sitex.gobex.es/SITEX/calificacionexpedients/mostrardatossectoriales/2815/ad4af10d + + + +podman machine start +podman start 23aidb +podman start airagdb23aiinbox + + +podman stop airagdb23aiinbox +podman stop 23aidb +podman machine stop + +d + +DROP VECTOR INDEX ivf_idx1JUNTA_OVS2; + +CREATE VECTOR INDEX JUNTA_OVS2_ivf_idx ON JUNTA_OVS2 (EMBEDDING) ORGANIZATION NEIGHBOR PARTITIONS DISTANCE COSINE WITH TARGET ACCURACY 95; + + +podman exec -it 23aidb /opt/oracle/product/23ai/dbhomeFree/python/bin/python3.12 loadXlsx2db23ai.py JUNTEXTUSER Oracle4U "localhost:1521/FREEPDB1" /data/cartografia/Yacimientos_Carta_Arqueologica_SRC_etrs89h29_EPSG_25829.xlsx JUNTA_YACIMIENTO + +podman exec -it 23aidb /opt/oracle/product/23ai/dbhomeFree/python/bin/python3.12 loadXlsx2db23ai.py JUNTEXTUSER Oracle4U "localhost:1521/FREEPDB1" /data/cartografia/Yacimientos_Carta_Arqueologica_SRC_etrs89h30_EPSG_25830.xlsxxlsx JUNTA_YACIMIENTO + + + +docker run -d --network junta-tier --ip 10.22.0.10 --name 23aidb -p 1522:1521 -v cfsdocker:/data -v /root/oradata:/opt/oracle/oradata -v /root/reco:/opt/oracle/reco -e ENABLE_ARCHIVELOG=true docker.io/operard/jsonvector2db23ai:1.0.0.0.0 + +docker stop 23aidb + +docker pull docker.io/operard/jsonvector2db23ai:1.0.0.0.0 + + + +docker exec -it 23aidb /opt/oracle/product/23ai/dbhomeFree/python/bin/python3.12 loadXlsx2db23ai.py JUNTEXTUSER Oracle4U "localhost:1521/FREEPDB1" /data/cartografia/Yacimientos_Carta_Arqueologica_SRC_etrs89h29_EPSG_25829.xlsx JUNTA_YACIMIENTO + + + +oracledb.exceptions.NotSupportedError: DPY-3013: unsupported Python type float for database type DB_TYPE_VARCHAR + + +python3 loadXlsx2db23ai.py VECDEMO Oracle4U "localhost:1522/FREEPDB1" /Users/operard/Desktop/dev/cartografia/Yacimientos_Carta_Arqueologica_SRC_etrs89h29_EPSG_25829.xlsx JUNTA_YACIMIENTO + + +python3 loadXlsx2db23ai.py VECDEMO Oracle4U "localhost:1522/FREEPDB1" /Users/operard/Desktop/dev/cartografia/Yacimientos_Carta_Arqueologica_SRC_etrs89h29_EPSG_25829_cor.xlsx JUNTA_YACIMIENTO_25829 > insert_JUNTA_YACIMIENTO_25829.sql + + +python3 loadXlsx2db23ai.py VECDEMO Oracle4U "localhost:1522/FREEPDB1" /Users/operard/Desktop/dev/cartografia/Yacimientos_Carta_Arqueologica_SRC_etrs89h30_EPSG_25830.xlsx JUNTA_YACIMIENTO_25829_cor > insert_JUNTA_YACIMIENTO_25830.sql + + + + +podman exec -it 23aidb sqlplus VECDEMO/Oracle4U@localhost:1521/FREEPDB1 + + + + +Bouygues Telecom - Alloy + + +Philippe ROULIE (VP Operation IT, Cyber Networks) +Ilham BENMALEK (Responsable direction Infrastructure) +Olivier HEITZ (CIO) + +Oracle Overview – Data / Cloud / AI – « Bring your past, Build your future » - Gerome De Gea +Oracle telecommunication – Roving Edege 5/6G, Modern dataplatform pour un LLM à l’échelle, Oss/Bss – Olivier Perard + + + + +podman exec -it 23aidb sqlplus VECDEMO/Oracle4U@FREEPDB1 + + + +DROP TABLE if exists JUNTA_YACIMIENTO_25829 ; + + +CREATE TABLE JUNTA_YACIMIENTO_25829 ( + shape SDO_GEOMETRY, + gid NUMBER, + ide VARCHAR2(255), + denominacion VARCHAR2(255), + MUNICIPIO VARCHAR2(255) +); + +python3 loadXlsx2db23ai.py VECDEMO Oracle4U "localhost:1522/FREEPDB1" /Users/operard/Desktop/dev/cartografia/Yacimientos_Carta_Arqueologica_SRC_etrs89h29_EPSG_25829_cor.xlsx JUNTA_YACIMIENTO_25829 > insert_JUNTA_YACIMIENTO_25829.sql + + +DROP TABLE if exists JUNTA_YACIMIENTO_25830; + + +CREATE TABLE JUNTA_YACIMIENTO_25830 ( + shape SDO_GEOMETRY, + gid NUMBER, + ide VARCHAR2(255), + denominacion VARCHAR2(255), + MUNICIPIO VARCHAR2(255) +); + + +python3 loadXlsx2db23ai.py VECDEMO Oracle4U "localhost:1522/FREEPDB1" /Users/operard/Desktop/dev/cartografia/Yacimientos_Carta_Arqueologica_SRC_etrs89h30_EPSG_25830_cor.xlsx JUNTA_YACIMIENTO_25830 > insert_JUNTA_YACIMIENTO_25830.sql + + +DROP TABLE if exists VIA_PLATA_25829 ; + + +CREATE TABLE VIA_PLATA_25829 ( + shape SDO_GEOMETRY, + TRAMO VARCHAR2(255), + TIPO VARCHAR2(255) +); + +set linesize 32767; +set linesize 100000 + +TRUNCATE TABLE VIA_PLATA_25829; +TRUNCATE TABLE JUNTA_YACIMIENTO_25830; +TRUNCATE TABLE JUNTA_YACIMIENTO_25829; + + +wkt_geom_ETRS89_H_29_25829 + +python3 loadXlsx2db23ai.py VECDEMO Oracle4U "localhost:1522/FREEPDB1" /Users/operard/Desktop/dev/cartografia/via_plata_SRC_etrs89h29_EPSG_25829_corr.xlsx VIA_PLATA_25829 > insert_VIA_PLATA_25829.sql + + + + + +podman exec -it 23aidb sqlplus VECDEMO/Oracle4U@FREEPDB1 + + + +docker exec -it llama3 python3 informe_generator.py "/data/pdf/....etc..../6-Comunic._Cultura_ 23_059_CC_F.pdf" "/data/generator" + + +------------------------------------------- +=> SCANNED DOCUMENT + +[cloud-user@ordsrhel89 ~]$ podman logs -f extractpdf2db23ai | grep -i "scan" +--> The File /data/input2/PatrimonioCultural/test2/4. TEXTO DE LA MODIFICACIÓN PROPUESTA.pdf is SCANNED !!! +--> The File /data/input2/PatrimonioCultural/test5/COMPLEJO.pdf.pdf is SCANNED !!! +Multiple definitions in dictionary at byte 0x36b62e for key /PageMode +incorrect startxref pointer(1) + + +pip3 install pdf2image +pip3 install pytesseract + +--------------- + +for linux you can use (for Colab also same will work) + +sudo apt-get install poppler-utils + +for windows you can use anaconda + +conda install -c conda-forge poppler + +-------- + +brew install poppler + + +4. TEXTO DE LA MODIFICACIÓN PROPUESTA.pdf + +sv600_g_fine.pdf + +operard@MacBook-Pro extract_pdf % python3 extractpdfscanned.py "/Users/operard/Downloads/sv600_g_fine.pdf" "/Users/operard/Documents/events" + + + + + + +---------------------------------------------- +ALTER TABLE city_points ADD (shape SDO_GEOMETRY); + + +SDO_UTIL.FROM_WKTGEOMETRY() + +insert into JUNTA_YACIMIENTO_25830 (shape, TRAMO, TIPO) +values( + sdo_util.from_wktgeometry ( + 'LineStringZ (734260.68584537110291421 4330022.97186488285660744 0, 734185.1070059307385236 4329907.30029541160911322 0, 734064.4138375308830291 4329778.6681335112079978 0, 733952.68692496058065444 4329660.64322730340063572 0, 733851.74581694114021957 4329544.22857489343732595 0, 733811.61539420066401362 4329505.60842495318502188 0, 733808.81855067098513246 4329488.84525376278907061 0, 733814.47761896078009158 4329456.98376499302685261 0)' + ),43,'Calzada Indiciaria' +); + + +LineStringZ (734260.68584537110291421 4330022.97186488285660744 0, 734185.1070059307385236 4329907.30029541160911322 0, 734064.4138375308830291 4329778.6681335112079978 0, 733952.68692496058065444 4329660.64322730340063572 0, 733851.74581694114021957 4329544.22857489343732595 0, 733811.61539420066401362 4329505.60842495318502188 0, 733808.81855067098513246 4329488.84525376278907061 0, 733814.47761896078009158 4329456.98376499302685261 0) 43 Calzada Indiciaria + + + + + +INSERT INTO JUNTA_YACIMIENTO_25829 (wkt_geom_ETRS89_H_29_25829, gid, ide, denominacion, MUNICIPIO) VALUES (sdo_util.from_wktgeometry ('MultiPolygon (((742971.9269161899574101 4325785.47671651188284159, 742971.92471380881033838 4325785.4885620353743434, 742972.12664593546651304 4325787.02916258759796619, 742972.32460986799560487 4325788.56788347475230694, 742972.32975691556930542 4325788.57875696383416653, 742972.33132012933492661 4325788.59068319201469421, 742972.99900294211693108 4325789.99258511420339346, 742973.66319150174967945 4325791.39572902023792267, 742973.67144331545569003 4325791.40447626728564501, 742973.67662156221922487 4325791.41534878686070442, 742974.74610638245940208 4325792.54366106167435646, 742975.81010615336708724 4325793.67154235020279884, 742986.99716118560172617 4325802.30841421242803335, 742989.77089894644450396 4325803.81961786560714245, 742992.8776029598666355 4325804.39027373865246773, 742996.00728881056420505 4325803.9634522357955575, 742998.84769390092696995 4325802.58173250220716, 743001.11541669943835586 4325800.38298251386731863, 743072.79218505311291665 4325704.56143835000693798, 743110.78971929801627994 4325669.09466818254441023, 743111.6460050669265911 4325668.18919030763208866, 743124.35729507450014353 4325652.94755270890891552, 743125.93714496563188732 4325650.31890705320984125, 743131.53137325588613749 4325636.60075390990823507, 743132.22966779069975019 4325633.74067036993801594, 743132.06481926841661334 4325630.80117708072066307, 743131.05112188681960106 4325628.03707086946815252, 743129.27644802199210972 4325625.6879488080739975, 743126.89461800828576088 4325623.95741848088800907, 743121.09041640337090939 4325620.93138525541871786, 743121.49201574944891036 4325617.9084997670724988, 743122.54700875701382756 4325612.0008047679439187, 743123.92683990823570639 4325605.24817063845694065, 743125.5084385578520596 4325598.03127248398959637, 743127.17180328932590783 4325590.6910159345716238, 743128.79385283763986081 4325583.57318654097616673, 743128.80523170239757746 4325583.52268718462437391, 743130.26217481773346663 4325576.97304051648825407, 743130.28938200499396771 4325576.8468621214851737, 743131.48643516656011343 4325571.11762494407594204, 743131.52216123812831938 4325570.93850721791386604, 743132.46155374392401427 4325565.99290999583899975, 743132.50253879488445818 4325565.76244291942566633, 743133.21038818848319352 4325561.49299702234566212, 743133.2541621191194281 4325561.20263069681823254, 743133.75657594332005829 4325557.50183750502765179, 743133.79810881451703608 4325557.14899196475744247, 743134.12120461103040725 4325553.90934284683316946, 743134.15328676498029381 4325553.50461794715374708, 743134.32318207540083677 4325550.6186042670160532, 743134.33914420357905328 4325550.19308961555361748, 743134.3819565704325214 4325547.55322275124490261, 743134.38056961435358971 4325547.1586376978084445, 743134.32241657818667591 4325544.65740901045501232, 743134.3088108766824007 4325544.31889324728399515, 743134.16821034764871001 4325541.86035396438091993, 743134.13943427393678576 4325541.48275867756456137, 743133.90450562431942672 4325539.01719940640032291, 743133.8544891222845763 4325538.58986472431570292, 743133.50572209106758237 4325536.07910593505948782, 743133.43249565782025456 4325535.62788153719156981, 743132.95040998095646501 4325533.03376368898898363, 743132.85616402933374047 4325532.58432924933731556, 743132.22126944630872458 4325529.86869280599057674, 743132.11165422829799354 4325529.44239807035773993, 743131.30446047685109079 4325526.56707350071519613, 743131.18681609886698425 4325526.17849828116595745, 743130.18784291774500161 4325523.10532605368643999, 743130.06928935833275318 4325522.76196026615798473, 743128.85902648558840156 4325519.45276083797216415, 743128.74978375807404518 4325519.16764432936906815, 743127.32214101939462125 4325515.60517791658639908, 743127.23944923339877278 4325515.40513036213815212, 743125.64184679253958166 4325511.65570617374032736, 743125.58377566188573837 4325511.52211780566722155, 743123.87703377101570368 4325507.67300479393452406, 743123.83926308341324329 4325507.58886582031846046, 743122.08420199796091765 4325503.72729294002056122, 743122.0646616566227749 4325503.68456346075981855, 743120.32207162585109472 4325499.89776965975761414, 743118.66150305664632469 4325496.291913659311831, 743117.15989649167750031 4325492.99019396770745516, 743115.8847423829138279 4325490.09877931419759989, 743114.88200104678981006 4325487.69073878787457943, 743114.13571236387360841 4325485.74041272327303886, 743113.6180563346715644 4325484.21405149530619383, 743113.29556310537736863 4325483.07994549628347158, 743113.12354277295526117 4325482.29002528637647629, 743113.04849497007671744 4325481.75919189397245646, 743113.02358827961143106 4325481.35136699862778187, 743113.02580039645545185 4325481.18472516164183617, 743113.78724245470948517 4325480.80851438548415899, 743115.12809438083786517 4325480.2659021969884634, 743116.84742733533494174 4325479.6705409549176693, 743118.84622404538094997 4325479.05756013654172421, 743121.04539646324701607 4325478.44241948984563351, 743123.37846610439009964 4325477.83090890385210514, 743125.78759420244023204 4325477.22351831384003162, 743128.20397224836051464 4325476.62176765967160463, 743128.23749138682615012 4325476.61335778702050447, 743130.5866810018196702 4325476.01970697659999132, 743130.67814864206593484 4325475.99613734148442745, 743132.92697043681982905 4325475.4051964208483696, 743133.08217639743816108 4325475.36306706350296736, 743135.21751047531142831 4325474.76507614739239216, 743135.44735440518707037 4325474.69773715827614069, 743137.45614087348803878 4325474.08293635584414005, 743137.77505226980429143 4325473.97944788821041584, 743139.64418123522773385 4325473.33810731209814548, 743140.07088939088862389 4325473.18075959850102663, 743141.78728095605038106 4325472.50311936531215906, 743142.34441488585434854 4325472.26338278129696846, 743143.89496915740892291 4325471.53968299552798271, 743144.60644754907116294 4325471.17222812585532665, 743145.97807463142089546 4325470.39272890612483025, 743146.83858664683066308 4325469.84378642030060291, 743148.02242658857721835 4325469.00058785732835531, 743148.92559457058086991 4325468.27488761302083731, 743149.92972719483077526 4325467.36748972442001104, 743150.7978930379031226 4325466.47896149568259716, 743151.63461810327135026 4325465.50873426254838705, 743152.40519371931441128 4325464.49033758789300919, 743153.08682099031284451 4325463.45864100754261017, 743153.71072851191274822 4325462.37186508253216743, 743154.24955774960108101 4325461.28005915321409702, 743154.70621892670169473 4325460.19920302741229534, 743155.11455989605747163 4325459.04865773767232895, 743155.41389568522572517 4325458.03967059403657913, 743155.70405814633704722 4325456.83173593506217003, 743155.87601869599893689 4325455.93886724580079317, 743156.06031241349410266 4325454.67491321172565222, 743156.14204711432103068 4325453.90841287095099688, 743156.23141188640147448 4325452.59007945004850626, 743156.25430943630635738 4325451.91410793270915747, 743156.2543551919516176 4325450.54422509577125311, 743156.23642497533001006 4325449.94536258187144995, 743156.15138167981058359 4325448.52704028878360987, 743156.10570331220515072 4325447.9994468642398715, 743155.9398209301289171 4325446.53577507939189672, 743155.87624407256953418 4325446.07210084237158298, 743155.63375257002189755 4325444.56619953271001577, 743155.55954694165848196 4325444.15919457748532295, 743155.24469628150109202 4325442.61417370568960905, 743155.1650316477753222 4325442.25679812952876091, 743154.78206179628614336 4325440.67574766185134649, 743154.70055796741507947 4325440.36163153685629368, 743154.25370888935867697 4325438.74768143985420465, 743154.16416540066711605 4325438.44314518664032221, 743153.6503371000289917 4325436.7928655007854104, 743153.51925294054672122 4325436.40064032189548016, 743152.90601558645721525 4325434.68454138655215502, 743152.72903121483977884 4325434.2252570167183876, 743151.97660501231439412 4325432.4073392590507865, 743151.76522108574863523 4325431.93200506828725338, 743150.8338262407341972 4325429.97624891810119152, 743150.60416311165317893 4325429.52391442470252514, 743149.45401983160991222 4325427.39430030062794685, 743149.22209756076335907 4325426.98791522718966007, 743147.81343605439178646 4325424.64844356011599302, 743147.5917145392159 4325424.29695780947804451, 743145.88475501060020179 4325421.71160901710391045, 743145.68095408123917878 4325421.41470259428024292, 743143.63592673710081726 4325418.54746711160987616, 743143.46098624006845057 4325418.30967997014522552, 743141.05840118508785963 4325415.1431780019775033, 743140.9325509830377996 4325414.98080994747579098, 743138.23413791891653091 4325411.57216081954538822, 743138.14676784642506391 4325411.46336212288588285, 743135.23456637165509164 4325407.88831494934856892, 743135.17470635322388262 4325407.81553582008928061, 743132.13074606703594327 4325404.14982970897108316, 743132.09241606737487018 4325404.10395026113837957, 743128.99871656834147871 4325400.42334431689232588, 743128.97908657393418252 4325400.40006459318101406, 743125.91767746396362782 4325396.78030792903155088, 743122.97893833951093256 4325393.30699952226132154, 743120.25606880488339812 4325390.06930832285434008, 743117.78953862201888114 4325387.10240390617400408, 743115.5334981553023681 4325384.37199667003005743, 743115.51871815416961908 4325384.35414688289165497, 743113.43204793077893555 4325381.84060704987496138, 743113.37386793666519225 4325381.77116788271814585, 743111.41645848879124969 4325379.45632564928382635, 743111.30596855934709311 4325379.32787718903273344, 743109.42809041077271104 4325377.18191288877278566, 743109.25874066539108753 4325376.99327514879405499, 743107.41068434691987932 4325374.98639912810176611, 743107.18110494769643992 4325374.74526200443506241, 743105.31318098539486527 4325372.84766460675746202, 743105.02937210141681135 4325372.5705679003149271, 743103.09184102050494403 4325370.7524594608694315, 743102.76875273580662906 4325370.46221289318054914, 743100.71275505982339382 4325368.69439375214278698, 743100.3710273364558816 4325368.41347705759108067, 743098.15097355586476624 4325366.66926751378923655, 743097.81150623806752264 4325366.41402050107717514, 743095.38265684398356825 4325364.66732085403054953, 743095.06313971756026149 4325364.4468234209343791, 743092.38073519640602171 4325362.67156397737562656, 743092.09368804376572371 4325362.4885460902005434, 743089.11299888126086444 4325360.65863714180886745, 743088.86477153655141592 4325360.51112883724272251, 743085.54103821935132146 4325358.60050069354474545, 743085.3330105731729418 4325358.48420201521366835, 743081.62148359091952443 4325356.46677497308701277, 743081.4515955972019583 4325356.37653599586337805, 743077.30752543441485614 4325354.22621035203337669, 743077.17786701582372189 4325354.16012110002338886, 743072.58925368566997349 4325351.86325701978057623, 743072.51240464230068028 4325351.82519745081663132, 743067.59813626226969063 4325349.41780456900596619, 743067.56510667887050658 4325349.40170475468039513, 743062.47883086209185421 4325346.93318254873156548, 743057.39061501575633883 4325344.46092040557414293, 743052.47160654235631227 4325342.04320770315825939, 743047.88417297205887735 4325339.73491385392844677, 743043.8038717049639672 4325337.59958816040307283, 743040.42639999929815531 4325335.71686973981559277, 743037.90650594723410904 4325334.16409771982580423, 743036.24257029476575553 4325332.98158157896250486, 743036.12625920376740396 4325332.88083178270608187, 743036.15831825265195221 4325332.76533424947410822, 743036.49231459759175777 4325331.82998626679182053, 743036.95408584957476705 4325330.75995006784796715, 743037.5452424882678315 4325329.58454527612775564, 743038.26480497466400266 4325328.32854158710688353, 743039.11026374460197985 4325327.01339871808886528, 743040.08094908064231277 4325325.65425648353993893, 743041.18200093402992934 4325324.25463484041392803, 743042.40074986766558141 4325322.83114357385784388, 743043.70646712754387408 4325321.41726223286241293, 743045.06482403865084052 4325320.0467703752219677, 743046.44035191973671317 4325318.7514475816860795, 743047.79534211754798889 4325317.56239342968910933, 743049.08772608870640397 4325316.51121749635785818, 743050.25425593345426023 4325315.64106920268386602, 743051.19263495109044015 4325315.01556767895817757, 743051.90039293561130762 4325314.6201931070536375, 743052.52381492382846773 4325314.34972690604627132, 743053.28847447386942804 4325314.11091039609164, 743054.41284648072905838 4325313.87673404533416033, 743056.04875809885561466 4325313.66872769314795732, 743058.28186804871074855 4325313.51705100107938051, 743061.16655550221912563 4325313.44000377040356398, 743064.7162302378565073 4325313.44133596867322922, 743068.7958649069769308 4325313.50892765913158655, 743073.23907270841300488 4325313.62401898484677076, 743077.89505647285841405 4325313.76617009472101927, 743082.60892911232076585 4325313.91400117240846157, 743082.63703853206243366 4325313.91484118159860373, 743087.25439293193630874 4325314.04665239993482828, 743087.32393148867413402 4325314.04839242063462734, 743091.70512024057097733 4325314.14296396169811487, 743091.83058761316351593 4325314.14488401357084513, 743095.84015321335755289 4325314.18110605515539646, 743096.04235892032738775 4325314.18088618293404579, 743099.57526328880339861 4325314.14135888405144215, 743099.84625742246862501 4325314.13465913571417332, 743102.91929016110952944 4325314.01691252924501896, 743103.26643245585728437 4325313.99756298586726189, 743105.92682258202694356 4325313.80282709561288357, 743106.36732249415945262 4325313.76076789107173681, 743108.6622890307335183 4325313.49027272127568722, 743109.21098597324453294 4325313.41011407040059566, 743111.18774793844204396 4325313.06511963158845901, 743111.84991143771912903 4325312.92632178869098425, 743113.55571785243228078 4325312.50805810280144215, 743114.31506788264960051 4325312.28972131665796041, 743115.79712776793166995 4325311.79941839724779129, 743116.60480521351564676 4325311.49292274471372366, 743117.91034758999012411 4325310.93183060176670551, 743118.72278339241165668 4325310.53830604813992977, 743119.89110741438344121 4325309.90577471349388361, 743120.78454879997298121 4325309.35973212495446205, 743121.82325416326057166 4325308.64762170799076557, 743122.78447051672264934 4325307.89860170800238848, 743123.69320705079007894 4325307.09687233529984951, 743124.64580980490427464 4325306.1341250091791153, 743125.42423733859322965 4325305.2327368063852191, 743126.2758090760326013 4325304.09154165629297495, 743126.92359744047280401 4325303.08048474788665771, 743127.59869120712392032 4325301.84254070091992617, 743128.11549022991675884 4325300.71176521200686693, 743128.58317849645391107 4325299.47944096848368645, 743128.96865800872910768 4325298.21891702525317669, 743129.24548194254748523 4325297.07808151468634605, 743129.49930177174974233 4325295.67777924705296755, 743129.62795155134517699 4325294.68971172440797091, 743129.75152152089867741 4325293.14120124187320471, 743129.78319694695528597 4325292.35586111806333065, 743129.78491683793254197 4325290.65702244080603123, 743129.76729652471840382 4325290.05335000995546579, 743129.65731611475348473 4325288.20370315946638584, 743129.61952881270553917 4325287.74591888207942247, 743129.40798787563107908 4325285.74494387488812208, 743129.36584271385800093 4325285.40280814468860626, 743129.0629010273842141 4325283.25000498536974192, 743129.0243974095210433 4325282.99946810584515333, 743128.64020475069992244 4325280.69433681480586529, 743128.60901227267459035 4325280.51699902582913637, 743128.15371841634623706 4325278.05903960950672626, 743128.13110680610407144 4325277.94096107874065638, 743127.61486152443103492 4325275.32965355552732944, 743127.5965103090275079 4325275.23901468235999346, 743127.02437358908355236 4325272.47937899362295866, 743126.99227162986062467 4325272.33029084466397762, 743126.3490142694208771 4325269.44935663882642984, 743126.29667144198901951 4325269.22691940050572157, 743125.56197444850113243 4325266.25723625998944044, 743125.48492090683430433 4325265.96481988206505775, 743124.63845528790261596 4325262.93894738424569368, 743124.52998119092080742 4325262.57757185958325863, 743123.55144795216619968 4325259.52804958540946245, 743123.40232348814606667 4325259.09732490498572588, 743122.27139363717287779 4325256.05671243835240602, 743122.06978905445430428 4325255.55641860514879227, 743120.76614359975792468 4325252.55724551994353533, 743120.49742922896984965 4325251.98865251149982214, 743119.0007491756696254 4325249.06348839681595564, 743118.66527560609392822 4325248.46012577973306179, 743116.96252163872122765 4325245.63220033701509237, 743116.62791954923886806 4325245.11344666313380003, 743114.7351610844489187 4325242.36876007076352835, 743114.43729015137068927 4325241.95939504355192184, 743112.37785627809353173 4325239.27465761173516512, 743112.13134604075457901 4325238.96610135212540627, 743109.92858585296198726 4325236.31798339169472456, 743109.74194595182780176 4325236.10004602652043104, 743107.41919854225125164 4325233.46525783464312553, 743107.29634872241877019 4325233.32846948970109224, 743104.87694318359717727 4325230.68369137961417437, 743104.8183433028170839 4325230.62018214352428913, 743102.32744872104376554 4325227.94405440147966146, 743099.81321413780096918 4325225.23997700866311789, 743097.30562878295313567 4325222.50038007274270058, 743094.8196524465456605 4325219.7312635350972414, 743092.39346499787643552 4325216.97109692823141813, 743090.07056630786973983 4325214.26451970729976892, 743087.89561625430360436 4325211.6581813208758831, 743085.91532473743427545 4325209.20230114925652742, 743084.18010170408524573 4325206.95407850574702024, 743082.7482672065962106 4325204.98641249909996986, 743081.67591150139924139 4325203.38084213901311159, 743080.96192501531913877 4325202.16005712281912565, 743080.55303853750228882 4325201.30485767126083374, 743080.35411278146784753 4325200.74178465642035007, 743080.25925719283986837 4325200.31267000827938318, 743080.21038908464834094 4325199.7963864840567112, 743080.22184455301612616 4325198.98950665257871151, 743080.34307022474240512 4325197.7607521889731288, 743080.61057415546383709 4325196.04421394970268011, 743081.01281698665115982 4325193.86204164102673531, 743081.49337197130080312 4325191.33053377736359835, 743081.51467946555931121 4325191.21457524690777063, 743082.00687996670603752 4325188.44385039806365967, 743082.04813465452753007 4325188.19317357614636421, 743082.50033222953788936 4325185.20931139215826988, 743082.5484947917284444 4325184.84689597971737385, 743082.91402042866684496 4325181.64990642201155424, 743082.95565145998261869 4325181.19329219311475754, 743083.18784614966716617 4325177.78318525478243828, 743083.20990620262455195 4325177.24784200917929411, 743083.26208093308378011 4325173.62461765762418509, 743083.25429110834375024 4325173.06055475678294897, 743083.09311663988046348 4325169.22725294157862663, 743083.06343918200582266 4325168.77059867698699236, 743082.70891536038834602 4325164.74250921607017517, 743082.67337012896314263 4325164.40456345304846764, 743082.15883657243102789 4325160.1999661372974515, 743082.12660301523283124 4325159.96054913476109505, 743081.48539933899883181 4325155.59778374899178743, 743081.46121709072031081 4325155.44183570425957441, 743080.72669291531201452 4325150.93921203911304474, 743080.71273173345252872 4325150.85585308261215687, 743079.91819667629897594 4325146.23167092818766832, 743079.91508642176631838 4325146.2136511504650116, 743079.0976103994762525 4325141.5075500225648284, 743078.29459338635206223 4325136.76303938683122396, 743077.53344503417611122 4325131.992949103936553, 743076.82868558447808027 4325127.22843878529965878, 743076.19471571291796863 4325122.52483773697167635, 743075.64650618121959269 4325117.94306520186364651, 743075.19866779888980091 4325113.54632038436830044, 743074.865201456239447 4325109.40155245363712311, 743074.65882818074896932 4325105.58197048678994179, 743074.58931932738050818 4325102.17581337504088879, 743074.66131661669351161 4325099.28562982566654682, 743074.87222081713844091 4325096.9518393287435174, 743075.19849214795976877 4325095.15871207322925329, 743075.60233014111872762 4325093.83443894796073437, 743076.06741254741791636 4325092.83257178775966167, 743076.64958466915413737 4325091.95462311524897814, 743077.48832043539732695 4325091.02471521683037281, 743078.75746445171535015 4325089.94603938609361649, 743080.5914335505804047 4325088.70044591464102268, 743082.98771868401672691 4325087.33876415900886059, 743085.86503260477911681 4325085.91914334427565336, 743089.1388776843668893 4325084.47440302092581987, 743092.73283580702263862 4325083.01949295960366726, 743096.57746852212585509 4325081.55907307285815477, 743100.6089471586747095 4325080.09163335245102644, 743104.76739288843236864 4325078.61188383121043444, 743108.97341740597039461 4325077.12030447274446487, 743109.01730619731824845 4325077.10462468862533569, 743113.19004124007187784 4325075.60291543137282133, 743113.28955848969053477 4325075.56650593224912882, 743117.3722751458408311 4325074.04813683219254017, 743117.53295065695419908 4325073.98679767362773418, 743121.47399987257085741 4325072.44344881922006607, 743121.70531331130769104 4325072.34952009841799736, 743125.45303603133652359 4325070.77287156693637371, 743125.76924686611164361 4325070.63337345607578754, 743129.27199404069688171 4325069.01512532588094473, 743129.69373144651763141 4325068.80812811199575663, 743132.89984402002301067 4325067.13993046898394823, 743133.45487674837931991 4325066.82828462496399879, 743136.31268566835206002 4325065.10184755735099316, 743137.03842175449244678 4325064.61904393509030342, 743139.5098974781576544 4325062.81464766152203083, 743140.41057527193333954 4325062.07277736440300941, 743142.51209629559889436 4325060.1252127168700099, 743143.47484772501047701 4325059.09784602932631969, 743145.23641205858439207 4325056.93050398956984282, 743146.09204215300269425 4325055.69962980411946774, 743147.54362780426163226 4325053.2359213437885046, 743148.17054224747698754 4325051.97707740589976311, 743149.34214722784236073 4325049.14039349742233753, 743149.72796928603202105 4325048.0233076773583889, 743150.64959160261787474 4325044.73705929890275002, 743150.85591147432569414 4325043.84673055540770292, 743151.55752913630567491 4325040.03431867808103561, 743151.65621538565028459 4325039.37546698935329914, 743152.16784640261903405 4325034.96028259210288525, 743152.21060730353929102 4325034.49738841969519854, 743152.55928045604377985 4325029.44295197073370218, 743152.57647429453209043 4325029.11550608929246664, 743152.77753145177848637 4325023.54581604618579149, 743152.78342690912541002 4325023.29621917847543955, 743152.8492407149169594 4325017.37539348751306534, 743152.84942709025926888 4325017.1708460571244359, 743152.79238018416799605 4325011.06299266126006842, 743152.78907707380130887 4325010.88325491640716791, 743152.62156210152897984 4325004.75249176938086748, 743152.61547922343015671 4325004.58262389898300171, 743152.34987882536370307 4324998.59306894894689322, 743152.34065594442654401 4324998.41922112461179495, 743151.98935276316478848 4324992.7349823135882616, 743151.97540961275808513 4324992.54025475215166807, 743151.55078629264608026 4324987.32545002829283476, 743151.52781244681682438 4324987.08064308948814869, 743151.03657098999246955 4324982.45645093265920877, 743150.99522593093570322 4324982.12120512593537569, 743150.42128578631673008 4324978.03710616286844015, 743150.34907949343323708 4324977.59531168173998594, 743149.67067946423776448 4324973.95784708019345999, 743149.5529522888828069 4324973.41173388715833426, 743148.74833118030801415 4324970.12743481621146202, 743148.57366382121108472 4324969.5028725927695632, 743147.6210504419868812 4324966.47829020861536264, 743147.39109378587454557 4324965.82743829488754272, 743146.26873694115784019 4324962.96909377258270979, 743146.00498170428909361 4324962.35801134910434484, 743144.69111020036507398 4324959.57246584631502628, 743144.43029661988839507 4324959.05843220837414265, 743142.90314926020801067 4324956.25221689883619547, 743142.67031701724044979 4324955.84721190202981234, 743140.91328290244564414 4324952.94964766688644886, 743140.67801134055480361 4324952.58016222063452005, 743138.69516074936836958 4324949.61169880535453558, 743138.44076970359310508 4324949.24854327458888292, 743136.24130320257972926 4324946.25241014454513788, 743135.96027268923353404 4324945.887514628469944, 743133.5534108531428501 4324942.90695123840123415, 743133.2373809473356232 4324942.53457580879330635, 743130.63232434028759599 4324939.61279162671416998, 743130.27168517839163542 4324939.22913632355630398, 743127.47766437532845885 4324936.40938080381602049, 743127.06126616219989955 4324936.01264564692974091, 743124.08748173026833683 4324933.33814825769513845, 743123.60252474911976606 4324932.92907323502004147, 743120.45819726050831378 4324930.44305343087762594, 743119.91887162870261818 4324930.04525825101882219, 743116.62049129034858197 4324927.77912564016878605, 743116.13601600483525544 4324927.46644941437989473, 743112.72924156941007823 4324925.40432421490550041, 743112.33430590736679733 4324925.17738693580031395, 743108.87208576477132738 4324923.29155951086431742, 743108.57090934878215194 4324923.1340913949534297, 743105.10616188915446401 4324921.39686210453510284, 743104.90282443619798869 4324921.29777328856289387, 743101.48850804928224534 4324919.68141250498592854, 743101.38905933243222535 4324919.63500305823981762, 743098.08574230747763067 4324918.11533110681921244, 743095.01297217106912285 4324916.69546797685325146, 743092.28553658584132791 4324915.38059364259243011, 743089.91732478642370552 4324914.14391844440251589, 743087.8778371405787766 4324912.96987257339060307, 743086.16379387339111418 4324911.86717590782791376, 743084.78062523191329092 4324910.8562681982293725, 743083.72922169475350529 4324909.96534908469766378, 743083.00019409775268286 4324909.23014811519533396, 743082.58890157868154347 4324908.71870955545455217, 743082.78829232149291784 4324908.31216961797326803, 743083.46332953369710594 4324907.26724300626665354, 743084.57378101954236627 4324905.85425116494297981, 743086.13382768316660076 4324904.14147324673831463, 743088.10734192980453372 4324902.22132806666195393, 743090.45405595994088799 4324900.17013464588671923, 743093.13992155226878822 4324898.04742222838103771, 743096.13403026724699885 4324895.90442015416920185, 743099.40746353310532868 4324893.78738783299922943, 743102.93239270441699773 4324891.73933470621705055, 743106.69248874462209642 4324889.79534033220261335, 743110.7057414180599153 4324887.96347461175173521, 743114.95484080025926232 4324886.22728774882853031, 743119.36898829415440559 4324884.58159978874027729, 743123.86938547086901963 4324883.02094077318906784, 743128.38110374915413558 4324881.53580079413950443, 743132.83351439423859119 4324880.11341000534594059, 743137.12865937815513462 4324878.74816843681037426, 743137.19446761149447411 4324878.72699872311204672, 743141.22557912289630622 4324877.41492640227079391, 743141.37872497679200023 4324877.36370708886533976, 743145.08237412548623979 4324876.09171415865421295, 743145.29720822686795145 4324876.01518518198281527, 743148.67823462188243866 4324874.76709184795618057, 743148.95277694065589458 4324874.66112326085567474, 743152.03131986735388637 4324873.42057973425835371, 743152.37308006989769638 4324873.27543165720999241, 743155.16931881476193666 4324872.02605815790593624, 743155.5832165852189064 4324871.82963074184954166, 743158.11731042852625251 4324870.55507747363299131, 743158.60347551677841693 4324870.29350089468061924, 743160.89558374206535518 4324868.97737807221710682, 743161.44589608313981444 4324868.63725249655544758, 743163.51618797879200429 4324867.26322033256292343, 743164.11244779091794044 4324866.83515587169677019, 743165.98107263538986444 4324865.38682457245886326, 743166.59795039985328913 4324864.86757126078009605, 743168.28382749669253826 4324863.32816104777157307, 743168.90022359346039593 4324862.71405892353504896, 743170.4172123244497925 4324861.06510003283619881, 743170.99802780221216381 4324860.37350886501371861, 743172.35873756720684469 4324858.59612153377383947, 743172.87053374492097646 4324857.86169088631868362, 743174.08755394397303462 4324855.93697535805404186, 743174.50993199809454381 4324855.20172469038516283, 743175.5958820260129869 4324853.11080120224505663, 743175.9244527401169762 4324852.41373003553599119, 743176.89193200063891709 4324850.13770883157849312, 743177.13501570734661072 4324849.50752679444849491, 743177.99662359373178333 4324847.02751811500638723, 743178.16936025256291032 4324846.48012502212077379, 743178.93771616916637868 4324843.77724910713732243, 743179.05154601426329464 4324843.33941463008522987, 743179.74364946910645813 4324840.40630157478153706, 743179.8009936852613464 4324840.14801482576876879, 743180.45150463120080531 4324837.02351415809243917, 743180.4701726115308702 4324836.93168531358242035, 743181.11301168752834201 4324833.69221608154475689, 743181.77329043624922633 4324830.45505682379007339, 743182.47710990207269788 4324827.31042641401290894, 743183.25223041500430554 4324824.31019420735538006, 743184.11798257078044116 4324821.51099950540810823, 743185.09032671933528036 4324818.95166181866079569, 743186.20475128840189427 4324816.5857517383992672, 743187.48131454130634665 4324814.33926020003855228, 743188.90748661640100181 4324812.20475729182362556, 743190.45965822134166956 4324810.19428285770118237, 743192.11136015027295798 4324808.32097672484815121, 743193.83331326092593372 4324806.59832871612161398, 743195.59330847405362874 4324805.03985865414142609, 743197.35909666353836656 4324803.65636640228331089, 743199.1185779474908486 4324802.44035204686224461, 743200.89212129125371575 4324801.3573360238224268, 743202.70067568076774478 4324800.37536874134093523, 743204.56115028576459736 4324799.46752054709941149, 743206.48765436594840139 4324798.60883174557238817, 743208.49095725896768272 4324797.77482265047729015, 743210.57817836466711015 4324796.94001358654350042, 743212.7103483168175444 4324796.09375466872006655, 743212.76805668859742582 4324796.07064497005194426, 743214.89543650695122778 4324795.21094621438533068, 743214.92704561003483832 4324795.19811638351529837, 743217.05100537650287151 4324794.33135771844536066, 743219.17620520736090839 4324793.46981898136436939, 743221.3209448263514787 4324792.61955010332167149, 743223.52157342806458473 4324791.77859112154692411, 743225.81589016935322434 4324790.94433207344263792, 743228.24236418993677944 4324790.11417300440371037, 743230.84484449564479291 4324789.28441396355628967, 743233.66879001026973128 4324788.44831504859030247, 743236.68507138127461076 4324787.60772622935473919, 743239.82221029489301145 4324786.77268736623227596, 743243.00738846138119698 4324785.95269831549376249, 743246.17145748110488057 4324785.15579896979033947, 743249.24635892850346863 4324784.38945922534912825, 743252.15721454180311412 4324783.66256893798708916, 743252.19624354271218181 4324783.65273907035589218, 743254.85622536612208933 4324782.97711808979511261, 743254.94106318533886224 4324782.95517838001251221, 743257.30527219921350479 4324782.33257667068392038, 743257.4450385746313259 4324782.29468717519193888, 743259.53037420939654112 4324781.71310488972812891, 743259.73783875606022775 4324781.6528156865388155, 743261.5777700258186087 4324781.09656302630901337, 743261.86701228085439652 4324781.00431424379348755, 743263.49500820157118142 4324780.45767141506075859, 743263.87475776765495539 4324780.32157319784164429, 743265.32428735098801553 4324779.76885040383785963, 743265.79182407481130213 4324779.57690290082246065, 743267.09637633804231882 4324779.00238034501671791, 743267.63031055522151291 4324778.74812363460659981, 743268.82332451571710408 4324778.13611152488738298, 743269.38249721599277109 4324777.82629550714045763, 743270.49746188451536 4324777.16108404286205769, 743271.04676403780467808 4324776.80855855531990528, 743272.11062859068624675 4324776.07569792494177818, 743272.6794390978757292 4324775.65338330809026957, 743273.69314335018862039 4324774.84352362249046564, 743274.2781520412536338 4324774.33789004851132631, 743275.23609596712049097 4324773.44292140658944845, 743275.81515333673451096 4324772.85535885393619537, 743276.71175690880045295 4324771.86718135979026556, 743277.26160359615460038 4324771.20615971554070711, 743278.09128679241985083 4324770.11666346807032824, 743278.59055352816358209 4324769.39784253109246492, 743279.34771632228512317 4324768.19892762880772352, 743279.77990383165888488 4324767.44367713201791048, 743280.45897619647439569 4324766.12724367901682854, 743280.81487509189173579 4324765.35914332047104836, 743281.41026700520887971 4324763.91709141060709953, 743281.682 +12817492894828 4324763.17724068928509951, 743282.18969968578312546 4324761.60738035012036562, 743282.37299451674334705 4324760.96874834597110748, 743282.79433596914168447 4324759.29250931646674871, 743282.91543375584296882 4324758.74656614288687706, 743283.25360556633677334 4324756.99130808003246784, 743283.33375541935674846 4324756.51322405319660902, 743283.59179800958372653 4324754.70630661863833666, 743283.64375930256210268 4324754.27599198929965496, 743283.82472309400327504 4324752.44476484041661024, 743283.8561353636905551 4324752.04521982464939356, 743283.96306077297776937 4324750.21702262479811907, 743283.97812366462312639 4324749.83306741062551737, 743284.0140711113344878 4324748.03525981772691011, 743284.0143743185326457 4324747.6514246016740799, 743283.98236422170884907 4324745.91136627644300461, 743283.9658471557777375 4324745.49206149764358997, 743283.86513981432653964 4324743.82562223821878433, 743283.81874139234423637 4324743.2939788531512022, 743283.6333666096907109 4324741.67108904011547565, 743283.54185748752206564 4324741.04585681390017271, 743283.25204494735226035 4324739.42499695997685194, 743283.11103626363910735 4324738.7655351459980011, 743282.69699564937036484 4324737.10515575855970383, 743282.51714827422983944 4324736.4731736034154892, 743281.9591292692348361 4324734.73174519930034876, 743281.76139355334453285 4324734.17234213277697563, 743281.03960584138985723 4324732.30831523425877094, 743280.84585170669015497 4324731.84309099242091179, 743279.94052497041411698 4324729.81494610756635666, 743279.76648211420979351 4324729.44551067799329758, 743278.65784603462088853 4324727.21169832441955805, 743278.51825419440865517 4324726.94088167417794466, 743277.20022846304345876 4324724.47666215989738703, 743277.11640751943923533 4324724.32319405861198902, 743275.63765186001546681 4324721.67104686144739389, 743275.60201149247586727 4324721.60766764543950558, 743274.02710565738379955 4324718.83073199540376663, 743272.43719956581480801 4324716.0215367516502738, 743270.91206316498573869 4324713.27231077570468187, 743269.5178263490088284 4324710.65593317057937384, 743268.32508921751286834 4324708.26262282487004995, 743267.40220221120398492 4324706.19863841589540243, 743266.77163582551293075 4324704.51908926293253899, 743266.38628057378809899 4324703.19635570049285889, 743266.1919372541597113 4324702.21122796274721622, 743266.12942667957395315 4324701.53871633764356375, 743266.1382491848198697 4324701.12551149632781744, 743266.17282422562129796 4324700.88638448528945446, 743266.2195602236315608 4324700.71599661745131016, 743266.29549531941302121 4324700.52933895867317915, 743266.40463944175280631 4324700.32744149584323168, 743266.53808320104144514 4324700.1339739290997386, 743266.71653576614335179 4324699.92677654232829809, 743266.97564596496522427 4324699.68215963244438171, 743267.3511428787605837 4324699.39080332778394222, 743267.87307592015713453 4324699.05539759248495102, 743268.56310481438413262 4324698.68628230597823858, 743269.43188959592953324 4324698.29818728007376194, 743270.47055080125574023 4324697.91081227548420429, 743271.65596929914318025 4324697.54559701588004827, 743272.97067573433741927 4324697.2181913023814559, 743274.40040062076877803 4324696.94074498489499092, 743275.93183442554436624 4324696.72350793052464724, 743277.55262756627053022 4324696.57536002993583679, 743279.25125041953288019 4324696.50407118070870638, 743281.02483317465521395 4324696.51672129984945059, 743282.89880540268495679 4324696.61951030977070332, 743284.88503680261783302 4324696.80956824496388435, 743286.95934772840701044 4324697.07798522058874369, 743289.09226859034970403 4324697.41287138033658266, 743291.25708971731364727 4324697.80082688387483358, 743293.42974136432167143 4324698.22759190388023853, 743295.58860372833441943 4324698.67849662154912949, 743297.72006685752421618 4324699.13986121024936438, 743299.79447102034464478 4324699.59157590661197901, 743299.89070934930350631 4324699.61203567311167717, 743301.89433436910621822 4324700.02773080952465534, 743302.12170035089366138 4324700.07216029148548841, 743304.07132548536173999 4324700.42975614406168461, 743304.43748881493229419 4324700.48991545476019382, 743306.35596321220509708 4324700.7686722818762064, 743306.86003362841438502 4324700.82889161165803671, 743308.77018644183408469 4324701.00804968271404505, 743309.39858385501429439 4324701.04708929546177387, 743311.32328423263970762 4324701.10589886829257011, 743312.04764885676559061 4324701.10177903156727552, 743314.00972594949416816 4324701.01950036082416773, 743314.7891983634326607 4324700.95621126983314753, 743316.81150132266338915 4324700.71208462305366993, 743317.58860269433353096 4324700.58706629741936922, 743319.6905207991367206 4324700.16346189472824335, 743320.39444294816348702 4324699.99487409740686417, 743322.58151598856784403 4324699.38659199979156256, 743323.20180944772437215 4324699.19214451499283314, 743325.47609734290745109 4324698.39712474774569273, 743326.01903220149688423 4324698.18942741397768259, 743328.38263487594667822 4324697.20559000503271818, 743328.85618112853262573 4324696.9939127080142498, 743331.31115849735215306 4324695.81917767599225044, 743331.72357608657330275 4324695.60997034143656492, 743334.27201806998346001 4324694.24226772040128708, 743334.63141689705662429 4324694.03973028995096684, 743337.27538341598119587 4324692.47699009906500578, 743337.58905337320175022 4324692.28371254540979862, 743340.33063434658106416 4324690.5238648122176528, 743340.59689559473190457 4324690.34686704818159342, 743343.44024094671476632 4324688.39058176148682833, 743343.63578437583055347 4324688.25257349945604801, 743346.59335405344609171 4324686.11163051147013903, 743346.72348961280658841 4324686.01581171900033951, 743349.8098235639045015 4324683.70473084971308708, 743349.88574094441719353 4324683.64731157477945089, 743353.11535912193357944 4324681.18061264511197805, 743353.14568807114847004 4324681.15736293885856867, 743356.52883057179860771 4324678.55287572741508484, 743360.06328792707063258 4324675.83799989148974419, 743363.75311044231057167 4324673.03481515683233738, 743367.6219277378404513 4324670.15004144702106714, 743371.69412926281802356 4324667.18159877881407738, 743375.91772648808546364 4324664.15067688748240471, 743380.19886215962469578 4324661.10039521940052509, 743384.43021946412045509 4324658.08294312562793493, 743384.46619825076777488 4324658.05716344993561506, 743388.53288063232321292 4324655.1299001956358552, 743388.60720810620114207 4324655.07588087115436792, 743392.4182981951162219 4324652.27907595876604319, 743392.5427539274096489 4324652.18624711874872446, 743396.00392446608748287 4324649.56259000208228827, 743396.20092759898398072 4324649.40934192575514317, 743399.21787133789621294 4324647.00153206847608089, 743399.52012051688507199 4324646.75043521169573069, 743402.02663929283153266 4324644.58344230800867081, 743402.43271416006609797 4324644.21237694472074509, 743404.47507618460804224 4324642.24029157310724258, 743404.97007666050922126 4324641.72696797642856836, 743406.62266923661809415 4324639.88616093248128891, 743407.16552612290252 4324639.22688914462924004, 743408.50272655475419015 4324637.45373122207820415, 743409.01902233180589974 4324636.69978060387074947, 743410.11522792524192482 4324634.93065259978175163, 743410.52916618436574936 4324634.19495174661278725, 743411.45875424495898187 4324632.36622446030378342, 743411.73444801638834178 4324631.77719177398830652, 743412.57179584796540439 4324629.82523599825799465, 743412.71969628671649843 4324629.4608705211430788, 743413.53921119158621877 4324627.32205705624073744, 743413.59565733349882066 4324627.1710989261046052, 743414.46012721094302833 4324624.8013383187353611, 743414.47224636538885534 4324624.76792873255908489, 743415.39006203610915691 4324622.22387028113007545, 743416.35342521872371435 4324619.59322290308773518, 743417.36171704670414329 4324616.93963580392301083, 743418.41633843642193824 4324614.3165883319452405, 743419.51447048434056342 4324611.78279975615441799, 743420.64786448888480663 4324609.40174928866326809, 743421.80515172390732914 4324607.23216620646417141, 743422.99321216391399503 4324605.28073042817413807, 743424.23886425269301981 4324603.4914626432582736, 743425.56351677887141705 4324601.82114339154213667, 743426.98814869613852352 4324600.23600309435278177, 743428.53607898741029203 4324598.70605211798101664, 743430.2307267147116363 4324597.20626077707856894, 743432.09358106157742441 4324595.71620932314544916, 743434.1448512856150046 4324594.21771798096597195, 743436.39839681412559003 4324592.6952269459143281, 743438.82439837779384106 4324591.15442614443600178, 743441.37216730939690024 4324589.60992539580911398, 743443.99158486863598228 4324588.07333454396575689, 743446.63575218385085464 4324586.55259348824620247, 743449.24677071161568165 4324585.06071207206696272, 743449.27580980572383851 4324585.04405228327959776, 743451.78351135982666165 4324583.6000402607023716, 743451.87458849872928113 4324583.54695092048496008, 743454.22151449928060174 4324582.16236815322190523, 743454.38211940054316074 4324582.06557935569435358, 743456.53159065637737513 4324580.74253581184893847, 743456.74661371251568198 4324580.60638750437647104, 743458.6958601453807205 4324579.33707328047603369, 743458.96599122369661927 4324579.1548255430534482, 743460.72073253069538623 4324577.92894076835364103, 743461.05299123376607895 4324577.68650377262383699, 743462.61894711095374078 4324576.49375857878476381, 743463.01824302005115896 4324576.17314255330711603, 743464.40114316693507135 4324575.00325705949217081, 743464.86771589051932096 4324574.5827122712507844, 743466.07329000264871866 4324573.42540660873055458, 743466.59885929781012237 4324572.88121334742754698, 743467.63282707217149436 4324571.72617764212191105, 743468.19588303216733038 4324571.03790615871548653, 743469.06397416698746383 4324569.87486054375767708, 743469.62383761210367084 4324569.04036086145788431, 743470.33147185586858541 4324567.86159542948007584, 743470.83334452647250146 4324566.91385713592171669, 743471.38483183551579714 4324565.72194185759872198, 743471.79754473129287362 4324564.68053471483290195, 743472.19688511127606034 4324563.48060952685773373, 743472.49736910336650908 4324562.36709326133131981, 743472.74855256103910506 4324561.16429809853434563, 743472.92021851940080523 4324560.00807236321270466, 743473.02724505763035268 4324558.80756716523319483, 743473.06290372519288212 4324557.6421715309843421, 743473.02979335351847112 4324556.44908624049276114, 743472.93242524517700076 4324555.30734030622988939, 743472.76317797007504851 4324554.12682485114783049, 743472.54450333793647587 4324553.0369282765313983, 743472.24310916266404092 4324551.87412260100245476, 743471.90543761756271124 4324550.81682562362402678, 743471.46951664984226227 4324549.67487968411296606, 743470.95751756173558533 4324548.54831355251371861, 743470.35914030508138239 4324547.42236741539090872, 743469.67483519576489925 4324546.31522104144096375, 743468.87968225404620171 4324545.19842478446662426, 743468.0898917248705402 4324544.22467676736414433, 743467.06364370207302272 4324543.11016047559678555, 743466.25537691114004701 4324542.32599012274295092, 743464.96371440694201738 4324541.20690388418734074, 743464.2069098805077374 4324540.6124811926856637, 743462.61551349959336221 4324539.48197508882731199, 743461.94790989940520376 4324539.04667044058442116, 743460.02246024459600449 4324537.89787456020712852, 743459.45458668016362935 4324537.58358842041343451, 743457.16076435532886535 4324536.40965284127742052, 743456.69749020470771939 4324536.18738557212054729, 743454.01976550149265677 4324534.98632031958550215, 743453.66763028514105827 4324534.8364021647721529, 743450.66557225433643907 4324533.62561703100800514, 743450.38614624622277915 4324533.51775835547596216, 743447.13811362686101347 4324532.31956306844949722, 743446.90114714216906577 4324532.23551409970968962, 743443.48551867622882128 4324531.07218838017433882, 743443.27122195670381188 4324531.00188924558460712, 743439.76633638038765639 4324529.8957228222861886, 743439.55984962987713516 4324529.83299359586089849, 743436.04408568679355085 4324528.80627620127052069, 743435.83168911968823522 4324528.74678693059831858, 743432.38340554886963218 4324527.82180828414857388, 743432.14955942856613547 4324527.76209901738911867, 743428.84710496931802481 4324526.96114884410053492, 743428.56412980530876666 4324526.89684963319450617, 743425.46070367237553 4324526.23888770118355751, 743425.08714028727263212 4324526.16707858070731163, 743422.13528358016628772 4324525.65771481581032276, 743421.67302212200593203 4324525.58903565909713507, 743418.80008641560561955 4324525.23056003078818321, 743418.27632655925117433 4324525.1791606554761529, 743415.4096734271151945 4324524.97384313773363829, 743414.86526448791846633 4324524.94973342679440975, 743411.93227550049778074 4324524.89987398032099009, 743411.4113965779542923 4324524.90459391195327044, 743408.33941330888774246 4324525.01246251165866852, 743407.87725353788118809 4324525.0394121715798974, 743404.59365756483748555 4324525.30728878546506166, 743404.20971635275054723 4324525.34607829619199038, 743400.64186924532987177 4324525.77626289054751396, 743400.34674618113785982 4324525.81632238812744617, 743396.45164876477792859 4324526.40412502642720938, 743396.24940360966138542 4324526.43676461838185787, 743392.10266371711622924 4324527.14971569180488586, 743391.96812698012217879 4324527.17379538994282484, 743387.67497169447597116 4324527.97247539088129997, 743387.59052375878673047 4324527.98855519108474255, 743383.25619015970733017 4324528.83351461589336395, 743383.21339121181517839 4324528.84195450879633427, 743378.94313638331368566 4324529.69377383962273598, 743374.86057695280760527 4324530.50935362186282873, 743371.10654913261532784 4324531.24247442837804556, 743367.80607954401057214 4324531.85133678279817104, 743365.05897551099769771 4324532.30351109709590673, 743362.85675720975268632 4324532.59902736451476812, 743361.17485539359040558 4324532.7512254286557436, 743359.98721108527388424 4324532.78672495577484369, 743359.24053617601748556 4324532.74906540103256702, 743358.82165390136651695 4324532.6859161714091897, 743358.54525843402370811 4324532.61238707415759563, 743358.20733326813206077 4324532.4824686786159873, 743357.70724947447888553 4324532.23641171585768461, 743357.07163627783302218 4324531.86251634266227484, 743356.33953298931010067 4324531.36807246040552855, 743355.53954920882824808 4324530.76484992261976004, 743354.69529471755959094 4324530.06855854764580727, 743353.82585942081641406 4324529.29664810840040445, 743352.94667331222444773 4324528.46720837987959385, 743352.06500646728090942 4324527.59303921461105347, 743351.1597891072742641 4324526.66173075698316097, 743350.21745164517778903 4324525.68035292346030474, 743350.15706181735731661 4324525.61800369247794151, 743349.19928469986189157 4324524.63771584257483482, 743349.03008528146892786 4324524.46862794272601604, 743348.05625903618056327 4324523.51847971975803375, 743347.77257031598128378 4324523.25226302072405815, 743346.7609755250159651 4324522.33931433781981468, 743346.36032791878096759 4324521.99646858964115381, 743345.28927516541443765 4324521.12777935341000557, 743344.77594910911284387 4324520.73817418701946735, 743343.62371897418051958 4324519.92080431897193193, 743343.01240478758700192 4324519.51990928594022989, 743341.75728785654064268 4324518.76092868763953447, 743341.0789755389560014 4324518.38585333619266748, 743339.69724240060895681 4324517.69032195489853621, 743339.01297130982857198 4324517.37756583001464605, 743337.47286258358508348 4324516.74253369122743607, 743336.83329186169430614 4324516.50401664525270462, 743335.10102817113511264 4324515.92454381380230188, 743334.53598707856144756 4324515.75389592815190554, 743332.57777904940303415 4324515.22503247112035751, 743332.0991370864212513 4324515.10833391174674034, 743329.88120534468907863 4324514.62512988224625587, 743329.4877222771756351 4324514.54763083998113871, 743326.97629744850564748 4324514.10513629857450724, 743326.65939324034843594 4324514.05453692562878132, 743323.82067594933323562 4324513.64781193621456623, 743323.5691306774970144 4324513.61502233613282442, 743320.36936155206058174 4324513.23912695981562138, 743320.18160515383351594 4324513.21885721012949944, 743316.60852433543186635 4324512.867371522821486, 743316.50256639812141657 4324512.85752164665609598, 743312.63012210885062814 4324512.51815580483525991, 743312.5906428835587576 4324512.51477584987878799, 743308.52171272342093289 4324512.17443001829087734, 743304.37731393391732126 4324511.82155434228479862, 743300.27290387800894678 4324511.44470897316932678, 743296.31166017381474376 4324511.03249404206871986, 743292.60607029590755701 4324510.5761896725744009, 743289.27430167142301798 4324510.0713559091091156, 743286.38352285302244127 4324509.51634278241544962, 743283.89854467438999563 4324508.91625022795051336, 743281.7793581634759903 4324508.28141811303794384, 743279.98683434317354113 4324507.62304629478603601, 743278.47342435037717223 4324506.94885468203574419, 743277.18291938421316445 4324506.25918326713144779, 743276.05330056347884238 4324505.54371218103915453, 743275.02922876714728773 4324504.78579162061214447, 743274.08678442914970219 4324503.98162164073437452, 743273.20766772760543972 4324503.11942238919436932, 743272.35367878735996783 4324502.16053434461355209, 743271.4901875292416662 4324501.05941807478666306, 743270.59312374971341342 4324499.77556408755481243, 743269.64642721856944263 4324498.27710278239101171, 743268.63823778694495559 4324496.54127443768084049, 743267.5561153853777796 4324494.54938929155468941, 743266.38467008271254599 4324492.28689752891659737, 743265.12077248876448721 4324489.78476875741034746, 743263.78086367854848504 4324487.12314198538661003, 743263.7529832940781489 4324487.06818267144262791, 743262.35255437740124762 4324484.32850687857717276, 743262.2914335853420198 4324484.2108783470466733, 743260.82952545047737658 4324481.44211292918771505, 743260.73227432346902788 4324481.26239517331123352, 743259.20482781273312867 4324478.50735958199948072, 743259.06486644526012242 4324478.26308263279497623, 743257.46786239999346435 4324475.56462634727358818, 743257.27409093303140253 4324475.25057027209550142, 743255.60347019985783845 4324472.65154275204986334, 743255.35337892011739314 4324472.28095738310366869, 743253.60874212486669421 4324469.81638819351792336, 743253.34835140372160822 4324469.46510258410125971, 743251.54386831563897431 4324467.13875167164951563, 743251.29048811690881848 4324466.82533559110015631, 743249.4439282885286957 4324464.63317301217466593, 743249.20180849637836218 4324464.35623648203909397, 743247.33099148119799793 4324462.29422228131443262, 743247.10381198907271028 4324462.05203530844300985, 743245.22652734094299376 4324460.11613954324275255, 743245.01780804502777755 4324459.90716215688735247, 743243.15183531783986837 4324458.09332486987113953, 743242.96497612737584859 4324457.91630708612501621, 743241.12812486989423633 4324456.22050832491368055, 743240.96677569579333067 4324456.07477015256881714, 743239.1768454653210938 4324454.49296997115015984, 743239.02930631558410823 4324454.36513157095760107, 743237.29517683084122837 4324452.89192003663629293, 743237.09926809242460877 4324452.72972207050770521, 743235.39425972267054021 4324451.35434931423515081, 743235.13380162185057998 4324451.15126186143606901, 743233.42231490509584546 4324449.86158803664147854, 743233.10300755384378135 4324449.6306909304112196, 743231.34944302460644394 4324448.41457619424909353, 743230.98431645252276212 4324448.17301922850310802, 743229.15308464679401368 4324447.01835372298955917, 743228.7612887576688081 4324446.78364667203277349, 743226.81678021349944174 4324445.67829055525362492, 743226.42009479727130383 4324445.46447324473410845, 743224.32674005010630935 4324444.39629667717963457, 743223.94521483103744686 4324444.21169899497181177, 743221.6674044169485569 4324443.16858212277293205, 743221.33220890106167644 4324443.02243395987898111, 743218.85025304998271167 4324441.99386691488325596, 743218.61732631386257708 4324441.90074808523058891, 743215.97519402496982366 4324440.88268092181533575, 743215.83557604067027569 4324440.83007158152759075, 743213.09313600813038647 4324439.82008432503789663, 743213.03190690616611391 4324439.79776460025459528, 743210.25470774434506893 4324438.79547724779695272, 743207.53998759714886546 4324437.81202965974807739, 743204.98459464078769088 4324436.85973167698830366, 743202.66461740725208074 4324435.9463932067155838, 743200.65780450450256467 4324435.08586405869573355, 743198.98418553580995649 4324434.27978422306478024, 743198.14679126266855747 4324433.82271756045520306, 743198.4519522157497704 4324432.32783871050924063, 743203.33706828230060637 4324323.30743648670613766, 743205.74480323190800846 4324323.54449173714965582, 743208.66327816946431994 4324323.90879682544618845, 743211.336409134673886 4324324.32144133746623993, 743213.8130050670588389 4324324.78080528695136309, 743216.13983498176094145 4324325.28690867405384779, 743218.36800784606020898 4324325.84200145956128836, 743220.54802264540921897 4324326.44932359829545021, 743222.72650847467593849 4324327.11287503223866224, 743224.94638448057230562 4324327.83588571939617395, 743227.22940015490166843 4324328.61533569544553757, 743229.54957574128638953 4324329.43410518020391464, 743231.876221579965204 4324330.27486438862979412, 743234.18445791292469949 4324331.1215335289016366, 743236.4463450115872547 4324331.95642282348126173, 743238.63162318838294595 4324332.7610625084489584, 743238.67030262504704297 4324332.77522232849150896, 743240.72965246438980103 4324333.5238727293908596, 743240.80538134975358844 4324333.55105238128453493, 743242.72137298271991313 4324334.23018367029726505, 743242.85546097904443741 4324334.27664307411760092, 743244.61587441817391664 4324334.87264542188495398, 743244.84203095408156514 4324334.94622447714209557, 743246.48274543590378016 4324335.45854788832366467, 743246.8116502114571631 4324335.55509664304554462, 743248.38200475450139493 4324335.98697106726467609, 743248.80341774830594659 4324336.0930796954780817, 743250.35148138494696468 4324336.44726509414613247, 743250.83450293866917491 4324336.5453138193115592, 743252.40906469547189772 4324336.82473014853894711, 743252.90735552832484245 4324336.90025914553552866, 743254.55728442664258182 4324337.10795637127012014, 743255.02846534503623843 4324337.1559657147154212, 743256.80211040773428977 4324337.29433378949761391, 743257.20944223599508405 4324337.31776345334947109, 743259.15551249438431114 4324337.3899023337289691, 743259.48717562342062593 4324337.39668221492320299, 743261.64423030591569841 4324337.40504186972975731, 743261.92105442401953042 4324337.40229187160730362, 743264.28642357001081109 4324337.34596231393516064, 743264.52440840331837535 4324337.33745239302515984, 743267.085812256205827 4324337.21537362970411777, 743267.29683759098406881 4324337.20308376289904118, 743270.04128640086855739 4324337.0140658151358366, 743270.23376207810360938 4324336.99893598351627588, 743273.1486760851694271 4324336.74154887069016695, 743273.32685202441643924 4324336.72420906461775303, 743276.39996146876364946 4324336.39731279946863651, 743276.5688075665384531 4324336.37790302187204361, 743279.78711269784253091 4324335.98013762570917606, 743279.94845892011653632 4324335.95885787066072226, 743283.29945998336188495 4324335.48920335341244936, 743283.44928643282037228 4324335.46704361401498318, 743286.91416386619675905 4324334.92779994290322065, 743287.02469122037291527 4324334.90997015126049519, 743290.5606862404383719 4324334.31903711706399918, 743290.63163453014567494 4324334.30691725760698318, 743294.1889185740146786 4324333.68607459217309952, 743294.22422771877609193 4324333.67984466720372438, 743297.75429219019133598 4324333.05070210061967373, 743301.19094891473650932 4324332.43767933826893568, 743304.46086990181356668 4324331.86691607069224119, 743307.50670674571301788 4324331.36024202313274145, 743310.26359121524728835 4324330.94038692861795425, 743312.69020445214118809 4324330.62263060268014669, 743314.81557581678498536 4324330.40552304871380329, 743316.68933413294143975 4324330.2815143708139658, 743318.36735806718934327 4324330.24201466236263514, 743319.92107599321752787 4324330.28014400415122509, 743321.43175615090876818 4324330.39308241382241249, 743322.98013691615778953 4324330.58532983716577291, 743324.64191687130369246 4324330.86688613798469305, 743326.45541532046627253 4324331.24432122334837914, 743328.3900328102754429 4324331.71168517787009478, 743330.40514001727569848 4324332.25911812577396631, 743332.46367752412334085 4324332.87531021703034639, 743334.53081586945336312 4324333.54917159304022789, 743336.57299553952179849 4324334.26822241023182869, 743338.55667702457867563 4324335.02022282499819994, 743340.4560106738936156 4324335.79412297997623682, 743342.2833762742811814 4324336.59254284016788006, 743344.07892301201354712 4324337.41744237765669823, 743345.86431027948856354 4324338.26024169847369194, 743347.6099880700930953 4324339.08522124402225018, 743347.70839680649805814 4324339.13108065910637379, 743349.37597519997507334 4324339.89712095260620117, 743349.59829226194415241 4324339.99598969705402851, 743351.19257078401278704 4324340.68189099710434675, 743351.56258564465679228 4324340.83238908369094133, 743353.09027380624320358 4324341.41850162670016289, 743353.64513554598670453 4324341.61286915000528097, 743355.11270285316277295 4324342.07899319566786289, 743355.88992023339960724 4324342.29179046582430601, 743357.3095761047443375 4324342.61960623227059841, 743358.31555805809330195 4324342.79832390323281288, 743359.72111154650337994 4324342.97453155647963285, 743360.87413860962260514 4324343.05179046746343374, 743362.30476868338882923 4324343.06479014456272125, 743363.47109308291692287 4324343.00720072817057371, 743364.96574872056953609 4324342.84551256522536278, 743366.01980347349308431 4324342.6741345738992095, 743367.61760363797657192 4324342.32587872259318829, 743368.48349132505245507 4324342.09607147611677647, 743370.22411497600842267 4324341.54956806171685457, 743370.88990678661502898 4324341.31440090294927359, 743372.81221290049143136 4324340.55806007049977779, 743373.30148891685530543 4324340.35037259105592966, 743375.44442646927200258 4324339.37272447813302279, 743375.79227618779987097 4324339.20584650710225105, 743378.18582442833576351 4324338.00023118779063225, 743378.42792709753848612 4324337.87411272432655096, 743381.06254649627953768 4324336.45562001038342714, 743381.23510117770638317 4324336.36051117163151503, 743384.09262246161233634 4324334.74859082233160734, 743384.21706857567187399 4324334.67721169535070658, 743387.27849249879363924 4324332.89189346320927143, 743387.36776968534104526 4324332.83920410461723804, 743390.61418700322974473 4324330.90062774438410997, 743390.67708500835578889 4324330.86275820899754763, 743394.0900664534419775 4324328.79057346843183041, 743394.13114514481276274 4324328.76550377812236547, 743397.69194147631060332 4324326.58005041629076004, 743397.71576071612071246 4324326.56538059562444687, 743401.4057126734405756 4324324.2864183634519577, 743405.20304111717268825 4324321.93636698834598064, 743409.04161837662104517 4324319.56849581096321344, 743412.8792560271685943 4324317.22147436067461967, 743416.66843581246212125 4324314.93735212832689285, 743420.3596995307598263 4324312.7587785879150033, 743423.90048906300216913 4324310.72976320795714855, 743427.23328642267733812 4324308.89561543241143227, 743430.29519375879317522 4324307.30289470311254263, 743433.04520245385356247 4324305.98106065392494202, 743435.51910141250118613 4324304.91077353525906801, 743437.77501882961951196 4324304.05913373827934265, 743439.88168261549435556 4324303.38995170406997204, 743441.91998044948559254 4324302.8684678552672267, 743443.98131988034583628 4324302.46477254293859005, 743446.1556686325930059 4324302.15752601902931929, 743448.52110482729040086 4324301.93336844630539417, 743451.1192974413279444 4324301.78408990614116192, 743453.91272719309199601 4324301.70574046205729246, 743456.84575515065807849 4324301.69237019494175911, 743459.86769224796444178 4324301.73630920890718699, 743462.93175930809229612 4324301.82843761797994375, 743465.99494707048870623 4324301.95936554670333862, 743469.01396625966299325 4324302.11834314092993736, 743471.95107750745955855 4324302.29605051595717669, 743474.79019095422700047 4324302.48149780929088593, 743477.53170631895773113 4324302.65893521159887314, 743477.60565483989194036 4324302.66344514675438404, 743480.23310213093645871 4324302.81396290473639965, 743480.38339909550268203 4324302.82144278846681118, 743482.9214975027134642 4324302.92855109088122845, 743483.15224276657681912 4324302.93562097195535898, 743485.62033158913254738 4324302.98274002503603697, 743485.93240503291599452 4324302.98382996674627066, 743488.3497135752113536 4324302.95452997088432312, 743488.74126510648056865 4324302.94211006257683039, 743491.1268926712218672 4324302.81962122023105621, 743491.58936231560073793 4324302.7851015767082572, 743493.96247820323333144 4324302.55255409236997366, 743494.46468652272596955 4324302.49047478009015322, 743496.84170016436837614 4324302.13537880312651396, 743497.31226880266331136 4324302.05354973766952753, 743499.69942012627143413 4324301.57943522464483976, 743500.12246955931186676 4324301.48584630992263556, 743502.52261863788589835 4324300.90003316756337881, 743502.89529904536902905 4324300.80142432916909456, 743505.3124059340916574 4324300.11174245551228523, 743505.63914729387033731 4324300.01244362629950047, 743508.07622205733787268 4324299.22613293677568436, 743508.3578444350278005 4324299.1306240726262331, 743510.81803713890258223 4324298.25526447035372257, 743511.05687054491136223 4324298.16684552375227213, 743513.54411123704630882 4324297.20982691925019026, 743513.74391562584787607 4324297.13046786747872829, 743516.26087438408285379 4324296.09936016798019409, 743516.42931958334520459 4324296.02855101227760315, 743518.97379659907892346 4324294.93145411647856236, 743519.13933181879110634 4324294.85829499457031488, 743521.6857078067259863 4324293.7052887799218297, 743521.85916272946633399 4324293.62473974004387856, 743524.37550855765584856 4324292.42682407889515162, 743524.56315298413392156 4324292.33507518004626036, 743527.01760951476171613 4324291.10308994352817535, 743527.22583322832360864 4324290.99551123194396496, 743529.58702131547033787 4324289.74021629150956869, 743529.82453400839585811 4324289.60978785622864962, 743532.06097450293600559 4324288.34192308411002159, 743532.33933574520051479 4324288.17811505123972893, 743534.41892951796762645 4324286.90872032102197409, 743534.75429867557249963 4324286.6947428984567523, 743536.64558657549787313 4324285.43437807727605104, 743537.05922272265888751 4324285.14335158653557301, 743538.73775536706671119 4324283.89776661805808544, 743539.24327763530891389 4324283.49671146739274263, 743540.71435463754460216 4324282.25020653754472733, 743541.29871285567060113 4324281.71381303016096354, 743542.5746635883115232 4324280.44575839769095182, 743543.20409820321947336 4324279.75904673058539629, 743544.29768202360719442 4324278.44827264919877052, 743544.91734438901767135 4324277.62233268842101097, 743545.84107067924924195 4324276.24868940562009811, 743546.39531260158400983 4324275.31962072476744652, 743547.16132072906475514 4324273.86168849933892488, 743547.60206452442798764 4324272.90319019462913275, 743548.22305385442450643 4324271.3403492821380496, 743548.53551116725429893 4324270.4280804330483079, 743549.02430106129031628 4324268.73938108794391155, 743549.22055280418135226 4324267.93933087773621082, 743549.58972277154680341 4324266.1120232567191124, 743549.69657934887800366 4324265.47904100641608238, 743549.96160935726948082 4324263.52984489873051643, 743550.01569962385110557 4324263.04300086945295334, 743550.19235979637596756 4324260.99749595858156681, 743550.21729278238490224 4324260.62983046658337116, 743550.32174321182537824 4324258.51278644986450672, 743550.33148817718029022 4324258.23923980817198753, 743550.37893898249603808 4324256.07532637286931276, 743550.38129561254754663 4324255.88716868218034506, 743550.38808689138386399 4324253.70170552376657724, 743550.38778486929368228 4324253.58682693261653185, 743550.36949673667550087 4324251.40466373600065708, 743550.36904598725959659 4324251.3616442633792758, 743550.34188876475673169 4324249.22050056234002113, 743550.32108309282921255 4324247.17475569248199463, 743550.31920919334515929 4324245.25212930887937546, 743550.34574701054953039 4324243.46052130497992039, 743550.40880659176036716 4324241.81256153248250484, 743550.51369802234694362 4324240.31912985350936651, 743550.6621314431540668 4324238.990506140 +51520824, 743550.8508971412666142 4324237.83902024757117033, 743551.07436523074284196 4324236.86435217130929232, 743551.33380488329567015 4324236.02120247390121222, 743551.64356449211481959 4324235.23563205823302269, 743552.02462259761523455 4324234.44998162984848022, 743552.50189794867765158 4324233.62313168589025736, 743553.10234943334944546 4324232.7241826057434082, 743553.85042615805286914 4324231.73168464004993439, 743554.76367754279635847 4324230.63375793769955635, 743555.85585311055183411 4324229.41969261597841978, 743557.13153265125583857 4324228.08323876466602087, 743558.56242709746584296 4324226.64330614265054464, 743560.10467786877416074 4324225.12794442381709814, 743561.71317638910841197 4324223.56418327800929546, 743561.72182605741545558 4324223.55575338378548622, 743563.33589429897256196 4324221.98277234565466642, 743563.39076219336129725 4324221.92889299243688583, 743564.955091921845451 4324220.3807516610249877, 743565.06235776003450155 4324220.2729729600250721, 743566.54051001358311623 4324218.7649411503225565, 743566.71031330281402916 4324218.58740329183638096, 743568.0652391395997256 4324217.13539081625640392, 743568.30126954417210072 4324216.87331398390233517, 743569.50635969429276884 4324215.4869207264855504, 743569.772238465026021 4324215.16790458559989929, 743570.83988238987512887 4324213.83137075044214725, 743571.1083505277056247 4324213.47960500884801149, 743572.06112738756928593 4324212.17219083569943905, 743572.32046533515676856 4324211.79877536091953516, 743573.18016428884584457 4324210.49880111683160067, 743573.4106529833516106 4324210.13333554659038782, 743574.19998317677527666 4324208.81975148431956768, 743574.39311318169347942 4324208.48378556407988071, 743575.13404377270489931 4324207.13498194050043821, 743575.28239569847937673 4324206.85445534810423851, 743575.99731583998072892 4324205.44908242020756006, 743576.1008199630305171 4324205.2395849684253335, 743576.81208881142083555 4324203.75663299579173326, 743576.88729439629241824 4324203.59620494674891233, 743577.61057129572145641 4324202.01705414522439241, 743577.70014585636090487 4324201.81565659772604704, 743578.42587089957669377 4324200.13422704860568047, 743578.53461398452054709 4324199.87212023977190256, 743579.24629746598657221 4324198.08552198018878698, 743579.36609936389140785 4324197.76933583058416843, 743580.04763157200068235 4324195.87445890717208385, 743580.17120251758024096 4324195.50889336131513119, 743580.80647373618558049 4324193.50274781137704849, 743580.92722392594441772 4324193.09089283645153046, 743581.49986444402020425 4324190.9703186983242631, 743581.61070413398556411 4324190.51834421418607235, 743582.10455424187239259 4324188.28058153204619884, 743582.19953363668173552 4324187.79291749000549316, 743582.59834361879620701 4324185.43454630952328444, 743582.66885347641073167 4324184.94391230680048466, 743582.96226360136643052 4324182.46780259069055319, 743583.00139574648346752 4324182.06947746686637402, 743583.20196618989575654 4324179.50059891026467085, 743583.22073054860811681 4324179.20341254863888025, 743583.34745146171189845 4324176.57307476364076138, 743583.35549749084748328 4324176.35762740485370159, 743583.42624903621617705 4324173.69635001383721828, 743583.4289765318389982 4324173.55770171247422695, 743583.46280885499436408 4324170.89641433209180832, 743583.4634476313367486 4324170.8278151722624898, 743583.47883089084643871 4324168.19763741176575422, 743583.49393592961132526 4324165.66801842302083969, 743583.52613367489539087 4324163.31203729845583439, 743583.59065435675438493 4324161.16103365365415812, 743583.69938763719983399 4324159.21006754599511623, 743583.86084304691758007 4324157.44265917036682367, 743584.0814700466580689 4324155.83585881255567074, 743584.36764790513552725 4324154.35593688022345304, 743584.72851567715406418 4324152.96027389820665121, 743585.17959217913448811 4324151.60011045169085264, 743585.74893573229201138 4324150.21403729449957609, 743586.48027403873857111 4324148.72384536731988192, 743587.38453652581665665 4324147.11024490464478731, 743588.43443445779848844 4324145.41209543403238058, 743589.59449930896516889 4324143.67084646504372358, 743590.82887241942808032 4324141.91954759228974581, 743592.10273501882329583 4324140.18630848918110132, 743593.38301818468607962 4324138.49287888593971729, 743594.63663297903258353 4324136.85978855099529028, 743595.81997092813253403 4324135.32169706840068102, 743595.84446984808892012 4324135.28972744941711426, 743596.93432169943116605 4324133.8612846452742815, 743596.98798931716009974 4324133.7902755020186305, 743597.98385489312931895 4324132.46064151450991631, 743598.07565076276659966 4324132.33609301131218672, 743598.97935974842403084 4324131.08976802974939346, 743599.1103937242878601 4324130.90467025712132454, 743599.92480578564573079 4324129.72615446615964174, 743600.09947749460116029 4324129.46470761857926846, 743600.82631232775747776 4324128.33881120570003986, 743601.03829180705361068 4324127.99542534817010164, 743601.68046907777898014 4324126.90662850439548492, 743601.92435621144250035 4324126.4683638010174036, 743602.48377560125663877 4324125.40093671716749668, 743602.7335413204273209 4324124.88946290779858828, 743603.21288258163258433 4324123.83258571289479733, 743603.43070884537883103 4324123.31400200352072716, 743603.83376200124621391 4324122.27342463284730911, 743604.01729904627427459 4324121.7581708924844861, 743604.34765419457107782 4324120.74378321971744299, 743604.49983192980289459 4324120.23018946405500174, 743604.76140916184522212 4324119.25187136791646481, 743604.88480745861306787 4324118.73582765553146601, 743605.08168686972931027 4324117.80388900730758905, 743605.17962536436971277 4324117.26868553087115288, 743605.2062734755454585 4324117.0967670502141118, 743606.97479993908200413 4324116.26888725161552429, 743609.24861472111660987 4324114.15145250782370567, 743610.76273498265072703 4324111.43829527590423822, 743611.37099842075258493 4324108.391342394053936, 743611.01466145878657699 4324105.30475028790533543, 743605.58351072832010686 4324085.75068138912320137, 743618.30048117344267666 4324078.27193889953196049, 743620.80661152966786176 4324076.17990369070321321, 743622.50536660244688392 4324073.39213724620640278, 743623.21569543797522783 4324070.20577599853277206, 743622.86190562439151108 4324066.96040582191199064, 743622.25387106521520764 4324065.65709034819155931, 743622.33489198505412787 4324065.55885314103215933, 743622.67133729532361031 4324065.12738831248134375, 743623.5072996849194169 4324063.99263191688805819, 743623.81030563462991267 4324063.55762713961303234, 743624.54641040763817728 4324062.43875058367848396, 743624.79650808218866587 4324062.03834539838135242, 743625.45669452520087361 4324060.92360881343483925, 743625.65579412167426199 4324060.57135305553674698, 743626.25989163178019226 4324059.45021656528115273, 743626.43721181550063193 4324059.10527072660624981, 743626.99266012152656913 4324057.97118441481143236, 743627.15497056231833994 4324057.6229986185207963, 743627.66555948602035642 4324056.47042254451662302, 743627.81026037770789117 4324056.12661669868975878, 743628.27952975837979466 4324054.95073092449456453, 743628.40557123254984617 4324054.61781494971364737, 743628.83736089174635708 4324053.41293954197317362, 743628.94370313338004053 4324053.10000333189964294, 743629.34211288904771209 4324051.86075835209339857, 743629.43166581925470382 4324051.56677191983908415, 743629.79992550448514521 4324050.28766743559390306, 743629.87199933326337487 4324050.02379064075648785, 743630.21424877643585205 4324048.69983671326190233, 743630.27669295645318925 4324048.4444698141887784, 743630.59655176068190485 4324047.05764666758477688, 743630.66375480161514133 4324046.74328048806637526, 743630.96291172073688358 4324045.22486895136535168, 743631.02290456066839397 4324044.89054302033036947, 743631.30313813826069236 4324043.16021408513188362, 743631.34841171081643552 4324042.84988786838948727, 743631.61131048190873116 4324040.82635251991450787, 743631.64172523887827992 4324040.56546569894999266, 743631.88935773691628128 4324038.1681549334898591, 743631.90884361509233713 4324037.95781749486923218, 743632.14267838257364929 4324035.10580229014158249, 743632.15481522225309163 4324034.94111429899930954, 743632.37631080078426749 4324031.55358564853668213, 743632.38371843181084841 4324031.42820717953145504, 743632.59506334562320262 4324027.42404606938362122, 743632.60826584917958826 4324027.01480107009410858, 743632.88196033192798495 4324003.78833501785993576, 743632.28452071908395737 4324000.26389834564179182, 743623.91923931695055217 4323977.17653405014425516, 743621.95654278702568263 4323973.90039492398500443, 743605.05660618399269879 4323955.08734216447919607, 743601.62192462792154402 4323952.60684397164732218, 743588.87247435399331152 4323947.03503758553415537, 743577.13011169782839715 4323940.82927865069359541, 743565.90697734896093607 4323934.01407708134502172, 743555.11847672308795154 4323926.79548039566725492, 743544.67854537221137434 4323919.38568602036684752, 743534.53023878077510744 4323912.02741099521517754, 743534.45778938406147063 4323911.97537166718393564, 743524.5847628687042743 4323904.95019252691417933, 743524.33450508408714086 4323904.77778476011008024, 743514.69000424945261329 4323898.34750828985124826, 743514.26158848195336759 4323898.07728180848062038, 743504.7759080296382308 4323892.42489577271044254, 743504.30164331023115665 4323892.15948925632983446, 743494.97821290057618171 4323887.26959381625056267, 743494.50161878322251141 4323887.03554691933095455, 743485.36134685203433037 4323882.84438283275812864, 743484.892153165419586 4323882.64356552995741367, 743475.95697810733690858 4323879.0862435782328248, 743475.50330467568710446 4323878.91822585929185152, 743466.79475490737240762 4323875.93040681071579456, 743466.36471152701415122 4323875.79362870287150145, 743457.90409547567833215 4323873.31143332179635763, 743457.50734191155061126 4323873.2038348326459527, 743449.3160079806111753 4323871.16223390586674213, 743448.95969402103219181 4323871.08031508512794971, 743441.05938062386121601 4323869.41541938297450542, 743440.75717593426816165 4323869.35657025128602982, 743433.1768012810498476 4323868.00137057714164257, 743432.95481529133394361 4323867.96426114067435265, 743425.75298682227730751 4323866.84336840081959963, 743425.6292090971255675 4323866.82489868812263012, 743418.87274402088951319 4323865.85976381786167622, 743412.68985843006521463 4323864.98178760334849358, 743407.26376744487788528 4323864.13268068246543407, 743402.72795735206454992 4323863.26107362844049931, 743399.26961413421668112 4323862.36206641234457493, 743397.10709492163732648 4323861.53298772219568491, 743396.78533205075655133 4323861.33676495496183634, 743397.11393369839061052 4323860.34038251638412476, 743398.14545592968352139 4323858.29817737452685833, 743399.84258417214732617 4323855.69014893006533384, 743402.20072052662726492 4323852.62942578177899122, 743405.13682836049702018 4323849.20773682463914156, 743408.52188196440692991 4323845.5144910030066967, 743412.22875512740574777 4323841.61288758739829063, 743416.11893185647204518 4323837.56484587956219912, 743416.15414046600926667 4323837.52801631856709719, 743420.07591521483846009 4323833.40525549557060003, 743420.18530085205566138 4323833.28840688988566399, 743424.00875718053430319 4323829.13794643525034189, 743424.1961295458022505 4323828.92872893251478672, 743427.81079023820348084 4323824.77673857659101486, 743428.06341959384735674 4323824.47475219052284956, 743431.38132693653460592 4323820.34608167130500078, 743431.6320659191114828 4323820.02059557847678661, 743434.65165020036511123 4323815.92970471829175949, 743434.88064967421814799 4323815.60622861050069332, 743437.62191071023698896 4323811.56665723957121372, 743437.82859076303429902 4323811.24931106436997652, 743440.31204834464006126 4323807.27352901455014944, 743440.49666903028264642 4323806.96582272741943598, 743442.74210296396631747 4323803.06633984390646219, 743442.90328443690668792 4323802.77534336782991886, 743444.93137452425435185 4323798.96562947053462267, 743445.07060680317226797 4323798.69417275581508875, 743446.90131284762173891 4323794.98682769201695919, 743447.01872603234369308 4323794.74066067207604647, 743448.67236783041153103 4323791.14829426445066929, 743448.76678210962563753 4323790.93677683174610138, 743450.26644935423973948 4323787.46965894475579262, 743450.33168525609653443 4323787.31529081799089909, 743451.71184719714801759 4323783.97176145575940609, 743451.74503506137989461 4323783.89035244937986135, 743453.04195090057328343 4323780.66848162095993757, 743454.27409101056400687 4323777.61124878004193306, 743455.45748583297245204 4323774.76288338750600815, 743456.62163475598208606 4323772.12352540623396635, 743457.79452707385644317 4323769.68684491235762835, 743459.01169151952490211 4323767.42309225164353848, 743460.34462470444850624 4323765.22556870244443417, 743461.84164355229586363 4323762.97755568195134401, 743463.50078727316576988 4323760.63186377845704556, 743465.30136579414829612 4323758.16006335522979498, 743467.17859087535180151 4323755.58454415574669838, 743467.25310748117044568 4323755.48092539515346289, 743469.13974088907707483 4323752.8218372231349349, 743469.27981436788104475 4323752.61915964912623167, 743471.14886606647633016 4323749.84234293084591627, 743471.3415267679374665 4323749.54486649949103594, 743473.16632668906822801 4323746.61472169775515795, 743473.37188627198338509 4323746.26936584711074829, 743475.13467446551658213 4323743.16760318819433451, 743475.264577571535483 4323742.93169602937996387, 743476.98286456766072661 4323739.70919487811625004, 743477.0336417966755107 4323739.61270604375749826, 743478.72557871940080076 4323736.35454533901065588, 743480.38133816886693239 4323733.19634341448545456, 743481.99367244774475694 4323730.25991876609623432, 743483.56649287464097142 4323727.62449041847139597, 743485.08548121305648237 4323725.37295735161751509, 743486.51493950898293406 4323723.57867868803441525, 743487.84255792631302029 4323722.23627449292689562, 743489.15993215714115649 4323721.2108863927423954, 743490.65043571300338954 4323720.35299611743539572, 743492.53865241422317922 4323719.57970456685870886, 743495.02026806981302798 4323718.886491684243083, 743498.22476057999301702 4323718.30803695227950811, 743502.22631899465341121 4323717.87884991522878408, 743507.07515257550403476 4323717.61703031603246927, 743512.78523103892803192 4323717.52296814322471619, 743519.24558644089847803 4323717.58110364899039268, 743526.31811124563682824 4323717.76693722512573004, 743533.87739760440308601 4323718.05315928254276514, 743541.80590748297981918 4323718.41143023036420345, 743549.99155271495692432 4323718.81223051156848669, 743558.31419529230333865 4323719.22568055521696806, 743558.33597485325299203 4323719.22674052696675062, 743566.6738168018637225 4323719.62272078357636929, 743566.72403578797820956 4323719.62498072348535061, 743574.97294879332184792 4323719.97519159223884344, 743575.04777727345936 4323719.97809151094406843, 743583.12842261651530862 4323720.26055331248790026, 743583.23030053230468184 4323720.26359321549534798, 743591.06900939357001334 4323720.45762624125927687, 743591.20353661198168993 4323720.46004613116383553, 743598.7262701818253845 4323720.54500068258494139, 743598.90182650438509881 4323720.54544057510793209, 743606.03540595376398414 4323720.5007569408044219, 743606.26518105971626937 4323720.49667685478925705, 743612.93544758239295334 4323720.3015453340485692, 743613.23884097428526729 4323720.28806531988084316, 743619.37224575341679156 4323719.92197620030492544, 743619.78110658854711801 4323719.88913636468350887, 743625.30369081010576338 4323719.33145994506776333, 743625.85318802390247583 4323719.26055049523711205, 743630.71085256058722734 4323718.4962769877165556, 743631.38685606676153839 4323718.36592818424105644, 743635.60459049756173044 4323717.40096750762313604, 743636.40925972862169147 4323717.1811697268858552, 743640.03105334145948291 4323716.02756170090287924, 743640.97225735930260271 4323715.67475545965135098, 743644.0422294408781454 4323714.34438991546630859, 743645.10657759034074843 4323713.80560587998479605, 743647.66906741354614496 4323712.31007264740765095, 743648.80461995932273567 4323711.53818141203373671, 743650.90402680309489369 4323709.88952032290399075, 743652.01887539285235107 4323708.86877213884145021, 743653.69941853161435574 4323707.07844301965087652, 743654.67750646406784654 4323705.85769735928624868, 743655.9831051891669631 4323703.93774004839360714, 743656.75733503082301468 4323702.58257614821195602, 743657.71937887510284781 4323700.54409048333764076, 743658.31177832104731351 4323698.95007960963994265, 743658.9076679329155013 4323696.80270549561828375, 743659.23439914651680738 4323694.99268742371350527, 743659.429305404657498 4323692.74497477896511555, 743659.41365235031116754 4323690.85256791766732931, 743659.17179616692010313 4323688.51354665216058493, 743658.81648187327664346 4323686.71360887121409178, 743658.1023441415745765 4323684.29187891352921724, 743657.49245928367599845 4323682.7239684546366334, 743656.27100089786108583 4323680.22851971723139286, 743655.5232940420974046 4323678.95034580491483212, 743653.75888590828981251 4323676.39007820747792721, 743652.97483479115180671 4323675.39396087545901537, 743650.63230780058074743 4323672.77772432658821344, 743649.88077026489190757 4323672.02336402516812086, 743646.93498520308639854 4323669.36579837370663881, 743646.25530957314185798 4323668.80491566006094217, 743642.72542671579867601 4323666.14449042640626431, 743642.10475212067831308 4323665.71249609906226397, 743638.02026162447873503 4323663.09321073163300753, 743637.43883772881235927 4323662.74753532558679581, 743632.82901976385619491 4323660.21381925977766514, 743632.27254643873311579 4323659.93022308126091957, 743627.16708115849178284 4323657.5260757589712739, 743626.62250840454362333 4323657.28912900760769844, 743621.0508759788936004 4323655.05923986155539751, 743620.51048381719738245 4323654.86081263609230518, 743614.50233439425937831 4323652.84894111566245556, 743613.95810290076769888 4323652.68376349005848169, 743607.54255665000528097 4323650.93415903393179178, 743607.01929537963587791 4323650.80649093445390463, 743600.24365177587606013 4323649.34551318362355232, 743599.847218734677881 4323649.26837438344955444, 743592.82647453434765339 4323648.04890383500605822, 743592.56142934830859303 4323648.00652452558279037, 743585.42850062367506325 4323646.96394189074635506, 743585.27929339022375643 4323646.94328224007040262, 743578.16724620549939573 4323646.01293822005391121, 743578.12939691380597651 4323646.00805830582976341, 743571.21012660046108067 4323645.12977352738380432, 743564.68509796797297895 4323644.24881854187697172, 743558.7359062812756747 4323643.31303386297076941, 743553.52606736205052584 4323642.27982991747558117, 743549.08841994265094399 4323641.11680707708001137, 743545.26849753386341035 4323639.83887526672333479, 743541.93357343040406704 4323638.47505419701337814, 743538.96659048297442496 4323637.04767369199544191, 743536.24928137566894293 4323635.56816366780549288, 743533.66303867450915277 4323634.04106414597481489, 743531.14519443910103291 4323632.50831466075032949, 743531.02908564766403288 4323632.43870559334754944, 743528.59527134150266647 4323631.0018948782235384, 743528.22374544921331108 4323630.79310769215226173, 743525.86055273900274187 4323629.53055478353053331, 743525.31478941207751632 4323629.26000847294926643, 743522.98193947703111917 4323628.19081317260861397, 743522.27725912479218096 4323627.8998172152787447, 743519.94068292260635644 4323627.03763937018811703, 743519.08923599030822515 4323626.76603326946496964, 743516.71543446078430861 4323626.12414273340255022, 743515.75207096186932176 4323625.91399595327675343, 743513.30771503783762455 4323625.50585258286446333, 743512.29221428488381207 4323625.38925468362867832, 743509.74355491192545742 4323625.22800833638757467, 743508.74232568766456097 4323625.21489914786070585, 743506.0557438088580966 4323625.31432967353612185, 743505.13029459421522915 4323625.39173932373523712, 743502.27233115117996931 4323625.765086580067873, 743501.4845300653250888 4323625.90021542552858591, 743498.43321556446608156 4323626.55010939110070467, 743497.86524992727208883 4323626.68854805175215006, 743494.64474313787650317 4323627.57403921615332365, 743494.25592333427630365 4323627.68947804719209671, 743490.90256259310990572 4323628.75953700672835112, 743490.65117934998124838 4323628.84343613218516111, 743487.2012629754608497 4323630.04593351949006319, 743487.05832687532529235 4323630.09698297828435898, 743483.54719322384335101 4323631.38090938981622458, 743483.49856456136330962 4323631.39882920030504465, 743479.98350138519890606 4323632.7048853300511837, 743476.54648575256578624 4323633.9645319813862443, 743473.24835537374019623 4323635.12030981667339802, 743470.09420960571151227 4323636.1421192130073905, 743467.05846902751363814 4323637.03217015229165554, 743464.13337381090968847 4323637.79102264251559973, 743461.31690399395301938 4323638.41849668975919485, 743458.6070896137971431 4323638.91442228481173515, 743456.00180073827505112 4323639.27985942736268044, 743453.49771745037287474 4323639.51582811120897532, 743451.08716994640417397 4323639.62425830867141485, 743448.75298863591160625 4323639.60792000312358141, 743446.47457401978317648 4323639.47071315627545118, 743444.23706646682694554 4323639.21588774211704731, 743442.02779627649579197 4323638.84540374390780926, 743439.83583369594998658 4323638.36010115407407284, 743437.64977895352058113 4323637.75958999432623386, 743435.45956224470864981 4323637.04286027513444424, 743433.24332392204087228 4323636.20380209200084209, 743430.92607513500843197 4323635.21869578585028648, 743428.43276752985548228 4323634.09148135874420404, 743425.81169140944257379 4323632.89658785425126553, 743425.66631331399548799 4323632.83170875161886215, 743422.98787883925251663 4323631.66180498246103525, 743422.67146314773708582 4323631.53000681754201651, 743419.93029145221225917 4323630.44298206735402346, 743419.43903857690747827 4323630.26289461366832256, 743416.61645098030567169 4323629.31118824146687984, 743415.95175141445361078 4323629.112471136264503, 743413.02863923425320536 4323628.34795250743627548, 743412.19892346602864563 4323628.16819527093321085, 743409.1559480318101123 4323627.64306375104933977, 743408.24316515657119453 4323627.52848576568067074, 743405.07263725181110203 4323627.27794092241674662, 743404.30301284999586642 4323627.24688180349767208, 743401.04044120013713837 4323627.24096398614346981, 743400.44477399159222841 4323627.25763416476547718, 743397.13735676789656281 4323627.44897392299026251, 743396.68412692320998758 4323627.48555376101285219, 743393.3782923414837569 4323627.82814163714647293, 743393.05146989307831973 4323627.86745136044919491, 743389.79421612503938377 4323628.31379791162908077, 743389.57892120617907494 4323628.34569765720516443, 743386.41713644820265472 4323628.84929343685507774, 743386.31171896809246391 4323628.86666328925639391, 743383.29956123256124556 4323629.37947885133326054, 743380.55583698349073529 4323629.84230486303567886, 743378.19066297530662268 4323630.20242190454155207, 743376.18771916441619396 4323630.43801026232540607, 743374.48995669989380985 4323630.54619000665843487, 743373.00525763945188373 4323630.53413111437112093, 743371.60161477338988334 4323630.4030536413192749, 743370.1283108601346612 4323630.13006798271089792, 743368.44438795105088502 4323629.66397486627101898, 743366.43147732969373465 4323628.93685520067811012, 743363.98301000124774873 4323627.87918994016945362, 743361.07423647388350219 4323626.49013909697532654, 743357.7421169001609087 4323624.82248200383037329, 743354.04581141006201506 4323622.95374766085296869, 743353.980752196861431 4323622.92114811111241579, 743349.9753110718447715 4323620.93258546944707632, 743349.82726290542632341 4323620.86060645990073681, 743345.51945701870135963 4323618.80961480177938938, 743345.3018298092065379 4323618.70917619485408068, 743340.68214021110907197 4323616.64401492942124605, 743340.40051398554351181 4323616.52326662093400955, 743335.45807177561800927 4323614.49314514081925154, 743335.14705614850390702 4323614.37141686212271452, 743329.89463176694698632 4323612.41630466841161251, 743329.65125533333048224 4323612.32927591074258089, 743324.19424670690204948 4323610.45711282826960087, 743324.02515925944317132 4323610.40078364498913288, 743318.49179370631463826 4323608.61198958661407232, 743318.38686531875282526 4323608.57871007081121206, 743312.90538014739286155 4323606.8731049532070756, 743312.86068084207363427 4323606.85930515546351671, 743307.56975319818593562 4323605.2401088485494256, 743302.63673977926373482 4323603.71906108781695366, 743298.23544722713995725 4323602.31229156255722046, 743294.53731229610275477 4323601.03974990267306566, 743291.67058270692359656 4323599.92463573068380356, 743289.62881895492319018 4323598.98713879939168692, 743288.38255258544813842 4323598.27975846640765667, 743288.06257975997868925 4323598.04322630912065506, 743288.00398758531082422 4323597.54830786492675543, 743287.98438130598515272 4323596.60485967062413692, 743288.06501753081101924 4323595.35656522866338491, 743288.28207526612095535 4323593.7900746650993824, 743288.66532381006982177 4323591.90121802687644958, 743289.23719266254920512 4323589.68814531154930592, 743290.01495146914385259 4323587.15126650501042604, 743291.01512968959286809 4323584.27973172999918461, 743292.24925672565586865 4323581.05333122983574867, 743293.67561434884555638 4323577.52262439951300621, 743295.22559562092646956 4323573.77942012622952461, 743296.816524374531582 4323569.94238699320703745, 743296.84443258563987911 4323569.87438782770186663, 743298.39468253217637539 4323566.05638447497040033, 743298.4537586597725749 4323565.90747629385441542, 743299.8964125425554812 4323562.18443182483315468, 743299.98904619703534991 4323561.93561487179249525, 743301.2583667270373553 4323558.3826783811673522, 743301.38934704638086259 4323557.99065319169312716, 743302.41929691936820745 4323554.68210381269454956, 743302.59307213057763875 4323554.05203156359493732, 743303.32011350034736097 4323551.03430875763297081, 743303.51092139736283571 4323550.01097140833735466, 743303.88244421314448118 4323547.21858603321015835, 743303.96897679613903165 4323545.77132405247539282, 743303.9348104476230219 4323543.11064731236547232, 743303.76506374694872648 4323541.39997880347073078, 743303.27442764840088785 4323538.77764191385358572, 743302.81658806325867772 4323537.12768285069614649, 743301.81955159525386989 4323534.44961701426655054, 743301.2112308582291007 4323533.12147404253482819, 743299.65714343334548175 4323530.29430047236382961, 743299.07036910892929882 4323529.35429263953119516, 743296.90904012531973422 4323526.28469254728406668, 743296.43638909235596657 4323525.66606061905622482, 743293.6175379438791424 4323522.26003521587699652, 743293.27756817592307925 4323521.87023033015429974, 743289.77824416477233171 4323518.06144047155976295, 743289.55059469712432474 4323517.821733633056283, 743285.45600675279274583 4323513.65058875363320112, 743285.30353725922759622 4323513.49858076591044664, 743280.72664420667570084 4323509.03262995555996895, 743280.62530460604466498 4323508.93512124847620726, 743275.67867528577335179 4323504.24237357918173075, 743275.61649555421900004 4323504.18389435578137636, 743270.41326878103427589 4323499.33142890594899654, 743270.38189892342779785 4323499.30228929221630096, 743265.03457353985868394 4323494.35807513725012541, 743259.66459833539556712 4323489.39752123970538378, 743254.40364205942023546 4323484.50590644124895334, 743249.34041376621462405 4323479.73506001103669405, 743244.51018318079877645 4323475.11091160774230957, 743239.94389014388434589 4323470.66127084381878376, 743235.67553449072875082 4323466.41687731631100178, 743231.73947606165893376 4323462.40950058400630951, 743228.17211470135953277 4323458.67332019191235304, 743225.0116202759090811 4323455.24588563293218613, 743222.30012267990969121 4323452.17112631443887949, 743220.06777191930450499 4323449.48511175904422998, 743218.29772823280654848 4323447.1811920553445816, 743216.95827207597903907 4323445.24746737722307444, 743216.00890412379521877 4323443.67431787215173244, 743215.39290529559366405 4323442.44629377406090498, 743215.03353648574557155 4323441.52316564880311489, 743214.84251804277300835 4323440.82011463027447462, 743214.74966943287290633 4323440.22377219144254923, 743214.72584063606336713 4323439.69862881023436785, 743214.75594245677348226 4323439.27223414275795221, 743214.82571470260154456 4323438.91673855111002922, 743214.94000623445026577 4323438.57370277214795351, 743215.12815538281574845 4323438.18343752808868885, 743215.43742040765937418 4323437.7035833178088069, 743215.92422972596250474 4323437.11153037846088409, 743216.63681238703429699 4323436.41066862642765045, 743217.5926986348349601 4323435.63560761976987123, 743218.79207926359958947 4323434.83121678698807955, 743220.24420465051662177 4323434.02998571656644344, 743221.96163504337891936 4323433.26074403803795576, 743223.95735067292116582 4323432.55173138156533241, 743226.2437017778865993 4323431.93119738809764385, 743228.83202863205224276 4323431.42799167707562447, 743231.74356127670034766 4323431.06961389631032944, 743235.02592909417580813 4323430.87760373950004578, 743238.68255202262662351 4323430.85238118842244148, 743242.66197099047712982 4323430.9855763977393508, 743246.90913687669672072 4323431.26164960768073797, 743251.37338040047325194 4323431.66131110023707151, 743256.00959213310852647 4323432.16343117225915194, 743260.77579255239106715 4323432.74534014984965324, 743265.63093210756778717 4323433.38364835269749165, 743270.52525140950456262 4323434.05422612000256777, 743275.39131152513436973 4323434.73727376013994217, 743280.16455348243471235 4323435.41466154903173447, 743284.77816835371777415 4323436.06768977083265781, 743284.80290789762511849 4323436.07115970645099878, 743289.18081692024134099 4323436.67966866958886385, 743289.23031600192189217 4323436.68641854822635651, 743293.31428009446244687 4323437.23328851535916328, 743293.3981285304762423 4323437.2441583126783371, 743297.12706865381915122 4323437.71142955869436264, 743297.26085612911265343 4323437.72727925702929497, 743300.5731032604817301 4323438.09708204492926598, 743300.78731915343087167 4323438.11867160815745592, 743303.64841374603565782 4323438.37587615847587585, 743303.98369715223088861 4323438.40033559035509825, 743306.46655758528504521 4323438.53961191233247519, 743306.94000793504528701 4323438.55493134912103415, 743309.14522205945104361 4323438.57402938790619373, 743309.7398493766086176 4323438.56149907782673836, 743311.76757505943533033 4323438.45834878366440535, 743312.42117039335425943 4323438.40355895739048719, 743314.37186547846067697 4323438.17541028466075659, 743314.98191109392791986 4323438.08491093944758177, 743316.95544345141388476 4323437.72963382955640554, 743317.43691161286551505 4323437.63068468403071165, 743319.53371909412089735 4323437.14575910102576017, 743319.84963108459487557 4323437.06725983507931232, 743322.17013154644519091 4323436.45038571767508984, 743322.33813720708712935 4323436.40415616240352392, 743324.96025906037539244 4323435.65794342011213303, 743325.0283772861585021 4323435.6382936118170619, 743327.94285114598460495 4323434.78650195803493261, 743331.09788869693875313 4323433.86303100362420082, 743334.43238187779206783 4323432.90495033375918865, 743337.92371160152833909 4323431.93722965195775032, 743341.54113898263312876 4323430.98636866360902786, 743345.25285516656003892 4323430.07956703752279282, 743349.03477108362130821 4323429.24073450919240713, 743352.91068636300042272 4323428.4772409601137042, 743356.94486912642605603 4323427.75891671516001225, 743361.17139808845240623 4323427.05346215236932039, 743365.5969325874466449 4323426.33150763809680939, 743365.62469192466232926 4323426.32693767268210649, 743370.23841170431114733 4323425.56095354538410902, 743370.32288967864587903 4323425.5465536592528224, 743375.132224035798572 4323424.70568030420690775, 743375.26505082554649562 4323424.68153049796819687, 743380.29452865093480796 4323423.73201831243932247, 743380.46625445154495537 4323423.69803859759122133, 743385.74133461550809443 4323422.60618797782808542, 743385.92907996149733663 4323422.5654483363032341, 743391.45952187443617731 4323421.30947954021394253, 743391.60632818925660104 4323421.27496985252946615, 743397.34220336005091667 4323419.88106259796768427, 743397.44419077481143177 4323419.85571283008903265, 743403.3211112292483449 4323418.36194668710231781, 743403.38542958721518517 4323418.34536684118211269, 743409.33895735046826303 4323416.78996139112859964, 743409.369896556 +71641231 4323416.78183146752417088, 743415.33473367185797542 4323415.20305627956986427, 743421.22960259369574487 4323413.64348089601844549, 743426.97250579367391765 4323412.14564485102891922, 743432.50041524542029947 4323410.74653774220496416, 743437.79418166517280042 4323409.46403936482965946, 743442.88745381939224899 4323408.26825006306171417, 743447.78022117482032627 4323407.12897021602839231, 743447.82209012436214834 4323407.11913030594587326, 743452.49476262484677136 4323406.00989025179296732, 743452.60365987429395318 4323405.98339049238711596, 743457.05282706196885556 4323404.87439061049371958, 743457.23824232909828424 4323404.82628105394542217, 743461.47006350010633469 4323403.68493174202740192, 743461.73932650266215205 4323403.60825247503817081, 743465.75973096210509539 4323402.402214122004807, 743466.11844141490291804 4323402.28720525372773409, 743469.93315847543999553 4323400.98435826413333416, 743470.37384637794457376 4323400.82218991033732891, 743473.99184533813968301 4323399.39355462603271008, 743474.4707217087270692 4323399.18990675453096628, 743477.91386181279085577 4323397.61863336991518736, 743478.40579724905546755 4323397.37764594703912735, 743481.69908775039948523 4323395.65092459972947836, 743482.18921262677758932 4323395.37611759547144175, 743485.35775276180356741 4323393.4806284261867404, 743485.82998755492735654 4323393.17987175658345222, 743488.898676568409428 4323391.10243490617722273, 743489.33946174883749336 4323390.78625844977796078, 743492.33313888520933688 4323388.51346406992524862, 743492.73116492060944438 4323388.1949676750227809, 743495.6748394260648638 4323385.71379589568823576, 743496.02429665206000209 4323385.40502942260354757, 743498.94319776189513505 4323382.70218039024621248, 743499.24217640003189445 4323382.41355370730161667, 743502.15459362301044166 4323379.48273748252540827, 743502.40395380393601954 4323379.2226004870608449, 743505.30502760980743915 4323376.08475681021809578, 743505.51613902219105512 4323375.84903955087065697, 743508.39334017236251384 4323372.53236809186637402, 743508.57387261046096683 4323372.31828058417886496, 743511.41616181982681155 4323368.85024100635200739, 743511.57361503958236426 4323368.6530933091416955, 743514.3685930633218959 4323365.06164528056979179, 743514.50659696571528912 4323364.88007740676403046, 743517.24304453656077385 4323361.1933505879715085, 743517.36666894005611539 4323361.02308258321136236, 743520.03256679803598672 4323357.26885664369910955, 743520.14465160330291837 4323357.10768853966146708, 743522.72821048903279006 4323353.31378314364701509, 743522.83250554231926799 4323353.15748498402535915, 743525.31987626058980823 4323349.35308978334069252, 743525.42573112237732857 4323349.18767173588275909, 743527.79414471727795899 4323345.40506635513156652, 743527.90531917638145387 4323345.22321850527077913, 743530.12962677923496813 4323341.49645254854112864, 743530.24867066694423556 4323341.29152497183531523, 743532.30423338641412556 4323337.65429804474115372, 743532.43502642819657922 4323337.41533087939023972, 743534.29655538767110556 4323333.90127259120345116, 743534.44228728336747736 4323333.61515599023550749, 743536.08477360685355961 4323330.25826594792306423, 743536.24930391786620021 4323329.90470016468316317, 743537.64813871670048684 4323326.73871797043830156, 743537.83623672858811915 4323326.28290342167019844, 743538.96611112263053656 4323323.34128869604319334, 743539.17408622219227254 4323322.74406587239354849, 743540.01703103492036462 4323320.05220831092447042, 743540.21835372236091644 4323319.31045727711170912, 743540.78348860237747431 4323316.8592469897121191, 743540.94756933441385627 4323315.96263789851218462, 743541.25111363781616092 4323313.73470509145408869, 743541.33848307305015624 4323312.67379808705300093, 743541.39697613066527992 4323310.65111296717077494, 743541.35811547609046102 4323309.43534799013286829, 743541.18737665645312518 4323307.60084074921905994, 743540.97456778842024505 4323306.28000721894204617, 743540.5906364320544526 4323304.61547808162868023, 743540.18176137574482709 4323303.27797493059188128, 743539.60117683419957757 4323301.76615408435463905, 743539.01737692207098007 4323300.51264005992561579, 743538.25619854696560651 4323299.13588771410286427, 743537.54573388304561377 4323298.02951199188828468, 743536.61622114223428071 4323296.77225832547992468, 743535.78942114522214979 4323295.79221115633845329, 743534.68963393906597048 4323294.64647626876831055, 743533.79303811094723642 4323293.81980727147310972, 743532.51680646208114922 4323292.77966124657541513, 743531.6196737322025001 4323292.12780009489506483, 743530.16155764914583415 4323291.18726301100105047, 743529.31310675700660795 4323290.69710981845855713, 743527.66688627447001636 4323289.85081174783408642, 743526.90525600430555642 4323289.49884677585214376, 743525.06519113341346383 4323288.74048779252916574, 743524.4012306802906096 4323288.49397143628448248, 743522.36116144678089768 4323287.81772162206470966, 743521.79505030962172896 4323287.64845422375947237, 743519.54953672864940017 4323287.04872365389019251, 743519.11497395823244005 4323286.94301535375416279, 743516.66580572992097586 4323286.40494421310722828, 743516.4903187503805384 4323286.36803482659161091, 743513.90664367051795125 4323285.84880357421934605, 743511.33684799983166158 4323285.3126625195145607, 743508.8830189963337034 4323284.72527199611067772, 743506.56786550534889102 4323284.04830245114862919, 743504.41352656355593354 4323283.25325422640889883, 743502.4304115348495543 4323282.31662759557366371, 743500.57514045259449631 4323281.18879321683198214, 743498.67606432549655437 4323279.72357304580509663, 743496.60862418357282877 4323277.83145831059664488, 743494.3922406688798219 4323275.57206825911998749, 743492.04873509844765067 4323273.04577162768691778, 743489.63947930501308292 4323270.42890618462115526, 743489.49791960755828768 4323270.27829817961901426, 743487.08343569992575794 4323267.76216150633990765, 743486.74175685760565102 4323267.42284601461142302, 743484.31250709388405085 4323265.12386668100953102, 743483.6976004937896505 4323264.58775387797504663, 743481.23167715012095869 4323262.60890062619000673, 743480.27099521202035248 4323261.92694994900375605, 743477.7480701778549701 4323260.35092177614569664, 743476.56035381800029427 4323259.71591072902083397, 743473.96700744272675365 4323258.54661759361624718, 743472.652256392640993 4323258.06153481360524893, 743469.97663863317575306 4323257.28248692862689495, 743468.62727168831042945 4323256.98890180978924036, 743465.85779250552877784 4323256.58412938099354506, 743464.57378754811361432 4323256.48032185528427362, 743461.69841690873727202 4323256.43369508907198906, 743460.55382169876247644 4323256.48076556343585253, 743457.56102956202812493 4323256.77623466961085796, 743456.59258237318135798 4323256.92000378202646971, 743453.47058869514148682 4323257.54102897085249424, 743452.67794867232441902 4323257.73260732553899288, 743449.41479342593811452 4323258.66362879518419504, 743448.79662986961193383 4323258.86191690899431705, 743445.39266259397845715 4323260.07699497789144516, 743444.95513471600133926 4323260.24482329934835434, 743441.45700333220884204 4323261.68163870088756084, 743441.16001180233433843 4323261.80927739106118679, 743437.626733802491799 4323263.39587095752358437, 743437.43919925659429282 4323263.48242005705833435, 743433.92917214054614305 4323265.14652263186872005, 743433.83275497646536678 4323265.19287214241921902, 743430.40505624748766422 4323266.86308455653488636, 743427.1607621437869966 4323268.44644787069410086, 743424.23672789568081498 4323269.83513330575078726, 743421.72868008597288281 4323270.9490517619997263, 743419.68673696531914175 4323271.74877369403839111, 743418.06480021041352302 4323272.27441864181309938, 743416.81135185807943344 4323272.5805059839040041, 743415.85729442350566387 4323272.72717502806335688, 743415.09169121587183326 4323272.77051518950611353, 743414.36686586972791702 4323272.74118621181696653, 743413.53407140937633812 4323272.63401829916983843, 743412.49589947063941509 4323272.42626182641834021, 743411.27475958061404526 4323272.11785676702857018, 743409.95515022519975901 4323271.72296287212520838, 743408.57015078736003488 4323271.24604006111621857, 743407.13405097264330834 4323270.68727831356227398, 743405.6590605448000133 4323270.04784759972244501, 743404.15852926066145301 4323269.32963789440691471, 743402.64469690155237913 4323268.53495915234088898, 743401.12251333752647042 4323267.66222139354795218, 743399.56646879436448216 4323266.69396484922617674, 743397.9350238045444712 4323265.6113398028537631, 743396.20773875317536294 4323264.4116362975910306, 743394.37092399585526437 4323263.09900430403649807, 743392.41296992241404951 4323261.68155372515320778, 743390.34023680724203587 4323260.18258427362889051, 743390.28865723335184157 4323260.14553477894514799, 743388.11442531365901232 4323258.59410607721656561, 743388.02292609016876668 4323258.5295869680121541, 743385.72411588660907 4323256.92779900971800089, 743385.61309686431195587 4323256.85154005885124207, 743383.18232864863239229 4323255.20599277596920729, 743383.12059920746833086 4323255.16454334743320942, 743380.60054227337241173 4323253.48573656566441059, 743378.0662655025953427 4323251.79936989303678274, 743375.61039763293229043 4323250.14372277725487947, 743373.29137773369438946 4323248.53548495098948479, 743371.17415488208644092 4323246.9990760451182723, 743369.33316817623563111 4323245.57184552773833275, 743367.84372691309545189 4323244.30293271504342556, 743366.72618113679345697 4323243.21903725620359182, 743365.92716183071024716 4323242.31243929266929626, 743365.39147009910084307 4323241.58050891105085611, 743365.05668700160458684 4323241.00911634229123592, 743364.85609325231052935 4323240.55965212732553482, 743364.73125887161586434 4323240.16418717242777348, 743364.64734308933839202 4323239.73787256050854921, 743364.60108516435138881 4323239.23484887275844812, 743364.60317657748237252 4323238.75172488950192928, 743364.64652903890237212 4323238.37673952057957649, 743364.72928134480025619 4323238.03957364521920681, 743364.89238055690657347 4323237.62248868960887194, 743365.22157306782901287 4323237.02318585012108088, 743365.82144570839591324 4323236.1858257232233882, 743366.78988620161544532 4323235.0979183716699481, 743368.21829264867119491 4323233.75987370498478413, 743370.19752294570207596 4323232.1604917673394084, 743372.70590800698846579 4323230.32565226964652538, 743375.63728098978754133 4323228.30833463277667761, 743378.88822464912664145 4323226.1418385487049818, 743382.34303197998087853 4323223.85852370969951153, 743382.3894604624947533 4323223.82764405198395252, 743385.92743457958567888 4323221.46091016288846731, 743386.05070051760412753 4323221.37711108941584826, 743389.58024355419911444 4323218.93908808100968599, 743389.77937688946258277 4323218.79791965056210756, 743393.22531046427320689 4323216.29123756196349859, 743393.48786147544160485 4323216.09356976859271526, 743396.78577704913914204 4323213.52468858193606138, 743397.03981811436824501 4323213.32006088551133871, 743400.16855658439453691 4323210.71462030149996281, 743400.39970823808107525 4323210.51609254628419876, 743403.34851036441978067 4323207.90431220084428787, 743403.55979253945406526 4323207.71171439159661531, 743406.31823907617945224 4323205.12409391533583403, 743406.51352166314609349 4323204.93586606718599796, 743409.07134336151648313 4323202.40257509425282478, 743409.25416625046636909 4323202.21671723201870918, 743411.60081386589445174 4323199.76813539769500494, 743411.7755269028712064 4323199.58110755495727062, 743413.90044118615332991 4323197.24714450258761644, 743414.06953428033739328 4323197.05659670755267143, 743415.96233599260449409 4323194.86809207126498222, 743416.13807862205430865 4323194.65919449552893639, 743417.7932882341556251 4323192.63632802106440067, 743418.00337914086412638 4323192.37051111645996571, 743419.43489603395573795 4323190.49479302950203419, 743419.68488475354388356 4323190.15240703709423542, 743420.91132804309017956 4323188.39571766275912523, 743421.19381457404233515 4323187.9681727010756731, 743422.23410336568485945 4323186.30236237309873104, 743422.53457798273302615 4323185.78769847191870213, 743423.40752138418611139 4323184.1845675315707922, 743423.70324479602277279 4323183.59611454978585243, 743424.4278719094581902 4323182.02753331791609526, 743424.69522508594673127 4323181.39214094914495945, 743425.29003502987325191 4323179.82995976228266954, 743425.50821921322494745 4323179.19329745229333639, 743425.99219108780380338 4323177.60908664669841528, 743426.15448714431840926 4323177.0123739019036293, 743426.54318027326371521 4323175.38635370507836342, 743426.66258764395024627 4323174.81308070663362741, 743426.95692224451340735 4323173.15875096060335636, 743427.04103047773241997 4323172.59245790634304285, 743427.23923698521684855 4323170.93213832471519709, 743427.29137565055862069 4323170.35261546913534403, 743427.39120449172332883 4323168.70785579271614552, 743427.40957337571308017 4323168.10066331084817648, 743427.40935497230384499 4323166.4933832660317421, 743427.38728372170589864 4323165.83078151382505894, 743427.28429852286353707 4323164.28313083481043577, 743427.20770709181670099 4323163.54586006514728069, 743427.0002255201106891 4323162.07975846994668245, 743426.84353387705050409 4323161.23558910936117172, 743426.5295463603688404 4323159.87293634284287691, 743426.24064457626082003 4323158.86427915468811989, 743425.81449160352349281 4323157.62594495434314013, 743425.27670039911754429 4323156.35559126362204552, 743424.71986264595761895 4323155.25801545102149248, 743423.78586572571657598 4323153.7610849691554904, 743423.07639393804129213 4323152.82035736180841923, 743421.65299674076959491 4323151.29454773664474487, 743420.76903164992108941 4323150.52612816635519266, 743418.93843760446179658 4323149.2625956954434514, 743417.8578199545154348 4323148.68246398586779833, 743415.91404658788815141 4323147.8890857920050621, 743414.61493709881324321 4323147.5122017739340663, 743412.84352806280367076 4323147.16783782932907343, 743411.30400748737156391 4323147.01080132555216551, 743409.85748699645046145 4323146.96851330250501633, 743408.05551606556400657 4323147.04639414232224226, 743406.96925067086704075 4323147.15296390559524298, 743404.89093978435266763 4323147.47217201814055443, 743404.19516667583957314 4323147.60441107582300901, 743401.85885491990484297 4323148.13480681926012039, 743401.43729560112114996 4323148.24018593225628138, 743398.86863173427991569 4323148.94195977319031954, 743398.62749799946323037 4323149.01109915878623724, 743395.85292076936457306 4323149.84446156583726406, 743395.74049373040907085 4323149.87896124739199877, 743392.78622188558802009 4323150.80431268829852343, 743392.77538217115215957 4323150.80771265737712383, 743389.70436348312068731 4323151.77346371114253998, 743386.58224567747674882 4323152.72869493812322617, 743383.42926771694328636 4323153.6385067505761981, 743380.23173955443780869 4323154.48424941021949053, 743376.98793125641532242 4323155.26743288524448872, 743373.73313201544806361 4323155.98433719389140606, 743370.51187082182150334 4323156.63050234969705343, 743367.36933664069510996 4323157.2006983682513237, 743364.34903848776593804 4323157.69095525704324245, 743361.49819531582761556 4323158.0977430110797286, 743358.86677600641269237 4323158.41697164531797171, 743356.49286974384449422 4323158.64762112684547901, 743354.37588663236238062 4323158.79492138605564833, 743352.50695698976051062 4323158.8663323437795043, 743350.87511119060218334 4323158.87009391840547323, 743349.46836966415867209 4323158.81619598343968391, 743348.27383287076372653 4323158.7155084228143096, 743347.27321139466948807 4323158.57934111449867487, 743346.44636586133856326 4323158.4193339329212904, 743345.77374687034171075 4323158.24624675791710615, 743345.22111522033810616 4323158.0648195706307888, 743344.73815186286810786 4323157.86911248974502087, 743344.26849765481892973 4323157.64117579720914364, 743343.76232319511473179 4323157.35567986033856869, 743343.18306878418661654 4323156.98669504281133413, 743342.50278459500987083 4323156.51061165984719992, 743341.71833062404766679 4323155.92373976204544306, 743340.8899264361243695 4323155.27257870975881815, 743340.09829130885191262 4323154.61177774239331484, 743339.3766148827271536 4323153.96041659265756607, 743338.74461698671802878 4323153.33188506681472063, 743338.21844757278449833 4323152.74271294381469488, 743337.81131677562370896 4323152.21615992207080126, 743337.52670493954792619 4323151.77580570057034492, 743337.3579226725269109 4323151.44794996455311775, 743337.29174095066264272 4323151.2723822183907032, 743337.277350137475878 4323151.20941301994025707, 743337.26939848239999264 4323151.10636431444436312, 743337.29177231912035495 4323150.78439830988645554, 743337.43161739595234394 4323150.10608663968741894, 743337.79561027558520436 4323149.00310004875063896, 743338.47497876500710845 4323147.45955863408744335, 743339.54413118644151837 4323145.46856241952627897, 743341.05661621503531933 4323143.01836148556321859, 743342.96135629969649017 4323140.18710491247475147, 743345.15115579520352185 4323137.09407130535691977, 743347.52073866105638444 4323133.83870953228324652, 743349.96370879211463034 4323130.51541852671653032, 743349.98302792268805206 4323130.48903883248567581, 743352.38422953570261598 4323127.20007742382586002, 743352.45467633591033518 4323127.10235857311636209, 743354.70908317412249744 4323123.93503578659147024, 743354.84085706260520965 4323123.74529801588505507, 743356.85797222657129169 4323120.7681030910462141, 743357.06306235981173813 4323120.45277681294828653, 743358.7699482892639935 4323117.71726918127387762, 743359.02537528635002673 4323117.28402432054281235, 743360.41898183047305793 4323114.77826413605362177, 743360.71082570706494153 4323114.21174090262502432, 743361.80659203790128231 4323111.90707851015031338, 743362.12005251413211226 4323111.17373733222484589, 743362.93249781674239784 4323109.04149307776242495, 743363.23332523345015943 4323108.12003425043076277, 743363.77727870177477598 4323106.13196847774088383, 743364.01333423494361341 4323105.02754199877381325, 743364.30419503257144243 4323103.15469504427164793, 743364.41840066155418754 4323101.91158042103052139, 743364.47048799076583236 4323100.12559263035655022, 743364.42587630776688457 4323098.84671861957758665, 743364.25445934059098363 4323097.11908033210784197, 743364.05253166728653014 4323095.88091597706079483, 743363.66639982874039561 4323094.18940746318548918, 743363.29167545738164335 4323092.93366350792348385, 743362.67721904593054205 4323091.27902477513998747, 743362.11604878574144095 4323090.03529086709022522, 743361.25294836226385087 4323088.42538183834403753, 743360.53083309659268707 4323087.27391694858670235, 743359.39959920523688197 4323085.71632755268365145, 743358.56698889343533665 4323084.71433092001825571, 743357.14731208235025406 4323083.21618109010159969, 743356.26849591790232807 4323082.39405226241797209, 743354.54109672259073704 4323080.96292192675173283, 743353.66904353024438024 4323080.31691089924424887, 743351.61339251953177154 4323078.96041998080909252, 743350.79115108423866332 4323078.47259692754596472, 743348.38785878755152225 4323077.19795536156743765, 743347.67207766976207495 4323076.85402040276676416, 743344.91820417903363705 4323075.66293816361576319, 743344.43117090209852904 4323075.46730111911892891, 743341.39301445567980409 4323074.33853841014206409, 743341.11043859110213816 4323074.23833995964378119, 743337.87073696777224541 4323073.14405703358352184, 743337.75012878328561783 4323073.10417766124010086, 743334.40343959117308259 4323072.0209147147834301, 743331.10252955718897283 4323070.94415164552628994, 743327.99434556532651186 4323069.87156832870095968, 743325.18070535990409553 4323068.79594473820179701, 743322.76171694451477379 4323067.72248070500791073, 743320.75026994151994586 4323066.64540629927068949, 743319.08339560637250543 4323065.56097161862999201, 743317.73066491191275418 4323064.48847645800560713, 743316.66999879479408264 4323063.45450051221996546, 743315.87060825887601823 4323062.47953354753553867, 743315.29267428303137422 4323061.57174550835043192, 743314.89440764370374382 4323060.72594650741666555, 743314.63740872358903289 4323059.91799688339233398, 743314.49312720343004912 4323059.09624731261283159, 743314.45439197239466012 4323058.18948869127780199, 743314.5394015806959942 4323057.13731175847351551, 743314.78046474535949528 4323055.9052669070661068, 743315.21139053697697818 4323054.48079425655305386, 743315.85931845812592655 4323052.86782373581081629, 743316.74149841186590493 4323051.08118512947112322, 743317.86906039575114846 4323049.13404826540499926, 743319.25159426289610565 4323047.02938309498131275, 743320.87662050616927445 4323044.78014946635812521, 743322.71245027729310095 4323042.41406706534326077, 743324.72363473637960851 4323039.95486563164740801, 743326.87452497868798673 4323037.4222349626943469, 743329.13060197769664228 4323034.8305449029430747, 743331.45842663408257067 4323032.19112536031752825, 743333.81003041018266231 4323029.52987605147063732, 743333.82493980077560991 4323029.51295624766498804, 743336.14474466606043279 4323026.87572665978223085, 743338.39431269955821335 4323024.3344659460708499, 743340.55036553216632456 4323021.95383332017809153, 743342.5975643788697198 4323019.78458816558122635, 743344.51115071214735508 4323017.88071984145790339, 743346.25227634503971785 4323016.2989176781848073, 743347.76092350005637854 4323015.09369106404483318, 743348.95302458002697676 4323014.30172963906079531, 743349.78847965516615659 4323013.87965399213135242, 743350.34844462876208127 4323013.69168571662157774, 743350.80600371258333325 4323013.6151961712166667, 743351.38455153920222074 4323013.61046559177339077, 743352.27581502625253052 4323013.72992312256246805, 743353.5798636490944773 4323014.062267548404634, 743355.32046811748296022 4323014.67546798288822174, 743357.48829918238334358 4323015.60109405685216188, 743360.05430735240224749 4323016.83356586564332247, 743362.91754358913749456 4323018.30802433751523495, 743365.9725186878349632 4323019.94486058503389359, 743369.12953313952311873 4323021.66579567268490791, 743372.28507755231112242 4323023.38280082494020462, 743372.36595663009211421 4323023.426330192014575, 743375.40541171317454427 4323025.04416671302169561, 743375.57894968229811639 4323025.13436540216207504, 743378.43957556155510247 4323026.58594419341534376, 743378.74825176363810897 4323026.73597198817878962, 743381.36027864646166563 4323027.9505540132522583, 743381.88512167509179562 4323028.17660062480717897, 743384.19794957875274122 4323029.09528666269034147, 743385.00527767883613706 4323029.37664227839559317, 743387.04223595419898629 4323029.99022242054343224, 743388.22797611553687602 4323030.2698976481333375, 743390.03153391589876264 4323030.5807418143376708, 743391.66565232770517468 4323030.72581823077052832, 743393.27773881575558335 4323030.73618634603917599, 743395.27045385050587356 4323030.54868651181459427, 743396.7334281902294606 4323030.26115849427878857, 743398.75262494711205363 4323029.63667406793683767, 743400.10891629650723189 4323029.05390984192490578, 743401.77424537262413651 4323028.14219936821609735, 743403.06558289763052016 4323027.26635885238647461, 743404.21855266601778567 4323026.3537189457565546, 743405.48766552563756704 4323025.18753206357359886, 743406.19881787395570427 4323024.46418028324842453, 743407.47959560854360461 4323023.02187681850045919, 743407.88307861471548676 4323022.53759240359067917, 743409.1761723238741979 4323020.88209157064557076, 743409.39827245788183063 4323020.58664500247687101, 743410.69624360499437898 4323018.79192589316517115, 743410.79784895083867013 4323018.64880756195634604, 743412.09338900842703879 4323016.78957925364375114, 743412.09968871530145407 4323016.78052936028689146, 743413.34083121654111892 4323014.99517019093036652, 743413.63261085597332567 4323014.58909077011048794, 743414.91565885045565665 4323016.15744400769472122, 743416.79955195216462016 4323018.56013207230716944, 743418.85914582444820553 4323021.21430682297796011, 743418.9063659057719633 4323021.27467601839452982, 743421.08086921635549515 4323024.0330093577504158, 743421.20194934890605509 4323024.18358735740184784, 743423.46331082249525934 4323026.94081062637269497, 743423.66887081658933312 4323027.18346738629043102, 743426.00485919357743114 4323029.85378166195005178, 743426.31756868737284094 4323030.19497708510607481, 743428.71576271869707853 4323032.69305344019085169, 743429.1624411076772958 4323033.13013752456754446, 743431.61963966907933354 4323035.38864680286496878, 743432.16551650827750564 4323035.85536041762679815, 743434.7172590111149475 4323037.88304246962070465, 743435.32694418600294739 4323038.33095624297857285, 743438.0177201833575964 4323040.15521068219095469, 743438.65564389142673463 4323040.55353504605591297, 743441.53018293355125934 4323042.20152148138731718, 743442.1540957058314234 4323042.53054672107100487, 743445.2573273346060887 4323044.02961476240307093, 743445.82988986931741238 4323044.28439098689705133, 743449.206433632876724 4323045.66181025002151728, 743449.70297656464390457 4323045.84915739018470049, 743453.39737201516982168 4323047.13215748593211174, 743453.80731578834820539 4323047.26469540316611528, 743457.86469246388878673 4323048.48061594553291798, 743458.18815731164067984 4323048.5716644711792469, 743462.62790517066605389 4323049.74113518465310335, 743462.88167098606936634 4323049.80443412996828556, 743467.62481158634182066 4323050.92203516885638237, 743467.83486802678089589 4323050.96915436070412397, 743472.77662332681939006 4323052.02180599886924028, 743472.95707020326517522 4323052.0585053451359272, 743477.9932321768719703 4323053.03468783851712942, 743478.1595492436317727 4323053.06547727715224028, 743483.18582983675878495 4323053.95181089639663696, 743483.34483698382973671 4323053.9785303957760334, 743488.25666817207820714 4323054.76324540004134178, 743488.41978519689291716 4323054.78792492114007473, 743493.11293893796391785 4323055.45850157830864191, 743493.29215561540331692 4323055.48245108686387539, 743497.66237387002911419 4323056.02644966263324022, 743497.87993975752033293 4323056.05111912079155445, 743501.8480039801215753 4323056.45704983733594418, 743502.14450823911465704 4323056.48292919714003801, 743505.7311078441562131 4323056.74226214177906513, 743506.12748992722481489 4323056.76302145421504974, 743509.37858383147977293 4323056.86866665724664927, 743509.89126317529007792 4323056.87217606138437986, 743512.85287028283346444 4323056.81651356723159552, 743513.48864642181433737 4323056.7843032805249095, 743516.20690563041716814 4323056.55963313020765781, 743516.95354843069799244 4323056.46954344492405653, 743519.47424865956418216 4323056.06872568652033806, 743520.29930846206843853 4323055.9016568586230278, 743522.66838861303403974 4323055.3171315286308527, 743523.51447653106879443 4323055.06831369362771511, 743525.77820551139302552 4323054.29262083116918802, 743526.55556390585843474 4323053.98945373762398958, 743528.75203096412587911 4323053.02541327010840178, 743529.33598382724449039 4323052.74623608589172363, 743531.47276959381997585 4323051.63833745382726192, 743531.86390763754025102 4323051.42433967068791389, 743533.94129306543618441 4323050.22684220783412457, 743534.15921622584573925 4323050.09752357099205256, 743536.17679228947963566 4323048.86535659339278936, 743536.22871064161881804 4323048.83342693094164133, 743538.12528025871142745 4323047.65922936890274286, 743539.79825758119113743 4323046.65657992660999298, 743541.17338551534339786 4323045.90217774361371994, 743542.17284643952734768 4323045.43871237710118294, 743542.72724149702116847 4323045.24881411623209715, 743542.73680309299379587 4323045.24700321070849895, 743542.8523896133992821 4323045.29030346591025591, 743543.53288216260261834 4323045.67382799927145243, 743544.68023314350284636 4323046.52113630436360836, 743546.25508509774226695 4323047.92961722798645496, 743548.21906957216560841 4323049.94139028899371624, 743550.47641692764591426 4323052.46384674962610006, 743552.92071678675711155 4323055.34922854229807854, 743555.47295841772574931 4323058.46308741252869368, 743558.07164096191991121 4323061.68356493022292852, 743560.64087348629254848 4323064.86827293317764997, 743560.6921635273611173 4323064.93132210243493319, 743563.16018506116233766 4323067.94019239116460085, 743563.2776050865650177 4323068.0807005362585187, 743565.59504470252431929 4323070.8027745308354497, 743565.80370453186333179 4323071.04017138294875622, 743567.93486144521739334 4323073.38883018400520086, 743568.22453079232946038 4323073.69484610576182604, 743570.18314487102907151 4323075.67858959455043077, 743570.56386336870491505 4323076.04435468465089798, 743572.37605463690124452 4323077.69563242793083191, 743572.87132174428552389 4323078.11825669836252928, 743574.56284022761974484 4323079.46900827344506979, 743575.19204525393433869 4323079.93237190134823322, 743576.78925097524188459 4323081.01500688679516315, 743577.55381328030489385 4323081.48463029507547617, 743579.08254627254791558 4323082.33159824833273888, 743579.95724558073561639 4323082.76189203280955553, 743581.44379585748538375 4323083.4051925390958786, 743582.35839280521031469 4323083.74896734021604061, 743583.82883039524313062 4323084.22106997482478619, 743584.72284597530961037 4323084.4630560502409935, 743586.20146084378939122 4323084.79062045738101006, 743587.11960445297881961 4323084.94955753162503242, 743588.62439632369205356 4323085.13833361770957708, 743589.54805829294491559 4323085.2109417486935854, 743591.09484683035407215 4323085.26062950119376183, 743591.97287828917615116 4323085.25026870053261518, 743593.57794315041974187 4323085.16072810534387827, 743594.36791529867332429 4323085.08511819411069155, 743596.04756615159567446 4323084.85678922757506371, 743596.73254975420422852 4323084.7392999455332756, 743598.50307625206187367 4323084.37186259031295776, 743599.07469189376570284 4323084.23560366220772266, 743600.95189371099695563 4323083.72938789241015911, 743601.41920149908401072 4323083.59106909669935703, 743603.41939828731119633 4323082.94562490843236446, 743603.79508814518339932 4323082.8160960990935564, 743605.92399983759969473 4323082.03443344868719578, 743606.24542092345654964 4323081.91009463276714087, 743608.4659985511098057 4323081.00677337776869535, 743608.76089017186313868 4323080.88126460555940866, 743611.02638502500485629 4323079.87389457318931818, 743611.31667657906655222 4323079.739205920137465, 743613.579549954039976 4323078.6449769539758563, 743613.88101096800528467 4323078.49287849944084883, 743616.09432414954062551 4323077.32883043866604567, 743616.42115414293948561 4323077.14908229652792215, 743618.53754843503702432 4323075.93315497227013111, 743618.91124663944356143 4323075.70745734591037035, 743620.88347333308774978 4323074.45680059492588043, 743621.3279687660979107 4323074.15794378612190485, 743623.10902915080077946 4323072.88988745398819447, 743623.65451038128230721 4323072.47257199138402939, 743625.20871537062339485 4323071.19658599048852921, 743625.84743192384485155 4323070.62464232556521893, 743627.18546090647578239 4323069.31892691552639008, 743627.8657137353438884 4323068.58516519237309694, 743629.00988572114147246 4323067.21989071648567915, 743629.65762693842407316 4323066.35625062044709921, 743630.63042093440890312 4323064.90179741941392422, 743631.17832319578155875 4323063.97903815191239119, 743632.00194820272736251 4323062.40520657133311033, 743632.41192399256397039 4323061.51897699944674969, 743633.10883902362547815 4323059.7963973842561245, 743633.38610953488387167 4323059.02054659742861986, 743633.97853359498549253 4323057.11907928436994553, 743634.15066900872625411 4323056.49645673669874668, 743634.6612410998204723 4323054.38650206476449966, 743634.764120559906587 4323053.91101778764277697, 743635.21133989852387458 4323051.57003601733595133, 743635.27692175714764744 4323051.18638065457344055, 743635.66425838356371969 4323048.62074170168489218, 743635.70737182558514178 4323048.30016558617353439, 743636.0351359702181071 4323045.52333929110318422, 743636.06368053203914315 4323045.2489926228299737, 743636.33180244266986847 4323042.27484881039708853, 743636.35046783380676061 4323042.03586172126233578, 743636.55896775342989713 4323038.87825022358447313, 743636.57068377581890672 4323038.66680280212312937, 743636.71973193169105798 4323035.33890346437692642, 743636.72645841806661338 4323035.14767580013722181, 743636.81575506250374019 4323031.66339843533933163, 743636.81871191936079413 4323031.48879057448357344, 743636.84830729500390589 4323027.86188502982258797, 743636.84840466093737632 4323027.71274685580283403, 743636.82306899642571807 4323023.9618128929287195 +2, 743636.82217756286263466 4323023.87946390733122826, 743636.76468107861001045 4323020.04400101490318775, 743636.76450088049750775 4323020.03260115813463926, 743636.70246430742554367 4323016.18666839879006147, 743636.66331846988759935 4323012.4096547719091177, 743636.67247382970526814 4323008.7577195605263114, 743636.75342085282318294 4323005.28492206893861294, 743636.92540023301262408 4323002.0534615172073245, 743637.2030627429485321 4322999.1245671296492219, 743637.59539824246894568 4322996.50087887234985828, 743638.10100551613140851 4322994.11177761107683182, 743638.71860346710309386 4322991.89366411976516247, 743639.45164099533576518 4322989.78830911684781313, 743640.30941692984197289 4322987.74016326386481524, 743641.30700001062359661 4322985.69588720425963402, 743642.45878914918284863 4322983.61084147077053785, 743643.77568352967500687 4322981.45149645395576954, 743645.24886330589652061 4322979.21633218135684729, 743646.84769988304469734 4322976.94857816398143768, 743648.54414453450590372 4322974.68717395234853029, 743650.31207840144634247 4322972.46603916026651859, 743652.12530261185020208 4322970.31774341501295567, 743653.95565832848660648 4322968.27513635065406561, 743655.77359675266779959 4322966.3712575938552618, 743657.54895906406454742 4322964.63705680053681135, 743659.26254593790508807 4322963.08843380399048328, 743660.91716711944900453 4322961.71397873386740685, 743662.51497232646215707 4322960.50031175836920738, 743664.05511139798909426 4322959.43743300158530474, 743665.53857412002980709 4322958.51440259162336588, 743666.96796023286879063 4322957.7193506732583046, 743668.3466394601855427 4322957.04091739188879728, 743669.67438164632767439 4322956.4697428485378623, 743670.94049694971181452 4322956.00228711031377316, 743672.14921515865717083 4322955.63167024217545986, 743673.32643552636727691 4322955.34598237928003073, 743674.50599715462885797 4322955.13457359839230776, 743675.72480916883796453 4322954.99147393554449081, 743677.01865078916307539 4322954.91485337726771832, 743678.41598146455362439 4322954.90726185031235218, 743679.93070098070893437 4322954.9729192927479744, 743681.52788011461962014 4322955.11459570843726397, 743683.16808988177217543 4322955.34315101150423288, 743684.86260036763269454 4322955.67666496615856886, 743686.63728142553009093 4322956.13763727340847254, 743688.51475303596816957 4322956.75168758351355791, 743690.51532529364340007 4322957.54817553237080574, 743692.65781837678514421 4322958.55946068745106459, 743694.96227250783704221 4322959.82211257982999086, 743697.46150777768343687 4322961.38003064878284931, 743700.15623427776154131 4322963.23932481650263071, 743703.01321227417793125 4322965.3755654152482748, 743705.99906192789785564 4322967.75866285897791386, 743709.08618330908939242 4322970.35961753968149424, 743712.2503064104821533 4322973.14956983271986246, 743715.46971119730733335 4322976.10061010904610157, 743718.72721757972612977 4322979.18755869474261999, 743722.02086533210240304 4322982.39497578889131546, 743725.36135379411280155 4322985.69836166966706514, 743728.73288273275829852 4322989.04022600129246712, 743728.77028264082036912 4322989.07710541598498821, 743732.15192395797930658 4322992.39395290240645409, 743732.23670372331980616 4322992.47613159753382206, 743735.62597364315297455 4322995.72283993661403656, 743735.76271319424267858 4322995.8513878807425499, 743739.16175095445942134 4322998.98726756405085325, 743739.35862016084138304 4322999.16412470769137144, 743742.76943499292246997 4323002.14771623350679874, 743743.03573366487398744 4323002.37259254604578018, 743746.46002481668256223 4323005.16343640070408583, 743746.79978273645974696 4323005.42837196867913008, 743750.23945958667900413 4323007.99332854989916086, 743750.61520682252012193 4323008.26027397718280554, 743754.070749327307567 4323010.5972733162343502, 743754.46933591738343239 4323010.85328879207372665, 743757.94024418981280178 4323012.96830080356448889, 743758.36163009260781109 4323013.21121636871248484, 743761.84835422551259398 4323015.10980098880827427, 743762.28810945572331548 4323015.33535669930279255, 743765.79026956611778587 4323017.02362385205924511, 743766.24685411772225052 4323017.22979974094778299, 743769.76481029484421015 4323018.71340935584157705, 743770.23290422232821584 4323018.89709548559039831, 743773.7663065834203735 4323020.18209748528897762, 743774.24313991598319262 4323020.34204386919736862, 743777.79233855428174138 4323021.43411818239837885, 743778.28389119822531939 4323021.57173479348421097, 743781.84981612558476627 4323022.47259139083325863, 743782.39999733993317932 4323022.59519797936081886, 743785.989418153767474 4323023.28951702918857336, 743786.60632762941531837 4323023.38896367326378822, 743790.22705382620915771 4323023.85708538163453341, 743790.90139153436757624 4323023.92114225681871176, 743794.56123262282926589 4323024.14402682892978191, 743795.28306857170537114 4323024.16186410095542669, 743798.98953405383508652 4323024.11961175315082073, 743799.74098844768013805 4323024.08273959718644619, 743803.50201782467775047 4323023.75601053051650524, 743804.26418096362613142 4323023.66018905304372311, 743808.08770373580045998 4323023.0294434791430831, 743808.8395460566971451 4323022.87557274848222733, 743812.7332517325412482 4323021.92166087124496698, 743813.44883389410097152 4323021.71785087417811155, 743817.41290223808027804 4323020.42756284773349762, 743818.05061545746866614 4323020.19577345717698336, 743822.05563732539303601 4323018.58426920045167208, 743822.62719152274075896 4323018.33329027704894543, 743826.6361080197384581 4323016.42149965465068817, 743827.15678294375538826 4323016.15422110445797443, 743831.13274519180413336 4323013.96392398048192263, 743831.61750051751732826 4323013.67882576864212751, 743835.52301964000798762 4323011.23151200823485851, 743835.98302508355118334 4323010.92523413710296154, 743839.78124218666926026 4323008.24197361059486866, 743840.22436751809436828 4323007.9101661117747426, 743843.87841372087132186 4323005.01278867572546005, 743844.31330862466711551 4323004.64736161194741726, 743847.78590504196472466 4323001.5569871449843049, 743848.21283944265451282 4323001.1539805643260479, 743851.47443698393180966 4322997.88880894426256418, 743851.87798140023369342 4322997.4603027543053031, 743854.92882011504843831 4322994.02351394295692444, 743855.29956493293866515 4322993.58074803650379181, 743858.14777466410305351 4322989.97250200528651476, 743858.48308005591388792 4322989.52229631505906582, 743861.13634065247606486 4322985.74279303103685379, 743861.43507676047738642 4322985.2917774748057127, 743863.90095806715544313 4322981.34082692302763462, 743864.16257503081578761 4322980.89654141291975975, 743866.4491468844935298 4322976.77396355755627155, 743866.67511477821972221 4322976.34206801746040583, 743868.79010702762752771 4322972.04792284406721592, 743868.98250589915551245 4322971.63366720732301474, 743870.93373839335981756 4322967.16838467307388783, 743871.09801808884367347 4322966.7691789548844099, 743872.89093067497014999 4322962.1301290774717927, 743873.03599073144141585 4322961.72963343746960163, 743874.66716331336647272 4322956.90772634651511908, 743874.79436366562731564 4322956.50371080916374922, 743876.25792614521924406 4322951.48661667015403509, 743876.3663968862965703 4322951.08368118852376938, 743877.65631918737199157 4322945.8602901566773653, 743877.74603038874920458 4322945.46232468169182539, 743878.85651241452433169 4322940.0207369327545166, 743878.92793413822073489 4322939.63161141518503428, 743879.85335579211823642 4322933.96004710532724857, 743879.90766804839950055 4322933.58184151351451874, 743880.64185924956109375 4322927.66876081563532352, 743880.68031206936575472 4322927.30472510401159525, 743881.217662722337991 4322921.13841818552464247, 743881.24150624161120504 4322920.79753224365413189, 743881.58019646443426609 4322914.38280904106795788, 743881.59133110602851957 4322914.09124254994094372, 743881.7467318472918123 4322907.49928215891122818, 743881.74949741910677403 4322907.25100516527891159, 743881.74107983708381653 4322900.56944644544273615, 743881.73848608718253672 4322900.35380907543003559, 743881.58590133057441562 4322893.6700509013608098, 743881.57965806336142123 4322893.47766326367855072, 743881.30189730715937912 4322886.87997449282556772, 743881.29305441631004214 4322886.70598664321005344, 743880.91037879872601479 4322880.28162614442408085, 743880.89927613385953009 4322880.11794817261397839, 743880.43055681954137981 4322873.95450481493026018, 743880.41726429667323828 4322873.79632678534835577, 743879.88213244779035449 4322867.98182943183928728, 743879.86544985370710492 4322867.81576150935143232, 743879.27772640017792583 4322862.41854927316308022, 743879.25260319747030735 4322862.20852191932499409, 743878.60267822747118771 4322857.22250491008162498, 743878.56364423234481364 4322856.95190834067761898, 743877.83561760885640979 4322852.35174692701548338, 743877.7758328098570928 4322852.01205127406865358, 743876.95405439648311585 4322847.77229581587016582, 743876.86418884783051908 4322847.35625120345503092, 743875.9332884990144521 4322843.45127207599580288, 743875.80062233784701675 4322842.95224862638860941, 743874.74479993048589677 4322839.35726618487387896, 743874.55487346986774355 4322838.77679393626749516, 743873.35872886213473976 4322835.46653854381293058, 743873.09647255984600633 4322834.81360743753612041, 743871.74433560855686665 4322831.76224946510046721, 743871.40004007634706795 4322831.06064925156533718, 743869.88000064238440245 4322828.24684900790452957, 743869.45428648334927857 4322827.53166925068944693, 743867.76824443484656513 4322824.95004678796976805, 743867.26248203532304615 4322824.24453721288591623, 743865.41689720097929239 4322821.89276253897696733, 743864.83013681857846677 4322821.21063297521322966, 743862.83006906555965543 4322819.08676609303802252, 743862.17170088412240148 4322818.44893624912947416, 743860.02389004093129188 4322816.5510171614587307, 743859.30224412679672241 4322815.97055685427039862, 743857.01179006439633667 4322814.29681556019932032, 743856.24516632023733109 4322813.78897453192621469, 743853.81818887928966433 4322812.33722103387117386, 743853.0232371041784063 4322811.90919913910329342, 743850.46576613176148385 4322810.67771344073116779, 743849.67023589427117258 4322810.3362404964864254, 743846.99156114598736167 4322809.32137260492891073, 743846.23992162919603288 4322809.07017840072512627, 743843.4639624753035605 4322808.26325832679867744, 743842.76837318099569529 4322808.08786300010979176, 743839.92295888089574873 4322807.47801078017801046, 743839.27693964471109211 4322807.3615845488384366, 743836.38971946632955223 4322806.93857020977884531, 743835.78704019240103662 4322806.86886325012892485, 743832.88548340881243348 4322806.62222681287676096, 743832.31800410489086062 4322806.59020926710218191, 743829.43011997581925243 4322806.50947075430303812, 743828.88872070889919996 4322806.50899272970855236, 743826.04179850639775395 4322806.58359217178076506, 743825.51510944555047899 4322806.61130375228822231, 743822.73678844410460442 4322806.83110117167234421, 743822.18795036850497127 4322806.88980244752019644, 743819.49807014339603484 4322807.25283779110759497, 743818.80834590410813689 4322807.37062886543571949, 743816.19414732116274536 4322807.91183175705373287, 743815.36751739424653351 4322808.12007221952080727, 743812.80764163401909173 4322808.882342210970819, 743811.8947654040530324 4322809.20302161015570164, 743809.36877364804968238 4322810.23017824068665504, 743808.443199647590518 4322810.66289631463587284, 743805.93003307958133519 4322811.99833912402391434, 743805.06227945629507303 4322812.51733593083918095, 743802.54092925053555518 4322814.2040344662964344, 743801.77726437582168728 4322814.76919033098965883, 743799.2271217197412625 4322816.85102413315325975, 743798.59073434211313725 4322817.4173895176500082, 743795.99061042512767017 4322819.93792812246829271, 743795.50001916964538395 4322820.44841365981847048, 743792.83856446284335107 4322823.42165694199502468, 743792.52182730857748538 4322823.79338353965431452, 743789.82521953142713755 4322827.11934262234717607, 743789.62955781514756382 4322827.36865028087049723, 743786.93375396728515625 4322830.91787661425769329, 743786.82056889648083597 4322831.06985516473650932, 743784.16089599067345262 4322834.7128202049061656, 743784.11161817191168666 4322834.78090955037623644, 743781.52970296295825392 4322838.38052482437342405, 743779.09701087488792837 4322841.7578722657635808, 743776.89583693689201027 4322844.72411389648914337, 743775.0086364836897701 4322847.10766151361167431, 743773.50574623001739383 4322848.80188618879765272, 743772.73558094911277294 4322849.5416664956137538, 743772.51118577574379742 4322849.35699297301471233, 743772.10076666879467666 4322848.94606948457658291, 743771.71796602755784988 4322848.47929657716304064, 743771.3801437554648146 4322847.97069402225315571, 743771.08818971342407167 4322847.41348189953714609, 743770.81447299802675843 4322846.72540131211280823, 743770.54675244656391442 4322845.82680327817797661, 743770.30457789299543947 4322844.73017758317291737, 743770.10274969809688628 4322843.47278371080756187, 743769.94551843160297722 4322842.09156119264662266, 743769.83054475660901517 4322840.62141961138695478, 743769.74992934335023165 4322839.09142864402383566, 743769.69277292804326862 4322837.53118795715272427, 743769.64732646802440286 4322835.98144710157066584, 743769.60646067757625133 4322834.47486569825559855, 743769.60575024900026619 4322834.44981600902974606, 743769.56299562309868634 4322833.007083835080266, 743769.56029426236636937 4322832.92686482798308134, 743769.50858104904182255 4322831.55408182553946972, 743769.5021686521358788 4322831.41111359931528568, 743769.43414691078942269 4322830.10326986759901047, 743769.42086343129631132 4322829.89129250962287188, 743769.32935321284458041 4322828.6434481218457222, 743769.303708580089733 4322828.35220178589224815, 743769.18112996022682637 4322827.15982683002948761, 743769.13608431548345834 4322826.78960152808576822, 743768.97548734303563833 4322825.64783609379082918, 743768.89911067113280296 4322825.18412205204367638, 743768.6920654313871637 4322824.08830622304230928, 743768.56361767451744527 4322823.50466383900493383, 743768.29938437801320106 4322822.45456765871495008, 743768.09586605778895319 4322821.75462696887552738, 743767.76363491476513445 4322820.75013047456741333, 743767.45718673430383205 4322819.94243147969245911, 743767.04512797668576241 4322818.98345472011715174, 743766.61550098611041903 4322818.10474704392254353, 743766.11214484740048647 4322817.19137005601078272, 743765.55649009463377297 4322816.29780301731079817, 743764.95107677881605923 4322815.42965584993362427, 743764.27372493303846568 4322814.56395891495049, 743763.55405469122342765 4322813.74164160154759884, 743762.79870600847061723 4322812.96739382855594158, 743761.9539290489628911 4322812.19036641344428062, 743761.15365322341676801 4322811.52761744055896997, 743760.17531977989710867 4322810.79966991487890482, 743759.34243646869435906 4322810.24251976888626814, 743758.23588672559708357 4322809.5800519036129117, 743757.34920598100870848 4322809.10802090726792812, 743756.12204015604220331 4322808.53186242748051882, 743755.18003204418346286 4322808.14679056871682405, 743753.84070032695308328 4322807.6773211881518364, 743752.84444493416231126 4322807.38521838840097189, 743751.40104751719627529 4322807.04226783663034439, 743750.35117497411556542 4322806.85133399162441492, 743748.81183205964043736 4322806.65554198157042265, 743747.72446224943269044 4322806.57714689616113901, 743746.09735403012018651 4322806.54877315275371075, 743744.99378666479606181 4322806.59051665011793375, 743743.28685334604233503 4322806.74982089549303055, 743742.21969731082208455 4322806.9078628309071064, 743740.44148899253923446 4322807.27016484644263983, 743739.52783120924141258 4322807.50165532156825066, 743737.68778760696295649 4322808.06135513912886381, 743736.92675739619880915 4322808.32679464295506477, 743735.03483812732156366 4322809.07349234540015459, 743734.39895563363097608 4322809.35031125694513321, 743732.46474171278532594 4322810.27340375166386366, 743731.92821778170764446 4322810.54964106343686581, 743729.96129803685471416 4322811.63861026894301176, 743729.50303236034233123 4322811.90848755650222301, 743727.51341582706663758 4322813.15262489207088947, 743727.11657872225623578 4322813.41409220080822706, 743725.11395501217339188 4322814.80292778089642525, 743724.76612672570627183 4322815.05538513790816069, 743722.76021544833201915 4322816.57819908298552036, 743722.46243581036105752 4322816.8133065877482295, 743720.46293648891150951 4322818.45445907209068537, 743720.24978411244228482 4322818.63443714193999767, 743718.26657588873058558 4322820.3570186048746109, 743718.13420071406289935 4322820.47406734433025122, 743716.17712263274006546 4322822.23557829763740301, 743716.11617488064803183 4322822.29088769480586052, 743714.19867585087195039 4322824.04556867387145758, 743712.3687535198405385 4322825.71656055934727192, 743710.67711545876227319 4322827.22632423974573612, 743709.1575700034154579 4322828.52043033298105001, 743708.86342082684859633 4322828.75187179259955883, 743708.90090758528094739 4322826.9457698967307806, 743709.03647041821386665 4322823.86515737231820822, 743709.23064787569455802 4322820.54930764809250832, 743709.46052234654780477 4322817.10625943168997765, 743709.70108628924936056 4322813.64592141658067703, 743709.70275582326576114 4322813.62148171104490757, 743709.92797188390977681 4322810.26299246586859226, 743709.93324029492214322 4322810.1791834831237793, 743710.11799085675738752 4322807.02798175904899836, 743710.12586795876268297 4322806.87297364510595798, 743710.24947475350927562 4322804.00288855843245983, 743710.25619100732728839 4322803.79845104925334454, 743710.314614167669788 4322801.21212257724255323, 743710.31711962819099426 4322800.9576856829226017, 743710.31048887851648033 4322798.63959402404725552, 743710.30454340460710227 4322798.32223790604621172, 743710.23303846199996769 4322796.25665324088186026, 743710.21120187127962708 4322795.85723814833909273, 743710.07457248098216951 4322794.02932066470384598, 743710.02438468590844423 4322793.52807685360312462, 743709.82258056674618274 4322791.92189673706889153, 743709.72363158490043133 4322791.29556452203541994, 743709.45676246471703053 4322789.8959219679236412, 743709.27672254969365895 4322789.12077167723327875, 743708.94473815220408142 4322787.91185687854886055, 743708.6206676431465894 4322786.93262925837188959, 743708.22026785335037857 4322785.90396234579384327, 743707.55751734529621899 4322784.52423006389290094, 743707.0706326577346772 4322783.68250097800046206, 743705.76100863283500075 4322781.90513439103960991, 743705.16676968312822282 4322781.26165302377194166, 743702.96824400662444532 4322779.472967728972435, 743702.24578142771497369 4322779.03913396131247282, 743699.46693926397711039 4322777.89691151864826679, 743698.59445371606852859 4322777.6841452457010746, 743696.03512212936766446 4322777.40125201176851988, 743694.99211424274835736 4322777.42109311744570732, 743693.09578766324557364 4322777.63939289376139641, 743691.86052808817476034 4322777.9029412642121315, 743690.57516135694459081 4322778.26847845502197742, 743689.12690072902478278 4322778.78721397276967764, 743688.29538409051019698 4322779.12794087640941143, 743686.62563257897272706 4322779.9014935651794076, 743686.14640677312854677 4322780.13927127420902252, 743684.29758263891562819 4322781.11911166273057461, 743684.02214106102474034 4322781.27069015987217426, 743682.04973208741284907 4322782.39683891460299492, 743681.90015674417372793 4322782.48395803943276405, 743679.85945072001777589 4322783.69641582295298576, 743679.8038724655052647 4322783.72968549001961946, 743677.76329675398301333 4322784.96001304499804974, 743675.82505767489783466 4322786.12048132531344891, 743674.09444149618502706 4322787.12408125307410955, 743672.67513469851110131 4322787.89410364348441362, 743671.96537500771228224 4322788.23500218149274588, 743671.90898598218336701 4322788.19419095106422901, 743671.11017156450543553 4322787.56577967014163733, 743670.18677736853715032 4322786.80268020927906036, 743669.17660340864676982 4322785.95035194512456656, 743669.15783352148719132 4322785.93455216195434332, 743668.12645976583007723 4322785.06866409536451101, 743668.00155055243521929 4322784.9655055170878768, 743666.99972709757275879 4322784.15172677487134933, 743666.73931892425753176 4322783.94725961983203888, 743665.77814611385110766 4322783.21795978769659996, 743665.31695991812739521 4322782.88821442238986492, 743664.39710818917956203 4322782.26914319489151239, 743663.67486544675193727 4322781.82631954923272133, 743662.7561756003415212 4322781.31528699211776257, 743661.80769720557145774 4322780.85146390087902546, 743660.83841016073711216 4322780.43936020042747259, 743659.80174517957493663 4322780.06462613120675087, 743658.73078185273334384 4322779.74303144961595535, 743657.78275748970918357 4322779.50815555080771446, 743656.55889878375455737 4322779.26769007369875908, 743655.8000725187594071 4322779.14866251312196255, 743654.3721193487290293 4322778.98056641314178705, 743653.82385991862975061 4322778.93127772398293018, 743652.14024320151656866 4322778.82655117847025394, 743651.77237059304025024 4322778.81046185083687305, 743649.78223123215138912 4322778.76010503061115742, 743649.55942582571879029 4322778.75695535447448492, 743647.23434421897400171 4322778.74994843825697899, 743647.14335611846763641 4322778.75008855294436216, 743644.54881053627468646 4322778.76587170083075762, 743641.80936797091271728 4322778.78126504085958004, 743639.04685549682471901 4322778.77453867997974157, 743636.35409082029946148 4322778.72560274694114923, 743633.8385614100843668 4322778.61791731137782335, 743631.63151436462067068 4322778.44227230735123158, 743629.87884676503017545 4322778.20593747030943632, 743628.62959805654827505 4322777.93539239931851625, 743627.79520077002234757 4322777.66921674273908138, 743627.28998736815992743 4322777.44580013584345579, 743627.02333015413023531 4322777.28842241410166025, 743626.89017113007139415 4322777.18627384025603533, 743626.79343148379120976 4322777.09200512338429689, 743626.66229142190422863 4322776.93336724024266005, 743626.47957053687423468 4322776.66728074569255114, 743626.32327907800208777 4322776.39985422883182764, 743626.25302795111201704 4322776.25294612813740969, 743626.23847754893358797 4322776.21296663582324982, 743626.23510738043114543 4322776.19938680902123451, 743626.22342611942440271 4322776.11421786900609732, 743626.21510201238561422 4322775.87165085691958666, 743626.24193319701589644 4322775.40388656873255968, 743626.34055842028465122 4322774.68325529433786869, 743626.53659755387343466 4322773.73285671882331371, 743626.84443114825990051 4322772.60075022373348475, 743627.27885933464858681 4322771.31178549397736788, 743627.85578199976589531 4322769.87861235067248344, 743628.59010905551258475 4322768.31358062662184238, 743629.49760035087820143 4322766.62685016356408596, 743630.59353572293184698 4322764.82744084298610687, 743631.90240461088251323 4322762.91215266287326813, 743633.47456511796917766 4322760.83327614795416594, 743635.31011674460023642 4322758.56260163616389036, 743637.3515610839240253 4322756.12229893822222948, 743639.50536104454658926 4322753.56669749692082405, 743639.55935877934098244 4322753.50207821931689978, 743641.72497746476437896 4322750.88809746876358986, 743641.85516191611532122 4322750.72761926986277103, 743643.96218113834038377 4322748.07463906705379486, 743644.16581220598891377 4322747.8092420594766736, 743646.15590329514816403 4322745.12372240424156189, 743646.43302057194523513 4322744.73032686486840248, 743648.24744485784322023 4322742.01819775253534317, 743648.57297887955792248 4322741.49769371282309294, 743650.16902731428854167 4322738.76249516848474741, 743650.45690196822397411 4322738.23315128032118082, 743651.85404403624124825 4322735.46865334734320641, 743652.08172078058123589 4322734.98663895949721336, 743653.31516559806186706 4322732.1843117019161582, 743653.48519480251707137 4322731.77347651682794094, 743654.59065147198271006 4322728.92474999185651541, 743654.71061321906745434 4322728.59897383023053408, 743655.72293086024001241 4322725.69519809540361166, 743655.79965522128622979 4322725.46624080371111631, 743656.75441294198390096 4322722.49893592204898596, 743656.79525979654863477 4322722.36895746178925037, 743657.72774671041406691 4322719.32944349385797977, 743657.73816588881891221 4322719.29526389576494694, 743658.67649165051989257 4322716.1972906356677413, 743659.64727577590383589 4322713.04499798826873302, 743660.65754808182828128 4322709.83624598011374474, 743661.70395894499961287 4322706.5884043974801898, 743662.78096891031600535 4322703.32580294832587242, 743663.88273853692226112 4322700.07311133947223425, 743665.00349837017711252 4322696.85471928212791681, 743666.13725898100528866 4322693.69557647313922644, 743667.27766094484832138 4322690.62085261754691601, 743668.42176458181347698 4322687.64533753506839275, 743669.5684998951619491 4322684.76793123967945576, 743670.71655690914485604 4322681.98845374304801226, 743671.86424564535263926 4322679.30591504741460085, 743673.009466158808209 4322676.7212651576846838, 743674.15037848986685276 4322674.23449406772851944, 743675.2849026876501739 4322671.84598178043961525, 743676.41417862731032073 4322669.54982836358249187, 743677.54868553555570543 4322667.31482418440282345, 743678.68568291596602648 4322665.10943963844329119, 743678.69523238856345415 4322665.09087985567748547, 743679.80198124190792441 4322662.93312476295977831, 743679.8539183457614854 4322662.830415946431458, 743680.89688968297559768 4322660.7380401398986578, 743680.99243421386927366 4322660.5409924229606986, 743681.95288824045564979 4322658.50359605066478252, 743682.09060998226050287 4322658.19828959833830595, 743682.94968691095709801 4322656.20551281701773405, 743683.12338570086285472 4322655.77540784515440464, 743683.86185575614217669 4322653.81724080629646778, 743684.05752161319833249 4322653.24688751995563507, 743684.65653499914333224 4322651.31265037786215544, 743684.84541873959824443 4322650.61425866652280092, 743685.29020563885569572 4322648.69698152504861355, 743685.43235966050997376 4322647.95938036218285561, 743685.72407016495708376 4322646.06542314495891333, 743685.81089508847799152 4322645.31355223245918751, 743685.95471924904268235 4322643.45218482706695795, 743685.98443512385711074 4322642.68662415910512209, 743685.98531300842296332 4322640.8674364322796464, 743685.95545992557890713 4322640.09053598530590534, 743685.81859159539453685 4322638.32309782225638628, 743685.72622964321635664 4322637.53653758205473423, 743685.45691514504142106 4322635.82976885512471199, 743685.29780440614558756 4322635.0331188328564167, 743684.90130380657501519 4322633.39702942222356796, 743684.66933439683634788 4322632.58965963218361139, 743684.1505777578568086 4322631.03358941432088614, 743683.84223994868807495 4322630.22665972728282213, 743683.20752728660590947 4322628.75908858980983496, 743682.83236144692637026 4322627.98486859817057848, 743682.09248264541383833 4322626.61184645164757967, 743681.6588488252600655 4322625.88294598925858736, 743680.8263837150298059 4322624.60982275195419788, 743680.33488184702582657 4322623.92329185083508492, 743679.42143027449492365 4322622.7549174502491951, 743678.87234035390429199 4322622.11074611358344555, 743677.88985215884167701 4322621.05235045962035656, 743677.28200422320514917 4322620.45123867876827717, 743676.24294924200512469 4322619.50807169824838638, 743675.56786341965198517 4322618.9473095191642642, 743674.48389149596914649 4322618.12451113015413284, 743673.73479799367487431 4322617.60787851363420486, 743672.61810896545648575 4322616.91049863770604134, 743671.74571857461705804 4322616.42447581980377436, 743670.60242245381232351 4322615.86039434652775526, 743669.47723757522180676 4322615.38826172333210707, 743668.29011499835178256 4322614.97334848158061504, 743666.91487708198837936 4322614.60023499932140112, 743665.66044888971373439 4322614.35426978208124638, 743664.1743867372861132 4322614.17701405473053455, 743662.82974372443277389 4322614.11805667448788881, 743661.38427458261139691 4322614.15933820698410273, 743659.92617758107371628 4322614.30698845535516739, 743658.65703777014277875 4322614.5187076460570097, 743657.06204759911634028 4322614.89162532612681389, 743656.02239462034776807 4322615.19492306932806969, 743654.26756208541337401 4322615.8117979746311903, 743653.44976493355352432 4322616.14045509230345488, 743651.51159086253028363 4322617.02045702748000622, 743650.90673875855281949 4322617.32010420132428408, 743648.77215352864004672 4322618.46889310795813799, 743648.395655139349401 4322618.68214102368801832, 743646.09165737556759268 4322620.0538374250754714, 743645.87704416830092669 4322620.18529611267149448, 743643.44059204484801739 4322621.72019069362431765, 743643.33656538603827357 4322621.78663002327084541, 743640.80466709262691438 4322623.42565345577895641, 743640.78962757904082537 4322623.43540335632860661, 743638.23104026168584824 4322625.09821652341634035, 743635.72616073116660118 4322626.69905037339776754, 743633.33046665065921843 4322628.17095564864575863, 743631.09796583326533437 4322629.4538330128416419, 743629.05235723289661109 4322630.51641281228512526, 743627.17598144523799419 4322631.37164492718875408, 743625.45991889666765928 4322632.03318919241428375, 743623.89846997242420912 4322632.51623543351888657, 743622.48118521133437753 4322632.83867345098406076, 743621.18707540247123688 4322633.02072301879525185, 743619.98185158194974065 4322633.08049396332353354, 743618.81810493604280055 4322633.02906621620059013, 743617.62812682602088898 4322632.86388990934938192, 743616.37223794334568083 4322632.57700518891215324, 743615.05704810388851911 4322632.16587208118289709, 743613.70079698180779815 4322631.6337205208837986, 743612.3231143057346344 4322630.98807037901133299, 743610.94408985250629485 4322630.24032150581479073, 743609.58258347678929567 4322629.40432368777692318, 743608.25629509310238063 4322628.49616671539843082, 743606.96768477489240468 4322627.52300048992037773, 743605.70623278897255659 4322626.48742499854415655, 743604.46824935427866876 4322625.3974601412191987, 743603.24979472206905484 4322624.26279581338167191, 743602.04681916208937764 4322623.09384188707917929, 743600.85342298122122884 4322621.90108823962509632, 743599.66857650340534747 4322620.70158466417342424, 743599.65200655232183635 4322620.68485489394515753, 743598.49790007912088186 4322619.52196083031594753, 743598.41701034386642277 4322619.44138193689286709, 743597.31087416771333665 4322618.35198690183460712, 743597.1737846857868135 4322618.21951872110366821, 743596.10786906478460878 4322617.20903266407549381, 743595.91089996020309627 4322617.02725517656654119, 743594.87800510879606009 4322616.09934805519878864, 743594.60563661996275187 4322615.86339134257286787, 743593.59759276756085455 4322615.02142312843352556, 743593.23477522598113865 4322614.73239720333367586, 743592.2436925956280902 4322613.97978786006569862, 743591.77494645048864186 4322613.64468264766037464, 743590.79356525861658156 4322612.98496215883642435, 743590.20043110055848956 4322612.61564754042774439, 743589.22077157371677458 4322612.05217586271464825, 743588.49237004562746733 4322611.67215157020837069, 743587.50678240251727402 4322611.20841867104172707, 743586.61846443894319236 4322610.84149444103240967, 743585.62012894114013761 4322610.48426025360822678, 743584.4708269783295691 4322610.14911600295454264, 743583.45686403824947774 4322609.91828027460724115, 743582.02183008915744722 4322609.69964499585330486, 743580.99066014913842082 4322609.61847744788974524, 743579.33739473077002913 4322609.62542969360947609, 743578.28737823525443673 4322609.71698004845529795, 743576.56190957792568952 4322610.02150872722268105, 743575.49143696599639952 4322610.30904669407755136, 743573.87901091505773365 4322610.89452174678444862, 743572.78584265138488263 4322611.40140703786164522, 743571.42248461546842009 4322612.16844949964433908, 743570.30558112438302487 4322612.91753183305263519, 743569.2358580338768661 4322613.74509313330054283, 743568.09300977759994566 4322614.75991222634911537, 743567.32542919099796563 4322615.51948393788188696, 743566.15482638601679355 4322616.81023966055363417, 743565.70658509142231196 4322617.34036375302821398, 743564.50503707455936819 4322618.86579662095755339, 743564.26289778179489076 4322619.18625300657004118, 743563.02674367930740118 4322620.89235369209200144, 743562.91351885569747537 4322621.05187188740819693, 743561.6397777684032917 4322622.88425106089562178, 743561.62168860575184226 4322622.91036076378077269, 743560.33884816081263125 + 4322624.76839963253587484, 743559.08549558278173208 4322626.54040952119976282, 743557.8773293528938666 4322628.15901123266667128, 743556.71806870843283832 4322629.5853552483022213, 743555.5430260905995965 4322630.88125089276582003, 743554.27053522819187492 4322632.16142686735838652, 743552.88236736238468438 4322633.47479258570820093, 743551.39763243217021227 4322634.84033779427409172, 743551.36845351487863809 4322634.86727750487625599, 743549.86990929301828146 4322636.25654243398457766, 743549.70355554716661572 4322636.4143507145345211, 743548.26611015747766942 4322637.80960548669099808, 743547.96499182365369052 4322638.11469213478267193, 743546.61183530779089779 4322639.54576634243130684, 743546.19000250124372542 4322640.02129105664789677, 743544.94438491971231997 4322641.51876429188996553, 743544.46317603206261992 4322642.14615720976144075, 743543.34280741773545742 4322643.73305916134268045, 743542.93359704792965204 4322644.36142196785658598, 743541.93260742956772447 4322646.03230271209031343, 743541.60958444827701896 4322646.61463596392422915, 743540.71730383858084679 4322648.35765566676855087, 743540.46893823426216841 4322648.87947956472635269, 743539.67369666625745595 4322650.68279838562011719, 743539.48479870765004307 4322651.14165297709405422, 743538.77580619230866432 4322652.99314108118414879, 743538.63532602845225483 4322653.38412644248455763, 743538.0010925920214504 4322655.27167399879544973, 743537.89811047445982695 4322655.59637012984603643, 743537.32747613696847111 4322657.50796729605644941, 743537.25366226746700704 4322657.76801418606191874, 743536.73563704604748636 4322659.6916311290115118, 743536.68835125444456935 4322659.87406894098967314, 743536.20878524705767632 4322661.79861581977456808, 743536.1952365015167743 4322661.85366515535861254, 743535.73895915853790939 4322663.73003259766846895, 743535.29635933134704828 4322665.4819115586578846, 743534.85276678088121116 4322667.07838244177401066, 743534.39247183175757527 4322668.51945526339113712, 743533.90335486247204244 4322669.81203995645046234, 743533.37349643802735955 4322670.97410632017999887, 743532.77974776434712112 4322672.04676387272775173, 743532.06499154469929636 4322673.11537164077162743, 743531.19921905372757465 4322674.21675920952111483, 743530.20789908419828862 4322675.31271701212972403, 743529.13249995897058398 4322676.35728556476533413, 743528.01899001363199204 4322677.31032529380172491, 743526.92120746779255569 4322678.134686597622931, 743525.90226040268316865 4322678.79622980020940304, 743525.03860673424787819 4322679.26732514798641205, 743524.39347513078246266 4322679.54716256447136402, 743523.97397620673291385 4322679.67899150121957064, 743523.75172158051282167 4322679.72081128694117069, 743523.66678343759849668 4322679.72567134071141481, 743523.62814419122878462 4322679.72268143482506275, 743523.54009569552727044 4322679.70397177990525961, 743523.32598884904291481 4322679.62966298963874578, 743522.94092363025993109 4322679.44577578362077475, 743522.37714939180295914 4322679.1064707450568676, 743521.67400515603367239 4322678.6027179267257452, 743520.89208007557317615 4322677.95814695861190557, 743520.08064367598854005 4322677.20406738575547934, 743519.27958573517389596 4322676.375008724629879, 743518.52393619832582772 4322675.50923045817762613, 743517.8450951399281621 4322674.64810203202068806, 743517.26443275506608188 4322673.82763297017663717, 743516.7624991440679878 4322673.03078350983560085, 743516.2902242875425145 4322672.19837444741278887, 743515.8147481856867671 4322671.29176630545407534, 743515.31480107875540853 4322670.29927926417440176, 743515.30182089447043836 4322670.27360960096120834, 743514.79565382399596274 4322669.27593263238668442, 743514.66913220251444727 4322669.03475578874349594, 743514.16967633971944451 4322668.11338786594569683, 743513.89110364264342934 4322667.63194420374929905, 743513.37540961673948914 4322666.79528525564819574, 743512.87303703569341451 4322666.05632508639246225, 743512.31755548669025302 4322665.31298504211008549, 743511.6053553163073957 4322664.46267653442919254, 743510.98670654755551368 4322663.80222555343061686, 743510.6122578929644078 4322663.42771584168076515, 743510.03221572283655405 4322661.49694538302719593, 743491.13115869171451777 4322620.66522237379103899, 743491.18907090346328914 4322619.1800154410302639, 743491.46189791790675372 4322617.63505419995635748, 743491.87536627240478992 4322616.3317897729575634, 743492.42394345498178154 4322615.12166399136185646, 743493.12936697958502918 4322613.88954826910048723, 743494.01783454825635999 4322612.53628378827124834, 743494.9921089782146737 4322611.10654013231396675, 743495.16062094992958009 4322610.85092306137084961, 743496.03001873218454421 4322609.48716873489320278, 743496.27085668127983809 4322609.08926331996917725, 743496.9871297013014555 4322607.84122777264565229, 743497.23396647616755217 4322607.38401308748871088, 743497.81627403828315437 4322606.23497649934142828, 743498.05422017502132803 4322605.73112240433692932, 743498.52190158748999238 4322604.66479495447129011, 743498.73826762964017689 4322604.13004126958549023, 743499.10982221039012074 4322603.12968313414603472, 743499.2870293187443167 4322602.60916933137923479, 743499.58180637611076236 4322601.65838069096207619, 743499.7128254915587604 4322601.19691622070968151, 743499.94974434154573828 4322600.27925725094974041, 743500.03423633042257279 4322599.92555151414126158, 743500.23227627715095878 4322599.02426239475607872, 743500.29125994851347059 4322598.73556588590145111, 743500.46214041369967163 4322597.83157684002071619, 743500.54606950888410211 4322597.31340313702821732, 743500.67257033498026431 4322596.37732455134391785, 743500.74636521318461746 4322595.60858396347612143, 743500.80353634338825941 4322594.60804627742618322, 743500.81409006007015705 4322593.69887752085924149, 743500.77690144802909344 4322592.60154116433113813, 743500.70244665315840393 4322591.67640272527933121, 743500.54623824660666287 4322590.45033813267946243, 743500.4002662553684786 4322589.59943887591362, 743500.10013800219167024 4322588.21231648419052362, 743499.91365901986137033 4322587.48406576830893755, 743499.44508086587302387 4322585.90388600528240204, 743499.24680442037060857 4322585.30521370284259319, 743498.58479630760848522 4322583.49920701701194048, 743498.40555201459210366 4322583.04484289512038231, 743497.53846386855002493 4322580.99511952511966228, 743497.42810173099860549 4322580.74390279222279787, 743496.39897328079678118 4322578.48588223569095135, 743496.35078244563192129 4322578.38174359500408173, 743495.21613340685144067 4322575.96603514347225428, 743494.05420388095080853 4322573.49055747780948877, 743492.94155396742280573 4322571.0513392947614193, 743491.93294359149876982 4322568.70873977243900299, 743491.08553295221645385 4322566.54128784965723753, 743490.44590249611064792 4322564.62925246544182301, 743490.00789196917321533 4322562.9510938934981823, 743489.71481051598675549 4322561.39133364427834749, 743489.5297976341098547 4322559.87828266713768244, 743489.42887293500825763 4322558.36143160983920097, 743489.39226599293760955 4322556.79348109755665064, 743489.3997364726383239 4322555.13166168332099915, 743489.42492514802142978 4322553.38865324668586254, 743489.42585344274993986 4322553.29323443211615086, 743489.43443238153122365 4322551.54557607788592577, 743489.43207763112150133 4322551.27394944801926613, 743489.39395816496107727 4322549.56145073100924492, 743489.38247300533112139 4322549.25588453561067581, 743489.29400528850965202 4322547.58305539470165968, 743489.27294028317555785 4322547.2748992471024394, 743489.13650439877528697 4322545.6491195922717452, 743489.10546954337041825 4322545.33782349992543459, 743488.92398556461557746 4322543.76680323202162981, 743488.88116073037963361 4322543.44268731493502855, 743488.65670874994248152 4322541.93415633961558342, 743488.60052395146340132 4322541.59639060590416193, 743488.33586404717061669 4322540.15787882264703512, 743488.26279921003151685 4322539.79799339175224304, 743487.96047146839555353 4322538.43753069546073675, 743487.86586656933650374 4322538.04873565398156643, 743487.528381064417772 4322536.77336195670068264, 743487.39129559753928334 4322536.30234799534082413, 743487.01378247479442507 4322535.11462326813489199, 743486.76070530968718231 4322534.41073236428201199, 743486.3092248885659501 4322533.28873693570494652, 743485.89316761970985681 4322532.3868887247517705, 743485.32644028146751225 4322531.30340298544615507, 743484.75451525114476681 4322530.34447571355849504, 743484.03076137718744576 4322529.27198007050901651, 743483.37343973095994443 4322528.40390179771929979, 743482.45161969540640712 4322527.3151766499504447, 743481.80150091578252614 4322526.61769625172019005, 743480.64013509417418391 4322525.4851420046761632, 743480.06485790619626641 4322524.96605928242206573, 743478.62229668919462711 4322523.76246633194386959, 743478.15311995521187782 4322523.39418158773332834, 743476.38830370747018605 4322522.09201033413410187, 743476.03070670540910214 4322521.84005398862063885, 743473.92287557036615908 4322520.42283467017114162, 743473.68024783092550933 4322520.26474698632955551, 743471.29129095270764083 4322518.75707921106368303, 743471.12411261117085814 4322518.653860735706985, 743468.53716888686176389 4322517.09145394433289766, 743468.41800011927261949 4322517.0206049932166934, 743465.71532846556510776 4322515.43901860900223255, 743465.63168935407884419 4322515.39060933329164982, 743462.89667866262607276 4322513.82538279891014099, 743462.84026927233207971 4322513.79334327951073647, 743460.15523845120333135 4322512.27975603844970465, 743460.12217881239484996 4322512.26120631862431765, 743457.56995677459053695 4322510.83520779479295015, 743455.23648237367160618 4322509.53352741152048111, 743453.19514467264525592 4322508.38937464356422424, 743451.40225417190231383 4322507.37961984053254128, 743449.81144145177677274 4322506.48252334259450436, 743449.79783159890212119 4322506.47486345656216145, 743448.37175714096520096 4322505.67360552772879601, 743448.33268756873439997 4322505.65176585596054792, 743447.03009190107695758 4322504.92753678373992443, 743446.96462262631393969 4322504.89145733043551445, 743445.74234628514386714 4322504.22379743959754705, 743445.64886733959428966 4322504.17337820492684841, 743444.46242088463623077 4322503.54155781492590904, 743444.34721221856307238 4322503.48116873670369387, 743443.15325619745999575 4322502.86514816526323557, 743443.01650782208889723 4322502.79591922741383314, 743441.77946272806730121 4322502.18148869927972555, 743441.58857507386710495 4322502.08918012958019972, 743440.30557112535461783 4322501.48548954259604216, 743440.0414945111842826 4322501.36588141974061728, 743438.71778189158067107 4322500.78929055389016867, 743438.38253642036579549 4322500.65044277627021074, 743437.02293529361486435 4322500.11603143811225891, 743436.60596126783639193 4322499.96273396629840136, 743435.21645179390907288 4322499.48666195012629032, 743434.7090095542371273 4322499.32774467766284943, 743433.29399191855918616 4322498.92559178080409765, 743432.68617188662756234 4322498.77326457761228085, 743431.25156624894589186 4322498.46114059444516897, 743430.54138878255616874 4322498.33327324129641056, 743429.09207530505955219 4322498.12599796801805496, 743428.29438047716394067 4322498.04439017176628113, 743426.83469928416889161 4322497.9540034644305706, 743426.09722431749105453 4322497.93559478875249624, 743424.62544528429862112 4322497.95317675918340683, 743423.98587910423520952 4322497.98131735529750586, 743422.50026204704772681 4322498.09440815448760986, 743421.96648413967341185 4322498.14947826322168112, 743420.4646188827464357 4322498.34528805781155825, 743420.03602896595839411 4322498.41064787842333317, 743418.51537533709779382 4322498.67638682946562767, 743418.18773327418603003 4322498.73928653169423342, 743416.64603109180461615 4322499.06204480584710836, 743416.41067691787611693 4322499.11429450567811728, 743414.84589600353501737 4322499.48147225379943848, 743414.70082964852917939 4322499.51665203087031841, 743413.11022982164286077 4322499.91502942983061075, 743413.03897162713110447 4322499.93315931130200624, 743411.42310266359709203 4322500.35051651112735271, 743411.40297317411750555 4322500.35573647636920214, 743409.78657428873702884 4322500.77681362628936768, 743408.20537442900240421 4322501.18431089725345373, 743406.6863427902571857 4322501.56440841592848301, 743405.28580339858308434 4322501.89676027093082666, 743403.13040822208859026 4322499.94492386002093554, 743386.38622442819178104 4322489.05599450320005417, 743383.81058695260435343 4322487.86176323797553778, 743381.0031479561002925 4322487.43949269689619541, 743378.19020332931540906 4322487.82322210446000099, 743347.81253939436282963 4322496.49321897700428963, 743343.92675801389850676 4322498.62332810554653406, 743324.70220971154049039 4322515.65110340993851423, 743322.68667524470947683 4322518.1122855544090271, 743321.54612154688220471 4322521.08198004681617022, 743321.40883297100663185 4322523.98781642783433199, 743320.6233814163133502 4322524.50960848201066256, 743318.94951515737921 4322525.57616757042706013, 743317.31279689283110201 4322526.57305747643113136, 743315.73495593410916626 4322527.48689833283424377, 743314.21966217376757413 4322528.31610015779733658, 743312.7344966686796397 4322529.0821527261286974, 743311.24357057583983988 4322529.80810580402612686, 743309.71387493959628046 4322530.5142191844061017, 743308.11426074476912618 4322531.21955267433077097, 743306.41619889822322875 4322531.94155609607696533, 743304.59531020140275359 4322532.69694927893579006, 743302.63173532858490944 4322533.50054206233471632, 743300.52275449084118009 4322534.36075434368103743, 743298.29260707506909966 4322535.2718561626970768, 743298.2705176955787465 4322535.28090607933700085, 743295.95570277352817357 4322536.23304750025272369, 743295.92256370675750077 4322536.24674737639725208, 743293.53786092414520681 4322537.23764841072261333, 743293.49254220467992127 4322537.25660823844373226, 743291.05853106314316392 4322538.28204890713095665, 743290.99960273550823331 4322538.30710868164896965, 743288.53678273956757039 4322539.36330899968743324, 743288.46649474324658513 4322539.39376871753484011, 743285.99463540245778859 4322540.47633871715515852, 743285.908597870497033 4322540.51449836138635874, 743283.44858868117444217 4322541.61958805285394192, 743283.34414170100353658 4322541.66722760815173388, 743280.91324227163568139 4322542.79295699764043093, 743280.77803622023202479 4322542.85680639185011387, 743278.38144657202064991 4322544.01047537289559841, 743278.21049162617418915 4322544.09478456154465675, 743275.85106187732890248 4322545.28648300934582949, 743275.64724799885880202 4322545.39238197635859251, 743273.3271882776170969 4322546.63187976367771626, 743273.0916854829993099 4322546.76179846655577421, 743270.81386589701287448 4322548.05865547060966492, 743270.54893418308347464 4322548.21494388952851295, 743268.31554486555978656 4322549.57912997528910637, 743268.02487418695818633 4322549.76360807102173567, 743265.83860524673946202 4322551.20463312231004238, 743265.525525574805215 4322551.41963087301701307, 743263.38874714227858931 4322552.94750474952161312, 743263.06794806127436459 4322553.18673220556229353, 743260.9844101449707523 4322554.80634485185146332, 743260.69176042778417468 4322555.04280229937285185, 743258.67065257683862001 4322556.73962387908250093, 743258.40983202564530075 4322556.96640140190720558, 743256.46117368503473699 4322558.7207121504470706, 743256.22479250095784664 4322558.94052973017096519, 743254.35877311136573553 4322560.7328098751604557, 743254.14002150553278625 4322560.9494874645024538, 743252.3671405075583607 4322562.76049723476171494, 743252.16353854129556566 4322562.97471483424305916, 743250.49356538045685738 4322564.78463446255773306, 743250.29771333246026188 4322565.0032520005479455, 743248.74131744378246367 4322566.79272172227501869, 743248.55034542782232165 4322567.0189691474661231, 743247.11729626555461437 4322568.76864919345825911, 743246.92494456423446536 4322569.01105641853064299, 743245.62196172843687236 4322570.7063469560816884, 743245.42930033267475665 4322570.96558397077023983, 743244.24594415258616209 4322572.61271494068205357, 743244.05665292800404131 4322572.88564177788794041, 743242.97937387658748776 4322574.49537306372076273, 743242.79881259216926992 4322574.77513979934155941, 743241.8135111671872437 4322576.35910127870738506, 743241.64834948140196502 4322576.63436804991215467, 743240.74086616991553456 4322578.20337960310280323, 743240.59341391874477267 4322578.46745648793876171, 743239.75019920384511352 4322580.03274799510836601, 743239.62523605034220964 4322580.27243515662848949, 743238.83218041737563908 4322581.84498649928718805, 743238.73071619775146246 4322582.05207403562963009, 743237.97375014459248632 4322583.64330508932471275, 743237.89472480642143637 4322583.81352306064218283, 743237.16239869582932442 4322585.43050375301390886, 743237.10296230390667915 4322585.56435215286910534, 743236.39170605037361383 4322587.19806260522454977, 743236.34644886408932507 4322587.30366133619099855, 743235.65594223979860544 4322588.94085171259939671, 743235.62480420945212245 4322589.01552081946283579, 743234.95364702038932592 4322590.64349127840250731, 743234.93443825235590339 4322590.69043071754276752, 743234.28195028007030487 4322592.29618143197149038, 743234.27518071548547596 4322592.31288123223930597, 743233.64313157089054585 4322593.87641244661062956, 743233.03795057302340865 4322595.36692453920841217, 743232.46360720705706626 4322596.76003781612962484, 743231.91872135922312737 4322598.04748238157480955, 743231.40165302867535502 4322599.22755825705826283, 743230.91413205745629966 4322600.29326552990823984, 743230.45919823786243796 4322601.23641429375857115, 743230.18458965478930622 4322601.77075215056538582, 743230.10871168156154454 4322601.58303042594343424, 743229.84085390192922205 4322600.82835029810667038, 743229.56535386189352721 4322599.93692190386354923, 743229.28049084218218923 4322598.86618577688932419, 743228.98519409482832998 4322597.57267246767878532, 743228.68260298960376531 4322596.02435238100588322, 743228.37554691126570106 4322594.18996590189635754, 743228.06633534166030586 4322592.04296335764229298, 743227.75701773876789957 4322589.55496510956436396, 743227.44732377061154693 4322586.70714139193296432, 743227.13823465863242745 4322583.56937132775783539, 743226.83110214525368065 4322580.24198364280164242, 743226.52568796300329268 4322576.82232712674885988, 743226.22286392073146999 4322573.41358046513050795, 743226.22079355758614838 4322573.39064075611531734, 743225.92045148252509534 4322570.09594265930354595, 743225.91535062610637397 4322570.04162335209548473, 743225.61678216001018882 4322566.95286266133189201, 743225.60683063301257789 4322566.85495390836149454, 743225.30911739228758961 4322564.06231949105858803, 743225.29093496361747384 4322563.90377151407301426, 743224.99279818194918334 4322561.47546251211315393, 743224.96342491335235536 4322561.25625531375408173, 743224.66066432488150895 4322559.17242198064923286, 743224.61443018075078726 4322558.8838956831023097, 743224.30226514919195324 4322557.10278855171054602, 743224.22999008488841355 4322556.73180332873016596, 743223.90391996526159346 4322555.21168293431401253, 743223.79321408830583096 4322554.74944891501218081, 743223.44865822640713304 4322553.44813579320907593, 743223.28551185922697186 4322552.8965729707852006, 743222.9176396275870502 4322551.772807652130723, 743222.69712347921449691 4322551.16614560782909393, 743222.3013642291771248 4322550.17793862149119377, 743222.0383290994213894 4322549.57873654272407293, 743221.61022218037396669 4322548.68421842530369759, 743221.30498814559541643 4322548.09714625496417284, 743220.83171311451587826 4322547.25608752761036158, 743220.37095959333237261 4322546.51493752654641867, 743219.80931675306055695 4322545.69371867552399635, 743219.21330526564270258 4322544.90832942817360163, 743218.51261509023606777 4322544.07387094479054213, 743217.87974612845573574 4322543.38791050110012293, 743216.98833911947440356 4322542.50792287103831768, 743216.41983176534995437 4322541.98838023748248816, 743215.28701840632129461 4322541.03050393797457218, 743214.8277814983157441 4322540.66474920511245728, 743213.40219227992929518 4322539.59622472710907459, 743213.05337512271944433 4322539.34628838207572699, 743211.28392053814604878 4322538.1349962018430233, 743211.03036284761037678 4322537.96702868398278952, 743208.86602338263764977 4322536.58014928828924894, 743208.68288516881875694 4322536.46556100063025951, 743206.0922111258842051 4322534.88337469007819891, 743205.94915258861146867 4322534.79763597901910543, 743202.97939353447873145 4322533.05126229207962751, 743202.85518484935164452 4322532.97941338084638119, 743199.57324015954509377 4322531.11231167800724506, 743199.45563144376501441 4322531.04645268339663744, 743195.92820050055161119 4322529.10215231776237488, 743195.80914183822460473 4322529.0375733058899641, 743192.10349401482380927 4322527.06000363081693649, 743191.97679547825828195 4322526.99354465492069721, 743188.15964015759527683 4322525.02610502392053604, 743188.01793184038251638 4322524.95448613353073597, 743184.15610840392764658 4322523.04100590292364359, 743183.99207041342742741 4322522.96158714313060045, 743180.15245823725126684 4322521.14550565555691719, 743179.9620406508911401 4322521.05786704085767269, 743176.20140918111428618 4322519.37467377446591854, 743176.00334178295452148 4322519.28857514820992947, 743172.33755075302906334 4322517.74197002593427896, 743172.13814346131402999 4322517.66036134492605925, 743168.57264268200378865 4322516.24576442036777735, 743168.37233549042139202 4322516.16877568233758211, 743164.91266475571319461 4322514.88138700090348721, 743164.711397664854303 4322514.80892821121960878, 743161.36348677217029035 4322513.64402782544493675, 743161.16043979371897876 4322513.57580897863954306, 743157.92953854752704501 4322512.52864693570882082, 743157.72307170613203198 4322512.46418805886059999, 743154.61477991577703506 4322511.53055440448224545, 743154.40680318651720881 4322511.47052546963095665, 743151.42668064602185041 4322510.6452802624553442, 743151.21189411031082273 4322510.58837129548192024, 743148.36386066558770835 4322509.86743458081036806, 743148.13377447798848152 4322509.81207561865448952, 743145.41306015860754997 4322509.19148744828999043, 743145.16558437305502594 4322509.1383284805342555, 743142.56546924728900194 4322508.61410892568528652, 743142.29843392281327397 4322508.56403994560241699, 743139.81287805899046361 4322508.13282904122024775, 743139.52850318257696927 4322508.08770002983510494, 743137.15061665186658502 4322507.74536784552037716, 743136.84620230086147785 4322507.70629878435283899, 743134.5696351754013449 4322507.44958536885678768, 743134.2490713041042909 4322507.41865622811019421, 743132.0671736525837332 4322507.24355163611471653, 743131.73143026814796031 4322507.222282400354743, 743129.63796215387992561 4322507.12499669753015041, 743129.28582930995617062 4322507.11484734155237675, 743127.26603098190389574 4322507.09221058525145054, 743126.90877846500370651 4322507.09459107741713524, 743124.91786080342717469 4322507.14342337474226952, 743124.58108806447125971 4322507.15736368950456381, 743122.56568213005084544 4322507.27485515270382166, 743122.27433857484720647 4322507.29611531179398298, 743120.18155542016029358 4322507.4795860480517149, 743119.95238059770781547 4322507.50233609508723021, 743117.72886128642130643 4322507.74898622371256351, 743117.56587502546608448 4322507.76842621807008982, 743115.15846061590127647 4322508.07555584888905287, 743115.05734296049922705 4322508.0889758225530386, 743112.41348449804354459 4322508.4537150664255023, 743112.36387565638870001 4322508.46068505104631186, 743109.42998420866206288 4322508.88042402174323797, 743106.17682027607224882 4322509.34877283871173859, 743102.67687193769961596 4322509.84277168568223715, 743098.98212777741719037 4322510.34341073408722878, 743095.1520261790137738 4322510.82960015628486872, 743091.24773551651742309 4322511.28124012239277363, 743087.33413406659383327 4322511.67763080168515444, 743083.47812008764594793 4322511.99886234570294619, 743079.74723183247260749 4322512.22600490413606167, 743076.17049845994915813 4322512.34543860144913197, 743072.69394113379530609 4322512.35963348671793938, 743069.25497121433727443 4322512.27178961597383022, 743065.79381999257020652 4322512.084327039308846, 743062.25314867310225964 4322511.79793584067374468, 743058.57679843273945153 4322511.41300609428435564, 743054.71258036594372243 4322510.93005786649882793, 743050.61467545933555812 4322510.35064121522009373, 743046.27625394612550735 4322509.68012607004493475, 743041.79630399553570896 4322508.93156213033944368, 743037.28880346636287868 4322508.11808906123042107, 743032.86566026927903295 4322507.25321652740240097, 743028.64355225046165287 4322506.35268415790051222, 743024.74548716435674578 4322505.43427155166864395, 743021.30766260530799627 4322504.52234819438308477, 743018.48408602504059672 4322503.65413338411599398, 743016.37441609520465136 4322502.87176644057035446, 743014.93074442609213293 4322502.20972698647528887, 743014.07160351693164557 4322501.71324457600712776, 743013.67550655221566558 4322501.41912890411913395, 743013.56187696603592485 4322501.30903047416359186, 743013.52550690399948508 4322501.26273111812770367, 743013.41086594492662698 4322501.07406369317322969, 743013.16865233483258635 4322500.58601026888936758, 743012.8666563939768821 4322499.89635950326919556, 743012.58811944595072418 4322499.17740907613188028, 743012.34589168196544051 4322498.45514864008873701, 743012.13685290387365967 4322497.71462839003652334, 743011.95822282275184989 4322496.93643857445567846, 743011.81043116806540638 4322496.10560938529670238, 743011.69537756172940135 4322495.2032510582357645, 743011.61744185746647418 4322494.22628363035619259, 743011.58568479679524899 4322493.22700641956180334, 743011.609907386591658 4322492.2737485384568572, 743011.69330004532821476 4322491.39397963788360357, 743011.8347329773241654 4322490.59763958491384983, 743012.03173620020970702 4322489.8830584017559886, 743012.28497945051640272 4322489.23598628118634224, 743012.60538203141186386 4322488.63008353672921658, 743013.03077228926122189 4322488.01643073558807373, 743013.64569718739949167 4322487.32326867152005434, 743014.53373438818380237 4322486.51671763975173235, 743015.72921358770690858 4322485.62021731212735176, 743017.24305516527965665 4322484.66762722004204988, 743019.07602962083183229 4322483.68833699822425842, 743021.22404748213011771 4322482.707116330973804, 743023.68017923156730831 4322481.74314498621970415, 743026.43927524622995406 4322480.81153278145939112, 743029.50054569845087826 4322479.92106959875673056, 743032.85708081838674843 4322479.07662538439035416, 743036.49252100056037307 4322478.28139012865722179, 743040.38935665681492537 4322477.53777382615953684, 743044.53253810666501522 4322476.84626648761332035, 743048.90822562132962048 4322476.20595814287662506, 743053.50213947612792253 4322475.61547884438186884, 743058.2991499537602067 4322475.07300862390547991, 743063.28231742337811738 4322474.57953749969601631, 743068.46884165739174932 4322474.14231535326689482, 743073.89772200095467269 4322473.77041201386600733, 743079.60948773962445557 4322473.47107732389122248, 743085.64372821419965476 4322473.25359111279249191, 743092.040782734984532 4322473.12656321097165346, 743098.83984064683318138 4322473.09881344810128212, 743106.08165125222876668 4322473.17921165097504854, 743113.79210410104133189 4322473.37270772457122803, 743121.90260039258282632 4322473.66624192986637354, 743130.30974193487782031 4322474.04049467202275991, 743138.90951056662015617 4322474.47688634414225817, 743147.60009806195739657 4322474.95603734254837036, 743156.28102617955300957 4322475.4588680537417531, 743164.85108667984604836 4322475.96604888327419758, 743173.20631138316821307 4322476.45792022533714771, 743173.22343104460742325 4322476.458910190500319, 743181.26099178567528725 4322476.91824242286384106, 743181.28342134109698236 4322476.91950236726552248, 743188.94940913910977542 4322477.34032564144581556, 743188.97569861623924226 4322477.34172558132559061, 743196.2218944076448679 4322477.72037001699209213, 743196.25327378301881254 4322477.72196994721889496, 743203.03108851891011 4322478.05478565208613873, 743203.06837777281180024 4322478.05654557608067989, 743209.32991239568218589 4322478.34058266878128052, 743209.37756143964361399 4322478.34262257348746061, 743215.07434688834473491 4322478.5738211739808321, 743215.13610564474947751 4322478.57614105008542538, 743220.219742865068838 4322478.7509912746027112, 743220.3028811770491302 4322478.75350111909210682, 743224.72528111573774368 4322478.86879308056086302, 743224.8439486853312701 4322478.87118287105113268, 743228.57989181613083929 4322478.92421663831919432, 743228.74867831834126264 4322478.92518637795001268, 743231.8673232204746455 4322478.91681183315813541, 743232.10324824671261013 4322478.91340152360498905, 743234.69658302818425 4322478.84522851835936308, 743235.01733610744122416 4322478.83163821045309305, 743237.17768887849524617 4322478.70535658020526171, 743237.59054970112629235 4322478.6726363766938448, 743239.40989858517423272 4322478.49044595751911402, 743239.9033672115765512 4322478.42859599739313126, 743241.47432030295021832 4322478.19189663697034121, 743241.98970795050263405 4322478.10038701631128788, 743243.4042833624407649 4322477.81083855032920837, 743243.84247246710583568 4322477.71083915699273348, 743245.19302831485401839 4322477.37051142007112503, 743245.49787051405292004 4322477.28855199925601482, 743246.8625151882879436 4322476.8984748674556613, 743247.11503858596552163 4322476.82267544511705637, 743248.51637159788515419 4322476.38182889670133591, 743248.74298556335270405 4322476.30755949206650257, 743250.190086689312011 4322475.81409353576600552, 743250.39076125621795654 4322475.74327412620186806, 743251.89249027997720987 4322475.19523877650499344, 743252.06624550512060523 4322475.12998933624476194, 743253.63084222620818764 4322474.52587459329515696, 743253.77785813785158098 4322474.46777510456740856, 743255.41483232658356428 4322473.80579097848385572, 743255.54020880057942122 4322473.75409143883734941, 743257.25769025564659387 4322473.03229794651269913, 743257.35962736245710403 4322472.98879833985120058, 743259.16688586072996259 4322472.2055954821407795, 743259.23861381108872592 4322472.1741657666862011, 743261.14132927532773465 4322471.33183350693434477, 743261.15061900857836008 4322471.32772354502230883, 743263.11613262910395861 4322470.45520156249403954, 743265.10504582652356476 4322469.58618950471282005, 743267.10778915567789227 4322468.74078712146729231, 743269.11583310016430914 4322467.93638421501964331, 743271.11882819258607924 4322467.19094057101756334, 743273.10396499058697373 4322466.52082600630819798, 743275.06813378538936377 4322465.93883036728948355, 743277.05982345738448203 4322465.43866365496069193, 743279.13123252824880183 4322464.99849606864154339, 743281.28628069581463933 4322464.60553776379674673, 743283.51725790742784739 4322464.24797889310866594, 743285.81536410772241652 4322463.91211965680122375, 743288.1660693462472409 4322463.58388023916631937, 743288.18109899503178895 4322463.58177024219185114, 743290.53852401347830892 4322463.24895087163895369, 743290.63155183428898454 4322463.23537090513855219, 743292.95583723078016192 4322462.8849117998033762, 743293.11395349411759526 4322462.85978187527507544, 743295.40100910072214901 4322462.47739322669804096, 743295.55427543364930898 4322462.45053333695977926, 743297.81997090391814709 4322462.03537513222545385, 743297.94784781069029123 4322462.01108524482697248, 743300.21335274737793952 4322461.56540742050856352, 743300.31409028789494187 4322461.54504752438515425, 743302.59986429859418422 4322461.07093002274632454, 743302.67172253329772502 4322461.05575010273605585, 743304.99856522318441421 4322460.55526286922395229, 743305.04007420036941767 4322460.54624292068183422, 743307.42899517226032913 4322460.02177589014172554, 743307.44158486090600491 4322460.01900590676814318, 743309.90792386163957417 4322459.47420901712030172, 743312.46506067016161978 4322458.91238219663500786, 743315.14369460672605783 4322458.33124543726444244, 743317.94069564621895552 4322457.72558879852294922, 743317.96758498391136527 4322457.71972883120179176, 743320.85325368959456682 4322457.08655240293592215, 743320.90555239690002054 4322457.07493246998637915, 743323.85878914059139788 4322456.41032632905989885, 743323.93633720965590328 4322456.39254643488675356, 743326.93815230543259531 4322455.69187067076563835, 743327.04125972127076238 4322455.6672308212146163, 743330.0729 +8346911557019 4322454.92559551820158958, 743330.20296018419321626 4322454.89287573006004095, 743333.24530289811082184 4322454.1052809851244092, 743333.40064892987720668 4322454.06372126750648022, 743336.43481092783622444 4322453.22595715522766113, 743336.61581624078098685 4322453.17414753139019012, 743339.6215978863183409 4322452.28298412822186947, 743339.81541279563680291 4322452.22337457723915577, 743342.76680469966959208 4322451.28282186947762966, 743342.97132924501784146 4322451.21521240752190351, 743345.84186207631137222 4322450.23183034919202328, 743346.06672597897704691 4322450.15178101137280464, 743348.82892040931619704 4322449.13121957797557116, 743349.07961348281241953 4322449.03475040476769209, 743351.70704016787931323 4322447.98293956276029348, 743351.99360207817517221 4322447.86302062589675188, 743354.45886169804725796 4322446.78612034302204847, 743354.79403199732769281 4322446.63229175377637148, 743357.07027521450072527 4322445.53630199003964663, 743357.47140324651263654 4322445.33191393315792084, 743359.53189072641544044 4322444.22291465662419796, 743360.02358548576012254 4322443.93999744299799204, 743361.84731771238148212 4322442.8206186518073082, 743362.43588854977861047 4322442.4300926337018609, 743364.02732526860199869 4322441.2911944342777133, 743364.70427180174738169 4322440.76131002325564623, 743366.07434256549458951 4322439.5904825534671545, 743366.8152247293619439 4322438.8888501888141036, 743367.97435909230262041 4322437.67310360167175531, 743368.72271791216917336 4322436.79127347003668547, 743369.68189543229527771 4322435.51857789698988199, 743370.37063263042364269 4322434.47478987649083138, 743371.14037286525126547 4322433.13258546125143766, 743371.7017909842543304 4322431.99096885323524475, 743372.29288348683621734 4322430.56672573368996382, 743372.68982489733025432 4322429.4174394765868783, 743373.1130592180415988 4322427.89835778903216124, 743373.34904536069370806 4322426.82729080319404602, 743373.61415114998817444 4322425.20506065152585506, 743373.72345197037793696 4322424.24933241400867701, 743373.83669919497333467 4322422.5295637110248208, 743373.85661390796303749 4322421.68864418100565672, 743373.82338263455312699 4322419.88135679624974728, 743373.78259044873993844 4322419.14436606038361788, 743373.60830074420664459 4322417.25967985764145851, 743373.52708098816219717 4322416.61248806491494179, 743373.2170629067113623 4322414.65982292499393225, 743373.10911503934767097 4322414.0879202326759696, 743372.66865864663850516 4322412.07732601650059223, 743372.54327226639725268 4322411.56901255901902914, 743371.97787762456573546 4322409.51025914400815964, 743371.84083240828476846 4322409.05405505280941725, 743371.15592957253102213 4322406.95685229916125536, 743371.0078252024250105 4322406.53547779098153114, 743370.2063542635878548 4322404.40830560028553009, 743370.03947040450293571 4322403.99372103344649076, 743369.11562152183614671 4322401.83884938433766365, 743368.92890815972350538 4322401.42906479258090258, 743367.87488151132129133 4322399.24738368205726147, 743367.6687186713097617 4322398.84420903865247965, 743366.47607445239555091 4322396.63671847060322762, 743366.25359217554796487 4322396.24618369434028864, 743364.91447056119795889 4322394.01367367152124643, 743364.67737884551752359 4322393.63762873969972134, 743363.18378002441022545 4322391.38136926107108593, 743362.93623886478599161 4322391.02451410517096519, 743361.28028300579171628 4322388.74464518018066883, 743361.02217236743308604 4322388.40476983040571213, 743359.19532967451959848 4322386.1029814537614584, 743358.93942952854558825 4322385.79352572560310364, 743356.93937008117791265 4322383.47140787821263075, 743356.71267030120361596 4322383.21709141414612532, 743354.55910382652655244 4322380.88253397308290005, 743354.36454425065312535 4322380.67751684226095676, 743352.08226039388682693 4322378.33959965780377388, 743351.91740090609528124 4322378.17461197916418314, 743349.53154930018354207 4322375.84200489521026611, 743349.39264983334578574 4322375.70879677776247263, 743346.92800011369399726 4322373.39021965209394693, 743346.81252062390558422 4322373.28329117130488157, 743344.29440242808777839 4322370.98803384881466627, 743344.20047288597561419 4322370.90349505189806223, 743341.65373585256747901 4322368.64040738344192505, 743341.58034623635467142 4322368.5758283045142889, 743339.03013000078499317 4322366.35388012882322073, 743338.97556030144914985 4322366.30668081156909466, 743336.44011455040890723 4322364.12958205677568913, 743336.39465480938088149 4322364.09078261815011501, 743333.86438949184957892 4322361.94427348393946886, 743333.82997969270218164 4322361.91521390061825514, 743331.28904478042386472 4322359.77925466187298298, 743331.2655549228657037 4322359.7595749469473958, 743328.69794040382839739 4322357.61458586808294058, 743328.68489048315677792 4322357.60370602551847696, 743326.07437635469250381 4322355.43039738200604916, 743323.40801257488783449 4322353.21121940482407808, 743320.67697909916751087 4322350.93317228369414806, 743317.86327591794542968 4322348.57463630381971598, 743314.9518630268285051 4322346.11782173067331314, 743311.95051033946219832 4322343.56676848419010639, 743308.87410771870054305 4322340.9313864316791296, 743305.73711505439132452 4322338.22246540710330009, 743302.55614220967981964 4322335.45169523544609547, 743299.34609905967954546 4322332.62961577344685793, 743296.12262547225691378 4322329.76726685278117657, 743292.90181132510770112 4322326.8764082957059145, 743289.7035264513688162 4322323.97123989555984735, 743286.55168059875722975 4322321.06553144380450249, 743283.46876352839171886 4322318.17203273624181747, 743280.47803498897701502 4322315.30417357571423054, 743277.60271471936721355 4322312.47434376645833254, 743274.86561250605154783 4322309.69719307404011488, 743272.29173810500651598 4322306.98846127651631832, 743269.90268131904304028 4322304.36234814859926701, 743267.7084520353237167 4322301.82408361043781042, 743265.70830041880253702 4322299.38221755065023899, 743263.9094966952688992 4322297.05802969168871641, 743262.32210111850872636 4322294.87763969227671623, 743260.95738397818058729 4322292.87065714690834284, 743259.82749564293771982 4322291.07214160542935133, 743258.94725664239376783 4322289.52945244405418634, 743258.82642993750050664 4322289.28928837552666664, 743259.04842684103641659 4322289.09467774350196123, 743260.37906077201478183 4322288.05577863659709692, 743262.02893600938841701 4322286.90096046309918165, 743264.00352294917684048 4322285.65887285023927689, 743266.30941188719589263 4322284.35409548413008451, 743268.95411309087648988 4322283.01036804169416428, 743271.94715674023609608 4322281.64915024302899837, 743275.30600279069039971 4322280.28847183845937252, 743279.0582408137852326 4322278.93644266575574875, 743283.16731168574187905 4322277.59963271114975214, 743287.55026737530715764 4322276.29175193421542645, 743292.12257984583266079 4322275.02451032493263483, 743296.80394091515336186 4322273.80622791312634945, 743301.51642234297469258 4322272.64448472857475281, 743306.18491578206885606 4322271.54480083100497723, 743310.73076298937667161 4322270.51375626772642136, 743315.07240585738327354 4322269.5624410342425108, 743319.18449517199769616 4322268.70560498628765345, 743323.07263101264834404 4322267.95443797763437033, 743326.74653335171751678 4322267.31848987936973572, 743330.21591212938074023 4322266.80608056485652924, 743333.49281721760053188 4322266.42408993095159531, 743336.58883845945820212 4322266.17730790097266436, 743339.52278553682845086 4322266.06971439998596907, 743342.32708778232336044 4322266.10188935790210962, 743345.01985473744571209 4322266.26913280971348286, 743347.60216627083718777 4322266.56531483586877584, 743350.07088233844842762 4322266.98422551155090332, 743352.42319288675207645 4322267.51963492762297392, 743354.65721784322522581 4322268.16517316270619631, 743356.7712671326007694 4322268.91465029772371054, 743358.77006059570703655 4322269.76445637084543705, 743360.68069776939228177 4322270.72048126067966223, 743362.52811811992432922 4322271.78189494460821152, 743364.30991140985861421 4322272.93225762434303761, 743366.01793745800387114 4322274.15183956548571587, 743367.64595602406188846 4322275.41974103730171919, 743369.18576687120366842 4322276.71284234430640936, 743370.63270971924066544 4322278.0099537568166852, 743371.9787342717172578 4322279.28480561356991529, 743373.21678027382586151 4322280.51471821125596762, 743374.39801743486896157 4322281.74332092702388763, 743375.60449546528980136 4322283.0506726112216711, 743376.91457409341819584 4322284.51377218961715698, 743378.39414306310936809 4322286.19554876163601875, 743380.10021210694685578 4322288.14793158322572708, 743382.08865091449115425 4322290.41908996645361185, 743382.11247089819516987 4322290.44619959220290184, 743384.4272891697473824 4322293.07097303681075573, 743384.45523914520163089 4322293.10253259539604187, 743387.14321667957119644 4322296.12465048208832741, 743387.15734666609205306 4322296.14050026331096888, 743390.15374365961179137 4322299.49500351026654243, 743393.36149043147452176 4322303.08560348395258188, 743396.6830672980286181 4322306.81571154575794935, 743400.02627456095069647 4322310.59397899359464645, 743403.29772253497503698 4322314.32813712675124407, 743406.40142151946201921 4322317.92219729255884886, 743409.23769180628005415 4322321.27553091291338205, 743411.72774366941303015 4322324.31070906389504671, 743413.88700737326871604 4322327.06096131447702646, 743415.76013314677402377 4322329.59166676644235849, 743417.39994123950600624 4322331.97901438921689987, 743418.86580192600376904 4322334.30837301630526781, 743420.21821564622223377 4322336.67584135942161083, 743421.51460296264849603 4322339.18094808422029018, 743422.80700459657236934 4322341.92545183468610048, 743424.14409112685825676 4322344.99964141938835382, 743425.54721185495145619 4322348.38901697844266891, 743427.02038531820289791 4322352.01564947795122862, 743427.03140556684229523 4322352.04265912529081106, 743428.57080997503362596 4322355.80084989033639431, 743428.61576094897463918 4322355.90879847574979067, 743430.22639469557907432 4322359.71343856211751699, 743430.30855632084421813 4322359.90208608191460371, 743432.008778061484918 4322363.69878613390028477, 743432.13415021018590778 4322363.96795258764177561, 743433.94124861678574234 4322367.70197325572371483, 743434.12202113470993936 4322368.05727855395525694, 743436.05429487361107022 4322371.67472049128264189, 743436.29635739279910922 4322372.10227478761225939, 743438.36589539260603487 4322375.55687854252755642, 743438.63468729751184583 4322375.98102284409105778, 743440.83116958022583276 4322379.26186857558786869, 743441.11490078258793801 4322379.66390313114970922, 743443.42185763653833419 4322382.76780089922249317, 743443.71969817578792572 4322383.14892569370567799, 743446.1214298855047673 4322386.07356555853039026, 743446.43277979246340692 4322386.43479057494550943, 743448.91306664538569748 4322389.17731259204447269, 743449.23783594113774598 4322389.51981782540678978, 743451.78060822712723166 4322392.07770204730331898, 743452.11991692124865949 4322392.40333747118711472, 743454.70907492889091372 4322394.7737839613109827, 743455.06428301776759326 4322395.08391955122351646, 743457.68377703195437789 4322397.26430836878716946, 743458.05456450977362692 4322397.55836413707584143, 743460.68906483915634453 4322399.54802530258893967, 743461.06224181922152638 4322399.8166213845834136, 743463.6984488811576739 4322401.62347483076155186, 743464.06889544799923897 4322401.86550124920904636, 743466.6943596686469391 4322403.49914687126874924, 743467.05817590979859233 4322403.71498362440615892, 743469.66031772899441421 4322405.18524131737649441, 743470.01427373057231307 4322405.37595839984714985, 743472.58077358035370708 4322406.69288806151598692, 743472.92310941440518945 4322406.86038544680923223, 743475.44138772704172879 4322408.03358696680516005, 743475.76941347273532301 4322408.17929465044289827, 743478.22702068148646504 4322409.21858793310821056, 743478.53780642617493868 4322409.34391589555889368, 743480.92211297049652785 4322410.25930083263665438, 743481.2181487213820219 4322410.36763902939856052, 743483.52439490135293454 4322411.17060548812150955, 743483.81018062750808895 4322411.26530386880040169, 743486.063626250019297 4322411.97458157129585743, 743486.32678216649219394 4322412.05345018301159143, 743488.56062690541148186 4322412.68966882675886154, 743488.78668328805360943 4322412.75120771396905184, 743491.03396681603044271 4322413.33469698950648308, 743491.21037392329890281 4322413.37878617085516453, 743493.50421591266058385 4322413.93004577700048685, 743493.62253393896389753 4322413.95772524923086166, 743495.99566407594829798 4322414.49762487597763538, 743496.05875301221385598 4322414.51176460273563862, 743498.54449095949530602 4322415.06040394771844149, 743501.1684065239969641 4322415.63698273524641991, 743503.92459001764655113 4322416.25230083987116814, 743506.82437142031267285 4322416.91841809079051018, 743509.86108099482953548 4322417.64244441781193018, 743513.02588904206641018 4322418.43093975074589252, 743516.30925587192177773 4322419.29041402600705624, 743519.70112180500291288 4322420.22691717930138111, 743523.19085717259440571 4322421.24675915762782097, 743526.76831229217350483 4322422.35599989630281925, 743530.4238874779548496 4322423.56126933265477419, 743534.15800290927290916 4322424.8729273434728384, 743537.97487871441990137 4322426.30337375681847334, 743541.87842501734849066 4322427.86422843765467405, 743545.87261196132749319 4322429.56835121288895607, 743549.961659672902897 4322431.42783193103969097, 743554.14873830985743552 4322433.45531043875962496, 743558.44491792772896588 4322435.66716651059687138, 743562.87214832683093846 4322438.07793994061648846, 743567.40871926094405353 4322440.64796124771237373, 743571.99912066548131406 4322443.30826137959957123, 743576.57344261254183948 4322445.98058140650391579, 743576.59798235341440886 4322445.99488119129091501, 743581.07449502416420728 4322448.59304230194538832, 743581.1604641058947891 4322448.64236155990511179, 743585.47022753511555493 4322451.08696483168751001, 743585.63186575239524245 4322451.17668347619473934, 743589.72074981883633882 4322453.39710986241698265, 743589.98588675062637776 4322453.53599774744361639, 743593.79950133711099625 4322455.46144820470362902, 743594.22592603997327387 4322455.6642550528049469, 743597.73668064060620964 4322457.23344037029892206, 743598.41012142156250775 4322457.50555599015206099, 743601.69444404658861458 4322458.69578632991760969, 743602.65600922657176852 4322458.99046123214066029, 743605.81690748129040003 4322459.78768660128116608, 743607.02845626440830529 4322460.01490195747464895, 743610.16871776664629579 4322460.40539237391203642, 743611.49472149717621505 4322460.4813994150608778, 743614.71743386308662593 4322460.45173487719148397, 743615.97388609463814646 4322460.36081407964229584, 743619.38182694220449775 4322459.89700459316372871, 743620.42775164055638015 4322459.69744545500725508, 743624.12338859471492469 4322458.78601103182882071, 743624.91291810222901404 4322458.5564726497977972, 743628.99996876320801675 4322457.18368329666554928, 743629.54478387569542974 4322456.98290493339300156, 743634.08945700258482248 4322455.15651044435799122, 743634.41656775120645761 4322455.01826164312660694, 743639.34068665141239762 4322452.83322096709161997, 743639.52155143115669489 4322452.7508017010986805, 743644.71073053812142462 4322450.32357357535511255, 743644.78690831735730171 4322450.28754390403628349, 743650.12115223938599229 4322447.73745704162865877, 743655.44319667376112193 4322445.20170000288635492, 743660.59341733600012958 4322442.81598136387765408, 743665.43164930841885507 4322440.7027898458763957, 743669.79725807451177388 4322438.98360421136021614, 743673.57613742165267467 4322437.73828365281224251, 743676.80983601743355393 4322436.94050844386219978, 743679.58616099157370627 4322436.53118917718529701, 743682.0360584978479892 4322436.44699642807245255, 743684.34152403415646404 4322436.64744041115045547, 743686.7023436069721356 4322437.14195070508867502, 743689.28843458264600486 4322437.98186642397195101, 743692.21656562818679959 4322439.22931662667542696, 743695.53272627014666796 4322440.91189090721309185, 743699.14610717142932117 4322442.96004026103764772, 743702.93667891365475953 4322445.26512621063739061, 743706.80351167439948767 4322447.71810024417936802, 743710.65923539421055466 4322450.21243380010128021, 743710.66768531617708504 4322450.21789372246712446, 743714.39598013833165169 4322452.62447856273502111, 743714.50137912691570818 4322452.69158757943660021, 743717.99188511038664728 4322454.88338542263954878, 743718.23180268972646445 4322455.02937326766550541, 743721.41139954142272472 4322456.90355548448860645, 743721.85353466891683638 4322457.14932180289179087, 743724.67326197843067348 4322458.62457945197820663, 743725.35445351316593587 4322458.94885445106774569, 743727.86327032325789332 4322460.02903741132467985, 743728.83345646201632917 4322460.38848153315484524, 743731.10472169204149395 4322461.09867938794195652, 743732.38217054202686995 4322461.40762366075068712, 743734.48864311445504427 4322461.77253598533570766, 743735.970524798380211 4322461.91676195990294218, 743737.98543364100623876 4322461.96210832335054874, 743739.45034182129893452 4322461.88746700063347816, 743741.44706584129016846 4322461.63795699272304773, 743742.65939657296985388 4322461.40977792628109455, 743744.71103478316217661 4322460.89080094266682863, 743745.56399340881034732 4322460.63412077166140079, 743747.74368689255788922 4322459.87075166217982769, 743748.29365230782423168 4322459.65975211095064878, 743750.66034811839926988 4322458.67086503654718399, 743751.11026568314991891 4322458.46971575729548931, 743753.66683367197401822 4322457.25024076830595732, 743754.07593194232322276 4322457.04346170928329229, 743756.81065213517285883 4322455.58155900146812201, 743757.18474103324115276 4322455.37114012148231268, 743760.08669345127418637 4322453.65580986067652702, 743760.43460277747362852 4322453.44044114835560322, 743763.49181745480746031 4322451.46023351978510618, 743763.8172471463913098 4322451.24024494923651218, 743767.01838410226628184 4322448.98354014009237289, 743767.32351412647403777 4322448.75967169832438231, 743770.65750338055659086 4322446.21513988729566336, 743770.94521367491688579 4322445.9870815621688962, 743774.40017526864539832 4322443.14359293133020401, 743774.65510640235152096 4322442.92651459574699402, 743778.21706070064101368 4322439.78914913348853588, 743778.38470472441986203 4322439.63810032978653908, 743782.02641358494292945 4322436.28156722150743008, 743782.11258046643342823 4322436.20120786875486374, 743785.80470608221367002 4322432.71685610897839069, 743785.82245543436147273 4322432.70006624609231949, 743789.51101088791619986 4322429.20200464874505997, 743793.13136963243596256 4322425.81385195627808571, 743796.63431448966730386 4322422.64033707603812218, 743799.96739829366561025 4322419.78326897509396076, 743803.06312420393805951 4322417.34652664512395859, 743805.88618395489174873 4322415.3888795105740428, 743808.55980375048238784 4322413.83303804323077202, 743811.29404731770046055 4322412.55853288248181343, 743814.33147814159747213 4322411.46731428615748882, 743817.9033106800634414 4322410.50383202265948057, 743822.19836073403712362 4322409.64108567126095295, 743827.35812516685109586 4322408.85949491802603006, 743833.49948122364003211 4322408.1335896160453558, 743840.66524759714957327 4322407.43709991499781609, 743848.66633797879330814 4322406.76780657935887575, 743857.27066695992834866 4322406.12660051137208939, 743866.2563789077103138 4322405.5127525981515646, 743875.40783805365208536 4322404.92517370171844959, 743884.5124685475602746 4322404.36152467969805002, 743893.35420461825560778 4322403.81982642132788897, 743893.36490439577028155 4322403.8191663883626461, 743901.72520032653119415 4322403.29795976355671883, 743901.76288953935727477 4322403.29553964734077454, 743909.49044813134241849 4322402.78447538334876299, 743909.58644611749332398 4322402.77765509206801653, 743916.78380456031300128 4322402.2320333318784833, 743916.94948104734066874 4322402.21809284668415785, 743923.78100517846178263 4322401.58581358008086681, 743924.01528012880589813 4322401.56134294811636209, 743930.64568577567115426 4322400.7897761557251215, 743930.93587938137352467 4322400.75169547367841005, 743937.52960237406659871 4322399.78806114662438631, 743937.85196509293746203 4322399.73556050937622786, 743944.57386126113124192 4322398.52778862323611975, 743944.90330362098757178 4322398.46286811120808125, 743951.91784878866747022 4322396.95778866577893496, 743952.22865139530040324 4322396.88588830921798944, 743959.70058139995671809 4322395.03151126392185688, 743959.97122480825055391 4322394.96031105518341064, 743968.02589654293842614 4322392.72025636211037636, 743968.23527134512551129 4322392.65956626832485199, 743976.84076595189981163 4322390.06294367741793394, 743976.99943195504602045 4322390.01362364739179611, 743986.0852016422431916 4322387.10652287490665913, 743986.20649855339433998 4322387.0668528750538826, 743995.70149552391376346 4322383.89467364363372326, 743995.79330316570121795 4322383.86351365316659212, 744005.62660962529480457 4322380.47197568509727716, 744005.69432787469122559 4322380.44834569841623306, 744015.79513602959923446 4322376.88327870890498161, 744015.84279479109682143 4322376.86631872784346342, 744026.14025683817453682 4322373.17315244115889072, 744026.16973607009276748 4322373.1625224519520998, 744036.59304421802517027 4322369.38731659669429064, 744036.6111037468072027 4322369.38076659943908453, 744047.08794012246653438 4322365.56339097674936056, 744047.1146294247591868 4322365.55362098570913076, 744057.56870582397095859 4322361.71084569301456213, 744057.60903476888779551 4322361.69592571258544922, 744067.96240293770097196 4322357.83955091796815395, 744068.01774148328695446 4322357.8187509486451745, 744078.19270315498579293 4322353.96017682366073132, 744078.26489124493673444 4322353.93247686605900526, 744088.1839981428347528 4322350.08293359633535147, 744088.27553570619784296 4322350.04689366277307272, 744097.86066956957802176 4322346.21804141160100698, 744097.97550648602191359 4322346.17134151794016361, 744107.14908904046751559 4322342.3743504723533988, 744107.29229515488259494 4322342.31376062519848347, 744115.97650813276413828 4322338.5601109629496932, 744116.14679345302283764 4322338.48462118487805128, 744124.28547815070487559 4322334.78535299934446812, 744124.45245349546894431 4322334.70759326498955488, 744132.07436951692216098 4322331.0723563302308321, 744132.22589523578062654 4322330.99851661361753941, 744139.38140174734871835 4322327.43646063096821308, 744139.51292798516806215 4322327.36977090127766132, 744146.25241414736956358 4322323.88986556604504585, 744146.35899106622673571 4322323.83401580899953842, 744152.73246605263557285 4322320.44535080995410681, 744152.80806385248433799 4322320.40474099479615688, 744158.86598683334887028 4322317.11685602739453316, 744158.90628565428778529 4322317.09486612677574158, 744164.69860580284148455 4322313.91662088222801685, 744170.25682284345384687 4322310.86781500186771154, 744175.6212261039763689 4322307.95533824432641268, 744180.81329493713565171 4322305.16649068146944046, 744185.82780935743357986 4322302.49653238896280527, 744190.65588949341326952 4322299.94253343902528286, 744195.28790547151584178 4322297.50117392279207706, 744199.71016756095923483 4322295.1724438788369298, 744199.72001727565657347 4322295.16725390218198299, 744203.91661579313222319 4322292.95138341560959816, 744203.94091508956626058 4322292.93850346840918064, 744207.90015023935120553 4322290.83402259740978479, 744207.95052877441048622 4322290.80706271342933178, 744211.66685049561783671 4322288.80438159313052893, 744211.77960719249676913 4322288.74268187675625086, 744215.26851452223490924 4322286.80427089612931013, 744215.45891887124162167 4322286.69573142379522324, 744218.74056063406169415 4322284.77717103157192469, 744219.01306237373501062 4322284.61198190227150917, 744222.10744737880304456 4322282.66802256088703871, 744222.45407655998133123 4322282.44010387919843197, 744225.38196362904272974 4322280.42668603546917439, 744225.79141036234796047 4322280.12958791572600603, 744228.57280831597745419 4322278.00197201780974865, 744229.02190308575518429 4322277.63737454637885094, 744231.67739073745906353 4322275.35096103698015213, 744232.13992419734131545 4322274.9267142228782177, 744234.68921037460677326 4322272.43673355877399445, 744235.14390311355236918 4322271.96244737040251493, 744237.60162674309685826 4322269.22413002979010344, 744238.05700822593644261 4322268.678984678350389, 744240.41158875427208841 4322265.64764123875647783, 744240.84821951016783714 4322265.03986670728772879, 744243.08242648816667497 4322261.6706377724185586, 744243.47808733070269227 4322261.02171389106661081, 744245.57460030936636031 4322257.26943006459623575, 744245.9147019445663318 4322256.60339661408215761, 744247.85563049558550119 4322252.42344850301742554, 744248.13337348226923496 4322251.76460521854460239, 744249.90162715292535722 4322247.11206342466175556, 744250.11834179004654288 4322246.47880008351057768, 744251.69653012894559652 4322241.30844522267580032, 744251.85807653865776956 4322240.71425163932144642, 744253.22855911543592811 4322234.981764305382967, 744253.34087755146902055 4322234.44798020180314779, 744254.49131419591140002 4322228.12988073378801346, 744254.55999530863482505 4322227.69975557271391153, 744255.49967698019463569 4322220.86108315084129572, 744255.54103011183906347 4322220.51563709415495396, 744256.28362806048244238 4322213.2432006448507309, 744256.30850260448642075 4322212.95979391504079103, 744256.86804807558655739 4322205.34062233660370111, 744256.88261364109348506 4322205.10386509448289871, 744257.27363787195645273 4322197.2246873015537858, 744257.28164415876381099 4322197.02183968760073185, 744257.51752840331755579 4322188.96944458968937397, 744257.52112525538541377 4322188.79380666650831699, 744257.61650074762292206 4322180.65504318382591009, 744257.61711800890043378 4322180.49951503332704306, 744257.58590599894523621 4322172.36137206293642521, 744257.58441359782591462 4322172.22268372308462858, 744257.44151497632265091 4322164.15271040610969067, 744257.43879300076514482 4322164.03693179786205292, 744257.20415724255144596 4322156.02750814892351627, 744257.20109571423381567 4322155.93695924058556557, 744256.89511194813530892 4322147.9614054849371314, 744256.89246088231448084 4322147.89762625563889742, 744256.53576822346076369 4322139.92866264656186104, 744256.53406761982478201 4322139.89229308534413576, 744256.1473351982422173 4322131.90331984218209982, 744255.75148214516229928 4322123.86819719616323709, 744255.3682580899912864 4322115.79028501082211733, 744255.0179020743817091 4322107.63738359045237303, 744254.72128355992026627 4322099.40234292950481176, 744254.50018355099018663 4322091.16676196455955505, 744254.37710348819382489 4322083.03795932233333588, 744254.37415486085228622 4322075.12568360008299351, 744254.51250923075713217 4322067.54257336352020502, 744254.81144828791730106 4322060.40657712146639824, 744255.28748393163550645 4322053.84456329420208931, 744255.9459491380257532 4322048.03226975630968809, 744256.78116993466392159 4322043.30703251715749502, 744257.81323088053613901 4322039.9516181256622076, 744258.97498113696929067 4322037.84283832181245089, 744260.44540599407628179 4322036.34201996773481369, 744263.03387932106852531 4322034.86354660987854004, 744267.63559442630503327 4322033.45683385152369738, 744274.69438841892406344 4322032.4532958623021841, 744284.73040498222690076 4322032.07459780294448137, 744287.79985418275464326 4322031.46900198142975569, 744290.53191390156280249 4322029.94451852049678564, 744292.65917200106196105 4322027.65037675946950912, 744293.97337649809196591 4322024.81115492805838585, 744294.34589477849658579 4322021.70476026646792889, 744293.74026288441382349 4322018.63527932390570641, 744292.21575491258408874 4322015.90317828860133886, 744289.92160262365359813 4322013.77587333787232637, 744287.08238525746855885 4322012.46162105072289705, 744283.97600962826982141 4322012.0890587056055665, 744273.42238349665421993 4322012.48728888295590878, 744272.39195531653240323 4322012.57972217351198196, 744264.04930965206585824 4322013.76578354835510254, 744262.53350528166629374 4322014.10307598114013672, 744256.11978538613766432 4322016.06370990071445704, 744254.0835107279708609 4322016.94344807881861925, 744249.31711190089117736 4322019.66590589191764593, 744247.13392424280755222 4322021.35083508025854826, 744243.73286178603302687 4322024.82218813430517912, 744242.11714156472589821 4322026.99518908280879259, 744239.79933077772147954 4322031.20241874177008867, 744239.00004950701259077 4322033.08779963944107294, 744237.48368568101432174 4322038.01774726621806622, 744237.19442238193005323 4322039.2170341843739152, 744236.19753081956878304 4322044.85692112613469362, 744236.10844334913417697 4322045.47182417009025812, 744235.39225824165623635 4322051.79365178477019072, 744235.35490602627396584 4322052.19578714389353991, 744234.85320712660904974 4322059.11159676034003496, 744234.83576281717978418 4322059.41657319664955139, 744234.52547877049073577 4322066.82322614639997482, 744234.51838305022101849 4322067.05937336292117834, 744234.37618250108789653 4322074.85365098342299461, 744234.37451579899061471 4322075.03978876955807209, 744234.37752739642746747 4322083.11898237932473421, 744234.37866996345110238 4322083.26665061712265015, 744234.50375235278625041 4322091.52778154984116554, 744234.506214355584234 4322091.64476014580577612, 744234.73011618643067777 4322099.98461973015218973, 744234.73298773367423564 4322100.07619862724095583, 744235.03249764943029732 4322108.39171819295734167, 744235.03523881291039288 4322108.46110735181719065, 744235.38804582867305726 4322116.67096796166151762, 744235.39006656932178885 4322116.71550742164254189, 744235.77478119125589728 4322124.82477910723537207, 744235.7756614931859076 4322124.84295888617634773, 744236.1713245304999873 4322132.87436145544052124, 744236.55697662592865527 4322140.84088485315442085, 744236.91142849577590823 4322148.7597689563408494, 744237.21445101406425238 4322156.65816351864486933, 744237.44606507231947035 4322164.56442828942090273, 744237.58671155304182321 4322172.50716301146894693, 744237.6173610424157232 4322180.49818761274218559, 744237.52392265503294766 4322188.47135294042527676, 744237.29358503152616322 4322196.33448014594614506, 744236.91346677730325609 4322203.99381039757281542, 744236.37302641349378973 4322211.35281488392502069, 744235.66255235974676907 4322218.31063484959304333, 744234.77621287456713617 4322224.76114157401025295, 744233.71367607184220105 4322230.59649634920060635, 744232.47826096508651972 4322235.76403978560119867, 744231.08774818351957947 4322240.31952114216983318, 744229.56554834416601807 4322244.32466959208250046, 744227.93286210938822478 4322247.84078431595116854, 744226.20435035577975214 4322250.93443446420133114, 744224.38724415202159435 4322253.67465917766094208, 744222.48036471614614129 4322256.12962765246629715, 744220.47957316925749183 4322258.35884919855743647, 744218.39003007346764207 4322260.39977334439754486, 744216.19174651964567602 4322262.2925296938046813, 744213.84113430499564856 4322264.09061778616160154, 744211.29268518672324717 4322265.84311722032725811, 744208.50891063828021288 4322267.59193764626979828, 744205.45944191655144095 4322269.37476873770356178, 744202.12251010432373732 4322271.2287401370704174, 744198.48791598877869546 4322273.18737148307263851, 744194.56604974076617509 4322275.27199248038232327, 744190.38653071410953999 4322277.47884304542094469, 744185.96757851436268538 4322279.80583312641829252, 744181.3240228557260707 4322282.25327266193926334, 744181.31070324068423361 4322282.26030263211578131, 744176.46403362776618451 4322284.82413158006966114, 744176.44019431830383837 4322284.83678152319043875, 744171.39768069144338369 4322287.52164979558438063, 744171.36552162677980959 4322287.5388497207313776, 744166.13764381990768015 4322290.34693724289536476, 744166.0982049701269716 4322290.36823714897036552, 744160.69516282284166664 4322293.30169385299086571, 744160.65732392948120832 4322293.32234376017004251, 744155.07960744225420058 4322296.38183963671326637, 744149.30560673633590341 4322299.55003497656434774, 744143.30557204131036997 4322302.80650013964623213, 744137.02310439362190664 4322306.14677540212869644, 744130.40259478450752795 4322309.56525105889886618, 744123.38854422571603209 4322313.05688738171011209, 744115.92583370790816844 4322316.61619465984404087, 744107.95578430918976665 4322320.23881317116320133, 744099.428437014226 +80169 4322323.92466311063617468, 744090.38396093901246786 4322327.66821437980979681, 744080.9020742739085108 4322331.45582682080566883, 744071.0648651635274291 4322335.27358025964349508, 744060.95369176287204027 4322339.10796453058719635, 744050.64817228924948722 4322342.94651947077363729, 744040.22761496482416987 4322346.77697489969432354, 744029.77315795817412436 4322350.58620065823197365, 744019.37360914272721857 4322354.35279664676636457, 744009.11470604490023106 4322358.0321330651640892, 743999.07156634947750717 4322361.57685019355267286, 743989.31798778858501464 4322364.94088829681277275, 743979.92948804749175906 4322368.07748765125870705, 743970.98362477123737335 4322370.93981852475553751, 743962.56202551966998726 4322373.48096116352826357, 743954.74719784304033965 4322375.65430582035332918, 743947.56592079892288893 4322377.43655268382281065, 743940.8715180738363415 4322378.87294179666787386, 743934.47564440767746419 4322380.02213319297879934, 743928.18834454962052405 4322380.9409869434311986, 743921.82031315215863287 4322381.68202316854149103, 743915.18884471128694713 4322382.29578196816146374, 743908.1223634728230536 4322382.83148343674838543, 743900.46167344227433205 4322383.33812759909778833, 743892.12556696019601077 4322383.85782426781952381, 743883.28600079310126603 4322384.39939265605062246, 743874.16038068337365985 4322384.96433187462389469, 743874.13753115956205875 4322384.96578194666653872, 743864.95425262488424778 4322385.55541108082979918, 743864.9134534775512293 4322385.55811121221631765, 743855.87653254962060601 4322386.17544941883534193, 743855.81492384127341211 4322386.17984960786998272, 743847.13456640904769301 4322386.82672603242099285, 743847.04413831746205688 4322386.83387630246579647, 743838.93090026918798685 4322387.51255008298903704, 743838.79708312114235014 4322387.52465046290308237, 743831.46112035517580807 4322388.23768074531108141, 743831.25470481684897095 4322388.25991128664463758, 743824.84798451152164489 4322389.01718734577298164, 743824.52414166927337646 4322389.06083808746188879, 743818.96597612858749926 4322389.90276975370943546, 743818.49429689615499228 4322389.98582059610635042, 743813.64449972461443394 4322390.96000783331692219, 743813.00955487927421927 4322391.10924851521849632, 743808.72938966134097427 4322392.2637912854552269, 743807.95273928204551339 4322392.50760137010365725, 743804.10212963784579188 4322393.89096963405609131, 743803.25835240841843188 4322394.23833871446549892, 743799.6982119157910347 4322395.89781244192272425, 743798.89344521181192249 4322396.3184304665774107, 743795.4841774757951498 4322398.30236961506307125, 743794.81540817848872393 4322398.72789704147726297, 743791.41762679140083492 4322401.08408157341182232, 743790.93097274180036038 4322401.44382908474653959, 743787.43311034899670631 4322404.19710912927985191, 743787.11014140292536467 4322404.4624471515417099, 743783.51413676352240145 4322407.54487353377044201, 743783.30821403057780117 4322407.72634211834520102, 743779.64360494585707784 4322411.04632584284991026, 743779.52458922984078526 4322411.15592496562749147, 743775.82099350076168776 4322414.62196703441441059, 743775.77280525397509336 4322414.66735666710883379, 743772.06910035468172282 4322418.17979814670979977, 743768.42870285478420556 4322421.61532029788941145, 743764.91327944537624717 4322424.85546434205025434, 743761.56164772296324372 4322427.80757125560194254, 743758.37773683841805905 4322430.42799157183617353, 743755.34013773174956441 4322432.74631500989198685, 743752.45424062176607549 4322434.78078133147209883, 743749.73365544236730784 4322436.5429503358900547, 743747.1926421249518171 4322438.04493182897567749, 743744.8494009911082685 4322439.29755453858524561, 743742.7222331753000617 4322440.31220543291419744, 743740.8548558154143393 4322441.09245878737419844, 743739.37401579436846077 4322441.61107474192976952, 743738.35369159071706235 4322441.86917316447943449, 743737.69989664491731673 4322441.95086317323148251, 743737.16650753864087164 4322441.9388641407713294, 743736.44449036556761712 4322441.81378678511828184, 743735.2961779396282509 4322441.4547229427844286, 743733.6098602453712374 4322440.72866441775113344, 743731.34878645557910204 4322439.54569236189126968, 743728.50812606664840132 4322437.87129720859229565, 743725.1894684029975906 4322435.78740781266242266, 743721.51789304113481194 4322433.41743246465921402, 743717.62901962734758854 4322430.90164925344288349, 743717.55406034062616527 4322430.85362995602190495, 743713.56965870503336191 4322428.32607705146074295, 743713.40875029354356229 4322428.22612852416932583, 743709.40611068345606327 4322425.7920845178887248, 743709.14144345209933817 4322425.63664682768285275, 743705.19385615969076753 4322423.39907034579664469, 743704.78747077262960374 4322423.18095364701002836, 743700.96762610308360308 4322421.24281331617385149, 743700.36224372708238661 4322420.96065771207213402, 743696.71843219641596079 4322419.40831239428371191, 743695.88808399520348758 4322419.09729749150574207, 743692.36793710559140891 4322417.95400698110461235, 743691.32908385037444532 4322417.67736199032515287, 743687.85465333831962198 4322416.94959631841629744, 743686.67070490133482963 4322416.77477030735462904, 743683.16418252000585198 4322416.46989951096475124, 743681.9545671408995986 4322416.43822178617119789, 743678.33855461073108017 4322416.56249589566141367, 743677.22352960531134158 4322416.66352639906108379, 743673.41978868469595909 4322417.22431544773280621, 743672.48312143492512405 4322417.40847465116530657, 743668.41413385514169931 4322418.41231867577880621, 743667.67949287849478424 4322418.6236472250893712, 743663.26750038517639041 4322420.07761625107377768, 743662.73331491148564965 4322420.27064471691846848, 743657.9328482102137059 4322422.16106897126883268, 743657.5944177369819954 4322422.30155777558684349, 743652.48744342126883566 4322424.53212831914424896, 743652.28680919099133462 4322424.6223975196480751, 743646.98758284002542496 4322427.0771455941721797, 743646.88946569536346942 4322427.1232451805844903, 743641.51261285447981209 4322429.68511203583329916, 743641.50086319749243557 4322429.69072198402136564, 743636.19875832472462207 4322432.22544903494417667, 743631.13777548086363822 4322434.59271775092929602, 743626.46681931777857244 4322436.66540946904569864, 743622.35642405867110938 4322438.31728548463433981, 743618.93474558822344989 4322439.46658661402761936, 743616.15623553446494043 4322440.15183245483785868, 743613.90192788897547871 4322440.45863214787095785, 743611.97584830457344651 4322440.47636488918215036, 743610.10884307813830674 4322440.24420061986893415, 743608.0349070243537426 4322439.7211202485486865, 743605.56561263743788004 4322438.82625506352633238, 743602.60224095196463168 4322437.50173593498766422, 743599.13305225723888725 4322435.75018284749239683, 743595.25693579146172851 4322433.64529475010931492, 743591.07068102201446891 4322431.27075046859681606, 743586.64930776075925678 4322428.70458892453461885, 743582.07219583471305668 4322426.03063896391540766, 743582.04205615364480764 4322426.01309922710061073, 743577.39415534981526434 4322423.31947963964194059, 743577.30910626146942377 4322423.27074037399142981, 743572.65681657055392861 4322420.63516009412705898, 743572.50997818820178509 4322420.55360132828354836, 743567.90717974689323455 4322418.04722939524799585, 743567.70231209462508559 4322417.9387310529127717, 743563.19412495382130146 4322415.61771670263260603, 743562.97487758425995708 4322415.50821839645504951, 743558.56881162663921714 4322413.37471158616244793, 743558.35020436497870833 4322413.27209319174289703, 743554.04415941936895251 4322411.313934076577425, 743553.82888222625479102 4322411.21907558385282755, 743549.6212381087243557 4322409.42387431021779776, 743549.40971096756402403 4322409.33647572156041861, 743545.29862751066684723 4322407.69264244101941586, 743545.09523035411257297 4322407.6138737304136157, 743541.07898737001232803 4322406.10870859771966934, 743540.88377018342725933 4322406.03784977365285158, 743536.96054750680923462 4322404.65976293385028839, 743536.77769021282438189 4322404.59751398768275976, 743532.94577766070142388 4322403.3341055940836668, 743532.77607023366726935 4322403.27981652971357107, 743529.03546760918106884 4322402.11998671758919954, 743528.87898003379814327 4322402.07286754436790943, 743525.23914700897876173 4322401.00916639436036348, 743525.09552927780896425 4322400.96835712064057589, 743521.56726550892926753 4322399.99419469106942415, 743521.43815758521668613 4322399.95947532262653112, 743518.0328127205139026 4322399.06807168014347553, 743517.9180245918687433 4322399.03875222429633141, 743514.64665828598663211 4322398.22370743285864592, 743514.54836990940384567 4322398.19973787944763899, 743511.42226180981379002 4322397.45439199917018414, 743511.34181315242312849 4322397.43556236010044813, 743508.37183291837573051 4322396.75332545582205057, 743508.31191392650362104 4322396.73975571896880865, 743505.50940120522864163 4322396.1140878526493907, 743505.47669175849296153 4322396.10684799589216709, 743502.85006623505614698 4322395.52967925556004047, 743500.40044766955543309 4322394.98900979105383158, 743498.11808600137010217 4322394.46975980047136545, 743495.97171156213153154 4322393.95393955707550049, 743493.92582476197276264 4322393.42273934651166201, 743491.93677615281194448 4322392.85623948834836483, 743489.95796633418649435 4322392.23341030906885862, 743487.94276588200591505 4322391.53178217075765133, 743485.86206507403403521 4322390.73295534029603004, 743483.72412359621375799 4322389.82883990928530693, 743481.54131105751730502 4322388.81192594952881336, 743479.32328711007721722 4322387.67380355391651392, 743477.08040139731019735 4322386.40653279982507229, 743474.82245356496423483 4322385.00157378800213337, 743472.55847326130606234 4322383.44983660615980625, 743470.29634014843031764 4322381.74140137527137995, 743468.04002391593530774 4322379.86330824717879295, 743465.79829429893288761 4322377.81094726826995611, 743463.58778100460767746 4322375.58728837221860886, 743461.42581374640576541 4322373.19675148092210293, 743459.32898225472308695 4322370.64339651260524988, 743457.31315626716241241 4322367.93119339924305677, 743455.3933055333327502 4322365.06355207785964012, 743453.57911975856404752 4322362.03520259354263544, 743451.85655860230326653 4322358.8103554118424654, 743450.20099258597474545 4322355.38944057282060385, 743448.60350276879034936 4322351.82215746864676476, 743447.05577034875750542 4322348.16610539332032204, 743445.54405656643211842 4322344.47551370039582253, 743444.06386295100674033 4322340.8316113855689764, 743444.03864238690584898 4322340.77012219186872244, 743442.58884064375888556 4322337.26796807534992695, 743442.51943919679615647 4322337.10444021970033646, 743441.0874007900711149 4322333.81194347236305475, 743440.96429854480084032 4322333.54007705207914114, 743439.52854451979510486 4322330.4911672892048955, 743439.36272203479893506 4322330.15548173431307077, 743437.8849822988267988 4322327.29992964398115873, 743437.68682998279109597 4322326.93573449458926916, 743436.12571415002457798 4322324.20292101614177227, 743435.90620224946178496 4322323.83699592482298613, 743434.21966995834372938 4322321.1569819962605834, 743433.99891861621290445 4322320.8213465316221118, 743432.14538947213441133 4322318.12283311504870653, 743431.9403486552182585 4322317.83532702457159758, 743429.87760229769628495 4322315.04843505658209324, 743429.70526188635267317 4322314.82238815072923899, 743427.39196791988797486 4322311.8759585851803422, 743427.2576877559768036 4322311.70864088553935289, 743424.65202580846380442 4322308.53253466729074717, 743424.55600576754659414 4322308.41728625725954771, 743421.63816547463648021 4322304.96751396637409925, 743421.57150548277422786 4322304.88950504828244448, 743418.41097651852760464 4322301.22963578253984451, 743418.36418654199223965 4322301.17584652919322252, 743415.05297859339043498 4322297.39629902224987745, 743415.02033861679956317 4322297.35922954138368368, 743411.65034137666225433 4322293.55069250706583261, 743411.62947139306925237 4322293.52717283647507429, 743408.29207454260904342 4322289.77929501794278622, 743408.28132455341983587 4322289.76724518090486526, 743405.06891779031138867 4322286.17143527790904045, 743402.07983078935649246 4322282.82512191496789455, 743399.41292323637753725 4322279.82668369263410568, 743397.12398494791705161 4322277.23124983720481396, 743395.15681612747721374 4322274.9843911100178957, 743393.44284708879422396 4322273.0229684105142951, 743393.42075710231438279 4322272.99777876120060682, 743391.90121816180180758 4322271.27057281788438559, 743391.84311821148730814 4322271.205113735049963, 743390.45377966819796711 4322269.65349538996815681, 743390.35278980270959437 4322269.54240694548934698, 743389.02601197094190866 4322268.10468708164989948, 743388.88571225572377443 4322267.95573917310684919, 743387.55404545541387051 4322266.57068866584450006, 743387.39314590918365866 4322266.40713097341358662, 743385.98910044180229306 4322265.01231070328503847, 743385.81790106417611241 4322264.84625306352972984, 743384.28580726345535368 4322263.39516371581703424, 743384.08429817087017 4322263.2094663679599762, 743382.41499642143025994 4322261.71302781812846661, 743382.17092775157652795 4322261.50125086773186922, 743380.36624848004430532 4322259.98571278806775808, 743380.07972033892292529 4322259.75395615492016077, 743378.14217394427396357 4322258.24499821942299604, 743377.80874647968448699 4322257.99629187863320112, 743375.74101336812600493 4322256.51987375225871801, 743375.35405676660593599 4322256.25702767912298441, 743373.15802735765464604 4322254.83920904435217381, 743372.71565178886521608 4322254.56957314535975456, 743370.39402647700626403 4322253.23572367709130049, 743369.88716220459900796 4322252.96359792072325945, 743367.4421214108588174 4322251.74016728159040213, 743366.87995850411243737 4322251.48032146319746971, 743364.31389257055707276 4322250.38933937344700098, 743363.74273051344789565 4322250.16691310796886683, 743361.05965948151424527 4322249.21569946780800819, 743360.4942080257460475 4322249.0339526804164052, 743357.6984818740747869 4322248.22610744368284941, 743357.14180090825539082 4322248.08245017379522324, 743354.23742961173411459 4322247.42139328178018332, 743353.69108905433677137 4322247.31294555217027664, 743350.68198259675409645 4322246.80233695730566978, 743350.14852234884165227 4322246.72654879372566938, 743347.03927069867495447 4322246.36992844566702843, 743346.51969069160986692 4322246.32401988655328751, 743343.31418382772244513 4322246.12492772657424212, 743342.80901400477159768 4322246.10635880287736654, 743339.51123191299848258 4322246.06852477602660656, 743339.03005202510394156 4322246.07458550576120615, 743335.64127469342201948 4322246.19885960128158331, 743335.21320403693243861 4322246.22375000361353159, 743331.7214515726082027 4322246.50207234546542168, 743331.35817975690588355 4322246.53771250322461128, 743327.7480322775663808 4322246.95854325033724308, 743327.4447692931862548 4322246.99861325696110725, 743323.70157691673375666 4322247.5514725698158145, 743323.45708269474562258 4322247.59068248420953751, 743319.56538554385770112 4322248.26433052774518728, 743319.37416013819165528 4322248.29934041015803814, 743315.31896833260543644 4322249.08277734089642763, 743315.17594181501772255 4322249.11149721872061491, 743310.94215546967461705 4322249.9936932073906064, 743310.84168793866410851 4322250.01516310591250658, 743306.41405718366149813 4322250.98531830497086048, 743306.34249895450193435 4322251.00127822067588568, 743301.72042362706270069 4322252.04961275961250067, 743301.63955563819035888 4322252.06830265652388334, 743296.88021445507183671 4322253.18938649911433458, 743296.77942698053084314 4322253.21368636097759008, 743291.95404838328249753 4322254.40325944218784571, 743291.82911154255270958 4322254.43490925431251526, 743287.00904398295097053 4322255.68929150514304638, 743286.8566978769376874 4322255.73022124450653791, 743282.11383977869991213 4322257.04473259951919317, 743281.9253046594094485 4322257.09899223130196333, 743277.33075447869487107 4322258.47001261822879314, 743277.09647064306773245 4322258.54306208714842796, 743272.72183681512251496 4322259.96627144888043404, 743272.42567477026022971 4322260.06778066419064999, 743268.34240573726128787 4322261.53907892759889364, 743267.97764579218346626 4322261.67860777489840984, 743264.24344023258890957 4322263.19135492853820324, 743263.8582211754983291 4322263.35690348315984011, 743260.47739870671648532 4322264.89447973296046257, 743260.08765013329684734 4322265.08200801908969879, 743257.05020062532275915 4322266.62527361884713173, 743256.65515259618405253 4322266.83726160507649183, 743253.95144591189455241 4322268.36714681331068277, 743253.55165845225565135 4322268.60582447331398726, 743251.17172445531468838 4322270.10288955364376307, 743250.76195779454428703 4322270.37492680642753839, 743248.69665634201373905 4322271.8205220140516758, 743248.27697056659962982 4322272.13090879842638969, 743246.51641152054071426 4322273.50547439884394407, 743246.07844704634044319 4322273.86793055478483438, 743244.61287027620710433 4322275.15270679257810116, 743244.11679883836768568 4322275.61835174541920424, 743242.93715436093043536 4322276.80369875766336918, 743242.24000263295602053 4322277.58157011214643717, 743241.3395911359693855 4322278.69849752448499203, 743240.46097211632877588 4322279.98091282323002815, 743239.83356444153469056 4322281.06946014426648617, 743238.99255532934330404 4322282.95567777194082737, 743238.63265230820979923 4322284.05656449776142836, 743238.17422172613441944 4322286.30910688359290361, 743238.07524421205744147 4322287.46277252025902271, 743238.11607048916630447 4322289.55960605572909117, 743238.27209931379184127 4322290.80611010361462831, 743238.59884035377763212 4322292.37834977731108665, 743239.00363637076225132 4322293.75858173798769712, 743239.36928706080652773 4322294.79187813121825457, 743240.01719110168050975 4322296.34617750998586416, 743240.31422637426294386 4322296.99292888585478067, 743241.19912910682614893 4322298.75181530602276325, 743241.44670213002245873 4322299.21338909026235342, 743242.5618835351197049 4322301.16783267725259066, 743242.77981544309295714 4322301.53162774536758661, 743244.11893532355315983 4322303.66318874433636665, 743244.31724656943697482 4322303.96651460696011782, 743245.87420471687801182 4322306.25622326787561178, 743246.05911552160978317 4322306.51896966341882944, 743247.82749173836782575 4322308.94794623088091612, 743248.00376222655177116 4322309.18274299614131451, 743249.97697631444316357 4322311.73227772675454617, 743250.14906656020320952 4322311.94840472750365734, 743252.32087831653188914 4322314.59984786715358496, 743252.49181835609488189 4322314.80296503566205502, 743254.85570758674293756 4322317.53748682793229818, 743255.02380744542460889 4322317.72703417390584946, 743257.57117401831783354 4322320.52716485690325499, 743257.71899375622160733 4322320.6861626198515296, 743260.43052785913459957 4322323.53976237587630749, 743260.55749754025600851 4322323.67097051814198494, 743263.41216941981110722 4322326.56741952151060104, 743263.51996908313594759 4322326.67513799574226141, 743266.49590901110786945 4322329.60398640856146812, 743266.58910867548547685 4322329.69452512264251709, 743269.66539688454940915 4322332.64443312026560307, 743269.74313657218590379 4322332.71818206924945116, 743272.8976633440470323 4322335.67888982594013214, 743272.96302306035067886 4322335.73968895524740219, 743276.17479864088818431 4322338.70064662862569094, 743276.22920838894788176 4322338.75043591484427452, 743279.47681302833370864 4322341.70041367970407009, 743279.52098281506914645 4322341.74029311165213585, 743282.78378675505518913 4322344.66883114073425531, 743282.82356655690819025 4322344.70434062648564577, 743286.08550994517281651 4322347.60084907244890928, 743286.12265975272748619 4322347.63367860019207001, 743289.36855271435342729 4322350.48727762512862682, 743289.40307253052014858 4322350.51748719159513712, 743292.61747519345954061 4322353.317366948351264, 743292.64980501681566238 4322353.34540654718875885, 743295.81799750623758882 4322356.08127719722688198, 743295.84806733811274171 4322356.10713682603091002, 743298.95418978901579976 4322358.76797852758318186, 743298.98356961971148849 4322358.79304816666990519, 743302.01321214367635548 4322361.36815107613801956, 743302.04039198509417474 4322361.39117074850946665, 743304.97799471823964268 4322363.87007501721382141, 743305.00318456871900707 4322363.89125471282750368, 743307.83873761876020581 4322366.26811043918132782, 743307.85723750712350011 4322366.28359021618962288, 743310.60173090174794197 4322368.57286718860268593, 743310.61013085022568703 4322368.57985709048807621, 743313.279074611607939 4322370.80117504298686981, 743315.88251878065057099 4322372.96860378514975309, 743318.43185340764466673 4322375.09832309372723103, 743320.94381849013734609 4322377.20993269421160221, 743323.4341240378562361 4322379.32254232838749886, 743325.9195300699211657 4322381.45667169988155365, 743328.40569664933718741 4322383.62281068507581949, 743330.86866410833317786 4322385.81145942863076925, 743333.28192279557697475 4322388.01113812159746885, 743335.61916304752230644 4322390.20985695440322161, 743337.85281519091222435 4322392.39365613833069801, 743339.95489953178912401 4322394.54698591865599155, 743341.89711635140702128 4322396.65243655443191528, 743343.65493586508091539 4322398.69330828636884689, 743345.22425817814655602 4322400.67061111610382795, 743346.62713314546272159 4322402.60205478128045797, 743347.87811053486075252 4322404.49180920794606209, 743348.98724015662446618 4322406.34089436568319798, 743349.96539182215929031 4322408.15136021189391613, 743350.82292536867316812 4322409.92633669171482325, 743351.56996064237318933 4322411.66878375131636858, 743352.21385746891610324 4322413.37776138912886381, 743352.75545552850235254 4322415.03615982364863157, 743353.18841440381947905 4322416.61266944650560617, 743353.51053370721638203 4322418.08308057114481926, 743353.7237330237403512 4322419.42595345713198185, 743353.83397181599866599 4322420.61796838231384754, 743353.85267941909842193 4322421.63512564077973366, 743353.79872503271326423 4322422.45436548162251711, 743353.69985779421404004 4322423.05934807285666466, 743353.58749726717360318 4322423.46264319960027933, 743353.47420445329044014 4322423.73562996555119753, 743353.33323173737153411 4322423.98144710808992386, 743353.09975207969546318 4322424.2912435932084918, 743352.69285809888970107 4322424.71800888702273369, 743352.03823162405751646 4322425.27743290085345507, 743351.08404356939718127 4322425.96028582844883204, 743349.80333413800690323 4322426.74636796582490206, 743348.19097305671311915 4322427.61417958978563547, 743346.28375900897663087 4322428.53248102683573961, 743344.12985049991402775 4322429.47337256278842688, 743341.77133630530443043 4322430.41753436997532845, 743339.24709535914007574 4322431.35017656534910202, 743336.59136674809269607 4322432.25997924711555243, 743333.83920956449583173 4322433.13703248463571072, 743331.02089302788954228 4322433.97261633444577456, 743328.15498669736552984 4322434.7639208072796464, 743325.25536034989636391 4322435.514575838111341, 743322.34022366255521774 4322436.22769136168062687, 743319.42876630660612136 4322436.90727729350328445, 743316.54046794306486845 4322437.55726355500519276, 743313.69440825213678181 4322438.18175007402896881, 743310.90891692147124559 4322438.78491676319390535, 743308.21161343739368021 4322439.37010353896766901, 743308.18592407263349742 4322439.37571350391954184, 743305.61042770929634571 4322439.94157033786177635, 743305.59938798251096159 4322439.94400031957775354, 743303.13382895675022155 4322440.48862724937498569, 743300.77194730984047055 4322441.00715434178709984, 743298.5017632202943787 4322441.49546167440712452, 743296.30226709111593664 4322441.95167929586023092, 743294.15103937161620706 4322442.37487726006656885, 743292.02589051413815469 4322442.76428560726344585, 743289.89453119796235114 4322443.12063437700271606, 743287.69588284578640014 4322443.45215355232357979, 743285.39251656015403569 4322443.77734297607094049, 743283.01770187739748508 4322444.10894242022186518, 743282.9544733555521816 4322444.11797240003943443, 743280.55651948763988912 4322444.46843164227902889, 743280.42017269716598094 4322444.48932158853858709, 743278.01519959373399615 4322444.87476040329784155, 743277.80379463674034923 4322444.91097026877105236, 743275.40053243341390043 4322445.34919841401278973, 743275.11591935437172651 4322445.40537813398987055, 743272.72327817359473556 4322445.91379538550972939, 743272.36613707477226853 4322445.99655488599091768, 743269.99284704180900007 4322446.59256099909543991, 743269.58760744309984148 4322446.70343021769076586, 743267.24220858095213771 4322447.39837504271417856, 743266.8847880259854719 4322447.51160416193306446, 743264.5764398843748495 4322448.29082786943763494, 743264.28688773175235838 4322448.39355701580643654, 743262.02400975930504501 4322449.23571986053138971, 743261.79331614030525088 4322449.3248390918597579, 743259.58499778318218887 4322450.20947131514549255, 743259.41469256882555783 4322450.27952068950980902, 743257.26955326623283327 4322451.18503254931420088, 743257.15471653058193624 4322451.2343521062284708, 743255.08171573095023632 4322452.1401038495823741, 743255.0281572638778016 4322452.16369363572448492, 743253.04054427216760814 4322453.04602554719895124, 743251.17827764444518834 4322453.87044799327850342, 743249.45779666909947991 4322454.6160512138158083, 743247.85391200229059905 4322455.29010515660047531, 743246.35308399936184287 4322455.89702978543937206, 743244.94880284066312015 4322456.43924508150666952, 743243.63420870702248067 4322456.91898103151470423, 743242.40068184048868716 4322457.3396175978705287, 743241.23886250681243837 4322457.70511474553495646, 743240.15276061999611557 4322458.01558248046785593, 743239.17324538726825267 4322458.26241084467619658, 743238.23537831578869373 4322458.45437984261661768, 743237.16928335884585977 4322458.6150094261392951, 743235.80353422136977315 4322458.75177975744009018, 743234.01021342095918953 4322458.85660114046186209, 743231.69531270337756723 4322458.91745386086404324, 743228.77904357179068029 4322458.92528815008699894, 743225.18683747365139425 4322458.87429419625550508, 743220.86533546971622854 4322458.76163211930543184, 743215.85413676919415593 4322458.58927183039486408, 743210.21206020493991673 4322458.36029320489615202, 743203.99298471491783857 4322458.07818611524999142, 743197.24950927821919322 4322457.74706043768674135, 743190.03215289139188826 4322457.36991605162620544, 743182.39052458934020251 4322456.95043284259736538, 743174.37273343361448497 4322456.49223068449646235, 743166.03071844833903015 4322456.00113943964242935, 743157.45595801598392427 4322455.49368874914944172, 743157.44345826399512589 4322455.49294877797365189, 743148.7424005214124918 4322454.98894823715090752, 743148.71464107348583639 4322454.98738829977810383, 743139.98831426282413304 4322454.50626751128584146, 743139.94459513237234205 4322454.50394760724157095, 743131.29193753027357161 4322454.06487617455422878, 743131.22986877162475139 4322454.06191630847752094, 743122.75017865956760943 4322453.68443384021520615, 743122.66715032956562936 4322453.68108400795608759, 743114.45973597106058151 4322453.38404010888189077, 743114.34892821963876486 4322453.38065032102167606, 743106.51314790127798915 4322453.18400459177792072, 743106.37329077068716288 4322453.18147483374923468, 743098.98562315246090293 4322453.09945697896182537, 743098.83378630550578237 4322453.0989172114059329, 743091.87995161022990942 4322453.12730730231851339, 743091.72224492789246142 4322453.12919751275330782, 743085.16550377127714455 4322453.25939571484923363, 743085.00386721768882126 4322453.26391589548438787, 743078.8072202114854008 4322453.48725236672908068, 743078.64405373763293028 4322453.4944625198841095, 743072.77064149966463447 4322453.80226742755621672, 743072.61054500448517501 4322453.81194754410535097, 743067.0233281358378008 4322454.194701062515378, 743066.86676160735078156 4322454.20666114520281553, 743061.52924073208123446 4322454.65661343187093735, 743061.38382399547845125 4322454.66994348261505365, 743056.25881971628405154 4322455.17745471280068159, 743056.12057285476475954 4322455.19211472943425179, 743051.17884566844440997 4322455.75095502752810717, 743051.02767914033029228 4322455.76921502500772476, 743046.27162901987321675 4322456.38053436670452356, 743046.09859304479323328 4322456.40431432519108057, 743041.537169867195189 4322457.07180265989154577, 743041.33884454611688852 4322457.10286256112158298, 743036.98232816020026803 4322457.82996982801705599, 743036.75414363527670503 4322457.87077964469790459, 743032.61184391262941062 4322458.66123577300459146, 743032.34935033158399165 4322458.71497548278421164, 743028.43104712618514895 4322459.57209042180329561, 743028.12820469681173563 4322459.64328996650874615, 743024.44330787099897861 4322460.57034365832805634, 743024.09006692667026073 4322460.66612296923995018, 743020.64868634473532438 4322461.66715534590184689, 743020.24266706127673388 4322461.79469432774931192, 743017.05275259260088205 4322462.87177535519003868, 743016.59842499368824065 4322463.03752392064779997, 743013.6634465423412621 4322464.18942360766232014, 743013.16187076212372631 4322464.40222164522856474, 743010.48304825159721076 4322465.62591003067791462, 743009.92580474680289626 4322465.90170734189450741, 743007.50540808844380081 4322467.19484444987028837, 743006.89187718415632844 4322467.55117081664502621, 743004.73130629258230329 4322468.91071668732911348, 743004.05768853891640902 4322469.37409177981317043, 743002.1589433376211673 4322470.79796643275767565, 743001.43516901403199881 4322471.39579987991601229, 742999.79997941094916314 4322472.8809533528983593, 742999.04267877258826047 4322473.64717469457536936, 742997.67280469054821879 4322475.1913470234721899, 742996.93504671391565353 4322476.13042612746357918, 742995.82736812345683575 4322477.72830737382173538, 742995.205669209593907 4322478.75081524252891541, 742994.33980628487188369 4322480.38824561890214682, 742993.86773438914678991 4322481.41831317078322172, 742993.2179373730905354 4322483.07863293588161469, 742992.88983170653227717 4322484.06534082349389791, 742992.43046083103399724 4322485.73158023227006197, 742992.22488123853690922 4322486.64068892598152161, 742991.93078673584386706 4322488.29660821985453367, 742991.82134329271502793 4322489.10152810625731945, 742991.66695539583452046 4322490.73016753606498241, 742991.62554849486332387 4322491.41996879316866398, 742991.58529744099359959 4322493.00460862461477518, 742991.5871175394859165 4322493.57609132584184408, 742991.63554356573149562 4322495.10024179890751839, 742991.66217148466967046 4322495.57791565917432308, 742991.77791480778250843 4322497.02876696828752756, 742991.82655212329700589 4322497.49836090486496687, 742992.00260294880717993 4322498.87907301727682352, 742992.07683003065176308 4322499.36550670303404331, 742992.31115851458162069 4322500.68287954200059175, 742992.41010507626924664 4322501.16889318823814392, 742992.69961141562089324 4322502.43010667152702808, 742992.82223736657761037 4322502.90957037080079317, 742993.16436173510737717 4322504.12152440194040537, 742993.30724697292316705 4322504.58449828252196312, 742993.69970955397002399 4322505.75471277348697186, 742993.85602397262118757 4322506.18750701937824488, 742994.29561494220979512 4322507.32219189498573542, 742994.4600585896987468 4322507.7209165683016181, 742994.94474812538828701 4322508.82778173126280308, 742995.1475116063375026 4322509.26216589473187923, 742995.68608963512815535 4322510.34735126234591007, 742996.09752431663218886 4322511.09453112538903952, 742996.74559973448049277 4322512.16110657155513763, 742997.42829298845026642 4322513.1463230075314641, 742998.25398442731238902 4322514.19726839661598206, 742999.15875338285695761 4322515.20106427371501923, 743000.22948947851546109 4322516.23852948471903801, 743001.2264637304469943 4322517.08538723271340132, 743002.60981313034426421 4322518.11259212158620358, 743003.56801433605141938 4322518.74224270321428776, 743005.3317256688605994 4322519.76145714335143566, 743006.16680592589545995 4322520.19300043024122715, 743008.37844783859327435 4322521.20720429159700871, 743009.06970851321239024 4322521.49340964388102293, 743011.79677963652648032 4322522.50474279839545488, 743012.33478166302666068 4322522.68705969490110874, 743015.61647118930704892 4322523.69614208582788706, 743015.99161527852993459 4322523.80352017469704151, 743019.75290461326949298 4322524.80124201904982328, 743020.02355017641093582 4322524.86901076417416334, 743024.16081126872450113 4322525.843 +78236252814531, 743024.36810777557548136 4322525.89030147064477205, 743028.77746259141713381 4322526.83077311795204878, 743028.94444971776101738 4322526.86491244379431009, 743033.5226102105807513 4322527.76009443122893572, 743033.66556770994793624 4322527.786963882856071, 743038.30855583667289466 4322528.62489651143550873, 743038.4365335654001683 4322528.64713604282587767, 743043.04082128137815744 4322529.41646960191428661, 743043.16147911129519343 4322529.43586918152868748, 743047.62391836987808347 4322530.1255539683625102, 743047.75130604894366115 4322530.14440354239195585, 743051.99280831520445645 4322530.74411979597061872, 743052.15265536075457931 4322530.76540929172188044, 743056.19616007851436734 4322531.27076703030616045, 743056.39494634221773595 4322531.29359645489603281, 743060.28824245627038181 4322531.70124565251171589, 743060.52337794424965978 4322531.72306503634899855, 743064.31432439899072051 4322532.02969567012041807, 743064.57970918633509427 4322532.04760506004095078, 743068.31632492528297007 4322532.24998709745705128, 743068.60179917793720961 4322532.26136654056608677, 743072.33164315926842391 4322532.35663994867354631, 743072.6278070465195924 4322532.35981948301196098, 743076.39896820369176567 4322532.3444242374971509, 743076.69188200403004885 4322532.33893388696014881, 743080.55208929558284581 4322532.21002995129674673, 743080.826023357687518 4322532.19711972028017044, 743084.8051261625951156 4322531.95486705005168915, 743085.02762124256696552 4322531.93882693443447351, 743089.08362075209151953 4322531.60093536879867315, 743089.2611267619067803 4322531.58455532044172287, 743093.33415459375828505 4322531.17201467603445053, 743093.47554137604311109 4322531.15667466446757317, 743097.50559915264602751 4322530.69049475528299809, 743097.61578661925159395 4322530.67713476903736591, 743101.54269597306847572 4322530.17865541111677885, 743101.62614403991028666 4322530.16770543158054352, 743105.39003658446017653 4322529.65769645385444164, 743105.44491530628874898 4322529.65010647382587194, 743108.98597267549484968 4322529.15029768738895655, 743109.01333203737158328 4322529.14639769587665796, 743112.26706594694405794 4322528.67795892711728811, 743115.17178806848824024 4322528.26239998731762171, 743117.74030827777460217 4322527.90805076062679291, 743120.01572572893928736 4322527.61776114068925381, 743122.04320950258988887 4322527.39286105521023273, 743123.87575847760308534 4322527.23220043443143368, 743125.57707127719186246 4322527.1330192256718874, 743127.22087631653994322 4322527.09269735589623451, 743128.88587195833679289 4322527.11136470455676317, 743130.63531695259734988 4322527.19266114011406898, 743132.488990971702151 4322527.34142656903713942, 743134.45301397738512605 4322527.56289092171937227, 743136.5364758858922869 4322527.86284410580992699, 743138.74631663982290775 4322528.24621605034917593, 743141.08917619823478162 4322528.71857667900621891, 743143.57111452182289213 4322529.28469591960310936, 743146.19673159380909055 4322529.94933370780199766, 743148.96545749483630061 4322530.7160400003194809, 743151.86650249315425754 4322531.58742478210479021, 743154.89263682090677321 4322532.56821800209581852, 743158.0383706723805517 4322533.66276961378753185, 743161.29722425830550492 4322534.87542957719415426, 743164.66284779249690473 4322536.21072784252464771, 743168.1298714685253799 4322537.67347435373812914, 743171.69626543764024973 4322539.26972904335707426, 743175.35874981351662427 4322541.00203188415616751, 743179.06777508626691997 4322542.83980333432555199, 743182.75078197161201388 4322544.73809407092630863, 743186.33356118539813906 4322546.65009478665888309, 743189.74265343346633017 4322548.52917617745697498, 743192.90365941892378032 4322550.32746895216405392, 743195.73967986123170704 4322551.9952038461342454, 743198.16699553607031703 4322553.47761167213320732, 743200.11232707719318569 4322554.72416316531598568, 743201.57919429522007704 4322555.72830840479582548, 743202.59806658793240786 4322556.49198731873184443, 743203.21237298776395619 4322557.01142989099025726, 743203.49708203156478703 4322557.29248593933880329, 743203.57996205310337245 4322557.39120457880198956, 743203.61642223666422069 4322557.4445038540288806, 743203.7131732665002346 4322557.61644154973328114, 743203.85705559083726257 4322557.91707755252718925, 743204.01104919170029461 4322558.30161248426884413, 743204.18894510949030519 4322558.84504537936300039, 743204.39901478192768991 4322559.63843507692217827, 743204.63558938098140061 4322560.7413108367472887, 743204.88989977864548564 4322562.19231218565255404, 743205.15574664145242423 4322564.02210874203592539, 743205.4306805667001754 4322566.26145012490451336, 743205.71472182811703533 4322568.92580613493919373, 743206.00592910964041948 4322571.9384377496317029, 743206.30275058187544346 4322575.19449629262089729, 743206.60476448992267251 4322578.59412301704287529, 743206.91212902753613889 4322582.03558920975774527, 743206.91481949342414737 4322582.06515883281826973, 743207.22614273219369352 4322585.43792588729411364, 743207.23197369242552668 4322585.49910510703921318, 743207.54904408240690827 4322588.71787409577518702, 743207.55948565027210861 4322588.8186428127810359, 743207.882961580529809 4322591.79321487247943878, 743207.90075391437858343 4322591.94585292600095272, 743208.23148412746377289 4322594.60609893687069416, 743208.25720698712393641 4322594.79785648547112942, 743208.59647162910550833 4322597.15353632625192404, 743208.63156489143148065 4322597.37896343506872654, 743208.97986447787843645 4322599.45974672678858042, 743209.02831819618586451 4322599.72686329763382673, 743209.38710322708357126 4322601.56271965987980366, 743209.45224731718190014 4322601.87031569238752127, 743209.82213829748798162 4322603.49059476144611835, 743209.90749263670295477 4322603.83603029139339924, 743210.28917008335702121 4322605.27064167987555265, 743210.39887455431744456 4322605.65230672247707844, 743210.79402895912062377 4322606.93091006297618151, 743210.92416319018229842 4322607.32307493686676025, 743211.3331650699255988 4322608.47540985234081745, 743211.48586901591625065 4322608.8779545621946454, 743211.91092877718620002 4322609.92957072705030441, 743212.12033293407876045 4322610.41087436769157648, 743212.56761058338452131 4322611.36936167161911726, 743212.86304474179632962 4322611.95200392324477434, 743213.34022019081749022 4322612.82143230549991131, 743213.74508367676753551 4322613.49493326246738434, 743214.25942683964967728 4322614.27904267050325871, 743214.79644878732506186 4322615.02123257610946894, 743215.35547957266680896 4322615.72368294931948185, 743216.03292903408873826 4322616.49082235060632229, 743216.64388735278043896 4322617.11514363810420036, 743217.44618364726193249 4322617.85033326875418425, 743218.11646941700018942 4322618.40055540949106216, 743219.00947237829677761 4322619.05436593573540449, 743219.74694549641571939 4322619.53396887890994549, 743220.65303588507231325 4322620.05789102893322706, 743221.46040635032113642 4322620.46993471961468458, 743222.2945956657640636 4322620.84854879975318909, 743223.15871376788709313 4322621.19394325464963913, 743223.92351260944269598 4322621.46420879382640123, 743224.82663871336262673 4322621.74270403757691383, 743225.53835725947283208 4322621.93376064579933882, 743226.46253174729645252 4322622.14567670226097107, 743227.15716963319573551 4322622.27929406054317951, 743228.08538284385576844 4322622.42400095332413912, 743228.77420995640568435 4322622.50702895317226648, 743229.68825228395871818 4322622.5851467065513134, 743230.41243781556840986 4322622.62065525818616152, 743231.29504961729981005 4322622.63189389649778605, 743232.08890268870163709 4322622.61046306788921356, 743232.92225433129351586 4322622.5547926165163517, 743233.83460348402149975 4322622.45160264987498522, 743234.60527523665223271 4322622.3283731359988451, 743235.64983948261942714 4322622.10353451874107122, 743236.36192120972555131 4322621.9099359679967165, 743237.48617107234895229 4322621.53135917242616415, 743238.14838252775371075 4322621.26366162113845348, 743239.27341953956056386 4322620.72495684307068586, 743239.89358048443682492 4322620.37889033276587725, 743240.91113774129189551 4322619.7274771174415946, 743241.49784793867729604 4322619.29980168119072914, 743242.35007784981280565 4322618.60364925395697355, 743242.91170706320554018 4322618.09084492456167936, 743243.58479106263257563 4322617.41463248990476131, 743244.12968904082663357 4322616.81227930914610624, 743244.62910805596038699 4322616.21503612864762545, 743245.1657045689644292 4322615.52003412134945393, 743245.53032804722897708 4322615.01610994897782803, 743246.06576288887299597 4322614.22546914499253035, 743246.33101004501804709 4322613.81230396963655949, 743246.86846319073811173 4322612.92810434103012085, 743247.06807294581085443 4322612.58449838124215603, 743247.60899440664798021 4322611.60928988829255104, 743247.75834634550847113 4322611.32967319432646036, 743248.30500612058676779 4322610.26596580538898706, 743248.41770976444240659 4322610.03968849312514067, 743248.97187787713482976 4322608.89083216153085232, 743249.05861279973760247 4322608.70622436236590147, 743249.62199925654567778 4322607.4746790574863553, 743249.68769528961274773 4322607.32796080876141787, 743250.26230009808205068 4322606.01656649447977543, 743250.31212701124604791 4322605.90087787341326475, 743250.89974018512293696 4322604.51247450523078442, 743250.93569791154004633 4322604.42638553492724895, 743251.53801949485205114 4322602.96540305856615305, 743251.55828819656744599 4322602.91585365030914545, 743252.17640836234204471 4322601.39347192272543907, 743252.1821379940956831 4322601.37934209313243628, 743252.81366717570926994 4322599.8170908410102129, 743253.45321598451118916 4322598.2431897260248661, 743254.09929477691184729 4322596.67605851404368877, 743254.75175379379652441 4322595.12906703911721706, 743255.41085325879976153 4322593.61516513768583536, 743256.07425350288394839 4322592.15037260763347149, 743256.74137477576732635 4322590.74800929334014654, 743257.42164672119542956 4322589.39910528436303139, 743258.12902873370330781 4322588.08596078772097826, 743258.88041007705032825 4322586.7868360485881567, 743259.69297001988161355 4322585.48057131003588438, 743260.58526782225817442 4322584.14725680090487003, 743261.57747269899118692 4322582.76619274634867907, 743262.68773399095516652 4322581.32164932042360306, 743263.92891130072530359 4322579.80622660182416439, 743265.29182516026776284 4322578.23921434953808784, 743266.76205631671473384 4322576.64578227791935205, 743268.32384553295560181 4322575.05040009412914515, 743269.96240352909080684 4322573.47658752556890249, 743271.66265100543387234 4322571.94592432770878077, 743273.40727872354909778 4322570.48121022991836071, 743275.18426724581513554 4322569.09989503864198923, 743277.00374630268197507 4322567.79889877885580063, 743278.88769506709650159 4322566.5571416737511754, 743280.84290318889543414 4322565.3628738671541214, 743282.87017051561269909 4322564.2086654556915164, 743284.97030689648818225 4322563.0866665281355381, 743287.14214222691953182 4322561.98971718363463879, 743289.38548636890482157 4322560.90981751307845116, 743291.69645927543751895 4322559.83962762728333473, 743294.06118120043538511 4322558.77733755856752396, 743296.4548527707811445 4322557.72901726700365543, 743298.85304459952749312 4322556.70052671898156404, 743301.23490721266716719 4322555.69705587718635798, 743303.58037109393626451 4322554.72246471792459488, 743305.86756678856909275 4322553.78168322052806616, 743308.07889472681563348 4322552.87827135715633631, 743310.19068548432551324 4322552.01690910942852497, 743310.2014751813840121 4322552.01249915082007647, 743312.19263927289284766 4322551.19762649014592171, 743312.23697802540846169 4322551.17935665510594845, 743314.12058495287783444 4322550.39793372433632612, 743314.20158266345970333 4322550.36391403526067734, 743316.00109162938315421 4322549.59878102317452431, 743316.12278816127218306 4322549.54608150850981474, 743317.86162836395669729 4322548.77935860212892294, 743318.01813385402783751 4322548.70873926300555468, 743319.71956450724974275 4322547.92334664054214954, 743319.90622905211057514 4322547.83482747711241245, 743321.5937993525294587 4322547.01312532741576433, 743321.80014322337228805 4322546.90968632511794567, 743323.49675238889176399 4322546.034574830904603, 743323.71308584825601429 4322545.91961595695465803, 743325.44222307961899787 4322544.97339530289173126, 743325.65354657056741416 4322544.85440648347139359, 743327.4319912939099595 4322543.82438680343329906, 743327.62205533590167761 4322543.71147794276475906, 743329.43962787988130003 4322542.60442916583269835, 743329.61144240712746978 4322542.49739025346934795, 743331.45104334107600152 4322541.3252222565934062, 743331.61079817381687462 4322541.2212733281776309, 743333.45564805367030203 4322539.99570598546415567, 743333.61048297141678631 4322539.8907370762899518, 743333.88877353817224503 4322539.69826479069888592, 743336.75798203691374511 4322540.71844215597957373, 743339.92829728289507329 4322540.79184664692729712, 743342.96217774541582912 4322539.86889378447085619, 743345.55450142489280552 4322538.04240285977721214, 743358.33530459960456938 4322525.57390006072819233, 743380.63557403301820159 4322519.58066222257912159, 743386.58130758593324572 4322523.95822889916598797, 743389.42830410157330334 4322525.41864652000367641, 743392.59081681969109923 4322525.90506582893431187, 743395.74505160632543266 4322525.36768791172653437, 743398.56807616166770458 4322523.86153254937380552, 743399.66737617505714297 4322522.70335314236581326, 743400.34634880605153739 4322522.71286426018923521, 743401.03359424031805247 4322522.69886342436075211, 743402.28210702154319733 4322522.63044244330376387, 743402.85084433341398835 4322522.58296220283955336, 743404.1710042105987668 4322522.43471211567521095, 743404.61451391177251935 4322522.3748322119936347, 743406.0178607600973919 4322522.15327291283756495, 743406.34996281191706657 4322522.0950831500813365, 743407.82770699565298855 4322521.81041452940553427, 743408.0700710650999099 4322521.76060479320585728, 743409.60690311435610056 4322521.42491671815514565, 743409.78182876540813595 4322521.38506695814430714, 743411.36363917693961412 4322521.00969931203871965, 743411.48211619677022099 4322520.98081949725747108, 743413.09443547565024346 4322520.57738215569406748, 743413.16266374778933823 4322520.56005227286368608, 743414.79061241820454597 4322520.14050510246306658, 743414.8159217742504552 4322520.13394514750689268, 743416.43491058994550258 4322519.71218802034854889, 743418.00511071109212935 4322519.30663076136261225, 743419.48765326035209 4322518.93531320709735155, 743420.86239891988225281 4322518.61272520199418068, 743422.1228179968893528 4322518.34885663073509932, 743423.26554066222161055 4322518.14916743710637093, 743424.28624704689718783 4322518.01608759351074696, 743425.18490711750928313 4322517.94767711870372295, 743425.96737065084744245 4322517.9383360855281353, 743426.65817701746709645 4322517.98110453691333532, 743427.35288430191576481 4322518.08046227972954512, 743428.1284111300483346 4322518.24918904155492783, 743428.98606757167726755 4322518.49294474814087152, 743429.91378386446740478 4322518.81078942585736513, 743430.89772020606324077 4322519.19754317123442888, 743431.92215675278566778 4322519.64377611223608255, 743432.97805353929288685 4322520.14060838241130114, 743434.05151060281787068 4322520.67378017865121365, 743435.11955809453502297 4322521.22484175302088261, 743436.20172573905438185 4322521.8011329984292388, 743437.34459296450950205 4322522.42541355732828379, 743438.59495920606423169 4322523.12060307711362839, 743439.99472394888289273 4322523.90707124397158623, 743441.5810967143625021 4322524.80166779831051826, 743443.39007703785318881 4322525.82049247995018959, 743443.40805684227962047 4322525.830592330545187, 743445.46724434592761099 4322526.984744967892766, 743445.4849441503174603 4322526.99464481696486473, 743447.81827854784205556 4322528.29624522663652897, 743450.35096079634968191 4322529.71132393553853035, 743452.9912220990518108 4322531.19967158325016499, 743455.65614353574346751 4322532.72478874213993549, 743458.25728624756447971 4322534.24695603922009468, 743460.70080142305232584 4322535.72273414768278599, 743462.88421028957236558 4322537.10068385489284992, 743464.69031412247568369 4322538.31503614969551563, 743466.03901361068710685 4322539.3101718295365572, 743466.95477803342510015 4322540.07424101233482361, 743467.49685608269646764 4322540.60287366341799498, 743467.75793609325774014 4322540.9112194562330842, 743467.86392666061874479 4322541.06828735023736954, 743467.94105765828862786 4322541.21573540847748518, 743468.06721057160757482 4322541.52925133239477873, 743468.25703717023134232 4322542.12647364754229784, 743468.48056744388304651 4322542.97121283505111933, 743468.69965030113235116 4322543.95706028770655394, 743468.90009537921287119 4322545.04655647277832031, 743469.07528253959026188 4322546.2240116074681282, 743469.22005167067982256 4322547.47721584420651197, 743469.33049262582790107 4322548.79318935424089432, 743469.402725261868909 4322550.15908230002969503, 743469.43441976397298276 4322551.58291458804160357, 743469.42674756550695747 4322553.14703518897294998, 743469.40152893133927137 4322554.89209357183426619, 743469.40058071084786206 4322554.99160233698785305, 743469.39225359261035919 4322556.84240938443690538, 743469.39487845893017948 4322557.12084592413157225, 743469.43977150018326938 4322559.04343200195580721, 743469.45910870609804988 4322559.47389663383364677, 743469.5926814004778862 4322561.48137153126299381, 743469.64454003574792296 4322562.0311446338891983, 743469.90196187736000866 4322564.13646814040839672, 743470.00004102138336748 4322564.76951014529913664, 743470.41657151724211872 4322566.98622203897684813, 743470.56872034224215895 4322567.66494339890778065, 743471.17989898775704205 4322570.00658346805721521, 743471.37232641247101128 4322570.65362516231834888, 743472.19822283391840756 4322573.12246335204690695, 743472.36816757742781192 4322573.59128729160875082, 743473.36806193657685071 4322576.14875413198024035, 743473.49669479066506028 4322576.46201006229966879, 743474.61457737791351974 4322579.05840625986456871, 743474.70127902901731431 4322579.25399371236562729, 743475.88093014468904585 4322581.8400899525731802, 743475.92667093919590116 4322581.93893865868449211, 743477.11230086733121425 4322584.46490564104169607, 743478.22423952876124531 4322586.83225470129400492, 743479.17266653652768582 4322588.91321754641830921, 743479.89112157595809549 4322590.6115754647180438, 743480.36047442071139812 4322591.89200892578810453, 743480.63242495874874294 4322592.80910716578364372, 743480.76164281775709242 4322593.40629957709461451, 743480.80452787387184799 4322593.74292534403502941, 743480.81057089730165899 4322593.92113312426954508, 743480.8014039226109162 4322594.08153114933520555, 743480.76180992461740971 4322594.37447757553309202, 743480.66707075433805585 4322594.87569149490445852, 743480.53967365471180528 4322595.45545448455959558, 743480.40819539525546134 4322595.9647183557972312, 743480.26590647094417363 4322596.42365286685526371, 743480.09058846638072282 4322596.895697264932096, 743479.85075312771368772 4322597.44252082053571939, 743479.51191200548782945 4322598.11113301292061806, 743479.04079632996581495 4322598.9320134986191988, 743478.37873848073650151 4322599.97052155528217554, 743477.44223228597547859 4322601.34483583737164736, 743477.34657680848613381 4322601.48784419428557158, 743476.24353948934003711 4322603.16794491745531559, 743475.92465531534980983 4322603.68750892300158739, 743474.83310175943188369 4322605.59403681382536888, 743474.40354555542580783 4322606.43385700229555368, 743473.41532467619981617 4322608.6138213574886322, 743472.9914030353538692 4322609.71851825062185526, 743472.19818375213071704 4322612.21873834822326899, 743472.16883881541434675 4322612.33813540916889906, 743466.15352099016308784 4322614.5522178690880537, 743463.25874064059462398 4322616.21077134180814028, 743461.07067076361272484 4322618.72929314523935318, 743459.83288132166489959 4322621.82744641695171595, 743459.68313334858976305 4322625.16037525329738855, 743460.63810993835795671 4322628.35708424169570208, 743483.87973875412717462 4322675.51652739942073822, 743485.86786568793468177 4322678.2552107647061348, 743488.65558145870454609 4322680.17394321504980326, 743491.92362883943133056 4322681.05296790227293968, 743495.29770386184100062 4322680.79160657525062561, 743497.67543398728594184 4322679.73726123757660389, 743497.99026012606918812 4322680.36224824469536543, 743498.06517113780137151 4322680.50797634106129408, 743498.65545871388167143 4322681.63351160474121571, 743498.8137805387377739 4322681.92362779751420021, 743499.48126740544103086 4322683.10012232791632414, 743499.71768945851363242 4322683.49533711373806, 743500.48569498304277658 4322684.7145609837025404, 743500.78430665342602879 4322685.16152504831552505, 743501.66963029187172651 4322686.4124883646145463, 743501.97903115476947278 4322686.82654282264411449, 743502.97274270281195641 4322688.08708587381988764, 743503.29199284268543124 4322688.47187068406492472, 743504.37860217748675495 4322689.71684380993247032, 743504.72110162233002484 4322690.0897587314248085, 743505.8850986307952553 4322691.29445225745439529, 743506.26917727594263852 4322691.67113707307726145, 743507.49524183652829379 4322692.81053132656961679, 743507.94187943008728325 4322693.2015558872371912, 743509.2143414233578369 4322694.25049119628965855, 743509.7511475223582238 4322694.66328536719083786, 743511.05465683527290821 4322695.59717206191271544, 743511.72217066865414381 4322696.03613573219627142, 743513.04106718546245247 4322696.82988414168357849, 743513.88818757061380893 4322697.28570736292749643, 743515.21123113832436502 4322697.91752777621150017, 743516.24173712579067796 4322698.34087115433067083, 743517.57228753413073719 4322698.8026636615395546, 743518.77190841897390783 4322699.13693791534751654, 743520.11825539555866271 4322699.42312257271260023, 743521.42689143714960665 4322699.61192848347127438, 743522.79637474426999688 4322699.71776534244418144, 743524.1378070053178817 4322699.73118337616324425, 743525.53810638561844826 4322699.65110248979181051, 743526.81641696649603546 4322699.49493270367383957, 743528.25559216691181064 4322699.22411412000656128, 743529.40416313603054732 4322698.93665613327175379, 743530.8897739069070667 4322698.46980990841984749, 743531.8712769728153944 4322698.10386311635375023, 743533.41103306214790791 4322697.43595929909497499, 743534.22014920739457011 4322697.0407930975779891, 743535.81531057122629136 4322696.17068170290440321, 743536.47204995749052614 4322695.77915565855801105, 743538.09821739629842341 4322694.72338651027530432, 743538.65755882672965527 4322694.33249058667570353, 743540.28354335064068437 4322693.1114934803918004, 743540.78119592240545899 4322692.71232773922383785, 743542.3763585394481197 4322691.3470424534752965, 743542.8414013518486172 4322690.92295705992728472, 743544.3745430763810873 4322689.43377338629215956, 743544.82330550439655781 4322688.96875851787626743, 743546.26336735347285867 4322687.3766762325540185, 743546.70887873531319201 4322686.8485521525144577, 743548.02529170596972108 4322685.17389104515314102, 743548.47552136215381324 4322684.55360809247940779, 743549.63708646758459508 4322682.81699795834720135, 743550.07414469355717301 4322682.10018621478229761, 743551.05969269713386893 4322680.31968685798346996, 743551.40936314524151385 4322679.62558495067059994, 743552.23762379237450659 4322677.80907624308019876, 743552.49160773155745119 4322677.19950342364609241, 743553.19071052444633096 4322675.35199527721852064, 743553.36378814687486738 4322674.85555116459727287, 743553.9621325881453231 4322672.98228347580879927, 743554.07123385742306709 4322672.61679783370345831, 743554.59743944020010531 4322670.72302048839628696, 743554.65784415765665472 4322670.49527321942150593, 743555.14022037852555513 4322668.58592612110078335, 743555.16167840326670557 4322668.49934716150164604, 743555.6218053912743926 4322666.60718988440930843, 743556.07172412169165909 4322664.80158155132085085, 743556.53009450435638428 4322663.09948192816227674, 743557.01334583933930844 4322661.48064124025404453, 743557.52714812161866575 4322659.95150940492749214, 743558.07308156078215688 4322658.52582624834030867, 743558.65153633418958634 4322657.21410163585096598, 743559.26028263987973332 4322656.02494547422975302, 743559.89725058432668447 4322654.96170771680772305, 743560.57302959030494094 4322654.0045285951346159, 743561.36227637808769941 4322653.05569921433925629, 743562.34966735006310046 4322652.01146073453128338, 743563.55101171135902405 4322650.84537346288561821, 743564.95090960408560932 4322649.54755754210054874, 743566.47297314996831119 4322648.14768270403146744, 743566.57618929841555655 4322648.05141375120729208, 743568.12709105177782476 4322646.58407970331609249, 743568.34674268739763647 4322646.36977204494178295, 743569.88910313253290951 4322644.81809904146939516, 743570.20485067612025887 4322644.48553270846605301, 743571.71552976034581661 4322642.81947115808725357, 743572.06759518117178231 4322642.40944572538137436, 743573.52750302606727928 4322640.61320584546774626, 743573.78108199033886194 4322640.28771950770169497, 743575.18921932182274759 4322638.40120080858469009, 743575.33966253057587892 4322638.19417315255850554, 743576.69965022476390004 4322636.27140496578067541, 743576.76460722973570228 4322636.17845601867884398, 743578.07063660025596619 4322634.2868275148794055, 743579.27949069207534194 4322632.54779726359993219, 743580.34040272084530443 4322631.08356383442878723, 743580.84829294972587377 4322630.43877147324383259, 743580.9550899532623589 4322630.51986991800367832, 743581.64676573593169451 4322631.09759183414280415, 743582.44590175431221724 4322631.81550187710672617, 743583.34536805853713304 4322632.6682001193985343, 743584.34291460842359811 4322633.65064662415534258, 743585.44851123145781457 4322634.76466135960072279, 743586.64763766771648079 4322635.97862473595887423, 743586.69287752767559141 4322636.02413411252200603, 743587.95874347619246691 4322637.28931676596403122, 743588.05900312995072454 4322637.38811541069298983, 743589.38864822406321764 4322638.68014764692634344, 743589.54257759917527437 4322638.82657563220709562, 743590.94089143897872418 4322640.12873765081167221, 743591.14774043415673077 4322640.31604505889117718, 743592.62002262496389449 4322641.61229705158621073, 743592.88303108955733478 4322641.8359139347448945, 743594.43465123197529465 4322643.10969609767198563, 743594.75319901970215142 4322643.36057256627827883, 743596.38886672724038363 4322644.59584508929401636, 743596.76564365811645985 4322644.86689123325049877, 743598.48871856578625739 4322646.0467443224042654, 743598.90594464563764632 4322646.31745041627436876, 743600.70877660263795406 4322647.42443429492413998, 743601.17471163766458631 4322647.69354034122079611, 743603.0479805157519877 4322648.70927524566650391, 743603.57102427305653691 4322648.97335127461701632, 743605.50550994579680264 4322649.87994744535535574, 743606.09653211000841111 4322650.13408350292593241, 743608.08265445719007403 4322650.91337117180228233, 743608.75153466779738665 4322651.1488073505461216, 743610.77970357530284673 4322651.78282674960792065, 743611.5364514053799212 4322651.98720319103449583, 743613.59732674714177847 4322652.45796455815434456, 743614.4492917408933863 4322652.61410145834088326, 743616.53336339560337365 4322652.90339502785354853, 743617.46682543714996427 4322652.98861268907785416, 743619.56773327407427132 4322653.08144865185022354, 743620.50448369735386223 4322653.07892738841474056, 743622.62876754917670041 4322652.97357574943453074, 743623.52640732796862721 4322652.88835556153208017, 743625.68327700335066766 4322652.58494631201028824, 743626.50862711807712913 4322652.43327703233808279, 743628.70767243951559067 4322651.93298014532774687, 743629.44466358702629805 4322651.73546155449002981, 743631.69539437140338123 4322651.03917699865996838, 743632.33694706647656858 4322650.81656884681433439, 743634.64865313901100308 4322649.92540659755468369, 743635.19905758171807975 4322649.6941286763176322, 743637.58118875371292233 4322648.60837871208786964, 743638.04339514183811843 4322648.38318083714693785, 743640.50572123168967664 4322647.10414313338696957, 743640.87841986515559256 4322646.90038512088358402, 743643.42247102444525808 4322645.43847954086959362, 743643.67499311140272766 4322645.28839103318750858, 743646.2713408280396834 4322643.69319701101630926, 743646.42149603716097772 4322643.59909795504063368, 743649.03323213011026382 4322641.92998481541872025, 743649.09746006154455245 4322641.88859523180872202, 743651.68055658275261521 4322640.20984224136918783, 743654.15312678948976099 4322638.60922843590378761, 743656.43088398035615683 4322637.17431286536157131, 743658.44080096366815269 4322635.97769474145025015, 743660.087470997357741 4322635.09149331133812666, 743661.31650552619248629 4322634.53346844390034676, 743662.1435831543058157 4322634.24272085353732109, 743662.48661546246148646 4322634.16251628939062357, 743662.75500195194035769 4322634.3301289277151227, 743663.12633918249048293 4322634.61199494823813438, 743663.52338726550806314 4322634.97239997703582048, 743663.9266165248118341 4322635.40678409300744534, 743664.31890720129013062 4322635.90855739172548056, 743664.68783946672920138 4322636.47277995944023132, 743665.02212344447616488 4322637.09312188718467951, 743665.31430927407927811 4322637.76870319433510303, 743665.5633872653124854 4322638.51583368983119726, 743665.76512774871662259 4322639.34827320277690887, 743665.90931086626369506 4322640.26203180197626352, 743665.98554664815310389 4322641.24648962449282408, 743665.9850351307541132 4322642.29330679401755333, 743665.89992634393274784 4322643.39488340355455875, 743665.72307029238436371 4322644.54307957459241152, 743665.44502723845653236 4322645.74160526692867279, 743665.04232857970055193 4322647.04193988442420959, 743664.49215579149313271 4322648.50081275869160891, 743663.79121909709647298 4322650.12674379628151655, 743662.94887819071300328 4322651.91360305435955524, 743661.98043266613967717 4322653.8564705727621913, 743660.90470210369676352 4322655.95373633503913879, 743659.75806525931693614 4322658.17783064395189285, 743659.72937684657517821 4322658.23389999847859144, 743658.55201232479885221 4322660.55333317257463932, 743658.49551549809984863 4322660.66639186441898346, 743657.30826285225339234 4322663.08042388968169689, 743657.24893625569529831 4322663.20317246671766043, 743656.05662541300989687 4322665.71333331707865, 743656.00035871274303645 4322665.83386191353201866, 743654.80449964676517993 4322668.4404015801846981, 743654.75084286369383335 4322668.55938019603490829, 743653.55322553671430796 4322671.26228868123143911, 743653.50205867702607065 4322671.37979730498045683, 743652.30444304924458265 4322674.17902460414916277, 743652.25573610793799162 4322674.29487324506044388, 743651.05989213718567044 4322677.19003936089575291, 743651.01302515342831612 4322677.30555800627917051, 743649.82071281445678324 4322680.29734292160719633, 743649.77638573758304119 4322680.4105515955016017, 743648.58908498985692859 4322683.49840532056987286, 743648.54699783422984183 4322683.60985400713980198, 743647.36745855666231364 4322686.79011658392846584, 743647.33112107345368713 4322686.88968541286885738, 743646.16347284277435392 4322690.14324706792831421, 743646.13193507411051542 4322690.23246601223945618, 743644.98162736068479717 4322693.53570703696459532, 743644.95398935570847243 4322693.61616608034819365, 743643.82614164112601429 4322696.94584673829376698, 743643.8015634510666132 4322697.01935586798936129, 743642.70118522900156677 4322700.3527464373037219, 743642.67898689245339483 4322700.42079563625156879, 743641.61137764016166329 4322703.73441639542579651, 743641.59114918229170144 4322703.79791564121842384, 743640.56144837813917547 4322707.0683868732303381, 743640.54278982523828745 4322707.12831616494804621, 743639.55592696415260434 4322710.33280814811587334, 743639.54235803172923625 4322710.37723762262612581, 743638.60248240153305233 4322713.48034078441560268, 743637.69521351926960051 4322716.43764568772166967, 743636.79830142506398261 4322719.22516265604645014, 743635.88288686284795403 4322721.8509916365146637, 743634.92068069544620812 4322724.33056246675550938, 743633.88423387706279755 4322726.68531492631882429, 743632.74331751954741776 4322728.94282871671020985, 743631.45395341573748738 4322731.15244328789412975, 743629.94411474361550063 4322733.40928756352514029, 743628.19691280659753829 4322735.76705090701580048, 743626.25819633575156331 4322738.20812347624450922, 743624.18535374046768993 +4322740.7101154662668705, 743622.04693313757888973 4322743.2474670996889472, 743622.02346411976031959 4322743.27541678491979837, 743619.91637253703083843 4322745.79418859910219908, 743619.80959705577697605 4322745.92403714172542095, 743617.81957202649209648 4322748.38580949045717716, 743617.62042067677248269 4322748.64047662448137999, 743615.80592088541015983 4322751.03979950398206711, 743615.52564361074473709 4322751.42951508518308401, 743613.93337796034757048 4322753.75950851757079363, 743613.64903166750445962 4322754.1999434744939208, 743612.27764002664480358 4322756.45161758083850145, 743612.01192375482060015 4322756.91535222437232733, 743610.84773624234367162 4322759.07920713443309069, 743610.60111003962811083 4322759.56939142756164074, 743609.6311967660440132 4322761.63650727085769176, 743609.40759049635380507 4322762.14999124873429537, 743608.61845156794879586 4322764.1103581665083766, 743608.41880527161993086 4322764.65074177831411362, 743607.79715080233290792 4322766.49519990105181932, 743607.62376448221039027 4322767.06521311867982149, 743607.1562745877308771 4322768.78449257649481297, 743607.01209825312253088 4322769.38814533688127995, 743606.68523304664995521 4322770.97278627566993237, 743606.57141714554745704 4322771.63697825372219086, 743606.37368677603080869 4322773.08172074146568775, 743606.29774218564853072 4322773.86490120552480221, 743606.22208704170770943 4322775.18355508800595999, 743606.21156343340408057 4322776.09965383261442184, 743606.25314393453299999 4322777.31008889153599739, 743606.33989003801252693 4322778.32481630053371191, 743606.49347661272622645 4322779.44528232607990503, 743606.69497093488462269 4322780.49478915985673666, 743606.95499401399865746 4322781.54305593017488718, 743607.26450545992702246 4322782.5572830643504858, 743607.62645545229315758 4322783.55122037511318922, 743608.00107337930239737 4322784.44319892674684525, 743608.45908073266036808 4322785.40107656084001064, 743608.84713555558118969 4322786.13307706359773874, 743609.39652068726718426 4322787.07312480174005032, 743609.7867334004258737 4322787.68822673801332712, 743610.42803650512360036 4322788.62211443390697241, 743610.96423786203376949 4322789.33294501062482595, 743611.72210823022760451 4322790.24968277104198933, 743612.450186982518062 4322791.03979212883859873, 743613.35570366261526942 4322791.92223012540489435, 743614.24835867376532406 4322792.69482949003577232, 743615.33209073252510279 4322793.52617788687348366, 743616.33602174371480942 4322794.2038582805544138, 743617.62872823339421302 4322794.9667872516438365, 743618.6669759857468307 4322795.50041937083005905, 743620.19924596906639636 4322796.17801909055560827, 743621.20443172263912857 4322796.55934312753379345, 743623.00708425359334797 4322797.1344037652015686, 743623.92965935007669032 4322797.3808495607227087, 743626.03350348665844649 4322797.83647129032760859, 743626.81377962022088468 4322797.97334861569106579, 743629.22999494674149901 4322798.29915154073387384, 743629.77296464063692838 4322798.35732013359665871, 743632.43489282729569823 4322798.56916414387524128, 743632.80050559178926051 4322798.59153340291231871, 743635.62198884156532586 4322798.71231833193451166, 743635.86796384199988097 4322798.71981792524456978, 743638.76243436499498785 4322798.77242359239608049, 743638.91980111016891897 4322798.77404337469488382, 743641.8012710998300463 4322798.78105961997061968, 743641.88180941704194993 4322798.78092952072620392, 743644.66385108139365911 4322798.76529617048799992, 743647.21989746508188546 4322798.74974311050027609, 743649.38806233310606331 4322798.75628026388585567, 743651.08272772247437388 4322798.79915758222341537, 743652.30774350324645638 4322798.87535508908331394, 743653.08054898050613701 4322798.9663329878821969, 743653.44753259408753365 4322799.03844163566827774, 743653.5086154657183215 4322799.05677803419530392, 743653.58255082555115223 4322799.09790073521435261, 743653.91539783112239093 4322799.32191756553947926, 743654.51876331982202828 4322799.77972118370234966, 743655.32919802272226661 4322800.43803207576274872, 743656.28913220972754061 4322801.24395097605884075, 743657.32894599088467658 4322802.12127889879047871, 743657.40729551110416651 4322802.1866979980841279, 743658.46282887528650463 4322803.05900595989078283, 743658.65024762926623225 4322803.21013387013226748, 743659.70121028658468276 4322804.03690240066498518, 743660.02109786961227655 4322804.27833903674036264, 743661.05550949112512171 4322805.02698854357004166, 743661.56538494932465255 4322805.37259366363286972, 743662.57233519526198506 4322806.01076456345617771, 743663.36724661814514548 4322806.46492799092084169, 743664.34202508325688541 4322806.96413063444197178, 743665.52023950510192662 4322807.4748828848823905, 743666.48690545686986297 4322807.8220474049448967, 743668.01634087460115552 4322808.23786037415266037, 743669.00588350871112198 4322808.42419683374464512, 743670.70080116286408156 4322808.59570258669555187, 743671.74380968068726361 4322808.61193106416612864, 743673.32404492213390768 4322808.51113029848784208, 743674.45194851630367339 4322808.34878085367381573, 743675.73873685079161078 4322808.07616256177425385, 743676.98192472697701305 4322807.72594527527689934, 743677.93103928212076426 4322807.40647798217833042, 743679.32077063398901373 4322806.85979291424155235, 743679.98957152827642858 4322806.56809563562273979, 743681.55654554697684944 4322805.81547286175191402, 743681.99571242218371481 4322805.59104505367577076, 743683.75676881312392652 4322804.63561450690031052, 743684.00466118496842682 4322804.4965258976444602, 743685.91860166087280959 4322803.38660704810172319, 743686.0388479009270668 4322803.31574776116758585, 743688.0502546785864979 4322802.11147994082421064, 743688.07680384255945683 4322802.09553010109812021, 743690.10291000735014677 4322800.87392246816307306, 743690.31685361568816006 4322800.74681132379919291, 743690.31725577148608863 4322800.88733203150331974, 743690.2640184621559456 4322803.24420326389372349, 743690.14814834203571081 4322805.93457049503922462, 743689.9703955368604511 4322808.96639362536370754, 743689.74880845565348864 4322812.27076347358524799, 743689.50814454979263246 4322815.73256142158061266, 743689.5062850727699697 4322815.75992109067738056, 743689.27277164766564965 4322819.25742859579622746, 743689.26765319309197366 4322819.3390076020732522, 743689.06684787978883833 4322822.76810589712113142, 743689.05942059098742902 4322822.91306413430720568, 743688.91556126740761101 4322826.18219431675970554, 743688.90804551844485104 4322826.41429148800671101, 743688.8454200504347682 4322829.43134465161710978, 743688.84456657932605594 4322829.80045013874769211, 743688.88776283722836524 4322832.47362737916409969, 743688.91409254434984177 4322833.05500023160129786, 743689.08239888458047062 4322835.31413237936794758, 743689.17614122550003231 4322836.12452234886586666, 743689.4687679463531822 4322837.98551921546459198, 743689.70397232426330447 4322839.07878554984927177, 743690.11562019179109484 4322840.57870668265968561, 743690.62543468771036714 4322842.00362862180918455, 743691.14991449390072376 4322843.18019357603043318, 743692.12955434422474355 4322844.89770134910941124, 743692.76163685484789312 4322845.78800967428833246, 743694.3321747297886759 4322847.52618646807968616, 743695.06587073591072112 4322848.16789770871400833, 743697.04556322330608964 4322849.51797874923795462, 743697.87539349042344838 4322849.94833245780318975, 743699.79334677592851222 4322850.70366085041314363, 743700.71337209455668926 4322850.96018657274544239, 743702.29283452033996582 4322851.26623088028281927, 743703.29843550175428391 4322851.37816826906055212, 743704.71701688261236995 4322851.43466582149267197, 743705.80708352627698332 4322851.40060488972812891, 743707.09360448527149856 4322851.27684480790048838, 743708.26855660090222955 4322851.08653568662703037, 743709.39148876629769802 4322850.83763733599334955, 743710.65073619596660137 4322850.48144012503325939, 743711.60577056184411049 4322850.15848289243876934, 743712.94997312617488205 4322849.62699771951884031, 743713.75849986611865461 4322849.26512114051729441, 743715.18710739689413458 4322848.54814812541007996, 743715.86272672447375953 4322848.17578183673322201, 743717.37610904849134386 4322847.26386109739542007, 743717.94410068111028522 4322846.89482490159571171, 743719.54163763578981161 4322845.77813655510544777, 743719.99603220459539443 4322845.44098010845482349, 743721.67700378620065749 4322844.11836416460573673, 743721.97715318715199828 4322843.87262679357081652, 743723.73271016974467784 4322842.37752286437898874, 743723.9075738318497315 4322842.22505450900644064, 743725.72824716730974615 4322840.60013207886368036, 743725.81277405691798776 4322840.52383290510624647, 743727.68861469032708555 4322838.81090147234499454, 743727.69637440249789506 4322838.80381155200302601, 743729.58739440946374089 4322837.07337030861526728, 743731.44821603025775403 4322835.39849842619150877, 743733.25940065539907664 4322833.82533494755625725, 743735.00441071519162506 4322832.3930562287569046, 743736.6879947183188051 4322831.11493583116680384, 743738.31868237548042089 4322829.98404381517320871, 743739.88123410183470696 4322829.00695015862584114, 743741.35134054569061846 4322828.19303482864052057, 743742.69999240827746689 4322827.54939784947782755, 743743.89400038670282811 4322827.07814930938184261, 743744.89680509618483484 4322826.77311942633241415, 743745.6834166522603482 4322826.61284854263067245, 743746.30187335854861885 4322826.55512701719999313, 743746.83021303522400558 4322826.56434499099850655, 743747.29797480325214565 4322826.62384256906807423, 743747.71581826312467456 4322826.72311984375119209, 743748.0838032386964187 4322826.85210692696273327, 743748.39455964812077582 4322826.99801401514559984, 743748.63922738039400429 4322827.14448133297264576, 743748.79771631699986756 4322827.26240931451320648, 743748.856714419554919 4322827.31668539252132177, 743748.86335618514567614 4322827.32873826287686825, 743748.9114272091537714 4322827.44061671756207943, 743748.99336995766498148 4322827.68838338274508715, 743749.09566510759759694 4322828.09489802643656731, 743749.20357305381912738 4322828.66601063311100006, 743749.30545382469426841 4322829.3903313810005784, 743749.39400728326290846 4322830.25174049381166697, 743749.46705342561472207 4322831.24784801993519068, 743749.52584222331643105 4322832.3781739454716444, 743749.57335355528630316 4322833.63934830948710442, 743749.61454729060642421 4322835.02944111451506615, 743749.65537306282203645 4322836.53447251208126545, 743749.65599343809299171 4322836.55642224196344614, 743749.70283071929588914 4322838.15363248717039824, 743749.70524196012411267 4322838.22661158163100481, 743749.76667035755235702 4322839.90341079980134964, 743749.77381304220762104 4322840.06350880581885576, 743749.86533190275076777 4322841.80036718025803566, 743749.88192605145741254 4322842.05385401099920273, 743750.02056461025495082 4322843.82659177295863628, 743750.05428014521021396 4322844.17790734861046076, 743750.25737762555945665 4322845.96212473884224892, 743750.31960440659895539 4322846.41597894951701164, 743750.60387004294898361 4322848.18695620913058519, 743750.71275797532871366 4322848.75851881038397551, 743751.09559099189937115 4322850.49207617621868849, 743751.27662974398117512 4322851.19100695475935936, 743751.77469937934074551 4322852.86273466423153877, 743752.06655843486078084 4322853.70360330678522587, 743752.69737391755916178 4322855.28940159734338522, 743753.13147198955994099 4322856.23437844961881638, 743753.90583271346986294 4322857.71225754823535681, 743754.43357798224315047 4322858.60383472498506308, 743755.33690406288951635 4322859.96386480703949928, 743755.93462647381238639 4322860.77242274768650532, 743756.94732817332260311 4322862.00726397708058357, 743757.60425793949980289 4322862.73275272641330957, 743758.70532554329838604 4322863.83515526447445154, 743759.42603279137983918 4322864.48967465665191412, 743760.59576656250283122 4322865.4523686608299613, 743761.38502125313971192 4322866.03928863443434238, 743762.60248147731181234 4322866.85482427570968866, 743763.47858333622571081 4322867.37896471191197634, 743764.72381028113886714 4322868.04008214827626944, 743765.70996876060962677 4322868.49679301492869854, 743766.96263270173221827 4322868.99617240205407143, 743768.15537591499742121 4322869.38687334209680557, 743769.40315684943925589 4322869.71047490462660789, 743771.07335870945826173 4322869.99533542525023222, 743772.33658550307154655 4322870.10183959174901247, 743774.37976426887325943 4322870.06456272210925817, 743775.68722550722304732 4322869.90610997099429369, 743777.71625701966695487 4322869.44199837651103735, 743779.09580130467657 4322868.97080919705331326, 743780.76421499613206834 4322868.22444234602153301, 743782.24458090588450432 4322867.39216722082346678, 743783.4484029442537576 4322866.59586264193058014, 743785.05826907395385206 4322865.35509204212576151, 743785.88107022712938488 4322864.64649775717407465, 743787.64852516353130341 4322862.94876217748969793, 743788.20195401250384748 4322862.37294723093509674, 743790.15567634312901646 4322860.17050715070217848, 743790.51493164524435997 4322859.74194110278040171, 743792.67286069388501346 4322857.016446677967906, 743792.86317253485321999 4322856.76819903030991554, 743795.19986056629568338 4322853.61935912631452084, 743795.28363687940873206 4322853.50478022824972868, 743797.76362687943037599 4322850.06176339276134968, 743797.77524636394809932 4322850.04560354817658663, 743800.33846241165883839 4322846.47205799631774426, 743802.91747887548990548 4322842.93956187181174755, 743805.46011933078989387 4322839.59199360758066177, 743807.90308766881935298 4322836.57886160723865032, 743810.16537817183416337 4322834.05154430773109198, 743812.20505280164070427 4322832.07431108597666025, 743814.0565293850377202 4322830.56283285468816757, 743815.76187541196122766 4322829.4220206132158637, 743817.37630823464132845 4322828.56414524745196104, 743818.97977490816265345 4322827.91211740672588348, 743820.66657256917096674 4322827.40982743259519339, 743822.5202090124366805 4322827.02608540467917919, 743824.58955301798414439 4322826.74679132178425789, 743826.82966543477959931 4322826.56957537215203047, 743829.14217847213149071 4322826.5089777372777462, 743831.47517332236748189 4322826.57420849241316319, 743833.79105083481408656 4322826.77105770166963339, 743836.05306178738828748 4322827.10247546713799238, 743838.22643687180243433 4322827.5682919155806303, 743840.276946687605232 4322828.1643372243270278, 743842.17962164164055139 4322828.88520154170691967, 743843.93958165741059929 4322829.73266484122723341, 743845.58375637093558908 4322830.71616689953953028, 743847.12831561802886426 4322831.84483754821121693, 743848.58492940536234528 4322833.1319865919649601, 743849.96170786023139954 4322834.59398379269987345, 743851.26106126781087369 4322836.24970891419798136, 743852.4817999938968569 4322838.11887172795832157, 743853.6180045276414603 4322840.2221519947052002, 743854.6690954880323261 4322842.59412929881364107, 743855.64177364076022059 4322845.28596299234777689, 743856.53872968151699752 4322848.34001255035400391, 743857.36038413899950683 4322851.78669760189950466, 743858.10882735962513834 4322855.64813787303864956, 743858.78852958232164383 4322859.94290311355143785, 743859.4071109660435468 4322864.68848309200257063, 743859.97435153753031045 4322869.89758762065321207, 743860.49456085613928735 4322875.54993691761046648, 743860.95103761157952249 4322881.55245218798518181, 743861.32366049254778773 4322887.80796468071639538, 743861.59370820934418589 4322894.22246561013162136, 743861.74162950064055622 4322900.70218619052320719, 743861.74975303746759892 4322907.15176763292402029, 743861.60071744653396308 4322913.47373118903487921, 743861.27873135241679847 4322919.57210808712989092, 743860.77211390738375485 4322925.3858091039583087, 743860.08401527907699347 4322930.92759406752884388, 743859.22123564593493938 4322936.21531274169683456, 743858.19110511126928031 4322941.26314492244273424, 743857.00012380792759359 4322946.0858704075217247, 743855.65432189661078155 4322950.69927897956222296, 743854.15929953684099019 4322955.11873043235391378, 743852.52100684563629329 4322959.35769457463175058, 743850.74769365671090782 4322963.41582138743251562, 743848.84134980675298721 4322967.28633094392716885, 743846.79810539574827999 4322970.97020324598997831, 743844.61203063081484288 4322974.47283824346959591, 743842.27557578682899475 4322977.80105588771402836, 743839.7803111607208848 4322980.96217611152678728, 743837.11670705629512668 4322983.96274886839091778, 743834.27074391138739884 4322986.81183410156518221, 743831.22978213033638895 4322989.51807174831628799, 743828.01534102996811271 4322992.06688190530985594, 743824.66904929676093161 4322994.4308747686445713, 743821.23613553924951702 4322996.58204051572829485, 743817.76298838865477592 4322998.49534929729998112, 743814.30018641497008502 4323000.14670122787356377, 743810.89977820939384401 4323001.51492639072239399, 743807.61250249505974352 4323002.58492479287087917, 743804.45334900752641261 4323003.35887635964900255, 743801.38793892494868487 4323003.86456087417900562, 743798.38486328348517418 4323004.12544815428555012, 743795.41606295248493552 4323004.15928809437900782, 743792.45506868627853692 4323003.97897061798721552, 743789.48043108906131238 4323003.59437569417059422, 743786.47474063443951309 4323003.01297327876091003, 743783.42970764474011958 4323002.24370330665260553, 743780.36495198053307831 4323001.30069552827626467, 743777.30431323137599975 4323000.18761982396245003, 743774.24897127691656351 4322998.89910624921321869, 743771.19518604758195579 4322997.42698492202907801, 743768.13919747341424227 4322995.76294595841318369, 743765.07835544086992741 4322993.89780948311090469, 743762.0100198476575315 4322991.8226856105029583, 743758.9278705813921988 4322989.52433453500270844, 743755.80571775999851525 4322986.97973662056028843, 743752.62570189905818552 4322984.19803183525800705, 743749.3928935358999297 4322981.21551970019936562, 743746.11402328498661518 4322978.07455968577414751, 743742.79328181000892073 4322974.81744125764816999, 743739.43625980720389634 4322971.48997383750975132, 743739.42797982646152377 4322971.48178396932780743, 743736.05604798963759094 4322968.14730670116841793, 743736.00122812995687127 4322968.09350755624473095, 743732.63129717868287116 4322964.81181965302675962, 743732.53312746493611485 4322964.71751115471124649, 743729.16600805730558932 4322961.52670214045792818, 743729.04466856503859162 4322961.41361373476684093, 743725.693004404543899 4322958.34133510291576385, 743725.549505126895383 4322958.21232684142887592, 743722.22860286000650376 4322955.28413642942905426, 743722.05814382806420326 4322955.13719842303544283, 743718.78350357862655073 4322952.37826590240001678, 743718.57835489674471319 4322952.21003819536417723, 743715.36548678460530937 4322949.64574324246495962, 743715.11578859877772629 4322949.45281589031219482, 743711.97994274902157485 4322947.10805818066000938, 743711.67071528872475028 4322946.88589125126600266, 743708.62765182321891189 4322944.78625044878572226, 743708.23849544709082693 4322944.53090402390807867, 743705.30328448698855937 4322942.70121980737894773, 743704.81846961111295968 4322942.41759384050965309, 743702.00344120676163584 4322940.87519598193466663, 743701.46683759358711541 4322940.60185995139181614, 743698.77095145941711962 4322939.32935865875333548, 743698.20130899094510823 4322939.08181235659867525, 743695.62028477829881012 4322938.05423794221132994, 743695.03000333602540195 4322937.84043124411255121, 743692.55946068547200412 4322937.03240402229130268, 743691.96491003059782088 4322936.85814684815704823, 743689.60080858040601015 4322936.24407713301479816, 743689.01793840946629643 4322936.1111394427716732, 743686.75577780487947166 4322935.66589754447340965, 743686.20474768208805472 4322935.57335932366549969, 743684.04017757438123226 4322935.27173555176705122, 743683.54364694631658494 4322935.21514682844281197, 743681.47257696534506977 4322935.03143150731921196, 743681.02206585125532001 4322935.00170240085572004, 743679.0381557741202414 4322934.91570577956736088, 743678.55074579152278602 4322934.90647646598517895, 743676.64099586440715939 4322934.91685858089476824, 743676.10424738214351237 4322934.93419899884611368, 743674.25406796089373529 4322935.04375983122736216, 743673.67915086448192596 4322935.0944898808375001, 743671.87322232592850924 4322935.30651940312236547, 743671.27512638119515032 4322935.39513901993632317, 743669.49886910046916455 4322935.71349720656871796, 743668.90469372132793069 4322935.83872636873275042, 743667.14343805098906159 4322936.26615319866687059, 743666.57040279568172991 4322936.42338194604963064, 743664.80891911825165153 4322936.96347739361226559, 743664.27680340269580483 4322937.14312581717967987, 743662.5005420760717243 4322937.79893986415117979, 743662.01242571091279387 4322937.99388804752379656, 743660.20870707836002111 4322938.76982065197080374, 743659.74521052872296423 4322938.98338857665657997, 743657.91176474490202963 4322939.88559967000037432, 743657.46614817006047815 4322940.11897732969373465, 743655.60280538047663867 4322941.15540680289268494, 743655.1807285831309855 4322941.40390424709767103, 743653.28772890800610185 4322942.58175202552229166, 743652.89081179129425436 4322942.84197930060327053, 743650.96783537673763931 4322944.16905527561903, 743650.59899779583793133 4322944.43619243148714304, 743648.64636475557927042 4322945.91938652005046606, 743648.30534666171297431 4322946.1903335964307189, 743646.32275713689159602 4322947.83722570724785328, 743646.00764853949658573 4322948.11029272712767124, 743643.99539266410283744 4322949.92882276605814695, 743643.71263325994368643 4322950.19449983257800341, 743641.67395099077839404 4322952.18592777196317911, 743641.42921047029085457 4322952.43346502166241407, 743639.38174108241219074 4322954.57773108966648579, 743639.16677967505529523 4322954.81010848842561245, 743637.13189225899986923 4322957.08095298241823912, 743636.93743026698939502 4322957.30454046651721001, 743634.93592393095605075 4322959.67591368034482002, 743634.75371165992692113 4322959.89821116346865892, 743632.80702549149282277 4322962.34392339363694191, 743632.63178315327968448 4322962.57067081425338984, 743630.7607662589289248 4322965.06478235777467489, 743630.58713409921620041 4322965.30349962785840034, 743628.81292557925917208 4322967.82001077476888895, 743628.63634384016040713 4322968.07900780159980059, 743626.98029278358444571 4322970.5916188545525074, 743626.79229194251820445 4322970.88805543351918459, 743625.2721676945220679 4322973.38063657190650702, 743625.05647875461727381 4322973.75202225893735886, 743623.67825158580671996 4322976.24699320364743471, 743623.44448440708220005 4322976.6967279464006424, 743622.20987485570367426 4322979.22672828566282988, 743621.97317902371287346 4322979.74931213818490505, 743620.88560758146923035 4322982.34614148829132318, 743620.66542232688516378 4322982.92092468217015266, 743619.72670952486805618 4322985.61699263751506805, 743619.53709418117068708 4322986.22287541348487139, 743618.74980053922627121 4322989.05048157926648855, 743618.60004446492530406 4322989.66226423718035221, 743617.96693049638997763 4322992.65380821004509926, 743617.86020316812209785 4322993.24540106952190399, 743617.38352939311880618 4322996.43316245451569557, 743617.31820020265877247 4322996.9682659562677145, 743616.99557701102457941 4323000.37142452225089073, 743616.96507492603268474 4323000.7837294889613986, 743616.77416222589090466 4323004.37078565172851086, 743616.76274773338809609 4323004.66922199539840221, 743616.67589531443081796 4323008.39530633389949799, 743616.67320904147345573 4323008.60328378062695265, 743616.66363667021505535 4323012.42355687357485294, 743616.66414893011096865 4323012.55223528947681189, 743616.70425640023313463 4323016.4224277175962925, 743616.70501740358304232 4323016.48009700607508421, 743616.76743438770063221 4323020.3491594223305583, 743616.82422006980050355 4323024.1377428350970149, 743616.84877371822949499 4323027.77293816301971674, 743616.82050546619575471 4323031.23795564193278551, 743616.73589550377801061 4323034.53930519334971905, 743616.59586361399851739 4323037.66583695076406002, 743616.40223941649310291 4323040.59818115085363388, 743616.15726249932777137 4323043.3155680475756526, 743615.86463237425778061 4323045.79477792512625456, 743615.53049842454493046 4323048.0080111026763916, 743615.16545977862551808 4323049.91880803648382425, 743614.78811519138980657 4323051.47817929554730654, 743614.41446416813414544 4323052.67747497279196978, 743614.05550733278505504 4323053.5647144578397274, 743613.707686334149912 4323054.22935667634010315, 743613.3341639997670427 4323054.78782021906226873, 743612.85895394231192768 4323055.35485376883298159, 743612.18651958089321852 4323056.01105643529444933, 743611.22951345355249941 4323056.79674781858921051, 743609.94660639343783259 4323057.71012798137962818, 743608.38501651585102081 4323058.70038750022649765, 743606.61968132189940661 4323059.71462694369256496, 743604.72089864208828658 4323060.7132567185908556, 743602.75410654488950968 4323061.66430714726448059, 743600.78128327033482492 4323062.5415384853258729, 743598.86879698513075709 4323063.31953097879886627, 743597.08821574738249183 4323063.97329485509544611, 743595.50911775487475097 4323064.48286028578877449, 743594.15106260939501226 4323064.84907724242657423, 743593.00880067329853773 4323065.08613555412739515, 743592.06716261932160705 4323065.21413498744368553, 743591.2973794681020081 4323065.25708528608083725, 743590.65334256843198091 4323065.23639623075723648, 743590.07147344283293933 4323065.16339774988591671, 743589.50084314111154526 4323065.03697991743683815, 743588.93751172395423055 4323064.85611274745315313, 743588.34769954846706241 4323064.60087651945650578, 743587.63864743616431952 4323064.20804211217910051, 743586.73683549743145704 4323063.59676060080528259, 743585.60538320045452565 4323062.69324292801320553, 743584.22912983119022101 4323061.43919983971863985, 743582.60410474357195199 4323059.79332183673977852, 743580.72075747139751911 4323057.71776940673589706, 743578.56512783071957529 4323055.18575289286673069, 743576.18094635126180947 4323052.27910124603658915, 743573.63688385218847543 4323049.12559282593429089, 743571.01314128912054002 4323045.87405570317059755, 743570.96484124893322587 4323045.81466648727655411, 743568.33690956910140812 4323042.60846882965415716, 743568.23305953841190785 4323042.48383047804236412, 743565.64852969266939908 4323039.43291086982935667, 743565.47014980437234044 4323039.22806359268724918, 743562.97753272065892816 4323036.44270062539726496, 743562.68126331677194685 4323036.12574485596269369, 743560.32903993770014495 4323033.71628711279481649, 743559.83985189185477793 4323033.24801342282444239, 743557.66341301170177758 4323031.301509790122509, 743556.93764775537420064 4323030.71113786287605762, 743554.91874362307135016 4323029.22018845472484827, 743553.88799338031094521 4323028.55271781608462334, 743551.99598409282043576 4323027.48639303911477327, 743550.59412186429835856 4323026.8335626283660531, 743548.79763752827420831 4323026.16059290058910847, 743547.05377552239224315 4323025.68194072041660547, 743545.32174623827449977 4323025.37152645830065012, 743543.43447292712517083 4323025.21546045877039433, 743541.73608879197854549 4323025.23639206867665052, 743539.9987181737087667 4323025.41025183256715536, 743538.30276929191313684 4323025.73141973279416561, 743536.92299457371700555 4323026.09637674875557423, 743535.19850104721263051 4323026.68707135040313005, 743534.23220810107886791 4323027.07537761982530355, 743532.45307985541876405 4323027.90037939138710499, 743531.85010784154292196 4323028.20514629036188126, 743530.01142408535815775 4323029.21386585477739573, 743529.6805943523067981 4323029.40365387592464685, 743527.7820941295940429 4323030.54146190918982029, 743527.65879803290590644 4323030.61657111253589392, 743525.72675953898578882 4323031.81272846087813377, 743523.84333922038786113 4323032.96296631544828415, 743522.06891437573358417 4323033.98582562431693077, 743520.41753401374444366 4323034.84203684981912374, 743518.89991750055924058 4323035.50813027936965227, 743517.44874661415815353 4323036.00539571885019541, 743515.91721529932692647 4323036.38327272050082684, 743514.18418638966977596 4323036.65884120669215918, 743512.15832169086206704 4323036.82628134544938803, 743509.77150237280875444 4323036.87114339135587215, 743506.97509921749588102 4323036.78026755899190903, 743503.7349328026175499 4323036.54598398972302675, 743500.02384366327896714 4323036.16634272504597902, 743495.85198168642818928 4323035.64703369606286287, 743491.32999478734564036 4323035.0009166169911623, 743486.57923067465890199 4323034.24193119071424007, 743481.71563717781100422 4323033.38428711146116257, 743476.85289216099772602 4323032.44172408897429705, 743472.10647349921055138 4323031.4306817939504981, 743467.5954090035520494 4323030.36775988526642323, 743463.44462643843144178 4323029.27440797351300716, 743459.75461402023211122 4323028.16857571341097355, 743456.5145218544639647 4323027.04335321113467216, 743453.67404074303340167 4323025.88461069110780954, 743451.170851691509597 4323024.67540842853486538, 743448.92892583319917321 4323023.39009683020412922, 743446.86293425725307316 4323021.98942647408694029, 743444.8888777926331386 4323020.42078810464590788, 743442.92640692717395723 4323018.61700264737010002, 743440.90502195886801928 4323016.51143100298941135, 743438.82615340407937765 4323014.13503279164433479, 743436.7269120350247249 4323011.5754768829792738, 743434.63594885275233537 4323008.92311212606728077, 743432.58442499779630452 4323006.27934722788631916, 743432.55349494330585003 4323006.23969775624573231, 743430.59017171175219119 4323003.73570103012025356, 743430.46066156064625829 4323003.57400318142026663, 743428.62149025674443692 4323001.32586314994841814, 743428.34183031739667058 4323000.99864752683788538, 743426.63944218074902892 4322999.09145311079919338, 743426.10428355471231043 4322998.53653060086071491, 743424.54520967986900359 4322997.03990093618631363, 743423.65331486682407558 4322996.27900138217955828, 743422.21936565428040922 4322995.19418646208941936, 743420.77287977607920766 4322994.28309939801692963, 743419.44098545459564775 4322993.59560943394899368, 743417.22102717298548669 4322992.76578222680836916, 743415.96750796923879534 4322992.46042742487043142, 743413.08382343745324761 4322992.18968401197344065, 743411.88480959099251777 4322992.25175458379089832, 743409.05739861389156431 4322992.81423074658960104, 743407.88946034770924598 4322993.22871689777821302, 743405.79526236036326736 4322994.26116639375686646, 743404.63477990461979061 4322995.01329833269119263, 743403.32914501545019448 4322996.02166724670678377, 743402.15267859946470708 4322997.09635518305003643, 743401.39822793542407453 4322997.86400647554546595, 743400.18715751345735043 4322999.23680074233561754, 743399.77892477274872363 4322999.73056505154818296, 743398.53556914837099612 4323001.33655645046383142, 743398.32178868399932981 4323001.62313312012702227, 743397.05371638236101717 4323003.38795256707817316, 743396.96385051007382572 4323003.51509108580648899, 743395.68141992390155792 4323005.35983954649418592, 743394.43920740042813122 4323007.14253873378038406, 743393.30097901273984462 4323008.71637039911001921, 743392.31577190302778035 4323009.97770578507333994, 743391.81571807619184256 4323010.54082261212170124, 743391.1829621623037383 4323010.35022240318357944, 743389.53343505132943392 4323009.69500238075852394, 743387.3362229026388377 4323008.67330752871930599, 743384.71585415408480912 4323007.34364697802811861, 743381.8032676069997251 4323005.79333950858563185, 743378.69812262209597975 4323004.10376399196684361, 743375.51279848150443286 4323002.36738915834575891, 743375.44932920206338167 4323002.33308965805917978, 743372.29061528271995485 4323000.64067425206303596, 743372.1461069593206048 4323000.56476535927504301, 743369.08682303014211357 4322998.98934839013963938, 743368.8381560395937413 4322998.86563020572066307, 743365.94762189022731036 4322997.47728073224425316, 743365.54490707581862807 4322997.29469345230609179, 743362.87545270123519003 4322996.15488063730299473, 743362.27133116649929434 4322995.9197842413559556, 743359.80407735286280513 4322995.05059782601892948, 743358.95099060807842761 4322994.79218200128525496, 743356.65048831049352884 4322994.2058818731456995, 743355.50932824553456157 4322993.98476590402424335, 743353.33908845216501504 4322993.69388195034116507, 743351.92891635780688375 4322993.60558462422341108, 743349.85327002871781588 4322993.62255672179162502, 743348.28627518774010241 4322993.75908676814 +287901, 743346.26868331246078014 4322994.09636479988694191, 743344.73520213109441102 4322994.47936172597110271, 743342.74026566161774099 4322995.14903558697551489, 743341.41341319517232478 4322995.70352013688534498, 743339.40468311926815659 4322996.7183397002518177, 743338.38039506832137704 4322997.3145033922046423, 743336.32852205785457045 4322998.67764864396303892, 743335.62053598766215146 4322999.19409297965466976, 743333.5213695156853646 4323000.87107435800135136, 743333.03870687703602016 4323001.28239975403994322, 743330.89485613082069904 4323003.23006779048591852, 743330.56611852836795151 4323003.54262425191700459, 743328.38011268142145127 4323005.71752949152141809, 743328.1604612625669688 4323005.94305691216140985, 743325.93477949243970215 4323008.30142989847809076, 743325.79546506935730577 4323008.45212816726416349, 743323.53243656340055168 4323010.95087942387908697, 743323.45673964219167829 4323011.03540845587849617, 743321.15916357189416885 4323013.63089853432029486, 743321.13840442080982029 4323013.65442826226353645, 743318.8156896746950224 4323016.29496779851615429, 743316.46838572586420923 4323018.95134715363383293, 743314.10968233470339328 4323021.62578628771007061, 743314.06703408760949969 4323021.67445572651922703, 743311.74962961580604315 4323024.33659496158361435, 743311.67004291783086956 4323024.42915388662368059, 743309.41958683379925787 4323027.07902319263666868, 743309.3007918365765363 4323027.22157153580337763, 743307.14969333168119192 4323029.85185096599161625, 743306.98991022002883255 4323030.05240863282233477, 743304.9705884704599157 4323032.65497825667262077, 743304.7655076029477641 4323032.92884505167603493, 743302.91012181807309389 4323035.49693492613732815, 743302.65792356373276561 4323035.86288061924278736, 743300.9987629308598116 4323038.38866080064326525, 743300.70306758652441204 4323038.86765512637794018, 743299.26833140954840928 4323041.34522565919905901, 743298.9555482785217464 4323041.92913868650794029, 743297.75682628934737295 4323044.35684959497302771, 743297.44401521107647568 4323045.05673116538673639, 743296.4886272627627477 4323047.43512241914868355, 743296.19636809080839157 4323048.26697231736034155, 743295.49196401285007596 4323050.59543392341583967, 743295.24965633638203144 4323051.57086197473108768, 743294.80377597862388939 4323053.84976392053067684, 743294.65017891372554004 4323054.96452012844383717, 743294.47005212190560997 4323057.19380241166800261, 743294.4466844133567065 4323058.42602701205760241, 743294.53980102948844433 4323060.60549962799996138, 743294.68135111394803971 4323061.90798317268490791, 743295.05534098506905138 4323064.03802611120045185, 743295.37515733297914267 4323065.33991947490721941, 743296.03631028649397194 4323067.41844275686889887, 743296.51863194582983851 4323068.64728686679154634, 743297.46926779160276055 4323070.66618059668689966, 743298.08093464956618845 4323071.77658605389297009, 743299.3221531929448247 4323073.72621035017073154, 743300.02469566604122519 4323074.69617747142910957, 743301.55790669587440789 4323076.56614245753735304, 743302.31053547200281173 4323077.38635140657424927, 743304.13693878578487784 4323079.1667872155085206, 743304.90464468311984092 4323079.84216796141117811, 743307.02542009018361568 4323081.52360470499843359, 743307.78480387711897492 4323082.06983707845211029, 743310.20129116659518331 4323083.64195489231497049, 743310.93402351438999176 4323084.07541870418936014, 743313.64724248740822077 4323085.52827770449221134, 743314.31161434180103242 4323085.85302294977009296, 743317.30883520247880369 4323087.18308319617062807, 743317.79416859976481646 4323087.38338018767535686, 743321.00658315536566079 4323088.61145148798823357, 743321.31537868594750762 4323088.72371976356953382, 743324.65907918196171522 4323089.87757186312228441, 743324.81993677467107773 4323089.93155101872980595, 743328.21234541584271938 4323091.03816366475075483, 743328.23404508689418435 4323091.04521355126053095, 743331.53116502426564693 4323092.11242679227143526, 743334.56864965974818915 4323093.13841082621365786, 743337.22018164314795285 4323094.12353577185422182, 743339.36838315788190812 4323095.05265193711966276, 743340.99782437214162201 4323095.9168694568797946, 743342.20045326137915254 4323096.71045830566436052, 743343.04518797574564815 4323097.41031869407743216, 743343.60122672794386744 4323097.99709079321473837, 743343.94858792261220515 4323098.47536446526646614, 743344.16674055811017752 4323098.88226915802806616, 743344.31454450695309788 4323099.28028404247015715, 743344.41466017044149339 4323099.71887846477329731, 743344.46071741834748536 4323100.18308262340724468, 743344.44555693212896585 4323100.70307614840567112, 743344.33747150236740708 4323101.39904757495969534, 743344.07083431188948452 4323102.37354568857699633, 743343.57325781288091093 4323103.67943990416824818, 743342.78574357705656439 4323105.33577004354447126, 743341.66935242328327149 4323107.34308613743633032, 743340.19520503678359091 4323109.70559816341847181, 743338.34839186735916883 4323112.43142603244632483, 743336.19590037071611732 4323115.45557048171758652, 743333.83985672099515796 4323118.68267259281128645, 743331.39267678279429674 4323122.01169351022690535, 743331.36497803125530481 4323122.04956306703388691, 743328.94290754175744951 4323125.3770339684560895, 743328.86625103489495814 4323125.48382271081209183, 743326.56953645125031471 4323128.72786451503634453, 743326.43401275831274688 4323128.92420220375061035, 743324.35337097989395261 4323132.01693566981703043, 743324.14118124032393098 4323132.34608177095651627, 743322.36757915955968201 4323135.21927765943109989, 743322.06681467965245247 4323135.74104144144803286, 743320.67009990266524255 4323138.34203034546226263, 743320.32750949426554143 4323139.04458191432058811, 743319.29736244399100542 4323141.38512369617819786, 743318.95380545477382839 4323142.27965286187827587, 743318.25842727348208427 4323144.38680722285062075, 743317.96070321532897651 4323145.50133359152823687, 743317.56871504744049162 4323147.40256022196263075, 743317.38675231486558914 4323148.72887382656335831, 743317.26709529128856957 4323150.45144241582602262, 743317.27269104158040136 4323151.91372413467615843, 743317.39392630010843277 4323153.48493437748402357, 743317.61550745600834489 4323154.94299593660980463, 743317.94615614076610655 4323156.39017752092331648, 743318.33775094780139625 4323157.69026088621467352, 743318.84686418646015227 4323159.04077350255101919, 743319.31304300366900861 4323160.09041992574930191, 743319.97039184020832181 4323161.36732332222163677, 743320.46286659222096205 4323162.21835219953209162, 743321.24388163024559617 4323163.42676633037626743, 743321.73141361412126571 4323164.11550724413245916, 743322.61343534279149026 4323165.25624212063848972, 743323.06586550502106547 4323165.80044487770646811, 743324.02503443649038672 4323166.87446051742881536, 743324.4320435180561617 4323167.30391474906355143, 743325.44559014518745244 4323168.3119011651724577, 743325.79702868417371064 4323168.64488665852695704, 743326.8420035062590614 4323169.58804385084658861, 743327.13399188232142478 4323169.8415203969925642, 743328.18690540012903512 4323170.72041838895529509, 743328.41529389435891062 4323170.90542585123330355, 743329.45306661422364414 4323171.7211546441540122, 743329.64243522076867521 4323171.86638264637440443, 743330.64931748085655272 4323172.61966225039213896, 743330.90601539658382535 4323172.8054296812042594, 743331.89404695620760322 4323173.49689008202403784, 743332.25513366877567023 4323173.73809671681374311, 743333.24383412429597229 4323174.36790788173675537, 743333.70380938320886344 4323174.64385398849844933, 743334.71246834308840334 4323175.21275589894503355, 743335.25888197775930166 4323175.4991017859429121, 743336.30695904814638197 4323176.00776441302150488, 743336.9176510744728148 4323176.27932042814791203, 743338.02469584974460304 4323176.72791374661028385, 743338.66098665934987366 4323176.96098021697252989, 743339.84632874315138906 4323177.35013420227915049, 743340.47355886537116021 4323177.53358129691332579, 743341.75680785928852856 4323177.86378592345863581, 743342.34888783073984087 4323177.99712368100881577, 743343.7482733444776386 4323178.26792893931269646, 743344.29977341252379119 4323178.35873726475983858, 743345.83093506318982691 4323178.56710317172110081, 743346.33938541647512466 4323178.62309197522699833, 743348.01708281971514225 4323178.76450857240706682, 743348.47416375135071576 4323178.79251777846366167, 743350.31263653375208378 4323178.86295510455965996, 743350.71851817262358963 4323178.87025461811572313, 743352.73281594831496477 4323178.86561270896345377, 743353.09156831458676606 4323178.85835244785994291, 743355.29611070535611361 4323178.77412134874612093, 743355.60845387284643948 4323178.75729125179350376, 743358.01807049626950175 4323178.58962098974734545, 743358.29095438460353762 4323178.56687100883573294, 743360.91991486656479537 4323178.31144161988049746, 743361.15714944642968476 4323178.28553171176463366, 743364.01133361109532416 4323177.93928323686122894, 743364.21962876769248396 4323177.91179337818175554, 743367.26942726678680629 4323177.47661582008004189, 743367.45907278859522194 4323177.44769599474966526, 743370.66571649932302535 4323176.92718933895230293, 743370.84875211410690099 4323176.8957295548170805, 743374.17356189107522368 4323176.29246381297707558, 743374.35502748168073595 4323176.25780406594276428, 743377.75918419111985713 4323175.5749492347240448, 743377.94346964883152395 4323175.53617953974753618, 743381.38839416310656816 4323174.77739560790359974, 743381.5842692656442523 4323174.73217597883194685, 743385.03114244248718023 4323173.89997295569628477, 743385.24127710750326514 4323173.84682341385632753, 743388.65158981480635703 4323172.94479128811508417, 743388.86694425670430064 4323172.88525181543081999, 743392.20407741796225309 4323171.92230051942169666, 743392.35731340805068612 4323171.87675093486905098, 743395.59300821588840336 4323170.88677006773650646, 743395.66720625525340438 4323170.86375027988106012, 743398.76985410135239363 4323169.88805935811251402, 743401.66259756730869412 4323168.98197777569293976, 743404.26071942027192563 4323168.20161491353064775, 743406.49875179352238774 4323167.59017031081020832, 743407.40989200258627534 4323167.38332162238657475, 743407.40994642628356814 4323167.79916680976748466, 743407.34616633714176714 4323168.85009381175041199, 743407.2164082684321329 4323169.93705042824149132, 743407.02354146540164948 4323171.0210571400821209, 743406.77487505553290248 4323172.06132445391267538, 743406.47964831441640854 4323173.02768273279070854, 743406.12737204134464264 4323173.95290157850831747, 743405.68554819014389068 4323174.90930012334138155, 743405.11271877074614167 4323175.96126760821789503, 743404.36610552459023893 4323177.15682347677648067, 743403.40774984087329358 4323178.5295173479244113, 743402.20765274588484317 4323180.10200896952301264, 743400.74618489784188569 4323181.88809818774461746, 743399.02601604699157178 4323183.87700513564050198, 743397.07301482919137925 4323186.02214035671204329, 743394.90512017626315355 4323188.28420432936400175, 743392.53629121673293412 4323190.63031744211912155, 743389.98102705646306276 4323193.02734009455889463, 743387.25330684205982834 4323195.44330267049372196, 743384.36699972848873585 4323197.84685553982853889, 743381.32742519024759531 4323200.21449899673461914, 743378.11310378729831427 4323202.55271297320723534, 743374.74530538870021701 4323204.87900723796337843, 743371.29244847956579179 4323207.1888017738237977, 743367.84494090802036226 4323209.46728668734431267, 743367.81306194863282144 4323209.48845645226538181, 743364.48413083620835096 4323211.70693198591470718, 743364.36062490160111338 4323211.79057105630636215, 743361.24921787180937827 4323213.93178733438253403, 743361.01441573188640177 4323214.09839548543095589, 743358.19566117681097239 4323216.16026246082037687, 743357.81438434158917516 4323216.45349916722625494, 743355.36366064834874123 4323218.43388680461794138, 743354.81243066745810211 4323218.91365134250372648, 743352.78607663919683546 4323220.81181959249079227, 743352.15332135930657387 4323221.46085209865123034, 743350.53138752258382738 4323223.28285090625286102, 743349.87139593111351132 4323224.10824123863130808, 743348.61546321795322001 4323225.86140055488795042, 743347.97995436622295529 4323226.87063856702297926, 743347.05093372031114995 4323228.56195834279060364, 743346.50251593056600541 4323229.73435423616319895, 743345.86235827917698771 4323231.37136441562324762, 743345.46384887234307826 4323232.62961909454315901, 743345.07356516388244927 4323234.21973962243646383, 743344.85147165623493493 4323235.45498442091047764, 743344.67224282724782825 4323237.00532524846494198, 743344.60617375455331057 4323238.11050152499228716, 743344.59961073938757181 4323239.62848259508609772, 743344.64152681827545166 4323240.58734059240669012, 743344.77882035344373435 4323242.08049184270203114, 743344.92512525781057775 4323243.09637903328984976, 743345.21597529854625463 4323244.57384033501148224, 743345.49144860915839672 4323245.65240662544965744, 743345.95587490906473249 4323247.12375784199684858, 743346.36028528783936054 4323248.18924417532980442, 743347.01831759104970843 4323249.6636551832780242, 743347.52201437507756054 4323250.64337249752134085, 743348.39324243518058211 4323252.13035314995795488, 743348.95173579291440547 4323252.9811320248991251, 743350.05610936204902828 4323254.49008218850940466, 743350.62363996787462384 4323255.19606286566704512, 743351.98130879201926291 4323256.73650240898132324, 743352.52122750482521951 4323257.3028048537671566, 743354.15140134247485548 4323258.88390364311635494, 743354.62857902748510242 4323259.31773779820650816, 743356.53927781898528337 4323260.94552575703710318, 743356.89732547150924802 4323261.23658180423080921, 743359.04604994994588196 4323262.90238907560706139, 743359.29977800440974534 4323263.09272647276520729, 743361.6319791148416698 4323264.78514324966818094, 743361.80651764920912683 4323264.90897154808044434, 743364.26761631271801889 4323266.61573803797364235, 743364.37639535032212734 4323266.6901170127093792, 743366.91189250175375491 4323268.39944340754300356, 743366.96198204648680985 4323268.43299294263124466, 743369.5148386430228129 4323270.13172946032136679, 743372.00178587785921991 4323271.78847656957805157, 743374.34599486412480474 4323273.37542467843741179, 743376.54362593579571694 4323274.90671362355351448, 743378.64643844356760383 4323276.40718304272741079, 743380.6873218152904883 4323277.88310282304883003, 743382.668115702457726 4323279.31709318421781063, 743382.7179952918086201 4323279.35297269280999899, 743384.63435938535258174 4323280.72245392110198736, 743384.74397845682688057 4323280.7996928608044982, 743386.61334227689076215 4323282.09807502292096615, 743386.78862071223556995 4323282.21707338374108076, 743388.63022376364096999 4323283.43916652072221041, 743388.87633140874095261 4323283.59735432919114828, 743390.70956319617107511 4323284.73808849230408669, 743391.01883998792618513 4323284.92289591394364834, 743392.85866012051701546 4323285.97775114420801401, 743393.184646459762007 4323286.15667862072587013, 743395.02691498678177595 4323287.12376494240015745, 743395.35754099756013602 4323287.28960258420556784, 743397.19339809555094689 4323288.16831001080572605, 743397.53325371979735792 4323288.32323777675628662, 743399.35395955480635166 4323289.11253632977604866, 743399.70537475286982954 4323289.25701421964913607, 743401.50228949019219726 4323289.95616391859948635, 743401.87244413956068456 4323290.09185189846903086, 743403.63706793717574328 4323290.69950276892632246, 743404.02605200628750026 4323290.82462086156010628, 743405.74929504282772541 4323291.3403029115870595, 743406.16751832619775087 4323291.45563110243529081, 743407.84083076426759362 4323291.87823435291647911, 743408.32719252677634358 4323291.9882425544783473, 743409.95094427454750985 4323292.31318705901503563, 743410.63691190490499139 4323292.42582504916936159, 743412.24906181811820716 4323292.63328102882951498, 743413.12109486223198473 4323292.70688933227211237, 743414.76840155222453177 4323292.77353703137487173, 743415.73774111946113408 4323292.76572626177221537, 743417.46737317810766399 4323292.66782592795789242, 743418.42167142778635025 4323292.56769631803035736, 743420.28057745972182602 4323292.28192820213735104, 743421.13340661209076643 4323292.11257954128086567, 743423.16863521677441895 4323291.61557388864457607, 743423.87929677497595549 4323291.41394575219601393, 743426.13771655561868101 4323290.6820228137075901, 743426.70142119203228503 4323290.48049480933696032, 743429.23028074426110834 4323289.49008482974022627, 743429.64258906815666705 4323289.3178865984082222, 743432.47099765343591571 4323288.06167964544147253, 743432.70191094418987632 4323287.95559075381606817, 743435.78886040695942938 4323286.48953616246581078, 743435.88488757982850075 4323286.44329664763063192, 743439.16858051274903119 4323284.84069356694817543, 743442.54537074011750519 4323283.19529092218726873, 743445.913742003031075 4323281.5983476797118783, 743449.2053369760978967 4323280.12028302066028118, 743452.33714868221431971 4323278.83392612542957067, 743455.21452029619831592 4323277.80682624317705631, 743457.77296384109649807 4323277.07686296105384827, 743460.01402904791757464 4323276.63107644859701395, 743461.94812518730759621 4323276.4401270542293787, 743463.60450098710134625 4323276.46698521636426449, 743465.0504844500683248 4323276.67832128517329693, 743466.38716334535274655 4323277.06751524936407804, 743467.72488599736243486 4323277.67066656518727541, 743469.17491164733655751 4323278.57648403383791447, 743470.86222024750895798 4323279.93050573952496052, 743472.82003199774771929 4323281.78333103097975254, 743474.99620650650467724 4323284.05112099274992943, 743477.34820240270346403 4323286.60579725168645382, 743477.37374235584866256 4323286.63343688659369946, 743479.82496772170998156 4323289.27586198691278696, 743480.01762725622393191 4323289.47782931569963694, 743482.52036993287038058 4323292.02912549953907728, 743482.90768843388650566 4323292.40324052236974239, 743485.48384614964015782 4323294.76093904860317707, 743486.12661224137991667 4323295.30140178930014372, 743488.79804272227920592 4323297.36252390779554844, 743489.71210467140190303 4323297.99012533109635115, 743492.49070633505471051 4323299.67925196420401335, 743493.41457577422261238 4323300.17646499071270227, 743496.269459820818156 4323301.52483577467501163, 743497.07790888810995966 4323301.8641608590260148, 743499.96799721848219633 4323302.93073510099202394, 743500.62363731488585472 4323303.14728184416890144, 743503.50805182033218443 4323303.99070885218679905, 743503.98659404611680657 4323304.11786685418337584, 743506.82364664250053465 4323304.79699593689292669, 743507.10933178954292089 4323304.86098489630967379, 743509.85842436028178781 4323305.43452536314725876, 743509.93045311304740608 4323305.4492751182988286, 743512.46225908899214119 4323305.95808658190071583, 743514.60538253234699368 4323306.42891885992139578, 743516.34924424649216235 4323306.89467156026512384, 743517.77240278013050556 4323307.36642447300255299, 743518.8966574240475893 4323307.82976775430142879, 743519.73320750379934907 4323308.25983170047402382, 743520.31245197460521013 4323308.63346657529473305, 743520.68466953886672854 4323308.93682250194251537, 743520.91652895044535398 4323309.17836931627243757, 743521.0724394095595926 4323309.38925657328218222, 743521.17949058744125068 4323309.58288408815860748, 743521.2603026123251766 4323309.79330141935497522, 743521.33598682354204357 4323310.12146730255335569, 743521.38813562609720975 4323310.68172034528106451, 743521.36266171699389815 4323311.56255949847400188, 743521.19265731307677925 4323312.81032425072044134, 743520.81642401206772774 4323314.44222444668412209, 743520.18294300360139459 4323316.46517003793269396, 743519.25493510742671788 4323318.88124104123562574, 743518.03457944304682314 4323321.64324802625924349, 743516.5483742116484791 4323324.68073183856904507, 743514.82577771623618901 4323327.93252320494502783, 743512.89554846123792231 4323331.34799272660166025, 743510.78659503685776144 4323334.8814809350296855, 743508.52685610472690314 4323338.49052832834422588, 743506.14463035110384226 4323342.13409538846462965, 743503.66920640284661204 4323345.76920262258499861, 743501.12106315419077873 4323349.3576104836538434, 743498.51528974110260606 4323352.8682893430814147, 743495.86783528118394315 4323356.27016956638544798, 743493.19427890295628458 4323359.53232152387499809, 743490.51253968267701566 4323362.62368558626621962, 743487.84121667698491365 4323365.51302212756127119, 743485.20231886266265064 4323368.16860151849687099, 743482.60703567857854068 4323370.57178398966789246, 743480.03663779539056122 4323372.73831935133785009, 743477.46213625487871468 4323374.6928773308172822, 743474.85003221279475838 4323376.46121763717383146, 743472.16302689700387418 4323378.06864999234676361, 743469.36132153985090554 4323379.53761414904147387, 743466.40423732600174844 4323380.88707990758121014, 743463.24677549907937646 4323382.1338671026751399, 743459.83257762331049889 4323383.29992549866437912, 743456.12670489819720387 4323384.41160480491816998, 743452.12252786266617477 4323385.49155474174767733, 743447.82066692993976176 4323386.56384501326829195, 743443.22344252117909491 4323387.65516528859734535, 743438.3427148504415527 4323388.79164522793143988, 743438.32489529752638191 4323388.79580519068986177, 743433.18824422045145184 4323390.00178446620702744, 743433.11935595329850912 4323390.01821431890130043, 743427.74156164133455604 4323391.32106258533895016, 743427.64246415148954839 4323391.34561236202716827, 743422.0299968346953392 4323392.76612934563308954, 743421.95990862231701612 4323392.78413918241858482, 743416.16501673730090261 4323394.29553516767919064, 743416.13109760661609471 4323394.30444509256631136, 743410.21876911586150527 4323395.86864050850272179, 743404.26784163108095527 4323397.44372580572962761, 743398.36192263790871948 4323398.98669145163148642, 743392.56812005559913814 4323400.45933786500245333, 743386.95657173078507185 4323401.8230254715308547, 743381.59333562955725938 4323403.04102467559278011, 743376.49805102800019085 4323404.09565568529069424, 743371.62091948988381773 4323405.01640817523002625, 743366.9202825075481087 4323405.83828174509108067, 743362.36271137581206858 4323406.59494600258767605, 743357.93290696619078517 4323407.31759057939052582, 743357.89661783329211175 4323407.32358053419739008, 743353.59857057093176991 4323408.0409750621765852, 743353.49190312915015966 4323408.0593749200925231, 743349.31444380944594741 4323408.80320901423692703, 743349.13476816995535046 4323408.83689873944967985, 743345.05253792076837271 4323409.64103200193494558, 743344.81986365735065192 4323409.6897415816783905, 743340.81770320981740952 4323410.57742373179644346, 743340.60981842293404043 4323410.62586329504847527, 743336.70976698852609843 4323411.57867454551160336, 743336.54085128474980593 4323411.62151414528489113, 743332.77459770801942796 4323412.6114948159083724, 743332.64572102203965187 4323412.64628448616713285, 743329.04479412385262549 4323413.64438491500914097, 743328.95436647115275264 4323413.66991467028856277, 743325.55089507903903723 4323414.64781518932431936, 743325.50327632110565901 4323414.66162505187094212, 743322.3302392321638763 4323415.5903660012409091, 743319.45171442511491477 4323416.43164779338985682, 743316.94748950249049813 4323417.14431089349091053, 743314.86851283919531852 4323417.69698564987629652, 743313.16981538245454431 4323418.08983209542930126, 743311.74185984954237938 4323418.3469000244513154, 743310.42349020100664347 4323418.50108914542943239, 743309.02058085985481739 4323418.57245937082916498, 743307.34977561293635517 4323418.55799088347703218, 743305.27130710217170417 4323418.44139399193227291, 743302.68487718235701323 4323418.20887896046042442, 743299.54656674317084253 4323417.85849583894014359, 743295.92641457181889564 4323417.40486439224332571, 743291.90910922922194004 4323416.86691431794315577, 743287.56830950989387929 4323416.26356532052159309, 743282.97245429805479944 4323415.61305712256580591, 743278.19351243053097278 4323414.93485941924154758, 743278.17852270812727511 4323414.93274946045130491, 743273.28865302028134465 4323414.24636194948107004, 743273.25603362417314202 4323414.24183203279972076, 743268.31844510952942073 4323413.56532444152981043, 743268.26450611045584083 4323413.5580845782533288, 743263.33661789912730455 4323412.9102066233754158, 743263.24502961302641779 4323412.89859684556722641, 743258.36548131122253835 4323412.30284820217639208, 743258.23032386682461947 4323412.28727850597351789, 743253.43402517028152943 4323411.76781884860247374, 743253.24894872319418937 4323411.74950922280550003, 743248.570699333678931 4323411.33069821074604988, 743248.3276940924115479 4323411.311928641051054, 743243.8019637115066871 4323411.01774594374001026, 743243.48783001978881657 4323411.00228638760745525, 743239.14953834726475179 4323410.85708167310804129, 743238.74605670757591724 4323410.85172206349670887, 743234.62993345223367214 4323410.88011499401181936, 743234.11496454011648893 4323410.89693519100546837, 743230.25555939984042197 4323411.12269544042646885, 743229.61786378594115376 4323411.18053522147238255, 743226.04317647172138095 4323411.62054254952818155, 743225.35649278783239424 4323411.72942172829061747, 743222.06824300135485828 4323412.36869631987065077, 743221.35733082261867821 4323412.53404481057077646, 743218.3500182821881026 4323413.35025695245712996, 743217.62167757598217577 4323413.57810466922819614, 743214.89025198598392308 4323414.54849464818835258, 743214.15029274101834744 4323414.84510150831192732, 743211.68942381511442363 4323415.94731961376965046, 743210.94610595225822181 4323416.31805554404854774, 743208.75079339602962136 4323417.52935206238180399, 743208.01183685415890068 4323417.97985698468983173, 743206.07654038397595286 4323419.27781220059841871, 743205.3484951548743993 4323419.81540601886808872, 743203.66844447480980307 4323421.1776402210816741, 743202.95439073164016008 4323421.81565276067703962, 743201.52353562938515097 4323423.22297619190067053, 743200.81157432706095278 4323424.0012569734826684, 743199.62168488116003573 4323425.44838970899581909, 743198.94043568661436439 4323426.3820885019376874, 743197.98320203775074333 4323427.86730057746171951, 743197.38079369009938091 4323428.94207753054797649, 743196.64719600300304592 4323430.46378896944224834, 743196.16784696700051427 4323431.64532448258250952, 743195.6493253851076588 4323433.20157531276345253, 743195.32378407381474972 4323434.43669003248214722, 743195.01186874811537564 4323436.02596028707921505, 743194.84949377831071615 4323437.24758504703640938, 743194.73508486687205732 4323438.86811475362628698, 743194.7205356634221971 4323440.02559020463377237, 743194.79539330641273409 4323441.67552939429879189, 743194.90418024221435189 4323442.7608556617051363, 743195.16641456331126392 4323444.4449742753058672, 743195.39718890632502735 4323445.52833047043532133, 743195.87266992614604533 4323447.27837809547781944, 743196.20407078810967505 4323448.28424519021064043, 743196.92588848725426942 4323450.13840131741017103, 743197.30617567175067961 4323450.99434026423841715, 743198.30741002515424043 4323452.99035440012812614, 743198.68414422450587153 4323453.67352551687508821, 743199.99757522740401328 4323455.84994715079665184, 743200.33885740977711976 4323456.37729025632143021, 743201.99761503865011036 4323458.77196888718754053, 743202.2881759979063645 4323459.17010366171598434, 743204.3251702431589365 4323461.82149878330528736, 743204.56444052769802511 4323462.12087484076619148, 743207.01287136238534003 4323465.06688595842570066, 743207.20330130856018513 4323465.28931301832199097, 743210.08506875508464873 4323468.55714977812021971, 743210.23372855712659657 4323468.72200759127736092, 743213.52840274607297033 4323472.29496022313833237, 743213.64738249755464494 4323472.42175854276865721, 743217.32358359347563237 4323476.27192742563784122, 743217.42190333036705852 4323476.37345607299357653, 743221.44880149117670953 4323480.47331157885491848, 743221.53192123037297279 4323480.55694046895951033, 743225.87797662161756307 4323484.87860297784209251, 743225.95012636599130929 4323484.94963203277438879, 743230.58438914909493178 4323489.46550191845744848, 743230.64808890270069242 4323489.52702109795063734, 743235.53893924329895526 4323494.20920873992145061, 743235.59643900499213487 4323494.26381801534444094, 743240.71268706838600338 4323499.08461378607898951, 743240.76115685456898063 4323499.12997318338602781, 743246.05831296741962433 4323504.05525755230337381, 743246.08214285864960402 4323504.07734725903719664, 743251.4589580288156867 4323509.04422108456492424, 743256.78887349041178823 4323513.97233546804636717, 743261.94523047097027302 4323518.78109151404350996, 743266.80988013162277639 4323523.39607022795826197, 743271.25938365608453751 4323527.73772269580513239, 743275.16276216437108815 4323531.71408014930784702, 743278.37521666684187949 4323535.21063412073999643, 743280.78074765007477254 4323538.11724605597555637, 743282.39833437348715961 4323540.41459617484360933, 743283.33231484843418002 4323542.11368426494300365, 743283.77401657693553716 4323543.30009911395609379, 743283.94794937607366592 4323544.22977736499160528, 743283.96170804067514837 4323545.30101395677775145, 743283.75478989444673061 4323546.85627464950084686, 743283.22639977734070271 4323549.04942758660763502, 743282.35507756867446005 4323551.84841318614780903, 743281.19996899622492492 4323555.08167354576289654, 743279.83422999561298639 4323558.60623040050268173, 743278.32793722173664719 4323562.31596502754837275, 743276.75019763549789786 4323566.12119850516319275, 743275.18099759588949382 4323569.9107921626418829, 743275.14827969786711037 4323569.99080118257552385, 743273.67089538893196732 4323573.64780642557889223, 743273.6028298792662099 4323573.82090430427342653, 743272.28156870685052127 4323577.27508197352290154, 743272.17803589161485434 4323577.55847849603742361, 743271.0662456889403984 4323580.75045929756015539, 743270.94902448519133031 4323581.10858489666134119, 743270.05065517476759851 4323584.03889882564544678, 743269.92946531251072884 4323584.46813353523612022, 743269.23585735308006406 4323587.15231040213257074, 743269.11752892041113228 4323587.66570405382663012, 743268.61972277378663421 4323590.11916367895901203, 743268.51466587465256453 4323590.73513603862375021, 743268.20447199326008558 4323592.97381822392344475, 743268.13063642068300396 4323593.70164916105568409, 743267.99889526597689837 4323595.74099372513592243, 743267.98025074019096792 4323596.59335306659340858, 743268.01880276401061565 4323598.44903981313109398, 743268.08600848389323801 4323599.41709764860570431, 743268.28579414775595069 4323601.10451640002429485, 743268.48719001479912549 4323602.23998205363750458, 743268.85238955286331475 4323603.77731257490813732, 743269.34260607569012791 4323605.29236328881233931, 743269.92824881011620164 4323606.70647520665079355, 743270.82710987515747547 4323608.39760345406830311, 743271.70077491295523942 4323609.71825635619461536, 743272.8934460129821673 4323611.19467710517346859, 743274.12281245249323547 4323612.45107058342546225, 743275.32596574607305229 4323613.49871669337153435, 743276.97860268736258149 4323614.7203803388401866, 743277.98669313243590295 4323615.37569149024784565, 743280.13009968702681363 4323616.59229488112032413, 743280.89362058648839593 4323616.98335949331521988, 743283.59585584443993866 4323618.22412222996354103, 743284.14338845945894718 4323618.45607897639274597, 743287.47171153384260833 4323619.75074063707143068, 743287.843156149960123 4323619.88682869635522366, 743291.8325967324199155 4323621.25960896443575621, 743292.04185357154347003 4323621.32904796022921801, 743296.59708375320769846 4323622.78501683101058006, 743296.69509224244393408 4323622.8157863849774003, 743301.68726473033893853 4323624.35507394187152386, 743301.70740441791713238 4323624.36126385163515806, 743306.98604223935399204 4323625.97670028824359179, 743312.39262855588458478 4323627.65900581516325474, 743317.78883618919644505 4323629.40346058737486601, 743323.03929788339883089 4323631.20476475358009338, 743328.01406625052914023 4323633.05651848111301661, 743332.66028251394163817 4323634.96496172435581684, 743337.03066536062397063 4323636.91867458913475275, 743341.1559435329400003 4323638.88276749290525913, 743345.05506594723556191 4323640.8185509042814374, 743348.73703160369768739 4323642.68003538995981216, 743348.77333116438239813 4323642.69829513877630234, 743352.20639950782060623 4323644.41647157352417707, 743352.37270745565183461 4323644.49779045488685369, 743355.53538779472000897 4323646.0080896578729152 +7, 743355.87908334448002279 4323646.16431749891489744, 743358.78150460997130722 4323647.41808006260544062, 743359.34965666581410915 4323647.64316690526902676, 743362.01050782494712621 4323648.60433327034115791, 743362.74025661998894066 4323648.8367499178275466, 743365.21213684603571892 4323649.52094985265284777, 743366.05787254718597978 4323649.71596689987927675, 743368.40152104431763291 4323650.15022002439945936, 743369.29359451797790825 4323650.27425792533904314, 743371.56943051633425057 4323650.48678385373204947, 743372.41797347017563879 4323650.52977278549224138, 743374.68678618618287146 4323650.54820113349705935, 743375.40393078583292663 4323650.52829093299806118, 743377.72663942852523178 4323650.38028131425380707, 743378.258827407611534 4323650.33206158131361008, 743380.69614119245670736 4323650.04538361448794603, 743381.03319331724196672 4323649.99991396814584732, 743383.64568146388046443 4323649.60214727465063334, 743383.80382769671268761 4323649.57676748745143414, 743386.63401986705139279 4323649.09935164172202349, 743386.6490095074987039 4323649.09681166708469391, 743389.61598831752780825 4323648.59168607927858829, 743392.61754688061773777 4323648.11361012700945139, 743395.60389698133803904 4323647.70438332669436932, 743398.51979045174084604 4323647.40220524370670319, 743401.30259921215474606 4323647.24121548421680927, 743403.88167517422698438 4323647.24589379876852036, 743406.20896959025412798 4323647.42981004808098078, 743408.37951066228561103 4323647.80438403319567442, 743410.55577505473047495 4323648.37356559466570616, 743412.80148131295572966 4323649.13076478336006403, 743415.14004863006994128 4323650.0581318037584424, 743417.58845615095924586 4323651.12756699789315462, 743420.15136301750317216 4323652.29594089556485415, 743420.17991264793090522 4323652.30890071857720613, 743422.79059872287325561 4323653.48918444197624922, 743422.99781598011031747 4323653.58005318604409695, 743425.60349087533541024 4323654.68776781763881445, 743425.9750757155707106 4323654.83702573459595442, 743428.59216830413788557 4323655.82785181328654289, 743429.02277195313945413 4323655.9797296617180109, 743431.65896187571343035 4323656.84239731915295124, 743432.12018464808352292 4323656.98112531471997499, 743434.7806017326656729 4323657.71194459218531847, 743435.2677936420077458 4323657.83271279186010361, 743437.95750772161409259 4323658.42822373658418655, 743438.46533880825154483 4323658.52695219777524471, 743441.18995970429386944 4323658.98385483771562576, 743441.71222004154697061 4323659.05733360070735216, 743444.47644759528338909 4323659.37214797642081976, 743445.00691727874800563 4323659.41829707194119692, 743447.81649130838923156 4323659.58748322632163763, 743448.34757047798484564 4323659.60531267244368792, 743451.20731081673875451 4323659.62533064000308514, 743451.72662974428385496 4323659.61548043694347143, 743454.64154625777155161 4323659.48437024187296629, 743455.13039539754390717 4323659.45036035496741533, 743458.10450803139247 4323659.17009196989238262, 743458.55533763743005693 4323659.11726233921945095, 743461.59170639340300113 4323658.69136571325361729, 743462.00284659105818719 4323658.62493627518415451, 743465.10543145064730197 4323658.05713135562837124, 743465.47977225261274725 4323657.9812120608985424, 743468.65169320453424007 4323657.27454880997538567, 743468.98830470838584006 4323657.19340960774570704, 743472.23279175208881497 4323656.35168797709047794, 743472.53506393195129931 4323656.26818882115185261, 743475.85607703938148916 4323655.29449876956641674, 743476.12447994574904442 4323655.21169962733983994, 743479.52532911556772888 4323654.10997110046446323, 743479.75059304677415639 4323654.03402190189808607, 743483.22803854732774198 4323652.81540476251393557, 743483.36198488832451403 4323652.76739527378231287, 743486.88673810404725373 4323651.47559900488704443, 743486.92857695289421827 4323651.46015917044132948, 743490.44025021558627486 4323650.15536306612193584, 743493.85577648261096328 4323648.90639632474631071, 743497.10889819101430476 4323647.77248825505375862, 743500.14277742989361286 4323646.80437828041613102, 743502.88573655253276229 4323646.05019584018737078, 743505.25984780211001635 4323645.54453056864440441, 743507.26028121029958129 4323645.2832125211134553, 743508.9813939705491066 4323645.21951220463961363, 743510.51903342292644083 4323645.31679002940654755, 743511.97175722313113511 4323645.55935610737651587, 743513.43727347010280937 4323645.95564028527587652, 743514.99630091583821923 4323646.5309121971949935, 743516.70535888592712581 4323647.31421145144850016, 743518.61180686741136014 4323648.33274768199771643, 743520.80379372171591967 4323649.62679033353924751, 743523.32126795686781406 4323651.15931984502822161, 743523.43662675772793591 4323651.22848892025649548, 743526.2305972600588575 4323652.87824681680649519, 743526.53322394192218781 4323653.04990451224148273, 743529.62376880133524537 4323654.73262182343751192, 743530.07036347012035549 4323654.96144872438162565, 743533.53486019687261432 4323656.62817600276321173, 743534.08491297299042344 4323656.872692646458745, 743538.0011190683580935 4323658.47423045616596937, 743538.61371022835373878 4323658.7016872726380825, 743543.05920319561846554 4323660.18890616483986378, 743543.69662317319307476 4323660.37883342523127794, 743548.74903052218724042 4323661.70297395810484886, 743549.33892053947784007 4323661.83863191585987806, 743555.04078084346838295 4323662.96941442973911762, 743555.43222385633271188 4323663.03898332826793194, 743561.68558998871594667 4323664.02260731440037489, 743561.90144601557403803 4323664.05415678862482309, 743568.57393188728019595 4323664.95502153970301151, 743568.65269041713327169 4323664.96533135790377855, 743575.59243032732047141 4323665.84621619246900082, 743582.61087924044113606 4323666.76431052293628454, 743589.53647176409140229 4323667.77659376710653305, 743596.22598188056144863 4323668.93852532841265202, 743602.5408333835657686 4323670.30015468131750822, 743608.42200825782492757 4323671.90402134787291288, 743613.88733585132285953 4323673.73412550892680883, 743618.91582582914270461 4323675.74663772061467171, 743623.46985809016041458 4323677.89111862890422344, 743627.50931248546112329 4323680.11133893486112356, 743630.99042881233617663 4323682.34369945246726274, 743633.86593669827561826 4323684.51093114912509918, 743636.08837542706169188 4323686.51592524163424969, 743637.65158341801725328 4323688.26178291626274586, 743638.63429795135743916 4323689.68776486348360777, 743639.15823583956807852 4323690.75816144328564405, 743639.37303418247029185 4323691.48659239709377289, 743639.42238156637176871 4323691.96380652766674757, 743639.38936897378880531 4323692.34448188915848732, 743639.26860918605234474 4323692.77965664025396109, 743639.00485458271577954 4323693.33852995559573174, 743638.58057449769694358 4323693.9624625826254487, 743637.95569935790263116 4323694.6281548123806715, 743636.99361288314685225 4323695.38368614763021469, 743635.54153831489384174 4323696.23114666063338518, 743633.48156730341725051 4323697.12383698020130396, 743630.73700033780187368 4323697.99802793841809034, 743627.26193730963859707 4323698.79308030288666487, 743623.01828816975466907 4323699.46074468549340963, 743617.97553300647996366 4323699.96997148636728525, 743612.1984903565607965 4323700.31479073967784643, 743605.79488808009773493 4323700.5021222960203886, 743598.86399433179758489 4323700.54553593322634697, 743591.49630752066150308 4323700.46233138255774975, 743583.7758062076754868 4323700.27121836226433516, 743575.78350904281251132 4323699.9918465930968523, 743567.59711474704090506 4323699.64429577812552452, 743559.29527205205522478 4323699.25002560578286648, 743550.97996930358931422 4323698.83693567756563425, 743542.76483464508783072 4323698.43468555435538292, 743542.72719540307298303 4323698.4329056004062295, 743534.74334662081673741 4323698.072134830057621, 743534.67028810153715312 4323698.06910491175949574, 743527.01663363934494555 4323697.77931307256221771, 743526.90094600315205753 4323697.77560318633913994, 743519.68423413846176118 4323697.58597984630614519, 743519.51154770830180496 4323697.58292998839169741, 743512.83749674179125577 4323697.5228747297078371, 743512.58283210382796824 4323697.52383486926555634, 743506.55806032137479633 4323697.62307725381106138, 743506.18358841584995389 4323697.63626731559634209, 743500.88347472320310771 4323697.92245695274323225, 743500.35624653985723853 4323697.96492674760520458, 743495.73482230305671692 4323698.46059339214116335, 743495.02484900667332113 4323698.56261255778372288, 743491.005296197719872 4323699.28819599747657776, 743490.09132908552419394 4323699.49786395393311977, 743486.59697967814281583 4323700.47398398257791996, 743485.49760941695421934 4323700.85121997911483049, 743482.45179538708180189 4323702.09858638234436512, 743481.25328091566916555 4323702.68564983736723661, 743478.57922423502895981 4323704.22475241031497717, 743477.42541215615347028 4323705.00036351010203362, 743475.0464048070134595 4323706.85209203138947487, 743474.07863030547741801 4323707.71152197849005461, 743471.91789425781462342 4323709.89630624931305647, 743471.20665333536453545 4323710.69703676830977201, 743469.19618012174032629 4323713.22062674909830093, 743468.72773123241495341 4323713.85892913024872541, 743466.83207066543400288 4323716.66877549979835749, 743466.534875173936598 4323717.13676988612860441, 743464.72789659909904003 4323720.16456349287182093, 743464.54938585322815925 4323720.47626974247395992, 743462.80423864047043025 4323723.65457144565880299, 743462.71316355071030557 4323723.82427940052002668, 743461.00359704997390509 4323727.08511005714535713, 743460.98548804363235831 4323727.1198196355253458, 743459.30966024217195809 4323730.34697067830711603, 743457.68038843187969178 4323733.40253381337970495, 743456.08344160590786487 4323736.21246995963156223, 743454.45859181601554155 4323738.82155859749764204, 743452.75729219452477992 4323741.3491482837125659, 743450.9788738222559914 4323743.85570826567709446, 743449.13843707973137498 4323746.38076804857701063, 743447.29438052896875888 4323748.91224774159491062, 743447.21305423718877137 4323749.02554638776928186, 743445.43243610532954335 4323751.54297621734440327, 743445.27328354516066611 4323751.77484343480318785, 743443.58116397261619568 4323754.31582291424274445, 743443.35440503573045135 4323754.67243862617760897, 743441.77727409510407597 4323757.27256730478256941, 743441.5197774616535753 4323757.72305186931043863, 743440.07380534417461604 4323760.41234936192631721, 743439.87091664725448936 4323760.81080454029142857, 743438.52901408518664539 4323763.59861075319349766, 743438.38997233414556831 4323763.90017709136009216, 743437.1151501745916903 4323766.79046199563890696, 743437.0299854779150337 4323766.98935957904905081, 743435.78464459558017552 4323769.98682312853634357, 743435.74428718420676887 4323770.08542193099856377, 743434.49143842607736588 4323773.19402410555630922, 743433.20856168295722455 4323776.38101531844586134, 743431.87714663869701326 4323779.60645607300102711, 743430.45672449877019972 4323782.8903661472722888, 743428.908546446938999 4323786.25362530164420605, 743427.20577314484398812 4323789.70190347358584404, 743425.32753494160715491 4323793.23011073656380177, 743423.254662093706429 4323796.82992720790207386, 743420.96661488269455731 4323800.49287299625575542, 743418.44299361167941242 4323804.21172819752246141, 743415.66313855943735689 4323807.97783293202519417, 743412.59729038190562278 4323811.79285719431936741, 743409.20413054467644542 4323815.69042057543992996, 743405.53005821281112731 4323819.67872295714914799, 743401.68100058729760349 4323823.7250346802175045, 743397.78870394383557141 4323827.77527635917067528, 743397.74928550014737993 4323827.81653586402535439, 743393.96104556112550199 4323831.80379824619740248, 743393.83878044667653739 4323831.93482668045908213, 743390.28265373629983515 4323835.81472025997936726, 743390.06560262304265052 4323836.05944732762873173, 743386.85131636611185968 4323839.80531238205730915, 743386.51878057979047298 4323840.2141674654558301, 743383.75682197732385248 4323843.79902428295463324, 743383.296773114008829 4323844.44797644205391407, 743381.08452969021163881 4323847.8475952772423625, 743380.54019784461706877 4323848.79323379043489695, 743378.92548828106373549 4323851.99003484752029181, 743378.35461460764054209 4323853.36650801729410887, 743377.37238789605908096 4323856.34480147995054722, 743376.93423235020600259 4323858.33871691022068262, 743376.61989746266044676 4323861.08276296127587557, 743376.67394363577477634 4323863.75904968101531267, 743377.06227957352530211 4323866.25358850322663784, 743378.01854202942922711 4323869.22640112042427063, 743379.1452077558496967 4323871.4554329039528966, 743380.91055433021392673 4323873.92607139516621828, 743382.8104488430544734 4323875.87434632424265146, 743384.76330531050916761 4323877.43040609359741211, 743387.47146758902817965 4323879.08193434402346611, 743389.09821753529831767 4323879.88155367132276297, 743392.63289720448665321 4323881.23670523427426815, 743393.69679087563417852 4323881.57775051798671484, 743398.00873006694018841 4323882.69864463992416859, 743398.63751936180051416 4323882.84063259046524763, 743403.66002086619846523 4323883.8057683277875185, 743404.00106475059874356 4323883.86520743556320667, 743409.66819132282398641 4323884.75203385669738054, 743409.80833874666132033 4323884.77294353488832712, 743416.04905325057916343 4323885.65912970807403326, 743422.73946953215636313 4323886.61482482682913542, 743429.76827114156913012 4323887.70878808293491602, 743437.08630045864265412 4323889.0170885669067502, 743444.65705953445285559 4323890.61253539379686117, 743452.47149970766622573 4323892.56019776966422796, 743460.51828229334205389 4323894.92098495084792376, 743468.78448865655809641 4323897.75703618954867125, 743477.25770015479065478 4323901.130440728738904, 743485.92452818423043936 4323905.1045178109779954, 743494.7720341719686985 4323909.74479664210230112, 743503.80655934615060687 4323915.12834628112614155, 743513.11383328423835337 4323921.33378574904054403, 743522.82670114503707737 4323928.24499643035233021, 743532.97983768489211798 4323935.60678148549050093, 743533.0620169989997521 4323935.6657407209277153, 743543.65555703279096633 4323943.1845637671649456, 743543.88245502265635878 4323943.34095174726098776, 743554.96817289700265974 4323950.75840595085173845, 743555.3387392774457112 4323950.99473289400339127, 743567.00432904891204089 4323958.07862107828259468, 743567.52222334442194551 4323958.37236725725233555, 743579.85593906044960022 4323964.8906522374600172, 743580.52395069529302418 4323965.21259801927953959, 743591.62721286434680223 4323970.06498403195291758, 743605.77862327778711915 4323985.81837536860257387, 743612.86236927076242864 4324005.36881320923566818, 743612.61248868249822408 4324026.57403365988284349, 743612.41524876980111003 4324030.31098797731101513, 743612.20324044185690582 4324033.55345834884792566, 743611.9847820489667356 4324036.2179058026522398, 743611.76149488787632436 4324038.37950941734015942, 743611.53573029872495681 4324040.11728821787983179, 743611.3077199358958751 4324041.52513105701655149, 743611.07246595493052155 4324042.71916652098298073, 743610.81828074774239212 4324043.82125311437994242, 743610.54316531226504594 4324044.88550017867237329, 743610.25526901497505605 4324045.88547803275287151, 743609.95448185165878385 4324046.82107667811214924, 743609.63850405567791313 4324047.70278599206358194, 743609.30436585983261466 4324048.54007585160434246, 743608.94713760353624821 4324049.34644610062241554, 743608.56150960829108953 4324050.13381659146398306, 743608.15303022437728941 4324050.89190027676522732, 743607.60601113154552877 4324050.78109899070113897, 743604.55435119022149593 4324051.11301596742123365, 743601.74717216449789703 4324052.35499171074479818, 743576.01614500186406076 4324068.87090779189020395, 743573.66542150778695941 4324070.96984279807657003, 743572.08466288854833692 4324073.69614985678344965, 743571.43086105748079717 4324076.77903223130851984, 743571.76895924401469529 4324079.9123136717826128, 743580.97054231050424278 4324113.72213607653975487, 743582.27198574703652412 4324116.60224037617444992, 743583.6365052597830072 4324118.09128725342452526, 743583.38221561070531607 4324118.48518696334213018, 743582.72166638309136033 4324119.44106543529778719, 743581.92994231614284217 4324120.53295227233320475, 743581.00713348377030343 4324121.76503742951899767, 743579.95648989931214601 4324123.14209084305912256, 743578.78211155906319618 4324124.66853245534002781, 743578.7754818492103368 4324124.6771523542702198, 743577.49623818672262132 4324126.34364227578043938, 743577.45180015207733959 4324126.40197157207876444, 743576.10853978281375021 4324128.17868015822023153, 743576.02756340487394482 4324128.28731884900480509, 743574.6548252624925226 4324130.15509632229804993, 743574.53891054540872574 4324130.31613437552005053, 743573.17172355798538774 4324132.25587096437811852, 743573.02326050540432334 4324132.47249834705144167, 743571.69623359548859298 4324134.46435427758842707, 743571.51278250012546778 4324134.75011082179844379, 743570.2606546018505469 4324136.77535631507635117, 743570.04273571982048452 4324137.14536183699965477, 743568.90009575837757438 4324139.18433712888509035, 743568.64648962172213942 4324139.66731127072125673, 743567.64843652537092566 4324141.70097658690065145, 743567.37558296776842326 4324142.30709921941161156, 743566.54775596491526812 4324144.32245470955967903, 743566.30615255446173251 4324144.97421677783131599, 743565.63981204549781978 4324146.98347229231148958, 743565.44987741613294929 4324147.62788443174213171, 743564.92722409591078758 4324149.64921976067125797, 743564.79069764609448612 4324150.25401237607002258, 743564.39383222442120314 4324152.30635728500783443, 743564.30491359776351601 4324152.84459070488810539, 743564.01631677034310997 4324154.94643498212099075, 743563.96482580713927746 4324155.39702946227043867, 743563.76662827585823834 4324157.56668288167566061, 743563.74066505604423583 4324157.91987855453044176, 743563.61491752346046269 4324160.17595089413225651, 743563.60391228657681495 4324160.43264774512499571, 743563.53309544967487454 4324162.79363878443837166, 743563.52953840419650078 4324162.95680677983909845, 743563.49570281885098666 4324165.43285639304667711, 743563.49494419503025711 4324165.50980545021593571, 743563.47960985510144383 4324168.07849392201751471, 743563.46440602501388639 4324170.67614204529672861, 743563.43189185205847025 4324173.23379065468907356, 743563.36584709002636373 4324175.71799017675220966, 743563.25148139894008636 4324178.09191107004880905, 743563.07808424858376384 4324180.31278385315090418, 743562.83740516717080027 4324182.34392897598445415, 743562.52135480754077435 4324184.21284611243754625, 743562.13121422496624291 4324185.98068450670689344, 743561.67521363333798945 4324187.66933388356119394, 743561.16299296915531158 4324189.28687415085732937, 743560.60400217224378139 4324190.84105520509183407, 743560.00741116993594915 4324192.33874695375561714, 743559.38158994191326201 4324193.7887093024328351, 743558.74109811009839177 4324195.18710228241980076, 743558.1186741228448227 4324196.48482649680227041, 743557.52868702018167824 4324197.6446123905479908, 743556.95745740178972483 4324198.68446975480765104, 743556.37924656318500638 4324199.64672806952148676, 743555.76416593324393034 4324200.57680679112672806, 743555.07564710965380073 4324201.52159534487873316, 743554.27575162868015468 4324202.52295322902500629, 743553.32262105669360608 4324203.61947997938841581, 743552.17183705966453999 4324204.85272509139031172, 743550.83289936953224242 4324206.21872861217707396, 743549.3499365053139627 4324207.68634091690182686, 743547.76772704580798745 4324209.228272320702672, 743546.14454908459447324 4324210.80631329212337732, 743546.10662053781561553 4324210.84338284470140934, 743544.50286213052459061 4324212.419173838570714, 743544.4181754004675895 4324212.50338281784206629, 743542.87429534061811864 4324214.05701406672596931, 743542.73397083964664489 4324214.20109232515096664, 743541.28687807731330395 4324215.71712400577962399, 743541.08611613151151687 4324215.93377138674259186, 743539.7654898592736572 4324217.40177362971007824, 743539.51185037626419216 4324217.69496008101850748, 743538.32129071792587638 4324219.12628274131566286, 743538.02364362042862922 4324219.50208818633109331, 743536.9597309484379366 4324220.91363106016069651, 743536.62991609401069582 4324221.37817542161792517, 743535.68947075796313584 4324222.78610831219702959, 743535.34423783293459564 4324223.34144155588001013, 743534.5236602125223726 4324224.7630642494186759, 743534.18694851372856647 4324225.39808651246130466, 743533.48300896270666271 4324226.8494188142940402, 743533.17759768012911081 4324227.54525032639503479, 743532.58693656465038657 4324229.04322202876210213, 743532.33211477182339877 4324229.77041313704103231, 743531.85168245458044112 4324231.33173403982073069, 743531.66232890996616334 4324232.03799539338797331, 743531.28681573481298983 4324233.67585533205419779, 743531.16563918080646545 4324234.29284777119755745, 743530.88454537349753082 4324236.00754673965275288, 743530.8146558019798249 4324236.51496051345020533, 743530.6149315694347024 4324238.30265857372432947, 743530.57766958861611784 4324238.71237354353070259, 743530.44720513233914971 4324240.57001072727143764, 743530.42995111341588199 4324240.88821681868284941, 743530.35631663643289357 4324242.81251316890120506, 743530.35010090272407979 4324243.04678029008209705, 743530.3206566150765866 4324245.03448585327714682, 743530.31955942546483129 4324245.19234391115605831, 743530.3215555299539119 4324247.23986873310059309, 743530.32207714288961142 4324247.33179760165512562, 743530.34347384085413069 4324249.43608172237873077, 743530.34375427919439971 4324249.46123141888529062, 743530.3708013518480584 4324251.59343519061803818, 743530.38842811074573547 4324253.69664932601153851, 743530.38210415304638445 4324255.73058432154357433, 743530.33971917047165334 4324257.66359055880457163, 743530.25109274894930422 4324259.45986849348992109, 743530.11137425503693521 4324261.0776786245405674, 743529.92261273879557848 4324262.46591158863157034, 743529.69867702620103955 4324263.57437799777835608, 743529.45870671782176942 4324264.4034178489819169, 743529.21102294139564037 4324265.02677022572606802, 743528.94265761272981763 4324265.53755399025976658, 743528.60969336715061218 4324266.03267796337604523, 743528.14600294851697981 4324266.58847120869904757, 743527.48230857506860048 4324267.24805321637541056, 743526.56035179225727916 4324268.02927377168089151, 743525.34419334633275867 4324268.93174288515001535, 743523.82895309571176767 4324269.94150073267519474, 743522.05702952411957085 4324271.02309773396700621, 743520.07897099491674453 4324272.14448428060859442, 743517.94089611060917377 4324273.28116066660732031, 743515.68453364633023739 4324274.41371711157262325, 743513.34883248852565885 4324275.52563382685184479, 743510.97200156771577895 4324276.60187098383903503, 743508.59451975952833891 4324277.62696876376867294, 743506.26158578763715923 4324278.58268738631159067, 743503.99352898239158094 4324279.45536701753735542, 743501.79340916138608009 4324280.23818774521350861, 743499.66038625431247056 4324280.92639961838722229, 743497.59288023400586098 4324281.51633269246667624, 743495.59054105216637254 4324282.00504700001329184, 743493.65022873948328197 4324282.39041256997734308, 743491.75979355769231915 4324282.6728194011375308, 743489.86940665822476149 4324282.85806742496788502, 743487.91106969630345702 4324282.95861650258302689, 743485.84570365631952882 4324282.98364653158932924, 743483.64904919778928161 4324282.94171740580350161, 743481.30145691148936749 4324282.84263901039958, 743478.78611736476887017 4324282.69855119567364454, 743476.09043108066543937 4324282.52407378610223532, 743473.23035804182291031 4324282.33725655544549227, 743473.18250899761915207 4324282.33424660004675388, 743470.18243900209199637 4324282.15272932592779398, 743470.1043605690356344 4324282.14831939619034529, 743466.9968831529840827 4324281.98468192294239998, 743466.89804515312425792 4324281.97996199503540993, 743463.72220966930035502 4324281.84422418568283319, 743463.59574225277174264 4324281.8396242642775178, 743460.39084807550534606 4324281.74325597286224365, 743460.23566128453239799 4324281.73979604057967663, 743457.04065778141375631 4324281.69334713276475668, 743456.84972178842872381 4324281.69238717667758465, 743453.70379832456819713 4324281.70672751124948263, 743453.46901334030553699 4324281.71055750362575054, 743450.41151927621103823 4324281.79631693754345179, 743450.11832567397505045 4324281.80884682852774858, 743447.18846037948969752 4324281.9771752217784524, 743446.81863866909407079 4324282.00531493593007326, 743444.0400718639139086 4324282.2686221320182085, 743443.5843424154445529 4324282.32238154113292694, 743440.92022519861347973 4324282.69883731752634048, 743440.39750776800792664 4324282.78689630981534719, 743437.79582158499397337 4324283.29641042836010456, 743437.23910553602036089 4324283.42202896624803543, 743434.64762185048311949 4324284.08505118079483509, 743434.09885619150009006 4324284.24226932320743799, 743431.46550645597744733 4324285.07874939870089293, 743430.96110017830505967 4324285.25392730813473463, 743428.23381583206355572 4324286.28351500816643238, 743427.79501821612939239 4324286.461152876727283, 743424.92144073056988418 4324287.7043579462915659, 743424.5599412628216669 4324287.86935595981776714, 743421.48844206612557173 4324289.34571816958487034, 743421.20592051628045738 4324289.48705646488815546, 743417.89987056283280253 4324291.20676568709313869, 743417.69316687295213342 4324291.31738435104489326, 743414.18204499816056341 4324293.24967096745967865, 743414.03153966483660042 4324293.334189941175282, 743410.36026419629342854 4324295.43798444699496031, 743410.24947767006233335 4324295.50242366641759872, 743406.46297694777604192 4324297.73719654977321625, 743406.38310947292484343 4324297.78483597189188004, 743402.52666181651875377 4324300.10951774008572102, 743402.47186355816666037 4324300.14278733916580677, 743398.59051729645580053 4324302.51653848588466644, 743398.55783833807799965 4324302.53660824429243803, 743394.69675179198384285 4324304.91835927776992321, 743394.68437218840699643 4324304.92600918188691139, 743390.892473567975685 4324307.27271063160151243, 743387.21830109984148294 4324309.54192300327122211, 743383.68993372819386423 4324311.70747663080692291, 743380.32890062569640577 4324313.74812177754938602, 743377.15850089862942696 4324315.64129871316254139, 743374.20382362138479948 4324317.36436772439628839, 743371.49458773212973028 4324318.89263911265879869, 743369.06690199801232666 4324320.1997231999412179, 743366.96758493199013174 4324321.25714034680277109, 743365.24205521331168711 4324322.04435079637914896, 743363.89589294604957104 4324322.57400439027696848, 743362.92010892578400671 4324322.88037071097642183, 743362.28285481303464621 4324323.0192690696567297, 743361.90128358313813806 4324323.06054860167205334, 743361.63424916937947273 4324323.0581186655908823, 743361.31053527258336544 4324323.01753921248018742, 743360.78219425200950354 4324322.89554079528898001, 743359.97923666704446077 4324322.64050406217575073, 743358.91264191246591508 4324322.23128928244113922, 743357.61361940950155258 4324321.6724263858050108, 743356.10592894209548831 4324320.97982518374919891, 743354.40735054831020534 4324320.17710537742823362, 743352.56907395157031715 4324319.30933639407157898, 743352.47490515990648419 4324319.26547695137560368, 743350.54707013175357133 4324318.37980820424854755, 743350.37618238083086908 4324318.30323917884379625, 743348.34843945107422769 4324317.41727045178413391, 743348.11807258799672127 4324317.32002169266343117, 743345.98920211638323963 4324316.45259275566786528, 743345.76059534540399909 4324316.36270390078425407, 743343.55072710732929409 4324315.52495460491627455, 743343.32710037473589182 4324315.44321564864367247, 743341.06217400857713073 4324314.64573586545884609, 743340.8404073518468067 4324314.57055682875216007, 743338.54650247527752072 4324313.82276642788201571, 743338.31472607771866024 4324313.75030736159533262, 743336.01733233535196632 4324313.06262622401118279, 743335.77138627739623189 4324312.99242712650448084, 743333.49664328945800662 4324312.37445512041449547, 743333.22322781011462212 4324312.30430602934211493, 743330.99664522346574813 4324311.76641301438212395, 743330.68600053491536528 4324311.69658392481505871, 743328.53375797090120614 4324311.24864978715777397, 743328.16672448255121708 4324311.17938069812953472, 743326.10230180236976594 4324310.82959533110260963, 743325.66391990392003208 4324310.76527618616819382, 743323.65291786892339587 4324310.51558956317603588, 743323.16630726854782552 4324310.46722023282200098, 743321.16194685734808445 4324310.31737236957997084, 743320.66175695927813649 4324310.29255274590104818, 743318.61730915599036962 4324310.24238364119082689, 743318.13664928171783686 4324310.24214370734989643, 743316.00558507861569524 4324310.29231337085366249, 743315.58058437251020223 4324310.31137318909168243, 743313.31635473750066012 4324310.46122162695974112, 743312.96053276595193893 4324310.49116130173206329, 743310.51619869109708816 4324310.74084851983934641, 743310.23402521992102265 4324310.773728147149086, 743307.56281769764609635 4324311.1235141446813941, 743307.35565258341375738 4324311.15284380502998829, 743304.42756217601709068 4324311.59876863844692707, 743304.29216541000641882 4324311.62033839151263237, 743301.13941112509928644 4324312.14480226766318083, 743301.06087301787920296 4324312.1581921149045229, 743297.73343341343570501 4324312.73899530712515116, 743297.69687429675832391 4324312.74544523563235998, 743294.24414795357733965 4324313.36133800912648439, 743290.73246302723418921 4324313.98720066156238317, 743287.22828769194893539 4324314.59877348598092794, 743283.78300048341043293 4324315.17454675119370222, 743280.44826994207687676 4324315.69354069977998734, 743277.25285520392935723 4324316.1413855217397213, 743274.19964622368570417 4324316.51875120308250189, 743271.30005279008764774 4324316.82718771975487471, 743268.57047457655426115 4324317.06821505445986986, 743266.02778126171324402 4324317.2433331897482276, 743263.69089248054660857 4324317.35471209418028593, 743261.58295779302716255 4324317.40491173416376114, 743259.73022671183571219 4324317.39773205574601889, 743258.15383890038356185 4324317.33929298352450132, 743256.81977517472114414 4324317.23522445280104876, 743255.6549671288812533 4324317.08858643285930157, 743254.57131656515412033 4324316.89628897234797478, 743253.47541522444225848 4324316.64555224217474461, 743252.27989460376556963 4324316.31676650512963533, 743250.91632580803707242 4324315.89098200295120478, 743249.33575965056661516 4324315.35586889181286097, 743247.52456646249629557 4324314.71388714760541916, 743245.52238578035030514 4324313.98601650446653366, 743243.36769715091213584 4324313.19264670554548502, 743241.1000001325737685 4324312.35560746397823095, 743241.0808604103513062 4324312.34855755418539047, 743238.74049454263877124 4324311.49010859522968531, 743238.69535520276986063 4324311.47367880679666996, 743236.31081020925194025 4324310.61199989635497332, 743236.24010125268250704 4324310.58674022182822227, 743233.83620690240059048 4324309.73842114955186844, 743233.73938834678847343 4324309.70482158102095127, 743231.34098440234083682 4324308.88598214276134968, 743231.20689643663354218 4324308.84125271998345852, 743228.82852285075932741 4324308.06661272700875998, 743228.6453756884438917 4324308.00890347268432379, 743226.26040309539530426 4324307.2824628846719861, 743226.03031675575766712 4324307.21538375411182642, 743223.60218595596961677 4324306.53894254472106695, 743223.33588032389525324 4324306.46868345886468887, 743220.82860210817307234 4324305.84406161587685347, 743220.53664705576375127 4324305.77596250828355551, 743217.91297224606387317 4324305.20528999902307987, 743217.6113075289176777 4324305.14452080335468054, 743214.83474692446179688 4324304.62951762694865465, 743214.53666231187526137 4324304.57887829840183258, 743211.57089670759160072 4324304.12105443142354488, 743211.28391204623039812 4324304.08100496977567673, 743208.09244224999565631 4324303.6826303917914629, 743207.83363719319459051 4324303.6537407860159874, 743204.39681362779811025 4324303.31536548770964146, 743204.18656773213297129 4324303.29690574761480093, 743200.55553928844165057 4324303.01663974672555923, 743200.38511267211288214 4324303.0049399109557271, 743196.62785785808227956 4324302.77942324616014957, 743196.48434074863325804 4324302.77184336073696613, 743192.85147437115665525 4324302.60615592263638973, 743190.65076754102483392 432 +4302.42512848787009716, 743190.48891622968949378 4324302.43729121424257755, 743190.33011392434127629 4324302.40393880009651184, 743190.08938250504434109 4324302.42983044497668743, 743189.85029381467029452 4324302.39148901868611574, 743184.74516122019849718 4324302.38161982409656048, 743181.20893506542779505 4324302.34365077223628759, 743181.09973735804669559 4324302.34307079389691353, 743177.73402829258702695 4324302.34368123393505812, 743177.60889094322919846 4324302.34449123963713646, 743174.50324708595871925 4324302.38392115943133831, 743174.31638109870254993 4324302.38804113212972879, 743171.42386366066057235 4324302.47886037360876799, 743171.16303936182521284 4324302.49046026170253754, 743168.41469007765408605 4324302.64865864161401987, 743168.09156730852555484 4324302.67250838782638311, 743165.41706793615594506 4324302.91359570901840925, 743165.05243632185738534 4324302.95321525912731886, 743162.38299859000835568 4324303.29293134249746799, 743162.00550752319395542 4324303.34831069502979517, 743159.27144318528007716 4324303.80283534433692694, 743158.91550185286905617 4324303.86865456122905016, 743156.04698264563921839 4324304.45293758995831013, 743155.72922058391850442 4324304.5230667507275939, 743152.65696826251223683 4324305.25370796304196119, 743152.3988048539031297 4324305.31874717958271503, 743149.06680077139753848 4324306.20551645662635565, 743148.8790356459794566 4324306.25744582898914814, 743145.28384968684986234 4324307.28966330830007792, 743145.15459308354184031 4324307.32772284373641014, 743141.30649473867379129 4324308.48889872338622808, 743141.2228769538924098 4324308.51452840864658356, 743137.13210571277886629 4324309.78807290177792311, 743137.0851069635245949 4324309.80283272080123425, 743132.76130233332514763 4324311.17232602275907993, 743132.74377280205953866 4324311.17789595387876034, 743128.20162416424136609 4324312.62574828788638115, 743123.4623607131652534 4324314.13199989777058363, 743118.54080181999597698 4324315.67846101149916649, 743113.45064692560117692 4324317.24994181748479605, 743108.25667421787511557 4324318.82116262428462505, 743103.04212141840253025 4324320.36269379500299692, 743097.89250620163511485 4324321.84497569222003222, 743092.89500619552563876 4324323.23757869377732277, 743088.13828898931387812 4324324.51022317074239254, 743083.71575207472778857 4324325.63219949975609779, 743079.72790276329033077 4324326.57149808295071125, 743076.25255899853073061 4324327.3046692032366991, 743073.27120125363580883 4324327.83634281251579523, 743070.73693079245276749 4324328.18212872091680765, 743068.59418916387949139 4324328.3632566649466753, 743066.77261829725466669 4324328.40514633245766163, 743065.17644062219187617 4324328.33077744580805302, 743063.68896880955435336 4324328.15223986469209194, 743062.19366523460485041 4324327.86483365576714277, 743060.62656109221279621 4324327.46016894187778234, 743059.00474607245996594 4324326.94073568936437368, 743057.3481498189503327 4324326.31038383767008781, 743055.67127211263868958 4324325.5739033343270421, 743053.98927273578010499 4324324.73711410351097584, 743052.31554152793250978 4324323.80678605102002621, 743050.66407833318226039 4324322.79087908938527107, 743049.03570314461831003 4324321.68982319720089436, 743047.38396642031148076 4324320.47445875685662031, 743045.64261916291434318 4324319.1224060645326972, 743043.81144208542536944 4324317.67366460990160704, 743043.75168251246213913 4324317.62675520870834589, 743041.8733361738268286 4324316.16375394072383642, 743041.68144763493910432 4324316.01797580812126398, 743039.76795284054242074 4324314.60033397562801838, 743039.43431567773222923 4324314.36356701143085957, 743037.46113350847736001 4324313.02313421294093132, 743036.98065819987095892 4324312.71637815237045288, 743034.92390971072018147 4324311.48433399572968483, 743034.28793690796010196 4324311.13409850839525461, 743032.12384317279793322 4324310.0427425866946578, 743031.36931301327422261 4324309.70065701007843018, 743029.07954486075323075 4324308.77488900907337666, 743028.32976589561440051 4324308.50597250647842884, 743025.91995325719472021 4324307.74853239115327597, 743025.21448469301685691 4324307.55484493356198072, 743022.69572725612670183 4324306.9614727608859539, 743022.0345688418019563 4324306.82907452061772346, 743019.41834630607627332 4324306.39634031988680363, 743018.80288781842682511 4324306.31408143974840641, 743016.10091986553743482 4324306.03802526835352182, 743015.52788119937758893 4324305.99606586992740631, 743012.7510775321861729 4324305.87283777166157961, 743012.21619863784871995 4324305.8634279565885663, 743009.37628894532099366 4324305.88942797388881445, 743008.87708976748399436 4324305.90646782051771879, 743005.98525374114979059 4324306.07760600093752146, 743005.51672430406324565 4324306.11640556808561087, 743002.57984174008015543 4324306.42927195411175489, 743002.15123174712061882 4324306.48432130925357342, 742999.15728282777126878 4324306.93481595627963543, 742998.77371206926181912 4324307.00019517261534929, 742995.706587063963525 4324307.58453812543302774, 742995.37060538481455296 4324307.65453727729618549, 742992.21364458079915494 4324308.36906858719885349, 742991.92551188752986491 4324308.43879773747175932, 742988.66210557101294398 4324309.27984744869172573, 742988.42050182307139039 4324309.34534664545208216, 742985.03460026008542627 4324310.30896480847150087, 742984.83656547148711979 4324310.36753408797085285, 742981.31156894727610052 4324311.44991075620055199, 742981.15375315770506859 4324311.49981013871729374, 742977.47307195095345378 4324312.69700535666197538, 742977.34975527552887797 4324312.7379948515444994, 742973.50799937744159251 4324314.04302870854735374, 742973.41500190470833331 4324314.07513831276446581, 742969.44917014334350824 4324315.46599108818918467, 742969.37868207390420139 4324315.49101077858358622, 742965.33692298957612365 4324316.94253278058022261, 742965.28496441710740328 4324316.96135254576802254, 742961.21530655189417303 4324318.44833409320563078, 742961.18003752490039915 4324318.46129393111914396, 742957.1305894092656672 4324319.95816534012556076, 742957.10926999896764755 4324319.96607523784041405, 742953.12831017526332289 4324321.44792682211846113, 742949.26251721871085465 4324322.88979888893663883, 742945.58128907182253897 4324324.25835186243057251, 742942.11507476877886802 4324325.53512597549706697, 742938.82515524502377957 4324326.72707114275544882, 742935.65357198030687869 4324327.84856718685477972, 742932.53918653388973325 4324328.91497392021119595, 742929.41875052952673286 4324329.94278114102780819, 742926.22902558615896851 4324330.94792865309864283, 742922.90410338004585356 4324331.94667625520378351, 742919.3781555884052068 4324332.95545374602079391, 742915.60090349987149239 4324333.98702095914632082, 742911.59495659137610346 4324335.03877793345600367, 742907.40779372700490057 4324336.10311475489288568, 742903.08673377404920757 4324337.17247152328491211, 742898.67873561778105795 4324338.23978830967098475, 742894.22970817086752504 4324339.29813521262258291, 742889.78493035887368023 4324340.34093230497092009, 742885.38704117562156171 4324341.36213966086506844, 742881.06746993749402463 4324342.36047729197889566, 742881.04833041923120618 4324342.36491723824292421, 742876.79824759042821825 4324343.35599495191127062, 742876.74282899033278227 4324343.36908479034900665, 742872.540665403008461 4324344.37425231002271175, 742872.45073768706060946 4324344.39621203672140837, 742868.27018427930306643 4324345.43721908889710903, 742868.14613745838869363 4324345.46894869301468134, 742863.9605751916533336 4324346.56830499693751335, 742863.80779914697632194 4324346.60972447879612446, 742859.59049897314980626 4324347.78908975329250097, 742859.41166366077959538 4324347.84090910293161869, 742855.13626653177198023 4324349.12281305529177189, 742854.9387217863695696 4324349.1842722911387682, 742850.5786686489591375 4324350.59050464909523726, 742850.34541495807934552 4324350.66891366615891457, 742845.86323727457784116 4324352.2373139513656497, 742845.52971649577375501 4324352.36072239838540554, 742840.84362774132750928 4324354.18997934833168983, 742840.43324942316394299 4324354.36077719274908304, 742835.4515235653379932 4324356.5653393417596817, 742835.01378645980730653 4324356.77185673173516989, 742829.64376748108770698 4324359.46616261545568705, 742829.21785048523452133 4324359.6928897425532341, 742823.36708236206322908 4324362.99087790306657553, 742822.97575473762117326 4324363.22335494589060545, 742816.5520114564569667 4324367.24009389709681273, 742816.20786270964890718 4324367.46526102907955647, 742809.11898823641240597 4324372.31443930044770241, 742808.82308820984326303 4324372.52483662404119968, 742800.97661653545219451 4324378.32133272290229797, 742798.78198238811455667 4324380.55109423492103815, 742797.38381155428942293 4324383.34990838821977377, 742796.91894628072623163 4324386.44381869956851006, 742797.43291022954508662 4324389.52997906133532524, 742798.87536909920163453 4324392.30627335794270039, 742801.10515104292426258 4324394.50096509139984846, 742803.90396684780716896 4324395.89919702336192131, 742806.99785986426286399 4324396.36412092018872499, 742810.08398566744290292 4324395.85020736977458, 742812.86023152305278927 4324394.40778574161231518, 742820.5606681841891259 4324388.71916829887777567, 742827.32992327038664371 4324384.08862728159874678, 742833.38625836651772261 4324380.30163545534014702, 742838.82848918030504137 4324377.23392441589385271, 742843.76645110349636525 4324374.75639583636075258, 742848.32350924098864198 4324372.7397613599896431, 742852.63684842572547495 4324371.05601262114942074, 742856.83502384880557656 4324369.58699113503098488, 742860.97951275517698377 4324368.25027795415371656, 742865.06664484506472945 4324367.02482334058731794, 742869.11805933131836355 4324365.89184753876179457, 742873.16515515139326453 4324364.82886083703488111, 742877.23866127827204764 4324363.81451350729912519, 742881.36811669822782278 4324362.82673582620918751, 742885.5809104572981596 4324361.8443580586463213, 742889.89593180024530739 4324360.84707047324627638, 742889.9059615459991619 4324360.8447405006736517, 742894.31998031248804182 4324359.81978324893862009, 742894.34220975125208497 4324359.81460331473499537, 742898.81316689203958958 4324358.76566636003553867, 742898.84330613049678504 4324358.75854644738137722, 742903.32695269107352942 4324357.69196970853954554, 742903.36604170233476907 4324357.68258982431143522, 742907.81807872920762748 4324356.60460322536528111, 742907.86703748453874141 4324356.59261337481439114, 742912.24320602149236947 4324355.50961683504283428, 742912.30446445872075856 4324355.49424702953547239, 742916.56021555839106441 4324354.41248047351837158, 742916.63609361089766026 4324354.39288071729242802, 742920.72753830929286778 4324353.31867407541722059, 742920.82261585374362767 4324353.29321439098566771, 742924.70551519468426704 4324352.23279757983982563, 742924.82165217213332653 4324352.20032798498868942, 742928.46877678332384676 4324351.15688097197562456, 742928.59495346923358738 4324351.11988143809139729, 742932.04731230170000345 4324350.08285435009747744, 742932.17597888689488173 4324350.04325484577566385, 742935.49150046915747225 4324348.99846786540001631, 742935.6144571736222133 4324348.95884836185723543, 742938.85186002298723906 4324347.89251165464520454, 742938.9628670213278383 4324347.85522211994975805, 742942.17987967480439693 4324346.75367585755884647, 742942.27417710446752608 4324346.72086626943200827, 742945.52915808220859617 4324345.56988063268363476, 742945.60171609127428383 4324345.54390095360577106, 742948.95294392178766429 4324344.32974610663950443, 742949.00305254105478525 4324344.31144633516669273, 742952.50838575675152242 4324343.02026243973523378, 742952.53655497834552079 4324343.00983257219195366, 742956.23689258773811162 4324341.63417972903698683, 742956.24694231117609888 4324341.63043977133929729, 742960.10849537781905383 4324340.19013773091137409, 742964.07571557268965989 4324338.71340612880885601, 742968.09688445925712585 4324337.22698464151471853, 742972.12293351895641536 4324335.7559329429641366, 742976.10349427303299308 4324334.32639071252197027, 742979.98761825705878437 4324332.96419762726873159, 742983.72126707760617137 4324331.69589336030185223, 742987.26145204692147672 4324330.54438761901110411, 742990.60862328112125397 4324329.5166203211992979, 742993.77482057409361005 4324328.61553142685443163, 742996.77346367319114506 4324327.84271092154085636, 742999.61844229698181152 4324327.19878879375755787, 743002.32582609227392823 4324326.68298504967242479, 743004.91364464827347547 4324326.29359971638768911, 743007.40181751060299575 4324326.02853280957788229, 743009.80954423872753978 4324325.88604436069726944, 743012.13208491005934775 4324325.86478437948971987, 743014.35444981849286705 4324325.96341288834810257, 743016.46149922627955675 4324326.17867993377149105, 743018.43845335417427123 4324326.50567557755857706, 743020.27258235588669777 4324326.93776990938931704, 743021.95296629855874926 4324327.46593303140252829, 743023.48884493217337877 4324328.08690500538796186, 743024.95841709244996309 4324328.82800545915961266, 743026.45893139555118978 4324329.72685391455888748, 743028.02700722531881183 4324330.79209025111049414, 743029.67928409343585372 4324332.01620457787066698, 743031.43259133864194155 4324333.38181710336357355, 743033.26972837164066732 4324334.83527851291000843, 743033.34148785751312971 4324334.89152778871357441, 743035.22093410207889974 4324336.35079912468791008, 743035.42713251803070307 4324336.50665713008493185, 743037.34331711451523006 4324337.91660909168422222, 743037.66856432368513197 4324338.14609615039080381, 743039.64022639009635895 4324339.47926907986402512, 743040.00202289945445955 4324339.71271609049290419, 743042.02507231070194393 4324340.95721014216542244, 743042.40633822721429169 4324341.18029728066176176, 743044.47278502280823886 4324342.32890254538506269, 743044.87686027237214148 4324342.54156981687992811, 743046.97741451277397573 4324343.58659639209508896, 743047.41045897617004812 4324343.78927378170192242, 743049.53629071079194546 4324344.72292177192866802, 743050.00108428450766951 4324344.91327932011336088, 743052.14320357330143452 4324345.72838880959898233, 743052.64943604287691414 4324345.90562651585787535, 743054.79942292510531843 4324346.59421760495752096, 743055.34932414931245148 4324346.75313554424792528, 743057.49784869072027504 4324347.30793832801282406, 743058.11056821735110134 4324347.44578653015196323, 743060.26037022157106549 4324347.85899110231548548, 743060.95613747800234705 4324347.96747966762632132, 743063.15543579473160207 4324348.23145612142980099, 743063.88170155638363212 4324348.29187529254704714, 743066.18964481225702912 4324348.39941371697932482, 743066.88501029973849654 4324348.40761354845017195, 743069.36108709510881454 4324348.35066403448581696, 743069.97344360570423305 4324348.3177643958479166, 743072.6773625600617379 4324348.08919702749699354, 743073.18692082248162478 4324348.03293769247829914, 743076.17776054760906845 4324347.62486256659030914, 743076.58148091251496226 4324347.56135332770645618, 743079.9188000219874084 4324346.96620053146034479, 743080.22736245428677648 4324346.90615125838667154, 743083.97103955177590251 4324346.11637086886912584, 743084.19948383327573538 4324346.06537149194628, 743088.38462815340608358 4324345.07960353046655655, 743088.55101392522919923 4324345.03891402762383223, 743093.11943709861952811 4324343.87992820795625448, 743093.24495387461502105 4324343.84721860941499472, 743098.11426815949380398 4324342.54444456566125154, 743098.21402557555120438 4324342.51719489693641663, 743103.30227320909034461 4324341.09930226858705282, 743103.38405107520520687 4324341.07614255603402853, 743108.60895430739037693 4324339.57219098694622517, 743108.67777250125072896 4324339.55211123544722795, 743113.95699358696583658 4324337.99146035965532064, 743114.01754199166316539 4324337.97335058357566595, 743119.26899316813796759 4324336.38475005235522985, 743119.32341172744054347 4324336.36812025774270296, 743124.46468525344971567 4324334.78085970878601074, 743124.51250398135744035 4324334.76596989016979933, 743129.47356181079521775 4324333.20708898734301329, 743129.50477097975090146 4324333.19722910784184933, 743134.26367389410734177 4324331.68473763111978769, 743138.80920243146829307 4324330.23580537084490061, 743143.10074791323859245 4324328.8765319986268878, 743147.12625087960623205 4324327.62330730725079775, 743150.8679920268477872 4324326.49422108475118876, 743154.3047921231482178 4324325.50748309679329395, 743157.41401194280479103 4324324.6800031429156661, 743160.19844153441954404 4324324.01781114656478167, 743162.73012904776260257 4324323.5021373312920332, 743165.09741218853741884 4324323.10859200078994036, 743167.39561857562512159 4324322.81611540541052818, 743169.72607574076391757 4324322.60603777319192886, 743172.18233147100545466 4324322.4646592577919364, 743173.33356170833576471 4324322.42851285357028246, 743168.00534033495932817 4324430.97135686781257391, 743168.34746849269140512 4324434.09941757377237082, 743169.64472188137006015 4324436.96631152834743261, 743171.76862818596418947 4324439.2881423095241189, 743174.5088877723319456 4324440.83500280324369669, 743177.11961767298635095 4324441.35856951214373112, 743177.7772267711116001 4324442.41317289788275957, 743178.4836281695170328 4324443.33394132368266582, 743179.01244822749868035 4324443.9673233600333333, 743179.87297686142846942 4324444.91556144040077925, 743180.41781520040240139 4324445.47089445497840643, 743181.44743066839873791 4324446.4417522456496954, 743181.99223763088230044 4324446.91938623785972595, 743183.20591952838003635 4324447.90802380163222551, 743183.73794546793214977 4324448.31259871181100607, 743185.15065339801367372 4324449.31415611505508423, 743185.66074863402172923 4324449.65282185189425945, 743187.28744219068903476 4324450.66245914995670319, 743187.76992699061520398 4324450.9435656126588583, 743189.6255757762119174 4324451.95642286632210016, 743190.07730035088025033 4324452.18829994648694992, 743192.17688396270386875 4324453.19953722134232521, 743192.57515876856632531 4324453.38073494099080563, 743194.92115708719938993 4324454.3867122745141387, 743195.19900324754416943 4324454.50095084216445684, 743197.74402729643043131 4324455.50287822633981705, 743197.91515484731644392 4324455.56843740213662386, 743200.59933593147434294 4324456.56873481161892414, 743200.6853346781572327 4324456.6003344114869833, 743203.44880410202313215 4324457.60144180990755558, 743203.46017393551301211 4324457.6055517615750432, 743206.2124134578043595 4324458.59882926568388939, 743208.85426494758576155 4324459.57177702430635691, 743211.30973989504855126 4324460.51791513059288263, 743213.50687966053374112 4324461.42845369130373001, 743215.425714734592475 4324462.30717265699058771, 743217.12950417771935463 4324463.17657174542546272, 743218.67950707231648266 4324464.05767069011926651, 743220.13231263402849436 4324464.97371919918805361, 743221.54403017950244248 4324465.95276692509651184, 743222.9662291407585144 4324467.0244534919038415, 743224.44369906175415963 4324468.2162785604596138, 743226.00651958584785461 4324469.54394192900508642, 743227.64184065745212138 4324470.98911382351070642, 743229.30423274473287165 4324472.52385460771620274, 743230.97201624431181699 4324474.14503430761396885, 743232.63088151614647359 4324475.85569289699196815, 743234.26650890684686601 4324477.65848034154623747, 743235.86470875958912075 4324479.55580660421401262, 743237.41162140970118344 4324481.55010166112333536, 743238.90071721037384123 4324483.65367535036057234, 743240.35065652930643409 4324485.9093771493062377, 743241.78196911734994501 4324488.32786691375076771, 743243.19160435977391899 4324490.87041513528674841, 743244.57486152462661266 4324493.49021239671856165, 743245.93109984765760601 4324496.14343924354761839, 743247.26021851296536624 4324498.78363626170903444, 743247.26636859914287925 4324498.79583610594272614, 743248.55593655188567936 4324501.34877422079443932, 743248.60155716817826033 4324501.43796310666948557, 743249.84177337365690619 4324503.83327319286763668, 743249.93500451627187431 4324504.00903099682182074, 743251.13272824662271887 4324506.21371346712112427, 743251.27249969786498696 4324506.46247036289423704, 743252.44595067901536822 4324508.48283514194190502, 743252.63910224149003625 4324508.80156116280704737, 743253.80931031494401395 4324510.65379804559051991, 743254.0662017302820459 4324511.04025322198867798, 743255.25420673913322389 4324512.74050200823694468, 743255.58246765367221087 4324513.18374647852033377, 743256.80930944031570107 4324514.74819696694612503, 743257.21052946290001273 4324515.22812097892165184, 743258.49725786852650344 4324516.6729129645973444, 743258.96300668455660343 4324517.16161687206476927, 743260.3306615527253598 4324518.5029401546344161, 743260.84166904096491635 4324518.97051432821899652, 743262.31128021038603038 4324520.22451871074736118, 743262.85334639670327306 4324520.65553333982825279, 743264.44757362361997366 4324521.83541865274310112, 743265.04575825424399227 4324522.24541354831308126, 743266.79374095029197633 4324523.35253977589309216, 743267.43112406949512661 4324523.72403515689074993, 743269.36357155651785433 4324524.75678232125937939, 743270.00766353879589587 4324525.07184840645641088, 743272.15534513862803578 4324526.02859652973711491, 743272.77694648236501962 4324526.28087339643388987, 743275.170581518788822 4324527.1600224981084466, 743275.74862272606696934 4324527.35256011784076691, 743278.41895052185282111 4324528.1524902181699872, 743278.94115199928637594 4324528.29364846739917994, 743281.91892187588382512 4324529.01274959184229374, 743282.38083389808889478 4324529.11280835885554552, 743285.69678518082946539 4324529.74945051968097687, 743286.08417818078305572 4324529.81595970410853624, 743289.74800067814067006 4324530.37110289558768272, 743290.02392552536912262 4324530.40899243392050266, 743293.96120101003907621 4324530.8938265098258853, 743294.14832743676379323 4324530.91507625300437212, 743298.26356816233601421 4324531.34332104586064816, 743298.38430582382716238 4324531.35515090171247721, 743302.5820640524616465 4324531.74056623131036758, 743302.64797276363242418 4324531.74639616254717112, 743306.83276074985042214 4324532.10271185357123613, 743306.84761045989580452 4324532.10396184027194977, 743310.90423084993381053 4324532.4432777427136898, 743314.7039265485946089 4324532.77626371569931507, 743318.13008020224515349 4324533.11329962871968746, 743321.11009350325912237 4324533.46337537001818419, 743323.66438606788869947 4324533.82935089711099863, 743325.82024728634860367 4324534.20919623970985413, 743327.60145655611995608 4324534.59726147167384624, 743329.03674311900977045 4324534.98489669524133205, 743330.16514597891364247 4324535.36236204113811255, 743331.04151387221645564 4324535.7237175740301609, 743331.74056534108240157 4324536.07560322433710098, 743332.35081898584030569 4324536.44462865684181452, 743332.94177392544224858 4324536.863843466155231, 743333.55759976000990719 4324537.36331727262586355, 743334.22896630247123539 4324537.96920976880937815, 743334.97792341536842287 4324538.69996070954948664, 743335.8217808750923723 4324539.56365000363439322, 743336.75515836093109101 4324540.53569795656949282, 743336.79748824168927968 4324540.57951741479337215, 743337.7883053517434746 4324541.59888478368520737, 743337.91825492877978832 4324541.73012315481901169, 743338.95369122666306794 4324542.75676043517887592, 743339.13222050957847387 4324542.92943829298019409, 743340.21175573021173477 4324543.94789568055421114, 743340.43487463297788054 4324544.15210315212607384, 743341.55351857980713248 4324545.14526085648685694, 743341.8300369274802506 4324545.38189792633056641, 743342.98279940418433398 4324546.33263616263866425, 743343.32485695416107774 4324546.60245282109826803, 743344.50674776383675635 4324547.49364179838448763, 743344.93050416791811585 4324547.79618805833160877, 743346.13653311168309301 4324548.61070799082517624, 743346.66309787216596305 4324548.94295388273894787, 743347.88829475315287709 4324549.66367498785257339, 743348.54370716726407409 4324550.01705062016844749, 743349.78307178826071322 4324550.62686310056596994, 743350.60938073380384594 4324550.98811864946037531, 743351.8686727131716907 4324551.47227269783616066, 743352.88646706519648433 4324551.80225864239037037, 743354.21441527979914099 4324552.15551431383937597, 743355.2944364509312436 4324552.37985157407820225, 743356.75053959817159921 4324552.59936891589313745, 743357.73747051833197474 4324552.69840772729367018, 743359.38118728948757052 4324552.78131677396595478, 743360.1837604958564043 4324552.78954670485109091, 743362.07458958844654262 4324552.73301749117672443, 743362.67696623527444899 4324552.69679796509444714, 743364.87438633921556175 4324552.49795052967965603, 743365.30309644131921232 4324552.44981114473193884, 743367.86657625448424369 4324552.10582552291452885, 743368.16077926813159138 4324552.061876080930233, 743371.14981748443096876 4324551.56987231131643057, 743371.33980288880411536 4324551.53672272991389036, 743374.78640890656970441 4324550.9009007615968585, 743374.88891639944631606 4324550.88143100403249264, 743378.71531243214849383 4324550.13418043032288551, 743378.75764139229431748 4324550.12582053616642952, 743382.85720039287116379 4324549.30685085244476795, 743387.10468577407300472 4324548.45957152079790831, 743391.3754209236940369 4324547.62701200135052204, 743395.55912886979058385 4324546.84869180247187614, 743399.53757281589787453 4324546.16468041948974133, 743403.18411613092757761 4324545.61438736785203218, 743406.41250111488625407 4324545.22513230424374342, 743409.27298662031535059 4324544.99177529104053974, 743411.853200564510189 4324544.90116650611162186, 743414.25315063260495663 4324544.94196608662605286, 743416.58537436125334352 4324545.10900410450994968, 743418.96516938204877079 4324545.40595051366835833, 743421.49923362536355853 4324545.8432251987978816, 743424.27460544486530125 4324546.43163802195340395, 743427.31876423920039088 4324547.1699390048161149, 743430.5439514541067183 4324548.03507843241095543, 743433.85026872844900936 4324549.00062662363052368, 743437.14469756465405226 4324550.04037390183657408, 743440.33456943044438958 4324551.12680060416460037, 743443.32412581145763397 4324552.22964709810912609, 743446.00977826258167624 4324553.31282383110374212, 743448.27836835314519703 4324554.3303813599050045, 743450.05437692231498659 4324555.23930021375417709, 743451.35851313918828964 4324556.01740066427737474, 743452.23206566274166107 4324556.63795304112136364, 743452.7333927545696497 4324557.07230770122259855, 743452.95215233240742236 4324557.30987477861344814, 743453.00473252637311816 4324557.38373386673629284, 743453.00614254421088845 4324557.3863838380202651, 743453.02276296284981072 4324557.42991330288350582, 743453.04502400930505246 4324557.51582223828881979, 743453.0538249077508226 4324557.57722148299217224, 743453.05481551738921553 4324557.61290104314684868, 743453.05163621576502919 4324557.6486106039956212, 743453.03821763512678444 4324557.71288980823010206, 743452.9984205870423466 4324557.83245832845568657, 743452.90798594686202705 4324558.02789591811597347, 743452.73567465273663402 4324558.31493236590176821, 743452.4347181279445067 4324558.71814737375825644, 743451.95007791894022375 4324559.25953067466616631, 743451.24426478496752679 4324559.93709228001534939, 743450.2968089422211051 4324560.73861234355717897, 743449.09824036387726665 4324561.65152102150022984, 743447.64570894744247198 4324562.666278425604105, 743445.93965458322782069 4324563.77723462600260973, 743443.9784073035698384 4324564.98441963084042072, 743441.7576373228803277 4324566.2945733405649662, 743439.31011388171464205 4324567.70393581129610538, 743436.70139527879655361 4324569.19450726453214884, 743436.67692604206968099 4324569.208537089638412, 743433.98330026853363961 4324570.75771780591458082, 743433.90902259841095656 4324570.80086727347224951, 743431.19021816330496222 4324572.39576741680502892, 743431.06607209157664329 4324572.46979649364948273, 743428.36727796471677721 4324574.10584612470120192, 743428.18998365045990795 4324574.21587475389242172, 743425.55640879331622273 4324575.88851393200457096, 743425.31960653141140938 4324576.04366199858486652, 743422.79642991186119616 4324577.74830078147351742, 743422.49566999322269112 4324577.95963814947754145, 743420.11932082637213171 4324579.69561654143035412, 743419.77184285596013069 4324579.96130323503166437, 743417.54365138127468526 4324581.74358105938881636, 743417.1626150906085968 4324582.0642470670863986, 743415.07516179862432182 4324583.91167408786714077, 743414.67297693598084152 4324584.28786941058933735, 743412.71881231456063688 4324586.21932539530098438, 743412.3108284855261445 4324586.64714007172733545, 743410.4825230265269056 4324588.68145478330552578, 743410.08499973407015204 4324589.15215893276035786, 743408.37512392748612911 4324591.30822213646024466, 743408.00329061259981245 4324591.80834592133760452, 743406.40440494904760271 4324594.10499738622456789, 743406.06991107913199812 4324594.61831100936979055, 743404.57458604651037604 4324597.0744205079972744, 743404.29287071991711855 4324597.56821437366306782, 743402.89407658542040735 4324600.1905618105083704, 743402.68806815147399902 4324600.59899674262851477, 743401.38045430032070726 4324603.34605263918638229, 743401.23436306405346841 4324603.6674786452203989, 743400.01297864795196801 4324606.48566366638988256, 743399.91017516795545816 4324606.73182061035186052, 743398.77005934610497206 4324609.56750540900975466, 743398.70030396955553442 4324609.74592319782823324, 743397.6365259001031518 4324612.54553844686597586, 743397.59427879250142723 4324612.65875703934580088, 743396.60188763285987079 4324615.36868340149521828, 743396.58548877516295761 4324615.41381284315139055, 743395.66555325733497739 4324617.96374118700623512, 743394.83479104016441852 4324620.24109291471540928, 743394.11446946894284338 4324622.12101957201957703, 743393.48291882034391165 4324623.59324127808213234, 743392.89219182881060988 4324624.75534683186560869, 743392.25940323644317687 4324625.77658412512391806, 743391.45492907427251339 4324626.84334083739668131, 743390.3261951272143051 4324628.10061515495181084, 743388.73842574842274189 4324629.63375600893050432, 743386.58870398590806872 4324631.49228277150541544, 743383.82290140050463378 4324633.69966514222323895, 743380.52305528847500682 4324636.20102380774915218, 743376.81159180123358965 4324638.92471965588629246, 743372.80015754420310259 4324641.81221342924982309, 743368.59188945509959012 4324644.81320575438439846, 743364.29862418887205422 4324647.87211732938885689, 743364.27103512163739651 4324647.89184708241373301, 743360.0034293788485229 4324650.95435859635472298, 743359.94312142301350832 4324650.99797804653644562, 743355.79716240323614329 4324654.02019006200134754, 743355.71012537623755634 4324654.0843592518940568, 743351.76199079852085561 4324657.02827224042266607, 743351.69028326612897217 4324657.08224155846983194, 743347.94358271348755807 4324659.92863576300442219, 743347.90138417400885373 4324659.96087535843253136, 743344.34156769409310073 4324662.69523096363991499, 743344.33296799450181425 4324662.70184087660163641, 743340.96066511352546513 4324665.29797820188105106, 743337.7840551002882421 4324667.72419765684753656, 743334.8004976122174412 4324669.95830951165407896, 743332.00533242314122617 4324671.98169399704784155, 743329.39229940064251423 4324673.77952130232006311, 743326.94031902006827295 4324675.35347140487283468, 743324.63258188206236809 4324676.7174841295927763, 743322.46971808967646211 4324677.87824940122663975, 743320.45738762198016047 4324678.8411771459504962, 743318.6017504760529846 4324679.61357728112488985, 743316.90893669705837965 4324680.20532968360930681, 743315.38408640678972006 4324680.62943419348448515, 743314.02326999953947961 4324680.90368059277534485, 743312.78046890534460545 4324681.05370854772627354, 743311.571475341450423 4324681.10440774634480476, 743310.3238510211231187 4324681.06627804599702358, 743308.98008717910852283 4324680.94024942070245743, 743307.49652470415458083 4324680.72468189429491758, 743305.84335426473990083 4324680.42146543320268393, 743304.00132641708478332 4324680.03929992951452732, 743301.96892152423970401 4324679.59672515373677015, 743301.95678173354826868 4324679.59409518633037806, 743299.78373931860551238 4324679.12373073305934668, 743299.71267055242788047 4324679.10861091036349535, 743297.45979982137214392 4324678.63807645346969366, 743297.34276187513023615 4324678.61436673067510128, 743295.02992269652895629 4324678.16006206441670656, 743294.86646560556255281 4324678.12936242204159498, 743292.51352785190101713 4324677.70769734401255846, 743292.30063 +17145191133 4324677.67190776392817497, 743289.92746525653637946 4324677.29930207040160894, 743289.65974023239687085 4324677.26097251288592815, 743287.28620493761263788 4324676.9538260055705905, 743286.95536126825027168 4324676.91660642344504595, 743284.60131701012142003 4324676.69135890249162912, 743284.19654502265620977 4324676.66089922282844782, 743281.88186167110688984 4324676.53393048420548439, 743281.40548147272784263 4324676.51917059905827045, 743279.14811886986717582 4324676.50307048484683037, 743278.65749938518274575 4324676.51161031145602465, 743276.46777726500295103 4324676.60350885614752769, 743275.97679821401834488 4324676.63623838033527136, 743273.86316627822816372 4324676.8294456759467721, 743273.36907773232087493 4324676.8870348883792758, 743271.33994568523485214 4324677.17486101388931274, 743270.83933774568140507 4324677.2588798925280571, 743268.90313529060222208 4324677.63461493700742722, 743268.39163809968158603 4324677.74785345047712326, 743266.55679493839852512 4324678.20479749143123627, 743266.02907868381589651 4324678.35168558172881603, 743264.304034523665905 4324678.88314870744943619, 743263.75391945452429354 4324679.07029629591852427, 743262.14707399578765035 4324679.66957858577370644, 743261.56292056548409164 4324679.90870551951229572, 743260.08113357448019087 4324680.57062704674899578, 743259.44285259093157947 4324680.88341305032372475, 743258.0865740739973262 4324681.60894379951059818, 743257.39741579385008663 4324682.01383864693343639, 743256.16553581843618304 4324682.80545858666300774, 743255.44136017560958862 4324683.3175820866599679, 743254.33274881029501557 4324684.17779118940234184, 743253.59839544794522226 4324684.80677322763949633, 743252.61192276142537594 4324685.7380514545366168, 743251.89960099686868489 4324686.48363204300403595, 743251.03415705449879169 4324687.48846936598420143, 743250.3795058848336339 4324688.33648867718875408, 743249.63395075383596122 4324689.41738506779074669, 743249.06883900973480195 4324690.33973346464335918, 743248.44206275837495923 4324691.49915888905525208, 743247.97597007662989199 4324692.48672648333013058, 743247.47032274655066431 4324693.72980088461190462, 743247.08959064586088061 4324694.85218680649995804, 743246.72135216963943094 4324696.19452998787164688, 743246.46796901116613299 4324697.40921477600932121, 743246.2569192941300571 4324698.86907651089131832, 743246.15631295123603195 4324700.08626129012554884, 743246.12222189735621214 4324701.68186136055737734, 743246.16286119003780186 4324702.82098714075982571, 743246.32548870542086661 4324704.57059531379491091, 743246.47164348186925054 4324705.58052272442728281, 743246.85076946986373514 4324707.50234878528863192, 743247.06083027250133455 4324708.36394805926829576, 743247.67621463758405298 4324710.47626178432255983, 743247.91515228699427098 4324711.19409285765141249, 743248.78656493476592004 4324713.51512402016669512, 743249.01952004292979836 4324714.08216697722673416, 743250.15304093691520393 4324716.61723551992326975, 743250.33189385361038148 4324716.9957708278670907, 743251.67885320237837732 4324719.6985273128375411, 743251.80381485156249255 4324719.94091430678963661, 743253.30185292579699308 4324722.75208947528153658, 743253.38245384383480996 4324722.90032764058560133, 743254.96922091057058424 4324725.7606522161513567, 743255.01094134582672268 4324725.83511129301041365, 743256.62405767745804042 4324728.68531600758433342, 743258.18761340202763677 4324731.44223188888281584, 743259.60608842829242349 4324733.98626039642840624, 743260.81101281254086643 4324736.23903251066803932, 743261.76112659787759185 4324738.1534388018772006, 743262.48045990010723472 4324739.76491883210837841, 743263.00406275258865207 4324741.11712205875664949, 743263.37120525911450386 4324742.26287783589214087, 743263.62408785114530474 4324743.27695523668080568, 743263.79888144740834832 4324744.25453307200223207, 743263.91808738722465932 4324745.29816007614135742, 743263.99002692487556487 4324746.48868524190038443, 743264.0146500754635781 4324747.82699854858219624, 743263.98638567654415965 4324749.24076091311872005, 743263.90238285646773875 4324750.67704297788441181, 743263.76244085934013128 4324752.09308528061956167, 743263.56931885960511863 4324753.44539837632328272, 743263.3299358959775418 4324754.68792282976210117, 743263.05781079549342394 4324755.77051926963031292, 743262.77384233172051609 4324756.64882825966924429, 743262.49065044848248363 4324757.3347196439281106, 743262.20544625574257225 4324757.88760268781334162, 743261.91471054207067937 4324758.34796688612550497, 743261.61110401048790663 4324758.74664185289293528, 743261.28104741882998496 4324759.11040725000202656, 743260.90748148725833744 4324759.45941281691193581, 743260.47298680967651308 4324759.80653840024024248, 743259.96990357316099107 4324760.15309397503733635, 743259.40998131560627371 4324760.48715969268232584, 743258.764710808172822 4324760.818175433203578, 743257.9622340202331543 4324761.17159085627645254, 743256.93740258959587663 4324761.56236577220261097, 743255.64457759377546608 4324761.99647009093314409, 743254.05336973315570503 4324762.47752375993877649, 743252.14182956120930612 4324763.0106367114931345, 743249.89001764415297657 4324763.60363884642720222, 743247.29200422600843012 4324764.26352007314562798, 743244.40736793680116534 4324764.98386047966778278, 743241.32268673030193895 4324765.75264024082571268, 743241.29866734624374658 4324765.75866015627980232, 743238.09717927547171712 4324766.56497942004352808, 743238.04638057795818895 4324766.57791924849152565, 743234.79622407397255301 4324767.41463811416178942, 743234.71711611247155815 4324767.43534783460199833, 743231.48420966428238899 4324768.29587640520185232, 743231.37189257983118296 4324768.32647600211203098, 743228.22216468129772693 4324769.20425436552613974, 743228.06776872952468693 4324769.24861377757042646, 743225.06712786888238043 4324770.13703203480690718, 743224.86841315065976232 4324770.19812122918665409, 743222.06685816636309028 4324771.09134946297854185, 743221.86748354730661958 4324771.15722859743982553, 743219.25125468091573566 4324772.05230684578418732, 743219.07101961458101869 4324772.11590601224452257, 743216.61045745352748781 4324773.0106142945587635, 743216.45807167876046151 4324773.06743355002254248, 743214.12349680799525231 4324773.95958188734948635, 743214.00781005178578198 4324774.00461129937320948, 743211.76953306142240763 4324774.89195971563458443, 743211.69797508069314063 4324774.92064934223890305, 743209.52634656010195613 4324775.80100785754621029, 743209.50492716580629349 4324775.80971774086356163, 743207.38605725264642388 4324776.67440645955502987, 743205.30330616992432624 4324777.51606546714901924, 743203.18774574343115091 4324778.35573449824005365, 743203.16319643519818783 4324778.36551436875015497, 743200.99860750883817673 4324779.23126305639743805, 743200.86877119052223861 4324779.28424236364662647, 743198.68627340148668736 4324780.19286050368100405, 743198.45856995030771941 4324780.29098922479897738, 743196.26042375294491649 4324781.27075647283345461, 743195.9461629904108122 4324781.41741456370800734, 743193.73460883449297398 4324782.49658055789768696, 743193.34849051549099386 4324782.69549797847867012, 743191.1257788569200784 4324783.90232236310839653, 743190.68571264552883804 4324784.15592908952385187, 743188.45407393504865468 4324785.51868151407688856, 743187.98020940436981618 4324785.82676754798740149, 743185.74190409493166953 4324787.3737176600843668, 743185.26003056112676859 4324787.72851310390979052, 743183.02183890657033771 4324789.4821306150406599, 743182.55986548459623009 4324789.86705568805336952, 743180.34679694904480129 4324791.82671061716973782, 743179.90375369600951672 4324792.24375528749078512, 743177.74532753997482359 4324794.4030477199703455, 743177.3170146670890972 4324794.85922189988195896, 743175.24280015158001333 4324797.21174191869795322, 743174.82816780649591237 4324797.7140855249017477, 743172.86769419454503804 4324800.25341322179883718, 743172.46837246906943619 4324800.80893615912646055, 743170.65117902238853276 4324803.52867161575704813, 743170.27167793153785169 4324804.14366381429135799, 743168.62732391280587763 4324807.03738712426275015, 743168.27501338196452707 4324807.71662851795554161, 743166.83302805328276008 4324810.77794976532459259, 743166.53158698696643114 4324811.48766078799962997, 743165.31007972173392773 4324814.70282015576958656, 743165.10466462804470211 4324815.29960262030363083, 743164.07599524548277259 4324818.62558063492178917, 743163.94740598904900253 4324819.07891491614282131, 743163.0725144287571311 4324822.4653322072699666, 743162.99605166097171605 4324822.78258820995688438, 743162.23585785203613341 4324826.17907540127635002, 743162.19616197654977441 4324826.3646730612963438, 743161.51160585694015026 4324829.72086077276617289, 743161.50112700054887682 4324829.7729701166972518, 743160.8622374979313463 4324832.99254955444484949, 743160.24824268138036132 4324835.94165238831192255, 743159.63848131697159261 4324838.52579980343580246, 743159.01049369946122169 4324840.73487191274762154, 743158.35401102819014341 4324842.62446802482008934, 743157.6695740019204095 4324844.23463763482868671, 743156.95693336031399667 4324845.60677022114396095, 743156.20614025415852666 4324846.79414511378854513, 743155.39256626891437918 4324847.8568515544757247, 743154.47644326940644532 4324848.85266880411654711, 743153.41009305696934462 4324849.82637629192322493, 743152.15065696812234819 4324850.80254369135946035, 743150.65600613655988127 4324851.79453082382678986, 743148.88403161999303848 4324852.81199755985289812, 743146.8013242055894807 4324853.85951382759958506, 743144.38382445310708135 4324854.93966958485543728, 743141.61400278529617935 4324856.05580479372292757, 743138.4779995996505022 4324857.21344937290996313, 743134.95857542683370411 4324858.42217319272458553, 743131.03711095708422363 4324859.69855604786425829, 743126.76796526531688869 4324861.05553777981549501, 743126.75407563918270171 4324861.05996771436184645, 743122.25287629070226103 4324862.49793835543096066, 743122.1693185392068699 4324862.52503798808902502, 743117.54081340273842216 4324864.04861749801784754, 743117.39108746510464698 4324864.09921681974083185, 743112.70713528571650386 4324865.72353503853082657, 743112.4902412542141974 4324865.80156399123370647, 743107.8226707837311551 4324867.5417307410389185, 743107.53356889693532139 4324867.65464923903346062, 743102.95419888384640217 4324869.52578435186296701, 743102.58423953945748508 4324869.68572222907096148, 743098.16492872848175466 4324871.7029355401173234, 743097.72478182869963348 4324871.91701271291822195, 743093.52873899275436997 4324874.08639415074139833, 743093.09757230011746287 4324874.32292104139924049, 743089.15358629997354001 4324876.61445100326091051, 743088.74677932332269847 4324876.86398773826658726, 743085.07500904065091163 4324879.23864671960473061, 743084.68542197719216347 4324879.50383325852453709, 743081.30605629261117429 4324881.92257175594568253, 743080.92570940544828773 4324882.20872803684324026, 743077.85890720167662948 4324884.63250654842704535, 743077.4783908526878804 4324884.94884244725108147, 743074.74432101054117084 4324887.33862148132175207, 743074.35195571824442595 4324887.70050679333508015, 743071.97079712152481079 4324890.01726684626191854, 743071.5512936741579324 4324890.45081125106662512, 743069.54320519894827157 4324892.655492820776999, 743069.07370495516806841 4324893.21017567999660969, 743067.45256578549742699 4324895.27298915106803179, 743066.91538048232905567 4324896.02572949044406414, 743065.6698309825733304 4324897.95380477514117956, 743065.09133133548311889 4324898.97653168812394142, 743064.20373216632287949 4324900.78623857535421848, 743063.65912762586958706 4324902.13768135197460651, 743063.11180945299565792 4324903.84539963025599718, 743062.72923730523325503 4324905.52547831181436777, 743062.50457079184707254 4324907.14757777377963066, 743062.42336596082895994 4324909.03609391767531633, 743062.50369176710955799 4324910.58893435075879097, 743062.77784898644313216 4324912.45298091787844896, 743063.14550777920521796 4324913.95295211300253868, 743063.68973482213914394 4324915.56517195235937834, 743064.32707726152148098 4324917.02862369827926159, 743064.99365569488145411 4324918.30087786726653576, 743065.88619234040379524 4324919.74208998121321201, 743066.59513508388772607 4324920.7438275795429945, 743067.74097608018200845 4324922.16867998987436295, 743068.43293515872210264 4324922.94308045320212841, 743069.83334054471924901 4324924.35534311085939407, 743070.46937750466167927 4324924.94347590580582619, 743072.12562732095830142 4324926.34691876359283924, 743072.68975325429346412 4324926.79114334657788277, 743074.60310754110105336 4324928.18954636435955763, 743075.09340312599670142 4324928.52599228639155626, 743077.2651319233700633 4324929.92312540300190449, 743077.68652755208313465 4324930.17975231166929007, 743080.11790089891292155 4324931.57938549760729074, 743080.47798677766695619 4324931.77693312894552946, 743083.17026471393182874 4324933.18284632451832294, 743083.45656120288185775 4324933.32656461279839277, 743086.40198402968235314 4324934.7465177234262228, 743086.54992213763762265 4324934.8163568926975131, 743089.70458120480179787 4324936.27406961098313332, 743089.71987100481055677 4324936.28110952395945787, 743092.98097857378888875 4324937.78136174660176039, 743096.24347689328715205 4324939.32584342267364264, 743099.4551874534226954 4324940.93620425555855036, 743102.56810161110479385 4324942.63177398964762688, 743105.53325065271928906 4324944.42658242676407099, 743108.31757561024278402 4324946.33952932804822922, 743110.9499367616372183 4324948.42077406030148268, 743113.47382354573346674 4324950.69065639656037092, 743115.87998562620487064 4324953.11897670198231936, 743118.1472126740263775 4324955.66185552813112736, 743120.25588428589981049 4324958.27315344754606485, 743122.18781999684870243 4324960.90485105570405722, 743123.92580928327515721 4324963.50674897152930498, 743125.44811151432804763 4324966.01720796898007393, 743126.72575604182202369 4324968.36494892556220293, 743127.77458321407902986 4324970.58857136871665716, 743128.64902413391973823 4324972.81552370171993971, 743129.40043046872597188 4324975.20126399956643581, 743130.06135424110107124 4324977.89903034642338753, 743130.64747747511137277 4324981.04171108175069094, 743131.16675190138630569 4324984.73682485148310661, 743131.62715888419188559 4324989.07079057488590479, 743132.03387870348524302 4324994.06574797816574574, 743132.37378887669183314 4324999.56567901838570833, 743132.63177640724461526 4325005.38335604127496481, 743132.79450840305071324 4325011.33930128812789917, 743132.84976196219213307 4325017.25499700289219618, 743132.78647409868426621 4325022.9487154595553875, 743132.59583162562921643 4325028.22977904602885246, 743132.27445090748369694 4325032.88869039621204138, 743131.82793857506476343 4325036.74186181277036667, 743131.26944412500597537 4325039.7766034621745348, 743130.63118792907334864 4325042.05244460888206959, 743129.95464125159196556 4325043.69048374518752098, 743129.24244773073587567 4325044.89927825983613729, 743128.40007391653489321 4325045.9356748852878809, 743127.24484732910059392 4325047.00628094840794802, 743125.59772349544800818 4325048.20882514026015997, 743123.38586398400366306 4325049.54503740929067135, 743120.67067648679949343 4325050.95779850240796804, 743117.53812844096682966 4325052.40501897130161524, 743114.06477785715833306 4325053.86623911466449499, 743110.32004311541095376 4325055.33270906843245029, 743106.36759283498395234 4325056.80262887664139271, 743102.26664580521173775 4325058.27850853931158781, 743098.07751081755850464 4325059.7640980314463377, 743098.06737109378445894 4325059.76769798435270786, 743093.86986642726697028 4325061.26134736090898514, 743093.80196829931810498 4325061.28578702080994844, 743089.67109239962883294 4325062.78939629346132278, 743089.54045602562837303 4325062.83797562774270773, 743085.52955794101580977 4325064.36155468504875898, 743085.32818360417149961 4325064.44055360369384289, 743081.49059238145127892 4325065.9941023513674736, 743081.2057005490642041 4325066.11459070909768343, 743077.59477523644454777 4325067.70807904284447432, 743077.20750663930084556 4325067.88896659575402737, 743073.87655628367792815 4325069.53240441344678402, 743073.36068205372430384 4325069.80594073794782162, 743070.36306570179294795 4325071.50931794103235006, 743069.68514753016643226 4325071.93121232278645039, 743067.07419422967359424 4325073.70451880618929863, 743066.21652395580895245 4325074.35725019685924053, 743064.03085314575582743 4325076.21491579245775938, 743063.08136958233080804 4325077.13683374039828777, 743061.30069226014893502 4325079.11105804704129696, 743060.39221224701032043 4325080.28232286591082811, 743058.9815398050704971 4325082.40972539316862822, 743058.24543869879562408 4325083.72548846714198589, 743057.16975252737756819 4325086.042708745226264, 743056.67497591988649219 4325087.33635220490396023, 743055.89927740511484444 4325089.88002976030111313, 743055.62595315161161125 4325091.0067354217171669, 743055.11524368543177843 4325093.81348977517336607, 743054.99428201315458864 4325094.70359849091619253, 743054.71354298468213528 4325097.81006916891783476, 743054.67606531083583832 4325098.46111093927174807, 743054.59030811092816293 4325101.90393746551126242, 743054.58928615797776729 4325102.35697174724191427, 743054.66684183443430811 4325106.15750384237617254, 743054.67932751402258873 4325106.4929996132850647, 743054.90185575326904655 4325110.61155775841325521, 743054.91949002793990076 4325110.87398445885628462, 743055.27201017388142645 4325115.25563935097306967, 743055.29128350934479386 4325115.46701669413596392, 743055.75878490600734949 4325120.05678902007639408, 743055.77812759159132838 4325120.23149682767689228, 743056.34562958090100437 4325124.97446727473288774, 743056.36442179954610765 4325125.12218541838228703, 743057.01693372882436961 4325129.96339467540383339, 743057.03495560574810952 4325130.090913075953722, 743057.75746681645978242 4325134.97540182154625654, 743057.77475844195578247 4325135.08786041103303432, 743058.55229828017763793 4325139.96069934125989676, 743058.56759960320778191 4325140.05375817697495222, 743059.38209758640732616 4325144.8660878948867321, 743059.38940818584524095 4325144.90872735623270273, 743060.20902439462952316 4325149.62712826859205961, 743060.99484875204507262 4325154.20065099373459816, 743061.70986123336479068 4325158.58368609845638275, 743062.32203203625977039 4325162.74886389076709747, 743062.80125124275218695 4325166.66489476803690195, 743063.1208087804261595 4325170.29571916162967682, 743063.26051466888748109 4325173.61842734832316637, 743063.2162600380834192 4325176.69154858309775591, 743063.01785585400648415 4325179.60549174435436726, 743062.69914197991602123 4325182.39300643373280764, 743062.29337800038047135 4325185.07050246559083462, 743061.83370357402600348 4325187.65810959972441196, 743061.35918790404684842 4325190.15779783576726913, 743061.34940903668757528 4325190.2100271712988615, 743060.91724971972871572 4325192.55449738539755344, 743060.87083553802222013 4325192.82747391704469919, 743060.53869032952934504 4325194.95881687104701996, 743060.46774171653669327 4325195.5168197974562645, 743060.27756988909095526 4325197.44445538800209761, 743060.23026576521806419 4325198.28420477546751499, 743060.20510766841471195 4325200.05532243195921183, 743060.24859595252200961 4325201.13967878464609385, 743060.40678219962865114 4325202.81088780146092176, 743060.59799968614242971 4325204.02697257418185472, 743060.95785089314449579 4325205.65488224569708109, 743061.29328455543145537 4325206.82766764704138041, 743061.87312133423984051 4325208.46888726949691772, 743062.28014010679908097 4325209.45123510994017124, 743063.09827307204250246 4325211.16238398570567369, 743063.48804782843217254 4325211.89737493824213743, 743064.56282759516034275 4325213.73506236169487238, 743064.87912984634749591 4325214.2406561654061079, 743066.22884702822193503 4325216.26150144077837467, 743066.45882799464743584 4325216.59128741268068552, 743068.09211312630213797 4325218.83580002933740616, 743068.26159353891853243 4325219.06192727014422417, 743070.14816683868411928 4325221.5062375208362937, 743070.27995700389146805 4325221.67327548656612635, 743072.37981861329171807 4325224.27744384668767452, 743072.48648865579161793 4325224.40748226642608643, 743074.7596687130862847 4325227.13152922410517931, 743074.84908868779893965 4325227.23718794248998165, 743077.25558733171783388 4325230.04117397870868444, 743077.33317726943641901 4325230.13049289397895336, 743079.83301464165560901 4325232.9744484880939126, 743079.90260455245152116 4325233.05279754288494587, 743082.4557807925157249 4325235.89677317440509796, 743082.52052068465854973 4325235.96819231007248163, 743085.08706593071110547 4325238.77220846526324749, 743085.14013582386542112 4325238.82972776889801025, 743087.68282034760341048 4325241.56439479626715183, 743090.14969498105347157 4325244.21471284795552492, 743092.47788068768568337 4325246.75978215876966715, 743094.64495827257633209 4325249.21798247564584017, 743096.62965844292193651 4325251.60395360179245472, 743098.41476180183235556 4325253.93106536287814379, 743099.98845884425099939 4325256.21308757364749908, 743101.35376004583667964 4325258.48057984933257103, 743102.54982607567217201 4325260.81820114888250828, 743103.62050698860548437 4325263.28142081014811993, 743104.57791226345580071 4325265.85549900587648153, 743105.42915118439123034 4325268.50829615443944931, 743106.18404295691289008 4325271.20684267394244671, 743106.85498674644622952 4325273.91880898270756006, 743107.45672170061152428 4325276.61380546540021896, 743108.00399683183059096 4325279.2535026092082262, 743108.49961070844437927 4325281.7604713961482048, 743108.9275625383015722 4325284.07079261727631092, 743109.27611217251978815 4325286.16208654548972845, 743109.53736950340680778 4325288.01867336593568325, 743109.70663426094688475 4325289.61976334732025862, 743109.78504594531841576 4325290.93851682357490063, 743109.78403373272158206 4325291.94195420946925879, 743109.73142651980742812 4325292.60117589216679335, 743109.71893088018987328 4325292.67011440079659224, 743109.59808172646444291 4325292.73554412368685007, 743109.10485594056081027 4325292.94752116221934557, 743108.40862478245981038 4325293.17785784602165222, 743107.41554015420842916 4325293.42135418020188808, 743106.04545344086363912 4325293.66047034785151482, 743104.24572536360938102 4325293.87259658426046371, 743101.97945636138319969 4325294.03848312422633171, 743099.21560684987343848 4325294.14438011404126883, 743095.91934740520082414 4325294.18125764559954405, 743092.07362834725063294 4325294.1465157438069582, 743087.78994755377061665 4325294.05405429750680923, 743083.22141212807036936 4325293.92363316193223, 743078.517439273186028 4325293.77611215598881245, 743073.82590622815769166 4325293.63288110680878162, 743073.77969718584790826 4325293.63157109171152115, 743069.26673082099296153 4325293.51466982252895832, 743069.17343276459723711 4325293.51268978789448738, 743064.96621075086295605 4325293.44298810325562954, 743064.80431415943894535 4325293.44161802530288696, 743061.03830400016158819 4325293.44020574446767569, 743060.76758980343583971 4325293.44376554060727358, 743057.54201973532326519 4325293.52991248480975628, 743057.13132878835313022 4325293.54934199154376984, 743054.40041998820379376 4325293.73483798746019602, 743053.81678337324410677 4325293.79171691462397575, 743051.49851775635033846 4325294.08648178447037935, 743050.720896553597413 4325294.21668966673314571, 743048.73325603967532516 4325294.63066323567181826, 743047.79114035132806748 4325294.87526957131922245, 743046.05208685237448663 4325295.41840166132897139, 743045.05331461178138852 4325295.78981636185199022, 743043.48083004378713667 4325296.47201679646968842, 743042.5838869244325906 4325296.91572064720094204, 743041.09595320420339704 4325297.74692924693226814, 743040.42638465575873852 4325298.15624366980046034, 743038.94097369560040534 4325299.1464002663269639, 743038.50847827328834683 4325299.45153614692389965, 743036.96158152003772557 4325300.60540063492953777, 743036.63068310520611703 4325300.86319717578589916, 743035.03038010117597878 4325302.16482975799590349, 743034.74454044131562114 4325302.40634653624147177, 743033.11692026245873421 4325303.83463749941438437, 743032.85712995659559965 4325304.07081435713917017, 743031.22830167296342552 4325305.60466398950666189, 743030.98149117128923535 4325305.84524079691618681, 743029.37753385724499822 4325307.46352937072515488, 743029.13350355019792914 4325307.71859599743038416, 743027.58051627920940518 4325309.40023379866033792, 743027.33078654995188117 4325309.68105009663850069, 743025.85486839420627803 4325311.40491740591824055, 743025.59162965789437294 4325311.72562319040298462, 743024.21886968810576946 4325313.47062029410153627, 743023.94065216323360801 4325313.84166543465107679, 743022.69320956477895379 4325315.58832259010523558, 743022.41917253751307726 4325315.99255731236189604, 743021.3034769503865391 4325317.72806468978524208, 743021.03832030715420842 4325318.16464900597929955, 743020.05685147666372359 4325319.87780674733221531, 743019.80002539022825658 4325320.35571054928004742, 743018.95528306567575783 4325322.03533879481256008, 743018.70751772541552782 4325322.56617193017154932, 743018.0019716575043276 4325324.20110083092004061, 743017.76593728200532496 4325324.80040311068296432, 743017.20207721658516675 4325326.37944279983639717, 743016.98395403882022947 4325327.06779396440833807, 743016.56427972891833633 4325328.5797645952552557, 743016.37649795517791063 4325329.38372431695461273, 743016.10348914877977222 4325330.81744602974504232, 743015.9611106850206852 4325331.86253272835165262, 743015.84905702946707606 4325333.21531556360423565, 743015.8506465827813372 4325334.88529446627944708, 743015.96108732756692916 4325336.18839807342737913, 743016.38507647113874555 4325338.34106114692986012, 743016.79133076558355242 4325339.63421507086604834, 743017.70434788544662297 4325341.69375963881611824, 743018.47976487479172647 4325343.01671343017369509, 743019.57986858719959855 4325344.54348485451191664, 743020.79777742072474211 4325345.93598805740475655, 743021.77762390929274261 4325346.91115637682378292, 743023.51136373518966138 4325348.4129485385492444, 743024.26584822894074023 4325349.00560154672712088, 743026.58873819664586335 4325350.6564222164452076, 743027.135583013179712 4325351.01866799965500832, 743030.12097226735204458 4325352.85827672947198153, 743030.49804818420670927 4325353.07940418086946011, 743034.18176641140598804 4325355.13283067941665649, 743034.41402370552532375 4325355.2583092488348484, 743038.6819327250123024 4325357.49181386921554804, 743038.82380100653972477 4325357.56462304200977087, 743043.52425317838788033 4325359.92978630308061838, 743043.60804213816300035 4325359.97145583387464285, 743048.5894198213936761 4325362.41982824075967073, 743048.63021930947434157 4325362.43976801633834839, 743053.74085486156400293 4325364.92292009294033051, 743058.81660080282017589 4325367.38633241131901741, 743063.67586986278183758 4325369.76677564904093742, 743068.16106445877812803 4325372.01188035774976015, 743072.15516641736030579 4325374.0843869224190712, 743075.67748558626044542 4325375.99896517861634493, 743078.77271142159588635 4325377.7782448548823595, 743081.48527335445396602 4325379.44353571534156799, 743083.86381075973622501 4325381.01769750751554966, 743085.96259295241907239 4325382.52702993247658014, 743087.84165922133252025 4325384.00333262514322996, 743089.56520889047533274 4325385.48530514724552631, 743091.19969136593863368 4325387.01904696319252253, 743092.81165615667123348 4325388.65661745984107256, 743094.46106287150178105 4325390.44777605496346951, 743096.19967115751933306 4325392.43459225539118052, 743098.0731306285597384 4325394.65014567691832781, 743100.1234708494739607 4325397.11991603020578623, 743102.38172131555620581 4325399.85300322715193033, 743102.40094132022932172 4325399.87620294839143753, 743104.89524150709621608 4325402.87651695497334003, 743104.93165150436107069 4325402.92005643341690302, 743107.68238103773910552 4325406.19087722804397345, 743107.70160103286616504 4325406.2136669559404254, 743110.64804015692789108 4325409.69606524705886841, 743113.69896927080117166 4325413.30343205388635397, 743116.76363877579569817 4325416.94949840102344751, 743119.75839906092733145 4325420.55595521256327629, 743122.59678050025831908 4325424.04037346318364143, 743125.18812344572506845 4325427.31378420535475016, 743127.43939818476792425 4325430.28085856232792139, 743129.29412484867498279 4325432.88128724414855242, 743130.78734318655915558 4325435.14290993008762598, 743131.96808283566497266 4325437.10385617054998875, 743132.88645344180986285 4325438.8043054910376668, 743133.59687476675026119 4325440.29606728535145521, 743134.1556468028575182 4325441.64610075019299984, 743134.61644984548911452 4325442.93562491051852703, 743135.02160427684430033 4325444.23687887750566006, 743135.38279970176517963 4325445.54145277291536331, 743135.6844653426669538 4325446.78682737145572901, 743135.9214408949483186 4325447.94969295989722013, 743136.09382618335075676 4325449.02022965624928474, 743136.20352098729927093 4325449.98812759760767221, 743136.25476502976380289 4325450.84288691263645887, 743136.25474798155482858 4325451.57469773851335049, 743136.21434938767924905 4325452.17061023321002722, 743136.15136837039608508 4325452.60254477150738239, 743136.09058413922321051 4325452.85558155737817287, 743136.05834146728739142 4325452.9464418338611722, 743135.94702057482209057 4325453.04702905099838972, 743135.65205055486876518 4325453.25712619908154011, 743135.07308866968378425 4325453.58615165576338768, 743134.1605655801249668 4325454.01205565128475428, 743132.93794007832184434 4325454.49475871119648218, 743131.4425409062532708 4325455.00786118861287832, 743129.70859710988588631 4325455.53854327276349068, 743127.76602797687519342 4325456.08255503792315722, 743125.64065298321656883 4325456.64105648081749678, 743123.35400175489485264 4325457.21890756860375404, 743120.94030363345518708 4325457.81998826470226049, 743120.91212435718625784 4325457.82704815547913313, 743118.44347778277006 4325458.44943854585289955, 743118.35273012204561383 4325458.47276818566024303, 743115.89500370202586055 4325459.11695830523967743, 743115.73667782091069967 4325459.15984765440225601, 743113.33900059515144676 4325459.83051748108118773, 743113.1008268870646134 4325459.90033643040806055, 743110.81229789601638913 4325460.60216594580560923, 743110.47213708190247416 4325460.71318430174142122, 743108.34186536760535091 4325461.45084347762167454, 743107.86276871908921748 4325461.63060087151825428, 743105.93985331989824772 4325462.40875968430191278, 743105.26153310691006482 4325462.71307536121457815, 743103.59509306156542152 4325463.53642379585653543, 743102.668201963766478 4325464.0574365733191371, 743101.29409656825009733 4325464.9290746096521616, 743100.24450240761507303 4325465.69481421448290348, 743099.1455819719703868 4325466.61163188517093658, 743098.09006245760247111 4325467.63267827313393354, 743097.23591754166409373 4325468.59000561013817787, 743096.29089959664270282 4325469.83213930297642946, 743095.65114076505415142 4325470.82530634757131338, 743094.92159015603829175 4325472.17528883460909128, 743094.46580796735361218 4325473.19961561542004347, 743093.99172107572667301 4325474.50102890469133854, 743093.68951609754003584 4325475.55185547471046448, 743093.43642126175109297 4325476.66951123252511024, 743093.25740405346732587 4325477.74214761424809694, 743093.15215146553236991 4325478.5993467578664422, 743093.06590259296353906 4325479.68912299443036318, 743093.03560485201887786 4325480.34522472135722637, 743093.02083484688773751 4325481.45683073438704014, 743093.03855761769227684 4325482.19927141629159451, 743093.11034690483938903 4325483.37475669011473656, 743093.19022920308634639 4325484.16512681264430285, 743093.37272818293422461 4325485.45590072683990002, 743093.50324829830788076 4325486.18375167530030012, 743093.8206373646389693 4325487.64122358709573746, 743093.97294488444458693 4325488.24853606522083282, 743094.44940443406812847 4325489.92412536311894655, 743094.59791972069069743 4325490.4008394805714488, 743095.25760015333071351 4325492.3459355253726244, 743095.3881837900262326 4325492.70790107734501362, 743096.25527549919206649 4325494.97393324878066778, 743096.36327799316495657 4325495.24432993307709694, 743097.46193137508817017 4325497.88269760739058256, 743097.54379301948938519 4325498.07366526871919632, 743098.88402836583554745 4325501.11266809701919556, 743098.93095922435168177 4325501.21745681669563055, 743100.46612638747319579 4325504.5929655 +6748449802, 743100.48581673088483512 4325504.63599503971636295, 743102.15450544713530689 4325508.2594807893037796, 743103.88667530473321676 4325512.02364483010023832, 743105.61293588881380856 4325515.82183844596147537, 743107.27146688476204872 4325519.56221274938434362, 743108.79808789165690541 4325523.14505893643945456, 743110.12866841279901564 4325526.4653382757678628, 743111.22409817134030163 4325529.46054151561111212, 743112.1041474089724943 4325532.16785821411758661, 743112.79696638381574303 4325534.63575777038931847, 743113.32945539266802371 4325536.9133995957672596, 743113.72780488047283143 4325539.05694299563765526, 743114.01551543304231018 4325541.12812722288072109, 743114.21206777612678707 4325543.19095148332417011, 743114.33218240598216653 4325545.29128520935773849, 743114.38180913892574608 4325547.4258584501221776, 743114.34564937686081976 4325549.65549043286591768, 743114.20020620466675609 4325552.12622930016368628, 743113.91489291004836559 4325554.98705315869301558, 743113.45613247668370605 4325558.36629036907106638, 743112.79144756740424782 4325562.37539950478821993, 743111.89094062335789204 4325567.11626925226300955, 743110.72576409974135458 4325572.6929382961243391, 743109.28844902059063315 4325579.15431599598377943, 743107.67080905532930046 4325586.25283553265035152, 743107.66810932103544474 4325586.26467537879943848, 743105.99555552157107741 4325593.64548130985349417, 743105.98010707786306739 4325593.71480043046176434, 743104.37572077265940607 4325601.0356371533125639, 743104.34635385207366198 4325601.17434538714587688, 743102.92746693175286055 4325608.11815698817372322, 743102.88075224298518151 4325608.36217388324439526, 743101.76466660434380174 4325614.61192444618791342, 743101.69602587190456688 4325615.05296884849667549, 743101.00006340513937175 4325620.29160245787352324, 743100.92117122525814921 4325621.20348093938082457, 743100.827912587672472 4325623.50394788850098848, 743084.46736594417598099 4325650.29286120925098658, 743047.36368863249663264 4325684.3990790881216526, 743046.20110584038775414 4325685.66907204128801823, 742973.99101663939654827 4325779.66399773117154837, 742973.24813151964917779 4325781.03036961704492569, 742972.50458656903356314 4325782.39024179521948099, 742972.50236306013539433 4325782.40204476471990347, 742972.49660713586490601 4325782.41263150423765182, 742972.21235657506622374 4325783.94147427193820477, 742971.9253833742113784 4325785.46480233874171972, 742971.9269161899574101 4325785.47671651188284159, 742971.9269161899574101 4325785.47671651188284159, 742971.9269161899574101 4325785.47671651188284159)),((743189.27865465928334743 4319357.26686515286564827, 743189.23757648165337741 4319357.69144521746784449, 743189.48496446991339326 4319358.80977462418377399, 743189.63677631039172411 4319359.94511533062905073, 743189.82120697700884193 4319360.32977519184350967, 743189.91333717573434114 4319360.74625421967357397, 743190.49419636651873589 4319361.73340296093374491, 743190.98941195383667946 4319362.76625483389943838, 743191.28366913530044258 4319363.07508276961743832, 743191.49999726878013462 4319363.44272444676607847, 743192.35750836879014969 4319364.20209539495408535, 743193.14761750784236938 4319365.03132843412458897, 743200.79951371799688786 4319370.87827697303146124, 743203.6731295173522085 4319372.40730729140341282, 743206.88556085247546434 4319372.93239904381334782, 743210.09645394398830831 4319372.3979141665622592, 743212.9655558904632926 4319370.86049316078424454, 743215.18888390518259257 4319368.48303507920354605, 743255.7050303170690313 4319307.7644222816452384, 743256.60931959107983857 4319306.07996017020195723, 743314.67982573737390339 4319167.55210639256983995, 743315.41739841992966831 4319164.57921095378696918, 743315.22049857478123158 4319161.52252006251364946, 743314.10759805794805288 4319158.66882005240768194, 743312.18312691524624825 4319156.2858571745455265, 743303.23719732754398137 4319148.15537279564887285, 743300.57304549100808799 4319146.41765461303293705, 743297.49797877832315862 4319145.60447636153548956, 743294.32312180672306567 4319145.79812583513557911, 743291.3696882032090798 4319146.97899207007139921, 743288.93649125681258738 4319149.02761544845998287, 743287.26972458814270794 4319151.73670764453709126, 743235.41822779190260917 4319277.22298112325370312, 743229.99571474455296993 4319290.22645722609013319, 743190.78771942760795355 4319351.70875508710741997, 743190.33050023776013404 4319352.75897752307355404, 743189.78602507989853621 4319353.76665275823324919, 743189.70914359972812235 4319354.18622007314115763, 743189.53886624390725046 4319354.57734342385083437, 743189.42856035311706364 4319355.71745444275438786, 743189.22212015616241843 4319356.84406596701592207, 743189.27865465928334743 4319357.26686515286564827, 743189.27865465928334743 4319357.26686515286564827, 743189.27865465928334743 4319357.26686515286564827)),((731019.83287414070218801 4310676.47078250534832478, 731020.37181376211810857 4310676.22712619230151176, 731141.42202926508616656 4310617.1281174598261714, 731141.45466862653847784 4310617.11210708599537611, 731262.07507085567340255 4310557.67895173188298941, 731368.99132196395657957 4310544.53030802588909864, 731478.31850094092078507 4310534.59888863936066628, 731527.88948202528990805 4310539.47524031717330217, 731566.6391344724688679 4310553.5870803389698267, 731615.01055889611598104 4310578.38239529356360435, 731689.31351197103504092 4310621.96891064662486315, 731689.64988815679680556 4310622.15760578867048025, 731740.09405630629044026 4310649.18977024126797915, 731741.19907290546689183 4310649.69801458157598972, 731825.60566184914205223 4310682.4587447252124548, 731877.00250982609577477 4310708.96189140807837248, 731879.16609215084463358 4310709.77684106212109327, 731925.08064962620846927 4310721.22589604742825031, 731926.42001043504569679 4310721.4644981250166893, 732021.0498737768502906 4310731.74528335127979517, 732022.36232359590940177 4310731.8010763805359602, 732094.30757104675285518 4310730.1284930482506752, 732096.85621801775414497 4310729.73669190518558025, 732173.75693980930373073 4310707.47119196783751249, 732174.0690941724460572 4310707.37525834422558546, 732182.18961644778028131 4310704.73379464074969292, 732189.65383227390702814 4310702.5148377763107419, 732196.60968887316994369 4310700.65964607708156109, 732203.09723543061409146 4310699.14426910690963268, 732209.15794111066497862 4310697.9442664235830307, 732214.83514503750484437 4310697.03482754714787006, 732220.17456630314700305 4310696.39117199741303921, 732225.22073402814567089 4310695.98930927645415068, 732229.99777768331114203 4310695.81037915032356977, 732234.50465724640525877 4310695.84914165083318949, 732238.74783258710522205 4310696.10192669741809368, 732242.73955347971059382 4310696.56434415746480227, 732246.49507965240627527 4310697.23193384986370802, 732250.03306078002788126 4310698.10123553778976202, 732253.37551650917157531 4310699.17082894966006279, 732256.55115641537122428 4310700.44413371197879314, 732259.61207980290055275 4310701.93710908852517605, 732262.62865573610179126 4310703.67176410835236311, 732265.65428350458387285 4310705.66534801479429007, 732268.73027255572378635 4310707.93007023725658655, 732271.89169239206239581 4310710.47262030094861984, 732275.17004252120386809 4310713.29393779393285513, 732278.59547243965789676 4310716.38988234382122755, 732282.19990159862209111 4310719.75415356643497944, 732286.01346941094379872 4310723.37202112097293139, 732290.01829556142911315 4310727.1661855336278677, 732290.08377500460483134 4310727.22766445763409138, 732294.2405293300980702 4310731.09550661407411098, 732294.36421825352590531 4310731.20867460127919912, 732298.67782020918093622 4310735.08958466351032257, 732298.86138855956960469 4310735.25073170196264982, 732303.33185764832887799 4310739.07938992418348789, 732303.58019532228354365 4310739.28522596135735512, 732308.20752104301936924 4310742.99634258821606636, 732308.52859789051581174 4310743.24332753662019968, 732313.31276974244974554 4310746.77161282207816839, 732313.71736555511597544 4310747.05484655685722828, 732318.65840303990989923 4310750.33498075697571039, 732319.14590770832728595 4310750.63881335407495499, 732324.2432504165917635 4310753.61585668381303549, 732324.76703437231481075 4310753.90115888323634863, 732330.01797224360052496 4310756.56149143818765879, 732330.56157565559260547 4310756.81669349689036608, 732335.96281871653627604 4310759.15706533566117287, 732336.521861637593247 4310759.37956731859594584, 732342.07016991218551993 4310761.39669850934296846, 732342.63971240480896086 4310761.58462048787623644, 732348.33179592411033809 4310763.27526107989251614, 732348.90681805647909641 4310763.42760312743484974, 732354.73941684840247035 4310764.78847318142652512, 732355.31482869968749583 4310764.90502536483108997, 732361.28467278997413814 4310765.93286495003849268, 732361.85563444462604821 4310766.01429732237011194, 732367.95946385932620615 4310766.70584649872034788, 732368.51425550784915686 4310766.75309921056032181, 732374.75479021831415594 4310767.10999793838709593, 732375.25790243851952255 4310767.12608143780380487, 732381.66182219167239964 4310767.16952930577099323, 732382.0989052775548771 4310767.16294373571872711, 732388.69889975676778704 4310766.9190702335909009, 732389.06724381702952087 4310766.89864559844136238, 732395.8959827123908326 4310766.39358020108193159, 732396.19663778669200838 4310766.36677645798772573, 732403.28680078429169953 4310765.62662865966558456, 732403.52335685910657048 4310765.59908574447035789, 732410.90763364662416279 4310764.64997502602636814, 732411.08519067009910941 4310764.62553285155445337, 732418.79625093366485089 4310763.49357870128005743, 732418.92064883513376117 4310763.47451718430966139, 732426.99117226200178266 4310762.18583908397704363, 732427.07225088693667203 4310762.17254809848964214, 732435.50495764811057597 4310760.75489591062068939, 732435.56396664364729077 4310760.74479520041495562, 732444.24175883817952126 4310759.23246029019355774, 732444.28711806493811309 4310759.22444973979145288, 732453.06295827566646039 4310757.65334384795278311, 732453.09748768713325262 4310757.64709343202412128, 732461.82429849950131029 4310756.05313829146325588, 732461.84967806504573673 4310756.04846798535436392, 732470.38042206224054098 4310754.46756533812731504, 732470.3973717704648152 4310754.46441513579338789, 732478.58499153493903577 4310752.93249670881778002, 732486.29014951386488974 4310751.48402413912117481, 732493.32705895334947854 4310750.16219961550086737, 732499.52505299600306898 4310749.02745507378131151, 732504.94782132375985384 4310748.17030931357294321, 732509.8036551148397848 4310747.65450866334140301, 732512.49070835299789906 4310747.57433543354272842, 732514.38244240276981145 4310747.51787528023123741, 732515.01538858283311129 4310747.557253273203969, 732519.0415670583024621 4310747.80769640486687422, 732524.15615309891290963 4310748.61375224683433771, 732530.05800144968088716 4310750.0623209485784173, 732537.01950905320700258 4310752.28542292304337025, 732545.20475395326502621 4310755.36587569955736399, 732554.46516784187406301 4310759.21946148853749037, 732564.57350324257276952 4310763.70977372489869595, 732575.3216123926686123 4310768.7017456004396081, 732586.51407735166139901 4310774.06318013183772564, 732597.96228009276092052 4310779.66377025656402111, 732609.48172252916265279 4310785.37452886998653412, 732620.89076654158998281 4310791.06757882889360189, 732621.37937516602687538 4310791.22181247267872095, 732621.82452497095800936 4310791.47549514751881361, 732697.11628763610497117 4310819.89278866443783045, 732700.01104688085615635 4310820.51670881547033787, 732778.64893921685870737 4310825.53068734705448151, 732779.28535936842672527 4310825.55094908643513918, 732850.03804764896631241 4310825.55004079639911652, 732893.25427219062112272 4310852.53554407134652138, 732850.75711695873178542 4310932.90693076513707638, 732850.08960935403592885 4310934.48254235647618771, 732832.35539933841209859 4310988.89536933042109013, 732832.16729721974115819 4310989.54666887223720551, 732822.58957463293336332 4311027.48951455485075712, 732822.2854379138443619 4311029.93708762247115374, 732822.28588353970553726 4311088.92573457211256027, 732822.95697017153725028 4311092.52724968735128641, 732845.40962543280329555 4311150.68477346561849117, 732847.50808730523567647 4311153.99119088053703308, 732882.43402228865306824 4311190.54707365203648806, 732886.04280355712398887 4311192.96016487386077642, 732915.97916894347872585 4311204.59133489243686199, 732919.60075691854581237 4311205.27013373654335737, 732958.68425025162287056 4311205.26961531117558479, 732960.92128304881043732 4311205.01615681126713753, 733022.45686596329323947 4311190.89129715785384178, 733023.21073253569193184 4311190.68694813549518585, 733065.62037368316669017 4311177.3931796858087182, 733067.81210167810786515 4311176.40308540593832731, 733115.09192101191729307 4311147.74984787777066231, 733142.73396178381517529 4311153.96341334283351898, 733189.31040813436266035 4311183.43489488493651152, 733195.36267265735659748 4311192.7799090975895524, 733191.94224556197877973 4311227.35715514700859785, 733172.93663528468459845 4311383.50143557693809271, 733149.01481394469738007 4311565.02201447356492281, 733145.00204159470740706 4311572.23875418119132519, 733089.09658417280297726 4311587.82723374385386705, 733088.15466145076788962 4311588.14104513637721539, 733024.9719273978844285 4311612.73850409872829914, 733023.83531937061343342 4311613.26519720628857613, 732941.60695816960651428 4311657.82537946291267872, 732940.56236964580602944 4311658.47770083323121071, 732891.7828956157900393 4311693.29015368968248367, 732890.69033975480124354 4311694.19331465661525726, 732860.02899678202811629 4311723.43562560807913542, 732858.14870513090863824 4311725.88907050993293524, 732857.1075136128347367 4311728.79954171180725098, 732851.5329027323750779 4311758.04150617960840464, 732851.59455226652789861 4311762.08539694175124168, 732859.95708312885835767 4311799.68199935741722584, 732861.47103536408394575 4311803.16575235594063997, 732864.1749725395347923 4311805.83355245180428028, 732897.61240929702762514 4311828.10483329184353352, 733011.43701435218099505 4311904.38091110624372959, 733044.62836584285832942 4311932.23627135343849659, 733065.2389592487597838 4311965.69808021001517773, 733071.2918935886118561 4311991.09699246380478144, 733064.36505896376911551 4312021.08779637236148119, 733036.82173226284794509 4312039.03537154849618673, 732911.2852723749820143 4312079.00790113769471645, 732908.68075343512464315 4312080.27779241558164358, 732825.05878661456517875 4312137.37029667664319277, 732823.2307878847932443 4312138.97694559767842293, 732798.89893206069245934 4312166.28824132401496172, 732797.46106086135841906 4312168.3894225126132369, 732767.71843501401599497 4312226.58502940461039543, 732766.63102371338754892 4312230.73265652358531952, 732764.35270669602323323 4312287.1791964853182435, 732764.34507909929379821 4312287.48123524058610201, 732763.52726249420084059 4312368.2374948738142848, 732763.61772198299877346 4312369.68455705512315035, 732781.78329200367443264 4312503.43739782087504864, 732782.13543843780644238 4312505.03541539888828993, 732795.18135942751541734 4312547.38812065217643976, 732795.79532115673646331 4312548.91913461219519377, 732809.65197828609962016 4312576.61160318553447723, 732811.26366002741269767 4312578.93771865777671337, 732873.21843092981725931 4312645.72268954943865538, 732873.97412434197030962 4312646.45579488016664982, 732944.8974631589371711 4312708.35526470001786947, 732945.33552884729579091 4312708.71621643006801605, 732987.02257374254986644 4312741.12270708661526442, 732989.80542055412661284 4312742.64818799775093794, 733032.43200052483007312 4312757.82672442216426134, 733034.85196570947300643 4312758.36236544325947762, 733037.32932538073509932 4312758.28636856004595757, 733203.82245905429590493 4312732.28564623091369867, 733204.06995477073360234 4312732.24381272867321968, 733314.73191927873995155 4312712.10469709150493145, 733315.75115113297943026 4312711.86345308087766171, 733377.01571497588884085 4312693.92728980630636215, 733456.18284312181640416 4312684.17997876275330782, 733574.60113824543077499 4312680.61565104499459267, 733576.08843324321787804 4312680.45899971574544907, 733626.67557423224207014 4312671.26487589441239834, 733628.35484391520731151 4312670.80564340204000473, 733695.4341654209420085 4312646.0074023948982358, 733769.92536832625046372 4312626.56264518760144711, 733770.86515109217725694 4312626.26717291492968798, 733850.66114567068871111 4312596.78688855934888124, 733879.70375046588014811 4312589.976778126321733, 733937.308012725552544 4312577.00178210344165564, 734019.60915476665832102 4312581.03712253924459219, 734030.94400595792103559 4312584.12600670661777258, 734041.2994380877353251 4312632.93505226913839579, 734041.3202584566315636 4312633.03089138772338629, 734066.24500036961399019 4312745.08590881526470184, 734066.73084404761902988 4312746.65140214003622532, 734094.14949270628858358 4312814.71147063095122576, 734095.10751061793416739 4312816.52608525473624468, 734125.02021846268326044 4312861.34372280817478895, 734125.77355360356159508 4312862.33314542379230261, 734168.67318736936431378 4312911.94478372950106859, 734193.87721723271533847 4312953.66981467884033918, 734199.43266637262422591 4312986.31649857200682163, 734195.00704826088622212 4313045.28882165160030127, 734180.74831825005821884 4313116.54210036247968674, 734173.44305087416432798 4313143.22830826137214899, 734153.26112732209730893 4313214.55084116011857986, 734152.88331331592053175 4313217.27369028236716986, 734152.88356619793921709 4313251.86796768102794886, 734152.96754429768770933 4313253.161148427054286, 734157.29113688156940043 4313286.31223728321492672, 734157.51788185210898519 4313287.49244648404419422, 734165.93565702135674655 4313320.46729208901524544, 734169.49698830477427691 4313375.0418996112421155, 734169.56112203642260283 4313375.69451457541435957, 734174.32815989200025797 4313411.94524576049298048, 734174.36809125088620931 4313412.21946343872696161, 734190.05479467951226979 4313510.38199783302843571, 734190.97290078492369503 4313513.25137548986822367, 734192.70394079713150859 4313515.71708276774734259, 734246.37666193896438926 4313571.81504105217754841, 734248.64843811269383878 4313573.58866380620747805, 734271.78028995683416724 4313586.77965294290333986, 734275.0891149869421497 4313587.95660287421196699, 734294.89523852209094912 4313591.25920685566961765, 734296.54011289414484054 4313591.39538981858640909, 734330.38785512803588063 4313591.39485126826912165, 734332.19056476326659322 4313591.23098363261669874, 734420.90229623741470277 4313574.9708026796579361, 734534.99385610269382596 4313583.92618450336158276, 734609.35280480142682791 4313592.93466242402791977, 734612.26039825810585171 4313592.86083871033042669, 734655.19821511185728014 4313585.43130185175687075, 734656.95134397258516401 4313584.96075428556650877, 734741.99544225330464542 4313553.61759891919791698, 734743.4634941229596734 4313552.93701612576842308, 734768.23950112168677151 4313538.91202695481479168, 734770.56406126858200878 4313537.09627155028283596, 734816.79027967702131718 4313488.42595847696065903, 734818.36362909316085279 4313486.24403437040746212, 734851.0411814630497247 4313424.95457478985190392, 734867.65699965262319893 4313413.92060364130884409, 734879.99502925551496446 4313413.14626498986035585, 734897.10225722147151828 4313433.74045994598418474, 734954.45780822529923171 4313576.74135349411517382, 734963.17125416663475335 4313632.98670796491205692, 734961.92667772341519594 4313726.85743948165327311, 734962.59301389788743109 4313730.58153687138110399, 734981.42024660902097821 4313779.50515879224985838, 734983.32378868944942951 4313782.60738558787852526, 734986.21150880469940603 4313784.82283660862594843, 735016.97390352084767073 4313800.50370727945119143, 735018.56610290508251637 4313801.14962408132851124, 735094.26027987292036414 4313824.51245923340320587, 735100.84013871313072741 4313829.15233991481363773, 735103.48650882218498737 4313837.83104013279080391, 735100.22476112563163042 4313853.2863449901342392, 735082.70674225967377424 4313897.0518794609233737, 735059.05293975560925901 4313928.06286347657442093, 735057.72401760390494019 4313930.40171366091817617, 735057.06661672086920589 4313933.01018402259796858, 735050.19412345276214182 4313994.12927356828004122, 735050.4395002278033644 4313997.70938100945204496, 735061.89503925864119083 4314042.79108599666506052, 735064.02949150756467134 4314046.87682305462658405, 735093.77598501765169203 4314081.20616506785154343, 735093.93680449668318033 4314081.38728018198162317, 735113.99608347984030843 4314103.43457991257309914, 735154.38339138589799404 4314175.24116621632128954, 735155.67655106680467725 4314177.03981130477041006, 735187.60321033059153706 4314212.40572335850447416, 735188.27005725493654609 4314213.07754447031766176, 735212.98062766459770501 4314235.72070216946303844, 735214.93123221024870872 4314237.11771638970822096, 735238.69610850687604398 4314250.13932519685477018, 735241.37179691169876605 4314251.1401376286521554, 735283.53990428312681615 4314260.33082742150872946, 735285.66953269962687045 4314260.56019899528473616, 735339.42381987685803324 4314260.55957734491676092, 735376.56096145091578364 4314265.65265351161360741, 735392.20466403709724545 4314272.16323485877364874, 735403.17267894791439176 4314281.96900581009685993, 735413.89952608523890376 4314326.98242729343473911, 735434.56497770245186985 4314432.49026454519480467, 735434.78855442500207573 4314433.40232689306139946, 735446.80399108270648867 4314474.05805676896125078, 735447.73403062683064491 4314476.22442028392106295, 735502.03175012371502817 4314570.25522433314472437, 735502.30344076128676534 4314570.69868390075862408, 735578.80129023408517241 4314688.56587531417608261, 735580.28812651499174535 4314690.35857880488038063, 735598.49076915485784411 4314707.7174051133915782, 735600.57685277902055532 4314709.24489615578204393, 735617.12739867414347827 4314718.3379376120865345, 735618.86680911597795784 4314719.08881540969014168, 735646.99658833630383015 4314728.1817249208688736, 735648.64127613499294966 4314728.56356988102197647, 735711.52395511709619313 4314737.65607328247278929, 735714.00065573828760535 4314737.70417424757033587, 735729.72127372387330979 4314736.05125211644917727, 735731.39503311784937978 4314735.72920831479132175, 735813.30580236681271344 4314712.58150348905473948, 735815.10567545739468187 4314711.87889446318149567, 735992.08219688874669373 4314622.21800783928483725, 735995.41410262160934508 4314619.49082421138882637, 736005.01534138363786042 4314607.31917294207960367, 736005.7906761527992785 4314606.18364259600639343, 736048.0619166037067771 4314534.08410413097590208, 736063.56870988826267421 4314520.06773456837981939, 736074.92142710590269417 4314516.48635250702500343, 736091.54755178280174732 4314522.0224512480199337, 736155.30241142550949007 4314562.63513787649571896, 736156.09258380171377212 4314563.08925142232328653, 736169.57399475388228893 4314570.03979364410042763, 736170.71303202898707241 4314570.53998244274407625, 736205.06821031984873116 4314583.14047344494611025, 736206.00357853644527495 4314583.43239797092974186, 736260.04519553203135729 4314597.43371078465133905, 736295.63022641709540039 4314607.59130798000842333, 736384.80629115481860936 4314646.98337793722748756, 736385.9118379601277411 4314647.39563860464841127, 736395.90352134883869439 4314650.46341453399509192, 736397.0067066146293655 4314650.73461751360446215, 736430.54717634106054902 4314656.98466237541288137, 736432.06323376251384616 4314657.14890236314386129, 736574.48496060783509165 4314661.64907897356897593, 736574.98352261621039361 4314661.65239321161061525, 736583.08444052329286933 4314661.50432283617556095, 736583.78635880188085139 4314661.46678540296852589, 736610.89297550253104419 4314659.05925376713275909, 736612.81208057119511068 4314658.69735761545598507, 736686.29987841541878879 4314637.23166106734424829, 736687.21138024050742388 4314636.91697567701339722, 736731.19478642649482936 4314619.31577424146234989, 736760.58670345786958933 4314607.63237467408180237, 736785.95922510290984064 4314600.43241904675960541, 736864.15569131472148001 4314581.02863223850727081, 736930.15085138624999672 4314570.37940444704145193, 736972.39910202065948397 4314567.69928173441439867, 736984.37599304085597396 4314569.83600993920117617, 736988.19494741410017014 4314573.96846004202961922, 736996.3163066697306931 4314590.20024749450385571, 737003.29165682755410671 4314630.11772002559155226, 737006.06387642584741116 4314670.20251826569437981, 737006.34572143107652664 4314671.96615688223391771, 737026.22758158680517226 4314750.52036560140550137, 737026.760930230258964 4314752.07631467655301094, 737043.88015760283451527 4314791.18972516991198063, 737044.52429085446055979 4314792.42070818692445755, 737111.91321651847101748 4314901.93888488970696926, 737112.19200675841420889 4314902.36706490162760019, 737151.72727428749203682 4314959.82092105690389872, 737152.7051018625497818 4314961.02888073585927486, 737173.14818047755397856 4314982.61183537077158689, 737216.54498261027038097 4315032.64118811022490263, 737218.06997372838668525 4315034.06671818532049656, 737282.80049816379323602 4315082.98319874703884125, 737378.58137378783430904 4315180.34024408459663391, 737379.81381558300927281 4315181.40400334447622299, 737433.36824012431316078 4315220.49826117418706417, 737435.13994284125510603 4315221.5312148816883564, 737488.10690987831912935 4315245.51106937229633331, 737488.57967442495282739 4315245.71065089665353298, 737846.70470851322170347 4315386.18273667339235544, 737871.65595821500755847 4315397.49846964795142412, 738113.41813289234414697 4315632.15511657111346722, 738113.8307503261603415 4315632.53374608233571053, 738264.29412923101335764 4315763.03657702263444662, 738394.17083250684663653 4315875.61293624620884657, 738415.96858950587920845 4315897.8406419288367033, 738632.02777956333011389 4316133.63729105331003666, 738632.1185991435777396 4316133.73507855273783207, 738669.63031925354152918 4316173.59234524425119162, 738670.75562201649881899 4316174.61877715680748224, 738768.55860339722130448 4316251.03383524902164936, 738770.46054500644095242 4316252.20350654702633619, 738834.40814621152821928 4316282.26905771717429161, 738835.77156960789579898 4316282.79224482737481594, 738862.73051744524855167 4316290.93480592221021652, 738863.11092238780111074 4316291.04155013803392649, 738919.81325539678800851 4316305.75037640333175659, 739170.84988417068962008 4316372.78972360212355852, 739350.97242882323917001 4316450.40387818496674299, 739350.98700863297563046 4316450.41014801803976297, 739521.61842726217582822 4316523.61373087950050831, 739522.31551771401427686 4316523.88243335857987404, 739621.65810093295294791 4316557.96973559632897377, 739852.30944967269897461 4316638.25197268184274435, 739852.37760869844350964 4316638.27541199699044228, 740072.70717386354226619 4316713.18887751363217831, 740132.12706843297928572 4316738.55229418445378542, 740133.93005201243795455 4316739.1272068889811635, 740183.91482834867201746 4316749.98550096526741982, 740185.22352692810818553 4316750.18021163623780012, 740269.97876263794023544 4316757.1029893746599555, 740315.69287151913158596 4316776.82557890843600035, 740397.30057907663285732 4316825.18397233728319407, 740573.43980125884991139 4316931.67691013496369123, 740708.19659638812299818 4317013.38528807274997234, 740774.42659951699897647 4317053.75353892054408789, 740775.69499289011582732 4317054.40740359388291836, 740836.93704784300643951 4317080.63017967902123928, 740837.85260455100797117 4317080.97032049112021923, 740926.0762361993547529 4317108.924914232455194, 740926.24642361863516271 4317108.97717268392443657, 741363.97256869217380881 4317239.14702703151851892, 741469.83130578114651144 4317271.92332589812576771, 741521.91951526142656803 4317295.75358426384627819, 741650.29768775217235088 4317373.46512393653392792, 741777.26833223190624267 4317453.38413125462830067, 741801.92544887471012771 4317468.90403771493583918, 741802.11083649168722332 4317469.01793532073497772, 741827.69721401447895914 4317484.35584033560007811, 741840.24766026332508773 4317496.36269084550440311, 741870.78957825328689069 4317525.58177741430699825, 742005.10918000480160117 4317655.74565113708376884, 742204.46070725191384554 4317852.75459959637373686, 742331.7899054711451754 4318021.47421611100435257, 742369.48291389597579837 4318071.41997682116925716, 742428.61454038554802537 4318163.30532882921397686, 742428.70563984476029873 4318163.44433662015944719, 742495.48794317978899926 4318263.52326570730656385, 742496.03275910601951182 4318264.26361375395208597, 742547.07643285335507244 4318327.33425765205174685, 742547.65765735297463834 4318327.99126666784286499, 742716.26793796382844448 4318502.5239267386496067, 742716.72521292511373758 4318502.96801913157105446, 742779.20637132436968386 4318559.89308050088584423, 742819.17903074552305043 4318602.92793507501482964, 742842.4249174048891291 4318648.54917556419968605, 742866.94302839343436062 4318706.58290308900177479, 742895.17192435008473694 4318797.93564109317958355, 742903.09161976352334023 4318842.36920137144625187, 742911.7519645276479423 4318909.73906589206308126, 742911.7917259968817234 4318910.01744217798113823, 742924.15083849255461246 4318988.61467983294278383, 742925.75069014530163258 4318992.67038189060986042, 742959.25062913354486227 4319042.114652955904603, 742959.37334817810915411 4319042.29166022781282663, 742985.7353562741773203 4319079.45123677514493465, 742984.41318357933778316 4319078.56481292564421892, 742981.4033449946437031 4319077.71090517286211252, 742978.27693641383666545 4319077.82887547556310892, 742975.34001183067448437 4319078.90720282308757305, 742919.1321406610077247 4319110.27088419254869223, 742918.94111523882020265 4319110.38024351187050343, 742912.14095784374512732 4319114.37346213683485985, 742910.80595790524967015 4319113.50889407470822334, 742907.77459016477223486 4319112.70334574766457081, 742904.64280222053639591 4319112.87649529334157705, 742901.71871797286439687 4319114.01131175830960274, 742892.59736737958155572 4319119.32727797888219357, 742890.18970979133155197 4319121.28858191426843405, 742888.49982347316108644 4319123.89394491072744131, 742887.69070324639324099 4319126.89210957754403353, 742887.77699664002284408 4319128.68058298248797655, 742874.67714344547130167 4319136.37314054369926453, 742874.30014709394890815 4319136.12899145856499672, 742871.26877938641700894 4319135.32344311103224754, 742868.13699149945750833 4319135.49659260828047991, 742865.21290732896886766 4319136.63140900991857052, 742856.09155701729469001 4319141.94737499207258224, 742853.68389951577410102 4319143.90867885202169418, 742851.99401328957173973 4319146.51403177622705698, 742851.18489315104670823 4319149.51219636853784323, 742851.21568093914538622 4319150.15028823632746935, 742833.99746827327180654 4319160.2612514141947031, 742832.96483115875162184 4319159.98683999571949244, 742829.83304333372507244 4319160.15998943708837032, 742826.90895924577489495 4319161.29480577073991299, 742817.78760923666413873 4319166.61077150516211987, 742815.37995182943996042 4319168.57207529060542583, 742813.69006570137571543 4319171.17743812594562769, 742813.36654318834189326 4319172.37623487319797277, 742795.76578505139332265 4319182.71183254942297935, 742793.86283996829297394 4319182.20615013036876917, 742790.73105219937860966 4319182.37928952928632498, 742787.80695818900130689 4319183.51410579681396484, 742778.68559847376309335 4319188.83008128497749567, 742776.27793115749955177 4319190.79138498939573765, 742774.58805512334220111 4319193.39675775077193975, 742774.02646821481175721 4319195.47769752144813538, 742748.55199338076636195 4319210.43693560548126698, 742745.53334174631163478 4319209.63476628344506025, 742742.40155404782854021 4319209.80791562050580978, 742739.47746013558935374 4319210.94273180514574051, 742730.35611077642533928 4319216.25869699846953154, 742727.94845357176382095 4319218.21999060921370983, 742726.25856765813659877 4319220.82535327132791281, 742725.44944781367667019 4319223.82351762149482965, 742725.45788396522402763 4319223.99836065154522657, 742701.58525790902785957 4319238.01695534959435463, 742700.72913004038855433 4319237.46251275856047869, 742697.6977624703431502 4319236.65696429181843996, 742694.56597484182566404 4319236.83012357261031866, 742691.64189102512318641 4319237.96492967754602432, 742682.52054202044382691 4319243.28090457245707512, 742680.11287492886185646 4319245.24220809247344732, 742678.42299913126043975 4319247.847570655867 +45739, 742677.61387939867563546 4319250.8457349119707942, 742677.76354184153024107 4319253.94755431823432446, 742678.8575642918003723 4319256.8538927836343646, 742682.86061099031940103 4319263.91193425375968218, 742677.52429501619189978 4319292.32947542611509562, 742676.0703121543629095 4319292.76109937205910683, 742673.44559835398104042 4319294.59653523936867714, 742671.53577663074247539 4319297.1676389891654253, 742670.5367810073075816 4319300.21067332848906517, 742668.98499178898055106 4319310.05352185387164354, 742668.98810736532323062 4319313.18776136636734009, 742669.96127273747697473 4319316.16708935797214508, 742671.80889737501274794 4319318.69882996194064617, 742672.48135335184633732 4319319.18464343808591366, 742669.67635662271641195 4319334.12210774607956409, 742667.54320198320783675 4319334.75534806866198778, 742664.91848826827481389 4319336.59078386053442955, 742663.00866661232430488 4319339.16188755910843611, 742662.00967102881986648 4319342.20492186676710844, 742660.45788190001621842 4319352.04778031911700964, 742660.46099748800043017 4319355.18201981764286757, 742661.43417284556198865 4319358.16135781910270452, 742663.28179743967484683 4319360.69309845753014088, 742664.51895271264947951 4319361.58687350992113352, 742661.8958046151092276 4319375.55595209263265133, 742659.92841940664220601 4319376.13999099843204021, 742657.30370577261783183 4319377.97541672550141811, 742655.39389418053906411 4319380.54652037099003792, 742654.39489863743074238 4319383.58955464046448469, 742652.84310958778951317 4319393.43240302801132202, 742652.84622518799733371 4319396.56664251815527678, 742653.81939052708912641 4319399.54597053583711386, 742655.66702507762238383 4319402.0777112077921629, 742656.85910367080941796 4319402.93893241323530674, 742629.23813280439935625 4319559.42295099701732397, 742629.22414374514482915 4319559.50413999799638987, 742613.61302352754864842 4319652.41240248363465071, 742613.5293873380869627 4319655.11308783292770386, 742623.44589768163859844 4319749.6108007887378335, 742622.25243535870686173 4319750.31547690369188786, 742620.15078682289458811 4319752.73230276256799698, 742618.92102543718647212 4319755.68961868155747652, 742618.68929621716961265 4319758.8840481610968709, 742619.5692001236602664 4319768.80956685543060303, 742620.33179991343058646 4319771.84961497690528631, 742621.99800861813127995 4319774.5042850449681282, 742624.40412734483834356 4319776.51277097500860691, 742626.61415641044732183 4319777.39764880388975143, 742631.98230172845069319 4319817.39898713491857052, 742607.73664031177759171 4319864.57800800167024136, 742607.56695652834605426 4319864.92446408420801163, 742572.06375945406034589 4319941.10133513808250427, 742571.79524000780656934 4319941.73330783378332853, 742551.60792467964347452 4319994.17686409503221512, 742532.75267877080477774 4320031.42749201133847237, 742515.62582387495785952 4320061.98355052061378956, 742419.77486625255551189 4320193.19659724738448858, 742367.04643174377270043 4320257.13073697779327631, 742365.67891752196010202 4320259.30855275690555573, 742364.91202349751256406 4320261.7631030660122633, 742358.09087750222533941 4320300.59363399911671877, 742356.22306861262768507 4320301.22194436844438314, 742353.665966403670609 4320303.15046699717640877, 742351.84973515965975821 4320305.78850808925926685, 742350.9606888514244929 4320308.8654606007039547, 742349.76343575457576662 4320318.75769499875605106, 742349.87911960110068321 4320321.88980372622609138, 742350.95867236820049584 4320324.83225198835134506, 742352.89603378064930439 4320327.29600389488041401, 742353.34720340033527464 4320327.59789526090025902, 742352.77732635219581425 4320330.84201445337384939, 742350.21451486391015351 4320331.70412446837872267, 742347.65741271444130689 4320333.63263704627752304, 742345.84118151641450822 4320336.27067809924483299, 742344.95213523763231933 4320339.3476305864751339, 742344.56834913021884859 4320342.51862880028784275, 742323.26150608796160668 4320357.48689920827746391, 742309.86026469385251403 4320365.13761955499649048, 742253.18549098784569651 4320394.94097099266946316, 742250.67830590950325131 4320396.81239341106265783, 742248.87213862384669483 4320399.36699457466602325, 742247.9437910330016166 4320402.3547173086553812, 742247.98413604719098657 4320405.48310525994747877, 742248.98922828095965087 4320408.44593256339430809, 742250.86067457823082805 4320410.95316339656710625, 742253.41528432175982744 4320412.75938159041106701, 742256.40299949655309319 4320413.68778026383370161, 742259.53136448806617409 4320413.64748149737715721, 742262.49415566504467279 4320412.64242613781243563, 742319.32214469322934747 4320382.7585058081895113, 742319.62570548639632761 4320382.59210711810737848, 742333.58420653874054551 4320374.62321150861680508, 742334.37467134790495038 4320374.12145582307130098, 742346.69507824839092791 4320365.4661876205354929, 742339.47006599558517337 4320406.59801746346056461, 742339.46810656529851258 4320406.71462973300367594, 742339.43313079606741667 4320406.82457454968243837, 742332.70047892152797431 4320451.09683417621999979, 742332.5906830383464694 4320452.32222815696150064, 742331.5932332418160513 4320488.18198286090046167, 742331.99655029526911676 4320491.28454030398279428, 742333.33886310888919979 4320494.11061870492994785, 742335.48875945224426687 4320496.38359212130308151, 742338.23581967956852168 4320497.88097414467483759, 742341.31111670844256878 4320498.45617750659584999, 742344.41364572267048061 4320498.05290383566170931, 742347.23968367325142026 4320496.71062347386032343, 742349.51260859286412597 4320494.5607454814016819, 742351.00993880955502391 4320491.81368770357221365, 742351.58509213314391673 4320488.73837698437273502, 742352.56540336553007364 4320453.49470359459519386, 742359.18928698159288615 4320409.9376983605325222, 742367.8178577838698402 4320360.81572177167981863, 742368.872897231252864 4320360.43408261891454458, 742371.31635203759651631 4320358.54985981620848179, 742373.06904536497313529 4320356.01039765123277903, 742373.9640926115680486 4320353.05748348124325275, 742375.28930700290948153 4320343.61298272479325533, 742375.24042220145929605 4320340.52146322000771761, 742374.24948781705461442 4320337.5926444586366415, 742372.41123426239937544 4320335.10654250159859657, 742372.34270063356962055 4320335.05723480973392725, 742373.12811346328817308 4320330.58614287339150906, 742374.88145128847099841 4320329.95191226247698069, 742377.32490614918060601 4320328.06768941413611174, 742379.07759952358901501 4320325.52822721563279629, 742379.97264679661020637 4320322.57531302142888308, 742381.29786124581005424 4320313.13082221616059542, 742381.24897645332384855 4320310.03930270578712225, 742380.25804205564782023 4320307.11049395799636841, 742378.41979847080074251 4320304.62439202144742012, 742377.7707100996049121 4320304.15739431697875261, 742384.15369573072530329 4320267.82115468475967646, 742435.39095570845529437 4320205.69509570579975843, 742435.75114460324402899 4320205.23125062789767981, 742532.12980645592324436 4320073.29580094758421183, 742532.77802514028735459 4320072.28647196386009455, 742550.30209651007317007 4320041.02175114583224058, 742550.5010494536254555 4320040.64850534405559301, 742569.68035398214124143 4320002.75765437074005604, 742570.09066818282008171 4320001.83390500582754612, 742590.33636168739758432 4319949.23869002982974052, 742625.61293805937748402 4319873.5480627752840519, 742651.20467178581748158 4319823.74976084195077419, 742652.16514922922942787 4319820.87724471651017666, 742652.22156336205080152 4319817.84892362169921398, 742646.41513093037065119 4319774.58162365388125181, 742646.46240375027991831 4319774.55225200112909079, 742648.46206487400922924 4319772.20232560392469168, 742649.65010803006589413 4319769.354628368280828, 742649.91342767351306975 4319766.28028717916458845, 742649.25154301337897778 4319756.76625226717442274, 742648.56270202237647027 4319753.75205351877957582, 742646.98601152224000543 4319751.09236320201307535, 742644.67223060526885092 4319749.04144751280546188, 742643.43856083019636571 4319748.49819103442132473, 742633.56207562435884029 4319654.38191844429820776, 742648.94043303106445819 4319562.85891782399266958, 742676.66202211962081492 4319405.80486432183533907, 742677.54287491180002689 4319405.52157841622829437, 742680.05243110924493521 4319403.72633259929716587, 742681.89520481682848185 4319401.2514579389244318, 742682.89574139378964901 4319398.33259201981127262, 742684.55932214693166316 4319388.9417872317135334, 742684.6215056887594983 4319385.85050689522176981, 742683.73640881304163486 4319382.88799830432981253, 742681.98864217544905841 4319380.33746749628335238, 742681.42865273309871554 4319379.90321897249668837, 742684.33989576133899391 4319364.39994631055742502, 742685.15763788833282888 4319364.13695515878498554, 742687.66720416315365583 4319362.34170927852392197, 742689.50997793325223029 4319359.86683456413447857, 742690.51051454746630043 4319356.94796861335635185, 742692.17409538349602371 4319347.55715375579893589, 742692.23627893766388297 4319344.46587341092526913, 742691.35117205057758838 4319341.50335482973605394, 742689.60340537247247994 4319338.952834059484303, 742689.18006553268060088 4319338.62455163430422544, 742692.18446553195826709 4319322.62520496174693108, 742693.68475844745989889 4319322.14270614646375179, 742696.19431480416096747 4319320.34746019821614027, 742698.0370886359596625 4319317.87258543260395527, 742699.03762529394589365 4319314.95371944084763527, 742700.70120621682144701 4319305.56290451250970364, 742700.76338978623971343 4319302.47162415646016598, 742699.87828288355376571 4319299.50910558365285397, 742698.13051616621669382 4319296.95858484413474798, 742697.14738069893792272 4319296.19620425626635551, 742702.77292414149269462 4319266.23843871615827084, 742706.19809483550488949 4319264.58898285031318665, 742708.87728726014029235 4319262.70300736092031002, 742710.80307813175022602 4319260.05228448566049337, 742711.76872379856649786 4319256.92138131335377693, 742711.71891489974223077 4319255.25932134687900543, 742734.92589883983600885 4319241.63160815928131342, 742735.70967750367708504 4319242.17217350285500288, 742738.5691091128392145 4319243.06624148227274418, 742741.56506084837019444 4319243.0731603866443038, 742744.42858794238418341 4319242.19230120722204447, 742754.03366339532658458 4319237.5667854305356741, 742756.71284593443851918 4319235.68080984707921743, 742758.63863693014718592 4319233.03008686378598213, 742759.60428271605633199 4319229.89918359182775021, 742759.52302091487217695 4319227.18757711537182331, 742782.5101254025939852 4319213.68898410256952047, 742784.03915447869803756 4319214.74354838579893112, 742786.89859611878637224 4319215.63761634286493063, 742789.89453791407868266 4319215.64453519135713577, 742792.7580750968772918 4319214.76367593929171562, 742802.36316089541651309 4319210.13815987296402454, 742805.04234355001244694 4319208.25218419171869755, 742806.96813466958701611 4319205.60146110970526934, 742807.93378057645168155 4319202.4705577353015542, 742807.83563599537592381 4319199.19558014720678329, 742807.71926281868945807 4319198.88555523194372654, 742821.03076333494391292 4319191.06871504988521338, 742823.14116465905681252 4319192.52424908522516489, 742826.0006063231267035 4319193.41831702273339033, 742828.99654816824477166 4319193.42523583397269249, 742831.86008542124181986 4319192.54437651671469212, 742841.46517150197178125 4319187.91886021848767996, 742844.14435425004921854 4319186.03288445714861155, 742846.07014547300059348 4319183.38216128945350647, 742847.03579147509299219 4319180.25125783588737249, 742846.93764697737060487 4319176.97629017848521471, 742846.59294339932966977 4319176.05797673296183348, 742861.03440501424483955 4319167.57759092841297388, 742861.44511188031174242 4319167.86085303500294685, 742864.30455357511527836 4319168.75492094457149506, 742867.30050547560676932 4319168.76183970645070076, 742870.16403280314989388 4319167.88098033517599106, 742879.7691091769374907 4319163.25546379201114178, 742882.44829202175606042 4319161.36948794778436422, 742884.37408334692008793 4319158.71876469161361456, 742885.33972944808192551 4319155.58787116128951311, 742885.27249680459499359 4319153.34438731055706739, 742898.6827237760880962 4319145.46957061253488064, 742900.81036342890001833 4319146.13482434954494238, 742903.80631537782028317 4319146.14174307323992252, 742906.66984277567826211 4319145.2608836367726326, 742916.27491942327469587 4319140.63536686543375254, 742918.95410236110910773 4319138.74939094670116901, 742920.8798937815008685 4319136.0986776165664196, 742921.84553997521288693 4319132.96777400467544794, 742921.81314570573158562 4319131.88681318238377571, 742928.97346947691403329 4319127.68209483195096254, 742985.08522251597605646 4319096.37204348295927048, 742987.54517949605360627 4319094.43893884681165218, 742989.28738506895024329 4319091.84025538805872202, 742990.14127456082496792 4319088.83040051534771919, 742990.02329193544574082 4319085.70397078711539507, 742989.86461012507788837 4319085.271784707903862, 743036.53563053300604224 4319151.05871446803212166, 743037.77582788025029004 4319152.49556157272309065, 743071.29942161170765758 4319184.5936589241027832, 743072.6208043860970065 4319185.65937048569321632, 743115.95220351044554263 4319214.90578888822346926, 743118.35612615500576794 4319216.09446492791175842, 743226.08329565613530576 4319252.35982870869338512, 743229.16805971309076995 4319252.8818707587197423, 743232.26316593692172319 4319252.42511509917676449, 743235.06564057420473546 4319251.0342622846364975, 743237.30115003301762044 4319248.84546160697937012, 743238.75087023142259568 4319246.0729711726307869, 743239.27289604709949344 4319242.98818809632211924, 743238.81613081530667841 4319239.89305876474827528, 743237.42527602531481534 4319237.09055919945240021, 743235.23648116155527532 4319234.85502544790506363, 743232.46400376397650689 4319233.40528396237641573, 743126.01921146118547767 4319197.57162102684378624, 743084.51543627143837512 4319169.55875045340508223, 743052.29572706774342805 4319138.70910243410617113, 742975.74737018637824804 4319030.80742447916418314, 742943.56072164932265878 4318983.30149342492222786, 742931.57042183680459857 4318907.04969356767833233, 742922.89705739670898765 4318839.57854966167360544, 742922.82352495938539505 4318839.09883608110249043, 742914.75290620920713991 4318793.81852675694972277, 742914.46230215718969703 4318792.62089321855455637, 742885.90335496794432402 4318700.20003933366388083, 742885.56075394130311906 4318699.2606627345085144, 742860.70860351738519967 4318640.43628621008247137, 742860.40697402972728014 4318639.78801574092358351, 742836.36521025886759162 4318592.60481819789856672, 742834.78215203189756721 4318590.33926369808614254, 742793.57604531629476696 4318545.97647117171436548, 742792.98387179546989501 4318545.38997113239020109, 742730.4301140857860446 4318488.39877103548496962, 742562.34642795356921852 4318314.4111917857080698, 742511.86837954318616539 4318252.0394562715664506, 742445.38758486020378768 4318152.41235956456512213, 742386.09878978854976594 4318060.28278099931776524, 742385.67164260859135538 4318059.67053087335079908, 742347.75362606276758015 4318009.42662489414215088, 742219.98748163389973342 4317840.12802745308727026, 742219.034609982278198 4317839.03917607571929693, 742019.13230802095495164 4317641.48591748718172312, 742019.06225871434435248 4317641.41736872028559446, 741884.68440731824375689 4317511.19704620540142059, 741884.63815777422860265 4317511.15251702070236206, 741854.07303995767142624 4317481.91124090738594532, 741840.71267166326288134 4317469.1295445878058672, 741838.94137213483918458 4317467.77839096914976835, 741812.48692568449769169 4317451.9201171500608325, 741787.92188767693005502 4317436.45816964842379093, 741660.87741313548758626 4317356.49269412737339735, 741660.72896502038929611 4317356.40104606654495001, 741531.78261869424022734 4317278.3455746416002512, 741530.76443232130259275 4317277.80679680127650499, 741477.56512786657549441 4317253.46821109112352133, 741476.36258552456274629 4317253.00915307085961103, 741369.83420740370638669 4317220.02552129421383142, 741369.72691905067767948 4317219.992962253279984, 740932.03235807258170098 4317089.83250210713595152, 740844.35968706477433443 4317062.05248415004462004, 740784.22467600472737104 4317036.30372660513967276, 740718.59558500221464783 4316996.30173815228044987, 740718.57576524431351572 4316996.28968841768801212, 740583.80358919722493738 4316914.57199160102754831, 740583.79266933037433773 4316914.56538174487650394, 740407.61011621681973338 4316808.04624573979526758, 740407.53416712966281921 4316808.00078676547855139, 740325.33862594212405384 4316759.29407182149589062, 740324.20213051082100719 4316758.71516577992588282, 740276.39215957594569772 4316738.08835009019821882, 740273.24491794011555612 4316737.30346707906574011, 740187.51236771687399596 4316730.3008563257753849, 740139.10429602838121355 4316719.78507996629923582, 740080.21032367146108299 4316694.64615797717124224, 740079.50359354307875037 4316694.3756254343315959, 739858.84967041737399995 4316619.35187531262636185, 739628.21151875099167228 4316539.07423036079853773, 739628.16982934228144586 4316539.05982078425586224, 739529.15995023667346686 4316505.08668615017086267, 739358.87934511329513043 4316432.03361080400645733, 739178.09300714498385787 4316354.13342556171119213, 739176.71592630236409605 4316353.65571984089910984, 738924.93877302529290318 4316286.41858531162142754, 738924.86964395781978965 4316286.40038634277880192, 738868.32396867673378438 4316271.73219812661409378, 738842.25502914655953646 4316263.85845336504280567, 738779.98665893240831792 4316234.58241209387779236, 738683.67079576454125345 4316159.32926018256694078, 738646.72827292559668422 4316120.07677797228097916, 738430.5996832192176953 4315884.20440071448683739, 738430.36656433949247003 4315883.95848709251731634, 738408.16644942306447774 4315861.32047219574451447, 738407.57653298904187977 4315860.76573729235678911, 738277.39715169463306665 4315747.92704571411013603, 738127.14656125009059906 4315617.60876981075853109, 737884.33624233421869576 4315381.93478080164641142, 737881.50169710186310112 4315380.00334282591938972, 737854.72835781308822334 4315367.86126336921006441, 737854.2496933494694531 4315367.65901191253215075, 737496.12163845950271934 4315227.18574828561395407, 737444.32757817767560482 4315203.73690247163176537, 737392.26543143868912011 4315165.73200075421482325, 737296.5429855037946254 4315068.43434389401227236, 737295.44350261567160487 4315067.4693516381084919, 737230.96514614834450185 4315018.74343535955995321, 737188.11265217431355268 4314969.34157644771039486, 737187.81879333569668233 4314969.01741493958979845, 737167.76122300000861287 4314947.84146944899111986, 737128.81266549800056964 4314891.24022290203720331, 737061.92258092353586107 4314782.53275721985846758, 737045.41343923762906343 4314744.81323733367025852, 737025.95404097135178745 4314667.92819665372371674, 737023.20778523129411042 4314628.21889184042811394, 737023.08234582177828997 4314627.18748974055051804, 737015.76528960512951016 4314585.3145220810547471, 737014.85764370020478964 4314582.56137645989656448, 737005.44550664944108576 4314563.74977495148777962, 737003.84660674014594406 4314561.43735025450587273, 736996.78379564255010337 4314553.79477350413799286, 736994.239874551538378 4314551.80923446826636791, 736991.19606162677519023 4314550.73727659601718187, 736974.72515396540984511 4314547.79879296664148569, 736972.33577089570462704 4314547.6634126054123044, 736928.40211843140423298 4314550.45045328978449106, 736927.44220506679266691 4314550.55809260718524456, 736860.55855069530662149 4314561.35068876389414072, 736859.74321566056460142 4314561.51733546331524849, 736780.98107990506105125 4314581.06149702519178391, 736780.65955602843314409 4314581.14697933942079544, 736754.63664683559909463 4314588.53148962557315826, 736753.67266598809510469 4314588.8589054374024272, 736723.796378827188164 4314600.73484762758016586, 736723.7749492668081075 4314600.74339774250984192, 736680.22899399255402386 4314618.16953721083700657, 736608.1463287757942453 4314639.22479470632970333, 736582.36731930961832404 4314641.51441321521997452, 736574.86735158273950219 4314641.65149694122374058, 736433.4591683610342443 4314637.18334922008216381, 736401.22976016218308359 4314631.17761562205851078, 736392.34690269955899566 4314628.45028153993189335, 736303.07970877294428647 4314589.0179537907242775, 736301.78388438525144011 4314588.5493362583220005, 736265.41675349697470665 4314578.16850188560783863, 736265.1799665866419673 4314578.10404564719647169, 736211.49440474901348352 4314564.19497760664671659, 736178.18485384702216834 4314551.97798857372254133, 736165.66282297426369041 4314545.5220673568546772, 736101.25105909758713096 4314504.49092535953968763, 736099.03766287700273097 4314503.43722797185182571, 736078.16388060303870589 4314496.48677122686058283, 736075.08393439115025103 4314495.97493498399853706, 736071.99625923822168261 4314496.43790293950587511, 736055.47239345603156835 4314501.65059792716056108, 736051.77538667933549732 4314503.7686958834528923, 736033.50871577707584947 4314520.27968647889792919, 736031.58764317585155368 4314522.64050002954900265, 735988.8861580016091466 4314595.47387116122990847, 735981.07705488568171859 4314605.3735989723354578, 735806.93294139369390905 4314693.59951741062104702, 735726.77930803201161325 4314716.25066082738339901, 735713.15069380949717015 4314717.68362280819565058, 735652.34188460954464972 4314708.89099125657230616, 735625.92370397690683603 4314700.35135328397154808, 735611.34975845587905496 4314692.34427146520465612, 735594.93909622612409294 4314676.69436657149344683, 735519.22118791239336133 4314560.02888608537614346, 735465.64714109315536916 4314467.25132266711443663, 735454.1013649565866217 4314428.18475089315325022, 735433.48731576546560973 4314322.93934802059084177, 735433.40139266499318182 4314322.54337556101381779, 735421.90117134270258248 4314274.28458640165627003, 735420.76291790290270001 4314271.48187590949237347, 735418.83865238062571734 4314269.1477767638862133, 735404.2735088124172762 4314256.12606063112616539, 735401.45084400242194533 4314254.34874269086867571, 735383.04749266849830747 4314246.68964236695319414, 735380.56391488807275891 4314246.01475227810442448, 735341.46496164437849075 4314240.65263352915644646, 735340.1061624001013115 4314240.55990079138427973, 735286.74646873481106013 4314240.56051825731992722, 735247.040887814713642 4314231.90654134843498468, 735225.60134860873222351 4314220.15907458402216434, 735202.13102118158712983 4314198.65238367952406406, 735171.26867823477368802 4314164.46543967071920633, 735130.87172039551660419 4314092.64171351492404938, 735129.55247078277170658 4314090.81427926663309336, 735108.81144422315992415 4314068.0176599184051156, 735080.69536599447019398 4314035.56992754712700844, 735070.2723467230098322 4313994.55155253224074841, 735076.63200171990320086 4313937.99324704520404339, 735099.43497576692607254 4313908.09773586969822645, 735100.76782780792564154 4313905.74908577371388674, 735119.11401885247323662 4313859.91452576965093613, 735119.61459910438861698 4313858.26340093091130257, 735123.58677151415031403 4313839.44181046821177006, 735123.79262034129351377 4313836.93709489330649376, 735123.36748937331140041 4313834.46016662567853928, 735118.97013599891215563 4313820.03916594572365284, 735117.5070281436201185 4313817.0944431321695447, 735115.16791871027089655 4313814.78347644861787558, 735104.48882418987341225 4313807.25295382179319859, 735101.67516891262494028 4313805.87021649815142155, 735025.28838117409031838 4313782.29361025616526604, 734998.70894536969717592 4313768.74496557284146547, 734981.95013855723664165 4313725.19626378919929266, 734983.18027337244711816 4313632.41512624640017748, 734983.06327328807674348 4313630.75162868481129408, 734974.04664828150998801 4313572.54923137649893761, 734973.44582205475308001 4313570.35756298061460257, 734915.07956929097417742 4313424.83674909640103579, 734913.49052521190606058 4313422.16956522595137358, 734892.13226758001837879 4313396.45786353573203087, 734889.78740978112909943 4313394.39749440364539623, 734886.92152612667996436 4313393.16048590373247862, 734883.81386307976208627 4313392.86738400533795357, 734863.73061920597683638 4313394.12780946586281061, 734861.16927325527649373 4313394.62986598256975412, 734858.82509852526709437 4313395.77765572629868984, 734837.87358949624467641 4313409.69080839399248362, 734836.00213062937837094 4313411.29901965148746967, 734834.58144759363494813 4313413.31654297653585672, 734801.35428145248442888 4313475.63686263933777809, 734757.08971716393716633 4313522.24179632216691971, 734734.31777024641633034 4313535.13234925363212824, 734650.89044186077080667 4313565.87963877804577351, 734610.29900480853393674 4313572.90318024531006813, 734537.18963718658778816 4313564.04608584009110928, 734536.76947353035211563 4313564.00416104216128588, 734421.16603632643818855 4313554.93010644242167473, 734418.58070818975102156 4313555.06330595910549164, 734329.47891429101582617 4313571.39499320089817047, 734297.36804383737035096 4313571.39550338312983513, 734280.13809168245643377 4313568.52246531471610069, 734259.82072595111094415 4313556.9364410163834691, 734209.31156777415890247 4313504.14499194361269474, 734194.13904984283726662 4313409.20010149292647839, 734189.43285450502298772 4313373.41201728023588657, 734185.83254967583343387 4313318.2402152931317687, 734185.54305103875230998 4313316.41793109010905027, 734177.0450049702776596 4313283.12862935662269592, 734172.88323895342182368 4313251.21834105905145407, 734172.88300107489340007 4313218.66102188918739557, 734192.69875021022744477 4313148.63252819236367941, 734192.72169923933688551 4313148.55009834934026003, 734200.13031227979809046 4313121.48637176025658846, 734200.29076474229805171 4313120.80826349277049303, 734214.7383450623601675 4313048.61129930894821882, 734214.90471352462191135 4313047.39741429686546326, 734219.46780625521205366 4312986.593131841160357, 734219.35413037391845137 4312984.16720861848443747, 734213.27531730080954731 4312948.44495243392884731, 734211.97664267045911402 4312944.95211377646774054, 734185.35262853221502155 4312900.87631934881210327, 734184.35726450802758336 4312899.50593284517526627, 734141.30920190422330052 4312849.72263801004737616, 734112.31493945233523846 4312806.28107867762446404, 734085.58900245034601539 4312739.940500533208251, 734060.85345408972352743 4312628.73607746884226799, 734049.24192881758790463 4312574.00655686389654875, 734047.85548639902845025 4312570.64964739140123129, 734045.36153696163091809 4312568.00934996549040079, 734042.08907779038418084 4312566.43394765630364418, 734023.81643374729901552 4312561.45442687254399061, 734021.67697549611330032 4312561.11460044700652361, 733936.92825146461836994 4312556.95925492793321609, 733934.2412061810027808 4312557.19166320562362671, 733875.26640794437844306 4312570.47535645123571157, 733875.18084945937152952 4312570.49501760303974152, 733845.49323601415380836 4312577.45637610368430614, 733844.31068756780587137 4312577.81198153737932444, 733764.39702496910467744 4312607.33573594503104687, 733689.904801856726408 4312626.78075170237571001, 733688.96303913346491754 4312627.07695403136312962, 733622.23973075824324042 4312651.74358925595879555, 733573.25006185250822455 4312660.64736980758607388, 733455.11910164717119187 4312664.20305059477686882, 733454.19798693468328565 4312664.27347394917160273, 733373.76474997913464904 4312674.17667131312191486, 733372.17706787458155304 4312674.5045532938092947, 733310.63528889161534607 4312692.52186907455325127, 733200.61274290096480399 4312712.54461338557302952, 733036.7506033763056621 4312738.13446459267288446, 732998.02838107664138079 4312724.34619203116744757, 732957.83433089905884117 4312693.10032306239008904, 732887.52206624276004732 4312631.73418120574206114, 732826.89790485356934369 4312566.38355399295687675, 732814.05117684218566865 4312540.70943161752074957, 732801.49055010010488331 4312499.93219282384961843, 732783.53327878145501018 4312367.71306498721241951, 732784.34221244382206351 4312287.83470338117331266, 732786.52590887772385031 4312233.7322755279019475, 732814.68554351630154997 4312178.63400844298303127, 732837.3481201205868274 4312153.19640833605080843, 732918.74831367353908718 4312097.6208081878721714, 733044.18009513290598989 4312057.68160770647227764, 733046.60539786715526134 4312056.53125869110226631, 733078.66051061847247183 4312035.64374327473342419, 733081.3968371762894094 4312032.99527718685567379, 733082.94463642640039325 4312029.51587200630456209, 733091.30659168213605881 4311993.3115184223279357, 733091.29067766130901873 4311988.74286074191331863, 733084.32192914024926722 4311959.50109052285552025, 733083.10881648166105151 4311956.57490177266299725, 733060.80923941219225526 4311920.37097026687115431, 733058.72330444771796465 4311917.95551120676100254, 733023.88040877494495362 4311888.71412059012800455, 733023.01878760755062103 4311888.06682576425373554, 732908.7342473492026329 4311811.48253450728952885, 732908.71089760353788733 4311811.46693490166217089, 732878.60697459161747247 4311791.41596702951937914, 732871.56544765783473849 4311759.75839982088655233, 732876.15279336471576244 4311735.69519605301320553, 732903.97905171976890415 4311709.15676206722855568, 732951.67798863968346268 4311675.11545021552592516, 733032.81216148240491748 4311631.14821918122470379, 733094.94690504227764904 4311606.95875158533453941, 733154.39740872266702354 4311590.38177722133696079, 733156.81617265706881881 4311589.34819915052503347, 733158.88175772782415152 4311587.71967882849276066, 733160.45124704914633185 4311585.60888764914125204, 733167.41968276433181018 4311573.07655360456556082, 733168.59418754442594945 4311569.52344493567943573, 733192.77135095081757754 4311386.06533615197986364, 733192.78381001716479659 4311385.96703646797686815, 733211.80900932056829333 4311229.66179011948406696, 733211.83369725453667343 4311229.43794089183211327, 733215.60974195180460811 4311191.26578861195594072, 733215.37629061611369252 4311187.92319814395159483, 733214.05176846822723746 4311184.8453907985240221, 733204.90446699573658407 4311170.72148105967789888, 733201.85811246803496033 4311167.70712607074528933, 733151.96407260978594422 4311136.13641791418194771, 733148.81027253437787294 4311134.83030577842146158, 733115.54768079507630318 4311127.35330979246646166, 733111.74300992046482861 4311127.24058042094111443, 733108.17183609749190509 4311128.55776111967861652, 733058.48259560996666551 4311158.67119278479367495, 733017.60172662953846157 4311171.48575250338762999, 732957.55122752720490098 4311185.2697228230535984, 732921.47501661838032305 4311185.27020053286105394, 732895.35851208039093763 4311175.12316260114312172, 732863.34800413995981216 4311141.61876745149493217, 732842.28555430145934224 4311087.0621901685371995, 732842.28513233456760645 4311031.17951064649969339, 732851.47570272022858262 4310994.77039396390318871, 732868.83871734037529677 4310941.49649779219180346, 732915.28472439851611853 4310853.6569555951282382, 732916.2708876442629844 4310850.83767574280500412, 732916.38046341994777322 4310847.85290792025625706, 732915.603663882589899 4310844.96892103087157011, 732914.00979988719336689 4310842.44298300519585609, 732911.74105089390650392 4310840.50045099202543497, 732858.20012987242080271 4310807.0678988778963685, 732855.658471260801889 4310805.93701651133596897, 732852.90363161487039179 4310805.55009353999048471, 732779.60374309902545065 4310805.55103284399956465, 732702.777822898584418 4310800.65258878469467163, 732629.36403590510599315 4310772.94409195613116026, 732618.39980654628016055 4310767.47300995048135519, 732618.37652682280167937 4310767.46143029630184174, 732606.82186477864161134 4310761.73320201691240072, 732606.77464534330647439 4310761.70995271671563387, 732595.26573330454993993 4310756.0796632943674922, 732595.19143419654574245 4310756.04369439650326967, 732583.90800030459649861 4310750.6386910155415535, 732583.80022161267697811 4310750.58785259909927845, 732572.92201401572674513 4310745.53545245341956615, 732572.76932588627096266 4310745.46608468890190125, 732562.47607273771427572 4310740.89363496750593185, 732562.25839544390328228 4310740.80000813212245703, 732552.72981489263474941 4310736.83482605312019587, 732552.41008894832339138 4310736.70818065106868744, 732543.82593914540484548 4310733.47760342434048653, 732543.3457754134433344 4310733.3107102308422327, 732535.81605533056426793 4310730.90615610405802727, 732535.15769425290636718 4310730.72047526109963655, 732528.51356614683754742 4310729.08971663564443588, 732527.68668786250054836 4310 +728.9233878580853343, 732521.68960481288377196 4310727.9782481612637639, 732521.2159971734508872 4310727.97861144784837961, 732520.75371872342657298 4310727.87562050670385361, 732515.55636008153669536 4310727.55231004301458597, 732515.16520380508154631 4310727.52797315083444118, 732515.1651761430548504 4310727.52797578182071447, 732515.16513380734249949 4310727.52797314804047346, 732514.70472806342877448 4310727.57182202488183975, 732514.24602812237571925 4310727.51313492190092802, 732514.24600379366893321 4310727.51313565392047167, 732514.2459981219144538 4310727.5131349228322506, 732513.95143739017657936 4310727.52192526496946812, 732510.64611627953127027 4310727.62055328767746687, 732508.82739441294688731 4310727.67481332644820213, 732508.45143835956696421 4310727.7459131795912981, 732508.06936670583672822 4310727.72631277516484261, 732502.58208728092722595 4310728.30918034352362156, 732502.07711571676190943 4310728.37586650718003511, 732496.28265365085098892 4310729.2917666444554925, 732496.04303772421553731 4310729.33262953627854586, 732489.70284609228838235 4310730.4934056531637907, 732489.65759686683304608 4310730.50179619807749987, 732482.59738780395127833 4310731.82800084538757801, 732474.90277961897663772 4310733.27449312619864941, 732466.72782961092889309 4310734.8040412301197648, 732458.21824522572569549 4310736.38102344144135714, 732449.52139387093484402 4310737.9695080341771245, 732440.78549295000266284 4310739.53346325736492872, 732432.15987983695231378 4310741.03669735230505466, 732423.79720186011400074 4310742.44257851596921682, 732415.82938666979316622 4310743.71485519036650658, 732408.26925384160131216 4310744.82465733680874109, 732401.09198357642162591 4310745.74715535156428814, 732394.2703861229820177 4310746.45926967449486256, 732387.77616176113951951 4310746.93959074094891548, 732381.57899082032963634 4310747.16857900656759739, 732375.6454436817439273 4310747.12832497246563435, 732369.9343208665959537 4310746.80170921515673399, 732364.39388307160697877 4310746.17398246005177498, 732358.99776070739608258 4310745.24492502305656672, 732353.74093388312030584 4310744.0183969596400857, 732348.62169264978729188 4310742.49789827130734921, 732343.63819705822970718 4310740.6861089700832963, 732338.78875714493915439 4310738.58483905531466007, 732334.0719429433811456 4310736.19510854315012693, 732329.48035454051569104 4310733.51344753801822662, 732324.98450231470633298 4310730.52884645760059357, 732320.56216681399382651 4310727.26741547789424658, 732316.21870837360620499 4310723.78396431170403957, 732311.96351731079630554 4310720.13967260718345642, 732307.80303400033153594 4310716.39653004333376884, 732303.74052886455319822 4310712.61638633534312248, 732299.7757023727754131 4310708.86012124922126532, 732295.93513478781096637 4310705.21663412358611822, 732295.87598529108799994 4310705.16096509248018265, 732292.18326688511297107 4310701.71429529692977667, 732292.06519790994934738 4310701.60585721489042044, 732288.49012930307071656 4310698.37466506939381361, 732288.30784093274269253 4310698.21388800162822008, 732284.81121278973296285 4310695.20472398586571217, 732284.55534517602063715 4310694.99183805380016565, 732281.09791816142387688 4310692.21122263837605715, 732280.75977147719822824 4310691.95094792917370796, 732277.30235625733621418 4310689.40540159679949284, 732276.87546068010851741 4310689.10790815576910973, 732273.37882792111486197 4310686.80397138092666864, 732272.86177359824068844 4310686.48536916729062796, 732269.28671396581921726 4310684.42957242671400309, 732268.68563095666468143 4310684.11064127832651138, 732264.99293511838186532 4310682.30951504316180944, 732264.33068326115608215 4310682.01569457352161407, 732260.48603178886696696 4310680.47413927502930164, 732259.81222050590440631 4310680.23159875348210335, 732255.80090362357441336 4310678.94797457847744226, 732255.13925257418304682 4310678.76106369402259588, 732250.95148040796630085 4310677.73210078570991755, 732250.31558935553766787 4310677.5976093728095293, 732245.94155203527770936 4310676.82006787415593863, 732245.34213076822925359 4310676.7321458188816905, 732240.77201842376962304 4310676.20272586960345507, 732240.21597677515819669 4310676.15400311350822449, 732235.43998953618574888 4310675.86947485711425543, 732234.93130738590843976 4310675.85214138031005859, 732229.93964538141153753 4310675.80921495426446199, 732229.47936265426687896 4310675.81585077941417694, 732224.26222601323388517 4310676.01126631908118725, 732223.84269278543069959 4310676.03582155983895063, 732218.38513174979016185 4310676.47043927200138569, 732217.98216838238295168 4310676.51075423881411552, 732212.24869364418555051 4310677.20191450417041779, 732211.86378009826876223 4310677.2559291934594512, 732205.81379245908465236 4310678.22508245892822742, 732205.45327861094847322 4310678.28961679805070162, 732199.04613887355662882 4310679.55821350496262312, 732198.71381463960278779 4310679.6299074599519372, 732191.90892360871657729 4310681.21940805483609438, 732191.60651893238537014 4310681.29503161925822496, 732184.36322741163894534 4310683.22688654903322458, 732184.09069227706640959 4310683.30372972972691059, 732176.36841106764040887 4310685.59940944612026215, 732176.12467547610867769 4310685.6752622677013278, 732168.03806255897507071 4310688.30569543223828077, 732092.54305534530431032 4310710.1641874248161912, 732022.55565655743703246 4310711.79125430341809988, 731929.25800309109035879 4310701.65519942715764046, 731885.13420080346986651 4310690.65267911925911903, 731834.30084609915502369 4310664.44010341726243496, 731833.33607787895016372 4310664.00559711735695601, 731749.00358775921631604 4310631.27362435963004827, 731699.26645133690908551 4310604.62034894898533821, 731624.88469897722825408 4310560.98760365322232246, 731624.38659466162789613 4310560.71413076668977737, 731575.20788955641910434 4310535.50499643664807081, 731574.06822355138137937 4310535.00767226330935955, 731533.54689372924622148 4310520.250625672750175, 731531.10401768272276968 4310519.6949780099093914, 731479.3350391840795055 4310514.60240345634520054, 731477.45141864218749106 4310514.59536714479327202, 731367.02386731118895113 4310524.62674762681126595, 731366.7079525247681886 4310524.66052151098847389, 731257.95357163436710835 4310538.03521543275564909, 731254.75436926074326038 4310538.99021326098591089, 731132.63151610619388521 4310599.16366387996822596, 731011.86349481379147619 4310658.12489758804440498, 730897.27406076772604138 4310705.90163388755172491, 730894.61025556107051671 4310707.54254439380019903, 730892.58387620758730918 4310709.92632508464157581, 730891.39328775170724839 4310712.8196139307692647, 730891.15503612114116549 4310715.93921005632728338, 730891.89244854170829058 4310718.97975383885204792, 730893.5333237936720252 4310721.64358684793114662, 730895.9170623425161466 4310723.66998172365128994, 730898.81030628853477538 4310724.86057190783321857, 730901.92985916137695312 4310725.0988113097846508, 730904.9703655750490725 4310724.36137390788644552, 731019.83287414070218801 4310676.47078250534832478, 731019.83287414070218801 4310676.47078250534832478, 731019.83287414070218801 4310676.47078250534832478))) 5431 CCMM Conducción de Cornalvo Mérida \ No newline at end of file diff --git a/rag_in_a_box/images/Slide2.png b/rag_in_a_box/images/Slide2.png new file mode 100644 index 0000000..ec8be50 Binary files /dev/null and b/rag_in_a_box/images/Slide2.png differ diff --git a/rag_in_a_box/images/Slide3.png b/rag_in_a_box/images/Slide3.png new file mode 100644 index 0000000..8fe247f Binary files /dev/null and b/rag_in_a_box/images/Slide3.png differ diff --git a/rag_in_a_box/images/Slide4.png b/rag_in_a_box/images/Slide4.png new file mode 100644 index 0000000..212c687 Binary files /dev/null and b/rag_in_a_box/images/Slide4.png differ diff --git a/rag_in_a_box/images/Slide5.png b/rag_in_a_box/images/Slide5.png new file mode 100644 index 0000000..3cf5677 Binary files /dev/null and b/rag_in_a_box/images/Slide5.png differ diff --git a/rag_in_a_box/images/win_slide1.png b/rag_in_a_box/images/win_slide1.png new file mode 100644 index 0000000..fce3441 Binary files /dev/null and b/rag_in_a_box/images/win_slide1.png differ diff --git a/rag_in_a_box/images/win_slide10.png b/rag_in_a_box/images/win_slide10.png new file mode 100644 index 0000000..c58b79b Binary files /dev/null and b/rag_in_a_box/images/win_slide10.png differ diff --git a/rag_in_a_box/images/win_slide11.png b/rag_in_a_box/images/win_slide11.png new file mode 100644 index 0000000..acc491c Binary files /dev/null and b/rag_in_a_box/images/win_slide11.png differ diff --git a/rag_in_a_box/images/win_slide12.png b/rag_in_a_box/images/win_slide12.png new file mode 100644 index 0000000..3716e23 Binary files /dev/null and b/rag_in_a_box/images/win_slide12.png differ diff --git a/rag_in_a_box/images/win_slide13.png b/rag_in_a_box/images/win_slide13.png new file mode 100644 index 0000000..caae34c Binary files /dev/null and b/rag_in_a_box/images/win_slide13.png differ diff --git a/rag_in_a_box/images/win_slide2.png b/rag_in_a_box/images/win_slide2.png new file mode 100644 index 0000000..5bff258 Binary files /dev/null and b/rag_in_a_box/images/win_slide2.png differ diff --git a/rag_in_a_box/images/win_slide3.png b/rag_in_a_box/images/win_slide3.png new file mode 100644 index 0000000..40d4b07 Binary files /dev/null and b/rag_in_a_box/images/win_slide3.png differ diff --git a/rag_in_a_box/images/win_slide4.png b/rag_in_a_box/images/win_slide4.png new file mode 100644 index 0000000..721b17b Binary files /dev/null and b/rag_in_a_box/images/win_slide4.png differ diff --git a/rag_in_a_box/images/win_slide5.png b/rag_in_a_box/images/win_slide5.png new file mode 100644 index 0000000..24bab43 Binary files /dev/null and b/rag_in_a_box/images/win_slide5.png differ diff --git a/rag_in_a_box/images/win_slide6.png b/rag_in_a_box/images/win_slide6.png new file mode 100644 index 0000000..cffd817 Binary files /dev/null and b/rag_in_a_box/images/win_slide6.png differ diff --git a/rag_in_a_box/images/win_slide7.png b/rag_in_a_box/images/win_slide7.png new file mode 100644 index 0000000..cc77699 Binary files /dev/null and b/rag_in_a_box/images/win_slide7.png differ diff --git a/rag_in_a_box/images/win_slide8.png b/rag_in_a_box/images/win_slide8.png new file mode 100644 index 0000000..c658c83 Binary files /dev/null and b/rag_in_a_box/images/win_slide8.png differ diff --git a/rag_in_a_box/images/win_slide9.png b/rag_in_a_box/images/win_slide9.png new file mode 100644 index 0000000..c33ce3c Binary files /dev/null and b/rag_in_a_box/images/win_slide9.png differ diff --git a/rag_in_a_box/install_airaginabox_macosx.md b/rag_in_a_box/install_airaginabox_macosx.md new file mode 100644 index 0000000..ca86709 --- /dev/null +++ b/rag_in_a_box/install_airaginabox_macosx.md @@ -0,0 +1,177 @@ +# Install podman in MAC OSX M1 + +The installation process for podman is documented [Here](https://podman.io/docs/installation) + + +## install podman + +To install podman in your MAC OSX M1, open a terminal and execute the next commands 'brew': + +```Code +brew install podman + + +==> Auto-updating Homebrew... +Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with +HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`). +==> Downloading https://ghcr.io/v2/homebrew/portable-ruby/portable-ruby/blobs/sha256:49847c7a13f7094b211f6d0025900dd23716be07dac894a3d6941d7696296306 +################################################################################################################################################# 100.0% +==> Pouring portable-ruby-3.3.3.arm64_big_sur.bottle.tar.gz +==> Auto-updated Homebrew! +Updated 2 taps (homebrew/core and homebrew/cask). +==> New Formulae +age-plugin-se codecov-cli frizbee kubectl-rook-ceph nextdns qshell terramaid +ansible-creator cortexso ftnchek kubelogin nsync river testscript +ansible@9 cotila gcc@13 kubernetes-cli@1.29 nvtop ronn-ng tinymist +apache-flink-cdc cyctl geni kubevpn ocicl rust-parallel tmt +asak cyme gensio kuzu oils-for-unix rustls-ffi tofuenv +awsdac dep-tree go-size-analyzer lando-cli openbao rustup toipe +basti dillo godap libgit2@1.7 openfa ryelang topfew +batt displayplacer gorilla-cli libpeas@1 openjdk@21 sherlock traefik@2 +bigquery-emulator dnsgen h26forge libvirt-python otree soapyhackrf typstyle +bootterm ecs-deploy haproxy@2.8 litmusctl pedump soapyremote vedic +cahute egctl iamb llama.cpp podlet span-lite vexctl +chainhook envelope iowow llgo porter stripe-cli wcurl +chkbit fastapi jsontoolkit mactop poutine stripe-mock yara-x +chsrc fern-api kaskade mako pug task@2 zfind +clang-uml flawz kconf mihomo pulsarctl tdb +cloudflare-cli4 forbidden kubectl-cnpg nerdfetch qrtool terrahash +==> New Casks +ableton-live-suite@10 font-hedvig-letters-sans font-noto-serif-toto +airdash font-hedvig-letters-serif font-noto-serif-vithkuqi +alcom font-heebo font-noto-serif-yezidi +anchor-wallet font-henny-penny font-noto-traditional-nushu +avbeam font-hepta-slab font-noto-znamenny-musical-notation + + +``` + +## Check the installation + +Execute the next command 'podman': + +```Code +podman +Manage pods, containers and images + +Usage: + podman [options] [command] + +Available Commands: + attach Attach to a running container + build Build an image using instructions from Containerfiles + commit Create new image based on the changed container + compose Run compose workloads via an external provider such as docker-compose or podman-compose + +...etc... + +``` + +## Start the Podman Machine + +After installing, you need to create and start your first Podman machine: + +```Code + +podman machine init + +podman machine start +``` + +You should see some result like this: + + +```Code + +Looking up Podman Machine image at quay.io/podman/machine-os:5.1 to create VM +Getting image source signatures +Copying blob 9dee86eab53b done | +Copying config 44136fa355 done | +Writing manifest to image destination +9dee86eab53bcbfdacfd1cd2940059e1ee4e4b62d4017176c937a08a5b58f633 +Extracting compressed file: podman-machine-default-arm64.raw: done +Machine init complete +To start your machine run: + + podman machine start + +Starting machine "podman-machine-default" + +This machine is currently configured in rootless mode. If your containers +require root permissions (e.g. ports < 1024), or if you run into compatibility +issues with non-podman clients, you can switch using the following command: + + podman machine set --rootful + +API forwarding listening on: /var/folders/kb/jznn9w2n1bs3kjyyxdbnmydh0000gn/T/podman/podman-machine-default-api.sock + +The system helper service is not installed; the default Docker API socket +address can't be used by podman. If you would like to install it, run the following commands: + + sudo /opt/homebrew/Cellar/podman/5.1.2/bin/podman-mac-helper install + podman machine stop; podman machine start + +You can still connect Docker API clients by setting DOCKER_HOST using the +following command in your terminal session: + + export DOCKER_HOST='unix:///var/folders/kb/jznn9w2n1bs3kjyyxdbnmydh0000gn/T/podman/podman-machine-default-api.sock' + +Machine "podman-machine-default" started successfully + +``` + +## Verify the installation + +You can then verify the installation information using: + +```Code + +podman info + + +host: + arch: arm64 + buildahVersion: 1.36.0 + cgroupControllers: + - cpu + - io + - memory + - pids + cgroupManager: systemd + cgroupVersion: v2 + conmon: + package: conmon-2.1.10-1.fc40.aarch64 + path: /usr/bin/conmon + version: 'conmon version 2.1.10, commit: ' + cpuUtilization: + idlePercent: 99.71 + systemPercent: 0.18 + userPercent: 0.11 + cpus: 4 + databaseBackend: sqlite + distribution: + distribution: fedora + variant: coreos + version: "40" + eventLogger: journald + freeLocks: 2048 + hostname: localhost.localdomain + +...etc... + +``` + + +## Clean the podman deployment in MAC OSX + +If you must clean your environment in order to reset it, use the next commands: + +```Code + +podman machine stop + +podman machine reset + +``` + + diff --git a/rag_in_a_box/install_colima_docker_macosx copy.md b/rag_in_a_box/install_colima_docker_macosx copy.md new file mode 100644 index 0000000..dffac90 --- /dev/null +++ b/rag_in_a_box/install_colima_docker_macosx copy.md @@ -0,0 +1,171 @@ +# Run Oracle Database 23ai Free on Mac computers with Apple silicon + + +But what about Oracle 23ai and the newer M1/M2/M3 ARM based Apple silicon Macs I hear you ask, so here you go. + + +See the next blog to understand the complexity [Here](https://ronekins.com/2024/07/02/run-oracle-database-23ai-free-on-mac-computers-with-apple-silicon/) + + +## Preinstallation + +You need to install Rosetta2 if it is not already installed (Open Terminal in your MAC OSX Mx): + +```Code + +softwareupdate --install-rosetta + + + +I have read and agree to the terms of the software license agreement. A list of Apple SLAs may be found here: https://www.apple.com/legal/sla/ +Type A and press return to agree: A +2024-08-14 17:58:43.771 softwareupdate[67564:9084300] Package Authoring Error: 062-01890: Package reference com.apple.pkg.RosettaUpdateAuto is missing installKBytes attribute +Install of Rosetta 2 finished successfully + + +``` + +Start by installing the Homebrew package manager, if not already installed. + +Now, install Colima container runtime and Docker if not already installed on your Mac. + +```Code + +brew --version + +brew install colima docker +brew install docker-compose +brew reinstall qemu +``` + +You could see next results: + +```Code + +zsh completions have been installed to: + /opt/homebrew/share/zsh/site-functions + +To start colima now and restart at login: + brew services start colima +Or, if you don't want/need a background service you can just run: + /opt/homebrew/opt/colima/bin/colima start -f + +``` + +Restart colima + +```Code + +brew services restart colima + +``` + + +Check the installation: + +```Code + +colima --version +colima version 0.7.3 + +docker --version +Docker version 27.1.2, build d01f264bcc +``` + + +If we now try docker ps to check for processes, we see a docker daemon error message: + +```Code +docker ps +Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? +``` + + +## Start Colima Container Runtime + +If you want to deploy containers created in x86_64 architecture, we must start Colima Container Runtime like this: + +```Code +# colima start --arch x86_64 --vm-type=vz --vz-rosetta --mount-type=virtiofs --memory 8 --cpu 4 + +colima start --arch x86_64 --memory 8 --cpu 4 + +WARN[0000] 'architecture' cannot be updated after initial setup, discarded +WARN[0000] 'virtual machine type' cannot be updated after initial setup, discarded +WARN[0000] 'volume mount type' cannot be updated after initial setup, discarded +INFO[0000] starting colima +INFO[0000] runtime: docker +INFO[0002] starting ... context=vm +INFO[0013] provisioning ... context=docker +INFO[0014] starting ... context=docker +INFO[0016] done + +``` + +We can confirm the Colima Container Runtime configuration with colima status and colima list, for example. + +```Code + +colima status + +INFO[0001] colima is running using macOS Virtualization.Framework +INFO[0001] arch: x86_64 +INFO[0001] runtime: docker +INFO[0001] mountType: virtiofs +INFO[0001] socket: unix:///Users/operard/.colima/default/docker.sock + + + +colima list + +PROFILE STATUS ARCH CPUS MEMORY DISK RUNTIME ADDRESS +default Running aarch64 2 8GiB 60GiB docker + +``` + +Before we try and start any container, let’s check for Docker processes using docker ps. + +We now no longer see the Docker daemon error message. + +```Code + +docker + +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +We can check for existing docker images with docker images, for example. + +docker images + +REPOSITORY TAG IMAGE ID CREATED SIZE +The docker context show command should return colima, which means Docker runs under Colima and you can therefore use docker commands as usual. + +docker context show + +colima +``` + + +## Clean the colima and docker deployment in MAC OSX + +If you must clean your environment in order to reset it, use the next commands: + +```Code + +colima stop + + +INFO[0000] stopping colima +INFO[0000] stopping ... context=docker +INFO[0004] stopping ... context=vm +INFO[0007] done + +colima delete + + +are you sure you want to delete colima and all settings? [y/N] y +INFO[0001] deleting colima +INFO[0002] done + +``` + + diff --git a/rag_in_a_box/install_colima_docker_macosx.md b/rag_in_a_box/install_colima_docker_macosx.md new file mode 100644 index 0000000..2de5954 --- /dev/null +++ b/rag_in_a_box/install_colima_docker_macosx.md @@ -0,0 +1,152 @@ +# Run Oracle Database 23ai Free on Mac computers with Apple silicon + + +But what about Oracle 23ai and the newer M1/M2/M3 ARM based Apple silicon Macs I hear you ask, so here you go. + +See the following blog to understand the complexity [Here](https://ronekins.com/2024/07/02/run-oracle-database-23ai-free-on-mac-computers-with-apple-silicon/) + +## Preinstallation + +You need to install Rosetta2 if it is not already installed (Open Terminal in your MAC OSX Mx): + +```bash +softwareupdate --install-rosetta +``` + +You should see the following result: + +```bash +I have read and agree to the terms of the software license agreement. A list of Apple SLAs may be found here: https://www.apple.com/legal/sla/ +Type A and press return to agree: A +2024-08-14 17:58:43.771 softwareupdate[67564:9084300] Package Authoring Error: 062-01890: Package reference com.apple.pkg.RosettaUpdateAuto is missing installKBytes attribute +Install of Rosetta 2 finished successfully +``` + +Start by installing the `Homebrew` package manager, if not already installed. + +Now, install Colima container runtime and Docker if not already installed on your Mac. + +```bash +# Check the version of Homebrew +brew --version + +# Install Colima container runtime and Docker +brew install colima docker +brew install docker-compose +brew reinstall qemu +``` + +You could see next results: + +```bash +zsh completions have been installed to: + /opt/homebrew/share/zsh/site-functions + +To start colima now and restart at login: + brew services start colima +Or, if you don't want/need a background service you can just run: + /opt/homebrew/opt/colima/bin/colima start -f + +``` + +Restart colima + +```bash +# Restart colima +brew services restart colima +``` + +Check the installation: + +```bash +# Check the version of Colima +colima --version +colima version 0.7.3 + +# Check the version of Docker +docker --version +Docker version 27.1.2, build d01f264bcc +``` + +If we now try `docker ps` to check for processes, we see a docker daemon error message: + +```bash +docker ps + +Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? +``` + +This happens because the Docker daemon is not running. + +## Start Colima Container Runtime + +If you want to deploy containers created in x86_64 architecture, we must start Colima Container Runtime like this: + +```bash +# Start Colima Container Runtime +colima start --arch x86_64 --memory 8 --cpu 4 +``` + +We can confirm the Colima Container Runtime configuration with colima status and colima list, for example. + +```bash +# Check the status of Colima +colima status + +# List the containers +colima list +``` + +Before we try and start any container, let’s check for Docker processes using docker ps. + +We now no longer see the Docker daemon error message. + +```bash +# Check for Docker processes +docker ps +``` + +We can check for existing docker images with docker images, for example. + +```bash +# Check for existing docker images +docker images +``` + +The `docker context show` command should return `colima`, which means Docker runs under Colima and you can therefore use docker commands as usual. + +```bash +# Check the docker context +docker context show +``` + +## Clean the colima and docker deployment in MAC OSX + +If you must clean your environment in order to reset it, use the next commands: + +```bash +# Stop Colima +colima stop +``` + +You should see the following result: + +```bash +INFO[0000] stopping colima +INFO[0000] stopping ... context=docker +INFO[0004] stopping ... context=vm +INFO[0007] done +``` + +```bash +# Delete Colima +colima delete +``` + +You should see the following result: + +```bash +are you sure you want to delete colima and all settings? [y/N] y +INFO[0001] deleting colima +INFO[0002] done +``` diff --git a/rag_in_a_box/install_podman_macosx.md b/rag_in_a_box/install_podman_macosx.md new file mode 100644 index 0000000..9c31161 --- /dev/null +++ b/rag_in_a_box/install_podman_macosx.md @@ -0,0 +1,221 @@ +# Install podman in MAC OSX M1 + +The installation process for podman is documented [Here](https://podman.io/docs/installation) + +## Install Podman + +To install Podman in your MAC OSX M1, open a terminal and execute the following command: + +```bash +brew install podman +``` + +You should see the following result: + +```bash +==> Auto-updating Homebrew... +Adjust how often this is run with HOMEBREW_AUTO_UPDATE_SECS or disable with +HOMEBREW_NO_AUTO_UPDATE. Hide these hints with HOMEBREW_NO_ENV_HINTS (see `man brew`). +==> Downloading https://ghcr.io/v2/homebrew/portable-ruby/portable-ruby/blobs/sha256:49847c7a13f7094b211f6d0025900dd23716be07dac894a3d6941d7696296306 +################################################################################################################################################# 100.0% +==> Pouring portable-ruby-3.3.3.arm64_big_sur.bottle.tar.gz +==> Auto-updated Homebrew! +Updated 2 taps (homebrew/core and homebrew/cask). +==> New Formulae +age-plugin-se codecov-cli frizbee kubectl-rook-ceph nextdns qshell terramaid +ansible-creator cortexso ftnchek kubelogin nsync river testscript +ansible@9 cotila gcc@13 kubernetes-cli@1.29 nvtop ronn-ng tinymist +apache-flink-cdc cyctl geni kubevpn ocicl rust-parallel tmt +asak cyme gensio kuzu oils-for-unix rustls-ffi tofuenv +awsdac dep-tree go-size-analyzer lando-cli openbao rustup toipe +basti dillo godap libgit2@1.7 openfa ryelang topfew +batt displayplacer gorilla-cli libpeas@1 openjdk@21 sherlock traefik@2 +bigquery-emulator dnsgen h26forge libvirt-python otree soapyhackrf typstyle +bootterm ecs-deploy haproxy@2.8 litmusctl pedump soapyremote vedic +cahute egctl iamb llama.cpp podlet span-lite vexctl +chainhook envelope iowow llgo porter stripe-cli wcurl +chkbit fastapi jsontoolkit mactop poutine stripe-mock yara-x +chsrc fern-api kaskade mako pug task@2 zfind +clang-uml flawz kconf mihomo pulsarctl tdb +cloudflare-cli4 forbidden kubectl-cnpg nerdfetch qrtool terrahash +==> New Casks +ableton-live-suite@10 font-hedvig-letters-sans font-noto-serif-toto +airdash font-hedvig-letters-serif font-noto-serif-vithkuqi +alcom font-heebo font-noto-serif-yezidi +anchor-wallet font-henny-penny font-noto-traditional-nushu +avbeam font-hepta-slab font-noto-znamenny-musical-notation +``` + +## Check the installation + +Execute the next command: + +```bash +podman +``` + +You should see the following result: + +```bash +Manage pods, containers and images + +Usage: + podman [options] [command] + +Available Commands: + attach Attach to a running container + build Build an image using instructions from Containerfiles + commit Create new image based on the changed container + compose Run compose workloads via an external provider such as docker-compose or podman-compose + +``` + +## Start the Podman Machine + +After installing, you need to create and start your first Podman machine: + +```bash +# Initialize the Podman Machine +podman machine init + +# Start the Podman Machine +podman machine start +``` + +You should see some result like this: + +```bash + +Looking up Podman Machine image at quay.io/podman/machine-os:5.1 to create VM +Getting image source signatures +Copying blob 9dee86eab53b done | +Copying config 44136fa355 done | +Writing manifest to image destination +9dee86eab53bcbfdacfd1cd2940059e1ee4e4b62d4017176c937a08a5b58f633 +Extracting compressed file: podman-machine-default-arm64.raw: done +Machine init complete +``` + +Then, start the Podman Machine: + +```bash +# Start the Podman Machine +podman machine start +``` + +You should see the following result: + +```bash +Starting machine "podman-machine-default" + +This machine is currently configured in rootless mode. If your containers +require root permissions (e.g. ports < 1024), or if you run into compatibility +issues with non-podman clients, you can switch using the following command: + + podman machine set --rootful + +API forwarding listening on: /var/folders/kb/jznn9w2n1bs3kjyyxdbnmydh0000gn/T/podman/podman-machine-default-api.sock + +The system helper service is not installed; the default Docker API socket +address can't be used by podman. If you would like to install it, run the following commands: + + sudo /opt/homebrew/Cellar/podman/5.1.2/bin/podman-mac-helper install + podman machine stop; podman machine start + +You can still connect Docker API clients by setting DOCKER_HOST using the +following command in your terminal session: + + export DOCKER_HOST='unix:///var/folders/kb/jznn9w2n1bs3kjyyxdbnmydh0000gn/T/podman/podman-machine-default-api.sock' + +Machine "podman-machine-default" started successfully + +``` + +## Verify the installation + +You can then verify the installation information using: + +```bash +podman info +``` + +You should see the following result: + +```bash +host: + arch: arm64 + buildahVersion: 1.36.0 + cgroupControllers: + - cpu + - io + - memory + - pids + cgroupManager: systemd + cgroupVersion: v2 + conmon: + package: conmon-2.1.10-1.fc40.aarch64 + path: /usr/bin/conmon + version: 'conmon version 2.1.10, commit: ' + cpuUtilization: + idlePercent: 99.71 + systemPercent: 0.18 + userPercent: 0.11 + cpus: 4 + databaseBackend: sqlite + distribution: + distribution: fedora + variant: coreos + version: "40" + eventLogger: journald + freeLocks: 2048 + hostname: localhost.localdomain +``` +## Clean the podman deployment in MAC OSX + +If you must clean your environment in order to reset it, use the next commands: + +```bash +# Stop the Podman Machine +podman machine stop + +# Reset the Podman Machine +podman machine reset +``` + +You should see the following result: + +```bash +Machine "podman-machine-default" stopped successfully +``` + +Here are some of the commands that you can use, from my previous execution: + +```bash +podman machine stop podman-machine-default +podman machine set -m 4096 podman-machine-default +podman machine start podman-machine-default + +# Build the image +podman build -t localhost/database:23.5.0-free-arm64 -f Containerfile.free . + +# Tag the image +podman tag localhost/database:23.5.0-free-arm64 operard/database:23.5.0-free-arm64 + +# Push the image +podman push operard/database:23.5.0-free-arm64 + +# Create the network +podman network create --driver bridge --subnet 10.22.1.0/24 airag + +# Run the container +podman run -d --name 23aidb --network airag --ip 10.22.1.12 -p 1522:1521 \ +localhost/database:23.5.0-free-arm64 + +# Create the user +CREATE USER VECDEMO IDENTIFIED BY "Oracle4U" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; +GRANT CONNECT, RESOURCE TO VECDEMO; +GRANT DB_DEVELOPER_ROLE to VECDEMO; + +# Execute the sqlplus command within the 23aidb container +podman exec -it 23aidb sqlplus VECDEMO/Oracle4U@FREEPDB1 +``` diff --git a/rag_in_a_box/install_win_llama3_db23ai.md b/rag_in_a_box/install_win_llama3_db23ai.md new file mode 100644 index 0000000..0bbfce8 --- /dev/null +++ b/rag_in_a_box/install_win_llama3_db23ai.md @@ -0,0 +1,84 @@ +# Podman Installation in Windows + +Here you can see the tutorial to install **Podman Desktop** in Windows. + +## Steps + +1. Podman Desktop Installation + + ![Step 1](./images/win_slide1.png) + +2. Click on SETUP + + ![Step 2](./images/win_slide2.png) + +3. Execute DISM + + ![Step 3](./images/win_slide3.png) + + ```bash + dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart + ``` + +4. Execute PODMAN Setup + + ![Step 4](./images/win_slide4.png) + +5. Check if containers are running + + ![Step 5](./images/win_slide5.png) + +6. PODMAN Setup in execution + + ![Step 6](./images/win_slide6.png) + +7. Check PODMAN Setup + + ![Step 7](./images/win_slide7.png) + +8. Check PODMAN Installation. + + ![Step 9](./images/win_slide9.png) + +9. Execute podman commands + + ```bash + # Check if containers are running + podman ps + + # Check if images are downloaded + podman images + ``` + +10. Download the images from OCI Repository for x86: + + ```bash + # Pull the images from OCI Repository + podman pull container-registry.oracle.com/database/free:latest + + # Pull the images from OCI Repository + podman pull fra.ocir.io/frg6v9xlrkul/airagdb23aiinbox:1.0.0.0.0 + ``` + + ![Step 10](./images/win_slide10.png) + +11. Check log of container installation. + + You can check the log during the DB23ai Container Installation: + + ```bash + podman logs -f 23aidb + ``` + + ![Step 11](./images/win_slide11.png) + +12. Check both containers + + After executing the BAT script, you could check in Podman Desktop the installation of the 2 containers: + + ![Step 12](./images/win_slide12.png) + +13. Check both containers: after executing the BAT script, you could check in Podman Desktop the installation of the 2 containers: + + ![Step 13](./images/win_slide13.png) + diff --git a/rag_in_a_box/installvmragdemo.md b/rag_in_a_box/installvmragdemo.md new file mode 100644 index 0000000..8c86fce --- /dev/null +++ b/rag_in_a_box/installvmragdemo.md @@ -0,0 +1,50 @@ +# AI RAG Demo for Beginners Hands-On Lab + +AI RAG Demo with Cohere and Oracle Generative AI + +## Prerequisites + +You'll need an OCI free trial account (click here to sign up). We're going to use a ready-to-go image to install the required resources, so all you need to start is a free account. + +Registered lab participants should have received $300 in credits to use for AI RAG VM operations. + +### SSH Key + +You'll also need an SSH key pair to access the OCI Stack we're going to create. +- For Mac/Linux systems, you can [use `ssh-keygen`](https://docs.oracle.com/en-us/iaas/Content/Compute/Tasks/managingkeypairs.htm#ariaid-title4). +- On Windows, you'll [use PuTTY Key Generator](https://docs.oracle.com/en-us/iaas/Content/Compute/Tasks/managingkeypairs.htm#ariaid-title5). + +To summarize, for Mac/Linux, you can use the following command: + + ```bash + ssh-keygen -t rsa -N "" -b 2048 -C "" -f + ``` + +For Windows, and step-by-step instructions for Mac/Linux, please see the [Oracle Docs on Managing Key Pairs](https://docs.oracle.com/en-us/iaas/Content/Compute/Tasks/managingkeypairs.htm#Managing_Key_Pairs_on_Linux_Instances). + +## Getting Started + +1. Click the button below to begin the deploy of the AI RAG Demo stack and custom image: + + [![Deploy to Oracle Cloud](https://oci-resourcemanager-plugin.plugins.oci.oraclecloud.com/latest/deploy-to-oracle-cloud.svg)](https://cloud.oracle.com/resourcemanager/stacks/create?zipUrl=https://github.com/operard/airagdemo/releases/download/v1.0.0/demoai.zip) + +2. If needed, log into your account. You should then be presented with the **Create Stack** page. + + These next few steps will deploy a stack to your OCI tenancy. This will include a Compute instance and the necessary tools to deploy and run the AI RAG Demo from within your OCI account. + + Under *Stack Information* (the first screen), check the box *I have reviewed and accept the Oracle Terms of Use*. Once that box is checked, the information for the stack will be populated automatically. + +3. See the video. + +## Starting The Web Application + +To see the results of the lab, you'll need to start the web server using Google Chrome, Safari or Firefox. + +1. In the menu at the top of the page, select **your browser**. +2. Open a web browser to the public IP of your Chatbot RAG Demo AI, but use port 8501: + + ```bash + http://xxx.xxx.xxx.xxx:8501 + ``` + + The Public IP is the one at which you're currently accessing the AI RAG Demo. \ No newline at end of file diff --git a/rag_in_a_box/license_policy.yml b/rag_in_a_box/license_policy.yml new file mode 100644 index 0000000..7d45db7 --- /dev/null +++ b/rag_in_a_box/license_policy.yml @@ -0,0 +1,9 @@ +license_policies: +- license_key: upl-1.0 + label: Approved License + color_code: '#00800' + icon: icon-ok-circle +- license_key: apache-2.0 + label: Approved License + color_code: '#00800' + icon: icon-ok-circle diff --git a/rag_in_a_box/readme_aisolutions.md b/rag_in_a_box/readme_aisolutions.md new file mode 100644 index 0000000..130302b --- /dev/null +++ b/rag_in_a_box/readme_aisolutions.md @@ -0,0 +1,142 @@ +# AI RAG in a Box + +## Introduction + +AI RAG in a Box is an intelligent Retrieval Augmented Generation (RAG) system that enhances traditional RAG pipelines with agentic decision-making capabilities. This solution leverages Large Language Models (LLMs) not just for response generation, but also for intelligent routing and decision making in the information retrieval process. + +The solution combines several powerful features: +- Intelligent query routing between multiple knowledge bases +- Agent-based decision making for context selection +- Support for multiple data sources (internal documentation, industry knowledge) +- Fail-safe mechanisms for out-of-scope queries +- Flexible deployment options with both local and cloud-based LLMs + +This agentic approach significantly improves the accuracy and relevance of responses by making intelligent decisions about which knowledge base to query based on the context of each question. + +## 0. Prerequisites and setup + +### Prerequisites + +- Python 3.8 or higher +- Docker or Podman for containerized deployment +- Sufficient system resources for LLM operation: + - Minimum 16GB RAM (recommended >24GB) + - GPU with 8GB VRAM recommended for better performance + - Will run on CPU if GPU is not available +- HuggingFace account and API token (for Llama models) +- Optional: OCI Account for cloud deployment + +### Setup + +1. Clone the repository and navigate to the project directory: + ```bash + git clone https://github.com/oracle-devrel/devrel-labs.git + cd rag_in_a_box + ``` + +2. Choose your deployment method: + - For MacOS with Colima: + Follow instructions in `install_colima_docker_macosx.md` + - For MacOS with Podman: + Follow instructions in `install_podman_macosx.md` + - For Windows: + Follow instructions in `install_win_llama3_db23ai.md` + +3. Configure your environment: + - Set up HuggingFace credentials if using Llama models + - Configure OCI credentials if using cloud deployment + - Prepare your knowledge bases (PDFs, documents, websites) + +### Docs + +- [Installation Guide for MacOS (Colima)](install_colima_docker_macosx.md) +- [Installation Guide for MacOS (Podman)](install_podman_macosx.md) +- [Installation Guide for Windows](install_win_llama3_db23ai.md) +- [Using Internal Llama3](using_internal_llama3.md) +- [Using GenAI](using_genai.md) + +## 1. Getting Started + +The solution can be deployed in several ways: + +### 1. Using Docker/Podman Container + +1. Build and run the container: + ```bash + docker build -t rag-in-a-box . + docker run -p 8080:8080 rag-in-a-box + ``` + +2. Access the web interface at `http://localhost:8080` + +### 2. Using Local Installation + +1. Install dependencies: + + ```bash + pip install -r requirements.txt + ``` + +2. Start the application: + + ```bash + python app.py + ``` + +### 3. Using OCI Cloud Deployment + +Follow the VM deployment instructions in [`installvmragdemo.md`](installvmragdemo.md) + +## 2. Usage + +The system operates in three main modes: + +1. **Document Processing**: + - Upload internal documentation + - Process industry knowledge bases + - Index websites and external resources + +2. **Query Processing**: + - Submit natural language queries + - System automatically routes to appropriate knowledge base + - Receive contextually relevant responses + +3. **Agent Management**: + - Configure routing rules + - Customize fail-safe responses + - Monitor agent decisions + +## Annex: Supported Features + +### Knowledge Base Types +- PDF Documents +- Websites +- Internal Documentation +- Industry Standards +- Best Practices +- Public Resources + +### LLM Options +- Local Llama Models +- Cloud-based LLMs +- Custom Model Integration + +### Deployment Options +- Docker Containers +- Local Installation +- OCI Cloud Deployment +- VM-based Deployment + +## Contributing + +This project is open source. Please submit your contributions by forking this repository and submitting a pull request! Oracle appreciates any contributions that are made by the open source community. + +## License + +Copyright (c) 2024 Oracle and/or its affiliates. + +Licensed under the Universal Permissive License (UPL), Version 1.0. + +See [LICENSE](../LICENSE) for more details. + +ORACLE AND ITS AFFILIATES DO NOT PROVIDE ANY WARRANTY WHATSOEVER, EXPRESS OR IMPLIED, FOR ANY SOFTWARE, MATERIAL OR CONTENT OF ANY KIND CONTAINED OR PRODUCED WITHIN THIS REPOSITORY, AND IN PARTICULAR SPECIFICALLY DISCLAIM ANY AND ALL IMPLIED WARRANTIES OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. FURTHERMORE, ORACLE AND ITS AFFILIATES DO NOT REPRESENT THAT ANY CUSTOMARY SECURITY REVIEW HAS BEEN PERFORMED WITH RESPECT TO ANY SOFTWARE, MATERIAL OR CONTENT CONTAINED OR PRODUCED WITHIN THIS REPOSITORY. IN ADDITION, AND WITHOUT LIMITING THE FOREGOING, THIRD PARTIES MAY HAVE POSTED SOFTWARE, MATERIAL OR CONTENT TO THIS REPOSITORY WITHOUT ANY REVIEW. USE AT YOUR OWN RISK. \ No newline at end of file diff --git a/rag_in_a_box/scripts/airagdb23ai_linux.sh b/rag_in_a_box/scripts/airagdb23ai_linux.sh new file mode 100644 index 0000000..38ba7c6 --- /dev/null +++ b/rag_in_a_box/scripts/airagdb23ai_linux.sh @@ -0,0 +1,18 @@ +#!/bin/bash + + +if [ "$1" = "start" ]; +then + podman machine start + podman start 23aidb + podman start airagdb23aiinbox + echo "airagdb23aiinbox started ..." +elif [ "$1" = "stop" ]; +then + podman stop airagdb23aiinbox + podman stop 23aidb + podman machine stop + echo "airagdb23aiinbox stopped ..." +else + echo "Command not valid: Use start or stop ..." +fi diff --git a/rag_in_a_box/scripts/airagdb23ai_macosx.sh b/rag_in_a_box/scripts/airagdb23ai_macosx.sh new file mode 100644 index 0000000..38ba7c6 --- /dev/null +++ b/rag_in_a_box/scripts/airagdb23ai_macosx.sh @@ -0,0 +1,18 @@ +#!/bin/bash + + +if [ "$1" = "start" ]; +then + podman machine start + podman start 23aidb + podman start airagdb23aiinbox + echo "airagdb23aiinbox started ..." +elif [ "$1" = "stop" ]; +then + podman stop airagdb23aiinbox + podman stop 23aidb + podman machine stop + echo "airagdb23aiinbox stopped ..." +else + echo "Command not valid: Use start or stop ..." +fi diff --git a/rag_in_a_box/scripts/clean_airagdb23ai_win.bat b/rag_in_a_box/scripts/clean_airagdb23ai_win.bat new file mode 100644 index 0000000..d54a1b4 --- /dev/null +++ b/rag_in_a_box/scripts/clean_airagdb23ai_win.bat @@ -0,0 +1,55 @@ +@echo off +rem ************************************************************************************************* +rem usage: +rem clean_airagdb23ai_win.bat +rem +rem 2024/09/30 olivier.perard@oracle.com +rem ************************************************************************************************* + +set "AIRAG_BUILD_ARGS_LIST=%*" +call :EnvSetting +call :Clean_Containers +cd %WorkingDir% +goto :End + +:EnvSetting + if "%vArcType%" =="arm64" ( + echo "The Windows is ARM64." + set CONTAINERNAME="fra.ocir.io/frg6v9xlrkul/database:23.5.0-free-arm64" + set CONTAINERAIRAG="fra.ocir.io/frg6v9xlrkul/airagdb23aiinbox:1.0.0-arm64" + ) else ( + echo "The Windows is x86_64 or i386." + set CONTAINERNAME="container-registry.oracle.com/database/free:latest" + set CONTAINERAIRAG="fra.ocir.io/frg6v9xlrkul/airagdb23aiinbox:1.0.0.0.0" + ) + echo vArcType is %vArcType% + echo vOSType is %vOSType% + + echo PATH is %PATH% + echo LIB is %LIB% +goto :EOF + +:Clean_Containers + podman stop airagdb23aiinbox + podman stop 23aidb + + podman rm airagdb23aiinbox + podman rm 23aidb + echo "--> All containers deleted" + + REM Delete all Images + podman system prune --all --force && podman rmi --all --force + echo "--> All images deleted" + + REM Delete Network + podman network rm airag + echo "--> Network deleted" +goto :EOF + +:ErrorReturn + endlocal +exit /b 2 + +:End + endlocal +exit /b %ReturnCode% diff --git a/rag_in_a_box/scripts/install_airagdb23ai_linux.sh b/rag_in_a_box/scripts/install_airagdb23ai_linux.sh new file mode 100644 index 0000000..2b90d48 --- /dev/null +++ b/rag_in_a_box/scripts/install_airagdb23ai_linux.sh @@ -0,0 +1,78 @@ +#!/bin/bash + +# Comprobación si Homebrew está instalado +if [[ -f /usr/local/bin/brew || -f /opt/homebrew/bin/brew ]]; then + echo "Homebrew is already installed. We can continue with installation of other softwares..." +else + # Instalación de Homebrew + /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" +fi + +brew install podman + +# Start podman Machine +podman machine init --cpus 4 --memory=4096 +podman machine start + +# Test podman +podman ps + +# Install Images +#podman pull container-registry.oracle.com/database/free:latest +#podman pull docker.io/operard/database:23.5.0-free-arm64 +CONTAINERNAME="" +CONTAINERAIRAG="" + +# Install llama-cpp-python +# Comprobación del sistema operativo y arquitectura +if [[ "$(uname -m)" == "arm64" ]]; then + echo "The Mac OSX is ARM (Apple Silicon)." + CONTAINERNAME="fra.ocir.io/frg6v9xlrkul/database:23.5.0-free-arm64" + CONTAINERAIRAG="fra.ocir.io/frg6v9xlrkul/airagdb23aiinbox:1.0.0-arm64" +else + echo "The Mac OSX is x86_64." + CONTAINERNAME="container-registry.oracle.com/database/free:latest" + CONTAINERAIRAG="fra.ocir.io/frg6v9xlrkul/airagdb23aiinbox:1.0.0.0.0" +fi + +podman pull $CONTAINERNAME +podman pull $CONTAINERAIRAG + +podman network create --driver bridge --subnet 10.22.1.0/24 airag + +podman run -d --name 23aidb --network airag --ip 10.22.1.12 -p 1522:1521 $CONTAINERNAME + + +podman logs 23aidb -f | while read LINE; +do +echo ${LINE}; +echo "${LINE}" | grep -Fq 'ALTER DATABASE OPEN' && pkill -P $$; +done; + +echo "Oracle Database 23ai started" + +# Execute Script to update pwd +podman exec 23aidb ./setPassword.sh "Oracle4U" + +# Execute Script to create user +podman exec -it 23aidb sqlplus / as SYSDBA < DB23ai Downloaded" +goto :EOF + +:Install_Container_Airag + podman pull %CONTAINERAIRAG% + echo "--> AIRAG Downloaded" +goto :EOF + +:Config_Network + podman network create --driver bridge --subnet 10.22.1.0/24 airag +goto :EOF + +:Install_Db23ai + podman run -d --name 23aidb --network airag --ip 10.22.1.12 -p 1522:1521 %CONTAINERNAME% + echo "--> DB23ai Installed" +goto :EOF + +:Config_Db23ai + echo "--> configure DB23ai" + REM podman logs -f 23aidb > ./23aidb.log 2>&1 + + echo "Oracle Database 23ai started" + + podman exec 23aidb ./setPassword.sh "Oracle4U" + + ( + ALTER SESSION SET CONTAINER=FREEPDB1; + CREATE USER VECDEMO IDENTIFIED BY "Oracle4U" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; + GRANT CONNECT, RESOURCE TO VECDEMO; + GRANT DB_DEVELOPER_ROLE to VECDEMO; + EXIT + ) > ./createuser.sql + + podman exec -it 23aidb sqlplus / as SYSDBA < ./createuser.sql + + ( + select * from dual; + EXIT + ) > ./checkconn.sql + + podman exec -it 23aidb sqlplus VECDEMO/Oracle4U@FREEPDB1 < ./checkconn.sql + echo "--> DB23ai configured" +goto :EOF + + +:Install_Airag + podman run -d --name airagdb23aiinbox --network airag --ip 10.22.1.11 -p 8501:8501 -e dbuser=VECDEMO -e dbpassword=Oracle4U -e dbservice="10.22.1.12:1521/FREEPDB1" -e dbtablename=AIRAGINBOX %CONTAINERAIRAG% + echo "--> AIRAG executed" +goto :EOF + +:ErrorReturn + endlocal +exit /b 2 + +:End + endlocal +exit /b %ReturnCode% diff --git a/rag_in_a_box/scripts/uninstall_airagdb23ai_macosx.sh b/rag_in_a_box/scripts/uninstall_airagdb23ai_macosx.sh new file mode 100644 index 0000000..9e568f8 --- /dev/null +++ b/rag_in_a_box/scripts/uninstall_airagdb23ai_macosx.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +podman stop airagdb23aiinbox +podman stop 23aidb + +podman rm airagdb23aiinbox +podman rm 23aidb + +# Delete all Images +podman system prune --all --force && podman rmi --all --force + +# Delete Network +podman network rm airag + +# Stop podman Machine +podman machine stop +podman machine reset + +# Uninstall podman +brew uninstall podman diff --git a/rag_in_a_box/tutorial.md b/rag_in_a_box/tutorial.md new file mode 100644 index 0000000..6d23b77 --- /dev/null +++ b/rag_in_a_box/tutorial.md @@ -0,0 +1,27 @@ +# Tutorial to use the AI RAG Demo Service + +You can see the video and captures to use the service. + + +## Tutorial on MAC OSX to use the service using OCI Generative AI Service + +Check the next slide to explain the sequences to use the service: + +![First Access](./images/Slide4.png) + +It is a conversation with AI RAG Demo and you can continue to extend all your questions: + +![Next Access](./images/Slide5.png) + + +## Tutorial on LINUX to use the service using OCI Generative AI Service + + +Check the next slide to explain the sequences to use the service: + +![First Access](./images/Slide2.png) + +It is a conversation with AI RAG Demo and you can continue to extend all your questions: + +![Next Access](./images/Slide3.png) + diff --git a/rag_in_a_box/tutorial_llama3.md b/rag_in_a_box/tutorial_llama3.md new file mode 100644 index 0000000..6d23b77 --- /dev/null +++ b/rag_in_a_box/tutorial_llama3.md @@ -0,0 +1,27 @@ +# Tutorial to use the AI RAG Demo Service + +You can see the video and captures to use the service. + + +## Tutorial on MAC OSX to use the service using OCI Generative AI Service + +Check the next slide to explain the sequences to use the service: + +![First Access](./images/Slide4.png) + +It is a conversation with AI RAG Demo and you can continue to extend all your questions: + +![Next Access](./images/Slide5.png) + + +## Tutorial on LINUX to use the service using OCI Generative AI Service + + +Check the next slide to explain the sequences to use the service: + +![First Access](./images/Slide2.png) + +It is a conversation with AI RAG Demo and you can continue to extend all your questions: + +![Next Access](./images/Slide3.png) + diff --git a/rag_in_a_box/using_genai.md b/rag_in_a_box/using_genai.md new file mode 100644 index 0000000..1f916a1 --- /dev/null +++ b/rag_in_a_box/using_genai.md @@ -0,0 +1,89 @@ +# AI RAG Demo Using OCI Generative AI Service + +AI RAG Demo with Cohere and Oracle Generative AI could be deployed in PODMAN/DOCKER in your PC or VM in your tenancy. + +## AI RAG Deployment Using Generative AI in VM + +You can find the information [here](./installvmragdemo.md) + + +## AI RAG Deployment Using Generative AI in PODMAN in your PC + +1. If you must install podman in your MAC OSX M1, Click the next link: + + [Deploy Podman in your MAC](./install_podman_macosx.md) + +2. If you must deploy in your MAC OSX M1 some container with architecture x86_64, Click the next link: + + [Deploy container x86_64 in your MAC](./install_colima_docker_macosx.md) + + +3. Deploy **AI RAG Demo Docker** page. + +You must download the docker image in your podman, use next command: + +```Code + +podman pull docker.io/operard/airagdemo:1.0.0.0.0 + +``` + +If you must download the docker image in your docker with colima, use next command: + +```Code + +docker pull docker.io/operard/airagdemo:1.0.0.0.0 + +``` + + + +## Executing The AI RAG Demo in Docker or Podman using the OCI Generative AI Service + + +You must configure in your tenancy an access to Generative AI Service for one user and you must create a OCI Configuration File: + +```Code + +mkdir ../ociconfig +vi config + +[DEFAULT] +user=ocid1.user.xxxxxxxxxx.... +fingerprint=xx:xx:...... +tenancy=ocid1.tenancy.xxxxxx.... +region=us-chicago-1 +key_file=ssh-key-xxxxxxxx + +chmod 400 ssh-key-xxxxxxxx + +``` + +You must execute the docker image in your podman or docker in order to use your OCI Config File like this: + +```Code + +podman run -d -p 8501:8501 -v //ociconfig:/ociconfig --name airagdemo docker.io/operard/airagdemo:1.0.0.0.0 + +or + +docker run -d -p 8501:8501 -v //ociconfig:/ociconfig --name airagdemo docker.io/operard/airagdemo:1.0.0.0.0 + +``` + + +## Starting The Web Application + +To see the results of the container, you'll need to start the web server using your browser Google Chrome, Firefox or Safari. + +1. In the menu at the top of the page, select **your browser**. +2. Open a web browser to localhost or the public IP of your AI RAG Demo, but use port 8501: + + http://localhost:8501 + + The Public IP is the one at which you're currently accessing Chatbot, which we copied from the Running Instances step above. + +3. Check the tutorial + + [Tutorial](./tutorial.md) + diff --git a/rag_in_a_box/using_internal_llama3.md b/rag_in_a_box/using_internal_llama3.md new file mode 100644 index 0000000..3d3035a --- /dev/null +++ b/rag_in_a_box/using_internal_llama3.md @@ -0,0 +1,67 @@ +# AI RAG in a BOX Demo + +AI RAG in a BOX Demo using Internal LLM Engine could be deployed in PODMAN/DOCKER in your PC or OCI VM. + + +## AI RAG in a BOX Deployment Using LLAMA3 Engine in PODMAN + +1. If you must install podman in your MAC OSX M1, Click the next link: + + [Deploy Podman in your MAC](./install_podman_macosx.md) + +2. If you must deploy in your MAC OSX M1 some container with architecture x86_64, Click the next link: + + [Deploy container x86_64 in your MAC](./install_colima_docker_macosx.md) + + +3. Deploy **AI RAG in a BOX Demo Docker** page. + +You must download the docker image in your podman, use next command: + +```Code + +podman pull docker.io/operard/airaginbox:1.0.0.0.0 + +``` + +If you must download the docker image in your docker with colima, use next command: + +```Code + +docker pull docker.io/operard/airaginbox:1.0.0.0.0 + +``` + + +## Executing The **AI RAG in a BOX Demo Docker** using internal LLM Engine like LLAMA3 + + +You must execute the docker image in your podman or docker in order to use your OCI Config File like this: + +```Code + +podman run -d -p 8501:8501 -p 11434:11434 --name airaginbox docker.io/operard/airaginbox:1.0.0.0.0 + + +or + +docker run -d -p 8501:8501 -p 11434:11434 --name airaginbox docker.io/operard/airaginbox:1.0.0.0.0 + +``` + + +## Starting The Web Application + +To see the results of the container, you'll need to start the web server using your browser Google Chrome, Firefox or Safari. + +1. In the menu at the top of the page, select **your browser**. +2. Open a web browser to localhost or the public IP of your AI RAG Demo, but use port 8501: + + http://localhost:8501 or http://:8501 + + The Public IP is the one at which you're currently accessing Chatbot, which we copied from the Running Instances step above. + +3. Check the tutorial + + [Tutorial](./tutorial_llama3.md) + diff --git a/rag_in_a_box/using_internal_llama3_db23ai.md b/rag_in_a_box/using_internal_llama3_db23ai.md new file mode 100644 index 0000000..84b76db --- /dev/null +++ b/rag_in_a_box/using_internal_llama3_db23ai.md @@ -0,0 +1,146 @@ +# AI RAG in a BOX Demo using DB23ai and Internal LLM + +AI RAG in a BOX Demo using Internal LLM Engine "Ollama" could be deployed in PODMAN in your PC Mac OSX (Intel or ARM) or Windows (Intel or ARM). + +This version has included 2 containers: +- Oracle Database 23ai. +- AIRAG Container. + + +## AI RAG in a BOX Deployment Using OLLAMA Engine in PODMAN + + +### **Windows** Deployment + +#### Install PODMAN previously using the installer + +Use the next [link](https://github.com/containers/podman/blob/main/docs/tutorials/podman-for-windows.md) to deploy PODMAN in Windows + + +Check tutorial for [Windows Installation](./install_win_llama3_db23ai.md). + +#### Install containers + +You can deploy in Windows (Intel or ARM64) using next script [Here](./scripts/install_airagdb23ai_win.bat) + + +### **Mac OSX** Deployment + +#### Install podman and containers + +You can deploy in Mac OSX (Intel or ARM64) using next script [Here](./scripts/install_airagdb23ai_macosx.sh) + + +### **Linux** Deployment + +#### Install podman and containers + +You can deploy in Linux (Intel, AMD or ARM64) using next script [Here](./scripts/install_airagdb23ai_linux.sh) + + +### **Checking** Installation + +Check if PODMAN network is correctly created: + +```Code +podman network ls +``` + +Check if all images have been downloaded: + +```Code +podman images +``` + +Check if containers have been started: + +```Code +podman ps +``` + +Check if all logs of containers are OK: + +```Code +podman logs -f 23aidb + +podman logs -f airagdb23aiinbox +``` + +Connect to the database + +```Code +podman exec -it 23aidb sqlplus VECDEMO/@FREEPDB1 +``` + + + +### **Troubleshooting** + + +Check if your 23ai Database is working for user VECDEMO (put the correct password): + +```Code + +podman exec -it 23aidb sqlplus VECDEMO/@FREEPDB1 + +``` + +If you receive the next error, it means you are not able to download the HugginFace Embeddings Model: + +```Code + +OSError: We couldn't connect to 'https://huggingface.co' to load this file, couldn't find it in the cached files and it looks like intfloat/multilingual-e5-large is not the path to a directory containing a file named config.json. Checkout your internet connection or see how to run the library in offline mode at 'https://huggingface.co/docs/transformers/installation#offline-mode'. + +raceback: + +File "/usr/local/lib/python3.12/site-packages/streamlit/runtime/scriptrunner/exec_code.py", line 88, in exec_func_with_error_handling + result = func() + ^^^^^^ +File "/usr/local/lib/python3.12/site-packages/streamlit/runtime/scriptrunner/script_runner.py", line 579, in code_to_exec + exec(code, module.__dict__) +File "/root/llama3_Db23ai_ollama.py", line 73, in + embedding_model = HuggingFaceEmbeddings( + ^^^^^^^^^^^^^^^^^^^^^^ +File "/usr/local/lib/python3.12/site-packages/langchain_huggingface/embeddings/huggingface.py", line 59, in __init__ + self._client = sentence_transformers.SentenceTransformer( + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +File "/usr/local/lib/python3.12/site-packages/sentence_transformers/SentenceTransformer.py", line 320, in __init__ + modules = self._load_auto_model( + ^^^^^^^^^^^^^^^^^^^^^^ +File "/usr/local/lib/python3.12/site-packages/sentence_transformers/SentenceTransformer.py", line 1528, in _load_auto_model + transformer_model = Transformer( + ^^^^^^^^^^^^ +File "/usr/local/lib/python3.12/site-packages/sentence_transformers/models/Transformer.py", line 77, in __init__ + config = self._load_config(model_name_or_path, cache_dir, backend, config_args) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +File "/usr/local/lib/python3.12/site-packages/sentence_transformers/models/Transformer.py", line 128, in _load_config + return AutoConfig.from_pretrained(model_name_or_path, **config_args, cache_dir=cache_dir) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +File "/usr/local/lib/python3.12/site-packages/transformers/models/auto/configuration_auto.py", line 1017, in from_pretrained + config_dict, unused_kwargs = PretrainedConfig.get_config_dict(pretrained_model_name_or_path, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +File "/usr/local/lib/python3.12/site-packages/transformers/configuration_utils.py", line 574, in get_config_dict + config_dict, kwargs = cls._get_config_dict(pretrained_model_name_or_path, **kwargs) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +File "/usr/local/lib/python3.12/site-packages/transformers/configuration_utils.py", line 633, in _get_config_dict + resolved_config_file = cached_file( + ^^^^^^^^^^^^ +File "/usr/local/lib/python3.12/site-packages/transformers/utils/hub.py", line 446, in cached_file + raise EnvironmentError +``` + +You must stop and start your container + +```Code + +podman stop airagdb23aiinbox + +podman start airagdb23aiinbox + +``` + + + +## AI RAG in a BOX Deployment Using LLAMA-CPP Engine in PODMAN + + diff --git a/rag_in_a_box/using_internal_llama3_db23ai_old.md b/rag_in_a_box/using_internal_llama3_db23ai_old.md new file mode 100644 index 0000000..324959a --- /dev/null +++ b/rag_in_a_box/using_internal_llama3_db23ai_old.md @@ -0,0 +1,219 @@ +# AI RAG in a BOX Demo using DB23ai + +AI RAG in a BOX Demo using Internal LLM Engine could be deployed in PODMAN/DOCKER in your PC. + + +## AI RAG in a BOX Deployment Using LLAMA3 Engine in PODMAN + +1. If you must install podman in your MAC OSX INTEL, Click the next link: + + [Deploy Podman in your MAC](./install_podman_macosx.md) + +2. If you must deploy in your MAC OSX M1 some container with architecture x86_64, Click the next link: + + [Deploy container x86_64 in your MAC](./install_colima_docker_macosx.md) + + +3. Deploy Oracle DB23ai + + +You must create an internal network: + +```Code + +docker network create --driver bridge --subnet 10.22.1.0/24 airag + +``` + +Deploy the database + +```Code + +docker run -d --name 23aidb --network airag --ip 10.22.1.12 -p 1522:1521 \ +container-registry.oracle.com/database/free:latest +``` + +Check when the database is deployed: + +```Code +docker logs -f 23aidb +``` + + +Configure your USER / PWD to access from AIRAGINBOX + +```Code + +docker exec 23aidb ./setPassword.sh + +docker exec -it 23aidb sqlplus / as SYSDBA + +ALTER SESSION SET CONTAINER=FREEPDB1; +CREATE USER VECDEMO IDENTIFIED BY "" DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON users; +GRANT CONNECT, RESOURCE TO VECDEMO; +GRANT DB_DEVELOPER_ROLE to VECDEMO; + +``` + +Test Your Environment + +```Code + +docker exec -it 23aidb sqlplus VECDEMO/@FREEPDB1 +=> ok + + +docker exec -it 23aidb sqlplus PDBADMIN/@FREEPDB1 +=> ok +``` + + + + + +4. Deploy **AI RAG in a BOX Demo Docker** page. + +You must download the docker image in your podman in MAC OSX INTEL, use next command: + +```Code + +podman pull docker.io/operard/airagdb23aiinbox:1.0.0.0.0 + +``` + +If you must download the docker image in your docker with colima in MAC OSX Ma/M2/M3, use next command: + +```Code + +docker pull docker.io/operard/airagdb23aiinbox:1.0.0.0.0 + +``` + + +## Executing The **AI RAG in a BOX Demo Docker** using internal LLM Engine like OLLAMA + +You must create a directory "database", for example (/home/cloud-user/database) and create a file "config.env" with the database configuration: + +```Code +mkdir $HOME/database + +vi $HOME/database/config.env + +``` + + + +```Code + +# this is the .env file +[DATABASE] +USERNAME=VECDEMO +PASSWORD= +HOST=10.22.1.12 +PORT=1521 +SERVICE_NAME=FREEPDB1 +TABLE_NAME=AIRAGINBOX + +``` + + +You must execute the docker image in your podman or docker in order to use your OCI Config File like this: + +In MAC OSX INTEL: + +```Code + +podman run -d --network airag --ip 10.22.1.11 -p 8501:8501 -p 11434:11434 -v $HOME/database:/config --name airagdb23aiinbox docker.io/operard/airagdb23aiinbox:1.0.0.0.0 + +``` + +In MAC OSX M1/M2/M3: + +```Code + +docker run -d --network airag --ip 10.22.1.11 -p 8501:8501 -p 11434:11434 -v $HOME/database:/config --name airagdb23aiinbox docker.io/operard/airagdb23aiinbox:1.0.0.0.0 + +``` + + +Check when your AIRAGINBOX is ready: + +```Code + +docker logs -f airagdb23aiinbox + +``` + + + +## Starting The Web Application + +To see the results of the container, you'll need to start the web server using your browser Google Chrome, Firefox or Safari. + +1. In the menu at the top of the page, select **your browser**. +2. Open a web browser to localhost or the public IP of your AI RAG Demo, but use port 8501: + + http://localhost:8501 or http://:8501 + + The Public IP is the one at which you're currently accessing Chatbot, which we copied from the Running Instances step above. + +3. Check the tutorial + + [Tutorial](./tutorial_llama3.md) + + + +## how to stop the containers + + +Stop docker containers +```Code + +docker stop airagdb23aiinbox + +docker stop 23aidb + +docker ps -a + +``` + +Check + +Stop colima + +```Code + +colima stop + +``` + + +## ReStarting the containers after a reboot of your pc + +Start colima + +```Code + +colima start + +``` + +check docker images + +```Code + +docker images + +docker ps + +docker ps -a + +docker start 23aidb + +docker logs -f 23aidb + +docker start airagdb23aiinbox + +``` + +