Full Code of urschrei/simplification for AI

master 0d8ed7f793ba cached
23 files
5.7 MB
1.5M tokens
18 symbols
1 requests
Download .txt
Showing preview only (5,931K chars total). Download the full file or copy to clipboard to get everything.
Repository: urschrei/simplification
Branch: master
Commit: 0d8ed7f793ba
Files: 23
Total size: 5.7 MB

Directory structure:
gitextract_w7ya3lpo/

├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── dependabot.yml
│   └── workflows/
│       └── wheels.yml
├── .gitignore
├── CITATION.cff
├── CMakeLists.txt
├── LICENSE.md
├── README.md
├── benchmark_runner.py
├── pyproject.toml
├── src/
│   └── simplification/
│       ├── __init__.py
│       ├── cutil.pyx
│       ├── rdp_p.pxd
│       ├── stdbool.h
│       └── util.py
└── tests/
    ├── coords.json
    ├── coords_complex.json
    ├── cprofile_rust_cython.py
    ├── cprofile_rust_cython_complex.py
    ├── cprofile_rust_cython_shapely.py
    └── test_simplification.py

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
*.sh linguist-language=Java
ci/* linguist-vendored
cutil.cpp linguist-vendored
cutil.html linguist-vendored


================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Report a bug
title: ''
labels: ''
assignees: ''

---

# Describe the bug
A clear and concise description of what the bug is.

# To Reproduce
Steps to reproduce the behavior:
1. …
2. …
3. …

# Expected behaviour
A clear and concise description of what you expected to happen

# Screenshots
If applicable, add screenshots to help explain your problem.

# System (please complete the following information)
 - OS: [e.g. macOS]
 - Architecture [e.g. x86_64, aarch64 etc]
 - Library version

# Additional context
Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''

---

# Please don't open an issue for a feature request

I don't have time to implement new features. If you want a new feature, open a PR.


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
    ignore:
      # Optional: Official actions have moving tags like v1;
      # if you use those, you don't need updates.
      - dependency-name: "actions/*"

  - package-ecosystem: "uv"
    directory: "/"
    schedule:
      interval: "monthly"
    open-pull-requests-limit: 20
    groups:
      # Specify a name for the group, which will be used in pull request titles
      # and branch names
      python-non-security-dependencies:
        # Define patterns to include dependencies in the group (based on
        # dependency name)
        applies-to: version-updates # Applies the group rule to version updates
        patterns:
          - "*"


================================================
FILE: .github/workflows/wheels.yml
================================================
name: Build and test wheels, release on new tag

permissions:
  id-token: write
  attestations: write
  contents: read

env:
  rustlib: rdp
  wheelname: simplification
  CIBW_BUILD_FRONTEND: build[uv]

on:
  pull_request:
  push:
    branches:
      - master
    tags:
      - 'v*'

jobs:
  get_latest_lib_tag:
    name: Get latest Rust lib tag
    runs-on: ubuntu-latest
    outputs:
      tag: ${{ steps.latest-tag.outputs.tag}}
    steps:
      - id: latest-tag
        uses: oprypin/find-latest-tag@v1
        with:
          repository: urschrei/${{ env.rustlib }}  # The repository to scan.
          releases-only: true  # We know that all relevant tags have a GitHub release for them.
      - run: echo "Latest lib tag ${{ steps.latest-tag.outputs.tag }}"

  build_wheels:
    name: Build wheels on ${{ matrix.os }} ${{ matrix.arch }}
    needs: get_latest_lib_tag
    runs-on: ${{ matrix.os }}
    strategy:
      fail-fast: false
      matrix:
        include:
        - os: ubuntu-latest
          pybuilds: cp3{10,11,12,13,14}-manylinux_x86_64
          arch: x86_64
          id: linux
        - os: ubuntu-24.04-arm
          pybuilds: cp3{10,11,12,13,14}-manylinux_aarch64
          arch: aarch64
          id: linux_arm64
        - os: macos-latest
          pybuilds: cp3{10,11,12,13,14}-macosx_x86_64
          arch: x86_64
          id: macos_x86
        - os: macos-latest
          pybuilds: cp3{10,11,12,13,14}-macosx_arm64
          arch: arm64
          id: macos_arm64
        - os: windows-latest
          pybuilds: cp3{10,11,12,13,14}-win_amd64
          arch: x86_64
          id: windows

    steps:
      - uses: actions/checkout@v5
        with:
          fetch-depth: 0  # Optional, use if you use setuptools_scm
          submodules: true  # Optional, use if you have submodules
        name: Check out repo

      - id: set-filename
        name: Set compressed Rust lib filename to retrieve based on OS
        run: |
            if [ "${{ matrix.id }}" == "linux" ]; then
                echo "filename=${{ env.rustlib }}-${{ needs.get_latest_lib_tag.outputs.tag }}-x86_64-unknown-linux-gnu.tar.gz" >> $GITHUB_ENV
            elif [ "${{ matrix.id }}" == "linux_arm64" ]; then
                echo "filename=${{ env.rustlib }}-${{ needs.get_latest_lib_tag.outputs.tag }}-aarch64-unknown-linux-gnu.tar.gz" >> $GITHUB_ENV
            elif [ "${{ matrix.id }}" == "windows" ]; then
                echo "filename=${{ env.rustlib }}-${{ needs.get_latest_lib_tag.outputs.tag }}-x86_64-pc-windows-msvc.tar.gz" >> $GITHUB_ENV
            elif [ "${{ matrix.id }}" == "macos_arm64" ]; then
                echo "filename=${{ env.rustlib }}-${{ needs.get_latest_lib_tag.outputs.tag }}-aarch64-apple-darwin.tar.gz" >> $GITHUB_ENV
            elif [ "${{ matrix.id }}" == "macos_x86" ]; then
                echo "filename=${{ env.rustlib }}-${{ needs.get_latest_lib_tag.outputs.tag }}-x86_64-apple-darwin.tar.gz" >> $GITHUB_ENV
            fi
        shell: bash

      - id: get-rust-lib
        uses: robinraju/release-downloader@v1.13
        name: Download latest Rust lib release
        with:
          token: ${{ secrets.RDP_RETRIEVAL }}
          repository: urschrei/${{ env.rustlib }}
          tag: ${{ needs.get_latest_lib_tag.outputs.tag }}
          fileName: ${{ env.filename }}
          out-file-path: rustlib

      - name: Extract downloaded lib
        run:   |
               tar -xvf "rustlib/${{ env.filename }}" -C src/${{ env.wheelname }}
               mkdir wheelhouse
               git status
        shell: bash

      - name: Install the latest version of uv
        uses: astral-sh/setup-uv@v7
        with:
          version: "latest"

      - name: Build and Test Wheels
        uses: pypa/cibuildwheel@v3.4.0
        env:
          CIBW_BUILD_FRONTEND: build[uv]
          CIBW_TEST_REQUIRES: pytest
          CIBW_TEST_COMMAND: 'pytest {package}'
          CIBW_BUILD: ${{ matrix.pybuilds }}
          CIBW_ARCHS_MACOS: ${{ matrix.arch }}
          CIBW_ARCHS_LINUX: ${{ matrix.arch }}
          CIBW_ENVIRONMENT_MACOS: MACOSX_DEPLOYMENT_TARGET=11.0

      - id: attest
        name: Attest Build Provenance
        uses: actions/attest-build-provenance@v1
        with:
          subject-path: "./wheelhouse/*.whl"

      - uses: actions/upload-artifact@v4
        name: Upload repaired wheels as artifact
        with:
          name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
          path: |
            ${{ steps.attest.outputs.bundle-path }}
            ./wheelhouse/*.whl
            ./wheelhouse/*.so
            ./wheelhouse/*.dylib
            ./wheelhouse/*.lib
            ./wheelhouse/*.dll

  make_sdist:
    name: Make SDist
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v5
      with:
        fetch-depth: 0  # Optional, use if you use setuptools_scm
        submodules: true  # Optional, use if you have submodules

    - name: Build SDist
      run: pipx run build --sdist

    - uses: actions/upload-artifact@v4
      with:
        path: dist/*.tar.gz

  release_artifacts:
    if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
    name: Release repaired and tested wheels
    needs: build_wheels
    runs-on: ubuntu-latest
    environment: release
    permissions:
      # IMPORTANT: this permission is mandatory for trusted publishing
      id-token: write
      contents: write

    steps:
    - uses: actions/checkout@v5
      with:
        fetch-depth: 0  # Optional, use if you use setuptools_scm
        submodules: true  # Optional, use if you have submodules

    - name: Download compressed artifacts
      id: download
      uses: actions/download-artifact@v4
      with:
        path: ./artifacts
        merge-multiple: true

    - name: Remove attestation dir, copy wheels into main dir, remove subdirs
      run:   |
             rm -rf "${{ steps.download.outputs.download-path }}"/_temp
             cp "${{ steps.download.outputs.download-path }}"/"${{ env.wheelname }}"/"${{ env.wheelname }}"/wheelhouse/*.whl ${{ steps.download.outputs.download-path }}
             rm -rf "${{ steps.download.outputs.download-path }}"/"${{ env.wheelname }}"
      shell: bash

    - name: Display structure of downloaded files
      run: ls -R ./artifacts

    - name: Create release and upload wheels
      uses: ncipollo/release-action@v1
      with:
        allowUpdates: true
        artifacts: "${{ steps.download.outputs.download-path }}/*.whl,${{ steps.download.outputs.download-path }}/*.gz,${{ steps.download.outputs.download-path }}/*.so,${{ steps.download.outputs.download-path }}/*.dylib,${{ steps.download.outputs.download-path }}/*.lib,${{ steps.download.outputs.download-path }}/*.dll"
        token: ${{ secrets.GITHUB_TOKEN }}

    - name: PyPI Publish
      uses: pypa/gh-action-pypi-publish@release/v1
      with:
        packages-dir: ${{ steps.download.outputs.download-path }}



================================================
FILE: .gitignore
================================================
tests/output_*


================================================
FILE: CITATION.cff
================================================
cff-version: 1.1.0
message: "If you use this software, please cite it using these metadata."
abstract: "Simplification: a Python library for line simplification using the Ramer-Douglas-Peucker or Visvaligam-Whyatt algorithms"
authors:
  -
    family-names: "Hügel"
    given-names: Stephan
    orcid: "https://orcid.org/0000-0003-4379-2450"
title: "Simplification"
date-released: 2021-12-12
doi: "10.5281/zenodo.5774852"
keywords:
  - geo
  - gis
  - ramer-douglas-peucker
  - visvalingam-whyatt
license: BlueOak-1.0.0
repository-code: "https://github.com/urschrei/simplification"
version: "0.5.21"


================================================
FILE: CMakeLists.txt
================================================
cmake_minimum_required(VERSION 3.21)
project(${SKBUILD_PROJECT_NAME} LANGUAGES C)

# Define source directory
set(SIMPLIFICATION_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/src/simplification")

# Find Python
find_package(
  Python
  COMPONENTS Interpreter Development.Module NumPy
  REQUIRED)
include(UseCython)

# Get NumPy include directory
message(STATUS "NumPy include directory: ${Python_NumPy_INCLUDE_DIRS}")

cython_transpile(
  "${SIMPLIFICATION_SRC_DIR}/cutil.pyx"
  LANGUAGE C
  OUTPUT_VARIABLE cutil
  CYTHON_ARGS -I "${SIMPLIFICATION_SRC_DIR}"
)

# Create the extension module
python_add_library(cutil MODULE "${cutil}" WITH_SOABI)

# Set include directories
target_include_directories(cutil PRIVATE
  ${SIMPLIFICATION_SRC_DIR}
  ${Python_NumPy_INCLUDE_DIRS}
)

# Link against the rdp library
# The library is pre-built and located in src/simplification/
find_library(RDP_LIBRARY
  NAMES rdp librdp
  PATHS ${SIMPLIFICATION_SRC_DIR}
  NO_DEFAULT_PATH
  REQUIRED
)
message(STATUS "Found RDP library: ${RDP_LIBRARY}")

target_link_libraries(cutil PRIVATE ${RDP_LIBRARY})

# Set RPATH for different platforms
if(APPLE)
  set_target_properties(cutil PROPERTIES
    INSTALL_RPATH "@loader_path"
    BUILD_WITH_INSTALL_RPATH TRUE
  )
elseif(UNIX)
  set_target_properties(cutil PROPERTIES
    INSTALL_RPATH "$ORIGIN"
    BUILD_WITH_INSTALL_RPATH TRUE
  )
endif()

# Install the extension module
install(TARGETS cutil DESTINATION simplification)

# Install the shared library
if(APPLE)
  set(RDP_LIB_NAME "librdp.dylib")
elseif(UNIX)
  set(RDP_LIB_NAME "librdp.so")
elseif(WIN32)
  set(RDP_LIB_NAME "rdp.dll")
endif()

install(FILES ${SIMPLIFICATION_SRC_DIR}/${RDP_LIB_NAME}
        DESTINATION simplification)

# Install header file
install(FILES ${SIMPLIFICATION_SRC_DIR}/header.h
        DESTINATION simplification)


================================================
FILE: LICENSE.md
================================================
# Blue Oak Model License

Version 1.0.0

## Purpose

This license gives everyone as much permission to work with this software as possible, while protecting contributors from liability.

## Acceptance

In order to receive this license, you must agree to its rules. The rules of this license are both obligations under that agreement and conditions to your license. You must not do anything with this software that triggers a rule that you cannot or will not follow.

## Copyright

Each contributor licenses you to do everything with this software that would otherwise infringe that contributor's copyright in it.

## Notices

You must ensure that everyone who gets a copy of any part of this software from you, with or without changes, also gets the text of this license or a link to <https://blueoakcouncil.org/license/1.0.0>.

## Excuse

If anyone notifies you in writing that you have not complied with [Notices](#notices), you can keep your license by taking all practical steps to comply within 30 days after the notice. If you do not do so, your license ends immediately.

## Patent

Each contributor licenses you to do everything with this software that would otherwise infringe any patent claims they can license or become able to license.

## Reliability

No contributor can revoke this license.

## No Liability

***As far as the law allows, this software comes as is, without any warranty or condition, and no contributor will be liable to anyone for any damages related to this software or this license, under any kind of legal claim.***


================================================
FILE: README.md
================================================
[![Build Status](https://github.com/urschrei/simplification/actions/workflows/wheels.yml/badge.svg)](https://github.com/urschrei/simplification/actions/workflows/wheels.yml) [![Coverage Status](https://coveralls.io/repos/github/urschrei/simplification/badge.svg?branch=master)](https://coveralls.io/github/urschrei/simplification?branch=master) [![Downloads](https://pepy.tech/badge/simplification)](https://pepy.tech/project/simplification) [![DOI](https://zenodo.org/badge/65199659.svg)](https://zenodo.org/badge/latestdoi/65199659) [![Anaconda-Server Badge](https://anaconda.org/conda-forge/simplification/badges/version.svg)](https://anaconda.org/conda-forge/simplification)

# Simplification
Simplify a LineString using the [Ramer–Douglas–Peucker](https://en.wikipedia.org/wiki/Ramer–Douglas–Peucker_algorithm) or [Visvalingam-Whyatt](https://bost.ocks.org/mike/simplify/) algorithms

![Line](https://cdn.rawgit.com/urschrei/rdp/6c84264fd9cdc0b8fdf974fc98e51fea4834ed05/rdp.svg)  

# Installation
`uv add simplification` OR  
`pip install simplification` OR  
`conda install conda-forge::simplification`

### Installing for local development
1. Ensure you have a copy of `librdp` and `header.h` from https://github.com/urschrei/rdp/releases, and it's in the `src/simplification` subdir
2. run `uv sync --dev`
3. run `pytest .`

Changes in `pyx` and `pxd` files, and the Rust library and header will bust the cache, triggering a rebuild when `uv` commands are run.

## Building SDist and Wheels
1. Ensure that `librdp` and header are present, as above
2. Run `uv build --sdist --wheel`

### Supported Python Versions
Simplification supports all [_currently_ supported Python versions](https://devguide.python.org/versions/).

### Supported Platforms
- Linux (`manylinux`-compatible) x86_64 and aarch64
- macOS Darwin x86_64 and arm64
- Windows 64-bit

## Usage
```python
from simplification.cutil import (
    simplify_coords,
    simplify_coords_idx,
    simplify_coords_vw,
    simplify_coords_vw_idx,
    simplify_coords_vwp,
)

# Using Ramer–Douglas–Peucker
coords = [
    [0.0, 0.0],
    [5.0, 4.0],
    [11.0, 5.5],
    [17.3, 3.2],
    [27.8, 0.1]
]

# For RDP, Try an epsilon of 1.0 to start with. Other sensible values include 0.01, 0.001
simplified = simplify_coords(coords, 1.0)

# simplified is [[0.0, 0.0], [5.0, 4.0], [11.0, 5.5], [27.8, 0.1]]

# Using Visvalingam-Whyatt
# You can also pass numpy arrays, in which case you'll get numpy arrays back
import numpy as np
coords_vw = np.array([
    [5.0, 2.0],
    [3.0, 8.0],
    [6.0, 20.0],
    [7.0, 25.0],
    [10.0, 10.0]
])
simplified_vw = simplify_coords_vw(coords_vw, 30.0)

# simplified_vw is [[5.0, 2.0], [7.0, 25.0], [10.0, 10.0]]
```

Passing empty and/or 1-element lists will return them unaltered.

## But I only want the simplified **Indices**
`simplification` now has:

- `cutil.simplify_coords_idx`
- `cutil.simplify_coords_vw_idx`

The values returned by these functions are the **retained** indices. In order to use them as e.g. a [masked array](https://docs.scipy.org/doc/numpy/reference/maskedarray.generic.html#what-is-a-masked-array) in Numpy, something like the following will work:

    import numpy as np
    from simplification.cutil import simplify_coords_idx

    # assume an array of coordinates: orig
    simplified = simplify_coords_idx(orig, 1.0)
    # build new geometry using only retained coordinates
    orig_simplified = orig[simplified]


## But I need to ensure that the resulting geometries are valid
You can use the topology-preserving variant of `VW` for this: `simplify_coords_vwp`. It's slower, but has a far greater likelihood of producing a valid geometry.


## But I Want to Simplify Polylines
No problem; [Decode them to LineStrings](https://github.com/urschrei/pypolyline) first.

``` python
# pip install pypolyline before you do this
from pypolyline.cutil import decode_polyline
# an iterable of Google-encoded Polylines, so precision is 5. For OSRM &c., it's 6
decoded = (decode_polyline(line, 5) for line in polylines)
simplified = [simplify_coords(line, 1.0) for line in decoded]
```

## How it Works
FFI and a [Rust binary](https://github.com/urschrei/rdp)

## Is It Fast
I should think so.
### What does that mean
Using `numpy` arrays for input and output, the library can be reasonably expected to process around 2500 1000-point LineStrings per second on a Core i7 or equivalent, for a 98%+ reduction in size.  
A larger LineString, containing 200k+ points can be reduced to around 3k points (98.5%+) in around 50ms using RDP.

This is based on a test harness available [here](benchmark_runner.py).
#### Disclaimer
All benchmarks are subjective, and pathological input will greatly increase processing time. Error-checking is non-existent at this point.

## License
[Blue Oak Model Licence 1.0.0](LICENSE.md)

## Citing `Simplification`
If Simplification has been significant in your research, and you would like to acknowledge the project in your academic publication, we suggest citing it as follows (example in APA style, 7th edition):

> Hügel, S. (2021). Simplification (Version X.Y.Z) [Computer software]. https://doi.org/10.5281/zenodo.5774852

In Bibtex format:

    @software{Hugel_Simplification_2021,
    author = {Hügel, Stephan},
    doi = {10.5281/zenodo.5774852},
    license = {MIT},
    month = {12},
    title = {{Simplification}},
    url = {https://github.com/urschrei/simplification},
    version = {X.Y.Z},
    year = {2021}
    }


================================================
FILE: benchmark_runner.py
================================================
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
Standalone benchmark runner
"""

import cProfile
import pstats
import profile
import numpy as np

print("Running Rust + Cython benchmarks")

# calibrate
pr = profile.Profile()
calibration = np.mean([pr.calibrate(100000) for x in range(5)])
# add the bias
profile.Profile.bias = calibration

with open("tests/cprofile_rust_cython.py", "rb") as f1:
    c1 = f1.read()

with open("tests/cprofile_rust_cython_complex.py", "rb") as f2:
    c2 = f2.read()

with open("tests/cprofile_rust_cython_shapely.py", "rb") as f3:
    c3 = f3.read()

cProfile.run(c1, "tests/output_stats_rust_cython")
rust_cython = pstats.Stats("tests/output_stats_rust_cython")

cProfile.run(c2, "tests/output_stats_rust_cython_complex")
rust_cython_c = pstats.Stats("tests/output_stats_rust_cython_complex")

cProfile.run(c3, "tests/output_stats_rust_cython_shapely")
shapely = pstats.Stats("tests/output_stats_rust_cython_shapely")

print("Rust Cython Benchmarks\n")
rust_cython.sort_stats("cumulative").print_stats(5)
rust_cython_c.sort_stats("cumulative").print_stats(5)
shapely.sort_stats("cumulative").print_stats(20)


================================================
FILE: pyproject.toml
================================================
[project]
name = "simplification"
version = "0.7.15"
description = "Fast linestring simplification using RDP or Visvalingam-Whyatt and a Rust binary"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
    "numpy >= 2.0.0",
]
authors = [{ name = "Stephan Hügel", email = "urschrei@gmail.com" }]
license = "BlueOak-1.0.0"
license-files = ["LICENSE.md"]
keywords = ["Geo", "Polyline", "Linestring", "Ramer-Douglas-Peucker", "Douglas-Peucker", "Visvalingam-Whyatt"]
classifiers = [
    "Programming Language :: Python",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13",
    "Programming Language :: Python :: 3.14",
    "Development Status :: 5 - Production/Stable",
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",
    "Intended Audience :: Education",
    "Operating System :: OS Independent",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "Topic :: Scientific/Engineering :: GIS"
    ]
[project.urls]
Repository = "https://github.com/urschrei/simplification"
Tracker = "https://github.com/urschrei/simplification/issues"

[dependency-groups]
dev = [
    "pytest>=8.4.1",
]

[tool.scikit-build]
minimum-version = "build-system.requires"
wheel.packages = ["src/simplification"]

[build-system]
requires = [
    "scikit-build-core>=0.10",
    "numpy >= 2.0.0",
    "cython >= 3.1.0",
    "cython-cmake"
]
build-backend = "scikit_build_core.build"

[tool.uv]
cache-keys = [{ file = "pyproject.toml" }, { file = "src/**/*.{h,c,pyx,pxd,dylib,so,dll}" }, { file = "CMakeLists.txt" }]

[tool.pytest.ini_options]
minversion = "8.4.1"
addopts = [
    "--import-mode=importlib",
]
testpaths = [
    "tests",
]


================================================
FILE: src/simplification/__init__.py
================================================
import importlib.metadata

try:
    # __package__ allows for the case where __name__ is "__main__"
    __version__ = importlib.metadata.version(__package__ or __name__)
except importlib.metadata.PackageNotFoundError:
    __version__ = "0.0.0"


================================================
FILE: src/simplification/cutil.pyx
================================================
#cython: boundscheck=False
#cython: wraparound=False
#cython: optimize.use_switch=True
#cython: optimize.unpack_method_calls=True
# -*- coding: utf-8 -*-
"""
cutil.pyx

Created by Stephan Hügel on 2016-08-08

This file is part of simplification.
"""
__author__ = u"Stephan Hügel"

import numpy as np
import numpy
from cython cimport view
from rdp_p cimport (
    ExternalArray,
    InternalArray,
    simplify_rdp_ffi,
    simplify_rdp_idx_ffi,
    simplify_visvalingam_ffi,
    simplify_visvalingam_idx_ffi,
    simplify_visvalingamp_ffi,
    drop_float_array,
    drop_usize_array,
    )

cpdef simplify_coords(coords, double epsilon):
    """
    Simplify a LineString using the Douglas-Ramer-Peucker algorithm.
    Input: a list of lat, lon coordinates, and an epsilon float (Try 1.0 to begin with, reducing by orders of magnitude)
    Output: a simplified list of coordinates

    Example: simplify_coords([
        [0.0, 0.0], [5.0, 4.0], [11.0, 5.5], [17.3, 3.2], [27.8, 0.1]],
        1.0)
    Result: [[0.0, 0.0], [5.0, 4.0], [11.0, 5.5], [27.8, 0.1]]

    """
    if not len(coords):
        return coords
    arr = np.array(coords, dtype=np.float64)
    if not arr.flags['C_CONTIGUOUS']:
        arr = np.ascontiguousarray(arr)
    cdef double[:,::1] ncoords = np.array(arr, dtype=np.float64)
    cdef ExternalArray coords_ffi
    coords_ffi.data = <void*>&ncoords[0, 0]
    coords_ffi.len = ncoords.shape[0]
    cdef InternalArray result = simplify_rdp_ffi(coords_ffi, epsilon)
    cdef double* incoming_ptr = <double*>(result.data)
    cdef double[:, ::1] view = <double[:result.len,:2:1]>incoming_ptr
    if isinstance(coords, numpy.ndarray):
        outgoing = np.copy(view)
    else:
        outgoing = np.copy(view).tolist()
    try:
        return outgoing
    finally:
        drop_float_array(result)

cpdef simplify_coords_idx(coords, double epsilon):
    """
    Simplify a LineString using the Douglas-Ramer-Peucker algorithm.
    Input: a list of lat, lon coordinates, and an epsilon float (Try 1.0 to begin with, reducing by orders of magnitude)
    Output: a simplified list of coordinate indices

    Example: simplify_coords([
        [0.0, 0.0], [5.0, 4.0], [11.0, 5.5], [17.3, 3.2], [27.8, 0.1]],
        1.0)
    Result: [[0.0, 0.0], [5.0, 4.0], [11.0, 5.5], [27.8, 0.1]]

    """
    if not len(coords):
        return coords
    cdef double[:,::1] ncoords = np.array(coords, dtype=np.float64)
    cdef ExternalArray coords_ffi
    coords_ffi.data = <void*>&ncoords[0, 0]
    coords_ffi.len = ncoords.shape[0]
    cdef InternalArray result = simplify_rdp_idx_ffi(coords_ffi, epsilon)
    cdef size_t* incoming_ptr = <size_t*>(result.data)
    cdef size_t[::1] view = <size_t[:result.len]>incoming_ptr
    if isinstance(coords, numpy.ndarray):
        outgoing = np.copy(view)
    else:
        outgoing = np.copy(view).tolist()
    try:
        return outgoing
    finally:
        drop_usize_array(result)

cpdef simplify_coords_vw(coords, double epsilon):
    """
    Simplify a LineString using the Visvalingam-Whyatt algorithm.
    Input: a list of lat, lon coordinates, and an epsilon float
    Output: a simplified list of coordinates

    Example:
    simplify_coords([
        [5.0, 2.0], [3.0, 8.0], [6.0, 20.0], [7.0, 25.0], [10.0, 10.0]],
        30.0
    )
    Result: [[5.0, 2.0], [7.0, 25.0], [10.0, 10.0]]

    """
    if not len(coords):
        return coords
    cdef double[:,::1] ncoords = np.array(coords, dtype=np.float64)
    cdef ExternalArray coords_ffi
    coords_ffi.data = <void*>&ncoords[0, 0]
    coords_ffi.len = ncoords.shape[0]
    cdef InternalArray result = simplify_visvalingam_ffi(coords_ffi, epsilon)
    cdef double* incoming_ptr = <double*>(result.data)
    cdef double[:, ::1] view = <double[:result.len,:2:1]>incoming_ptr
    if isinstance(coords, numpy.ndarray):
        outgoing = np.copy(view)
    else:
        outgoing = np.copy(view).tolist()
    try:
        return outgoing
    finally:
        drop_float_array(result)

cpdef simplify_coords_vw_idx(coords, double epsilon):
    """
    Simplify a LineString using the Visvalingam-Whyatt algorithm.
    Input: a list of lat, lon coordinates, and an epsilon float
    Output: a simplified list of coordinate indices

    Example: simplify_coords([
        [0.0, 0.0], [5.0, 4.0], [11.0, 5.5], [17.3, 3.2], [27.8, 0.1]],
        1.0)
    Result: [[0.0, 0.0], [5.0, 4.0], [11.0, 5.5], [27.8, 0.1]]

    """
    if not len(coords):
        return coords
    cdef double[:,::1] ncoords = np.array(coords, dtype=np.float64)
    cdef ExternalArray coords_ffi
    coords_ffi.data = <void*>&ncoords[0, 0]
    coords_ffi.len = ncoords.shape[0]
    cdef InternalArray result = simplify_visvalingam_idx_ffi(coords_ffi, epsilon)
    cdef size_t* incoming_ptr = <size_t*>(result.data)
    cdef size_t[::1] view = <size_t[:result.len]>incoming_ptr
    if isinstance(coords, numpy.ndarray):
        outgoing = np.copy(view)
    else:
        outgoing = np.copy(view).tolist()
    try:
        return outgoing
    finally:
        drop_usize_array(result)

cpdef simplify_coords_vwp(coords, double epsilon):
    """
    Simplify a LineString using a topology-preserving variant of the
    Visvalingam-Whyatt algorithm.
    Input: a list of lat, lon coordinates, and an epsilon float
    Output: a simplified list of coordinates

    Example:
    simplify_coords([
        [5.0, 2.0], [3.0, 8.0], [6.0, 20.0], [7.0, 25.0], [10.0, 10.0]],
        30.0
    )
    Result: [[5.0, 2.0], [7.0, 25.0], [10.0, 10.0]]

    """
    if not len(coords):
        return coords
    cdef double[:,::1] ncoords = np.array(coords, dtype=np.float64)
    cdef ExternalArray coords_ffi
    coords_ffi.data = <void*>&ncoords[0, 0]
    coords_ffi.len = ncoords.shape[0]

    cdef InternalArray result = simplify_visvalingamp_ffi(coords_ffi, epsilon)
    cdef double* incoming_ptr = <double*>(result.data)
    cdef double[:, ::1] view = <double[:result.len,:2:1]>incoming_ptr
    if isinstance(coords, numpy.ndarray):
        outgoing = np.copy(view)
    else:
        outgoing = np.copy(view).tolist()
    try:
        return outgoing
    finally:
        drop_float_array(result)


================================================
FILE: src/simplification/rdp_p.pxd
================================================
cdef extern from "header.h":
    struct ExternalArray:
        void* data
        size_t len

cdef extern from "header.h":
    struct InternalArray:
        void* data
        size_t len

    cdef InternalArray simplify_rdp_ffi(ExternalArray, double epsilon);
    cdef InternalArray simplify_rdp_idx_ffi(ExternalArray, double epsilon);
    cdef InternalArray simplify_visvalingam_ffi(ExternalArray, double epsilon);
    cdef InternalArray simplify_visvalingam_idx_ffi(ExternalArray, double epsilon);
    cdef InternalArray simplify_visvalingamp_ffi(ExternalArray, double epsilon);
    cdef void drop_float_array(InternalArray coords);
    cdef void drop_usize_array(InternalArray coords);


================================================
FILE: src/simplification/stdbool.h
================================================
#pragma once

#define false   0
#define true    1

#define bool int


================================================
FILE: src/simplification/util.py
================================================
# -*- coding: utf-8 -*-
"""
ffi.py

Created by Stephan Hügel on 2016-08-3

This file is part of simplification.
"""

import os
from ctypes import POINTER, Structure, c_double, c_size_t, c_void_p, cast, cdll
from sys import platform, version_info

numpy_installed = True
try:
    import numpy as np
except ImportError:
    numpy_installed = False

__author__ = "Stephan Hügel"
file_path = os.path.dirname(__file__)

prefix = {"win32": ""}.get(platform, "lib")
extension = {"darwin": ".dylib", "win32": ".dll"}.get(platform, ".so")
fpath = {"darwin": "", "win32": ""}.get(platform, os.path.join(file_path, ".libs"))

# Python 3 check
if version_info > (3, 0):
    from subprocess import getoutput as spop

    py3 = True
else:
    from subprocess import check_output as spop

    py3 = False

try:
    lib = cdll.LoadLibrary(os.path.join(file_path, prefix + "rdp" + extension))
except OSError:
    # the Rust lib's been grafted by manylinux1
    if not py3:
        fname = spop(["ls", fpath]).split()[0]
    else:
        fname = spop(["ls %s" % fpath]).split()[0]
    lib = cdll.LoadLibrary(os.path.join(file_path, ".libs", fname))


class _FFIArray(Structure):
    """
    Convert sequence of float lists to a C-compatible void array
    example: [[1.0, 2.0], [3.0, 4.0]]

    """

    _fields_ = [("data", c_void_p), ("len", c_size_t)]

    @classmethod
    def from_param(cls, seq):
        """Allow implicit conversions"""
        return seq if isinstance(seq, cls) else cls(seq)

    # noinspection PyPep8Naming
    def __init__(self, seq, data_type=c_double):
        if numpy_installed:
            self.data = cast(
                np.array(seq, dtype=np.float64).ctypes.data_as(POINTER(data_type)),
                c_void_p,
            )
        else:
            Coords = data_type * (2 * len(seq))
            arr = Coords(*[item for sublist in seq for item in sublist])
            self.data = cast(arr, c_void_p)
        self.len = len(seq)


class _CoordResult(Structure):
    """Container for returned FFI coordinate data"""

    _fields_ = [("coords", _FFIArray)]


def _void_array_to_nested_list(res, _func, _args):
    """Dereference the FFI result to a list of coordinates"""
    try:
        ptr = cast(res.coords.data, POINTER(c_double))
        if numpy_installed:
            shape = res.coords.len, 2
            array = np.ctypeslib.as_array(ptr, shape)
            return array.tolist()
        else:
            return list(
                zip(ptr[0 : res.coords.len * 2 : 2], ptr[1 : res.coords.len * 2 : 2])
            )
    finally:
        drop_array(res.coords)


simplify_coords = lib.simplify_rdp_ffi
simplify_coords.argtypes = (_FFIArray, c_double)
simplify_coords.restype = _CoordResult
simplify_coords.errcheck = _void_array_to_nested_list
simplify_coords.__doc__ = """
    Simplify a LineString using the Ramer-Douglas-Peucker algorithm.
    Input: a list of lat, lon coordinates, and an epsilon float (Try 1.0 to begin with,
    reducing by orders of magnitude)
    Output: a simplified list of coordinates

    Example:
    simplify_coords([
        [0.0, 0.0], [5.0, 4.0], [11.0, 5.5], [17.3, 3.2], [27.8, 0.1]],
        1.0
    )
    Result: [[0.0, 0.0], [5.0, 4.0], [11.0, 5.5], [27.8, 0.1]]

    """

simplify_coords_vw = lib.simplify_visvalingam_ffi
simplify_coords_vw.argtypes = (_FFIArray, c_double)
simplify_coords_vw.restype = _CoordResult
simplify_coords_vw.errcheck = _void_array_to_nested_list
simplify_coords_vw.__doc__ = """
    Simplify a LineString using the Visvalingam-Whyatt algorithm.
    Input: a list of lat, lon coordinates, and an epsilon float
    Output: a simplified list of coordinates

    Example:
    simplify_coords_vw([
        [5.0, 2.0], [3.0, 8.0], [6.0, 20.0], [7.0, 25.0], [10.0, 10.0]],
        30.0
    )
    Result: [[5.0, 2.0], [7.0, 25.0], [10.0, 10.0]]

    """

simplify_coords_vwp = lib.simplify_visvalingamp_ffi
simplify_coords_vwp.argtypes = (_FFIArray, c_double)
simplify_coords_vwp.restype = _CoordResult
simplify_coords_vwp.errcheck = _void_array_to_nested_list
simplify_coords_vwp.__doc__ = """
    Simplify a LineString using a topology-preserving variant of
    the Visvalingam-Whyatt algorithm.
    Input: a list of lat, lon coordinates, and an epsilon float
    Output: a simplified list of coordinates

    Example:
    simplify_coords_vwp([
        [5.0, 2.0], [3.0, 8.0], [6.0, 20.0], [7.0, 25.0], [10.0, 10.0]],
        30.0
    )
    Result: [[5.0, 2.0], [7.0, 25.0], [10.0, 10.0]]

    """

drop_array = lib.drop_float_array
drop_array.argtypes = (_FFIArray,)
drop_array.restype = None


================================================
FILE: tests/coords.json
================================================
[
    [
        -94.043147,
        32.69303
    ],
    [
        -94.043147,
        32.693031
    ],
    [
        -94.042947,
        32.767991
    ],
    [
        -94.043027,
        32.776863
    ],
    [
        -94.042938,
        32.780558
    ],
    [
        -94.042829,
        32.785277
    ],
    [
        -94.042747,
        32.786973
    ],
    [
        -94.043026,
        32.797476
    ],
    [
        -94.042785,
        32.871486
    ],
    [
        -94.043025,
        32.880446
    ],
    [
        -94.042886,
        32.880965
    ],
    [
        -94.042886,
        32.881089
    ],
    [
        -94.042859,
        32.892771
    ],
    [
        -94.042885,
        32.898911
    ],
    [
        -94.043092,
        32.910021
    ],
    [
        -94.043067,
        32.937903
    ],
    [
        -94.043088,
        32.955592
    ],
    [
        -94.042964,
        33.019219
    ],
    [
        -94.041444,
        33.019188
    ],
    [
        -94.035839,
        33.019145
    ],
    [
        -94.027983,
        33.019139
    ],
    [
        -94.024475,
        33.019207
    ],
    [
        -93.814553,
        33.019372
    ],
    [
        -93.80493,
        33.019347
    ],
    [
        -93.531499,
        33.018643
    ],
    [
        -93.524916,
        33.018637
    ],
    [
        -93.520994,
        33.018616
    ],
    [
        -93.520971,
        33.018616
    ],
    [
        -93.490893,
        33.018442
    ],
    [
        -93.49052,
        33.018442
    ],
    [
        -93.489506,
        33.018443
    ],
    [
        -93.467042,
        33.018611
    ],
    [
        -93.377134,
        33.018234
    ],
    [
        -93.340353,
        33.018337
    ],
    [
        -93.308398,
        33.018179
    ],
    [
        -93.308181,
        33.018156
    ],
    [
        -93.238607,
        33.017992
    ],
    [
        -93.197402,
        33.017951
    ],
    [
        -93.154351,
        33.017856
    ],
    [
        -93.101443,
        33.01774
    ],
    [
        -93.100981,
        33.017786
    ],
    [
        -93.081428,
        33.017928
    ],
    [
        -93.073167,
        33.017898
    ],
    [
        -93.070686,
        33.017792
    ],
    [
        -92.988708,
        33.017298
    ],
    [
        -92.971137,
        33.017192
    ],
    [
        -92.946553,
        33.016807
    ],
    [
        -92.86751,
        33.016062
    ],
    [
        -92.854167,
        33.016132
    ],
    [
        -92.844286,
        33.01607
    ],
    [
        -92.844073,
        33.016034
    ],
    [
        -92.830798,
        33.015661
    ],
    [
        -92.733197,
        33.014347
    ],
    [
        -92.724994,
        33.014351
    ],
    [
        -92.724743,
        33.014347
    ],
    [
        -92.723553,
        33.014328
    ],
    [
        -92.715884,
        33.014398
    ],
    [
        -92.711289,
        33.014307
    ],
    [
        -92.503776,
        33.012161
    ],
    [
        -92.501383,
        33.01216
    ],
    [
        -92.469762,
        33.01201
    ],
    [
        -92.37029,
        33.010717
    ],
    [
        -92.362865,
        33.010628
    ],
    [
        -92.335893,
        33.010349
    ],
    [
        -92.292664,
        33.010103
    ],
    [
        -92.222825,
        33.00908
    ],
    [
        -92.069105,
        33.008163
    ],
    [
        -91.951958,
        33.007428
    ],
    [
        -91.950001,
        33.00752
    ],
    [
        -91.62667,
        33.006639
    ],
    [
        -91.617615,
        33.006717
    ],
    [
        -91.609001,
        33.006556
    ],
    [
        -91.579802,
        33.006518
    ],
    [
        -91.579639,
        33.006472
    ],
    [
        -91.572326,
        33.006908
    ],
    [
        -91.559494,
        33.00684
    ],
    [
        -91.46037,
        33.006246
    ],
    [
        -91.435782,
        33.006099
    ],
    [
        -91.425466,
        33.006016
    ],
    [
        -91.376016,
        33.005794
    ],
    [
        -91.333011,
        33.005529
    ],
    [
        -91.329767,
        33.005421
    ],
    [
        -91.326396,
        33.005376
    ],
    [
        -91.325037,
        33.005364
    ],
    [
        -91.322506,
        33.005341
    ],
    [
        -91.312016,
        33.005262
    ],
    [
        -91.284398,
        33.005007
    ],
    [
        -91.265018,
        33.005084
    ],
    [
        -91.166073,
        33.004106
    ],
    [
        -91.201842,
        32.961212
    ],
    [
        -91.214027,
        32.93032
    ],
    [
        -91.212837,
        32.922104
    ],
    [
        -91.208263,
        32.915354
    ],
    [
        -91.196785,
        32.906784
    ],
    [
        -91.175405,
        32.899998
    ],
    [
        -91.159975,
        32.899879
    ],
    [
        -91.145076,
        32.905494
    ],
    [
        -91.134041,
        32.917676
    ],
    [
        -91.132115,
        32.923122
    ],
    [
        -91.130947,
        32.963815
    ],
    [
        -91.138585,
        32.971352
    ],
    [
        -91.134414,
        32.980533
    ],
    [
        -91.125107,
        32.984669
    ],
    [
        -91.106581,
        32.988938
    ],
    [
        -91.094265,
        32.984371
    ],
    [
        -91.086802,
        32.976266
    ],
    [
        -91.063974,
        32.924113
    ],
    [
        -91.063809,
        32.903709
    ],
    [
        -91.070602,
        32.888659
    ],
    [
        -91.086683,
        32.873392
    ],
    [
        -91.105631,
        32.858396
    ],
    [
        -91.116091,
        32.855641
    ],
    [
        -91.127886,
        32.855059
    ],
    [
        -91.145002,
        32.84287
    ],
    [
        -91.158336,
        32.822304
    ],
    [
        -91.161669,
        32.812465
    ],
    [
        -91.164397,
        32.785821
    ],
    [
        -91.165328,
        32.751301
    ],
    [
        -91.163389,
        32.747009
    ],
    [
        -91.154461,
        32.742339
    ],
    [
        -91.123152,
        32.742798
    ],
    [
        -91.077176,
        32.732534
    ],
    [
        -91.060766,
        32.727494
    ],
    [
        -91.054481,
        32.722259
    ],
    [
        -91.057043,
        32.712576
    ],
    [
        -91.063946,
        32.702926
    ],
    [
        -91.076061,
        32.693751
    ],
    [
        -91.098762,
        32.685291
    ],
    [
        -91.118258,
        32.674075
    ],
    [
        -91.152081,
        32.641508
    ],
    [
        -91.153821,
        32.631282
    ],
    [
        -91.151318,
        32.615919
    ],
    [
        -91.146204,
        32.604144
    ],
    [
        -91.141148,
        32.597209
    ],
    [
        -91.127912,
        32.586493
    ],
    [
        -91.119854,
        32.584795
    ],
    [
        -91.104111,
        32.584657
    ],
    [
        -91.096774,
        32.576652
    ],
    [
        -91.090771,
        32.563978
    ],
    [
        -91.090611,
        32.562705
    ],
    [
        -91.089436,
        32.553306
    ],
    [
        -91.093741,
        32.549128
    ],
    [
        -91.097878,
        32.544752
    ],
    [
        -91.116708,
        32.500139
    ],
    [
        -91.116008,
        32.48314
    ],
    [
        -91.108808,
        32.47204
    ],
    [
        -91.095308,
        32.458741
    ],
    [
        -91.070207,
        32.445141
    ],
    [
        -91.052907,
        32.438442
    ],
    [
        -91.029606,
        32.433542
    ],
    [
        -90.99408,
        32.403862
    ],
    [
        -91.004506,
        32.368144
    ],
    [
        -91.003506,
        32.362145
    ],
    [
        -91.000106,
        32.357695
    ],
    [
        -90.986672,
        32.35176
    ],
    [
        -90.912363,
        32.339454
    ],
    [
        -90.901511,
        32.337864
    ],
    [
        -90.898588,
        32.329094
    ],
    [
        -90.905173,
        32.315497
    ],
    [
        -91.004557,
        32.215381
    ],
    [
        -91.006306,
        32.22415
    ],
    [
        -91.021507,
        32.236149
    ],
    [
        -91.039007,
        32.242349
    ],
    [
        -91.046507,
        32.241149
    ],
    [
        -91.122602,
        32.216929
    ],
    [
        -91.133587,
        32.213432
    ],
    [
        -91.158026,
        32.201956
    ],
    [
        -91.164171,
        32.196888
    ],
    [
        -91.171046,
        32.176526
    ],
    [
        -91.174552,
        32.154978
    ],
    [
        -91.171702,
        32.14425
    ],
    [
        -91.165452,
        32.13429
    ],
    [
        -91.162822,
        32.132694
    ],
    [
        -91.131403,
        32.126213
    ],
    [
        -91.067004,
        32.132144
    ],
    [
        -91.057487,
        32.135515
    ],
    [
        -91.052342,
        32.137337
    ],
    [
        -91.046615,
        32.138768
    ],
    [
        -91.040531,
        32.137337
    ],
    [
        -91.034447,
        32.134832
    ],
    [
        -91.030152,
        32.129821
    ],
    [
        -91.026931,
        32.123737
    ],
    [
        -91.027125,
        32.120434
    ],
    [
        -91.027535,
        32.113431
    ],
    [
        -91.027946,
        32.112722
    ],
    [
        -91.034707,
        32.101053
    ],
    [
        -91.128009,
        31.985857
    ],
    [
        -91.248144,
        31.869848
    ],
    [
        -91.293413,
        31.86016
    ],
    [
        -91.326914,
        31.854961
    ],
    [
        -91.338414,
        31.851261
    ],
    [
        -91.345714,
        31.842861
    ],
    [
        -91.359514,
        31.799362
    ],
    [
        -91.363714,
        31.780363
    ],
    [
        -91.365614,
        31.760763
    ],
    [
        -91.365084,
        31.752743
    ],
    [
        -91.369375,
        31.746903
    ],
    [
        -91.379935,
        31.733013
    ],
    [
        -91.397915,
        31.709364
    ],
    [
        -91.400115,
        31.688164
    ],
    [
        -91.398059,
        31.655922
    ],
    [
        -91.404668,
        31.637898
    ],
    [
        -91.42209,
        31.63129
    ],
    [
        -91.441315,
        31.63129
    ],
    [
        -91.45273,
        31.63129
    ],
    [
        -91.464746,
        31.628886
    ],
    [
        -91.474959,
        31.621677
    ],
    [
        -91.477963,
        31.610863
    ],
    [
        -91.477963,
        31.604855
    ],
    [
        -91.477963,
        31.598247
    ],
    [
        -91.477362,
        31.592239
    ],
    [
        -91.470754,
        31.58563
    ],
    [
        -91.458679,
        31.583226
    ],
    [
        -91.44862,
        31.583032
    ],
    [
        -91.437711,
        31.580824
    ],
    [
        -91.425094,
        31.57782
    ],
    [
        -91.415482,
        31.567006
    ],
    [
        -91.416683,
        31.561599
    ],
    [
        -91.422691,
        31.55439
    ],
    [
        -91.437616,
        31.546166
    ],
    [
        -91.450017,
        31.539666
    ],
    [
        -91.479718,
        31.530366
    ],
    [
        -91.511217,
        31.532612
    ],
    [
        -91.51581,
        31.530894
    ],
    [
        -91.52292,
        31.519841
    ],
    [
        -91.51513,
        31.449206
    ],
    [
        -91.510356,
        31.438928
    ],
    [
        -91.505301,
        31.432945
    ],
    [
        -91.500406,
        31.419008
    ],
    [
        -91.505093,
        31.400933
    ],
    [
        -91.513795,
        31.386875
    ],
    [
        -91.525386,
        31.378904
    ],
    [
        -91.541242,
        31.35675
    ],
    [
        -91.539904,
        31.337336
    ],
    [
        -91.531201,
        31.326625
    ],
    [
        -91.51982,
        31.311228
    ],
    [
        -91.508858,
        31.291644
    ],
    [
        -91.515614,
        31.27821
    ],
    [
        -91.522397,
        31.273423
    ],
    [
        -91.547588,
        31.264444
    ],
    [
        -91.574493,
        31.261289
    ],
    [
        -91.59849,
        31.205485
    ],
    [
        -91.599965,
        31.192318
    ],
    [
        -91.604197,
        31.154545
    ],
    [
        -91.577373,
        31.078179
    ],
    [
        -91.56415,
        31.06683
    ],
    [
        -91.561283,
        31.060906
    ],
    [
        -91.559907,
        31.054119
    ],
    [
        -91.562468,
        31.043213
    ],
    [
        -91.571695,
        31.029782
    ],
    [
        -91.58467,
        31.020185
    ],
    [
        -91.636942,
        30.999416
    ],
    [
        -91.625118,
        30.999167
    ],
    [
        -91.538727,
        30.999388
    ],
    [
        -91.425749,
        30.999007
    ],
    [
        -91.423621,
        30.998984
    ],
    [
        -91.224839,
        30.999183
    ],
    [
        -91.224068,
        30.999183
    ],
    [
        -91.176209,
        30.999144
    ],
    [
        -91.17614,
        30.999144
    ],
    [
        -91.108291,
        30.99888
    ],
    [
        -91.108114,
        30.998857
    ],
    [
        -91.080814,
        30.998909
    ],
    [
        -91.06827,
        30.99892
    ],
    [
        -91.060217,
        30.998935
    ],
    [
        -90.826027,
        30.99936
    ],
    [
        -90.825829,
        30.99936
    ],
    [
        -90.783745,
        30.999447
    ],
    [
        -90.779858,
        30.999457
    ],
    [
        -90.775981,
        30.999491
    ],
    [
        -90.769333,
        30.999374
    ],
    [
        -90.758775,
        30.999583
    ],
    [
        -90.734552,
        30.999222
    ],
    [
        -90.734473,
        30.999214
    ],
    [
        -90.651193,
        30.99951
    ],
    [
        -90.648721,
        30.999486
    ],
    [
        -90.588676,
        30.99965
    ],
    [
        -90.587373,
        30.999604
    ],
    [
        -90.584448,
        30.999698
    ],
    [
        -90.583518,
        30.999698
    ],
    [
        -90.567195,
        30.999733
    ],
    [
        -90.547615,
        30.999723
    ],
    [
        -90.486749,
        30.999693
    ],
    [
        -90.485876,
        30.99974
    ],
    [
        -90.477284,
        30.999717
    ],
    [
        -90.475928,
        30.99974
    ],
    [
        -90.474094,
        30.999798
    ],
    [
        -90.442479,
        30.999722
    ],
    [
        -90.441725,
        30.999729
    ],
    [
        -90.437351,
        30.99973
    ],
    [
        -90.426849,
        30.999776
    ],
    [
        -90.422117,
        30.99981
    ],
    [
        -90.369371,
        31.000335
    ],
    [
        -90.347241,
        31.000359
    ],
    [
        -90.34723,
        31.000359
    ],
    [
        -90.346007,
        31.000363
    ],
    [
        -90.259555,
        31.000657
    ],
    [
        -90.164676,
        31.00098
    ],
    [
        -90.164278,
        31.001025
    ],
    [
        -90.131395,
        31.000924
    ],
    [
        -90.128406,
        31.001047
    ],
    [
        -90.050706,
        31.001215
    ],
    [
        -90.029574,
        31.00119
    ],
    [
        -90.022185,
        31.001302
    ],
    [
        -90.005332,
        31.001364
    ],
    [
        -89.97543,
        31.001692
    ],
    [
        -89.972802,
        31.001392
    ],
    [
        -89.927161,
        31.001437
    ],
    [
        -89.923119,
        31.001446
    ],
    [
        -89.897516,
        31.001913
    ],
    [
        -89.892708,
        31.001759
    ],
    [
        -89.856862,
        31.002075
    ],
    [
        -89.835908,
        31.002059
    ],
    [
        -89.835542,
        31.002059
    ],
    [
        -89.824617,
        31.00206
    ],
    [
        -89.816429,
        31.002084
    ],
    [
        -89.752642,
        31.001853
    ],
    [
        -89.732504,
        31.004831
    ],
    [
        -89.728147,
        31.002431
    ],
    [
        -89.728148,
        31.0023
    ],
    [
        -89.728382,
        30.971141
    ],
    [
        -89.744789,
        30.918933
    ],
    [
        -89.756543,
        30.900431
    ],
    [
        -89.770931,
        30.899432
    ],
    [
        -89.77341,
        30.897693
    ],
    [
        -89.789863,
        30.851527
    ],
    [
        -89.826175,
        30.736594
    ],
    [
        -89.842596,
        30.666038
    ],
    [
        -89.842585,
        30.666005
    ],
    [
        -89.823384,
        30.608535
    ],
    [
        -89.806843,
        30.572039
    ],
    [
        -89.76057,
        30.515761
    ],
    [
        -89.732577,
        30.492502
    ],
    [
        -89.724614,
        30.491902
    ],
    [
        -89.69058,
        30.458773
    ],
    [
        -89.68341,
        30.451793
    ],
    [
        -89.629941,
        30.339449
    ],
    [
        -89.629877,
        30.321017
    ],
    [
        -89.640694,
        30.301313
    ],
    [
        -89.643575,
        30.293099
    ],
    [
        -89.64344,
        30.287682
    ],
    [
        -89.607655,
        30.217096
    ],
    [
        -89.580754,
        30.186197
    ],
    [
        -89.572654,
        30.180897
    ],
    [
        -89.524504,
        30.180753
    ],
    [
        -89.531213,
        30.177099
    ],
    [
        -89.537493,
        30.171745
    ],
    [
        -89.555013,
        30.170798
    ],
    [
        -89.562825,
        30.168667
    ],
    [
        -89.56827,
        30.163932
    ],
    [
        -89.572093,
        30.160362
    ],
    [
        -89.587062,
        30.150648
    ],
    [
        -89.595021,
        30.149891
    ],
    [
        -89.598027,
        30.152409
    ],
    [
        -89.617542,
        30.156422
    ],
    [
        -89.62288,
        30.152368
    ],
    [
        -89.625053,
        30.150717
    ],
    [
        -89.640989,
        30.138612
    ],
    [
        -89.64455,
        30.134108
    ],
    [
        -89.650467,
        30.126625
    ],
    [
        -89.656986,
        30.118381
    ],
    [
        -89.658594,
        30.117364
    ],
    [
        -89.668164,
        30.111311
    ],
    [
        -89.668638,
        30.111011
    ],
    [
        -89.669157,
        30.110683
    ],
    [
        -89.669182,
        30.110667
    ],
    [
        -89.672881,
        30.11049
    ],
    [
        -89.674124,
        30.11043
    ],
    [
        -89.674633,
        30.110406
    ],
    [
        -89.674956,
        30.110212
    ],
    [
        -89.675762,
        30.109728
    ],
    [
        -89.676117,
        30.109515
    ],
    [
        -89.678156,
        30.10829
    ],
    [
        -89.678163,
        30.108286
    ],
    [
        -89.678293,
        30.107746
    ],
    [
        -89.678457,
        30.107059
    ],
    [
        -89.678499,
        30.106886
    ],
    [
        -89.679655,
        30.102067
    ],
    [
        -89.679823,
        30.101367
    ],
    [
        -89.679838,
        30.101304
    ],
    [
        -89.680042,
        30.100452
    ],
    [
        -89.68035,
        30.099171
    ],
    [
        -89.680485,
        30.098605
    ],
    [
        -89.681265,
        30.095355
    ],
    [
        -89.681906,
        30.092682
    ],
    [
        -89.682057,
        30.092052
    ],
    [
        -89.682181,
        30.091536
    ],
    [
        -89.682181,
        30.091531
    ],
    [
        -89.682277,
        30.090565
    ],
    [
        -89.68228,
        30.090531
    ],
    [
        -89.682331,
        30.090015
    ],
    [
        -89.682371,
        30.089607
    ],
    [
        -89.682393,
        30.089391
    ],
    [
        -89.682409,
        30.089225
    ],
    [
        -89.682691,
        30.086365
    ],
    [
        -89.683051,
        30.082718
    ],
    [
        -89.683168,
        30.08153
    ],
    [
        -89.683712,
        30.076018
    ],
    [
        -89.697556,
        30.070842
    ],
    [
        -89.698461,
        30.070504
    ],
    [
        -89.698496,
        30.070491
    ],
    [
        -89.698909,
        30.070451
    ],
    [
        -89.699144,
        30.070428
    ],
    [
        -89.699629,
        30.070381
    ],
    [
        -89.711848,
        30.069194
    ],
    [
        -89.712942,
        30.069088
    ],
    [
        -89.713003,
        30.069061
    ],
    [
        -89.714085,
        30.068582
    ],
    [
        -89.714827,
        30.068253
    ],
    [
        -89.715494,
        30.067958
    ],
    [
        -89.715884,
        30.067785
    ],
    [
        -89.716237,
        30.067628
    ],
    [
        -89.716425,
        30.067545
    ],
    [
        -89.71675,
        30.067402
    ],
    [
        -89.716887,
        30.067341
    ],
    [
        -89.721992,
        30.06508
    ],
    [
        -89.724433,
        30.063999
    ],
    [
        -89.72633,
        30.063158
    ],
    [
        -89.727453,
        30.062661
    ],
    [
        -89.728026,
        30.061841
    ],
    [
        -89.72957,
        30.059628
    ],
    [
        -89.72968,
        30.05947
    ],
    [
        -89.72979,
        30.059314
    ],
    [
        -89.729911,
        30.059139
    ],
    [
        -89.73099,
        30.057594
    ],
    [
        -89.730999,
        30.057581
    ],
    [
        -89.731208,
        30.054558
    ],
    [
        -89.731428,
        30.051377
    ],
    [
        -89.731452,
        30.05104
    ],
    [
        -89.731545,
        30.049694
    ],
    [
        -89.731545,
        30.049691
    ],
    [
        -89.731544,
        30.04969
    ],
    [
        -89.7163,
        30.02811
    ],
    [
        -89.7163,
        30.028106
    ],
    [
        -89.716301,
        30.028088
    ],
    [
        -89.716328,
        30.027415
    ],
    [
        -89.716336,
        30.02723
    ],
    [
        -89.716358,
        30.026686
    ],
    [
        -89.716377,
        30.026222
    ],
    [
        -89.724649,
        30.022454
    ],
    [
        -89.724669,
        30.022453
    ],
    [
        -89.72576,
        30.022403
    ],
    [
        -89.733323,
        30.022054
    ],
    [
        -89.734361,
        30.022884
    ],
    [
        -89.739028,
        30.026618
    ],
    [
        -89.739574,
        30.027055
    ],
    [
        -89.740886,
        30.028104
    ],
    [
        -89.745827,
        30.032056
    ],
    [
        -89.746313,
        30.032445
    ],
    [
        -89.746505,
        30.032599
    ],
    [
        -89.746506,
        30.0326
    ],
    [
        -89.757138,
        30.03865
    ],
    [
        -89.763216,
        30.042108
    ],
    [
        -89.782534,
        30.045372
    ],
    [
        -89.78463,
        30.045253
    ],
    [
        -89.813684,
        30.043605
    ],
    [
        -89.818561,
        30.043328
    ],
    [
        -89.829762,
        30.033275
    ],
    [
        -89.830442,
        30.032664
    ],
    [
        -89.832213,
        30.031075
    ],
    [
        -89.832965,
        30.0304
    ],
    [
        -89.833794,
        30.029656
    ],
    [
        -89.834644,
        30.028893
    ],
    [
        -89.835202,
        30.028393
    ],
    [
        -89.839926,
        30.024153
    ],
    [
        -89.839933,
        30.024146
    ],
    [
        -89.840963,
        30.022995
    ],
    [
        -89.841739,
        30.022127
    ],
    [
        -89.854533,
        30.007821
    ],
    [
        -89.857558,
        30.004439
    ],
    [
        -89.852312,
        29.97765
    ],
    [
        -89.844202,
        29.955645
    ],
    [
        -89.8385,
        29.945816
    ],
    [
        -89.829023,
        29.939228
    ],
    [
        -89.81803,
        29.934145
    ],
    [
        -89.804463,
        29.932588
    ],
    [
        -89.775459,
        29.937416
    ],
    [
        -89.748492,
        29.945831
    ],
    [
        -89.727933,
        29.95878
    ],
    [
        -89.719067,
        29.953699
    ],
    [
        -89.71291,
        29.946349
    ],
    [
        -89.736311,
        29.936263
    ],
    [
        -89.742727,
        29.935894
    ],
    [
        -89.746273,
        29.928221
    ],
    [
        -89.742479,
        29.90817
    ],
    [
        -89.711158,
        29.879287
    ],
    [
        -89.692004,
        29.868722
    ],
    [
        -89.671555,
        29.867535
    ],
    [
        -89.660568,
        29.862909
    ],
    [
        -89.638016,
        29.864065
    ],
    [
        -89.613159,
        29.87216
    ],
    [
        -89.598129,
        29.881409
    ],
    [
        -89.591194,
        29.897018
    ],
    [
        -89.592346,
        29.917253
    ],
    [
        -89.583099,
        29.931705
    ],
    [
        -89.583099,
        29.945581
    ],
    [
        -89.574997,
        29.959455
    ],
    [
        -89.574425,
        29.983738
    ],
    [
        -89.58136,
        29.994722
    ],
    [
        -89.571533,
        29.999926
    ],
    [
        -89.551292,
        30.005709
    ],
    [
        -89.501587,
        30.034037
    ],
    [
        -89.494064,
        30.040972
    ],
    [
        -89.494637,
        30.0508
    ],
    [
        -89.499275,
        30.058893
    ],
    [
        -89.493484,
        30.072191
    ],
    [
        -89.481926,
        30.079128
    ],
    [
        -89.458946,
        30.06345
    ],
    [
        -89.444618,
        30.060959
    ],
    [
        -89.429047,
        30.05224
    ],
    [
        -89.418465,
        30.049747
    ],
    [
        -89.372375,
        30.054729
    ],
    [
        -89.368637,
        30.047256
    ],
    [
        -89.372375,
        30.036671
    ],
    [
        -89.381096,
        30.030441
    ],
    [
        -89.393555,
        30.029818
    ],
    [
        -89.41597,
        30.020477
    ],
    [
        -89.422813,
        30.015495
    ],
    [
        -89.432785,
        30.008022
    ],
    [
        -89.433411,
        29.991205
    ],
    [
        -89.432785,
        29.978752
    ],
    [
        -89.40538,
        29.965672
    ],
    [
        -89.393555,
        29.966295
    ],
    [
        -89.379227,
        29.963804
    ],
    [
        -89.378601,
        29.919588
    ],
    [
        -89.368019,
        29.911491
    ],
    [
        -89.331894,
        29.91585
    ],
    [
        -89.315453,
        29.923208
    ],
    [
        -89.283562,
        29.97332
    ],
    [
        -89.273315,
        29.99382
    ],
    [
        -89.250534,
        30.002361
    ],
    [
        -89.243706,
        29.997236
    ],
    [
        -89.249969,
        29.975597
    ],
    [
        -89.218071,
        29.97275
    ],
    [
        -89.22377,
        29.961929
    ],
    [
        -89.231178,
        29.925484
    ],
    [
        -89.244843,
        29.93004
    ],
    [
        -89.263062,
        29.929472
    ],
    [
        -89.280144,
        29.924915
    ],
    [
        -89.318306,
        29.898149
    ],
    [
        -89.322289,
        29.887333
    ],
    [
        -89.311462,
        29.881636
    ],
    [
        -89.289253,
        29.880499
    ],
    [
        -89.272179,
        29.886763
    ],
    [
        -89.241425,
        29.88961
    ],
    [
        -89.236298,
        29.886763
    ],
    [
        -89.236298,
        29.877081
    ],
    [
        -89.254517,
        29.864552
    ],
    [
        -89.269897,
        29.859997
    ],
    [
        -89.294952,
        29.857149
    ],
    [
        -89.317726,
        29.850885
    ],
    [
        -89.363289,
        29.84576
    ],
    [
        -89.383789,
        29.838928
    ],
    [
        -89.383217,
        29.830385
    ],
    [
        -89.372971,
        29.82526
    ],
    [
        -89.345634,
        29.820135
    ],
    [
        -89.342781,
        29.798496
    ],
    [
        -89.33197,
        29.790524
    ],
    [
        -89.318306,
        29.788815
    ],
    [
        -89.293251,
        29.803053
    ],
    [
        -89.277298,
        29.807608
    ],
    [
        -89.277298,
        29.799635
    ],
    [
        -89.284134,
        29.795649
    ],
    [
        -89.284706,
        29.770021
    ],
    [
        -89.269325,
        29.760912
    ],
    [
        -89.271034,
        29.756355
    ],
    [
        -89.305199,
        29.756926
    ],
    [
        -89.316025,
        29.760912
    ],
    [
        -89.325134,
        29.772301
    ],
    [
        -89.337662,
        29.779135
    ],
    [
        -89.354179,
        29.781412
    ],
    [
        -89.367271,
        29.775148
    ],
    [
        -89.386063,
        29.788815
    ],
    [
        -89.394608,
        29.784828
    ],
    [
        -89.399162,
        29.770592
    ],
    [
        -89.414536,
        29.752371
    ],
    [
        -89.428207,
        29.74155
    ],
    [
        -89.42421,
        29.697638
    ],
    [
        -89.44812,
        29.703316
    ],
    [
        -89.471992,
        29.718597
    ],
    [
        -89.486961,
        29.72592
    ],
    [
        -89.506065,
        29.731651
    ],
    [
        -89.530258,
        29.74375
    ],
    [
        -89.540131,
        29.74375
    ],
    [
        -89.560181,
        29.735472
    ],
    [
        -89.572922,
        29.746616
    ],
    [
        -89.598068,
        29.74757
    ],
    [
        -89.634048,
        29.752981
    ],
    [
        -89.651237,
        29.749479
    ],
    [
        -89.649651,
        29.719872
    ],
    [
        -89.644562,
        29.710957
    ],
    [
        -89.618446,
        29.700768
    ],
    [
        -89.59903,
        29.704908
    ],
    [
        -89.592979,
        29.702042
    ],
    [
        -89.599663,
        29.690262
    ],
    [
        -89.596802,
        29.684212
    ],
    [
        -89.573883,
        29.674025
    ],
    [
        -89.55732,
        29.670204
    ],
    [
        -89.53376,
        29.670204
    ],
    [
        -89.487915,
        29.630405
    ],
    [
        -89.485367,
        29.624357
    ],
    [
        -89.486709,
        29.621003
    ],
    [
        -89.486931,
        29.620447
    ],
    [
        -89.504738,
        29.631508
    ],
    [
        -89.523018,
        29.639427
    ],
    [
        -89.535202,
        29.648567
    ],
    [
        -89.583336,
        29.652834
    ],
    [
        -89.608925,
        29.657707
    ],
    [
        -89.621109,
        29.657101
    ],
    [
        -89.62355,
        29.662584
    ],
    [
        -89.632698,
        29.671724
    ],
    [
        -89.644272,
        29.675381
    ],
    [
        -89.64975,
        29.672941
    ],
    [
        -89.641228,
        29.647961
    ],
    [
        -89.641228,
        29.635773
    ],
    [
        -89.647324,
        29.625414
    ],
    [
        -89.657677,
        29.624195
    ],
    [
        -89.674736,
        29.626633
    ],
    [
        -89.684486,
        29.624804
    ],
    [
        -89.688141,
        29.615055
    ],
    [
        -89.684486,
        29.602867
    ],
    [
        -89.671082,
        29.588243
    ],
    [
        -89.668648,
        29.580322
    ],
    [
        -89.684486,
        29.563263
    ],
    [
        -89.684486,
        29.551073
    ],
    [
        -89.681092,
        29.534487
    ],
    [
        -89.69623,
        29.525004
    ],
    [
        -89.699698,
        29.523423
    ],
    [
        -89.700845,
        29.520785
    ],
    [
        -89.700501,
        29.515967
    ],
    [
        -89.693877,
        29.508559
    ],
    [
        -89.665813,
        29.49002
    ],
    [
        -89.644039,
        29.492343
    ],
    [
        -89.63533,
        29.489294
    ],
    [
        -89.617558,
        29.468298
    ],
    [
        -89.596533,
        29.456303
    ],
    [
        -89.592474,
        29.449822
    ],
    [
        -89.589536,
        29.437662
    ],
    [
        -89.577096,
        29.433692
    ],
    [
        -89.574635,
        29.435734
    ],
    [
        -89.574653,
        29.4411
    ],
    [
        -89.548686,
        29.465723
    ],
    [
        -89.528429,
        29.454702
    ],
    [
        -89.53215,
        29.434567
    ],
    [
        -89.531943,
        29.425679
    ],
    [
        -89.518368,
        29.40023
    ],
    [
        -89.508551,
        29.386168
    ],
    [
        -89.505038,
        29.38604
    ],
    [
        -89.487308,
        29.393346
    ],
    [
        -89.484354,
        29.397471
    ],
    [
        -89.482318,
        29.406222
    ],
    [
        -89.47714,
        29.411241
    ],
    [
        -89.470142,
        29.401471
    ],
    [
        -89.457303,
        29.393148
    ],
    [
        -89.42238,
        29.390628
    ],
    [
        -89.380001,
        29.391785
    ],
    [
        -89.373109,
        29.387175
    ],
    [
        -89.355528,
        29.381569
    ],
    [
        -89.340304,
        29.381412
    ],
    [
        -89.336589,
        29.378228
    ],
    [
        -89.347615,
        29.365
    ],
    [
        -89.350694,
        29.349544
    ],
    [
        -89.32317,
        29.343982
    ],
    [
        -89.303766,
        29.357455
    ],
    [
        -89.283028,
        29.356467
    ],
    [
        -89.272543,
        29.351195
    ],
    [
        -89.2653,
        29.345352
    ],
    [
        -89.257852,
        29.336872
    ],
    [
        -89.253545,
        29.322802
    ],
    [
        -89.24087,
        29.310081
    ],
    [
        -89.224192,
        29.313792
    ],
    [
        -89.223444,
        29.318066
    ],
    [
        -89.219734,
        29.324412
    ],
    [
        -89.204703,
        29.338674
    ],
    [
        -89.200389,
        29.344418
    ],
    [
        -89.200599,
        29.347672
    ],
    [
        -89.189354,
        29.345061
    ],
    [
        -89.179547,
        29.339608
    ],
    [
        -89.177351,
        29.33521
    ],
    [
        -89.178221,
        29.32697
    ],
    [
        -89.165015,
        29.303039
    ],
    [
        -89.157593,
        29.296691
    ],
    [
        -89.140275,
        29.291085
    ],
    [
        -89.134337,
        29.27934
    ],
    [
        -89.136979,
        29.275239
    ],
    [
        -89.129688,
        29.265632
    ],
    [
        -89.100106,
        29.25022
    ],
    [
        -89.096173,
        29.24293
    ],
    [
        -89.095544,
        29.238028
    ],
    [
        -89.098389,
        29.232963
    ],
    [
        -89.105833,
        29.231608
    ],
    [
        -89.106244,
        29.215912
    ],
    [
        -89.10065,
        29.206314
    ],
    [
        -89.090724,
        29.199992
    ],
    [
        -89.068265,
        29.204166
    ],
    [
        -89.067371,
        29.208636
    ],
    [
        -89.029103,
        29.220956
    ],
    [
        -89.02185,
        29.218162
    ],
    [
        -89.015192,
        29.211561
    ],
    [
        -89.000674,
        29.180091
    ],
    [
        -89.00529,
        29.164949
    ],
    [
        -89.013254,
        29.16328
    ],
    [
        -89.018344,
        29.165046
    ],
    [
        -89.024269,
        29.170043
    ],
    [
        -89.043919,
        29.162528
    ],
    [
        -89.047233,
        29.157833
    ],
    [
        -89.03873,
        29.14238
    ],
    [
        -89.032004,
        29.144747
    ],
    [
        -89.024149,
        29.137298
    ],
    [
        -89.023942,
        29.1337
    ],
    [
        -89.026031,
        29.130126
    ],
    [
        -89.051953,
        29.106554
    ],
    [
        -89.055475,
        29.084167
    ],
    [
        -89.062335,
        29.070234
    ],
    [
        -89.09126,
        29.066931
    ],
    [
        -89.098068,
        29.067984
    ],
    [
        -89.105009,
        29.073641
    ],
    [
        -89.121542,
        29.069074
    ],
    [
        -89.143453,
        29.047591
    ],
    [
        -89.156339,
        29.028782
    ],
    [
        -89.162,
        29.01586
    ],
    [
        -89.162326,
        29.011713
    ],
    [
        -89.164788,
        29.008703
    ],
    [
        -89.16985,
        29.008703
    ],
    [
        -89.175732,
        29.012123
    ],
    [
        -89.186061,
        29.017993
    ],
    [
        -89.18215,
        29.025486
    ],
    [
        -89.189893,
        29.032635
    ],
    [
        -89.197871,
        29.029701
    ],
    [
        -89.202563,
        29.031603
    ],
    [
        -89.211144,
        29.040813
    ],
    [
        -89.216101,
        29.056371
    ],
    [
        -89.215531,
        29.06141
    ],
    [
        -89.217201,
        29.067275
    ],
    [
        -89.225865,
        29.07866
    ],
    [
        -89.23631,
        29.084605
    ],
    [
        -89.254726,
        29.083261
    ],
    [
        -89.257283,
        29.081086
    ],
    [
        -89.256869,
        29.0738
    ],
    [
        -89.25364,
        29.064954
    ],
    [
        -89.259354,
        29.058358
    ],
    [
        -89.283215,
        29.053325
    ],
    [
        -89.29109,
        29.053097
    ],
    [
        -89.304888,
        29.046379
    ],
    [
        -89.315389,
        29.039081
    ],
    [
        -89.318102,
        29.035342
    ],
    [
        -89.315182,
        29.032662
    ],
    [
        -89.32485,
        29.013805
    ],
    [
        -89.335228,
        29.015003
    ],
    [
        -89.338249,
        29.012935
    ],
    [
        -89.383814,
        28.947434
    ],
    [
        -89.41148,
        28.925011
    ],
    [
        -89.419865,
        28.929709
    ],
    [
        -89.412388,
        28.957504
    ],
    [
        -89.408157,
        28.965341
    ],
    [
        -89.398104,
        28.977016
    ],
    [
        -89.382106,
        28.981525
    ],
    [
        -89.375049,
        28.985368
    ],
    [
        -89.334735,
        29.040335
    ],
    [
        -89.339828,
        29.052221
    ],
    [
        -89.354798,
        29.072543
    ],
    [
        -89.374522,
        29.084174
    ],
    [
        -89.405654,
        29.086936
    ],
    [
        -89.411154,
        29.105838
    ],
    [
        -89.409371,
        29.127855
    ],
    [
        -89.417718,
        29.13869
    ],
    [
        -89.428965,
        29.14451
    ],
    [
        -89.432932,
        29.149023
    ],
    [
        -89.447472,
        29.178576
    ],
    [
        -89.455829,
        29.190991
    ],
    [
        -89.47231,
        29.20755
    ],
    [
        -89.482844,
        29.215053
    ],
    [
        -89.5366,
        29.236212
    ],
    [
        -89.606651,
        29.252023
    ],
    [
        -89.671781,
        29.289028
    ],
    [
        -89.697258,
        29.296679
    ],
    [
        -89.726162,
        29.304026
    ],
    [
        -89.782149,
        29.311132
    ],
    [
        -89.819859,
        29.310241
    ],
    [
        -89.850305,
        29.311768
    ],
    [
        -89.855109,
        29.334997
    ],
    [
        -89.853699,
        29.34064
    ],
    [
        -89.847124,
        29.349186
    ],
    [
        -89.835,
        29.359043
    ],
    [
        -89.820824,
        29.377486
    ],
    [
        -89.816916,
        29.384385
    ],
    [
        -89.816155,
        29.393518
    ],
    [
        -89.816916,
        29.398845
    ],
    [
        -89.819199,
        29.404173
    ],
    [
        -89.822243,
        29.4095
    ],
    [
        -89.826049,
        29.415589
    ],
    [
        -89.835392,
        29.418538
    ],
    [
        -89.843553,
        29.421677
    ],
    [
        -89.845075,
        29.434615
    ],
    [
        -89.836773,
        29.45404
    ],
    [
        -89.833659,
        29.456686
    ],
    [
        -89.833659,
        29.459731
    ],
    [
        -89.832898,
        29.463536
    ],
    [
        -89.833659,
        29.467341
    ],
    [
        -89.83442,
        29.470386
    ],
    [
        -89.840509,
        29.47343
    ],
    [
        -89.849642,
        29.477996
    ],
    [
        -89.86258,
        29.476474
    ],
    [
        -89.876224,
        29.472168
    ],
    [
        -89.902179,
        29.460011
    ],
    [
        -89.918999,
        29.444254
    ],
    [
        -89.932598,
        29.429288
    ],
    [
        -89.95543,
        29.428527
    ],
    [
        -89.96195,
        29.432874
    ],
    [
        -89.964563,
        29.434615
    ],
    [
        -89.972934,
        29.443748
    ],
    [
        -89.991961,
        29.463536
    ],
    [
        -90.01251,
        29.462775
    ],
    [
        -90.018598,
        29.45212
    ],
    [
        -90.022404,
        29.444509
    ],
    [
        -90.029466,
        29.432015
    ],
    [
        -90.032298,
        29.427005
    ],
    [
        -90.031536,
        29.412545
    ],
    [
        -90.033295,
        29.393274
    ],
    [
        -90.029468,
        29.388136
    ],
    [
        -90.029614,
        29.386658
    ],
    [
        -90.029967,
        29.383087
    ],
    [
        -90.030761,
        29.375043
    ],
    [
        -90.030764,
        29.375008
    ],
    [
        -90.030855,
        29.374876
    ],
    [
        -90.033604,
        29.370851
    ],
    [
        -90.035415,
        29.368201
    ],
    [
        -90.036374,
        29.363661
    ],
    [
        -90.032842,
        29.348624
    ],
    [
        -90.031815,
        29.344251
    ],
    [
        -90.034275,
        29.322661
    ],
    [
        -90.028536,
        29.307083
    ],
    [
        -90.013778,
        29.30271
    ],
    [
        -90.009678,
        29.294785
    ],
    [
        -90.016288,
        29.284257
    ],
    [
        -90.019517,
        29.282213
    ],
    [
        -90.032088,
        29.280027
    ],
    [
        -90.043293,
        29.282487
    ],
    [
        -90.057094,
        29.281331
    ],
    [
        -90.061057,
        29.276748
    ],
    [
        -90.059691,
        29.272648
    ],
    [
        -90.060511,
        29.267729
    ],
    [
        -90.070622,
        29.262537
    ],
    [
        -90.086747,
        29.259257
    ],
    [
        -90.091119,
        29.261443
    ],
    [
        -90.097678,
        29.26199
    ],
    [
        -90.101231,
        29.259804
    ],
    [
        -90.096038,
        29.240673
    ],
    [
        -90.073355,
        29.227282
    ],
    [
        -90.073355,
        29.210611
    ],
    [
        -90.070622,
        29.208698
    ],
    [
        -90.06361,
        29.209474
    ],
    [
        -90.04291,
        29.211765
    ],
    [
        -90.019772,
        29.231903
    ],
    [
        -90.005718,
        29.240627
    ],
    [
        -89.969981,
        29.255753
    ],
    [
        -89.965667,
        29.259126
    ],
    [
        -89.959509,
        29.267677
    ],
    [
        -89.951175,
        29.266124
    ],
    [
        -89.949925,
        29.263154
    ],
    [
        -89.950756,
        29.260801
    ],
    [
        -89.95646,
        29.253744
    ],
    [
        -90.022029,
        29.216065
    ],
    [
        -90.058512,
        29.183687
    ],
    [
        -90.079276,
        29.16997
    ],
    [
        -90.088684,
        29.162574
    ],
    [
        -90.104162,
        29.150407
    ],
    [
        -90.174273,
        29.105301
    ],
    [
        -90.223587,
        29.085075
    ],
    [
        -90.231984,
        29.08773
    ],
    [
        -90.245283,
        29.085824
    ],
    [
        -90.343293,
        29.057062
    ],
    [
        -90.348768,
        29.057817
    ],
    [
        -90.349891,
        29.063681
    ],
    [
        -90.325514,
        29.075138
    ],
    [
        -90.304129,
        29.077332
    ],
    [
        -90.29293,
        29.078761
    ],
    [
        -90.282983,
        29.082326
    ],
    [
        -90.26629,
        29.089421
    ],
    [
        -90.258145,
        29.091627
    ],
    [
        -90.253141,
        29.093772
    ],
    [
        -90.249806,
        29.100919
    ],
    [
        -90.250044,
        29.108067
    ],
    [
        -90.243849,
        29.11045
    ],
    [
        -90.234235,
        29.110268
    ],
    [
        -90.234405,
        29.128824
    ],
    [
        -90.243435,
        29.136311
    ],
    [
        -90.248629,
        29.13837
    ],
    [
        -90.26901,
        29.139242
    ],
    [
        -90.280516,
        29.142521
    ],
    [
        -90.27832,
        29.150691
    ],
    [
        -90.297,
        29.171317
    ],
    [
        -90.302846,
        29.175098
    ],
    [
        -90.302948,
        29.187948
    ],
    [
        -90.300885,
        29.196171
    ],
    [
        -90.293183,
        29.199789
    ],
    [
        -90.2828,
        29.192545
    ],
    [
        -90.275851,
        29.193668
    ],
    [
        -90.271251,
        29.204639
    ],
    [
        -90.286621,
        29.225694
    ],
    [
        -90.300304,
        29.231241
    ],
    [
        -90.311663,
        29.237954
    ],
    [
        -90.311523,
        29.256374
    ],
    [
        -90.316093,
        29.264777
    ],
    [
        -90.332796,
        29.276956
    ],
    [
        -90.367166,
        29.274128
    ],
    [
        -90.368154,
        29.270736
    ],
    [
        -90.367012,
        29.264956
    ],
    [
        -90.372565,
        29.258923
    ],
    [
        -90.387924,
        29.252786
    ],
    [
        -90.383857,
        29.235606
    ],
    [
        -90.399465,
        29.201046
    ],
    [
        -90.408578,
        29.196421
    ],
    [
        -90.409416,
        29.196135
    ],
    [
        -90.432912,
        29.188132
    ],
    [
        -90.435907,
        29.188449
    ],
    [
        -90.443954,
        29.19583
    ],
    [
        -90.472489,
        29.192688
    ],
    [
        -90.473273,
        29.195224
    ],
    [
        -90.468773,
        29.198469
    ],
    [
        -90.467233,
        29.202549
    ],
    [
        -90.485786,
        29.209843
    ],
    [
        -90.494928,
        29.216713
    ],
    [
        -90.490987,
        29.220883
    ],
    [
        -90.46832,
        29.227532
    ],
    [
        -90.465764,
        29.242951
    ],
    [
        -90.462866,
        29.249809
    ],
    [
        -90.450674,
        29.263739
    ],
    [
        -90.452186,
        29.26625
    ],
    [
        -90.472779,
        29.272556
    ],
    [
        -90.495299,
        29.287277
    ],
    [
        -90.510555,
        29.290925
    ],
    [
        -90.517277,
        29.282719
    ],
    [
        -90.526216,
        29.276492
    ],
    [
        -90.552005,
        29.278512
    ],
    [
        -90.565436,
        29.285111
    ],
    [
        -90.582525,
        29.276037
    ],
    [
        -90.589724,
        29.248521
    ],
    [
        -90.58847,
        29.245863
    ],
    [
        -90.583924,
        29.242886
    ],
    [
        -90.576506,
        29.243986
    ],
    [
        -90.565378,
        29.242475
    ],
    [
        -90.544547,
        29.230683
    ],
    [
        -90.543245,
        29.227843
    ],
    [
        -90.544311,
        29.224292
    ],
    [
        -90.556501,
        29.219913
    ],
    [
        -90.55739,
        29.207881
    ],
    [
        -90.560889,
        29.204261
    ],
    [
        -90.575277,
        29.206827
    ],
    [
        -90.618413,
        29.20329
    ],
    [
        -90.624161,
        29.210366
    ],
    [
        -90.62742,
        29.211004
    ],
    [
        -90.633819,
        29.209128
    ],
    [
        -90.640223,
        29.196554
    ],
    [
        -90.645612,
        29.175867
    ],
    [
        -90.645169,
        29.172958
    ],
    [
        -90.640863,
        29.171261
    ],
    [
        -90.636973,
        29.164572
    ],
    [
        -90.647042,
        29.12858
    ],
    [
        -90.677724,
        29.118742
    ],
    [
        -90.691109,
        29.121722
    ],
    [
        -90.700893,
        29.12147
    ],
    [
        -90.718035,
        29.116611
    ],
    [
        -90.731239,
        29.122886
    ],
    [
        -90.764189,
        29.113374
    ],
    [
        -90.773458,
        29.100133
    ],
    [
        -90.799444,
        29.087377
    ],
    [
        -90.802053,
        29.083322
    ],
    [
        -90.803699,
        29.063709
    ],
    [
        -90.79872,
        29.054841
    ],
    [
        -90.781981,
        29.049431
    ],
    [
        -90.765188,
        29.049403
    ],
    [
        -90.750092,
        29.053247
    ],
    [
        -90.7253,
        29.066616
    ],
    [
        -90.709105,
        29.064305
    ],
    [
        -90.70535,
        29.062679
    ],
    [
        -90.702102,
        29.060275
    ],
    [
        -90.692205,
        29.059607
    ],
    [
        -90.683645,
        29.060944
    ],
    [
        -90.676958,
        29.063619
    ],
    [
        -90.665589,
        29.06723
    ],
    [
        -90.652348,
        29.069237
    ],
    [
        -90.644189,
        29.07151
    ],
    [
        -90.641247,
        29.072313
    ],
    [
        -90.63924,
        29.072848
    ],
    [
        -90.637623,
        29.072084
    ],
    [
        -90.636033,
        29.069792
    ],
    [
        -90.637495,
        29.066608
    ],
    [
        -90.648058,
        29.062649
    ],
    [
        -90.730899,
        29.042259
    ],
    [
        -90.755677,
        29.038997
    ],
    [
        -90.79768,
        29.039741
    ],
    [
        -90.811473,
        29.03658
    ],
    [
        -90.839345,
        29.039167
    ],
    [
        -90.842762,
        29.042947
    ],
    [
        -90.844849,
        29.048721
    ],
    [
        -90.841226,
        29.054266
    ],
    [
        -90.844593,
        29.06728
    ],
    [
        -90.862757,
        29.094863
    ],
    [
        -90.867766,
        29.095434
    ],
    [
        -90.877583,
        29.104891
    ],
    [
        -90.885351,
        29.117016
    ],
    [
        -90.898215,
        29.131342
    ],
    [
        -90.925797,
        29.153116
    ],
    [
        -90.941877,
        29.162373
    ],
    [
        -90.948091,
        29.174104
    ],
    [
        -90.961278,
        29.180817
    ],
    [
        -90.981458,
        29.171211
    ],
    [
        -91.000096,
        29.169481
    ],
    [
        -91.023955,
        29.174784
    ],
    [
        -91.031786,
        29.182188
    ],
    [
        -91.05863,
        29.181734
    ],
    [
        -91.094015,
        29.187711
    ],
    [
        -91.11476,
        29.207918
    ],
    [
        -91.129141,
        29.215863
    ],
    [
        -91.199647,
        29.221287
    ],
    [
        -91.219032,
        29.226051
    ],
    [
        -91.278792,
        29.247776
    ],
    [
        -91.302677,
        29.265958
    ],
    [
        -91.334885,
        29.298775
    ],
    [
        -91.33275,
        29.305816
    ],
    [
        -91.309314,
        29.305698
    ],
    [
        -91.299054,
        29.309017
    ],
    [
        -91.291821,
        29.311357
    ],
    [
        -91.29042,
        29.313062
    ],
    [
        -91.279742,
        29.326058
    ],
    [
        -91.276647,
        29.329825
    ],
    [
        -91.276187,
        29.332783
    ],
    [
        -91.274308,
        29.344878
    ],
    [
        -91.270582,
        29.355415
    ],
    [
        -91.270053,
        29.356912
    ],
    [
        -91.26994,
        29.357231
    ],
    [
        -91.266589,
        29.361218
    ],
    [
        -91.265479,
        29.361767
    ],
    [
        -91.251546,
        29.368659
    ],
    [
        -91.251232,
        29.368814
    ],
    [
        -91.249517,
        29.369662
    ],
    [
        -91.249109,
        29.369864
    ],
    [
        -91.245558,
        29.37058
    ],
    [
        -91.238515,
        29.371999
    ],
    [
        -91.235348,
        29.370638
    ],
    [
        -91.222377,
        29.360703
    ],
    [
        -91.207299,
        29.360703
    ],
    [
        -91.197465,
        29.369882
    ],
    [
        -91.200087,
        29.38955
    ],
    [
        -91.218463,
        29.407235
    ],
    [
        -91.215976,
        29.412505
    ],
    [
        -91.214284,
        29.416089
    ],
    [
        -91.211999,
        29.420931
    ],
    [
        -91.2151,
        29.427542
    ],
    [
        -91.217448,
        29.432549
    ],
    [
        -91.218067,
        29.433193
    ],
    [
        -91.219242,
        29.434418
    ],
    [
        -91.221166,
        29.436421
    ],
    [
        -91.24164,
        29.441021
    ],
    [
        -91.251319,
        29.444483
    ],
    [
        -91.258226,
        29.446954
    ],
    [
        -91.259537,
        29.458001
    ],
    [
        -91.259844,
        29.460582
    ],
    [
        -91.259988,
        29.461803
    ],
    [
        -91.260024,
        29.462102
    ],
    [
        -91.261588,
        29.464954
    ],
    [
        -91.265649,
        29.472362
    ],
    [
        -91.2813,
        29.481547
    ],
    [
        -91.294325,
        29.476894
    ],
    [
        -91.335742,
        29.485886
    ],
    [
        -91.343567,
        29.492593
    ],
    [
        -91.34588,
        29.504538
    ],
    [
        -91.356625,
        29.515191
    ],
    [
        -91.402214,
        29.511914
    ],
    [
        -91.420449,
        29.515745
    ],
    [
        -91.42713,
        29.520215
    ],
    [
        -91.432337,
        29.53283
    ],
    [
        -91.439941,
        29.540434
    ],
    [
        -91.447345,
        29.544749
    ],
    [
        -91.468748,
        29.544299
    ],
    [
        -91.517274,
        29.52974
    ],
    [
        -91.531021,
        29.531543
    ],
    [
        -91.531471,
        29.535374
    ],
    [
        -91.52584,
        29.545946
    ],
    [
        -91.525523,
        29.551904
    ],
    [
        -91.529217,
        29.558598
    ],
    [
        -91.537445,
        29.565888
    ],
    [
        -91.541974,
        29.594353
    ],
    [
        -91.553537,
        29.632766
    ],
    [
        -91.560908,
        29.63735
    ],
    [
        -91.570589,
        29.638312
    ],
    [
        -91.581843,
        29.637165
    ],
    [
        -91.600179,
        29.631156
    ],
    [
        -91.625114,
        29.626195
    ],
    [
        -91.643832,
        29.630625
    ],
    [
        -91.648941,
        29.633635
    ],
    [
        -91.648657,
        29.636713
    ],
    [
        -91.646478,
        29.639427
    ],
    [
        -91.643198,
        29.640274
    ],
    [
        -91.637344,
        29.647217
    ],
    [
        -91.627286,
        29.662132
    ],
    [
        -91.625114,
        29.671679
    ],
    [
        -91.626826,
        29.684753
    ],
    [
        -91.623829,
        29.69924
    ],
    [
        -91.618479,
        29.710816
    ],
    [
        -91.61809,
        29.720694
    ],
    [
        -91.621512,
        29.735429
    ],
    [
        -91.632829,
        29.742576
    ],
    [
        -91.667128,
        29.745822
    ],
    [
        -91.710935,
        29.738993
    ],
    [
        -91.737253,
        29.74937
    ],
    [
        -91.752259,
        29.748264
    ],
    [
        -91.783674,
        29.740689
    ],
    [
        -91.830499,
        29.718918
    ],
    [
        -91.845962,
        29.708763
    ],
    [
        -91.85864,
        29.703121
    ],
    [
        -91.866516,
        29.70715
    ],
    [
        -91.88075,
        29.710839
    ],
    [
        -91.880999,
        29.713338
    ],
    [
        -91.878331,
        29.716087
    ],
    [
        -91.875637,
        29.722316
    ],
    [
        -91.87557,
        29.722471
    ],
    [
        -91.87557,
        29.728043
    ],
    [
        -91.878355,
        29.735007
    ],
    [
        -91.879748,
        29.742668
    ],
    [
        -91.878355,
        29.751025
    ],
    [
        -91.874761,
        29.760083
    ],
    [
        -91.859151,
        29.783331
    ],
    [
        -91.854677,
        29.807436
    ],
    [
        -91.869998,
        29.828328
    ],
    [
        -91.889118,
        29.836023
    ],
    [
        -91.90689,
        29.83094
    ],
    [
        -91.915989,
        29.815654
    ],
    [
        -91.919143,
        29.815379
    ],
    [
        -91.940723,
        29.817008
    ],
    [
        -91.96123,
        29.810221
    ],
    [
        -91.970443,
        29.80431
    ],
    [
        -91.978381,
        29.799217
    ],
    [
        -91.983871,
        29.794516
    ],
    [
        -92.035666,
        29.781662
    ],
    [
        -92.056398,
        29.772313
    ],
    [
        -92.107486,
        29.744429
    ],
    [
        -92.144431,
        29.716418
    ],
    [
        -92.149349,
        29.697052
    ],
    [
        -92.134347,
        29.669516
    ],
    [
        -92.132804,
        29.660462
    ],
    [
        -92.111787,
        29.62177
    ],
    [
        -92.093419,
        29.618694
    ],
    [
        -92.06564,
        29.619967
    ],
    [
        -92.04767,
        29.624527
    ],
    [
        -92.02532,
        29.625647
    ],
    [
        -92.01627,
        29.618741
    ],
    [
        -92.000371,
        29.613143
    ],
    [
        -92.000003,
        29.613013
    ],
    [
        -91.965031,
        29.608019
    ],
    [
        -91.939903,
        29.610291
    ],
    [
        -91.935024,
        29.612239
    ],
    [
        -91.929567,
        29.61884
    ],
    [
        -91.922825,
        29.633173
    ],
    [
        -91.898996,
        29.63701
    ],
    [
        -91.896763,
        29.634618
    ],
    [
        -91.882318,
        29.62977
    ],
    [
        -91.866113,
        29.631583
    ],
    [
        -91.863018,
        29.633739
    ],
    [
        -91.841294,
        29.62962
    ],
    [
        -91.838981,
        29.624475
    ],
    [
        -91.840921,
        29.619913
    ],
    [
        -91.838297,
        29.616041
    ],
    [
        -91.821693,
        29.606049
    ],
    [
        -91.803831,
        29.599562
    ],
    [
        -91.784976,
        29.595204
    ],
    [
        -91.7785,
        29.58922
    ],
    [
        -91.774805,
        29.582113
    ],
    [
        -91.774686,
        29.576387
    ],
    [
        -91.74632,
        29.574337
    ],
    [
        -91.719102,
        29.565568
    ],
    [
        -91.715642,
        29.565844
    ],
    [
        -91.712002,
        29.56474
    ],
    [
        -91.709205,
        29.561012
    ],
    [
        -91.711654,
        29.55427
    ],
    [
        -91.733956,
        29.539504
    ],
    [
        -91.747058,
        29.535144
    ],
    [
        -91.765448,
        29.520844
    ],
    [
        -91.771927,
        29.504871
    ],
    [
        -91.772529,
        29.499016
    ],
    [
        -91.770069,
        29.493812
    ],
    [
        -91.770516,
        29.488953
    ],
    [
        -91.782387,
        29.482882
    ],
    [
        -91.789119,
        29.482081
    ],
    [
        -91.800121,
        29.486828
    ],
    [
        -91.803448,
        29.486851
    ],
    [
        -91.814609,
        29.482061
    ],
    [
        -91.821576,
        29.473925
    ],
    [
        -91.8385,
        29.478874
    ],
    [
        -91.848665,
        29.484144
    ],
    [
        -91.852598,
        29.494984
    ],
    [
        -91.862324,
        29.502393
    ],
    [
        -91.878746,
        29.502937
    ],
    [
        -91.886815,
        29.505577
    ],
    [
        -91.906175,
        29.518052
    ],
    [
        -91.915322,
        29.518513
    ],
    [
        -91.947007,
        29.53316
    ],
    [
        -91.969312,
        29.536893
    ],
    [
        -91.985726,
        29.547708
    ],
    [
        -92.02681,
        29.566805
    ],
    [
        -92.035462,
        29.57864
    ],
    [
        -92.041168,
        29.581648
    ],
    [
        -92.046316,
        29.584362
    ],
    [
        -92.066533,
        29.583842
    ],
    [
        -92.105923,
        29.586335
    ],
    [
        -92.158624,
        29.581616
    ],
    [
        -92.21259,
        29.562479
    ],
    [
        -92.25186,
        29.539354
    ],
    [
        -92.280392,
        29.533434
    ],
    [
        -92.309357,
        29.533026
    ],
    [
        -92.347236,
        29.539394
    ],
    [
        -92.402165,
        29.551269
    ],
    [
        -92.473585,
        29.561081
    ],
    [
        -92.558602,
        29.569935
    ],
    [
        -92.61627,
        29.578729
    ],
    [
        -92.617725,
        29.579092
    ],
    [
        -92.653651,
        29.588065
    ],
    [
        -92.744126,
        29.617608
    ],
    [
        -92.871232,
        29.670028
    ],
    [
        -92.940455,
        29.701033
    ],
    [
        -92.974305,
        29.71398
    ],
    [
        -93.065354,
        29.740966
    ],
    [
        -93.088182,
        29.749125
    ],
    [
        -93.17693,
        29.770487
    ],
    [
        -93.226934,
        29.777519
    ],
    [
        -93.267456,
        29.778113
    ],
    [
        -93.295573,
        29.775071
    ],
    [
        -93.342104,
        29.763402
    ],
    [
        -93.344993,
        29.759618
    ],
    [
        -93.347331,
        29.759046
    ],
    [
        -93.372029,
        29.763049
    ],
    [
        -93.438973,
        29.768949
    ],
    [
        -93.475252,
        29.769242
    ],
    [
        -93.538462,
        29.763299
    ],
    [
        -93.590786,
        29.755649
    ],
    [
        -93.635304,
        29.752806
    ],
    [
        -93.68364,
        29.747153
    ],
    [
        -93.741948,
        29.736343
    ],
    [
        -93.766048,
        29.7295
    ],
    [
        -93.79925,
        29.71526
    ],
    [
        -93.818995,
        29.704076
    ],
    [
        -93.837971,
        29.690619
    ],
    [
        -93.892246,
        29.765241
    ],
    [
        -93.89847,
        29.771577
    ],
    [
        -93.890679,
        29.843159
    ],
    [
        -93.840799,
        29.914423
    ],
    [
        -93.789431,
        29.987812
    ],
    [
        -93.75663,
        30.014163
    ],
    [
        -93.752038,
        30.016403
    ],
    [
        -93.722481,
        30.050898
    ],
    [
        -93.721589,
        30.051939
    ],
    [
        -93.712101,
        30.067346
    ],
    [
        -93.695684,
        30.135729
    ],
    [
        -93.695252,
        30.1476
    ],
    [
        -93.712008,
        30.194304
    ],
    [
        -93.716223,
        30.244318
    ],
    [
        -93.720575,
        30.295961
    ],
    [
        -93.723586,
        30.294951
    ],
    [
        -93.735896,
        30.29944
    ],
    [
        -93.765822,
        30.333318
    ],
    [
        -93.757654,
        30.390423
    ],
    [
        -93.751437,
        30.396288
    ],
    [
        -93.741701,
        30.403007
    ],
    [
        -93.702665,
        30.429947
    ],
    [
        -93.698302,
        30.438657
    ],
    [
        -93.697828,
        30.443838
    ],
    [
        -93.710117,
        30.5064
    ],
    [
        -93.740045,
        30.538765
    ],
    [
        -93.727844,
        30.57407
    ],
    [
        -93.578395,
        30.802047
    ],
    [
        -93.563292,
        30.818503
    ],
    [
        -93.558672,
        30.868829
    ],
    [
        -93.558617,
        30.869424
    ],
    [
        -93.55497,
        30.876685
    ],
    [
        -93.554576,
        30.87747
    ],
    [
        -93.530936,
        30.924534
    ],
    [
        -93.540354,
        31.008135
    ],
    [
        -93.527644,
        31.074509
    ],
    [
        -93.531744,
        31.180817
    ],
    [
        -93.535097,
        31.185614
    ],
    [
        -93.548931,
        31.186601
    ],
    [
        -93.55254,
        31.185605
    ],
    [
        -93.552649,
        31.185575
    ],
    [
        -93.579215,
        31.167422
    ],
    [
        -93.588503,
        31.165581
    ],
    [
        -93.598828,
        31.174679
    ],
    [
        -93.599705,
        31.176456
    ],
    [
        -93.602315,
        31.181742
    ],
    [
        -93.607243,
        31.204806
    ],
    [
        -93.608158,
        31.227835
    ],
    [
        -93.614402,
        31.260869
    ],
    [
        -93.620829,
        31.271299
    ],
    [
        -93.644407,
        31.27711
    ],
    [
        -93.671676,
        31.299586
    ],
    [
        -93.640805,
        31.372546
    ],
    [
        -93.670182,
        31.387184
    ],
    [
        -93.695866,
        31.409392
    ],
    [
        -93.729613,
        31.487922
    ],
    [
        -93.798087,
        31.534044
    ],
    [
        -93.818582,
        31.554826
    ],
    [
        -93.834923,
        31.58621
    ],
    [
        -93.834924,
        31.586211
    ],
    [
        -93.82629,
        31.614903
    ],
    [
        -93.817059,
        31.671694
    ],
    [
        -93.812477,
        31.715246
    ],
    [
        -93.840029,
        31.800596
    ],
    [
        -93.878225,
        31.844276
    ],
    [
        -93.889193,
        31.856819
    ],
    [
        -93.92029,
        31.888651
    ],
    [
        -93.932135,
        31.893672
    ],
    [
        -93.975377,
        31.92366
    ],
    [
        -94.01563,
        31.979856
    ],
    [
        -94.04272,
        31.999265
    ],
    [
        -94.0427,
        32.056012
    ],
    [
        -94.042337,
        32.119914
    ],
    [
        -94.042681,
        32.137956
    ],
    [
        -94.042591,
        32.158097
    ],
    [
        -94.042539,
        32.166826
    ],
    [
        -94.042566,
        32.166894
    ],
    [
        -94.042621,
        32.196005
    ],
    [
        -94.042662,
        32.218146
    ],
    [
        -94.042732,
        32.26962
    ],
    [
        -94.042733,
        32.269696
    ],
    [
        -94.042739,
        32.363559
    ],
    [
        -94.042763,
        32.373332
    ],
    [
        -94.042901,
        32.392283
    ],
    [
        -94.042923,
        32.399918
    ],
    [
        -94.042899,
        32.400659
    ],
    [
        -94.042986,
        32.435507
    ],
    [
        -94.042908,
        32.439891
    ],
    [
        -94.042903,
        32.470386
    ],
    [
        -94.042875,
        32.471348
    ],
    [
        -94.042902,
        32.472906
    ],
    [
        -94.042995,
        32.478004
    ],
    [
        -94.042955,
        32.480261
    ],
    [
        -94.043072,
        32.4843
    ],
    [
        -94.043089,
        32.486561
    ],
    [
        -94.042911,
        32.492852
    ],
    [
        -94.042885,
        32.505145
    ],
    [
        -94.043081,
        32.513613
    ],
    [
        -94.043142,
        32.559502
    ],
    [
        -94.043083,
        32.564261
    ],
    [
        -94.042919,
        32.610142
    ],
    [
        -94.042929,
        32.61826
    ],
    [
        -94.042926,
        32.622015
    ],
    [
        -94.042824,
        32.640305
    ],
    [
        -94.04278,
        32.643466
    ],
    [
        -94.042913,
        32.655127
    ],
    [
        -94.043147,
        32.69303
    ]
]

================================================
FILE: tests/coords_complex.json
================================================
[[3369.0, 1994.25], [3368.25, 1995.0], [3368.0714285714284, 1996.0], [3368.027027027027, 1997.0], [3368.0142857142855, 1998.0], [3368.0108695652175, 1999.0], [3368.0066666666667, 2000.0], [3368.0041152263375, 2001.0], [3368.0, 2001.090909090909], [3367.090909090909, 2002.0], [3367.0158730158732, 2003.0], [3367.006711409396, 2004.0], [3367.0042016806724, 2005.0], [3367.0, 2005.111111111111], [3366.1111111111113, 2006.0], [3366.0204081632655, 2007.0], [3366.010101010101, 2008.0], [3366.004739336493, 2009.0], [3366.0, 2009.076923076923], [3365.076923076923, 2010.0], [3365.0073529411766, 2011.0], [3365.0, 2012.0], [3364.021739130435, 2013.0], [3364.0057142857145, 2014.0], [3364.0, 2014.1666666666667], [3363.1666666666665, 2015.0], [3363.0163934426228, 2016.0], [3363.005347593583, 2017.0], [3363.0, 2017.111111111111], [3362.1111111111113, 2018.0], [3362.0054945054944, 2019.0], [3362.0, 2019.03125], [3361.03125, 2020.0], [3361.0048543689322, 2021.0], [3361.0, 2021.0238095238096], [3360.0238095238096, 2022.0], [3360.0045662100456, 2023.0], [3360.0, 2023.0188679245282], [3359.0188679245284, 2024.0], [3359.004424778761, 2025.0], [3359.0, 2025.025], [3358.025, 2026.0], [3358.0, 2026.111111111111], [3357.1111111111113, 2027.0], [3357.0, 2027.5], [3356.5, 2028.0], [3356.007633587786, 2029.0], [3356.0, 2029.0192307692307], [3355.019230769231, 2030.0], [3355.0, 2030.1666666666667], [3354.1666666666665, 2031.0], [3354.00625, 2032.0], [3354.0, 2032.010752688172], [3353.010752688172, 2033.0], [3353.0, 2033.0075187969924], [3352.0075187969924, 2034.0], [3352.0, 2034.0071428571428], [3351.0071428571428, 2035.0], [3351.0, 2035.0069444444443], [3350.0069444444443, 2036.0], [3350.0, 2036.009090909091], [3349.009090909091, 2037.0], [3349.0, 2037.0058479532163], [3348.0, 2037.111111111111], [3347.1111111111113, 2038.0], [3347.0, 2038.012048192771], [3346.012048192771, 2039.0], [3346.0, 2039.0061728395062], [3345.0, 2039.3333333333333], [3344.3333333333335, 2040.0], [3344.0, 2040.0089285714287], [3343.0, 2040.0588235294117], [3342.0588235294117, 2041.0], [3342.0, 2041.0052083333333], [3341.0, 2041.0384615384614], [3340.0384615384614, 2042.0], [3340.0, 2042.0052631578947], [3339.0, 2042.0106382978724], [3338.0, 2042.0185185185185], [3337.0, 2042.1], [3336.1, 2043.0], [3336.0, 2043.0046728971963], [3335.0, 2043.0093457943926], [3334.0, 2043.02], [3333.0, 2043.0188679245282], [3332.0, 2043.02], [3331.0, 2043.0294117647059], [3330.0, 2043.111111111111], [3329.0, 2043.3333333333333], [3328.0, 2043.142857142857], [3327.0, 2043.0384615384614], [3326.0, 2043.017857142857], [3325.0, 2043.0119047619048], [3324.0, 2043.0084745762713], [3323.0, 2043.0076335877864], [3322.0, 2043.005], [3321.5, 2043.0], [3321.0, 2042.5], [3320.0, 2042.0212765957447], [3319.0, 2042.0081967213114], [3318.0, 2042.0044843049327], [3317.6666666666665, 2042.0], [3317.0, 2041.3333333333333], [3316.0, 2041.047619047619], [3315.0, 2041.0105263157895], [3314.0, 2041.0], [3313.0, 2040.017543859649], [3312.0, 2040.0050761421319], [3311.923076923077, 2040.0], [3311.0, 2039.076923076923], [3310.0, 2039.008547008547], [3309.0, 2039.0041841004183], [3308.9565217391305, 2039.0], [3308.0, 2038.0434782608695], [3307.0, 2038.004854368932], [3306.983333333333, 2038.0], [3306.0, 2037.0166666666667], [3305.0, 2037.0], [3304.0, 2036.0135135135135], [3303.0, 2036.0041666666666], [3302.9803921568628, 2036.0], [3302.0, 2035.0196078431372], [3301.0, 2035.0], [3300.0, 2034.00625], [3299.980769230769, 2034.0], [3299.0, 2033.0192307692307], [3298.75, 2033.0], [3298.0, 2032.25], [3297.0, 2032.0066666666667], [3296.9565217391305, 2032.0], [3296.0, 2031.0434782608695], [3295.5, 2031.0], [3295.0, 2030.5], [3294.0, 2030.0], [3293.0, 2029.0071942446043], [3292.9868421052633, 2029.0], [3292.0, 2028.0131578947369], [3291.9285714285716, 2028.0], [3291.0, 2027.0714285714287], [3290.5, 2027.0], [3290.0, 2026.5], [3289.8, 2026.0], [3289.0, 2025.2], [3288.8571428571427, 2025.0], [3288.0, 2024.142857142857], [3287.75, 2024.0], [3287.0, 2023.25], [3286.0, 2023.0], [3285.75, 2022.0], [3285.0, 2021.25], [3284.9565217391305, 2021.0], [3284.0, 2020.0434782608695], [3283.972972972973, 2020.0], [3283.0, 2019.027027027027], [3282.9777777777776, 2019.0], [3282.0, 2018.0222222222221], [3281.9930555555557, 2018.0], [3281.8, 2017.0], [3281.0, 2016.2], [3280.9821428571427, 2016.0], [3280.0, 2015.017857142857], [3279.9908256880735, 2015.0], [3279.0, 2014.0], [3278.9861111111113, 2013.0], [3278.5, 2012.0], [3278.0, 2011.5], [3277.9777777777776, 2011.0], [3277.0, 2010.0222222222221], [3276.9936305732485, 2010.0], [3276.9615384615386, 2009.0], [3276.0, 2008.0384615384614], [3275.9953917050693, 2008.0], [3275.9875, 2007.0], [3275.0, 2006.0], [3274.9836065573772, 2005.0], [3274.8, 2004.0], [3274.0, 2003.2], [3273.9950980392155, 2003.0], [3273.987012987013, 2002.0], [3273.0, 2001.0], [3272.993288590604, 2000.0], [3272.9814814814813, 1999.0], [3272.9166666666665, 1998.0], [3272.0, 1997.0833333333333], [3271.995575221239, 1997.0], [3271.99, 1996.0], [3271.9375, 1995.0], [3271.5, 1994.0], [3271.0, 1993.5], [3270.9954954954956, 1993.0], [3270.9910714285716, 1992.0], [3270.96, 1991.0], [3270.8571428571427, 1990.0], [3270.0, 1989.0], [3269.9945652173915, 1988.0], [3269.9850746268658, 1987.0], [3269.9523809523807, 1986.0], [3269.875, 1985.0], [3269.0, 1984.125], [3268.9958847736625, 1984.0], [3268.9942857142855, 1983.0], [3268.9811320754716, 1982.0], [3268.9583333333335, 1981.0], [3268.875, 1980.0], [3268.0, 1979.125], [3267.9958847736625, 1979.0], [3267.991150442478, 1978.0], [3267.9756097560976, 1977.0], [3267.923076923077, 1976.0], [3267.0, 1975.076923076923], [3266.9958333333334, 1975.0], [3266.9928571428572, 1974.0], [3266.962962962963, 1973.0], [3266.75, 1972.0], [3266.0, 1971.25], [3265.994764397906, 1971.0], [3265.978723404255, 1970.0], [3265.0, 1969.0212765957447], [3264.9958847736625, 1969.0], [3264.9894736842107, 1968.0], [3264.0, 1967.0], [3263.974358974359, 1966.0], [3263.0, 1965.025641025641], [3262.9942528735633, 1965.0], [3262.875, 1964.0], [3262.0, 1963.125], [3261.9473684210525, 1963.0], [3261.0, 1962.0526315789473], [3260.989898989899, 1962.0], [3260.0, 1961.010101010101], [3259.964285714286, 1961.0], [3259.0, 1960.0357142857142], [3258.8, 1960.0], [3258.0, 1959.2], [3257.0, 1959.0058479532163], [3256.962962962963, 1959.0], [3256.0, 1958.037037037037], [3255.0, 1958.0045454545455], [3254.9821428571427, 1958.0], [3254.0, 1957.017857142857], [3253.0, 1957.0051282051281], [3252.8, 1957.0], [3252.0, 1956.2], [3251.0, 1956.0113636363637], [3250.0, 1956.0045454545455], [3249.8, 1956.0], [3249.0, 1955.2], [3248.0, 1955.025], [3247.0, 1955.0073529411766], [3246.0, 1955.0045454545455], [3245.0, 1955.0], [3244.0, 1954.1], [3243.0, 1954.0181818181818], [3242.0, 1954.0081967213114], [3241.0, 1954.0081967213114], [3240.0, 1954.0060975609756], [3239.0, 1954.0046296296296], [3238.0, 1954.0042194092828], [3237.0, 1954.0], [3236.0, 1954.0], [3235.0, 1953.5], [3234.0, 1953.2], [3233.0, 1953.0714285714287], [3232.0, 1953.111111111111], [3231.0, 1953.25], [3230.0, 1953.2], [3229.0, 1953.1], [3228.0, 1953.111111111111], [3227.0, 1953.3333333333333], [3226.0, 1953.5], [3225.0, 1953.25], [3224.0, 1953.5], [3223.5, 1954.0], [3223.0, 1954.003984063745], [3222.0, 1954.004048582996], [3221.0, 1954.004608294931], [3220.0, 1954.0051546391753], [3219.0, 1954.0064516129032], [3218.0, 1954.0106382978724], [3217.0, 1954.0188679245282], [3216.0, 1954.025641025641], [3215.0, 1954.0357142857142], [3214.0, 1954.5], [3213.5, 1955.0], [3213.0, 1955.0042016806722], [3212.0, 1955.0056818181818], [3211.0, 1955.009523809524], [3210.0, 1955.0263157894738], [3209.0, 1955.5], [3208.5, 1956.0], [3208.0, 1956.004424778761], [3207.0, 1956.0068965517241], [3206.0, 1956.0526315789473], [3205.0526315789475, 1957.0], [3205.0, 1957.004132231405], [3204.0, 1957.0076923076922], [3203.0, 1957.0434782608695], [3202.0434782608695, 1958.0], [3202.0, 1958.004854368932], [3201.0, 1958.027027027027], [3200.0, 1959.0], [3199.0, 1959.027027027027], [3198.027027027027, 1960.0], [3198.0, 1960.0048076923076], [3197.0, 1960.0526315789473], [3196.0526315789475, 1961.0], [3196.0, 1961.0106382978724], [3195.0106382978724, 1962.0], [3195.0, 1962.0060240963855], [3194.0, 1962.3333333333333], [3193.3333333333335, 1963.0], [3193.0, 1963.0285714285715], [3192.0285714285715, 1964.0], [3192.0, 1964.027027027027], [3191.027027027027, 1965.0], [3191.0, 1965.014705882353], [3190.014705882353, 1966.0], [3190.0, 1966.0133333333333], [3189.0133333333333, 1967.0], [3189.0, 1967.0153846153846], [3188.0153846153844, 1968.0], [3188.0, 1968.0123456790122], [3187.0123456790125, 1969.0], [3187.0, 1969.0204081632653], [3186.0204081632655, 1970.0], [3186.0, 1970.0555555555557], [3185.0555555555557, 1971.0], [3185.0, 1971.0212765957447], [3184.021276595745, 1972.0], [3184.0, 1972.3333333333333], [3183.3333333333335, 1973.0], [3183.0, 1973.125], [3182.125, 1974.0], [3182.0, 1974.047619047619], [3181.0476190476193, 1975.0], [3181.0, 1975.1], [3180.1, 1976.0], [3180.0, 1976.111111111111], [3179.1111111111113, 1977.0], [3179.0, 1977.0151515151515], [3178.0151515151515, 1978.0], [3178.0, 1978.0140845070423], [3177.0140845070423, 1979.0], [3177.0, 1979.0043859649122], [3176.0, 1979.0166666666667], [3175.016666666667, 1980.0], [3175.0, 1980.0063694267517], [3174.0, 1980.25], [3173.25, 1981.0], [3173.0, 1981.0058823529412], [3172.0, 1981.0294117647059], [3171.029411764706, 1982.0], [3171.0, 1982.0041841004183], [3170.0, 1982.0060240963855], [3169.0, 1982.0078125], [3168.0, 1982.0181818181818], [3167.0, 1982.1666666666667], [3166.1666666666665, 1983.0], [3166.0, 1983.0039215686274], [3165.0, 1983.0], [3164.0, 1983.0], [3163.0, 1983.004048582996], [3162.5, 1983.0], [3162.0, 1982.5], [3161.0, 1982.04], [3160.0, 1982.0166666666667], [3159.0, 1982.0133333333333], [3158.0, 1982.0105263157895], [3157.0, 1982.0055555555555], [3156.6666666666665, 1982.0], [3156.0, 1981.3333333333333], [3155.0, 1981.0416666666667], [3154.0, 1981.0112359550562], [3153.0, 1981.004347826087], [3152.9714285714285, 1981.0], [3152.0, 1980.0285714285715], [3151.0, 1980.0071942446043], [3150.0, 1980.0041841004183], [3149.95, 1980.0], [3149.0, 1979.05], [3148.0, 1979.0051282051281], [3147.875, 1979.0], [3147.0, 1978.125], [3146.0, 1978.0172413793102], [3145.0, 1978.0], [3144.0, 1977.0196078431372], [3143.0, 1977.004975124378], [3142.909090909091, 1977.0], [3142.0, 1976.090909090909], [3141.0, 1976.0075757575758], [3140.8, 1976.0], [3140.0, 1975.2], [3139.0, 1975.0135135135135], [3138.0, 1975.0042372881355], [3137.98, 1975.0], [3137.0, 1974.02], [3136.0, 1974.005988023952], [3135.0, 1974.0], [3134.0, 1973.0357142857142], [3133.0, 1973.0060975609756], [3132.0, 1973.004016064257], [3131.8333333333335, 1973.0], [3131.0, 1972.1666666666667], [3130.0, 1972.0185185185185], [3129.0, 1972.0077519379845], [3128.0, 1972.0052083333333], [3127.0, 1972.004], [3126.5, 1972.0], [3126.0, 1971.5], [3125.0, 1971.1], [3124.0, 1971.090909090909], [3123.0, 1971.0555555555557], [3122.0, 1971.0333333333333], [3121.0, 1971.0357142857142], [3120.0, 1971.076923076923], [3119.0, 1971.125], [3118.0, 1971.142857142857], [3117.0, 1971.5], [3116.5, 1972.0], [3116.0, 1972.0042194092828], [3115.0, 1972.0067567567567], [3114.0, 1972.0108695652175], [3113.0, 1972.030303030303], [3112.0, 1972.5], [3111.5, 1973.0], [3111.0, 1973.0051813471503], [3110.0, 1973.0108695652175], [3109.0, 1973.03125], [3108.03125, 1974.0], [3108.0, 1974.004608294931], [3107.0, 1974.0169491525423], [3106.0, 1974.5], [3105.5, 1975.0], [3105.0, 1975.0086956521739], [3104.0, 1975.125], [3103.125, 1976.0], [3103.0, 1976.0088495575221], [3102.0, 1976.1666666666667], [3101.1666666666665, 1977.0], [3101.0, 1977.0151515151515], [3100.0151515151515, 1978.0], [3100.0, 1978.0075757575758], [3099.0, 1978.2], [3098.2, 1979.0], [3098.0, 1979.032258064516], [3097.032258064516, 1980.0], [3097.0, 1980.0357142857142], [3096.035714285714, 1981.0], [3096.0, 1981.027027027027], [3095.027027027027, 1982.0], [3095.0, 1982.0588235294117], [3094.0588235294117, 1983.0], [3094.0, 1984.0], [3093.0, 1985.0], [3092.025641025641, 1986.0], [3092.0066666666667, 1987.0], [3092.0, 1987.3333333333333], [3091.3333333333335, 1988.0], [3091.0172413793102, 1989.0], [3091.005882352941, 1990.0], [3091.0039215686274, 1991.0], [3091.0, 1991.2], [3090.2, 1992.0], [3090.125, 1993.0], [3090.125, 1994.0], [3090.090909090909, 1995.0], [3090.1666666666665, 1996.0], [3091.0, 1997.0], [3091.0039215686274, 1998.0], [3091.0046511627907, 1999.0], [3091.0080645161293, 2000.0], [3091.0434782608695, 2001.0], [3091.5, 2002.0], [3092.0, 2002.5], [3092.004761904762, 2003.0], [3092.008547008547, 2004.0], [3092.05, 2005.0], [3093.0, 2005.95], [3093.0041841004186, 2006.0], [3093.0065789473683, 2007.0], [3093.0125, 2008.0], [3093.1666666666665, 2009.0], [3094.0, 2009.8333333333333], [3094.0063694267515, 2010.0], [3094.0135135135133, 2011.0], [3094.021739130435, 2012.0], [3094.1, 2013.0], [3095.0, 2013.9], [3095.0043103448274, 2014.0], [3095.0080645161293, 2015.0], [3095.0185185185187, 2016.0], [3095.030303030303, 2017.0], [3095.035714285714, 2018.0], [3095.1428571428573, 2019.0], [3095.3333333333335, 2020.0], [3095.0714285714284, 2021.0], [3095.016129032258, 2022.0], [3095.0081967213114, 2023.0], [3095.0071428571428, 2024.0], [3095.005128205128, 2025.0], [3095.0, 2025.0714285714287], [3094.0714285714284, 2026.0], [3094.0067567567567, 2027.0], [3094.004385964912, 2028.0], [3094.0, 2028.016393442623], [3093.0163934426228, 2029.0], [3093.0, 2029.0285714285715], [3092.0285714285715, 2030.0], [3092.0, 2030.3333333333333], [3091.3333333333335, 2031.0], [3091.0060240963853, 2032.0], [3091.0, 2032.0055555555555], [3090.0, 2032.090909090909], [3089.090909090909, 2033.0], [3089.0, 2033.0277777777778], [3088.027777777778, 2034.0], [3088.0, 2034.0042735042734], [3087.0, 2034.009523809524], [3086.0, 2034.1666666666667], [3085.1666666666665, 2035.0], [3085.0, 2035.0084033613446], [3084.0, 2035.0384615384614], [3083.0, 2035.2], [3082.2, 2036.0], [3082.0, 2036.004048582996], [3081.0, 2036.0062111801242], [3080.0, 2036.0113636363637], [3079.0, 2036.012658227848], [3078.0, 2036.016393442623], [3077.0, 2036.030303030303], [3076.0, 2036.142857142857], [3075.0, 2036.3333333333333], [3074.0, 2036.2], [3073.0, 2036.3333333333333], [3072.3333333333335, 2037.0], [3072.0, 2037.004016064257], [3071.0, 2037.0046296296296], [3070.0, 2037.0063694267517], [3069.0, 2037.009523809524], [3068.0, 2037.0196078431372], [3067.0, 2037.125], [3066.0, 2038.0], [3065.0, 2038.0058479532163], [3064.0, 2038.04], [3063.04, 2039.0], [3063.0, 2039.0047619047618], [3062.0, 2039.027027027027], [3061.027027027027, 2040.0], [3061.0, 2040.0065789473683], [3060.0, 2041.0], [3059.005882352941, 2042.0], [3059.0, 2042.0086956521739], [3058.008695652174, 2043.0], [3058.0, 2043.0434782608695], [3057.0434782608695, 2044.0], [3057.005128205128, 2045.0], [3057.0, 2045.0204081632653], [3056.0204081632655, 2046.0], [3056.0059523809523, 2047.0], [3056.0, 2048.0], [3055.03125, 2049.0], [3055.0096153846152, 2050.0], [3055.005917159763, 2051.0], [3055.0041841004186, 2052.0], [3055.0, 2052.3333333333335], [3054.3333333333335, 2053.0], [3054.0588235294117, 2054.0], [3054.035714285714, 2055.0], [3054.0588235294117, 2056.0], [3054.1, 2057.0], [3054.1111111111113, 2058.0], [3054.3333333333335, 2059.0], [3055.0, 2059.6666666666665], [3055.0039215686274, 2060.0], [3055.0046948356808, 2061.0], [3055.0051813471505, 2062.0], [3055.0153846153844, 2063.0], [3055.5, 2064.0], [3056.0, 2064.5], [3056.0064935064934, 2065.0], [3056.04, 2066.0], [3057.0, 2066.96], [3057.0055555555555, 2067.0], [3057.027777777778, 2068.0], [3058.0, 2068.972222222222], [3058.008333333333, 2069.0], [3059.0, 2070.0], [3059.05, 2071.0], [3060.0, 2071.95], [3060.03125, 2072.0], [3061.0, 2072.96875], [3061.018181818182, 2073.0], [3062.0, 2073.981818181818], [3062.008547008547, 2074.0], [3063.0, 2074.991452991453], [3063.0285714285715, 2075.0], [3064.0, 2075.9714285714285], [3064.019230769231, 2076.0], [3065.0, 2076.980769230769], [3065.0204081632655, 2077.0], [3066.0, 2077.9795918367345], [3066.0588235294117, 2078.0], [3067.0, 2078.9411764705883], [3067.030303030303, 2079.0], [3068.0, 2079.969696969697], [3068.0158730158732, 2080.0], [3069.0, 2080.9841269841268], [3069.035714285714, 2081.0], [3070.0, 2081.964285714286], [3070.014492753623, 2082.0], [3071.0, 2082.985507246377], [3071.0098039215686, 2083.0], [3072.0, 2083.9901960784314], [3072.01, 2084.0], [3073.0, 2085.0], [3073.0238095238096, 2086.0], [3074.0, 2086.9761904761904], [3074.0078125, 2087.0], [3075.0, 2087.9921875], [3075.005025125628, 2088.0], [3075.03125, 2089.0], [3076.0, 2089.96875], [3076.0044052863436, 2090.0], [3076.027027027027, 2091.0], [3077.0, 2091.972972972973], [3077.004098360656, 2092.0], [3077.0067567567567, 2093.0], [3077.0208333333335, 2094.0], [3077.25, 2095.0], [3078.0, 2095.75], [3078.0057471264367, 2096.0], [3078.015625, 2097.0], [3078.03125, 2098.0], [3078.0625, 2099.0], [3079.0, 2100.0], [3079.0039215686274, 2101.0], [3079.0039215686274, 2102.0], [3079.003937007874, 2103.0], [3079.0041152263375, 2104.0], [3079.004081632653, 2105.0], [3079.004048582996, 2106.0], [3079.004255319149, 2107.0], [3079.0, 2107.3333333333335], [3078.3333333333335, 2108.0], [3078.0476190476193, 2109.0], [3078.0384615384614, 2110.0], [3078.0227272727275, 2111.0], [3078.0095238095237, 2112.0], [3078.004366812227, 2113.0], [3078.0, 2113.1111111111113], [3077.1111111111113, 2114.0], [3077.0204081632655, 2115.0], [3077.0104166666665, 2116.0], [3077.005291005291, 2117.0], [3077.0, 2117.1111111111113], [3076.1111111111113, 2118.0], [3076.0098039215686, 2119.0], [3076.004524886878, 2120.0], [3076.0, 2120.0204081632655], [3075.0204081632655, 2121.0], [3075.0, 2121.3333333333335], [3074.3333333333335, 2122.0], [3074.0089285714284, 2123.0], [3074.0, 2123.1428571428573], [3073.1428571428573, 2124.0], [3073.009009009009, 2125.0], [3073.0, 2125.1], [3072.1, 2126.0], [3072.0, 2126.1428571428573], [3071.1428571428573, 2127.0], [3071.005347593583, 2128.0], [3071.0, 2128.014705882353], [3070.014705882353, 2129.0], [3070.0, 2129.0175438596493], [3069.0175438596493, 2130.0], [3069.0, 2130.007042253521], [3068.0, 2131.0], [3067.0, 2131.5], [3066.5, 2132.0], [3066.0, 2132.1428571428573], [3065.1428571428573, 2133.0], [3065.0, 2133.0060606060606], [3064.0, 2133.05], [3063.05, 2134.0], [3063.0, 2134.0091743119265], [3062.0, 2134.0344827586205], [3061.0, 2134.1111111111113], [3060.0, 2135.0], [3059.0, 2135.007462686567], [3058.0, 2135.0232558139537], [3057.0, 2135.0416666666665], [3056.0, 2135.029411764706], [3055.0, 2135.027027027027], [3054.0, 2135.0454545454545], [3053.0, 2135.0333333333333], [3052.0, 2135.0112359550562], [3051.0, 2135.005882352941], [3050.0, 2135.004366812227], [3049.0, 2135.0039215686274], [3048.9285714285716, 2135.0], [3048.0, 2134.0714285714284], [3047.0, 2134.008], [3046.0, 2134.004385964912], [3045.909090909091, 2134.0], [3045.0, 2133.090909090909], [3044.0, 2133.0123456790125], [3043.6666666666665, 2133.0], [3043.0, 2132.3333333333335], [3042.0, 2132.014492753623], [3041.0, 2132.004761904762], [3040.9166666666665, 2132.0], [3040.0, 2131.0833333333335], [3039.0, 2131.008695652174], [3038.9333333333334, 2131.0], [3038.0, 2130.0666666666666], [3037.0, 2130.0069444444443], [3036.6666666666665, 2130.0], [3036.0, 2129.3333333333335], [3035.0, 2129.0071942446043], [3034.975, 2129.0], [3034.0, 2128.025], [3033.0, 2128.005], [3032.972222222222, 2128.0], [3032.0, 2127.027777777778], [3031.0, 2127.005347593583], [3030.9848484848485, 2127.0], [3030.0, 2126.0151515151515], [3029.875, 2126.0], [3029.0, 2125.125], [3028.0, 2125.009009009009], [3027.75, 2125.0], [3027.0, 2124.25], [3026.0, 2124.0057471264367], [3025.9803921568628, 2124.0], [3025.0, 2123.0196078431372], [3024.0, 2123.0], [3023.0, 2122.0151515151515], [3022.5, 2122.0], [3022.0, 2121.5], [3021.0, 2121.0074074074073], [3020.9375, 2121.0], [3020.0, 2120.0625], [3019.0, 2120.006134969325], [3018.974358974359, 2120.0], [3018.0, 2119.025641025641], [3017.0, 2119.0], [3016.0, 2118.0117647058823], [3015.5, 2118.0], [3015.0, 2117.5], [3014.0, 2117.0133333333333], [3013.75, 2117.0], [3013.0, 2116.25], [3012.0, 2116.009259259259], [3011.6666666666665, 2116.0], [3011.0, 2115.3333333333335], [3010.0, 2115.008333333333], [3009.8571428571427, 2115.0], [3009.0, 2114.1428571428573], [3008.0, 2114.0093457943926], [3007.0, 2114.0], [3006.0, 2113.0135135135133], [3005.0, 2113.0042735042734], [3004.95, 2113.0], [3004.0, 2112.05], [3003.0, 2112.0060606060606], [3002.875, 2112.0], [3002.0, 2111.125], [3001.0, 2111.0117647058823], [3000.0, 2111.0049261083745], [2999.75, 2111.0], [2999.0, 2110.25], [2998.0, 2110.0128205128203], [2997.0, 2110.0058139534885], [2996.0, 2110.0], [2995.0, 2109.04], [2994.0, 2109.010752688172], [2993.0, 2109.0052631578947], [2992.0, 2109.0040322580644], [2991.875, 2109.0], [2991.0, 2108.125], [2990.0, 2108.021276595745], [2989.0, 2108.0133333333333], [2988.0, 2108.007692307692], [2987.0, 2108.0045662100456], [2986.0, 2108.004081632653], [2985.75, 2108.0], [2985.0, 2107.25], [2984.0, 2107.125], [2983.0, 2107.05], [2982.0, 2107.0169491525426], [2981.0, 2107.009259259259], [2980.0, 2107.0108695652175], [2979.0, 2107.0113636363635], [2978.0, 2107.0077519379847], [2977.0, 2107.006711409396], [2976.0, 2107.0063694267515], [2975.0, 2107.0065789473683], [2974.0, 2107.007692307692], [2973.0, 2107.00625], [2972.0, 2107.005917159763], [2971.0, 2107.0087719298244], [2970.0, 2107.0149253731342], [2969.0, 2107.0188679245284], [2968.0, 2107.027777777778], [2967.0, 2107.1666666666665], [2966.1666666666665, 2108.0], [2966.0, 2108.00395256917], [2965.0, 2108.0041841004186], [2964.0, 2108.0091743119265], [2963.0, 2108.125], [2962.125, 2109.0], [2962.0, 2109.0057142857145], [2961.0, 2109.027777777778], [2960.027777777778, 2110.0], [2960.0, 2110.0054054054053], [2959.0, 2110.090909090909], [2958.090909090909, 2111.0], [2958.0, 2111.018181818182], [2957.018181818182, 2112.0], [2957.0, 2112.0104166666665], [2956.0104166666665, 2113.0], [2956.0, 2113.0113636363635], [2955.0113636363635, 2114.0], [2955.0, 2114.032258064516], [2954.032258064516, 2115.0], [2954.0, 2115.1111111111113], [2953.1111111111113, 2116.0], [2953.0084033613443, 2117.0], [2953.0, 2117.1666666666665], [2952.1666666666665, 2118.0], [2952.0089285714284, 2119.0], [2952.0, 2120.0], [2951.0526315789475, 2121.0], [2951.0072463768115, 2122.0], [2951.0041152263375, 2123.0], [2951.0, 2124.0], [2950.076923076923, 2125.0], [2950.025641025641, 2126.0], [2950.0185185185187, 2127.0], [2950.013698630137, 2128.0], [2950.008695652174, 2129.0], [2950.0068027210887, 2130.0], [2950.0128205128203, 2131.0], [2950.03125, 2132.0], [2950.076923076923, 2133.0], [2951.0, 2133.923076923077], [2951.003968253968, 2134.0], [2951.005128205128, 2135.0], [2951.014705882353, 2136.0], [2951.0714285714284, 2137.0], [2952.0, 2137.9285714285716], [2952.0060240963853, 2138.0], [2952.1111111111113, 2139.0], [2953.0, 2139.8888888888887], [2953.008547008547, 2140.0], [2953.5, 2141.0], [2954.0, 2141.5], [2954.0588235294117, 2142.0], [2955.0, 2142.9411764705883], [2955.0178571428573, 2143.0], [2956.0, 2143.9821428571427], [2956.008695652174, 2144.0], [2957.0, 2144.991304347826], [2957.0142857142855, 2145.0], [2958.0, 2145.9857142857145], [2958.019230769231, 2146.0], [2959.0, 2146.980769230769], [2959.0526315789475, 2147.0], [2960.0, 2147.9473684210525], [2961.0, 2148.0], [2962.0, 2148.991452991453], [2962.018181818182, 2149.0], [2963.0, 2149.981818181818], [2963.3333333333335, 2150.0], [2964.0, 2150.6666666666665], [2965.0, 2150.990740740741], [2965.0526315789475, 2151.0], [2966.0, 2151.9473684210525], [2967.0, 2151.9947368421053], [2967.015625, 2152.0], [2968.0, 2152.984375], [2969.0, 2152.9956896551726], [2969.0188679245284, 2153.0], [2970.0, 2153.9811320754716], [2970.5, 2154.0], [2971.0, 2154.5], [2972.0, 2154.987012987013], [2973.0, 2155.0], [2974.0, 2155.9882352941177], [2974.3333333333335, 2156.0], [2975.0, 2156.6666666666665], [2976.0, 2156.990099009901], [2977.0, 2157.0], [2978.0, 2157.978260869565], [2979.0, 2157.9957627118642], [2979.0204081632655, 2158.0], [2980.0, 2158.9795918367345], [2981.0, 2158.994680851064], [2981.035714285714, 2159.0], [2982.0, 2159.964285714286], [2983.0, 2159.994708994709], [2983.0625, 2160.0], [2984.0, 2160.9375], [2985.0, 2160.9918032786886], [2985.25, 2161.0], [2986.0, 2161.75], [2987.0, 2161.9912280701756], [2988.0, 2161.9959677419356], [2988.0243902439024, 2162.0], [2989.0, 2162.9756097560976], [2990.0, 2162.995327102804], [2990.1, 2163.0], [2991.0, 2163.9], [2992.0, 2163.9912280701756], [2992.5, 2164.0], [2993.0, 2164.5], [2994.0, 2164.983333333333], [2995.0, 2164.9950495049507], [2995.25, 2165.0], [2996.0, 2165.75], [2997.0, 2165.9880952380954], [2998.0, 2165.995633187773], [2998.0714285714284, 2166.0], [2999.0, 2166.9285714285716], [3000.0, 2166.9880952380954], [3001.0, 2166.995670995671], [3001.0416666666665, 2167.0], [3002.0, 2167.9583333333335], [3003.0, 2167.9880952380954], [3004.0, 2167.9951219512195], [3004.2, 2168.0], [3005.0, 2168.8], [3006.0, 2168.985294117647], [3007.0, 2168.9941520467837], [3008.0, 2168.9958506224066], [3008.1111111111113, 2169.0], [3009.0, 2169.8888888888887], [3010.0, 2169.986301369863], [3011.0, 2169.993902439024], [3012.0, 2169.9957805907175], [3012.3333333333335, 2170.0], [3013.0, 2170.6666666666665], [3014.0, 2170.9756097560976], [3015.0, 2170.9904761904763], [3016.0, 2170.9930555555557], [3017.0, 2170.9954954954956], [3017.3333333333335, 2171.0], [3018.0, 2171.6666666666665], [3019.0, 2171.9473684210525], [3020.0, 2171.9803921568628], [3021.0, 2171.9861111111113], [3022.0, 2171.991666666667], [3023.0, 2171.9953703703704], [3024.0, 2172.0], [3025.0, 2172.6666666666665], [3026.0, 2172.8333333333335], [3027.0, 2172.95], [3028.0, 2172.9866666666667], [3029.0, 2172.9921259842517], [3030.0, 2172.9944134078214], [3031.0, 2172.9953917050693], [3031.3333333333335, 2173.0], [3032.0, 2173.6666666666665], [3033.0, 2173.9756097560976], [3034.0, 2173.9814814814813], [3035.0, 2173.9901960784314], [3036.0, 2173.9950980392155], [3036.090909090909, 2174.0], [3037.0, 2174.909090909091], [3038.0, 2174.986301369863], [3039.0, 2174.994117647059], [3040.0, 2174.995901639344], [3040.0625, 2175.0], [3041.0, 2175.9375], [3042.0, 2175.9937888198756], [3042.0416666666665, 2176.0], [3043.0, 2176.9583333333335], [3044.0, 2176.992424242424], [3044.25, 2177.0], [3045.0, 2177.75], [3046.0, 2178.0], [3047.0, 2178.993902439024], [3047.0128205128203, 2179.0], [3048.0, 2179.9871794871797], [3048.0344827586205, 2180.0], [3049.0, 2180.9655172413795], [3049.0071942446043, 2181.0], [3050.0, 2182.0], [3050.0588235294117, 2183.0], [3051.0, 2183.9411764705883], [3051.0041493775934, 2184.0], [3051.006711409396, 2185.0], [3051.0285714285715, 2186.0], [3052.0, 2186.9714285714285], [3052.004255319149, 2187.0], [3052.0058479532163, 2188.0], [3052.0045871559632, 2189.0], [3052.0046082949307, 2190.0], [3052.0058479532163, 2191.0], [3052.0042194092825, 2192.0], [3052.0, 2192.0714285714284], [3051.0714285714284, 2193.0], [3051.0133333333333, 2194.0], [3051.0068493150684, 2195.0], [3051.0045871559632, 2196.0], [3051.0, 2196.0384615384614], [3050.0384615384614, 2197.0], [3050.0048076923076, 2198.0], [3050.0, 2198.0344827586205], [3049.0344827586205, 2199.0], [3049.0073529411766, 2200.0], [3049.0, 2200.0625], [3048.0625, 2201.0], [3048.004761904762, 2202.0], [3048.0, 2202.014705882353], [3047.014705882353, 2203.0], [3047.0, 2204.0], [3046.0128205128203, 2205.0], [3046.0, 2205.0454545454545], [3045.0454545454545, 2206.0], [3045.004784688995, 2207.0], [3045.0, 2207.027777777778], [3044.027777777778, 2208.0], [3044.0, 2208.5], [3043.5, 2209.0], [3043.008130081301, 2210.0], [3043.0, 2210.1111111111113], [3042.1111111111113, 2211.0], [3042.008547008547, 2212.0], [3042.0, 2212.0555555555557], [3041.0555555555557, 2213.0], [3041.006451612903, 2214.0], [3041.0, 2215.0], [3040.037037037037, 2216.0], [3040.009090909091, 2217.0], [3040.0048780487805, 2218.0], [3040.0, 2219.0], [3039.090909090909, 2220.0], [3039.03125, 2221.0], [3039.04, 2222.0], [3039.0555555555557, 2223.0], [3039.0714285714284, 2224.0], [3040.0, 2225.0], [3040.005128205128, 2226.0], [3040.009090909091, 2227.0], [3040.1428571428573, 2228.0], [3041.0, 2228.8571428571427], [3041.01, 2229.0], [3041.5, 2230.0], [3042.0, 2230.5], [3042.029411764706, 2231.0], [3043.0, 2231.970588235294], [3043.012195121951, 2232.0], [3044.0, 2232.987804878049], [3044.0112359550562, 2233.0], [3045.0, 2233.9887640449438], [3045.019230769231, 2234.0], [3046.0, 2234.980769230769], [3046.02, 2235.0], [3047.0, 2235.98], [3047.2, 2236.0], [3048.0, 2236.8], [3049.0, 2236.9944134078214], [3049.0135135135133, 2237.0], [3050.0, 2237.9864864864867], [3051.0, 2238.0], [3052.0, 2238.9859154929577], [3052.1, 2239.0], [3053.0, 2239.9], [3054.0, 2239.9841269841268], [3055.0, 2239.9945652173915], [3055.0625, 2240.0], [3056.0, 2240.9375], [3057.0, 2240.9896907216494], [3058.0, 2240.9953488372093], [3058.0625, 2241.0], [3059.0, 2241.9375], [3060.0, 2241.9897959183672], [3061.0, 2241.9933774834435], [3062.0, 2242.0], [3063.0, 2242.9655172413795], [3064.0, 2242.987804878049], [3065.0, 2242.9922480620153], [3066.0, 2242.995614035088], [3066.1428571428573, 2243.0], [3067.0, 2243.8571428571427], [3068.0, 2243.96], [3069.0, 2243.986301369863], [3070.0, 2243.994764397906], [3071.0, 2244.0], [3072.0, 2244.8], [3073.0, 2244.978260869565], [3074.0, 2244.993006993007], [3075.0, 2244.995652173913], [3075.5, 2245.0], [3076.0, 2245.5], [3077.0, 2245.969696969697], [3078.0, 2245.991666666667], [3079.0, 2245.994382022472], [3079.5, 2246.0], [3080.0, 2246.5], [3081.0, 2246.9767441860463], [3082.0, 2246.9924812030076], [3083.0, 2246.994680851064], [3084.0, 2247.0], [3085.0, 2247.9821428571427], [3086.0, 2247.9904761904763], [3087.0, 2247.9947916666665], [3087.1666666666665, 2248.0], [3088.0, 2248.8333333333335], [3089.0, 2248.980769230769], [3090.0, 2248.9908256880735], [3091.0, 2248.9948186528495], [3091.2, 2249.0], [3092.0, 2249.8], [3093.0, 2249.972972972973], [3094.0, 2249.983333333333], [3095.0, 2249.9942528735633], [3096.0, 2249.995867768595], [3096.1, 2250.0], [3097.0, 2250.9], [3098.0, 2250.962962962963], [3099.0, 2250.9861111111113], [3100.0, 2250.993865030675], [3101.0, 2250.9958158995814], [3101.5, 2251.0], [3102.0, 2251.5], [3103.0, 2251.8571428571427], [3104.0, 2251.969696969697], [3105.0, 2251.987012987013], [3106.0, 2251.991666666667], [3107.0, 2251.9941520467837], [3108.0, 2251.9944134078214], [3109.0, 2251.995951417004], [3110.0, 2252.0], [3111.0, 2252.6666666666665], [3112.0, 2252.5], [3113.0, 2252.75], [3114.0, 2252.9285714285716], [3115.0, 2252.9444444444443], [3116.0, 2252.8888888888887], [3117.0, 2252.8888888888887], [3118.0, 2252.9333333333334], [3119.0, 2252.9655172413795], [3120.0, 2252.9], [3121.0, 2252.5], [3122.0, 2252.0], [3123.0, 2252.0], [3124.0, 2251.995283018868], [3125.0, 2251.9945355191257], [3126.0, 2251.99], [3127.0, 2251.9841269841268], [3128.0, 2251.9777777777776], [3129.0, 2251.8571428571427], [3129.8571428571427, 2251.0], [3130.0, 2250.9955947136564], [3131.0, 2250.9926470588234], [3132.0, 2250.978723404255], [3133.0, 2250.8], [3133.8, 2250.0], [3134.0, 2249.9944444444445], [3135.0, 2249.974358974359], [3136.0, 2249.6666666666665], [3136.6666666666665, 2249.0], [3137.0, 2248.993006993007], [3138.0, 2248.8], [3138.8, 2248.0], [3139.0, 2247.9882352941177], [3140.0, 2247.0], [3141.0, 2246.962962962963], [3141.962962962963, 2246.0], [3142.0, 2245.9876543209875], [3142.9876543209875, 2245.0], [3143.0, 2244.9931506849316], [3144.0, 2244.0], [3144.9937888198756, 2243.0], [3145.0, 2242.9866666666667], [3145.9866666666667, 2242.0], [3146.0, 2241.909090909091], [3146.909090909091, 2241.0], [3146.9937106918237, 2240.0], [3147.0, 2239.9523809523807], [3147.9523809523807, 2239.0], [3147.994652406417, 2238.0], [3148.0, 2237.875], [3148.875, 2237.0], [3148.9756097560976, 2236.0], [3148.9896907216494, 2235.0], [3148.994652406417, 2234.0], [3148.9954954954956, 2233.0], [3148.9960784313726, 2232.0], [3149.0, 2231.0], [3149.75, 2230.0], [3149.8333333333335, 2229.0], [3149.6666666666665, 2228.0], [3149.0, 2227.3333333333335], [3148.996062992126, 2227.0], [3148.9954128440368, 2226.0], [3148.993670886076, 2225.0], [3148.9897959183672, 2224.0], [3148.9666666666667, 2223.0], [3148.75, 2222.0], [3148.0, 2221.25], [3147.996, 2221.0], [3147.9945355191257, 2220.0], [3147.9791666666665, 2219.0], [3147.8, 2218.0], [3147.0, 2217.2], [3146.995614035088, 2217.0], [3146.9915966386557, 2216.0], [3146.9473684210525, 2215.0], [3146.0, 2214.0526315789475], [3145.995535714286, 2214.0], [3145.9910714285716, 2213.0], [3145.9583333333335, 2212.0], [3145.0, 2211.0416666666665], [3144.9953051643192, 2211.0], [3144.974358974359, 2210.0], [3144.0, 2209.0], [3143.9918032786886, 2208.0], [3143.9, 2207.0], [3143.0, 2206.1], [3142.992537313433, 2206.0], [3142.923076923077, 2205.0], [3142.0, 2204.076923076923], [3141.9944751381217, 2204.0], [3141.9615384615386, 2203.0], [3141.0, 2202.0384615384614], [3140.9927536231885, 2202.0], [3140.8, 2201.0], [3140.0, 2200.2], [3139.992424242424, 2200.0], [3139.75, 2199.0], [3139.0, 2198.25], [3138.9655172413795, 2198.0], [3138.0, 2197.0344827586205], [3137.9921259842517, 2197.0], [3137.6666666666665, 2196.0], [3137.0, 2195.3333333333335], [3136.964285714286, 2195.0], [3136.0, 2194.035714285714], [3135.9836065573772, 2194.0], [3135.0, 2193.0163934426228], [3134.9937888198756, 2193.0], [3134.5, 2192.0], [3134.0, 2191.5], [3133.0, 2191.0], [3132.8, 2190.0], [3132.0, 2189.2], [3131.875, 2189.0], [3131.0, 2188.125], [3130.5, 2188.0], [3130.0, 2187.5], [3129.8333333333335, 2187.0], [3129.0, 2186.1666666666665], [3128.0, 2186.0048780487805], [3127.9922480620153, 2186.0], [3127.0, 2185.0077519379847], [3126.9915966386557, 2185.0], [3126.0, 2184.0084033613443], [3125.9850746268658, 2184.0], [3125.0, 2183.0149253731342], [3124.923076923077, 2183.0], [3124.0, 2182.076923076923], [3123.0, 2182.0], [3122.0, 2181.0], [3121.0, 2180.0087719298244], [3120.9523809523807, 2180.0], [3120.0, 2179.0476190476193], [3119.9285714285716, 2179.0], [3119.0, 2178.0714285714284], [3118.875, 2178.0], [3118.0, 2177.125], [3117.0, 2177.0], [3116.0, 2176.0093457943926], [3115.9885057471265, 2176.0], [3115.0, 2175.0114942528735], [3114.9935064935066, 2175.0], [3114.0, 2174.0064935064934], [3113.9883720930234, 2174.0], [3113.0, 2173.0116279069766], [3112.9908256880735, 2173.0], [3112.0, 2172.0], [3111.96875, 2171.0], [3111.0, 2170.03125], [3110.9894736842107, 2170.0], [3110.0, 2169.0105263157893], [3109.9944444444445, 2169.0], [3109.96875, 2168.0], [3109.5, 2167.0], [3109.0, 2166.5], [3108.9903846153848, 2166.0], [3108.8333333333335, 2165.0], [3108.0, 2164.1666666666665], [3107.9957081545062, 2164.0], [3107.9953917050693, 2163.0], [3107.9944751381217, 2162.0], [3107.9927536231885, 2161.0], [3107.9841269841268, 2160.0], [3107.9830508474574, 2159.0], [3107.9908256880735, 2158.0], [3107.9953488372093, 2157.0], [3108.0, 2156.0], [3108.8571428571427, 2155.0], [3108.987951807229, 2154.0], [3109.0, 2153.6666666666665], [3109.6666666666665, 2153.0], [3109.9887640449438, 2152.0], [3109.995614035088, 2151.0], [3110.0, 2150.9583333333335], [3110.9583333333335, 2150.0], [3111.0, 2149.0], [3111.993548387097, 2148.0], [3112.0, 2147.962962962963], [3112.962962962963, 2147.0], [3113.0, 2146.9333333333334], [3113.9333333333334, 2146.0], [3114.0, 2145.9583333333335], [3114.9583333333335, 2145.0], [3115.0, 2144.923076923077], [3115.923076923077, 2144.0], [3116.0, 2143.6666666666665], [3116.6666666666665, 2143.0], [3117.0, 2142.9375], [3117.9375, 2142.0], [3118.0, 2141.9880952380954], [3118.9880952380954, 2141.0], [3119.0, 2140.9915966386557], [3119.9915966386557, 2140.0], [3120.0, 2139.994117647059], [3121.0, 2139.9], [3121.9, 2139.0], [3122.0, 2138.9848484848485], [3122.9848484848485, 2138.0], [3123.0, 2137.991304347826], [3124.0, 2137.5], [3124.5, 2137.0], [3125.0, 2136.985294117647], [3125.985294117647, 2136.0], [3126.0, 2135.9949494949497], [3127.0, 2135.8333333333335], [3127.8333333333335, 2135.0], [3128.0, 2134.9904761904763], [3129.0, 2134.875], [3129.875, 2134.0], [3130.0, 2133.9883720930234], [3130.9883720930234, 2133.0], [3131.0, 2132.995535714286], [3132.0, 2132.9859154929577], [3133.0, 2132.6666666666665], [3133.6666666666665, 2132.0], [3134.0, 2131.9887640449438], [3135.0, 2131.0], [3136.0, 2130.972222222222], [3137.0, 2130.0], [3138.0, 2129.9887640449438], [3138.9887640449438, 2129.0], [3139.0, 2128.9948186528495], [3140.0, 2128.9375], [3140.9375, 2128.0], [3141.0, 2127.9928057553957], [3142.0, 2127.8], [3142.8, 2127.0], [3143.0, 2126.9772727272725], [3143.9772727272725, 2126.0], [3144.0, 2125.9920634920636], [3145.0, 2125.0], [3146.0, 2124.875], [3146.875, 2124.0], [3147.0, 2123.6666666666665], [3147.6666666666665, 2123.0], [3148.0, 2122.0], [3148.9922480620153, 2121.0], [3149.0, 2120.970588235294], [3149.970588235294, 2120.0], [3150.0, 2119.0], [3150.9864864864867, 2118.0], [3150.9951456310678, 2117.0], [3151.0, 2116.0], [3151.95, 2115.0], [3151.9795918367345, 2114.0], [3151.9864864864867, 2113.0], [3151.989247311828, 2112.0], [3151.9906542056074, 2111.0], [3151.9772727272725, 2110.0], [3151.9473684210525, 2109.0], [3151.75, 2108.0], [3151.0, 2107.25], [3150.9955555555557, 2107.0], [3150.992700729927, 2106.0], [3150.9666666666667, 2105.0], [3150.8, 2104.0], [3150.0, 2103.2], [3149.9945355191257, 2103.0], [3149.96875, 2102.0], [3149.0, 2101.03125], [3148.996, 2101.0], [3148.9928057553957, 2100.0], [3148.8333333333335, 2099.0], [3148.0, 2098.1666666666665], [3147.993902439024, 2098.0], [3147.9714285714285, 2097.0], [3147.0, 2096.0285714285715], [3146.9953051643192, 2096.0], [3146.9821428571427, 2095.0], [3146.0, 2094.0178571428573], [3145.9953051643192, 2094.0], [3145.9841269841268, 2093.0], [3145.75, 2092.0], [3145.0, 2091.25], [3144.987951807229, 2091.0], [3144.0, 2090.012048192771], [3143.9957264957266, 2090.0], [3143.9876543209875, 2089.0], [3143.75, 2088.0], [3143.0, 2087.25], [3142.9921259842517, 2087.0], [3142.875, 2086.0], [3142.0, 2085.125], [3141.9913793103447, 2085.0], [3141.9285714285716, 2084.0], [3141.0, 2083.0714285714284], [3140.995327102804, 2083.0], [3140.9761904761904, 2082.0], [3140.0, 2081.0], [3139.9944444444445, 2080.0], [3139.984375, 2079.0], [3139.8571428571427, 2078.0], [3139.0, 2077.1428571428573], [3138.9942857142855, 2077.0], [3138.9814814814813, 2076.0], [3138.95, 2075.0], [3138.8333333333335, 2074.0], [3138.0, 2073.1666666666665], [3137.9954954954956, 2073.0], [3137.9928057553957, 2072.0], [3137.992366412214, 2071.0], [3137.992366412214, 2070.0], [3137.990990990991, 2069.0], [3137.9861111111113, 2068.0], [3137.9814814814813, 2067.0], [3137.9868421052633, 2066.0], [3137.9939759036147, 2065.0], [3137.9955156950673, 2064.0], [3137.9958158995814, 2063.0], [3138.0, 2062.875], [3138.875, 2062.0], [3138.990566037736, 2061.0], [3138.995670995671, 2060.0], [3139.0, 2059.96], [3139.96, 2059.0], [3139.9896907216494, 2058.0], [3139.9954954954956, 2057.0], [3140.0, 2056.986301369863], [3140.986301369863, 2056.0], [3141.0, 2055.962962962963], [3141.962962962963, 2055.0], [3141.995238095238, 2054.0], [3142.0, 2053.984375], [3142.984375, 2053.0], [3143.0, 2052.9666666666667], [3143.9666666666667, 2052.0], [3144.0, 2051.9830508474574], [3144.9830508474574, 2051.0], [3145.0, 2050.9444444444443], [3145.9444444444443, 2050.0], [3146.0, 2049.9333333333334], [3146.9333333333334, 2049.0], [3147.0, 2048.990291262136], [3148.0, 2048.0], [3149.0, 2047.5], [3149.5, 2047.0], [3150.0, 2046.9583333333333], [3150.9583333333335, 2046.0], [3151.0, 2045.995024875622], [3152.0, 2045.9722222222222], [3152.972222222222, 2045.0], [3153.0, 2044.9928571428572], [3154.0, 2044.8], [3154.8, 2044.0], [3155.0, 2043.9948186528497], [3156.0, 2043.9864864864865], [3157.0, 2043.0], [3158.0, 2042.9883720930231], [3159.0, 2042.9285714285713], [3160.0, 2042.0], [3161.0, 2041.9944751381215], [3162.0, 2041.9846153846154], [3163.0, 2041.8], [3163.8, 2041.0], [3164.0, 2040.9960317460318], [3165.0, 2040.9952153110048], [3166.0, 2040.9930555555557], [3167.0, 2040.9814814814815], [3168.0, 2040.9], [3169.0, 2040.75], [3170.0, 2040.5], [3170.5, 2040.0], [3171.0, 2039.9959677419354], [3172.0, 2039.995283018868], [3173.0, 2039.9945945945947], [3174.0, 2039.9951923076924], [3175.0, 2039.9953051643192], [3176.0, 2039.9948717948719], [3177.0, 2039.9936305732483], [3178.0, 2039.9948979591836], [3179.0, 2039.9956140350878], [3180.0, 2040.0], [3181.0, 2040.0], [3182.0, 2040.0], [3183.0, 2040.888888888889], [3184.0, 2040.9814814814815], [3185.0, 2040.9918699186992], [3186.0, 2040.9934210526317], [3187.0, 2040.9957081545065], [3187.1, 2041.0], [3188.0, 2041.9], [3189.0, 2041.9885057471265], [3190.0, 2041.9945054945056], [3191.0, 2041.99604743083], [3191.0384615384614, 2042.0], [3192.0, 2042.9615384615386], [3193.0, 2042.9944444444445], [3193.3333333333335, 2043.0], [3194.0, 2043.6666666666667], [3195.0, 2043.9795918367347], [3196.0, 2043.9945355191257], [3196.0344827586205, 2044.0], [3197.0, 2044.9655172413793], [3198.0, 2044.9944751381215], [3198.090909090909, 2045.0], [3199.0, 2045.909090909091], [3200.0, 2045.9920634920634], [3200.0384615384614, 2046.0], [3201.0, 2046.9615384615386], [3202.0, 2046.9949238578681], [3202.035714285714, 2047.0], [3203.0, 2047.9642857142858], [3204.0, 2047.9943181818182], [3204.0158730158732, 2048.0], [3205.0, 2048.9841269841268], [3205.0555555555557, 2049.0], [3206.0, 2049.9444444444443], [3207.0, 2049.9942528735633], [3207.0476190476193, 2050.0], [3208.0, 2050.9523809523807], [3209.0, 2051.0], [3210.0, 2051.99358974359], [3210.025641025641, 2052.0], [3211.0, 2052.974358974359], [3212.0, 2053.0], [3213.0, 2053.9933333333333], [3213.009433962264, 2054.0], [3214.0, 2054.990566037736], [3214.0526315789475, 2055.0], [3215.0, 2055.9473684210525], [3215.5, 2056.0], [3216.0, 2056.5], [3216.5, 2057.0], [3217.0, 2057.5], [3218.0, 2057.9939393939394], [3218.0158730158732, 2058.0], [3219.0, 2058.9841269841268], [3219.0208333333335, 2059.0], [3220.0, 2059.9791666666665], [3220.03125, 2060.0], [3221.0, 2060.96875], [3221.2, 2061.0], [3222.0, 2061.8], [3222.1111111111113, 2062.0], [3223.0, 2062.8888888888887], [3223.2, 2063.0], [3224.0, 2063.8], [3225.0, 2063.9947368421053], [3225.005649717514, 2064.0], [3225.5, 2065.0], [3226.0, 2065.5], [3226.5, 2066.0], [3227.0, 2066.5], [3228.0, 2066.9932432432433], [3228.007633587786, 2067.0], [3229.0, 2067.992366412214], [3229.0066666666667, 2068.0], [3230.0, 2068.9933333333333], [3230.010101010101, 2069.0], [3231.0, 2069.989898989899], [3231.0114942528735, 2070.0], [3232.0, 2070.9885057471265], [3232.0102040816328, 2071.0], [3233.0, 2071.9897959183672], [3233.0222222222224, 2072.0], [3234.0, 2072.9777777777776], [3234.04, 2073.0], [3235.0, 2073.96], [3235.032258064516, 2074.0], [3236.0, 2074.967741935484], [3236.2, 2075.0], [3237.0, 2075.8], [3238.0, 2076.0], [3239.0, 2076.994082840237], [3239.009090909091, 2077.0], [3240.0, 2077.990909090909], [3240.0476190476193, 2078.0], [3241.0, 2078.9523809523807], [3241.090909090909, 2079.0], [3242.0, 2079.909090909091], [3243.0, 2080.0], [3244.0, 2080.9895833333335], [3244.032258064516, 2081.0], [3245.0, 2081.967741935484], [3245.1666666666665, 2082.0], [3246.0, 2082.8333333333335], [3247.0, 2082.9936305732485], [3247.0344827586205, 2083.0], [3248.0, 2083.9655172413795], [3248.1428571428573, 2084.0], [3249.0, 2084.8571428571427], [3250.0, 2084.9936305732485], [3250.0526315789475, 2085.0], [3251.0, 2085.9473684210525], [3252.0, 2085.9951923076924], [3252.0106382978724, 2086.0], [3253.0, 2086.9893617021276], [3253.1111111111113, 2087.0], [3254.0, 2087.8888888888887], [3255.0, 2087.993288590604], [3255.076923076923, 2088.0], [3256.0, 2088.923076923077], [3257.0, 2089.0], [3258.0, 2089.987012987013], [3258.5, 2090.0], [3259.0, 2090.5], [3260.0, 2090.9886363636365], [3260.25, 2091.0], [3261.0, 2091.75], [3262.0, 2091.9940476190477], [3262.027777777778, 2092.0], [3263.0, 2092.972222222222], [3264.0, 2092.9950980392155], [3264.0128205128203, 2093.0], [3265.0, 2093.9871794871797], [3266.0, 2093.9958158995814], [3266.0169491525426, 2094.0], [3267.0, 2094.9830508474574], [3267.1428571428573, 2095.0], [3268.0, 2095.8571428571427], [3269.0, 2095.9941520467837], [3269.025, 2096.0], [3270.0, 2096.975], [3271.0, 2097.0], [3272.0, 2097.989010989011], [3272.25, 2098.0], [3273.0, 2098.75], [3274.0, 2098.992366412214], [3274.0196078431372, 2099.0], [3275.0, 2099.9803921568628], [3275.090909090909, 2100.0], [3276.0, 2100.909090909091], [3277.0, 2100.9945945945947], [3277.0149253731342, 2101.0], [3278.0, 2101.9850746268658], [3278.090909090909, 2102.0], [3279.0, 2102.909090909091], [3280.0, 2102.994652406417], [3280.025641025641, 2103.0], [3281.0, 2103.974358974359], [3281.0666666666666, 2104.0], [3282.0, 2104.9333333333334], [3282.1428571428573, 2105.0], [3283.0, 2105.8571428571427], [3284.0, 2106.0], [3285.0, 2106.9929078014184], [3285.0142857142855, 2107.0], [3286.0, 2107.9857142857145], [3286.0666666666666, 2108.0], [3287.0, 2108.9333333333334], [3287.3333333333335, 2109.0], [3288.0, 2109.6666666666665], [3288.1111111111113, 2110.0], [3289.0, 2110.8888888888887], [3289.0588235294117, 2111.0], [3290.0, 2111.9411764705883], [3290.0526315789475, 2112.0], [3291.0, 2112.9473684210525], [3291.05, 2113.0], [3292.0, 2113.95], [3292.1428571428573, 2114.0], [3293.0, 2114.8571428571427], [3293.0416666666665, 2115.0], [3294.0, 2115.9583333333335], [3294.0079365079364, 2116.0], [3295.0, 2117.0], [3295.076923076923, 2118.0], [3296.0, 2118.923076923077], [3296.0227272727275, 2119.0], [3297.0, 2119.9772727272725], [3297.009259259259, 2120.0], [3297.3333333333335, 2121.0], [3298.0, 2121.6666666666665], [3298.0078125, 2122.0], [3298.1111111111113, 2123.0], [3299.0, 2123.8888888888887], [3299.0084033613443, 2124.0], [3299.5, 2125.0], [3300.0, 2125.5], [3300.0128205128203, 2126.0], [3300.0833333333335, 2127.0], [3301.0, 2128.0], [3301.0062893081763, 2129.0], [3301.0238095238096, 2130.0], [3302.0, 2131.0], [3302.005128205128, 2132.0], [3302.005319148936, 2133.0], [3302.0069444444443, 2134.0], [3302.0091743119265, 2135.0], [3302.0178571428573, 2136.0], [3302.035714285714, 2137.0], [3302.032258064516, 2138.0], [3302.012195121951, 2139.0], [3302.007299270073, 2140.0], [3302.0057471264367, 2141.0], [3302.004739336493, 2142.0], [3302.0044052863436, 2143.0], [3302.0, 2144.0], [3301.0344827586205, 2145.0], [3301.006896551724, 2146.0], [3301.0, 2146.5], [3300.5, 2147.0], [3300.032258064516, 2148.0], [3300.0079365079364, 2149.0], [3300.004329004329, 2150.0], [3300.0, 2150.125], [3299.125, 2151.0], [3299.0071942446043, 2152.0], [3299.0, 2152.030303030303], [3298.030303030303, 2153.0], [3298.0049019607845, 2154.0], [3298.0, 2154.0172413793102], [3297.0172413793102, 2155.0], [3297.0042735042734, 2156.0], [3297.0, 2156.015625], [3296.015625, 2157.0], [3296.0, 2157.0238095238096], [3295.0238095238096, 2158.0], [3295.0, 2158.0243902439024], [3294.0243902439024, 2159.0], [3294.0, 2159.1666666666665], [3293.1666666666665, 2160.0], [3293.0, 2160.3333333333335], [3292.3333333333335, 2161.0], [3292.0, 2161.0227272727275], [3291.0227272727275, 2162.0], [3291.0, 2162.0078125], [3290.0, 2163.0], [3289.0, 2163.25], [3288.25, 2164.0], [3288.0, 2164.0079365079364], [3287.0, 2164.0454545454545], [3286.0454545454545, 2165.0], [3286.0, 2165.005291005291], [3285.0, 2165.0454545454545], [3284.0454545454545, 2166.0], [3284.0, 2166.0039215686274], [3283.0, 2166.004716981132], [3282.0, 2166.0077519379847], [3281.0, 2166.0185185185187], [3280.0, 2166.25], [3279.25, 2167.0], [3279.0, 2167.0039215686274], [3278.0, 2167.00395256917], [3277.0, 2167.0], [3276.0, 2167.004016064257], [3275.0, 2167.004132231405], [3274.0, 2167.0042918454938], [3273.0, 2167.004366812227], [3272.0, 2167.004830917874], [3271.0, 2167.0052631578947], [3270.0, 2167.0040650406504], [3269.5, 2167.0], [3269.0, 2166.5], [3268.0, 2166.1428571428573], [3267.0, 2166.0476190476193], [3266.0, 2166.021739130435], [3265.0, 2166.0119047619046], [3264.0, 2166.0077519379847], [3263.0, 2166.0054945054944], [3262.0, 2166.004366812227], [3261.0, 2166.003968253968], [3260.0, 2166.0], [3259.0, 2165.25], [3258.0, 2165.0454545454545], [3257.0, 2165.009259259259], [3256.0, 2165.005154639175], [3255.0, 2165.0], [3254.0, 2164.1111111111113], [3253.0, 2164.0238095238096], [3252.0, 2164.0095238095237], [3251.0, 2164.0052083333335], [3250.0, 2164.0040322580644], [3249.875, 2164.0], [3249.0, 2163.125], [3248.0, 2163.0263157894738], [3247.0, 2163.009708737864], [3246.0, 2163.0054945054944], [3245.0, 2163.0040322580644], [3244.75, 2163.0], [3244.0, 2162.25], [3243.0, 2162.0588235294117], [3242.0, 2162.015625], [3241.0, 2162.005291005291], [3240.0, 2162.004098360656], [3239.8888888888887, 2162.0], [3239.0, 2161.1111111111113], [3238.0, 2161.027027027027], [3237.0, 2161.0140845070423], [3236.0, 2161.0077519379847], [3235.0, 2161.004672897196], [3234.0, 2161.0], [3233.0, 2160.1111111111113], [3232.0, 2160.0555555555557], [3231.0, 2160.029411764706], [3230.0, 2160.0119047619046], [3229.0, 2160.007692307692], [3228.0, 2160.007299270073], [3227.0, 2160.0071428571428], [3226.0, 2160.00625], [3225.0, 2160.006711409396], [3224.0, 2160.0106382978724], [3223.0, 2160.0227272727275], [3222.0, 2160.0555555555557], [3221.0, 2161.0], [3220.0, 2161.00826446281], [3219.0, 2161.1], [3218.1, 2162.0], [3218.0, 2162.0075187969924], [3217.0, 2162.2], [3216.2, 2163.0], [3216.0, 2163.032258064516], [3215.032258064516, 2164.0], [3215.0, 2164.0149253731342], [3214.0149253731342, 2165.0], [3214.0, 2165.035714285714], [3213.035714285714, 2166.0], [3213.0, 2166.5], [3212.5, 2167.0], [3212.0080645161293, 2168.0], [3212.0, 2168.25], [3211.25, 2169.0], [3211.0138888888887, 2170.0], [3211.004424778761, 2171.0], [3211.0, 2171.090909090909], [3210.090909090909, 2172.0], [3210.0196078431372, 2173.0], [3210.0071428571428, 2174.0], [3210.004524886878, 2175.0], [3210.004016064257, 2176.0], [3210.0, 2177.0], [3209.3333333333335, 2178.0], [3209.1, 2179.0], [3209.1111111111113, 2180.0], [3209.1666666666665, 2181.0], [3209.125, 2182.0], [3209.090909090909, 2183.0], [3209.125, 2184.0], [3209.5, 2185.0], [3210.0, 2185.5], [3210.0039215686274, 2186.0], [3210.004048582996, 2187.0], [3210.0046296296296, 2188.0], [3210.005649717514, 2189.0], [3210.0103092783506, 2190.0], [3210.0196078431372, 2191.0], [3210.0263157894738, 2192.0], [3210.037037037037, 2193.0], [3210.125, 2194.0], [3211.0, 2194.875], [3211.003984063745, 2195.0], [3211.0054347826085, 2196.0], [3211.0073529411766, 2197.0], [3211.010101010101, 2198.0], [3211.02, 2199.0], [3211.0833333333335, 2200.0], [3212.0, 2200.9166666666665], [3212.0039215686274, 2201.0], [3212.0048780487805, 2202.0], [3212.0065359477126, 2203.0], [3212.0131578947367, 2204.0], [3212.037037037037, 2205.0], [3212.3333333333335, 2206.0], [3213.0, 2206.6666666666665], [3213.004524886878, 2207.0], [3213.0073529411766, 2208.0], [3213.025, 2209.0], [3213.090909090909, 2210.0], [3214.0, 2211.0], [3214.0054347826085, 2212.0], [3214.0102040816328, 2213.0], [3214.0344827586205, 2214.0], [3215.0, 2215.0], [3215.0057142857145, 2216.0], [3215.0123456790125, 2217.0], [3215.0333333333333, 2218.0], [3216.0, 2219.0], [3216.0062111801244, 2220.0], [3216.021276595745, 2221.0], [3216.5, 2222.0], [3217.0, 2222.5], [3217.0054054054053, 2223.0], [3217.0128205128203, 2224.0], [3217.125, 2225.0], [3218.0, 2225.875], [3218.0054945054944, 2226.0], [3218.0243902439024, 2227.0], [3219.0, 2227.9756097560976], [3219.004081632653, 2228.0], [3219.0093457943926, 2229.0], [3219.1111111111113, 2230.0], [3220.0, 2230.8888888888887], [3220.00641025641, 2231.0], [3220.1111111111113, 2232.0], [3221.0, 2232.8888888888887], [3221.005681818182, 2233.0], [3221.027027027027, 2234.0], [3222.0, 2234.972972972973], [3222.0060606060606, 2235.0], [3222.25, 2236.0], [3223.0, 2236.75], [3223.0114942528735, 2237.0], [3224.0, 2238.0], [3224.04, 2239.0], [3225.0, 2239.96], [3225.0131578947367, 2240.0], [3226.0, 2240.9868421052633], [3226.005076142132, 2241.0], [3226.0833333333335, 2242.0], [3227.0, 2242.9166666666665], [3227.0588235294117, 2243.0], [3228.0, 2243.9411764705883], [3228.019230769231, 2244.0], [3229.0, 2244.980769230769], [3229.0093457943926, 2245.0], [3230.0, 2245.9906542056074], [3230.008849557522, 2246.0], [3231.0, 2246.991150442478], [3231.0081967213114, 2247.0], [3232.0, 2247.9918032786886], [3232.0063694267515, 2248.0], [3233.0, 2249.0], [3234.0, 2249.992307692308], [3234.009433962264, 2250.0], [3235.0, 2250.990566037736], [3235.0079365079364, 2251.0], [3236.0, 2251.9920634920636], [3236.011111111111, 2252.0], [3237.0, 2252.988888888889], [3237.032258064516, 2253.0], [3238.0, 2253.967741935484], [3238.0243902439024, 2254.0], [3239.0, 2254.9756097560976], [3239.029411764706, 2255.0], [3240.0, 2255.970588235294], [3240.1666666666665, 2256.0], [3241.0, 2256.8333333333335], [3241.5, 2257.0], [3242.0, 2257.5], [3242.1428571428573, 2258.0], [3243.0, 2258.8571428571427], [3244.0, 2259.0], [3245.0, 2259.992307692308], [3245.0078125, 2260.0], [3246.0, 2260.9921875], [3246.005988023952, 2261.0], [3247.0, 2262.0], [3248.0, 2262.9933333333333], [3248.007633587786, 2263.0], [3249.0, 2263.992366412214], [3249.0049504950493, 2264.0], [3249.1, 2265.0], [3250.0, 2265.9], [3250.125, 2266.0], [3251.0, 2266.875], [3251.0833333333335, 2267.0], [3252.0, 2267.9166666666665], [3252.0106382978724, 2268.0], [3253.0, 2268.9893617021276], [3253.005319148936, 2269.0], [3253.25, 2270.0], [3254.0, 2270.75], [3254.0588235294117, 2271.0], [3255.0, 2271.9411764705883], [3255.0069444444443, 2272.0], [3255.1111111111113, 2273.0], [3256.0, 2273.8888888888887], [3256.009433962264, 2274.0], [3257.0, 2275.0], [3257.0625, 2276.0], [3258.0, 2276.9375], [3258.0060240963853, 2277.0], [3258.027027027027, 2278.0], [3259.0, 2279.0], [3259.0142857142855, 2280.0], [3260.0, 2280.9857142857145], [3260.004424778761, 2281.0], [3260.0204081632655, 2282.0], [3260.25, 2283.0], [3261.0, 2283.75], [3261.0048543689322, 2284.0], [3261.0114942528735, 2285.0], [3261.125, 2286.0], [3262.0, 2286.875], [3262.0052631578947, 2287.0], [3262.0263157894738, 2288.0], [3262.2, 2289.0], [3263.0, 2290.0], [3263.0050505050503, 2291.0], [3263.009009009009, 2292.0], [3263.0232558139537, 2293.0], [3263.1666666666665, 2294.0], [3264.0, 2294.8333333333335], [3264.0042918454938, 2295.0], [3264.0055555555555, 2296.0], [3264.00625, 2297.0], [3264.0078740157483, 2298.0], [3264.0116279069766, 2299.0], [3264.018181818182, 2300.0], [3264.029411764706, 2301.0], [3264.125, 2302.0], [3264.5, 2303.0], [3264.5, 2304.0], [3264.1666666666665, 2305.0], [3264.0833333333335, 2306.0], [3264.076923076923, 2307.0], [3264.0666666666666, 2308.0], [3264.0666666666666, 2309.0], [3264.1, 2310.0], [3264.1428571428573, 2311.0], [3264.0588235294117, 2312.0], [3264.0151515151515, 2313.0], [3264.0080645161293, 2314.0], [3264.0054347826085, 2315.0], [3264.0042918454938, 2316.0], [3264.0039215686274, 2317.0], [3264.0, 2317.3333333333335], [3263.3333333333335, 2318.0], [3263.1, 2319.0], [3263.025, 2320.0], [3263.006134969325, 2321.0], [3263.0, 2322.0], [3262.0625, 2323.0], [3262.0131578947367, 2324.0], [3262.0061728395062, 2325.0], [3262.0, 2326.0], [3261.1428571428573, 2327.0], [3261.0227272727275, 2328.0], [3261.005347593583, 2329.0], [3261.0, 2329.090909090909], [3260.090909090909, 2330.0], [3260.009009009009, 2331.0], [3260.0, 2332.0], [3259.030303030303, 2333.0], [3259.0064935064934, 2334.0], [3259.0, 2334.5], [3258.5, 2335.0], [3258.025641025641, 2336.0], [3258.005681818182, 2337.0], [3258.0, 2337.0588235294117], [3257.0588235294117, 2338.0], [3257.005076142132, 2339.0], [3257.0, 2339.027027027027], [3256.027027027027, 2340.0], [3256.0049751243782, 2341.0], [3256.0, 2341.021739130435], [3255.021739130435, 2342.0], [3255.0046948356808, 2343.0], [3255.0, 2343.02], [3254.02, 2344.0], [3254.0045454545457, 2345.0], [3254.0, 2345.0333333333333], [3253.0333333333333, 2346.0], [3253.0, 2346.5], [3252.5, 2347.0], [3252.005988023952, 2348.0], [3252.0, 2348.0123456790125], [3251.0123456790125, 2349.0], [3251.0, 2349.090909090909], [3250.090909090909, 2350.0], [3250.0055248618783, 2351.0], [3250.0, 2351.0169491525426], [3249.0169491525426, 2352.0], [3249.0, 2352.0555555555557], [3248.0555555555557, 2353.0], [3248.0, 2353.029411764706], [3247.029411764706, 2354.0], [3247.0, 2354.0666666666666], [3246.0666666666666, 2355.0], [3246.0, 2355.3333333333335], [3245.3333333333335, 2356.0], [3245.0, 2356.0526315789475], [3244.0526315789475, 2357.0], [3244.0, 2357.0119047619046], [3243.0119047619046, 2358.0], [3243.0, 2358.0079365079364], [3242.0079365079364, 2359.0], [3242.0, 2359.00625], [3241.0, 2359.076923076923], [3240.076923076923, 2360.0], [3240.0, 2360.0062893081763], [3239.0, 2360.076923076923], [3238.076923076923, 2361.0], [3238.0, 2361.0128205128203], [3237.0, 2362.0], [3236.0, 2362.0055865921786], [3235.0, 2362.0163934426228], [3234.0, 2363.0], [3233.0, 2363.0078125], [3232.0, 2363.019230769231], [3231.0, 2363.0285714285715], [3230.0, 2363.0625], [3229.0625, 2364.0], [3229.0, 2364.0039215686274], [3228.0, 2364.005076142132], [3227.0, 2364.0055248618783], [3226.0, 2364.004830917874], [3225.0, 2364.0044843049327], [3224.0, 2364.004672897196], [3223.0, 2364.005347593583], [3222.0, 2364.004424778761], [3221.5, 2364.0], [3221.0, 2363.5], [3220.0, 2363.05], [3219.0, 2363.02], [3218.0, 2363.0133333333333], [3217.0, 2363.0068027210887], [3216.0, 2363.0], [3215.0, 2362.0243902439024], [3214.0, 2362.0074074074073], [3213.0, 2362.004098360656], [3212.8888888888887, 2362.0], [3212.0, 2361.1111111111113], [3211.0, 2361.008695652174], [3210.8571428571427, 2361.0], [3210.0, 2360.1428571428573], [3209.0, 2360.010101010101], [3208.5, 2360.0], [3208.0, 2359.5], [3207.0, 2359.0227272727275], [3206.0, 2359.005154639175], [3205.9655172413795, 2359.0], [3205.0, 2358.0344827586205], [3204.0, 2358.0], [3203.0, 2357.0103092783506], [3202.8333333333335, 2357.0], [3202.0, 2356.1666666666665], [3201.0, 2356.0073529411766], [3200.8571428571427, 2356.0], [3200.0, 2355.1428571428573], [3199.0, 2355.006711409396], [3198.980769230769, 2355.0], [3198.0, 2354.019230769231], [3197.9, 2354.0], [3197.0, 2353.1], [3196.0, 2353.005617977528], [3195.9864864864867, 2353.0], [3195.0, 2352.0135135135133], [3194.6666666666665, 2352.0], [3194.0, 2351.3333333333335], [3193.0, 2351.006097560976], [3192.992424242424, 2351.0], [3192.0, 2350.007575757576], [3191.984375, 2350.0], [3191.0, 2349.015625], [3190.8888888888887, 2349.0], [3190.0, 2348.1111111111113], [3189.0, 2348.005154639175], [3188.9935064935066, 2348.0], [3188.0, 2347.0064935064934], [3187.9928571428572, 2347.0], [3187.0, 2346.0071428571428], [3186.9894736842107, 2346.0], [3186.0, 2345.0105263157893], [3185.964285714286, 2345.0], [3185.0, 2344.035714285714], [3184.970588235294, 2344.0], [3184.0, 2343.029411764706], [3183.9777777777776, 2343.0], [3183.0, 2342.0222222222224], [3182.923076923077, 2342.0], [3182.0, 2341.076923076923], [3181.9666666666667, 2341.0], [3181.0, 2340.0333333333333], [3180.984375, 2340.0], [3180.0, 2339.015625], [3179.978723404255, 2339.0], [3179.0, 2338.021276595745], [3178.9791666666665, 2338.0], [3178.0, 2337.0208333333335], [3177.9919354838707, 2337.0], [3177.0, 2336.0080645161293], [3176.9896907216494, 2336.0], [3176.0, 2335.0103092783506], [3175.9896907216494, 2335.0], [3175.0, 2334.0103092783506], [3174.9942528735633, 2334.0], [3174.6666666666665, 2333.0], [3174.0, 2332.3333333333335], [3173.75, 2332.0], [3173.0, 2331.25], [3172.6666666666665, 2331.0], [3172.0, 2330.3333333333335], [3171.96, 2330.0], [3171.0, 2329.04], [3170.96875, 2329.0], [3170.0, 2328.03125], [3169.96, 2328.0], [3169.0, 2327.04], [3168.984375, 2327.0], [3168.0, 2326.015625], [3167.9866666666667, 2326.0], [3167.0, 2325.0133333333333], [3166.9761904761904, 2325.0], [3166.0, 2324.0238095238096], [3165.9777777777776, 2324.0], [3165.0, 2323.0222222222224], [3164.972222222222, 2323.0], [3164.0, 2322.027777777778], [3163.909090909091, 2322.0], [3163.0, 2321.090909090909], [3162.75, 2321.0], [3162.0, 2320.25], [3161.0, 2320.0059523809523], [3160.985507246377, 2320.0], [3160.0, 2319.014492753623], [3159.8333333333335, 2319.0], [3159.0, 2318.1666666666665], [3158.0, 2318.0051813471505], [3157.9655172413795, 2318.0], [3157.0, 2317.0344827586205], [3156.0, 2317.005], [3155.969696969697, 2317.0], [3155.0, 2316.030303030303], [3154.0, 2316.00625], [3153.5, 2316.0], [3153.0, 2315.5], [3152.0, 2315.0243902439024], [3151.0, 2315.005988023952], [3150.0, 2315.0042735042734], [3149.6666666666665, 2315.0], [3149.0, 2314.3333333333335], [3148.0, 2314.090909090909], [3147.0, 2314.027777777778], [3146.0, 2314.0113636363635], [3145.0, 2314.0102040816328], [3144.0, 2314.010989010989], [3143.0, 2314.008547008547], [3142.0, 2314.007042253521], [3141.0, 2314.0079365079364], [3140.0, 2314.0114942528735], [3139.0, 2314.0142857142855], [3138.0, 2314.014705882353], [3137.0, 2314.025641025641], [3136.0, 2314.0714285714284], [3135.0, 2314.1666666666665], [3134.0, 2314.3333333333335], [3133.3333333333335, 2315.0], [3133.0, 2315.004016064257], [3132.0, 2315.0048780487805], [3131.0, 2315.0072463768115], [3130.0, 2315.0093457943926], [3129.0, 2315.0208333333335], [3128.0, 2315.125], [3127.0, 2316.0], [3126.0, 2316.0044052863436], [3125.0, 2316.006896551724], [3124.0, 2316.0188679245284], [3123.0, 2316.076923076923], [3122.0, 2316.3333333333335], [3121.3333333333335, 2317.0], [3121.0, 2317.0048543689322], [3120.0, 2317.0081967213114], [3119.0, 2317.0416666666665], [3118.0, 2317.5], [3117.5, 2318.0], [3117.0, 2318.004329004329], [3116.0, 2318.0116279069766], [3115.0, 2318.0526315789475], [3114.0, 2318.5], [3113.5, 2319.0], [3113.0, 2319.0051813471505], [3112.0, 2319.014705882353], [3111.0, 2319.1666666666665], [3110.1666666666665, 2320.0], [3110.0, 2320.004048582996], [3109.0, 2320.0063694267515], [3108.0, 2320.0384615384614], [3107.0384615384614, 2321.0], [3107.0, 2321.0040322580644], [3106.0, 2321.007042253521], [3105.0, 2321.0263157894738], [3104.0, 2322.0], [3103.0, 2322.0080645161293], [3102.0, 2322.076923076923], [3101.076923076923, 2323.0], [3101.0, 2323.0043103448274], [3100.0, 2323.009009009009], [3099.0, 2323.3333333333335], [3098.3333333333335, 2324.0], [3098.0, 2324.0064935064934], [3097.0, 2324.029411764706], [3096.029411764706, 2325.0], [3096.0, 2325.004716981132], [3095.0, 2325.0153846153844], [3094.0, 2326.0], [3093.0, 2326.0117647058823], [3092.0, 2326.1428571428573], [3091.1428571428573, 2327.0], [3091.0, 2327.0098039215686], [3090.0, 2327.5], [3089.5, 2328.0], [3089.0, 2328.008849557522], [3088.0, 2328.25], [3087.25, 2329.0], [3087.0, 2329.0138888888887], [3086.0138888888887, 2330.0], [3086.0, 2330.004739336493], [3085.0, 2330.0185185185187], [3084.0185185185187, 2331.0], [3084.0, 2331.005376344086], [3083.0, 2331.1111111111113], [3082.1111111111113, 2332.0], [3082.0, 2332.007042253521], [3081.0, 2332.1666666666665], [3080.1666666666665, 2333.0], [3080.0, 2333.0169491525426], [3079.0169491525426, 2334.0], [3079.0, 2334.0057142857145], [3078.0, 2334.0588235294117], [3077.0588235294117, 2335.0], [3077.0, 2335.009433962264], [3076.009433962264, 2336.0], [3076.0, 2336.0046948356808], [3075.0, 2336.027777777778], [3074.027777777778, 2337.0], [3074.0, 2337.0054945054944], [3073.0, 2337.1], [3072.1, 2338.0], [3072.0, 2338.0169491525426], [3071.0169491525426, 2339.0], [3071.0, 2339.0042918454938], [3070.0, 2339.016666666667], [3069.016666666667, 2340.0], [3069.0, 2340.0060606060606], [3068.0, 2340.1], [3067.1, 2341.0], [3067.0, 2341.0063694267515], [3066.0, 2341.0588235294117], [3065.0588235294117, 2342.0], [3065.0, 2342.0067567567567], [3064.0, 2342.3333333333335], [3063.3333333333335, 2343.0], [3063.0, 2343.009090909091], [3062.0, 2343.0588235294117], [3061.0588235294117, 2344.0], [3061.0, 2344.005681818182], [3060.0, 2344.0625], [3059.0625, 2345.0], [3059.0, 2345.0042372881358], [3058.0, 2345.0075187969924], [3057.0, 2345.032258064516], [3056.0, 2346.0], [3055.0, 2346.0123456790125], [3054.0, 2346.0625], [3053.0, 2346.5], [3052.5, 2347.0], [3052.0, 2347.0045871559632], [3051.0, 2347.008849557522], [3050.0, 2347.0151515151515], [3049.0, 2347.0133333333333], [3048.0, 2347.012048192771], [3047.0, 2347.0153846153844], [3046.0, 2347.035714285714], [3045.0, 2347.04], [3044.0, 2347.019230769231], [3043.0, 2347.0079365079364], [3042.0, 2347.0067567567567], [3041.0, 2347.0042918454938], [3040.9655172413795, 2347.0], [3040.0, 2346.0344827586205], [3039.0, 2346.006097560976], [3038.5, 2346.0], [3038.0, 2345.5], [3037.0, 2345.0333333333333], [3036.0, 2345.006134969325], [3035.983870967742, 2345.0], [3035.0, 2344.016129032258], [3034.909090909091, 2344.0], [3034.0, 2343.090909090909], [3033.0, 2343.0059523809523], [3032.9912280701756, 2343.0], [3032.0, 2342.0087719298244], [3031.9871794871797, 2342.0], [3031.0, 2341.0128205128203], [3030.9411764705883, 2341.0], [3030.0, 2340.0588235294117], [3029.9850746268658, 2340.0], [3029.0, 2339.0149253731342], [3028.991304347826, 2339.0], [3028.0, 2338.008695652174], [3027.9941520467837, 2338.0], [3027.923076923077, 2337.0], [3027.0, 2336.076923076923], [3026.923076923077, 2336.0], [3026.0, 2335.076923076923], [3025.9924812030076, 2335.0], [3025.9, 2334.0], [3025.0, 2333.1], [3024.987804878049, 2333.0], [3024.0, 2332.012195121951], [3023.9960784313726, 2332.0], [3023.9936305732485, 2331.0], [3023.9761904761904, 2330.0], [3023.0, 2329.0238095238096], [3022.9957805907175, 2329.0], [3022.9887640449438, 2328.0], [3022.8, 2327.0], [3022.0, 2326.2], [3021.9957081545062, 2326.0], [3021.9945355191257, 2325.0], [3021.9868421052633, 2324.0], [3021.909090909091, 2323.0], [3021.5, 2322.0], [3021.0, 2321.5], [3020.996062992126, 2321.0], [3020.995652173913, 2320.0], [3020.994652406417, 2319.0], [3020.991452991453, 2318.0], [3020.985507246377, 2317.0], [3020.9859154929577, 2316.0], [3020.991304347826, 2315.0], [3020.9857142857145, 2314.0], [3020.9850746268658, 2313.0], [3020.989898989899, 2312.0], [3020.9920634920636, 2311.0], [3020.9926470588234, 2310.0], [3020.9931972789113, 2309.0], [3020.992307692308, 2308.0], [3020.994082840237, 2307.0], [3020.995215311005, 2306.0], [3020.9957627118642, 2305.0], [3020.9956896551726, 2304.0], [3020.995951417004, 2303.0], [3020.996, 2302.0], [3020.9958847736625, 2301.0], [3020.995918367347, 2300.0], [3020.995951417004, 2299.0], [3020.9957264957266, 2298.0], [3020.995475113122, 2297.0], [3020.994764397906, 2296.0], [3020.9913793103447, 2295.0], [3020.9850746268658, 2294.0], [3020.975, 2293.0], [3020.875, 2292.0], [3020.0, 2291.125], [3019.996015936255, 2291.0], [3019.993670886076, 2290.0], [3019.9861111111113, 2289.0], [3019.8, 2288.0], [3019.0, 2287.2], [3018.9928057553957, 2287.0], [3018.9583333333335, 2286.0], [3018.0, 2285.0416666666665], [3017.994623655914, 2285.0], [3017.9655172413795, 2284.0], [3017.0, 2283.0344827586205], [3016.9944134078214, 2283.0], [3016.9333333333334, 2282.0], [3016.0, 2281.0666666666666], [3015.9871794871797, 2281.0], [3015.0, 2280.0128205128203], [3014.9934210526317, 2280.0], [3014.5, 2279.0], [3014.0, 2278.5], [3013.8888888888887, 2278.0], [3013.0, 2277.1111111111113], [3012.9, 2277.0], [3012.0, 2276.1], [3011.9333333333334, 2276.0], [3011.0, 2275.0666666666666], [3010.923076923077, 2275.0], [3010.0, 2274.076923076923], [3009.0, 2274.0], [3008.0, 2273.0071942446043], [3007.9841269841268, 2273.0], [3007.0, 2272.0158730158732], [3006.5, 2272.0], [3006.0, 2271.5], [3005.0, 2271.0103092783506], [3004.875, 2271.0], [3004.0, 2270.125], [3003.0, 2270.00826446281], [3002.0, 2270.0], [3001.0, 2269.0151515151515], [3000.0, 2269.0062111801244], [2999.0, 2269.0044444444443], [2998.0, 2269.0], [2997.0, 2268.3333333333335], [2996.0, 2268.1666666666665], [2995.0, 2268.0588235294117], [2994.0, 2268.125], [2993.125, 2269.0], [2993.0, 2269.004], [2992.0, 2269.0052631578947], [2991.0, 2269.0104166666665], [2990.0, 2269.0434782608695], [2989.0434782608695, 2270.0], [2989.0, 2270.004081632653], [2988.0, 2270.008474576271], [2987.0, 2270.1], [2986.1, 2271.0], [2986.0, 2271.0078125], [2985.0, 2271.1428571428573], [2984.1428571428573, 2272.0], [2984.0, 2272.008474576271], [2983.0, 2272.5], [2982.5, 2273.0], [2982.0, 2273.0344827586205], [2981.0344827586205, 2274.0], [2981.0, 2274.0057142857145], [2980.0, 2274.5], [2979.5, 2275.0], [2979.0, 2275.5], [2978.5, 2276.0], [2978.0, 2276.0714285714284], [2977.0714285714284, 2277.0], [2977.0, 2277.0434782608695], [2976.0434782608695, 2278.0], [2976.0, 2278.0526315789475], [2975.0526315789475, 2279.0], [2975.0, 2279.0555555555557], [2974.0555555555557, 2280.0], [2974.0, 2280.02], [2973.02, 2281.0], [2973.0, 2281.1428571428573], [2972.1428571428573, 2282.0], [2972.0, 2283.0], [2971.006134969325, 2284.0], [2971.0, 2284.0116279069766], [2970.0116279069766, 2285.0], [2970.0, 2285.0526315789475], [2969.0526315789475, 2286.0], [2969.0, 2287.0], [2968.0061728395062, 2288.0], [2968.0, 2288.0163934426228], [2967.0163934426228, 2289.0], [2967.0, 2289.5], [2966.5, 2290.0], [2966.007692307692, 2291.0], [2966.0, 2291.0208333333335], [2965.0208333333335, 2292.0], [2965.0, 2293.0], [2964.0114942528735, 2294.0], [2964.0, 2294.25], [2963.25, 2295.0], [2963.005681818182, 2296.0], [2963.0, 2296.030303030303], [2962.030303030303, 2297.0], [2962.0051813471505, 2298.0], [2962.0, 2298.0204081632655], [2961.0204081632655, 2299.0], [2961.0, 2299.3333333333335], [2960.3333333333335, 2300.0], [2960.0093457943926, 2301.0], [2960.0, 2301.5], [2959.5, 2302.0], [2959.0086206896553, 2303.0], [2959.0, 2303.05], [2958.05, 2304.0], [2958.006134969325, 2305.0], [2958.0, 2305.0666666666666], [2957.0666666666666, 2306.0], [2957.0048076923076, 2307.0], [2957.0, 2307.015625], [2956.015625, 2308.0], [2956.0, 2309.0], [2955.0158730158732, 2310.0], [2955.0, 2310.3333333333335], [2954.3333333333335, 2311.0], [2954.006451612903, 2312.0], [2954.0, 2312.0434782608695], [2953.0434782608695, 2313.0], [2953.0061728395062, 2314.0], [2953.0, 2314.0172413793102], [2952.0172413793102, 2315.0], [2952.0, 2315.3333333333335], [2951.3333333333335, 2316.0], [2951.0125, 2317.0], [2951.0, 2317.25], [2950.25, 2318.0], [2950.0059523809523, 2319.0], [2950.0, 2319.0243902439024], [2949.0243902439024, 2320.0], [2949.0046511627907, 2321.0], [2949.0, 2321.0188679245284], [2948.0188679245284, 2322.0], [2948.0, 2322.1666666666665], [2947.1666666666665, 2323.0], [2947.0057142857145, 2324.0], [2947.0, 2324.0333333333333], [2946.0333333333333, 2325.0], [2946.0052083333335, 2326.0], [2946.0, 2326.0163934426228], [2945.0163934426228, 2327.0], [2945.0, 2327.25], [2944.25, 2328.0], [2944.0087719298244, 2329.0], [2944.0, 2329.25], [2943.25, 2330.0], [2943.008695652174, 2331.0], [2943.0, 2331.090909090909], [2942.090909090909, 2332.0], [2942.008333333333, 2333.0], [2942.0, 2334.0], [2941.015625, 2335.0], [2941.0049261083745, 2336.0], [2941.0, 2336.125], [2940.125, 2337.0], [2940.016129032258, 2338.0], [2940.004739336493, 2339.0], [2940.0, 2340.0], [2940.0, 2341.0], [2939.25, 2342.0], [2939.5, 2343.0], [2940.0, 2344.0], [2940.004385964912, 2345.0], [2940.0135135135133, 2346.0], [2940.1666666666665, 2347.0], [2941.0, 2347.8333333333335], [2941.009009009009, 2348.0], [2941.5, 2349.0], [2942.0, 2349.5], [2942.0196078431372, 2350.0], [2943.0, 2350.9803921568628], [2943.030303030303, 2351.0], [2944.0, 2351.969696969697], [2944.04, 2352.0], [2945.0, 2352.96], [2945.1428571428573, 2353.0], [2946.0, 2353.8571428571427], [2947.0, 2353.9948979591836], [2947.0081967213114, 2354.0], [2948.0, 2354.9918032786886], [2948.125, 2355.0], [2949.0, 2355.875], [2950.0, 2355.9906542056074], [2950.1666666666665, 2356.0], [2951.0, 2356.8333333333335], [2952.0, 2356.987804878049], [2953.0, 2356.995475113122], [2953.0666666666666, 2357.0], [2954.0, 2357.9333333333334], [2955.0, 2357.991150442478], [2956.0, 2357.9957081545062], [2956.1428571428573, 2358.0], [2957.0, 2358.8571428571427], [2958.0, 2358.964285714286], [2959.0, 2358.991304347826], [2960.0, 2358.9945945945947], [2961.0, 2359.0], [2962.0, 2359.8333333333335], [2963.0, 2359.9444444444443], [2964.0, 2359.9827586206898], [2965.0, 2359.9936305732485], [2966.0, 2359.9947368421053], [2967.0, 2359.995535714286], [2968.0, 2360.0], [2969.0, 2360.9333333333334], [2970.0, 2360.9777777777776], [2971.0, 2360.9859154929577], [2972.0, 2360.9910714285716], [2973.0, 2360.9951923076924], [2974.0, 2361.0], [2975.0, 2361.923076923077], [2976.0, 2361.9821428571427], [2977.0, 2361.9951219512195], [2977.125, 2362.0], [2978.0, 2362.875], [2979.0, 2362.972972972973], [2980.0, 2362.9919354838707], [2980.3333333333335, 2363.0], [2981.0, 2363.6666666666665], [2982.0, 2363.9896907216494], [2983.0, 2363.995614035088], [2983.0434782608695, 2364.0], [2984.0, 2364.9565217391305], [2985.0, 2364.9933774834435], [2985.0113636363635, 2365.0], [2986.0, 2365.9886363636365], [2987.0, 2365.995575221239], [2987.016666666667, 2366.0], [2988.0, 2366.983333333333], [2988.0333333333333, 2367.0], [2989.0, 2367.9666666666667], [2989.25, 2368.0], [2990.0, 2368.75], [2991.0, 2368.994350282486], [2991.013698630137, 2369.0], [2992.0, 2369.986301369863], [2992.0119047619046, 2370.0], [2993.0, 2370.9880952380954], [2993.0153846153844, 2371.0], [2994.0, 2371.9846153846156], [2994.0151515151515, 2372.0], [2995.0, 2372.9848484848485], [2995.0055865921786, 2373.0], [2995.1666666666665, 2374.0], [2996.0, 2374.8333333333335], [2996.0454545454545, 2375.0], [2997.0, 2375.9545454545455], [2997.027777777778, 2376.0], [2998.0, 2376.972222222222], [2998.0060240963853, 2377.0], [2998.0416666666665, 2378.0], [2999.0, 2378.9583333333335], [2999.0072463768115, 2379.0], [2999.5, 2380.0], [3000.0, 2380.5], [3000.0102040816328, 2381.0], [3000.0476190476193, 2382.0], [3001.0, 2382.9523809523807], [3001.0046082949307, 2383.0], [3001.0128205128203, 2384.0], [3002.0, 2385.0], [3002.009259259259, 2386.0], [3002.025641025641, 2387.0], [3002.076923076923, 2388.0], [3003.0, 2388.923076923077], [3003.0042194092825, 2389.0], [3003.009433962264, 2390.0], [3003.019230769231, 2391.0], [3003.0208333333335, 2392.0], [3003.030303030303, 2393.0], [3003.0666666666666, 2394.0], [3004.0, 2395.0], [3004.0041152263375, 2396.0], [3004.0041152263375, 2397.0], [3004.0040650406504, 2398.0], [3004.003984063745, 2399.0], [3004.0039215686274, 2400.0], [3004.0, 2401.0], [3003.0833333333335, 2402.0], [3003.019230769231, 2403.0], [3003.009900990099, 2404.0], [3003.0061728395062, 2405.0], [3003.0050505050503, 2406.0], [3003.0, 2406.5], [3002.5, 2407.0], [3002.0175438596493, 2408.0], [3002.0075187969924, 2409.0], [3002.004464285714, 2410.0], [3002.0, 2410.03125], [3001.03125, 2411.0], [3001.0046511627907, 2412.0], [3001.0, 2412.027777777778], [3000.027777777778, 2413.0], [3000.0054347826085, 2414.0], [3000.0, 2414.2], [2999.2, 2415.0], [2999.0062111801244, 2416.0], [2999.0, 2416.0185185185187], [2998.0185185185187, 2417.0], [2998.0, 2418.0], [2997.0, 2419.0], [2996.006134969325, 2420.0], [2996.0, 2420.0091743119265], [2995.0091743119265, 2421.0], [2995.0, 2421.03125], [2994.03125, 2422.0], [2994.0, 2422.032258064516], [2993.032258064516, 2423.0], [2993.0, 2423.01], [2992.01, 2424.0], [2992.0, 2424.0169491525426], [2991.0169491525426, 2425.0], [2991.0, 2425.0104166666665], [2990.0104166666665, 2426.0], [2990.0, 2426.0051020408164], [2989.0, 2426.0833333333335], [2988.0833333333335, 2427.0], [2988.0, 2427.0333333333333], [2987.0333333333333, 2428.0], [2987.0, 2428.009708737864], [2986.0, 2428.3333333333335], [2985.3333333333335, 2429.0], [2985.0, 2429.021276595745], [2984.021276595745, 2430.0], [2984.0, 2430.006993006993], [2983.0, 2430.076923076923], [2982.076923076923, 2431.0], [2982.0, 2431.006097560976], [2981.0, 2431.0666666666666], [2980.0666666666666, 2432.0], [2980.0, 2432.0096153846152], [2979.0, 2433.0], [2978.0, 2433.0074074074073], [2977.0, 2433.090909090909], [2976.090909090909, 2434.0], [2976.0, 2434.008547008547], [2975.0, 2434.0666666666666], [2974.0666666666666, 2435.0], [2974.0, 2435.004672897196], [2973.0, 2435.0149253731342], [2972.0149253731342, 2436.0], [2972.0, 2436.0041841004186], [2971.0, 2436.0112359550562], [2970.0, 2436.0625], [2969.0625, 2437.0], [2969.0, 2437.004672897196], [2968.0, 2437.0208333333335], [2967.0, 2437.25], [2966.25, 2438.0], [2966.0, 2438.0049751243782], [2965.0, 2438.011111111111], [2964.0, 2438.1428571428573], [2963.1428571428573, 2439.0], [2963.0, 2439.005319148936], [2962.0, 2439.012658227848], [2961.0, 2439.0526315789475], [2960.0526315789475, 2440.0], [2960.0, 2440.0041152263375], [2959.0, 2440.006711409396], [2958.0, 2440.0112359550562], [2957.0, 2440.037037037037], [2956.0, 2441.0], [2955.0, 2441.0057803468208], [2954.0, 2441.010752688172], [2953.0, 2441.016129032258], [2952.0, 2441.090909090909], [2951.0, 2442.0], [2950.0, 2442.0041493775934], [2949.0, 2442.0054054054053], [2948.0, 2442.0070921985816], [2947.0, 2442.0232558139537], [2946.0, 2442.0588235294117], [2945.0, 2442.0833333333335], [2944.0, 2442.125], [2943.0, 2443.0], [2942.0, 2443.004424778761], [2941.0, 2443.0045454545457], [2940.0, 2443.004784688995], [2939.0, 2443.0060240963853], [2938.0, 2443.0078125], [2937.0, 2443.0062893081763], [2936.0, 2443.005376344086], [2935.0, 2443.0051813471505], [2934.0, 2443.005025125628], [2933.0, 2443.005154639175], [2932.0, 2443.0052631578947], [2931.0, 2443.003984063745], [2930.5, 2443.0], [2930.0, 2442.5], [2929.0, 2442.3333333333335], [2928.0, 2442.0714285714284], [2927.0, 2442.0123456790125], [2926.0, 2442.005649717514], [2925.0, 2442.0], [2924.0, 2441.1428571428573], [2923.0, 2441.027777777778], [2922.0, 2441.0069444444443], [2921.6666666666665, 2441.0], [2921.0, 2440.3333333333335], [2920.0, 2440.0208333333335], [2919.0, 2440.005128205128], [2918.9836065573772, 2440.0], [2918.0, 2439.0163934426228], [2917.6666666666665, 2439.0], [2917.0, 2438.3333333333335], [2916.0, 2438.0095238095237], [2915.5, 2438.0], [2915.0, 2437.5], [2914.0, 2437.007633587786], [2913.987951807229, 2437.0], [2913.0, 2436.012048192771], [2912.9166666666665, 2436.0], [2912.0, 2435.0833333333335], [2911.875, 2435.0], [2911.0, 2434.125], [2910.962962962963, 2434.0], [2910.0, 2433.037037037037], [2909.9655172413795, 2433.0], [2909.0, 2432.0344827586205], [2908.9411764705883, 2432.0], [2908.0, 2431.0588235294117], [2907.9885057471265, 2431.0], [2907.0, 2430.0114942528735], [2906.9953051643192, 2430.0], [2906.875, 2429.0], [2906.0, 2428.125], [2905.99173553719, 2428.0], [2905.9411764705883, 2427.0], [2905.0, 2426.0588235294117], [2904.9945355191257, 2426.0], [2904.95, 2425.0], [2904.0, 2424.05], [2903.9941520467837, 2424.0], [2903.9791666666665, 2423.0], [2903.8333333333335, 2422.0], [2903.0, 2421.1666666666665], [2902.9951456310678, 2421.0], [2902.9895833333335, 2420.0], [2902.9803921568628, 2419.0], [2902.974358974359, 2418.0], [2902.9, 2417.0], [2902.0, 2416.0], [2901.995169082126, 2415.0], [2901.992957746479, 2414.0], [2901.993103448276, 2413.0], [2901.991666666667, 2412.0], [2901.9887640449438, 2411.0], [2901.9903846153848, 2410.0], [2901.993902439024, 2409.0], [2901.9942857142855, 2408.0], [2901.9936305732485, 2407.0], [2901.9942528735633, 2406.0], [2901.9953051643192, 2405.0], [2901.995951417004, 2404.0], [2901.9960784313726, 2403.0], [2901.9960784313726, 2402.0], [2902.0, 2401.5], [2902.5, 2401.0], [2902.6666666666665, 2400.0], [2902.5, 2399.0], [2902.5, 2398.0], [2902.5, 2397.0], [2902.0, 2396.0], [2901.9959349593496, 2395.0], [2901.9944134078214, 2394.0], [2901.9886363636365, 2393.0], [2901.9285714285716, 2392.0], [2901.0, 2391.0], [2900.989247311828, 2390.0], [2900.0, 2389.0], [2899.9736842105262, 2388.0], [2899.0, 2387.0263157894738], [2898.987012987013, 2387.0], [2898.0, 2386.012987012987], [2897.9927536231885, 2386.0], [2897.0, 2385.0072463768115], [2896.9924812030076, 2385.0], [2896.0, 2384.0075187969924], [2895.990291262136, 2384.0], [2895.0, 2383.009708737864], [2894.96, 2383.0], [2894.0, 2382.04], [2893.0, 2382.0068027210887], [2892.909090909091, 2382.0], [2892.0, 2381.090909090909], [2891.0, 2381.0087719298244], [2890.0, 2381.0], [2889.0, 2380.030303030303], [2888.0, 2380.0061728395062], [2887.0, 2380.0042372881358], [2886.6666666666665, 2380.0], [2886.0, 2379.3333333333335], [2885.0, 2379.0526315789475], [2884.0, 2379.0158730158732], [2883.0, 2379.0098039215686], [2882.0, 2379.0069444444443], [2881.0, 2379.0064935064934], [2880.0, 2379.004830917874], [2879.0, 2379.0046082949307], [2878.0, 2379.0043103448274], [2877.0, 2379.005347593583], [2876.0, 2379.005319148936], [2875.0, 2379.0062111801244], [2874.0, 2379.007462686567], [2873.0, 2379.0102040816328], [2872.0, 2379.0208333333335], [2871.0, 2379.035714285714], [2870.0, 2379.0526315789475], [2869.0, 2379.5], [2868.5, 2380.0], [2868.0, 2380.0042372881358], [2867.0, 2380.005], [2866.0, 2380.0078125], [2865.0, 2380.0151515151515], [2864.0, 2380.076923076923], [2863.0, 2381.0], [2862.0, 2381.0040650406504], [2861.0, 2381.005617977528], [2860.0, 2381.0116279069766], [2859.0, 2381.0285714285715], [2858.0, 2381.0454545454545], [2857.0, 2381.1111111111113], [2856.1111111111113, 2382.0], [2856.0, 2382.003937007874], [2855.0, 2382.0048076923076], [2854.0, 2382.0066666666667], [2853.0, 2382.0064935064934], [2852.0, 2382.0128205128203], [2851.0, 2382.021739130435], [2850.0, 2382.0208333333335], [2849.0, 2382.014705882353], [2848.0, 2382.0153846153844], [2847.0, 2382.027027027027], [2846.0, 2382.0285714285715], [2845.0, 2382.0112359550562], [2844.0, 2382.00625], [2843.0, 2382.008849557522], [2842.0, 2382.005649717514], [2841.0, 2382.0040322580644], [2840.9375, 2382.0], [2840.0, 2381.0625], [2839.0, 2381.027027027027], [2838.0, 2381.0158730158732], [2837.0, 2381.0067567567567], [2836.0, 2381.0], [2835.0, 2380.0454545454545], [2834.0, 2380.010101010101], [2833.0, 2380.0], [2832.0, 2379.012987012987], [2831.0, 2379.0046082949307], [2830.9285714285716, 2379.0], [2830.0, 2378.0714285714284], [2829.0, 2378.008695652174], [2828.964285714286, 2378.0], [2828.0, 2377.035714285714], [2827.0, 2377.005882352941], [2826.9565217391305, 2377.0], [2826.0, 2376.0434782608695], [2825.8333333333335, 2376.0], [2825.0, 2375.1666666666665], [2824.0, 2375.006134969325], [2823.970588235294, 2375.0], [2823.0, 2374.029411764706], [2822.909090909091, 2374.0], [2822.0, 2373.090909090909], [2821.9444444444443, 2373.0], [2821.0, 2372.0555555555557], [2820.0, 2372.0057803468208], [2819.994708994709, 2372.0], [2819.8333333333335, 2371.0], [2819.0, 2370.1666666666665], [2818.9615384615386, 2370.0], [2818.0, 2369.0384615384614], [2817.9444444444443, 2369.0], [2817.0, 2368.0555555555557], [2816.9876543209875, 2368.0], [2816.0, 2367.0], [2815.9473684210525, 2366.0], [2815.0, 2365.0526315789475], [2814.9954954954956, 2365.0], [2814.986301369863, 2364.0], [2814.5, 2363.0], [2814.0, 2362.5], [2813.9859154929577, 2362.0], [2813.8571428571427, 2361.0], [2813.0, 2360.1428571428573], [2812.9958158995814, 2360.0], [2812.9941520467837, 2359.0], [2812.9883720930234, 2358.0], [2812.9, 2357.0], [2812.0, 2356.1], [2811.9960784313726, 2356.0], [2812.0, 2355.0], [2812.0, 2354.0], [2811.9950495049507, 2353.0], [2811.9958158995814, 2352.0], [2812.0, 2351.0], [2812.8333333333335, 2350.0], [2812.875, 2349.0], [2812.9583333333335, 2348.0], [2812.987951807229, 2347.0], [2812.9954954954956, 2346.0], [2813.0, 2345.5], [2813.5, 2345.0], [2813.964285714286, 2344.0], [2813.9940476190477, 2343.0], [2814.0, 2342.9333333333334], [2814.9333333333334, 2342.0], [2814.990990990991, 2341.0], [2814.995633187773, 2340.0], [2815.0, 2339.9523809523807], [2815.9523809523807, 2339.0], [2815.994382022472, 2338.0], [2816.0, 2337.98], [2816.98, 2337.0], [2816.9950495049507, 2336.0], [2817.0, 2335.9615384615386], [2817.9615384615386, 2335.0], [2818.0, 2334.6666666666665], [2818.6666666666665, 2334.0], [2818.992537313433, 2333.0], [2819.0, 2332.969696969697], [2819.969696969697, 2332.0], [2819.995327102804, 2331.0], [2820.0, 2330.980769230769], [2820.980769230769, 2330.0], [2821.0, 2329.972972972973], [2821.972972972973, 2329.0], [2822.0, 2328.8], [2822.8, 2328.0], [2822.9928057553957, 2327.0], [2823.0, 2326.9880952380954], [2823.9880952380954, 2326.0], [2824.0, 2325.990099009901], [2824.990099009901, 2325.0], [2825.0, 2324.9880952380954], [2825.9880952380954, 2324.0], [2826.0, 2323.9736842105262], [2826.9736842105262, 2323.0], [2827.0, 2322.9714285714285], [2827.9714285714285, 2322.0], [2828.0, 2321.9931972789113], [2828.9931972789113, 2321.0], [2829.0, 2320.9927536231885], [2829.9927536231885, 2320.0], [2830.0, 2319.9953703703704], [2831.0, 2319.980769230769], [2831.980769230769, 2319.0], [2832.0, 2318.9953917050693], [2833.0, 2318.9411764705883], [2833.9411764705883, 2318.0], [2834.0, 2317.9933774834435], [2835.0, 2317.975], [2836.0, 2317.8], [2836.8, 2317.0], [2837.0, 2316.9937106918237], [2838.0, 2316.96875], [2839.0, 2316.9166666666665], [2840.0, 2316.6666666666665], [2840.6666666666665, 2316.0], [2841.0, 2315.995983935743], [2842.0, 2316.0], [2843.0, 2316.8333333333335], [2844.0, 2316.962962962963], [2845.0, 2316.9666666666667], [2846.0, 2316.9714285714285], [2847.0, 2316.987951807229], [2848.0, 2316.995475113122], [2848.1428571428573, 2317.0], [2849.0, 2317.8571428571427], [2850.0, 2317.980769230769], [2851.0, 2317.9953703703704], [2851.016129032258, 2318.0], [2852.0, 2318.983870967742], [2853.0, 2319.0], [2854.0, 2319.978260869565], [2855.0, 2319.9948186528495], [2855.05, 2320.0], [2856.0, 2320.95], [2857.0, 2321.0], [2858.0, 2321.990740740741], [2858.5, 2322.0], [2859.0, 2322.5], [2860.0, 2322.991869918699], [2860.021739130435, 2323.0], [2861.0, 2323.978260869565], [2862.0, 2324.0], [2863.0, 2324.987012987013], [2863.125, 2325.0], [2864.0, 2325.875], [2865.0, 2325.994974874372], [2865.0232558139537, 2326.0], [2866.0, 2326.9767441860463], [2867.0, 2326.995215311005], [2867.0163934426228, 2327.0], [2868.0, 2327.9836065573772], [2869.0, 2328.0], [2870.0, 2328.9803921568628], [2871.0, 2328.995238095238], [2871.0625, 2329.0], [2872.0, 2329.9375], [2873.0, 2329.9931506849316], [2874.0, 2329.9958847736625], [2874.25, 2330.0], [2875.0, 2330.75], [2876.0, 2330.9777777777776], [2877.0, 2330.9893617021276], [2878.0, 2330.993006993007], [2879.0, 2330.995169082126], [2880.0, 2330.995744680851], [2881.0, 2330.9953703703704], [2882.0, 2330.9941520467837], [2883.0, 2330.9887640449438], [2884.0, 2330.96875], [2885.0, 2330.5], [2885.5, 2330.0], [2886.0, 2329.9954545454543], [2887.0, 2329.978260869565], [2887.978260869565, 2329.0], [2888.0, 2328.990990990991], [2889.0, 2328.0], [2890.0, 2327.8333333333335], [2890.8333333333335, 2327.0], [2891.0, 2326.75], [2891.75, 2326.0], [2892.0, 2325.6666666666665], [2892.6666666666665, 2325.0], [2892.9932432432433, 2324.0], [2893.0, 2323.972222222222], [2893.972222222222, 2323.0], [2894.0, 2322.0], [2894.987012987013, 2321.0], [2895.0, 2320.0], [2895.980769230769, 2319.0], [2895.995535714286, 2318.0], [2896.0, 2317.9473684210525], [2896.9473684210525, 2317.0], [2896.987012987013, 2316.0], [2896.9949494949497, 2315.0], [2897.0, 2314.75], [2897.75, 2314.0], [2897.9714285714285, 2313.0], [2897.9836065573772, 2312.0], [2897.992957746479, 2311.0], [2897.99604743083, 2310.0], [2897.9956896551726, 2309.0], [2897.9960784313726, 2308.0], [2898.0, 2307.5], [2898.5, 2307.0], [2898.75, 2306.0], [2898.6666666666665, 2305.0], [2898.75, 2304.0], [2898.909090909091, 2303.0], [2898.6666666666665, 2302.0], [2898.0, 2301.3333333333335], [2897.9960784313726, 2301.0], [2897.9958847736625, 2300.0], [2897.9957805907175, 2299.0], [2897.994680851064, 2298.0], [2897.993865030675, 2297.0], [2897.994350282486, 2296.0], [2897.990566037736, 2295.0], [2897.987341772152, 2294.0], [2897.9903846153848, 2293.0], [2897.9886363636365, 2292.0], [2897.9767441860463, 2291.0], [2897.96875, 2290.0], [2897.978260869565, 2289.0], [2897.984375, 2288.0], [2897.9841269841268, 2287.0], [2897.9897959183672, 2286.0], [2897.994708994709, 2285.0], [2897.9954337899544, 2284.0], [2897.99604743083, 2283.0], [2898.0, 2282.75], [2898.75, 2282.0], [2898.967741935484, 2281.0], [2898.9897959183672, 2280.0], [2898.9945355191257, 2279.0], [2899.0, 2278.8571428571427], [2899.8571428571427, 2278.0], [2899.981818181818, 2277.0], [2899.9924812030076, 2276.0], [2900.0, 2275.0], [2900.9791666666665, 2274.0], [2900.994382022472, 2273.0], [2901.0, 2272.5], [2901.5, 2272.0], [2901.98, 2271.0], [2901.9954337899544, 2270.0], [2902.0, 2269.9565217391305], [2902.9565217391305, 2269.0], [2902.9918032786886, 2268.0], [2903.0, 2267.6666666666665], [2903.6666666666665, 2267.0], [2903.9919354838707, 2266.0], [2904.0, 2265.75], [2904.75, 2265.0], [2904.9861111111113, 2264.0], [2904.9955947136564, 2263.0], [2905.0, 2262.9868421052633], [2905.9868421052633, 2262.0], [2906.0, 2261.6666666666665], [2906.6666666666665, 2261.0], [2906.9857142857145, 2260.0], [2907.0, 2259.5], [2907.5, 2259.0], [2907.9934210526317, 2258.0], [2908.0, 2257.970588235294], [2908.970588235294, 2257.0], [2908.995475113122, 2256.0], [2909.0, 2255.9846153846156], [2909.9846153846156, 2255.0], [2910.0, 2254.970588235294], [2910.970588235294, 2254.0], [2911.0, 2253.5], [2911.5, 2253.0], [2911.9913793103447, 2252.0], [2912.0, 2251.9880952380954], [2912.9880952380954, 2251.0], [2913.0, 2250.9885057471265], [2913.9885057471265, 2250.0], [2914.0, 2249.981818181818], [2914.981818181818, 2249.0], [2915.0, 2248.9444444444443], [2915.9444444444443, 2248.0], [2916.0, 2247.9814814814813], [2916.9814814814813, 2247.0], [2917.0, 2246.9875], [2917.9875, 2246.0], [2918.0, 2245.9944444444445], [2919.0, 2245.95], [2919.95, 2245.0], [2920.0, 2244.9918032786886], [2921.0, 2244.0], [2922.0, 2243.986301369863], [2923.0, 2243.875], [2923.875, 2243.0], [2924.0, 2242.987951807229], [2925.0, 2242.9], [2925.9, 2242.0], [2926.0, 2241.995633187773], [2927.0, 2241.9912280701756], [2928.0, 2241.9], [2928.9, 2241.0], [2929.0, 2240.995215311005], [2930.0, 2240.99358974359], [2931.0, 2240.9803921568628], [2932.0, 2240.75], [2932.75, 2240.0], [2933.0, 2239.995867768595], [2934.0, 2239.9939393939394], [2935.0, 2239.9850746268658], [2936.0, 2239.9], [2937.0, 2239.0], [2938.0, 2238.995238095238], [2939.0, 2238.9927536231885], [2940.0, 2238.9655172413795], [2941.0, 2238.75], [2941.75, 2238.0], [2942.0, 2237.995744680851], [2943.0, 2237.991452991453], [2944.0, 2237.9615384615386], [2945.0, 2237.5], [2945.5, 2237.0], [2946.0, 2236.9947368421053], [2947.0, 2236.9821428571427], [2948.0, 2236.5], [2948.5, 2236.0], [2949.0, 2235.9954545454543], [2950.0, 2235.9811320754716], [2950.9811320754716, 2235.0], [2951.0, 2234.9957264957266], [2952.0, 2234.9876543209875], [2953.0, 2234.0], [2954.0, 2233.9756097560976], [2954.9756097560976, 2233.0], [2955.0, 2232.9950248756218], [2956.0, 2232.9333333333334], [2956.9333333333334, 2232.0], [2957.0, 2231.9756097560976], [2957.9756097560976, 2231.0], [2958.0, 2230.99375], [2959.0, 2230.75], [2959.75, 2230.0], [2960.0, 2229.75], [2960.75, 2229.0], [2961.0, 2228.8333333333335], [2961.8333333333335, 2228.0], [2962.0, 2227.8888888888887], [2962.8888888888887, 2227.0], [2963.0, 2226.5], [2963.5, 2226.0], [2963.9941860465115, 2225.0], [2964.0, 2224.992366412214], [2964.992366412214, 2224.0], [2965.0, 2223.9166666666665], [2965.9166666666665, 2223.0], [2965.994011976048, 2222.0], [2966.0, 2221.96], [2966.96, 2221.0], [2966.9937888198756, 2220.0], [2967.0, 2219.8], [2967.8, 2219.0], [2967.9913793103447, 2218.0], [2967.995575221239, 2217.0], [2967.9957983193276, 2216.0], [2967.995867768595, 2215.0], [2967.9958158995814, 2214.0], [2967.995744680851, 2213.0], [2967.9944751381217, 2212.0], [2967.9871794871797, 2211.0], [2967.8333333333335, 2210.0], [2967.0, 2209.1666666666665], [2966.9935064935066, 2209.0], [2966.5, 2208.0], [2966.0, 2207.5], [2965.9714285714285, 2207.0], [2965.0, 2206.0285714285715], [2964.9861111111113, 2206.0], [2964.0, 2205.0138888888887], [2963.9894736842107, 2205.0], [2963.0, 2204.0105263157893], [2962.991869918699, 2204.0], [2962.0, 2203.008130081301], [2961.987341772152, 2203.0], [2961.0, 2202.012658227848], [2960.9545454545455, 2202.0], [2960.0, 2201.0454545454545], [2959.75, 2201.0], [2959.0, 2200.25], [2958.0, 2200.0062893081763], [2957.974358974359, 2200.0], [2957.0, 2199.025641025641], [2956.5, 2199.0], [2956.0, 2198.5], [2955.0, 2198.006451612903], [2954.8888888888887, 2198.0], [2954.0, 2197.1111111111113], [2953.0, 2197.0078125], [2952.9333333333334, 2197.0], [2952.0, 2196.0666666666666], [2951.0, 2196.007462686567], [2950.6666666666665, 2196.0], [2950.0, 2195.3333333333335], [2949.0, 2195.0140845070423], [2948.5, 2195.0], [2948.0, 2194.5], [2947.0, 2194.0140845070423], [2946.0, 2194.005882352941], [2945.0, 2194.0], [2944.0, 2193.0222222222224], [2943.0, 2193.0060240963853], [2942.0, 2193.0], [2941.0, 2192.0714285714284], [2940.0, 2192.0140845070423], [2939.0, 2192.005376344086], [2938.0, 2192.0041493775934], [2937.0, 2192.0], [2936.0, 2191.076923076923], [2935.0, 2191.029411764706], [2934.0, 2191.0263157894738], [2933.0, 2191.018181818182], [2932.0, 2191.0123456790125], [2931.0, 2191.0131578947367], [2930.0, 2191.0172413793102], [2929.0, 2191.0285714285715], [2928.0, 2191.0333333333333], [2927.0, 2191.0714285714284], [2926.0, 2191.5], [2925.5, 2192.0], [2925.0, 2192.00395256917], [2924.0, 2192.0045662100456], [2923.0, 2192.0067567567567], [2922.0, 2192.0163934426228], [2921.0, 2192.0526315789475], [2920.0, 2192.1666666666665], [2919.1666666666665, 2193.0], [2919.0, 2193.004048582996], [2918.0, 2193.0058139534885], [2917.0, 2193.009090909091], [2916.0, 2193.010989010989], [2915.0, 2193.0238095238096], [2914.0, 2193.1666666666665], [2913.1666666666665, 2194.0], [2913.0, 2194.0039215686274], [2912.0, 2194.0], [2911.0, 2194.004081632653], [2910.0, 2194.0049261083745], [2909.0, 2194.0065789473683], [2908.0, 2194.006134969325], [2907.0, 2194.005025125628], [2906.0, 2194.005128205128], [2905.0, 2194.005076142132], [2904.0, 2194.0039215686274], [2903.909090909091, 2194.0], [2903.0, 2193.090909090909], [2902.0, 2193.0416666666665], [2901.0, 2193.0232558139537], [2900.0, 2193.0089285714284], [2899.0, 2193.004098360656], [2898.9, 2193.0], [2898.0, 2192.1], [2897.0, 2192.016129032258], [2896.0, 2192.0043103448274], [2895.980769230769, 2192.0], [2895.0, 2191.019230769231], [2894.0, 2191.0054054054053], [2893.8333333333335, 2191.0], [2893.0, 2190.1666666666665], [2892.0, 2190.0133333333333], [2891.8333333333335, 2190.0], [2891.0, 2189.1666666666665], [2890.0, 2189.006329113924], [2889.8571428571427, 2189.0], [2889.0, 2188.1428571428573], [2888.0, 2188.0073529411766], [2887.9830508474574, 2188.0], [2887.0, 2187.0169491525426], [2886.909090909091, 2187.0], [2886.0, 2186.090909090909], [2885.0, 2186.005917159763], [2884.975, 2186.0], [2884.0, 2185.025], [2883.8, 2185.0], [2883.0, 2184.2], [2882.75, 2184.0], [2882.0, 2183.25], [2881.0, 2183.006134969325], [2880.9910714285716, 2183.0], [2880.0, 2182.0089285714284], [2879.994318181818, 2182.0], [2879.6666666666665, 2181.0], [2879.0, 2180.3333333333335], [2878.8, 2180.0], [2878.0, 2179.2], [2877.5, 2179.0], [2877.0, 2178.5], [2876.9473684210525, 2178.0], [2876.0, 2177.0526315789475], [2875.992, 2177.0], [2875.0, 2176.008], [2874.9950980392155, 2176.0], [2874.9777777777776, 2175.0], [2874.0, 2174.0], [2873.9934640522874, 2173.0], [2873.923076923077, 2172.0], [2873.0, 2171.076923076923], [2872.9958158995814, 2171.0], [2872.995238095238, 2170.0], [2872.991304347826, 2169.0], [2872.989010989011, 2168.0], [2872.993288590604, 2167.0], [2872.9945945945947, 2166.0], [2872.9954545454543, 2165.0], [2872.9957081545062, 2164.0], [2873.0, 2163.8571428571427], [2873.8571428571427, 2163.0], [2873.987012987013, 2162.0], [2873.9938271604938, 2161.0], [2874.0, 2160.8333333333335], [2874.8333333333335, 2160.0], [2874.9941520467837, 2159.0], [2875.0, 2158.9615384615386], [2875.9615384615386, 2158.0], [2875.994871794872, 2157.0], [2876.0, 2156.9473684210525], [2876.9473684210525, 2156.0], [2877.0, 2155.9375], [2877.9375, 2155.0], [2877.995614035088, 2154.0], [2878.0, 2153.9882352941177], [2878.9882352941177, 2153.0], [2879.0, 2152.989010989011], [2879.989010989011, 2152.0], [2880.0, 2151.9906542056074], [2880.9906542056074, 2151.0], [2881.0, 2150.9882352941177], [2881.9882352941177, 2150.0], [2882.0, 2149.9841269841268], [2882.9841269841268, 2149.0], [2883.0, 2148.9935064935066], [2884.0, 2148.0], [2885.0, 2147.5], [2885.5, 2147.0], [2886.0, 2146.962962962963], 
Download .txt
gitextract_w7ya3lpo/

├── .gitattributes
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   ├── dependabot.yml
│   └── workflows/
│       └── wheels.yml
├── .gitignore
├── CITATION.cff
├── CMakeLists.txt
├── LICENSE.md
├── README.md
├── benchmark_runner.py
├── pyproject.toml
├── src/
│   └── simplification/
│       ├── __init__.py
│       ├── cutil.pyx
│       ├── rdp_p.pxd
│       ├── stdbool.h
│       └── util.py
└── tests/
    ├── coords.json
    ├── coords_complex.json
    ├── cprofile_rust_cython.py
    ├── cprofile_rust_cython_complex.py
    ├── cprofile_rust_cython_shapely.py
    └── test_simplification.py
Download .txt
SYMBOL INDEX (18 symbols across 2 files)

FILE: src/simplification/util.py
  class _FFIArray (line 48) | class _FFIArray(Structure):
    method from_param (line 58) | def from_param(cls, seq):
    method __init__ (line 63) | def __init__(self, seq, data_type=c_double):
  class _CoordResult (line 76) | class _CoordResult(Structure):
  function _void_array_to_nested_list (line 82) | def _void_array_to_nested_list(res, _func, _args):

FILE: tests/test_simplification.py
  class PolylineTests (line 14) | class PolylineTests(unittest.TestCase):
    method setUp (line 17) | def setUp(self):
    method testNumpy_optional_error (line 516) | def testNumpy_optional_error(self):
    method testSimplify_rdp_numpy (line 521) | def testSimplify_rdp_numpy(self):
    method testSimplify_rdp (line 527) | def testSimplify_rdp(self):
    method testSimplify_vw (line 534) | def testSimplify_vw(self):
    method testCSimplify_rdp (line 541) | def testCSimplify_rdp(self):
    method testCSimplify_rdp_idx (line 548) | def testCSimplify_rdp_idx(self):
    method testCSimplify_vw (line 555) | def testCSimplify_vw(self):
    method testCSimplify_vw_idx (line 562) | def testCSimplify_vw_idx(self):
    method testCSimplify_vw_preserve (line 569) | def testCSimplify_vw_preserve(self):
    method testCEmpty_rdp (line 586) | def testCEmpty_rdp(self):
    method testCEmpty_vw (line 591) | def testCEmpty_vw(self):
Condensed preview — 23 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (5,935K chars).
[
  {
    "path": ".gitattributes",
    "chars": 108,
    "preview": "*.sh linguist-language=Java\nci/* linguist-vendored\ncutil.cpp linguist-vendored\ncutil.html linguist-vendored\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 582,
    "preview": "---\nname: Bug report\nabout: Report a bug\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n# Describe the bug\nA clear and concise"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 242,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n# Please don'"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 770,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n  "
  },
  {
    "path": ".github/workflows/wheels.yml",
    "chars": 6941,
    "preview": "name: Build and test wheels, release on new tag\n\npermissions:\n  id-token: write\n  attestations: write\n  contents: read\n\n"
  },
  {
    "path": ".gitignore",
    "chars": 15,
    "preview": "tests/output_*\n"
  },
  {
    "path": "CITATION.cff",
    "chars": 599,
    "preview": "cff-version: 1.1.0\nmessage: \"If you use this software, please cite it using these metadata.\"\nabstract: \"Simplification: "
  },
  {
    "path": "CMakeLists.txt",
    "chars": 1816,
    "preview": "cmake_minimum_required(VERSION 3.21)\nproject(${SKBUILD_PROJECT_NAME} LANGUAGES C)\n\n# Define source directory\nset(SIMPLIF"
  },
  {
    "path": "LICENSE.md",
    "chars": 1550,
    "preview": "# Blue Oak Model License\n\nVersion 1.0.0\n\n## Purpose\n\nThis license gives everyone as much permission to work with this so"
  },
  {
    "path": "README.md",
    "chars": 5476,
    "preview": "[![Build Status](https://github.com/urschrei/simplification/actions/workflows/wheels.yml/badge.svg)](https://github.com/"
  },
  {
    "path": "benchmark_runner.py",
    "chars": 1143,
    "preview": "#!/usr/bin/env python\n# -*- coding: utf-8 -*-\n\"\"\"\nStandalone benchmark runner\n\"\"\"\n\nimport cProfile\nimport pstats\nimport "
  },
  {
    "path": "pyproject.toml",
    "chars": 1807,
    "preview": "[project]\nname = \"simplification\"\nversion = \"0.7.15\"\ndescription = \"Fast linestring simplification using RDP or Visvalin"
  },
  {
    "path": "src/simplification/__init__.py",
    "chars": 243,
    "preview": "import importlib.metadata\n\ntry:\n    # __package__ allows for the case where __name__ is \"__main__\"\n    __version__ = imp"
  },
  {
    "path": "src/simplification/cutil.pyx",
    "chars": 6172,
    "preview": "#cython: boundscheck=False\n#cython: wraparound=False\n#cython: optimize.use_switch=True\n#cython: optimize.unpack_method_c"
  },
  {
    "path": "src/simplification/rdp_p.pxd",
    "chars": 689,
    "preview": "cdef extern from \"header.h\":\n    struct ExternalArray:\n        void* data\n        size_t len\n\ncdef extern from \"header.h"
  },
  {
    "path": "src/simplification/stdbool.h",
    "chars": 68,
    "preview": "#pragma once\n\n#define false   0\n#define true    1\n\n#define bool int\n"
  },
  {
    "path": "src/simplification/util.py",
    "chars": 4591,
    "preview": "# -*- coding: utf-8 -*-\n\"\"\"\nffi.py\n\nCreated by Stephan Hügel on 2016-08-3\n\nThis file is part of simplification.\n\"\"\"\n\nimp"
  },
  {
    "path": "tests/coords.json",
    "chars": 68527,
    "preview": "[\n    [\n        -94.043147,\n        32.69303\n    ],\n    [\n        -94.043147,\n        32.693031\n    ],\n    [\n        -94"
  },
  {
    "path": "tests/coords_complex.json",
    "chars": 5789046,
    "preview": "[[3369.0, 1994.25], [3368.25, 1995.0], [3368.0714285714284, 1996.0], [3368.027027027027, 1997.0], [3368.0142857142855, 1"
  },
  {
    "path": "tests/cprofile_rust_cython.py",
    "chars": 274,
    "preview": "# this tests numpy array simplification using VW\n\nfrom simplification.cutil import simplify_coords_vw\nimport json\nimport"
  },
  {
    "path": "tests/cprofile_rust_cython_complex.py",
    "chars": 490,
    "preview": "# this tests numpy array simplification using RDP\n# 216804 --> 3061 points (98.5% reduction)\n# 50ms per VW operation on "
  },
  {
    "path": "tests/cprofile_rust_cython_shapely.py",
    "chars": 387,
    "preview": "# this tests numpy array simplification using VW\n# 216804 --> 3061 points (98.5% reduction)\n# 300ms per RDP operation on"
  },
  {
    "path": "tests/test_simplification.py",
    "chars": 35041,
    "preview": "# -*- coding: utf-8 -*-\n\nimport unittest\nimport numpy as np\nimport numpy\nfrom simplification.util import simplify_coords"
  }
]

About this extraction

This page contains the full source code of the urschrei/simplification GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 23 files (5.7 MB), approximately 1.5M tokens, and a symbol index with 18 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!