diff --git a/.github/workflows/pypi_upload.yml b/.github/workflows/pypi_upload.yml index b1be31f..0fc9cf4 100644 --- a/.github/workflows/pypi_upload.yml +++ b/.github/workflows/pypi_upload.yml @@ -1,33 +1,102 @@ name: Publish to PyPI on: - push: - branches: - - main + workflow_run: + workflows: ['Estimator tests'] + types: [completed] + branches: [main] + +permissions: + contents: read + +concurrency: + group: pypi-${{ github.event.workflow_run.head_sha }} + cancel-in-progress: false + jobs: + gate: + if: >- + github.event.workflow_run.conclusion == 'success' && + github.event.workflow_run.event == 'push' && + github.event.workflow_run.head_branch == 'main' && + github.event.workflow_run.head_repository.full_name == github.repository && + github.event.workflow_run.head_repository.id == github.event.repository.id + runs-on: ubuntu-24.04 + permissions: + contents: read + actions: read + checks: read + outputs: + ready: ${{ steps.verify.outputs.ready }} + sha: ${{ steps.verify.outputs.sha }} + steps: + - name: Verify the completed workflow and exact main revision + id: verify + env: + GH_TOKEN: ${{ github.token }} + run: | + python3 - <<'PY' + import json, os, re + from urllib.request import Request, urlopen + event = json.load(open(os.environ['GITHUB_EVENT_PATH'])) + repo, repo_id = os.environ['GITHUB_REPOSITORY'], os.environ['GITHUB_REPOSITORY_ID'] + def same(value): + return value.get('full_name', '').lower() == repo.lower() and str(value.get('id')) == repo_id + def require(condition, message): + if not condition: + raise SystemExit('Release blocked: ' + message) + def api(path): + request = Request('https://api.github.com/repos/' + repo + path, + headers={'Authorization': 'Bearer ' + os.environ['GH_TOKEN'], + 'Accept': 'application/vnd.github+json', + 'X-GitHub-Api-Version': '2022-11-28'}) + with urlopen(request, timeout=30) as response: + return json.load(response) + run = api('/actions/runs/' + str(event['workflow_run']['id'])) + sha = run['head_sha'] + require(same(event['repository']) and same(run['repository']) and same(run['head_repository']), 'wrong source repository') + require(run['name'] == 'Estimator tests' and run['path'].split('@')[0] == '.github/workflows/tests.yml', 'wrong workflow') + require(run['event'] == 'push' and run['head_branch'] == 'main', 'a main push is required') + require(run['status'] == 'completed' and run['conclusion'] == 'success', 'tests have not succeeded') + require(re.fullmatch('[0-9a-f]{40}', sha) and sha == event['workflow_run']['head_sha'], 'wrong tested SHA') + suite = api('/check-suites/' + str(run['check_suite_id'])) + require(suite['app']['id'] == 15368 and suite['app']['slug'] == 'github-actions', 'untrusted check source app') + require(suite['head_sha'] == sha and suite['conclusion'] == 'success', 'wrong or unsuccessful test suite') + ready = api('/branches/main')['commit']['sha'] == sha + message = ('Verified successful same-repository main-push Estimator tests at ' + sha + if ready else 'Skipped: tested commit is no longer the main head.') + print(message) + with open(os.environ['GITHUB_STEP_SUMMARY'], 'a') as stream: + stream.write(message + '\n') + with open(os.environ['GITHUB_OUTPUT'], 'a') as stream: + stream.write('ready=' + str(ready).lower() + '\nsha=' + sha + '\n') + PY + build: - runs-on: ubuntu-latest + needs: gate + if: needs.gate.outputs.ready == 'true' + runs-on: ubuntu-24.04 + permissions: + contents: read env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} steps: - - uses: actions/checkout@v2 - - id: Python_pip - name: Python dependencies - uses: actions/setup-python@v2 + - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6 with: - python-version: "3.8" - cache: "pip" - - run: pip install -r requirements.txt - - - name: Build Package - run: | - python setup.py sdist - - - name: Upload to PyPi + ref: ${{ needs.gate.outputs.sha }} + persist-credentials: false + - name: Python dependencies + uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6 + with: + python-version: '3.8' + cache: pip + - run: python -m pip install -r requirements.txt wheel + - name: Build the tested package + run: python setup.py sdist bdist_wheel + - name: Check distribution metadata + run: python -m twine check dist/* + - name: Upload to PyPI env: - TWINE_USERNAME: ${{ secrets.PYPI_USER}} + TWINE_USERNAME: ${{ secrets.PYPI_USER }} TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} - run: | - sudo apt-get install tree - tree . - twine upload dist/* + run: twine upload --skip-existing dist/* diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..dc35221 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,120 @@ +name: Estimator tests + +on: + push: + pull_request: + +permissions: + contents: read + +concurrency: + group: estimator-tests-${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + python: + name: Estimators (Python ${{ matrix.python }}) + runs-on: ubuntu-24.04 + strategy: + fail-fast: false + matrix: + python: ['3.8', '3.12'] + env: + OPENBLAS_NUM_THREADS: '1' + OMP_NUM_THREADS: '1' + MKL_NUM_THREADS: '1' + steps: + - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6 + - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6 + with: + python-version: ${{ matrix.python }} + - run: python -m pip install pytest . + - run: python -m pytest tests -q + + csdid: + name: CSDID integration + runs-on: ubuntu-24.04 + timeout-minutes: 15 + env: + OPENBLAS_NUM_THREADS: '1' + OMP_NUM_THREADS: '1' + MKL_NUM_THREADS: '1' + steps: + - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6 + with: + path: python-drdid + - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6 + with: + repository: d2cml-ai/csdid + path: csdid + - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6 + with: + python-version: '3.12' + - name: Install both checked-out packages + run: python -m pip install pytest ./python-drdid ./csdid + - name: Compare actual downstream kernels on common inputs + run: | + git -C csdid rev-parse HEAD + python python-drdid/scripts/check_csdid_integration.py + - name: Run downstream package regression suite + working-directory: csdid + run: python -m pytest csdid/test_csdid -m 'not slow' -q + + current-r: + name: Current R DRDID parity + runs-on: ubuntu-24.04 + timeout-minutes: 30 + env: + OPENBLAS_NUM_THREADS: '1' + OMP_NUM_THREADS: '1' + MKL_NUM_THREADS: '1' + steps: + - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6 + with: + path: python-drdid + - uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6 + with: + repository: pedrohcgs/DRDID + path: r-drdid + fetch-depth: 0 + - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6 + with: + python-version: '3.12' + - run: python -m pip install pytest ./python-drdid + - uses: r-lib/actions/setup-r@f9a764fea8d5c63df6ef9a5c7795bf7deb5d7e05 # v2 + with: + r-version: release + use-public-rspm: true + - uses: r-lib/actions/setup-r-dependencies@f9a764fea8d5c63df6ef9a5c7795bf7deb5d7e05 # v2 + with: + working-directory: python-drdid + packages: | + local::${{ github.workspace }}/r-drdid + any::pkgload + any::jsonlite + any::digest + dependencies: '"hard"' + install-pandoc: false + install-quarto: false + - name: Record sources and generate current R references + run: | + mkdir -p report + git -C r-drdid rev-parse HEAD > report/r-revision.txt + git -C python-drdid rev-parse HEAD > report/python-revision.txt + Rscript python-drdid/tests/r_ref/export.R r-drdid report/current-r.json + - name: Compare full ATT, influence functions and analytical inference + working-directory: python-drdid + env: + DRDID_R_REFERENCE: ${{ github.workspace }}/report/current-r.json + run: | + DRDID_R_REVISION=$(git -C ../r-drdid rev-parse HEAD) \ + python -m pytest tests/test_r_parity.py -q --junitxml=../report/parity.xml + - name: Require review of changes to the complete upstream tree + if: always() + run: python python-drdid/scripts/check_r_source.py r-drdid + - uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 + if: always() + with: + name: current-r-parity + path: report/ + retention-days: 14 diff --git a/README.md b/README.md index d9ac3f4..55b88e3 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,57 @@ -# DRDID in python +# DRDID in Python -See the original [`R package`](https://github.com/pedrohcgs/DRDID/tree/master) +Traditional doubly robust, normalized inverse probability weighted, and outcome +regression difference-in-differences estimators for panel data and repeated cross +sections, following [R DRDID](https://github.com/pedrohcgs/DRDID). ## Installation +```sh +pip install drdid ``` -pip install git+https://github.com/d2cml-ai/DRDID + +For the development version: + +```sh +pip install git+https://github.com/d2cml-ai/DRDIDpy.git +``` + +## Estimators and alignment + +The existing functions return `(att, influence)`, with one influence contribution +per observation: + +| Module | Panel | Repeated cross sections | +|---|---|---| +| `drdid.drdid` | `drdid_panel` | `drdid_rc` | +| `drdid.ipwd_did` | `std_ipw_did_panel` | `std_ipw_did_rc` | +| `drdid.reg_did` | `reg_did_panel` | `reg_did_rc` | + +`covariates=None` fits an intercept-only model. Python retains its historical +convention of adding an intercept unless the first supplied column is all ones. +R's low-level functions use exactly the supplied design: include that same +intercept when comparing. Weights default to ones and are normalized to mean one. +DR and IPW accept `trim_level=0.995`; only controls at or above the fitted-score +threshold are trimmed, after capping scores at `1 - 1e-6`, matching R. + +```python +from drdid.drdid import drdid_panel + +att, influence = drdid_panel(y1, y0, treated, covariates=X, i_weights=weights) ``` + +Comparisons require the same sample, outcome, design, weights, estimator and +trimming. These DR functions correspond to R's **traditional** estimators. R's +high-level `drdid()` defaults to improved/IPT estimation; select `estMethod="trad"` +when comparing. The IPW functions here are normalized (Hajek), not R's +nonnormalized IPW variant. Improved/IPT, alternative RC estimators, TWFE, R's +formula preprocessing and refit bootstrap API are not implemented here. + +This package returns the ATT and influence function rather than an inference +object. R's analytical standard error can be reconstructed as +`np.linalg.norm(influence - influence.mean()) / len(influence)`; its pointwise +95% limits are `att +/- 1.96 * se`. CSDID adds its own group-time preprocessing, +aggregation, overlap checks and inference layers. + +See [the validation and release notes](docs/r-csdid-alignment.md) for the tested +R source revision, regression evidence and the CSDID integration sequence. diff --git a/docs/r-csdid-alignment.md b/docs/r-csdid-alignment.md new file mode 100644 index 0000000..d5f56ed --- /dev/null +++ b/docs/r-csdid-alignment.md @@ -0,0 +1,84 @@ +# Alignment with R DRDID and Python CSDID + +The reviewed R baseline is DRDID 1.4.0 at +[`eaac3b49`](https://github.com/pedrohcgs/DRDID/commit/eaac3b49cd225d0d7706c633858555a5f204e21e). +The prior Python baseline is 1.1.6 / `75cac04e`. The six existing Python kernels +are traditional DR, normalized IPW and regression, each for panel and repeated +cross-section data. This change preserves their tuple return and methods. + +The correction addresses observed failures: omitted weights were converted to an +array before the `None` check in three functions; RC DR added rather than +subtracted pre-period nuisance contributions; propensity trimming was missing; +and the propensity Hessian used an earlier IRLS covariance rather than the final +capped probabilities. Inputs and weighted fit designs are now checked before +fitting. All six methods share those checks. Python's existing automatic +intercept convention is retained and explicitly documented. + +## Evidence + +`tests/r_ref` contains common seeded inputs, 80 fixed configurations, complete R +ATT/influence/SE/interval references and a manifest of hashes. The grid covers +all six methods, omitted/unit/varying/zero weights, intercept-only and covariate +models, controls above trimming thresholds, two thresholds, and outcome unit +changes by factors of `1e-10` and `1e10`. Comparisons use `atol=1e-7, rtol=1e-6` +both on raw outputs and after converting back to original outcome units. +Full influence vectors and nonfinite behavior are +checked, not only point estimates. The input/unit conversion is fixed before +comparison. Ordinary tests need no R installation. + +The independent contract tests include closed forms, empirical observation-weight +derivatives with nuisance refitting, weight scaling, zero-mass rows and malformed +inputs. They can expose mistakes even when two implementations share a bug. +The exporter rejects dirty/untracked R checkouts, rebuilds native code and binds +reference metadata to the selected commit, the complete tracked source tree and +exact input/exporter hashes. +The current-R CI job also regenerates references from the official R default +branch. Changes to any tracked R repository file require review, +even when this fixed numerical grid passes. A passing grid does not establish +parity for methods outside the six listed above. + +The workflow also installs the proposed DRDID and the current CSDID checkout +together, compares the actual downstream dispatch on 72 common-input cases and +runs CSDID's regression suite. CI runs on Python repository pushes and pull +requests. An R-only push does not start it; new R changes are checked on the next +Python run and still require a reviewed port rather than automatic code changes. + +Local replay from the repository root, using a clean R checkout with dependencies +and `pkgload`, `jsonlite`, `digest` installed: + +```sh +python -m pip install pytest . +python -m pytest tests -q +Rscript tests/r_ref/export.R /path/to/DRDID /tmp/new-r-reference.json +DRDID_R_REFERENCE=/tmp/new-r-reference.json python -m pytest tests/test_r_parity.py -q +python scripts/check_r_source.py /path/to/DRDID +``` + +Regenerating accepted references is a review action: preserve the existing input +CSVs and case definitions, inspect the R source/test diff, port applicable +assertions, diagnose numerical changes, and update provenance together. Do not +widen tolerances or remove cases to make an update pass. `generate_inputs.py` is +the original deterministic input recipe, not part of routine reference updates. + +## Coordinated delivery + +Python CSDID currently keeps local DR/IPW kernels with additional performance +caching, while importing regression kernels from `drdid.reg_did`. Therefore a +change in only one repository cannot certify both packages. The six CSDID routes +must continue to be compared against R did/DRDID, and standalone DRDID against R +DRDID. The coordinated candidates are Python DRDID 1.1.7 and CSDID 0.4.4, +whose dependency pins `drdid==1.1.7`. Future backend upgrades must update the +reviewed peer lock and exact dependency together. Release DRDID first so installing +the new CSDID cannot retain the older standalone backend. CSDID's required CI +builds both reviewed revisions as wheels and tests them together in a fresh +environment, including their full numerical suites and the direct kernel bridge. +Consolidating CSDID's cached local kernels remains separate from validating this +release pair. These validation commands do not publish either package. + +CI checks should be required in upstream branch protection. The contributor +cannot change upstream repository rules; adding workflow files alone does not +make those checks mandatory. Publishing is now gated on the successful main +branch estimator workflow and checks out its exact tested commit. CSDID also +checks its published backend against the reviewed peer source before uploading +its own release. Both version updates remain proposals until reviewed and +released; the current PyPI `drdid` 1.1.6 does not contain these fixes. diff --git a/docs/validation-20261027.json b/docs/validation-20261027.json new file mode 100644 index 0000000..deb6511 --- /dev/null +++ b/docs/validation-20261027.json @@ -0,0 +1,73 @@ +{ + "date": "2026-10-27", + "objective": "Align the six existing standalone Python DRDID kernels with R DRDID and CSDID under matched specifications.", + "scope": [ + "traditional DR panel/RC", + "normalized IPW panel/RC", + "regression panel/RC" + ], + "r_revision": "eaac3b49cd225d0d7706c633858555a5f204e21e", + "python_before_revision": "75cac04ee98959ccf1c06df80fa447cc20c8fa42", + "python_before_contracts": { + "tests": 238, + "errors": 0, + "failures": 130, + "skipped": 0 + }, + "python_before_note": "Failures include observed bugs, missing validation and added default/shape contracts, not 130 distinct estimator defects.", + "proposed_installed_wheel_tests": { + "tests": 379, + "errors": 0, + "failures": 0, + "skipped": 0 + }, + "proposed_installed_wheel_sha256": "eb5309605a742cb4ad6ebe143e43dccd479edaaf84de841d06ee9d7aeb4e525f", + "r_fixed_configurations": 80, + "r_compared_fields": [ + "ATT", + "full observation influence vector", + "analytical SE", + "lower/upper pointwise95% limits" + ], + "r_backend_replay": "All80 raw JSON payloads bit-identical between fastglmPure and historical fastglm wrapper, with same defaults.", + "csdid_common_input_kernel_comparisons": 72, + "csdid_installed_dependency_tests": { + "tests": 2310, + "errors": 0, + "failures": 0, + "skipped": 0 + }, + "csdid_tested_revision": "777b9e06e03d98830019ba14f541cfa1d0d59c46", + "metamorphic_pytest_cases": 60, + "metamorphic_transformations": 390, + "independent_refitted_derivative_probe_checks": 108, + "source_guard_negative_probes": { + "dirty_checkout_audit_exit": 2, + "dirty_export_exit": 1, + "dirty_export_wrote_output": false, + "committed_new_test_audit_exit": 3, + "changed_files": [ + "tests/testthat/test-python-parity-source-probe.R" + ], + "tampered_input_metadata_test_exit": 1, + "all_expected_failures_observed": true, + "committed_native_source_change_detected": true + }, + "checks": [ + "Python3.8 syntax", + "actionlint", + "git diff --check", + "installed wheel/source equality" + ], + "remaining": [ + "Upstream review and a new published release are required; the proposed local wheel retains the existing development version and is not a new PyPI release.", + "CSDID dependency minimum/shared-kernel consolidation follows the released upstream version, preserving CSDID cache semantics.", + "Upstream required-check rules need repository-admin permissions unavailable to this contributor.", + "No claim of support for improved/IPT, alternativeRC, TWFE, nonnormalizedIPW or refit bootstrap APIs.", + "R-only pushes do not trigger this Python workflow; latest sources are checked on the next Python push/PR." + ], + "source_tree_bound_files": 193, + "native_export_recompile_forced": true, + "provenance_hardening_preserved_all_80_numerical_payloads": true, + "r_tolerance_scope": "Both raw outputs and predeclared original outcome units, atol1e-7/rtol1e-6 in each." +} diff --git a/drdid/_estimators.py b/drdid/_estimators.py new file mode 100644 index 0000000..01b0742 --- /dev/null +++ b/drdid/_estimators.py @@ -0,0 +1,374 @@ +"""Traditional DR and normalized IPW equations aligned with R DRDID 1.4.0. + +The public entry points remain in drdid.py and ipwd_did.py. The calculations +retain the independently reviewed csdid kernels; input and design checks also +make these kernels safe when called outside csdid's group-time dispatch. +""" +import numpy as np + +from ._validation import (panel_inputs, rc_inputs, validate_trim_level, + checked_inverse, fit_outcome, fit_pscore, + require_positive_mass) + + +def _trim_pscore(ps_fit, D, trim_level): + ps_fit = np.minimum(ps_fit, 1 - 1e-6) + trim_ps = ps_fit < 1.01 + controls = D == 0 + trim_ps[controls] = ps_fit[controls] < trim_level + return ps_fit, trim_ps + + +def _pscore_hessian(int_cov, i_weights, ps_fit): + # Rebuild information from the final capped probabilities, as R does. + # Statsmodels' stored covariance may use the preceding IRLS iteration. + weights = i_weights * ps_fit * (1 - ps_fit) + information = int_cov.T @ (weights[:, None] * int_cov) + checked_inverse(information, "propensity score") + try: + cholesky = np.linalg.cholesky(information) + inverse_cholesky = np.linalg.solve(cholesky, np.eye(information.shape[0])) + except np.linalg.LinAlgError as error: + raise ValueError("The propensity score design matrix is singular. " + "Consider removing some covariates.") from error + return (inverse_cholesky.T @ inverse_cholesky) * len(ps_fit) + + +def std_ipw_did_panel(y1, y0, D, covariates=None, i_weights=None, trim_level=0.995): + y1, y0, D, int_cov, i_weights = panel_inputs( + y1, y0, D, covariates, i_weights) + n = len(D) + delta_y = y1 - y0 + trim_level = validate_trim_level(trim_level) + pscore_results = fit_pscore(D, int_cov, i_weights) + ps_fit, trim_ps = _trim_pscore(pscore_results.predict(), D, trim_level) + + w_treat = trim_ps * i_weights * D + w_cont = trim_ps * i_weights * ps_fit * (1 - D) / (1 - ps_fit) + require_positive_mass(w_treat, w_cont) + att_treat = w_treat * delta_y + att_cont = w_cont * delta_y + + eta_treat = np.mean(att_treat) / np.mean(w_treat) + eta_cont = np.mean(att_cont) / np.mean(w_cont) + ipw_att = eta_treat - eta_cont + + score_ps = i_weights[:, np.newaxis] * (D - ps_fit)[:, np.newaxis] * int_cov + Hessian_ps = _pscore_hessian(int_cov, i_weights, ps_fit) + asy_lin_rep_ps = np.dot(score_ps, Hessian_ps) + + inf_treat = (att_treat - w_treat * eta_treat) / np.mean(w_treat) + inf_cont_1 = att_cont - w_cont * eta_cont + pre_m2 = w_cont * (delta_y - eta_cont) + M2 = np.mean(pre_m2[:, np.newaxis] * int_cov, axis=0) + inf_cont_2 = np.dot(asy_lin_rep_ps, M2) + + inf_control = (inf_cont_1 + inf_cont_2) / np.mean(w_cont) + att_inf_func = inf_treat - inf_control + return ipw_att, att_inf_func + + +def drdid_panel(y1, y0, D, covariates=None, i_weights=None, trim_level=0.995): + y1, y0, D, int_cov, i_weights = panel_inputs( + y1, y0, D, covariates, i_weights) + n = len(D) + deltaY = y1 - y0 + trim_level = validate_trim_level(trim_level) + pscore_results = fit_pscore(D, int_cov, i_weights) + ps_fit, trim_ps = _trim_pscore(pscore_results.predict(), D, trim_level) + + mask = D == 0 + reg_results = fit_outcome(deltaY, int_cov, i_weights, mask) + if np.any(np.isnan(reg_results.params)): + raise ValueError( + "Outcome regression model coefficients have NA components. \n" + "Multicollinearity (or lack of variation) of covariates is a likely reason." + ) + out_delta = np.dot(int_cov, reg_results.params) + + w_treat = trim_ps * i_weights * D + w_cont = trim_ps * i_weights * ps_fit * (1 - D) / (1 - ps_fit) + require_positive_mass(w_treat, w_cont) + dr_att_treat = w_treat * (deltaY - out_delta) + dr_att_cont = w_cont * (deltaY - out_delta) + + eta_treat = np.mean(dr_att_treat) / np.mean(w_treat) + eta_cont = np.mean(dr_att_cont) / np.mean(w_cont) + dr_att = eta_treat - eta_cont + + weights_ols = i_weights * (1 - D) + wols_x = weights_ols[:, np.newaxis] * int_cov + wols_eX = weights_ols[:, np.newaxis] * (deltaY - out_delta)[:, np.newaxis] * int_cov + XpX_inv = checked_inverse(np.dot(wols_x.T, int_cov) / n, "regression") + asy_lin_rep_wols = np.dot(wols_eX, XpX_inv) + + score_ps = i_weights[:, np.newaxis] * (D - ps_fit)[:, np.newaxis] * int_cov + Hessian_ps = _pscore_hessian(int_cov, i_weights, ps_fit) + asy_lin_rep_ps = np.dot(score_ps, Hessian_ps) + + inf_treat_1 = dr_att_treat - w_treat * eta_treat + M1 = np.mean(w_treat[:, np.newaxis] * int_cov, axis=0) + inf_treat_2 = np.dot(asy_lin_rep_wols, M1) + inf_treat = (inf_treat_1 - inf_treat_2) / np.mean(w_treat) + + inf_cont_1 = dr_att_cont - w_cont * eta_cont + M2 = np.mean(w_cont[:, np.newaxis] * (deltaY - out_delta - eta_cont)[:, np.newaxis] * int_cov, axis=0) + inf_cont_2 = np.dot(asy_lin_rep_ps, M2) + M3 = np.mean(w_cont[:, np.newaxis] * int_cov, axis=0) + inf_cont_3 = np.dot(asy_lin_rep_wols, M3) + inf_control = (inf_cont_1 + inf_cont_2 - inf_cont_3) / np.mean(w_cont) + + dr_att_inf_func = inf_treat - inf_control + return dr_att, dr_att_inf_func + + +def reg_did_panel(y1, y0, D, covariates=None, i_weights=None): + y1, y0, D, int_cov, i_weights = panel_inputs( + y1, y0, D, covariates, i_weights) + n = len(D) + delta_y = y1 - y0 + result = fit_outcome(delta_y, int_cov, i_weights, D == 0) + out_delta = int_cov @ result.params + + w_treat = i_weights * D + require_positive_mass(w_treat) + reg_att_treat = w_treat * delta_y + reg_att_cont = w_treat * out_delta + eta_treat = np.mean(reg_att_treat) / np.mean(w_treat) + eta_cont = np.mean(reg_att_cont) / np.mean(w_treat) + reg_att = eta_treat - eta_cont + + weights_ols = i_weights * (1 - D) + wols_x = weights_ols[:, None] * int_cov + wols_ex = weights_ols[:, None] * (delta_y - out_delta)[:, None] * int_cov + inverse = checked_inverse(wols_x.T @ int_cov / n, "regression") + asy_lin_rep = wols_ex @ inverse + inf_treat = (reg_att_treat - w_treat * eta_treat) / np.mean(w_treat) + inf_cont_1 = reg_att_cont - w_treat * eta_cont + moment = np.mean(w_treat[:, None] * int_cov, axis=0) + inf_control = (inf_cont_1 + asy_lin_rep @ moment) / np.mean(w_treat) + return reg_att, inf_treat - inf_control + + +def reg_did_rc(y, post, D, covariates=None, i_weights=None): + y, post, D, int_cov, i_weights = rc_inputs( + y, post, D, covariates, i_weights) + n = len(D) + mask_pre = (D == 0) & (post == 0) + mask_post = (D == 0) & (post == 1) + result_pre = fit_outcome(y, int_cov, i_weights, mask_pre) + result_post = fit_outcome(y, int_cov, i_weights, mask_post) + out_pre = int_cov @ result_pre.params + out_post = int_cov @ result_post.params + + w_treat_pre = i_weights * D * (1 - post) + w_treat_post = i_weights * D * post + w_treat = i_weights * D + require_positive_mass(w_treat_pre, w_treat_post) + reg_att_treat_pre = w_treat_pre * y + reg_att_treat_post = w_treat_post * y + reg_att_cont = w_treat * (out_post - out_pre) + eta_treat_pre = np.mean(reg_att_treat_pre) / np.mean(w_treat_pre) + eta_treat_post = np.mean(reg_att_treat_post) / np.mean(w_treat_post) + eta_cont = np.mean(reg_att_cont) / np.mean(w_treat) + reg_att = eta_treat_post - eta_treat_pre - eta_cont + + asy_lin_reps = [] + for mask, out in ((mask_pre, out_pre), (mask_post, out_post)): + weights_ols = i_weights * mask + wols_x = weights_ols[:, None] * int_cov + wols_ex = weights_ols[:, None] * (y - out)[:, None] * int_cov + inverse = checked_inverse(wols_x.T @ int_cov / n, "regression") + asy_lin_reps.append(wols_ex @ inverse) + inf_treat_pre = (reg_att_treat_pre - w_treat_pre * eta_treat_pre) / np.mean(w_treat_pre) + inf_treat_post = (reg_att_treat_post - w_treat_post * eta_treat_post) / np.mean(w_treat_post) + inf_cont_1 = reg_att_cont - w_treat * eta_cont + moment = np.mean(w_treat[:, None] * int_cov, axis=0) + inf_cont_est = asy_lin_reps[1] @ moment - asy_lin_reps[0] @ moment + inf_control = (inf_cont_1 + inf_cont_est) / np.mean(w_treat) + return reg_att, inf_treat_post - inf_treat_pre - inf_control + + +def std_ipw_did_rc(y, post, D, covariates=None, i_weights=None, trim_level=0.995): + y, post, D, int_cov, i_weights = rc_inputs( + y, post, D, covariates, i_weights) + n = len(D) + trim_level = validate_trim_level(trim_level) + pscore_results = fit_pscore(D, int_cov, i_weights) + ps_fit, trim_ps = _trim_pscore(pscore_results.predict(), D, trim_level) + + w_treat_pre = trim_ps * i_weights * D * (1 - post) + w_treat_post = trim_ps * i_weights * D * post + w_cont_pre = trim_ps * i_weights * ps_fit * (1 - D) * (1 - post) / (1 - ps_fit) + w_cont_post = trim_ps * i_weights * ps_fit * (1 - D) * post / (1 - ps_fit) + + require_positive_mass(w_treat_pre, w_treat_post, w_cont_pre, w_cont_post) + eta_treat_pre = w_treat_pre * y / np.mean(w_treat_pre) + eta_treat_post = w_treat_post * y / np.mean(w_treat_post) + eta_cont_pre = w_cont_pre * y / np.mean(w_cont_pre) + eta_cont_post = w_cont_post * y / np.mean(w_cont_post) + + att_treat_pre = np.mean(eta_treat_pre) + att_treat_post = np.mean(eta_treat_post) + att_cont_pre = np.mean(eta_cont_pre) + att_cont_post = np.mean(eta_cont_post) + ipw_att = (att_treat_post - att_treat_pre) - (att_cont_post - att_cont_pre) + + score_ps = (i_weights * (D - ps_fit))[:, np.newaxis] * int_cov + Hessian_ps = _pscore_hessian(int_cov, i_weights, ps_fit) + asy_lin_rep_ps = np.dot(score_ps, Hessian_ps) + + inf_treat_pre = eta_treat_pre - w_treat_pre * att_treat_pre / np.mean(w_treat_pre) + inf_treat_post = eta_treat_post - w_treat_post * att_treat_post / np.mean(w_treat_post) + inf_treat = inf_treat_post - inf_treat_pre + + inf_cont_pre = eta_cont_pre - w_cont_pre * att_cont_pre / np.mean(w_cont_pre) + inf_cont_post = eta_cont_post - w_cont_post * att_cont_post / np.mean(w_cont_post) + inf_cont = inf_cont_post - inf_cont_pre + + M2_pre = np.mean((w_cont_pre * (y - att_cont_pre))[:, np.newaxis] * int_cov, axis=0) / np.mean(w_cont_pre) + M2_post = np.mean((w_cont_post * (y - att_cont_post))[:, np.newaxis] * int_cov, axis=0) / np.mean(w_cont_post) + inf_cont_ps = np.dot(asy_lin_rep_ps, (M2_post - M2_pre)) + + inf_cont = inf_cont + inf_cont_ps + att_inf_func = inf_treat - inf_cont + return ipw_att, att_inf_func + + +def drdid_rc(y, post, D, covariates=None, i_weights=None, trim_level=0.995): + y, post, D, int_cov, i_weights = rc_inputs( + y, post, D, covariates, i_weights) + n = len(D) + trim_level = validate_trim_level(trim_level) + pscore_results = fit_pscore(D, int_cov, i_weights) + ps_fit, trim_ps = _trim_pscore(pscore_results.predict(), D, trim_level) + + mask_cont_pre = (D == 0) & (post == 0) + reg_cont_pre = fit_outcome(y, int_cov, i_weights, mask_cont_pre) + if np.any(np.isnan(reg_cont_pre.params)): + raise ValueError( + "Outcome regression model coefficients have NA components. \n" + "Multicollinearity (or lack of variation) of covariates is a likely reason." + ) + out_y_cont_pre = np.dot(int_cov, reg_cont_pre.params) + + mask_cont_post = (D == 0) & (post == 1) + reg_cont_post = fit_outcome(y, int_cov, i_weights, mask_cont_post) + if np.any(np.isnan(reg_cont_post.params)): + raise ValueError( + "Outcome regression model coefficients have NA components. \n" + "Multicollinearity (or lack of variation) of covariates is a likely reason." + ) + out_y_cont_post = np.dot(int_cov, reg_cont_post.params) + + out_y_cont = post * out_y_cont_post + (1 - post) * out_y_cont_pre + + mask_treat_pre = (D == 1) & (post == 0) + reg_treat_pre = fit_outcome(y, int_cov, i_weights, mask_treat_pre) + out_y_treat_pre = np.dot(int_cov, reg_treat_pre.params) + + mask_treat_post = (D == 1) & (post == 1) + reg_treat_post = fit_outcome(y, int_cov, i_weights, mask_treat_post) + out_y_treat_post = np.dot(int_cov, reg_treat_post.params) + + w_treat_pre = trim_ps * i_weights * D * (1 - post) + w_treat_post = trim_ps * i_weights * D * post + w_cont_pre = trim_ps * i_weights * ps_fit * (1 - D) * (1 - post) / (1 - ps_fit) + w_cont_post = trim_ps * i_weights * ps_fit * (1 - D) * post / (1 - ps_fit) + w_d = trim_ps * i_weights * D + w_dt1 = trim_ps * i_weights * D * post + w_dt0 = trim_ps * i_weights * D * (1 - post) + + require_positive_mass(w_treat_pre, w_treat_post, w_cont_pre, w_cont_post) + eta_treat_pre = w_treat_pre * (y - out_y_cont) / np.mean(w_treat_pre) + eta_treat_post = w_treat_post * (y - out_y_cont) / np.mean(w_treat_post) + eta_cont_pre = w_cont_pre * (y - out_y_cont) / np.mean(w_cont_pre) + eta_cont_post = w_cont_post * (y - out_y_cont) / np.mean(w_cont_post) + + eta_d_post = w_d * (out_y_treat_post - out_y_cont_post) / np.mean(w_d) + eta_dt1_post = w_dt1 * (out_y_treat_post - out_y_cont_post) / np.mean(w_dt1) + eta_d_pre = w_d * (out_y_treat_pre - out_y_cont_pre) / np.mean(w_d) + eta_dt0_pre = w_dt0 * (out_y_treat_pre - out_y_cont_pre) / np.mean(w_dt0) + + att_treat_pre = np.mean(eta_treat_pre) + att_treat_post = np.mean(eta_treat_post) + att_cont_pre = np.mean(eta_cont_pre) + att_cont_post = np.mean(eta_cont_post) + att_d_post = np.mean(eta_d_post) + att_dt1_post = np.mean(eta_dt1_post) + att_d_pre = np.mean(eta_d_pre) + att_dt0_pre = np.mean(eta_dt0_pre) + + dr_att = (att_treat_post - att_treat_pre) - (att_cont_post - att_cont_pre) + \ + (att_d_post - att_dt1_post) - (att_d_pre - att_dt0_pre) + + weights_ols_pre = i_weights * (1 - D) * (1 - post) + wols_x_pre = weights_ols_pre[:, np.newaxis] * int_cov + wols_eX_pre = weights_ols_pre[:, np.newaxis] * (y - out_y_cont_pre)[:, np.newaxis] * int_cov + XpX_inv_pre = checked_inverse(np.dot(wols_x_pre.T, int_cov) / n, "regression") + asy_lin_rep_ols_pre = np.dot(wols_eX_pre, XpX_inv_pre) + + weights_ols_post = i_weights * (1 - D) * post + wols_x_post = weights_ols_post[:, np.newaxis] * int_cov + wols_eX_post = weights_ols_post[:, np.newaxis] * (y - out_y_cont_post)[:, np.newaxis] * int_cov + XpX_inv_post = checked_inverse(np.dot(wols_x_post.T, int_cov) / n, "regression") + asy_lin_rep_ols_post = np.dot(wols_eX_post, XpX_inv_post) + + weights_ols_pre_treat = i_weights * D * (1 - post) + wols_x_pre_treat = weights_ols_pre_treat[:, np.newaxis] * int_cov + wols_eX_pre_treat = weights_ols_pre_treat[:, np.newaxis] * (y - out_y_treat_pre)[:, np.newaxis] * int_cov + XpX_inv_pre_treat = checked_inverse(np.dot(wols_x_pre_treat.T, int_cov) / n, "regression") + asy_lin_rep_ols_pre_treat = np.dot(wols_eX_pre_treat, XpX_inv_pre_treat) + + weights_ols_post_treat = i_weights * D * post + wols_x_post_treat = weights_ols_post_treat[:, np.newaxis] * int_cov + wols_eX_post_treat = weights_ols_post_treat[:, np.newaxis] * (y - out_y_treat_post)[:, np.newaxis] * int_cov + XpX_inv_post_treat = checked_inverse(np.dot(wols_x_post_treat.T, int_cov) / n, "regression") + asy_lin_rep_ols_post_treat = np.dot(wols_eX_post_treat, XpX_inv_post_treat) + + score_ps = i_weights[:, np.newaxis] * (D - ps_fit)[:, np.newaxis] * int_cov + Hessian_ps = _pscore_hessian(int_cov, i_weights, ps_fit) + asy_lin_rep_ps = np.dot(score_ps, Hessian_ps) + + inf_treat_pre = eta_treat_pre - w_treat_pre * att_treat_pre / np.mean(w_treat_pre) + inf_treat_post = eta_treat_post - w_treat_post * att_treat_post / np.mean(w_treat_post) + + M1_post = -np.mean(w_treat_post[:, np.newaxis] * post[:, np.newaxis] * int_cov, axis=0) / np.mean(w_treat_post) + M1_pre = -np.mean(w_treat_pre[:, np.newaxis] * (1 - post)[:, np.newaxis] * int_cov, axis=0) / np.mean(w_treat_pre) + + inf_treat_or_post = np.dot(asy_lin_rep_ols_post, M1_post) + inf_treat_or_pre = np.dot(asy_lin_rep_ols_pre, M1_pre) + + inf_cont_pre = eta_cont_pre - w_cont_pre * att_cont_pre / np.mean(w_cont_pre) + inf_cont_post = eta_cont_post - w_cont_post * att_cont_post / np.mean(w_cont_post) + + M2_pre = np.mean(w_cont_pre[:, np.newaxis] * (y - out_y_cont - att_cont_pre)[:, np.newaxis] * int_cov, axis=0) / np.mean(w_cont_pre) + M2_post = np.mean(w_cont_post[:, np.newaxis] * (y - out_y_cont - att_cont_post)[:, np.newaxis] * int_cov, axis=0) / np.mean(w_cont_post) + inf_cont_ps = np.dot(asy_lin_rep_ps, M2_post - M2_pre) + + M3_post = -np.mean(w_cont_post[:, np.newaxis] * post[:, np.newaxis] * int_cov, axis=0) / np.mean(w_cont_post) + M3_pre = -np.mean(w_cont_pre[:, np.newaxis] * (1 - post)[:, np.newaxis] * int_cov, axis=0) / np.mean(w_cont_pre) + inf_cont_or_post = np.dot(asy_lin_rep_ols_post, M3_post) + inf_cont_or_pre = np.dot(asy_lin_rep_ols_pre, M3_pre) + + inf_eff1 = eta_d_post - w_d * att_d_post / np.mean(w_d) + inf_eff2 = eta_dt1_post - w_dt1 * att_dt1_post / np.mean(w_dt1) + inf_eff3 = eta_d_pre - w_d * att_d_pre / np.mean(w_d) + inf_eff4 = eta_dt0_pre - w_dt0 * att_dt0_pre / np.mean(w_dt0) + inf_eff = (inf_eff1 - inf_eff2) - (inf_eff3 - inf_eff4) + + mom_post = np.mean((w_d[:, np.newaxis] / np.mean(w_d) - w_dt1[:, np.newaxis] / np.mean(w_dt1)) * int_cov, axis=0) + mom_pre = np.mean((w_d[:, np.newaxis] / np.mean(w_d) - w_dt0[:, np.newaxis] / np.mean(w_dt0)) * int_cov, axis=0) + inf_or_post = np.dot(asy_lin_rep_ols_post_treat - asy_lin_rep_ols_post, mom_post) + inf_or_pre = np.dot(asy_lin_rep_ols_pre_treat - asy_lin_rep_ols_pre, mom_pre) + + inf_treat_or = inf_treat_or_post - inf_treat_or_pre + inf_cont_or = inf_cont_or_post - inf_cont_or_pre + inf_or = inf_or_post - inf_or_pre + + inf_treat = inf_treat_post - inf_treat_pre + inf_treat_or + inf_cont = inf_cont_post - inf_cont_pre + inf_cont_ps + inf_cont_or + dr_att_inf_func1 = inf_treat - inf_cont + dr_att_inf_func = dr_att_inf_func1 + inf_eff + inf_or + + return dr_att, dr_att_inf_func diff --git a/drdid/_validation.py b/drdid/_validation.py new file mode 100644 index 0000000..c4bf31b --- /dev/null +++ b/drdid/_validation.py @@ -0,0 +1,133 @@ +"""Shared input and fitted-design checks for the six supported DiD kernels.""" + +import warnings + +import numpy as np +import statsmodels.api as sm + + +def _numeric(values, name): + array = np.asarray(values) + if array.dtype.kind not in "biuf" or not np.all(np.isfinite(array)): + raise ValueError("{} must contain finite numeric values".format(name)) + return np.asarray(array, dtype=float) + + +def _vector(values, name, n=None): + array = _numeric(values, name) + if array.ndim == 2 and 1 in array.shape: + array = array.reshape(-1) + if array.ndim != 1 or (n is not None and len(array) != n): + raise ValueError("{} must contain one value per observation".format(name)) + if not len(array): + raise ValueError("{} must not be empty".format(name)) + return array + + +def _inputs(D, covariates, i_weights): + treated = _vector(D, "D") + if not np.all((treated == 0) | (treated == 1)): + raise ValueError("D must contain only 0 (comparison) and 1 (treated)") + n = len(treated) + if covariates is None: + design = np.ones((n, 1)) + else: + design = _numeric(covariates, "covariates") + if design.ndim == 1: + design = design[:, None] + if design.ndim != 2 or design.shape[0] != n: + raise ValueError("covariates must have one row per observation") + # Retain Python's historical intercept convention. R's low-level + # functions instead require callers to supply the complete design. + if design.shape[1] == 0 or not np.all(design[:, 0] == 1): + design = np.column_stack((np.ones(n), design)) + if i_weights is None: + weights = np.ones(n) + else: + weights = _vector(i_weights, "i_weights", n) + if np.any(weights < 0): + raise ValueError("i_weights must be non-negative") + with np.errstate(over="ignore", invalid="ignore"): + mean_weight = np.mean(weights) + if not np.isfinite(mean_weight): + # R's mean avoids an overflowing intermediate sum. Every input is + # finite and non-negative here, so the actual mean cannot exceed the + # largest weight. Keep the ordinary path unchanged when it succeeds. + largest = np.max(weights) + mean_weight = largest * np.mean(weights / largest) + if not np.isfinite(mean_weight) or mean_weight <= 0: + raise ValueError( + "i_weights must be finite, non-negative, have positive finite mean, " + "and contain one value per observation") + return treated, design, weights / mean_weight + + +def panel_inputs(y1, y0, D, covariates, i_weights): + treated, design, weights = _inputs(D, covariates, i_weights) + return (_vector(y1, "y1", len(treated)), _vector(y0, "y0", len(treated)), + treated, design, weights) + + +def rc_inputs(y, post, D, covariates, i_weights): + treated, design, weights = _inputs(D, covariates, i_weights) + post = _vector(post, "post", len(treated)) + if not np.all((post == 0) | (post == 1)): + raise ValueError("post must contain only 0 (pre) and 1 (post)") + return _vector(y, "y", len(treated)), post, treated, design, weights + + +def validate_trim_level(trim_level): + value = _numeric(trim_level, "trim_level") + if value.ndim != 0 or not value > 0: + raise ValueError("trim_level must be a positive finite scalar") + return float(value) + + +def checked_inverse(matrix, label): + """Apply R's reciprocal-condition guard before an ordinary inverse.""" + try: + rcond = 1.0 / np.linalg.cond(matrix, 1) + if not np.isfinite(rcond) or rcond < np.finfo(float).eps: + raise np.linalg.LinAlgError("singular design") + return np.linalg.solve(matrix, np.eye(matrix.shape[0])) + except np.linalg.LinAlgError as error: + raise ValueError( + "The {} design matrix is singular. Consider removing some covariates." + .format(label)) from error + + +def check_design(design, weights, mask, label): + """Check the positive normalized-weight support actually used in a fit.""" + support = np.asarray(mask, dtype=bool) & (weights > 0) + if np.count_nonzero(support) < design.shape[1]: + raise ValueError("The {} design has too few positive-weight observations" + .format(label)) + x, w = design[support], weights[support] + with np.errstate(over="ignore", invalid="ignore"): + gram = (x * w[:, None]).T @ x / len(design) + return checked_inverse(gram, label) + + +def fit_outcome(y, design, weights, mask): + check_design(design, weights, mask, "regression") + result = sm.WLS(y[mask], design[mask], weights=weights[mask]).fit() + if not np.all(np.isfinite(result.params)): + raise ValueError("Outcome regression model coefficients are not finite") + return result + + +def fit_pscore(D, design, weights): + check_design(design, weights, np.ones(len(D), dtype=bool), "propensity score") + result = sm.GLM(D, design, family=sm.families.Binomial(), + freq_weights=weights).fit() + if not result.converged: + warnings.warn("glm algorithm did not converge", RuntimeWarning) + if not np.all(np.isfinite(result.params)): + raise ValueError("Propensity score model coefficients are not finite") + return result + + +def require_positive_mass(*components): + if any(not np.isfinite(np.mean(weights)) or np.mean(weights) <= 0 + for weights in components): + raise ValueError("Each required treatment/period group must have positive weight after trimming") diff --git a/drdid/_version_.py b/drdid/_version_.py index 88fc19e..aae2670 100644 --- a/drdid/_version_.py +++ b/drdid/_version_.py @@ -1 +1 @@ -version = '1.1.6' \ No newline at end of file +version = '1.1.7' diff --git a/drdid/drdid.py b/drdid/drdid.py index e1266c5..318a683 100644 --- a/drdid/drdid.py +++ b/drdid/drdid.py @@ -1,275 +1,10 @@ -import numpy as np -from numpy import ndarray -import statsmodels.api as sm -from .utils import * +"""Traditional doubly robust DiD kernels for panel and repeated cross sections. -import numpy as np -import statsmodels.api as sm -def drdid_rc(y, post, D, covariates, i_weights=None): +Both functions return ``(ATT, observation_influence_function)``. Covariates +retain Python's automatic intercept; supply that augmented design explicitly +when comparing with R's low-level functions. ``trim_level`` trims controls +whose fitted propensity is at or above the threshold (default 0.995). +""" +from ._estimators import drdid_panel, drdid_rc - # Convert inputs to numpy arrays - D = np.asarray(D).flatten() - n = len(D) - y = np.asarray(y).flatten() - post = np.asarray(post).flatten() - - # Add constant to covariate matrix - if covariates is None: - int_cov = np.ones((n, 1)) - else: - covariates = np.asarray(covariates) - if np.all(covariates[:, 0] == 1): - int_cov = covariates - else: - int_cov = np.column_stack((np.ones(n), covariates)) - - # Normalize weights - if i_weights is None: - i_weights = np.ones(n) - i_weights = np.asanyarray(i_weights).flatten() - i_weights = i_weights / np.mean(i_weights) - - # Compute the Pscore by MLE - pscore_model = sm.GLM(D, int_cov, family=sm.families.Binomial(), freq_weights=i_weights) - pscore_results = pscore_model.fit() - if not pscore_results.converged: - print("Warning: glm algorithm did not converge") - if np.any(np.isnan(pscore_results.params)): - raise ValueError("Propensity score model coefficients have NA components. \n Multicollinearity (or lack of variation) of covariates is a likely reason.") - ps_fit = pscore_results.predict() - ps_fit = np.minimum(ps_fit, 1 - 1e-16) - - # Compute the Outcome regression for the control group at the pre-treatment period - mask_cont_pre = (D == 0) & (post == 0) - reg_cont_pre = sm.WLS(y[mask_cont_pre], int_cov[mask_cont_pre], weights=i_weights[mask_cont_pre]).fit() - if np.any(np.isnan(reg_cont_pre.params)): - raise ValueError("Outcome regression model coefficients have NA components. \n Multicollinearity (or lack of variation) of covariates is a likely reason.") - out_y_cont_pre = np.dot(int_cov, reg_cont_pre.params) - - # Compute the Outcome regression for the control group at the post-treatment period - mask_cont_post = (D == 0) & (post == 1) - reg_cont_post = sm.WLS(y[mask_cont_post], int_cov[mask_cont_post], weights=i_weights[mask_cont_post]).fit() - if np.any(np.isnan(reg_cont_post.params)): - raise ValueError("Outcome regression model coefficients have NA components. \n Multicollinearity (or lack of variation) of covariates is a likely reason.") - out_y_cont_post = np.dot(int_cov, reg_cont_post.params) - - # Combine the ORs for control group - out_y_cont = post * out_y_cont_post + (1 - post) * out_y_cont_pre - - # Compute the Outcome regression for the treated group at the pre-treatment period - mask_treat_pre = (D == 1) & (post == 0) - reg_treat_pre = sm.WLS(y[mask_treat_pre], int_cov[mask_treat_pre], weights=i_weights[mask_treat_pre]).fit() - out_y_treat_pre = np.dot(int_cov, reg_treat_pre.params) - - # Compute the Outcome regression for the treated group at the post-treatment period - mask_treat_post = (D == 1) & (post == 1) - reg_treat_post = sm.WLS(y[mask_treat_post], int_cov[mask_treat_post], weights=i_weights[mask_treat_post]).fit() - out_y_treat_post = np.dot(int_cov, reg_treat_post.params) - - # Compute weights - w_treat_pre = i_weights * D * (1 - post) - w_treat_post = i_weights * D * post - w_cont_pre = i_weights * ps_fit * (1 - D) * (1 - post) / (1 - ps_fit) - w_cont_post = i_weights * ps_fit * (1 - D) * post / (1 - ps_fit) - w_d = i_weights * D - w_dt1 = i_weights * D * post - w_dt0 = i_weights * D * (1 - post) - - # Elements of the influence function (summands) - eta_treat_pre = w_treat_pre * (y - out_y_cont) / np.mean(w_treat_pre) - eta_treat_post = w_treat_post * (y - out_y_cont) / np.mean(w_treat_post) - eta_cont_pre = w_cont_pre * (y - out_y_cont) / np.mean(w_cont_pre) - eta_cont_post = w_cont_post * (y - out_y_cont) / np.mean(w_cont_post) - - # Extra elements for the locally efficient DRDID - eta_d_post = w_d * (out_y_treat_post - out_y_cont_post) / np.mean(w_d) - eta_dt1_post = w_dt1 * (out_y_treat_post - out_y_cont_post) / np.mean(w_dt1) - eta_d_pre = w_d * (out_y_treat_pre - out_y_cont_pre) / np.mean(w_d) - eta_dt0_pre = w_dt0 * (out_y_treat_pre - out_y_cont_pre) / np.mean(w_dt0) - - # Estimator of each component - att_treat_pre = np.mean(eta_treat_pre) - att_treat_post = np.mean(eta_treat_post) - att_cont_pre = np.mean(eta_cont_pre) - att_cont_post = np.mean(eta_cont_post) - att_d_post = np.mean(eta_d_post) - att_dt1_post = np.mean(eta_dt1_post) - att_d_pre = np.mean(eta_d_pre) - att_dt0_pre = np.mean(eta_dt0_pre) - - # ATT estimator - dr_att = (att_treat_post - att_treat_pre) - (att_cont_post - att_cont_pre) + \ - (att_d_post - att_dt1_post) - (att_d_pre - att_dt0_pre) - - # Compute influence functions - weights_ols_pre = i_weights * (1 - D) * (1 - post) - weights_ols_pre = np.array(weights_ols_pre) - wols_x_pre = weights_ols_pre[:, np.newaxis] * int_cov - wols_eX_pre = weights_ols_pre[:, np.newaxis] * (y - out_y_cont_pre)[:, np.newaxis] * int_cov - XpX_inv_pre = np.linalg.inv(np.dot(wols_x_pre.T, int_cov) / n) - asy_lin_rep_ols_pre = np.dot(wols_eX_pre, XpX_inv_pre) - - weights_ols_post = i_weights * (1 - D) * post - - wols_x_post = weights_ols_post[:, np.newaxis] * int_cov - wols_eX_post = weights_ols_post[:, np.newaxis] * (y - out_y_cont_post)[:, np.newaxis] * int_cov - XpX_inv_post = np.linalg.inv(np.dot(wols_x_post.T, int_cov) / n) - asy_lin_rep_ols_post = np.dot(wols_eX_post, XpX_inv_post) - - weights_ols_pre_treat = i_weights * D * (1 - post) - wols_x_pre_treat = weights_ols_pre_treat[:, np.newaxis] * int_cov - wols_eX_pre_treat = weights_ols_pre_treat[:, np.newaxis] * (y - out_y_treat_pre)[:, np.newaxis] * int_cov - XpX_inv_pre_treat = np.linalg.inv(np.dot(wols_x_pre_treat.T, int_cov) / n) - asy_lin_rep_ols_pre_treat = np.dot(wols_eX_pre_treat, XpX_inv_pre_treat) - - weights_ols_post_treat = i_weights * D * post - wols_x_post_treat = weights_ols_post_treat[:, np.newaxis] * int_cov - wols_eX_post_treat = weights_ols_post_treat[:, np.newaxis] * (y - out_y_treat_post)[:, np.newaxis] * int_cov - XpX_inv_post_treat = np.linalg.inv(np.dot(wols_x_post_treat.T, int_cov) / n) - asy_lin_rep_ols_post_treat = np.dot(wols_eX_post_treat, XpX_inv_post_treat) - - score_ps = i_weights[:, np.newaxis] * (D - ps_fit)[:, np.newaxis] * int_cov - Hessian_ps = pscore_results.cov_params() * n - asy_lin_rep_ps = np.dot(score_ps, Hessian_ps) - - # Influence function components - inf_treat_pre = eta_treat_pre - w_treat_pre * att_treat_pre / np.mean(w_treat_pre) - inf_treat_post = eta_treat_post - w_treat_post * att_treat_post / np.mean(w_treat_post) - - M1_post = -np.mean(w_treat_post[:, np.newaxis] * post[:, np.newaxis] * int_cov, axis=0) / np.mean(w_treat_post) - M1_pre = -np.mean(w_treat_pre[:, np.newaxis] * (1 - post)[:, np.newaxis] * int_cov, axis=0) / np.mean(w_treat_pre) - - inf_treat_or_post = np.dot(asy_lin_rep_ols_post, M1_post) - inf_treat_or_pre = np.dot(asy_lin_rep_ols_pre, M1_pre) - inf_treat_or = inf_treat_or_post + inf_treat_or_pre - - inf_treat = inf_treat_post - inf_treat_pre + inf_treat_or - - inf_cont_pre = eta_cont_pre - w_cont_pre * att_cont_pre / np.mean(w_cont_pre) - inf_cont_post = eta_cont_post - w_cont_post * att_cont_post / np.mean(w_cont_post) - - M2_pre = np.mean(w_cont_pre[:, np.newaxis] * (y - out_y_cont - att_cont_pre)[:, np.newaxis] * int_cov, axis=0) / np.mean(w_cont_pre) - M2_post = np.mean(w_cont_post[:, np.newaxis] * (y - out_y_cont - att_cont_post)[:, np.newaxis] * int_cov, axis=0) / np.mean(w_cont_post) - - inf_cont_ps = np.dot(asy_lin_rep_ps, M2_post - M2_pre) - - M3_post = -np.mean(w_cont_post[:, np.newaxis] * post[:, np.newaxis] * int_cov, axis=0) / np.mean(w_cont_post) - M3_pre = -np.mean(w_cont_pre[:, np.newaxis] * (1 - post)[:, np.newaxis] * int_cov, axis=0) / np.mean(w_cont_pre) - - inf_cont_or_post = np.dot(asy_lin_rep_ols_post, M3_post) - inf_cont_or_pre = np.dot(asy_lin_rep_ols_pre, M3_pre) - inf_cont_or = inf_cont_or_post + inf_cont_or_pre - - inf_cont = inf_cont_post - inf_cont_pre + inf_cont_ps + inf_cont_or - - dr_att_inf_func1 = inf_treat - inf_cont - - inf_eff1 = eta_d_post - w_d * att_d_post / np.mean(w_d) - inf_eff2 = eta_dt1_post - w_dt1 * att_dt1_post / np.mean(w_dt1) - inf_eff3 = eta_d_pre - w_d * att_d_pre / np.mean(w_d) - inf_eff4 = eta_dt0_pre - w_dt0 * att_dt0_pre / np.mean(w_dt0) - inf_eff = (inf_eff1 - inf_eff2) - (inf_eff3 - inf_eff4) - - mom_post = np.mean((w_d[:, np.newaxis] / np.mean(w_d) - w_dt1[:, np.newaxis] / np.mean(w_dt1)) * int_cov, axis=0) - mom_pre = np.mean((w_d[:, np.newaxis] / np.mean(w_d) - w_dt0[:, np.newaxis] / np.mean(w_dt0)) * int_cov, axis=0) - inf_or_post = np.dot(asy_lin_rep_ols_post_treat - asy_lin_rep_ols_post, mom_post) - inf_or_pre = np.dot(asy_lin_rep_ols_pre_treat - asy_lin_rep_ols_pre, mom_pre) - inf_or = inf_or_post - inf_or_pre - - dr_att_inf_func = dr_att_inf_func1 + inf_eff + inf_or - se = np.std(dr_att_inf_func, ddof=1) / np.sqrt(n) - #print(f"att: {dr_att} \t se: {se}") - return dr_att, dr_att_inf_func - - - -def drdid_panel(y1, y0, D, covariates, i_weights=None): - - # Convert inputs to numpy arrays - D = np.asarray(D).flatten() - n = len(D) - deltaY = np.asarray(y1 - y0).flatten() - i_weights = np.asarray(i_weights).flatten() - - # Add constant to covariate matrix - if covariates is None: - int_cov = np.ones((n, 1)) - else: - covariates = np.asarray(covariates) - if np.all(covariates[:, 0] == 1): - int_cov = covariates - else: - int_cov = np.column_stack((np.ones(n), covariates)) - - # Weights - if i_weights is None: - i_weights = np.ones(n) - elif np.min(i_weights) < 0: - raise ValueError("i_weights must be non-negative") - - # Normalize weights - i_weights = i_weights / np.mean(i_weights) - # print(D.mean()) - - # Compute the Pscore by MLE - pscore_model = sm.GLM(D, int_cov, family=sm.families.Binomial(), freq_weights=i_weights) - pscore_results = pscore_model.fit() - # print(D.mean()) - # print(pscore_results.summary2()) - if not pscore_results.converged: - print("Warning: glm algorithm did not converge") - if np.any(np.isnan(pscore_results.params)): - raise ValueError("Propensity score model coefficients have NA components. \n Multicollinearity (or lack of variation) of covariates is a likely reason.") - ps_fit = pscore_results.predict() - ps_fit = np.minimum(ps_fit, 1 - 1e-16) - # print(ps_fit) - - # Compute the Outcome regression for the control group using wols - mask = D == 0 - reg_model = sm.WLS(deltaY[mask], int_cov[mask], weights=i_weights[mask]) - reg_results = reg_model.fit() - if np.any(np.isnan(reg_results.params)): - raise ValueError("Outcome regression model coefficients have NA components. \n Multicollinearity (or lack of variation) of covariates is a likely reason.") - out_delta = np.dot(int_cov, reg_results.params) - - # Compute Traditional Doubly Robust DiD estimators - w_treat = i_weights * D - w_cont = i_weights * ps_fit * (1 - D) / (1 - ps_fit) - dr_att_treat = w_treat * (deltaY - out_delta) - dr_att_cont = w_cont * (deltaY - out_delta) - - eta_treat = np.mean(dr_att_treat) / np.mean(w_treat) - eta_cont = np.mean(dr_att_cont) / np.mean(w_cont) - - dr_att = eta_treat - eta_cont - - # Compute influence function - weights_ols = i_weights * (1 - D) - wols_x = weights_ols[:, np.newaxis] * int_cov - wols_eX = weights_ols[:, np.newaxis] * (deltaY - out_delta)[:, np.newaxis] * int_cov - XpX_inv = np.linalg.inv(np.dot(wols_x.T, int_cov) / n) - asy_lin_rep_wols = np.dot(wols_eX, XpX_inv) - - score_ps = i_weights[:, np.newaxis] * (D - ps_fit)[:, np.newaxis] * int_cov - Hessian_ps = pscore_results.cov_params() * n - asy_lin_rep_ps = np.dot(score_ps, Hessian_ps) - - inf_treat_1 = dr_att_treat - w_treat * eta_treat - M1 = np.mean(w_treat[:, np.newaxis] * int_cov, axis=0) - inf_treat_2 = np.dot(asy_lin_rep_wols, M1) - inf_treat = (inf_treat_1 - inf_treat_2) / np.mean(w_treat) - - inf_cont_1 = dr_att_cont - w_cont * eta_cont - M2 = np.mean(w_cont[:, np.newaxis] * (deltaY - out_delta - eta_cont)[:, np.newaxis] * int_cov, axis=0) - inf_cont_2 = np.dot(asy_lin_rep_ps, M2) - M3 = np.mean(w_cont[:, np.newaxis] * int_cov, axis=0) - inf_cont_3 = np.dot(asy_lin_rep_wols, M3) - inf_control = (inf_cont_1 + inf_cont_2 - inf_cont_3) / np.mean(w_cont) - - dr_att_inf_func = inf_treat - inf_control - se = np.std(dr_att_inf_func, ddof=1) / np.sqrt(n) - # print(f"att: {dr_att} \t se: {se}") - return dr_att, dr_att_inf_func - - - +__all__ = ["drdid_panel", "drdid_rc"] diff --git a/drdid/ipwd_did.py b/drdid/ipwd_did.py index d2ce293..0b9a3dd 100644 --- a/drdid/ipwd_did.py +++ b/drdid/ipwd_did.py @@ -1,160 +1,10 @@ -from .utils import * - -def std_ipw_did_panel(y1, y0, D, covariates, i_weights = None): - # print("ipw: panel") - D = np.asarray(D).flatten() - n = len(D) - delta_y = np.asarray(y1 - y0).flatten() - int_cov = np.ones((n, 1)) - i_weights = np.asarray(i_weights).flatten() - if covariates is not None: - covariates = np.asarray(covariates) - if np.all(covariates[:, 0] == 1): - int_cov = covariates - else: - int_cov = np.column_stack((np.ones(n), covariates)) - - if i_weights is None: - i_weights = np.ones(n) - elif np.min(i_weights) < 0: - raise ValueError("i_weights must be non-negative") - - i_weights = i_weights / np.mean(i_weights) - pscore_model = sm.GLM(D, int_cov, family=sm.families.Binomial(), freq_weights=i_weights) - pscore_results = pscore_model.fit() - # print(D.mean()) - # print(pscore_results.summary2()) - if not pscore_results.converged: - print("Warning: glm algorithm did not converge") - if np.any(np.isnan(pscore_results.params)): - raise ValueError("Propensity score model coefficients have NA components. \n Multicollinearity (or lack of variation) of covariates is a likely reason.") - ps_fit = pscore_results.predict() - ps_fit = np.minimum(ps_fit, 1 - 1e-16) - - w_treat = i_weights * D - w_cont = i_weights * ps_fit * (1 - D) / (1 - ps_fit) - - att_treat = w_treat * delta_y - att_cont = w_cont * delta_y - - eta_treat = mean(att_treat) / mean(w_treat) - eta_cont = mean(att_cont) / mean(w_cont) - - ipw_att = eta_treat - eta_cont - - score_ps = i_weights[:, np.newaxis] * (D - ps_fit)[:, np.newaxis] * int_cov - Hessian_ps = pscore_results.cov_params() * n - asy_lin_rep_ps = np.dot(score_ps, Hessian_ps) - - inf_treat = (att_treat - w_treat * eta_treat) / mean(w_treat) - inf_cont_1 = att_cont - w_cont * eta_cont - pre_m2 = w_cont * (delta_y - eta_cont) - M2 = np.mean(pre_m2[:, np.newaxis] * int_cov, axis = 0) - # print(M2) - inf_cont_2 = np.dot(asy_lin_rep_ps, M2) - - inf_control = (inf_cont_1 + inf_cont_2) / np.mean(w_cont) - att_inf_func = inf_treat - inf_control - se = np.std(att_inf_func, ddof=1) / np.sqrt(n) - # print(f"att: {ipw_att} \t se: {se}") - # print(np.std(att_inf_func) / np.sqrt(n)) - return ipw_att, att_inf_func - -def std_ipw_did_rc(y, post, D, covariates, i_weights = None): - # print("ipw: rc") - D = np.asarray(D).flatten() - y = np.asarray(y).flatten() - post = np.asarray(post).flatten() - n = len(D) - if covariates is None: - int_cov = np.ones((n, 1)) - else: - covariates = np.asarray(covariates) - if np.all(covariates[:, 0] == 1): - int_cov = covariates - else: - int_cov = np.column_stack((np.ones(n), covariates)) - - # Pesos - if i_weights is None: - i_weights = np.ones(n) - else: - i_weights = np.asarray(i_weights) - if np.min(i_weights) < 0: - raise ValueError("i_weights must be non-negative") - - # Normalizar pesos - i_weights = np.asarray(i_weights).flatten() - i_weights = i_weights / np.mean(i_weights) - - pscore_model = sm.GLM(D, int_cov, family=sm.families.Binomial(), freq_weights=i_weights) - pscore_results = pscore_model.fit() - if not pscore_results.converged: - print("Warning: glm algorithm did not converge") - if np.any(np.isnan(pscore_results.params)): - raise ValueError("Propensity score model coefficients have NA components. \n Multicollinearity (or lack of variation) of covariates is a likely reason.") - ps_fit = pscore_results.predict() - ps_fit = np.minimum(ps_fit, 1 - 1e-16) - - - w_treat_pre = i_weights * D * (1 - post) - w_treat_post = i_weights * D * post - # print(np.mean(w_treat_pre)) - - w_cont_pre = i_weights * ps_fit * (1 - D) * (1 - post)/(1 - ps_fit) - w_cont_post = i_weights * ps_fit * (1 - D) * post/(1 - ps_fit) - - # Elements of the influence function (summands) - eta_treat_pre = w_treat_pre * y / np.mean(w_treat_pre) - eta_treat_post = w_treat_post * y / np.mean(w_treat_post) - # print(eta_treat_pre) - - eta_cont_pre = w_cont_pre * y / np.mean(w_cont_pre) - eta_cont_post = w_cont_post * y / np.mean(w_cont_post) - - # Estimator of each component - att_treat_pre = np.mean(eta_treat_pre) - att_treat_post = np.mean(eta_treat_post) - att_cont_pre = np.mean(eta_cont_pre) - att_cont_post = np.mean(eta_cont_post) - ipw_att = (att_treat_post - att_treat_pre) - (att_cont_post - att_cont_pre) - - score_ps = (i_weights * (D - ps_fit))[:, np.newaxis] * int_cov - Hessian_ps = pscore_results.cov_params() * n - asy_lyn_rep_ps = np.dot(score_ps, Hessian_ps) - - inf_treat_pre = eta_treat_pre - w_treat_pre * att_treat_pre/np.mean(w_treat_pre) - inf_treat_post = eta_treat_post - w_treat_post * att_treat_post/np.mean(w_treat_post) - inf_treat = inf_treat_post - inf_treat_pre - # Now, get the influence function of control component - # Leading term of the influence function: no estimation effect - inf_cont_pre = eta_cont_pre - w_cont_pre * att_cont_pre/np.mean(w_cont_pre) - inf_cont_post = eta_cont_post - w_cont_post * att_cont_post/np.mean(w_cont_post) - inf_cont = inf_cont_post - inf_cont_pre - - # Estimation effect from gamma hat (pscore) - # Derivative matrix (k x 1 vector) - - M2_pre = np.mean((w_cont_pre *(y - att_cont_pre))[:, np.newaxis] * int_cov, axis = 0)/np.mean(w_cont_pre) - M2_post = np.mean((w_cont_post *(y - att_cont_post))[:, np.newaxis] * int_cov, axis = 0)/np.mean(w_cont_post) - - # Now the influence function related to estimation effect of pscores - M2 = M2_post - M2_pre - # print() - - inf_cont_ps = np.dot(asy_lyn_rep_ps, M2) - - # Influence function for the control component - inf_cont = inf_cont + inf_cont_ps - - #get the influence function of the DR estimator (put all pieces together) - att_inf_func = inf_treat - inf_cont - # print(np.std(att_inf_func) / np.sqrt(n)) - se = np.std(att_inf_func, ddof=1) / np.sqrt(n) - # print(f"att: {ipw_att} \t se: {se}") - return ipw_att, att_inf_func - - - +"""Normalized IPW DiD kernels for panel and repeated cross sections. +Both functions return ``(ATT, observation_influence_function)``. Covariates +retain Python's automatic intercept; supply that augmented design explicitly +when comparing with R's low-level functions. ``trim_level`` trims controls +whose fitted propensity is at or above the threshold (default 0.995). +""" +from ._estimators import std_ipw_did_panel, std_ipw_did_rc +__all__ = ["std_ipw_did_panel", "std_ipw_did_rc"] diff --git a/drdid/reg_did.py b/drdid/reg_did.py index be6f000..e4339e3 100644 --- a/drdid/reg_did.py +++ b/drdid/reg_did.py @@ -1,196 +1,24 @@ -import numpy as np -import statsmodels.api as sm -from numpy import ndarray - -from .utils import * -import numpy as np -import statsmodels.api as sm -from numpy import ndarray - -from .utils import * - -def asy_lin_wols(d, post, y, out_y, int_cov, i_w, n): - weigths_ols = i_w * d * post - # weigths_ols_pre - wols_x = weigths_ols[:, n_x] * int_cov - wols_ex = (weigths_ols * (y - out_y))[:, n_x] * int_cov - cr = np.dot(wols_x.T, int_cov) / n - xpx_inv = qr_solver(cr) - asy_lin_rep_ols = np.dot(wols_ex, xpx_inv) - return asy_lin_rep_ols +"""Outcome regression DiD kernels for panel and repeated cross sections. +Both functions return ``(ATT, observation_influence_function)``. Covariates +retain Python's automatic intercept; supply that augmented design explicitly +when comparing with R's low-level functions. +""" import numpy as np -import statsmodels.api as sm -def reg_did_panel(y1, y0, D, covariates=None, i_weights=None): - # Convert inputs to numpy arrays - # print("reg: panel") - y1 = np.array(y1) - y0 = np.array(y0) - D = np.array(D) - - # Sample size - n = len(D) - - # Generate deltaY - deltaY = y1 - y0 - - # Add constant to covariate vector - if covariates is None: - int_cov = np.ones((n, 1)) - else: - covariates = np.asarray(covariates) - if np.all(covariates[:, 0] == 1): - int_cov = covariates - else: - int_cov = np.column_stack((np.ones(n), covariates)) - - - # Weights - if i_weights is None: - i_weights = np.ones(n) - else: - i_weights = np.array(i_weights) - if np.min(i_weights) < 0: - raise ValueError("i_weights must be non-negative") - - # Normalize weights - i_weights = i_weights / np.mean(i_weights) - - # Compute the Outcome regression for the control group using OLS - model = sm.WLS(deltaY[D == 0], int_cov[D == 0], weights=i_weights[D == 0]) - results = model.fit() - reg_coeff = results.params - # print(reg_coeff) - if np.any(np.isnan(reg_coeff)): - raise ValueError("Outcome regression model coefficients have NA components. Multicollinearity (or lack of variation) of covariates is probably the reason for it.") - - out_delta = np.dot(int_cov, reg_coeff) - # print(out_delta) - - # Compute the OR-DiD estimator - w_treat = i_weights * D - w_cont = i_weights * D - reg_att_treat = w_treat * deltaY - reg_att_cont = w_cont * out_delta - eta_treat = np.mean(reg_att_treat) / np.mean(w_treat) - eta_cont = np.mean(reg_att_cont) / np.mean(w_cont) - # print(np.mean(reg_att_cont), np.mean(w_cont)) - reg_att = eta_treat - eta_cont - - # Compute influence function - weights_ols = i_weights * (1 - D) - wols_x = weights_ols[:, np.newaxis] * int_cov - wols_eX = weights_ols[:, np.newaxis] * (deltaY - out_delta)[:, np.newaxis] * int_cov - XpX_inv = np.linalg.inv(np.dot(wols_x.T, int_cov) / n) - asy_lin_rep_ols = np.dot(wols_eX, XpX_inv) - - inf_treat = (reg_att_treat - w_treat * eta_treat) / np.mean(w_treat) - - inf_cont_1 = reg_att_cont - w_cont * eta_cont - M1 = np.mean(w_cont[:, np.newaxis] * int_cov, axis=0) - inf_cont_2 = np.dot(asy_lin_rep_ols, M1) - inf_control = (inf_cont_1 + inf_cont_2) / np.mean(w_cont) - - reg_att_inf_func = inf_treat - inf_control - se = np.std(reg_att_inf_func, ddof=1) / np.sqrt(n) - # print(f"att: {reg_att} \t se: {se}") - - return reg_att, reg_att_inf_func +from ._estimators import reg_did_panel, reg_did_rc +from ._validation import checked_inverse +__all__ = ["reg_did_panel", "reg_did_rc", "asy_lin_wols"] - -def reg_did_rc(y, post, D, covariates, i_weights=None): -# print("reg_rc") - D = np.asarray(D).flatten() - post = np.asarray(post).flatten() - n = len(D) - y = np.asarray(y).flatten() - i_weights = np.asarray(i_weights).flatten() - int_cov = np.ones((n, 1)) - - if covariates is not None: - covariates = np.asarray(covariates) - if np.all(covariates[:, 0] == 1): - int_cov = covariates - else: - int_cov = np.column_stack((np.ones(n), covariates)) - - if i_weights is None: - i_weights = np.ones(n) - elif np.min(i_weights) < 0: - raise ValueError("i_weights must be non-negative") - - i_weights = i_weights / np.mean(i_weights) - - # Pre-treatment regression - mask_pre = (D == 0) & (post == 0) - X_pre = int_cov[mask_pre] - y_pre = y[mask_pre] - w_pre = i_weights[mask_pre] - model_pre = sm.WLS(y_pre, X_pre, weights=w_pre) - results_pre = model_pre.fit() - reg_coeff_pre = results_pre.params - - if np.any(np.isnan(reg_coeff_pre)): - raise ValueError("Outcome regression model coefficients have NA components. \n Multicollinearity of covariates is probably the reason for it.") - - out_y_pre = np.dot(int_cov, reg_coeff_pre) - - # Post-treatment regression - mask_post = (D == 0) & (post == 1) - X_post = int_cov[mask_post] - y_post = y[mask_post] - w_post = i_weights[mask_post] - model_post = sm.WLS(y_post, X_post, weights=w_post) - results_post = model_post.fit() - reg_coeff_post = results_post.params - - if np.any(np.isnan(reg_coeff_post)): - raise ValueError("Outcome regression model coefficients have NA components. \n Multicollinearity (or lack of variation) of covariates is probably the reason for it.") - - out_y_post = np.dot(int_cov, reg_coeff_post) - - w_treat_pre = i_weights * D * (1 - post) - w_treat_post = i_weights * D * post - w_cont = i_weights * D - reg_att_treat_pre = w_treat_pre * y - reg_att_treat_post = w_treat_post * y - reg_att_cont = w_cont * (out_y_post - out_y_pre) - eta_treat_pre = np.mean(reg_att_treat_pre) / np.mean(w_treat_pre) - eta_treat_post = np.mean(reg_att_treat_post) / np.mean(w_treat_post) - eta_cont = np.mean(reg_att_cont) / np.mean(w_cont) - reg_att = (eta_treat_post - eta_treat_pre) - eta_cont - - weights_ols_pre = i_weights * (1 - D) * (1 - post) - # print(weights_ols_pre.reshape((n, 1))) - wols_x_pre = weights_ols_pre[:, np.newaxis] * int_cov - wols_eX_pre = weights_ols_pre[:, np.newaxis] * (y - out_y_pre)[:, np.newaxis] * int_cov - XpX_inv_pre = np.linalg.inv(np.dot(wols_x_pre.T, int_cov) / n) - asy_lin_rep_ols_pre = np.dot(wols_eX_pre, XpX_inv_pre) - - weights_ols_post = i_weights * (1 - D) * post - wols_x_post = weights_ols_post[:, np.newaxis] * int_cov - wols_eX_post = weights_ols_post[:, np.newaxis] * (y - out_y_post)[:, np.newaxis] * int_cov - XpX_inv_post = np.linalg.inv(np.dot(wols_x_post.T, int_cov) / n) - asy_lin_rep_ols_post = np.dot(wols_eX_post, XpX_inv_post) - - inf_treat_pre = (reg_att_treat_pre - w_treat_pre * eta_treat_pre) / np.mean(w_treat_pre) - inf_treat_post = (reg_att_treat_post - w_treat_post * eta_treat_post) / np.mean(w_treat_post) - inf_treat = inf_treat_post - inf_treat_pre - - inf_cont_1 = (reg_att_cont - w_cont * eta_cont) - M1 = np.mean(w_cont[:, np.newaxis] * int_cov, axis=0) - inf_cont_2_post = np.dot(asy_lin_rep_ols_post, M1) - inf_cont_2_pre = np.dot(asy_lin_rep_ols_pre, M1) - inf_control = (inf_cont_1 + inf_cont_2_post - inf_cont_2_pre) / np.mean(w_cont) - - reg_att_inf_func = (inf_treat - inf_control) -# se_reg_att = np.std(reg_att_inf_func) / np.sqrt(n) - se = np.std(reg_att_inf_func, ddof=1) / np.sqrt(n) -# print(f"att: {reg_att} \t se: {se}") - - return reg_att, reg_att_inf_func - - +def asy_lin_wols(d, post, y, out_y, int_cov, i_w, n): + """Retain the historical weighted-OLS influence helper and its signature.""" + weights_ols = (np.asarray(i_w).reshape(-1) + * np.asarray(d).reshape(-1) * np.asarray(post).reshape(-1)) + design = np.asarray(int_cov) + residual = np.asarray(y).reshape(-1) - np.asarray(out_y).reshape(-1) + wols_x = weights_ols[:, None] * design + wols_ex = (weights_ols * residual)[:, None] * design + inverse = checked_inverse(wols_x.T @ design / n, "regression") + return wols_ex @ inverse diff --git a/drdid_r/DRDID b/drdid_r/DRDID deleted file mode 160000 index 8a1c09f..0000000 --- a/drdid_r/DRDID +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 8a1c09f932b142e6c3b8281cd3177ab302c583d2 diff --git a/scripts/check_csdid_integration.py b/scripts/check_csdid_integration.py new file mode 100644 index 0000000..23f93f2 --- /dev/null +++ b/scripts/check_csdid_integration.py @@ -0,0 +1,49 @@ +"""Compare CSDID's actual dispatched kernels on the fixed common inputs. + +Run with the proposed drdid package installed and the chosen CSDID checkout or +installation on PYTHONPATH. This checks kernels, not public group-time sample +selection and overlap guards; those require CSDID's complete suite as well. +""" +import json +from pathlib import Path + +import numpy as np + +from csdid.attgt_fnc.compute_att_gt_shared import select_estimators +from drdid import drdid, ipwd_did, reg_did + + +def main(): + root = Path(__file__).resolve().parents[1] / "tests/r_ref" + cases = json.loads((root / "cases.json").read_text()) + # CSDID exposes the default .995 threshold; .90 standalone cases are checked + # against R directly, preserving the public CSDID method specification. + cases = [case for case in cases if case["trim_level"] == .995] + for case in cases: + data = np.genfromtxt(str(root / (case["dataset"] + ".csv")), names=True, delimiter=",") + name, scale, n = case["method"], case["scale"], len(data) + module = reg_did if name.startswith("reg_") else ipwd_did if name.startswith("std_") else drdid + method = "reg" if name.startswith("reg_") else "ipw" if name.startswith("std_") else "dr" + panel = name.endswith("_panel") + design = np.column_stack((np.ones(n), data["x"], data["z"])) if case["covariates"] else None + weights = None if case["weights"] == "none" else ( + np.ones(n) if case["weights"] == "ones" else data["w"].copy()) + if case["weights"] == "zero": + weights[::11] = 0 + args = (data["y1"]*scale, data["y0"]*scale, data["D"]) if panel else ( + data["y"]*scale, data["post"], data["D"]) + standalone = getattr(module, name)(*args, covariates=design, i_weights=weights) + provider = select_estimators(method)[0 if panel else 1] + integrated = provider(*args, covariates=design, i_weights=weights) + # Keep the strict raw-output contract as well as the predeclared unit + # conversion that makes the small-outcome cases informative. + for direct, dispatched in zip(standalone, integrated): + np.testing.assert_allclose(direct, dispatched, rtol=1e-6, atol=1e-7) + np.testing.assert_allclose(np.asarray(direct)/scale, + np.asarray(dispatched)/scale, + rtol=1e-6, atol=1e-7) + print("%d common-input CSDID dispatch comparisons passed" % len(cases)) + + +if __name__ == "__main__": + main() diff --git a/scripts/check_r_source.py b/scripts/check_r_source.py new file mode 100644 index 0000000..9918199 --- /dev/null +++ b/scripts/check_r_source.py @@ -0,0 +1,37 @@ +"""Require review of every tracked R-repository change, even if numbers pass.""" +import hashlib +import json +from pathlib import Path +import subprocess +import sys + + +def source_hashes(root): + paths = subprocess.check_output(["git", "-C", str(root), "ls-files"], + universal_newlines=True).splitlines() + # Bind the entire tracked tree, including native code, namespace declarations + # and build hooks. Documentation-only changes deliberately require review. + return {name: hashlib.sha256((root / name).read_bytes()).hexdigest() + for name in paths} + + +def main(): + root = Path(sys.argv[1]).resolve() + dirty = subprocess.check_output(["git", "-C", str(root), "status", "--porcelain", + "--untracked-files=all"], universal_newlines=True) + if dirty.strip(): + print("R checkout must be clean, including untracked files") + return 2 + manifest = json.loads((Path(__file__).resolve().parents[1] / + "tests/r_ref/manifest.json").read_text()) + old, new = manifest["r_source_hashes"], source_hashes(root) + changed = sorted(name for name in set(old) | set(new) if old.get(name) != new.get(name)) + revision = subprocess.check_output(["git", "-C", str(root), "rev-parse", "HEAD"], + universal_newlines=True).strip() + print(json.dumps({"reviewed_revision": manifest["r_revision"], + "selected_revision": revision, "changed_source_or_test_files": changed}, indent=2)) + return 3 if changed else 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/tests/r_ref/cases.json b/tests/r_ref/cases.json new file mode 100644 index 0000000..b202777 --- /dev/null +++ b/tests/r_ref/cases.json @@ -0,0 +1,722 @@ +[ + { + "dataset": "ordinary", + "covariates": true, + "weights": "none", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-000" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "none", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-001" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "none", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-002" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "none", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-003" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "none", + "method": "reg_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-004" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "none", + "method": "reg_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-005" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "ones", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-006" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "ones", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-007" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "ones", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-008" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "ones", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-009" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "ones", + "method": "reg_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-010" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "ones", + "method": "reg_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-011" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-012" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-013" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-014" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-015" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "reg_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-016" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "reg_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-017" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "zero", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-018" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "zero", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-019" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "zero", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-020" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "zero", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-021" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "zero", + "method": "reg_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-022" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "zero", + "method": "reg_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-023" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "none", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-024" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "none", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-025" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "none", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-026" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "none", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-027" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "none", + "method": "reg_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-028" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "none", + "method": "reg_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-029" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "ones", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-030" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "ones", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-031" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "ones", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-032" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "ones", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-033" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "ones", + "method": "reg_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-034" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "ones", + "method": "reg_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-035" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "weights", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-036" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "weights", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-037" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "weights", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-038" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "weights", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-039" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "weights", + "method": "reg_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-040" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "weights", + "method": "reg_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-041" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "zero", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-042" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "zero", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-043" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "zero", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-044" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "zero", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-045" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "zero", + "method": "reg_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-046" + }, + { + "dataset": "ordinary", + "covariates": false, + "weights": "zero", + "method": "reg_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-047" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "weights", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-048" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "weights", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.9, + "id": "case-049" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "weights", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-050" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "weights", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.9, + "id": "case-051" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "weights", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-052" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "weights", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.9, + "id": "case-053" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "weights", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-054" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "weights", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.9, + "id": "case-055" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "weights", + "method": "reg_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-056" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "weights", + "method": "reg_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-057" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "zero", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-058" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "zero", + "method": "drdid_panel", + "scale": 1.0, + "trim_level": 0.9, + "id": "case-059" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "zero", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-060" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "zero", + "method": "drdid_rc", + "scale": 1.0, + "trim_level": 0.9, + "id": "case-061" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "zero", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-062" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "zero", + "method": "std_ipw_did_panel", + "scale": 1.0, + "trim_level": 0.9, + "id": "case-063" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "zero", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-064" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "zero", + "method": "std_ipw_did_rc", + "scale": 1.0, + "trim_level": 0.9, + "id": "case-065" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "zero", + "method": "reg_did_panel", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-066" + }, + { + "dataset": "trim", + "covariates": true, + "weights": "zero", + "method": "reg_did_rc", + "scale": 1.0, + "trim_level": 0.995, + "id": "case-067" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "drdid_panel", + "scale": 1e-10, + "trim_level": 0.995, + "id": "case-068" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "drdid_rc", + "scale": 1e-10, + "trim_level": 0.995, + "id": "case-069" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "std_ipw_did_panel", + "scale": 1e-10, + "trim_level": 0.995, + "id": "case-070" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "std_ipw_did_rc", + "scale": 1e-10, + "trim_level": 0.995, + "id": "case-071" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "reg_did_panel", + "scale": 1e-10, + "trim_level": 0.995, + "id": "case-072" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "reg_did_rc", + "scale": 1e-10, + "trim_level": 0.995, + "id": "case-073" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "drdid_panel", + "scale": 10000000000.0, + "trim_level": 0.995, + "id": "case-074" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "drdid_rc", + "scale": 10000000000.0, + "trim_level": 0.995, + "id": "case-075" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "std_ipw_did_panel", + "scale": 10000000000.0, + "trim_level": 0.995, + "id": "case-076" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "std_ipw_did_rc", + "scale": 10000000000.0, + "trim_level": 0.995, + "id": "case-077" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "reg_did_panel", + "scale": 10000000000.0, + "trim_level": 0.995, + "id": "case-078" + }, + { + "dataset": "ordinary", + "covariates": true, + "weights": "weights", + "method": "reg_did_rc", + "scale": 10000000000.0, + "trim_level": 0.995, + "id": "case-079" + } +] diff --git a/tests/r_ref/export.R b/tests/r_ref/export.R new file mode 100644 index 0000000..3fde60b --- /dev/null +++ b/tests/r_ref/export.R @@ -0,0 +1,63 @@ +# Rscript tests/r_ref/export.R /clean/DRDID /new/output.json [fastglm-wrapper] +# Source identity and reference acceptance are reviewed separately from export. +args <- commandArgs(trailingOnly = TRUE) +stopifnot(length(args) %in% c(2L, 3L)) +source <- normalizePath(args[[1L]], mustWork = TRUE) +if (file.exists(args[[2L]])) stop("Output already exists; use a new file") +git_output <- function(...) system2("git", c("-C", shQuote(source), ...), stdout = TRUE) +revision <- git_output("rev-parse", "HEAD") +stopifnot(length(revision) == 1L, grepl("^[0-9a-f]{40}$", revision)) +if (length(git_output("status", "--porcelain", "--untracked-files=all"))) { + stop("R checkout must be clean, including untracked files") +} +# Bind the complete tracked tree: native code, namespace declarations and build +# hooks can affect behavior too. Documentation-only changes also require review. +source_files <- git_output("ls-files") +source_hashes <- as.list(setNames(vapply(file.path(source, source_files), function(path) { + digest::digest(file = path, algo = "sha256") +}, character(1L)), source_files)) +suppressPackageStartupMessages(pkgload::load_all(source, quiet = TRUE, recompile = TRUE)) +if (length(args) == 3L) { + stopifnot(args[[3L]] == "fastglm-wrapper") + namespace <- asNamespace("DRDID") + unlockBinding("fastglm_fit", namespace) + assign("fastglm_fit", function(x, y, family, weights = NULL, method = 0L) { + fastglm::fastglm(x = x, y = y, family = family, weights = weights, + method = method, tol = 1e-8, maxit = 100L) + }, envir = namespace) + lockBinding("fastglm_fit", namespace) +} +file_arg <- grep("^--file=", commandArgs(), value = TRUE) +root <- dirname(normalizePath(sub("^--file=", "", file_arg[[1L]]))) +cases <- jsonlite::read_json(file.path(root, "cases.json"), simplifyVector = FALSE) +out <- list() +for (case in cases) { + data <- read.csv(file.path(root, paste0(case$dataset, ".csv"))) + n <- nrow(data) + weights <- switch(case$weights, none = NULL, ones = rep(1, n), weights = data$w, zero = data$w) + if (case$weights == "zero") weights[seq(1L, n, by = 11L)] <- 0 + design <- if (case$covariates) cbind(1, data$x, data$z) else NULL + params <- list(D = data$D, covariates = design, i.weights = weights, + boot = FALSE, inffunc = TRUE) + if (endsWith(case$method, "_rc")) { + params$y <- data$y * case$scale + params$post <- data$post + } else { + params$y1 <- data$y1 * case$scale + params$y0 <- data$y0 * case$scale + } + if (!startsWith(case$method, "reg_")) params$trim.level <- case$trim_level + result <- do.call(get(case$method, envir = asNamespace("DRDID")), params) + out[[case$id]] <- list(att = result$ATT, influence = as.numeric(result$att.inf.func), + se = result$se, lci = result$lci, uci = result$uci) +} +inputs <- c("ordinary.csv", "trim.csv", "cases.json", "export.R", "generate_inputs.py") +input_hashes <- as.list(setNames(vapply(file.path(root, inputs), function(path) { + digest::digest(file = path, algo = "sha256") +}, character(1L)), inputs)) +payload <- list(schema_version = 1L, + source = list(revision = revision, version = as.character(packageVersion("DRDID")), + hashes = source_hashes), + inputs = input_hashes, configurations = length(out), results = out) +jsonlite::write_json(payload, args[[2L]], auto_unbox = TRUE, digits = 17, pretty = FALSE) +cat(length(out), "R configurations exported\n") diff --git a/tests/r_ref/generate_inputs.py b/tests/r_ref/generate_inputs.py new file mode 100644 index 0000000..0bc2352 --- /dev/null +++ b/tests/r_ref/generate_inputs.py @@ -0,0 +1,54 @@ +"""Deterministic common inputs; run separately from the R reference exporter.""" +import csv +import json +from pathlib import Path + +import numpy as np + + +ROOT = Path(__file__).resolve().parent +METHODS = ("drdid_panel", "drdid_rc", "std_ipw_did_panel", "std_ipw_did_rc", + "reg_did_panel", "reg_did_rc") + + +def main(): + for dataset, seed, n in (("ordinary", 8201, 600), ("trim", 902, 2000)): + rng = np.random.default_rng(seed) + x, z = rng.normal(size=(2, n)) + logit = -.3 + .5*x - .2*z + .4*np.sin(2*x) if dataset == "ordinary" else 6*x + treated = (rng.random(n) < 1/(1+np.exp(-logit))).astype(float) + if dataset == "trim": + x[:4], treated[:4] = [2.5, 2.8, 3.1, 3.3], 0 + post = (rng.random(n) < .55).astype(float) + if dataset == "trim": + post[:4] = [0, 1, 0, 1] + y0 = .8 + .3*x - .2*z + rng.normal(size=n) if dataset == "ordinary" else .4+x+.5*z+rng.normal(size=n) + y1 = y0 + .6 + .4*x + 1.1*treated + rng.normal(size=n) if dataset == "ordinary" else y0+.7+.8*x+1.2*treated+rng.normal(size=n) + weights = np.exp(.2*x-.15*z) if dataset == "ordinary" else np.exp(.1*x-.1*z) + with (ROOT / (dataset + ".csv")).open("w", newline="") as stream: + writer = csv.writer(stream, lineterminator="\n") + writer.writerow(("y0", "y1", "y", "D", "post", "x", "z", "w")) + writer.writerows(zip(y0, y1, post*y1+(1-post)*y0, treated, post, x, z, weights)) + + cases = [] + for covariates in (True, False): + for weights in ("none", "ones", "weights", "zero"): + for method in METHODS: + cases.append(dict(dataset="ordinary", covariates=covariates, + weights=weights, method=method, scale=1., trim_level=.995)) + for weights in ("weights", "zero"): + for method in METHODS: + for trim in ((.995, .90) if not method.startswith("reg_") else (.995,)): + cases.append(dict(dataset="trim", covariates=True, weights=weights, + method=method, scale=1., trim_level=trim)) + for scale in (1e-10, 1e10): + for method in METHODS: + cases.append(dict(dataset="ordinary", covariates=True, weights="weights", + method=method, scale=scale, trim_level=.995)) + for index, case in enumerate(cases): + case["id"] = "case-%03d" % index + (ROOT / "cases.json").write_text(json.dumps(cases, indent=2) + "\n") + + +if __name__ == "__main__": + main() diff --git a/tests/r_ref/manifest.json b/tests/r_ref/manifest.json new file mode 100644 index 0000000..e17d8a6 --- /dev/null +++ b/tests/r_ref/manifest.json @@ -0,0 +1,222 @@ +{ + "schema_version": 1, + "r_repository": "https://github.com/pedrohcgs/DRDID", + "r_revision": "eaac3b49cd225d0d7706c633858555a5f204e21e", + "r_version": "1.4.0", + "python_baseline_revision": "75cac04ee98959ccf1c06df80fa447cc20c8fa42", + "configurations": 80, + "scope": "Six existing traditional DR / normalized IPW / regression kernels; matched design and sample; no bootstrap API.", + "tolerance": { + "absolute": 1e-07, + "relative": 1e-06, + "units": "Both strict raw-output checks and checks after dividing both outputs by the predeclared outcome scale." + }, + "r_source_hashes": { + ".Rbuildignore": "a69b4e0d3156265b98f3ac6aa3da199425ab4badf5a1935e204a77df2f70c992", + ".github/.gitignore": "8f27a8e64eb5eb6c1fc9780d8ef46aace5babe35efc390844b22308fb96cb858", + ".github/workflows/check-release.yaml": "a8c419f12c77c73cefeef27e4840576e9e9f1511f0babc9b35b122d84c07c18d", + ".github/workflows/check-standard.yaml": "ee6aaa23684f7c1ca82cff5d21f2565cc8d214f24181a970e8accf2ab0ff09fa", + ".github/workflows/pkgdown.yaml": "ad10aa619d978c5497ba98538704e7b7e8c211cf8f4d960e11b9fa61cc03ad66", + ".github/workflows/rhub.yaml": "3ffb6a79d6fd11c708a1fd7f9eaed50717aaa83c02797685bd7ad380b6b1897b", + ".github/workflows/test-coverage.yaml": "85ffb66f7b9adef27c506779474082133de020f6caf9e25da77761133283f9fd", + ".gitignore": "6adbbfc5d288aa8b98fcb0e2a79377320db530d81d701b9220608fe0711914e7", + "CRAN-SUBMISSION": "ea08d63e5de201dba81bfac8a43c047626820ed0f392211fe4e90d70117cce75", + "DESCRIPTION": "7feffaf76d711bd9de9480a495fe1960093273fd45ade8625130f33ed0160ee9", + "DRDID.Rproj": "0264dccd0258ed101f74964944ef4c62e2376dbeb31aa90830376b54759f8a44", + "NAMESPACE": "2df24f98d5a0ac3d60a58b096cb6260cde29ad0b942d35a68736e1ab0de5869b", + "NEWS.md": "03db4f1c3d4e28b05667fa1a20599300e2e76f57628b0fd2fbe08c9d8cf2b2ea", + "R/DRDID-package.R": "45deb21f74d0c76023e8b17137aba369d408fe0686c0971381949554fa2cef2a", + "R/RcppExports.R": "9df22c503d1c471a654fc24288f91b1b067523e2eaf759d9198bc3b6e04fe3ec", + "R/aipw.did.panel.R": "a64fb68a775b447521b42b6e1aba62d136a6d7c6ae94b0047eeff26b26864f20", + "R/aipw_did_rc.R": "38479d9979008c6ac9c327a74ae9a962ee88224c481ef1e493378356c1996e8d", + "R/aipw_did_rc1.R": "2ef4b8d4d48d6da76484a08074dd020019656f568a9b50374cd57a5741b0adb3", + "R/bootstrap_inference.R": "63d2bd03ebd2f42c43d01801caf63064cb9df2c8f480708e5d361ac5b9f654b4", + "R/drdid.R": "09ea2ee70ec66c1731245c14689f0fe07ee5e168c602866465293b20e8104ec6", + "R/drdid_imp_panel.R": "baf7f796f8d3bf298665fb3683d44f4b42cbf38f84d6099b52f0b3173359e571", + "R/drdid_imp_rc.R": "96027b7d44b054cef89f902fad09a345a03d4492e88aa30778364d8c8149d412", + "R/drdid_imp_rc1.R": "ecdaa6aa3e9510bdafe18162da9c292ad153dc0eacd00fbe84f10a7f2780efd4", + "R/drdid_panel.R": "6e113269e07d4ecd2600ef9121ec319cd6a8abdcf50d696da45ab869e2cf1adb", + "R/drdid_rc.R": "69270b8cacfff375e0e575cd0e8b5feb57e66499882cb1fd20f0194fbd1acf29", + "R/drdid_rc1.R": "7fb6910cbc15607f26b9177e7ebff82de588340474587b366248f92f59d5e940", + "R/fastglm_fit.R": "5187a7f3969041cf9f88319bcbfcda54415e7a06b1a1f6064915b3542e4b279d", + "R/ipt.loss.aggregate.R": "90b88a5d6b839451ea29052d7dfa76122479a8b336abd561e7b983f89a7ee34c", + "R/ipt.valid.R": "6b0344458294a08ad27aeaebfe09ac91c4411f626f094acac61ad474e7d242c6", + "R/ipw_did_panel.R": "2bbc66b037402f978a31574d3a3848e8b589f83637ab00a9fc646855b0d9ab20", + "R/ipw_did_rc.R": "63359b33dd96042cda68b859b34492d28a5131ff1b62a7f3e245d9fe40e2387c", + "R/ipwdid.R": "a73285ca44d431ee61a5be599a982d8e9f0e7101df3b467711dc0987d1e2076f", + "R/loss.ps.IPT.R": "363395c2d3480283092c482695deb5eba2d9349467ac6deb6e37f09ec5d1816e", + "R/loss.ps.cal.R": "e49496a2788916ba1981e06ae02febc745da0aaf040210181027c1cb9c1e2a32", + "R/mboot.did.R": "533bdf3a0d984d0c0f4e1ea67dc9a86ce8be4e49a503adb703cbdf8a4d226abb", + "R/mboot.twfep.did.R": "4dfc2940660000ee4db6e7206155b4fd9a54cde62865e2f82b810abac042ee7d", + "R/nsw.R": "7d0787af08cc323a02c89470806afba6875f342aef933f340875df85b9fe587e", + "R/nsw_long.R": "5d968f56356461fbafeb6ed3b4c4770ef78bf7f8606dc663d61ace6ebf5f441f", + "R/ordid.R": "b3a32bee474c56e056555580639fabcbbe08168afbbe0fe23bd31545bcafe6c6", + "R/pre_process_drdid.R": "3cf410b0d0bdcfde311ce3fbc31ec6a871615df7ab9e1b4317222171d7026bba", + "R/print.drdid.R": "4f03222d0aa05dee438ab740152ae1c3b49e4f192e2bce82dbbbe2f2d90a4c7d", + "R/pscore.cal.R": "5de785f986fb1eed1ea5631913648f372f64734c053e3ecedc55fd23a0ca4d69", + "R/reg_did_panel.R": "bb7d0b40c1d20330dbcbc34384fa88ee131f3e5209c7561cf272c8cba23c9629", + "R/reg_did_rc.R": "d33eb92ec02e0a93bdf02c7188f537b94b5d9eecf81f317c09641807b8596bff", + "R/sim_rc.R": "526872a447bfb9945327b4ab29663f2232823441e9e9d9bbe13ff8d48a6f0977", + "R/std_ipw_did_panel.R": "903b49aa0b89e2a70f372b32973b98f50d773b0d7e69777b60a21e4ba82fc513", + "R/std_ipw_did_rc.R": "7ea03136aff10dc64198437abde722334b538542ae7a17170f3f84d801f103e6", + "R/summary.drdid.R": "f76fe3aade93e2a04d90a9950e3cad749472d42a6a20ab1088b92454e5f8c5cc", + "R/twfe_did_panel.R": "24db7b8d3e367666c1e4de4e48d9300423b7adb93910f5b58c0a7a729e63aea4", + "R/twfe_did_rc.R": "6991b1b2ef4611f1c322ececf0abdcb2f85e4f6b31a4f404bbab60593a6eab6f", + "R/validate_bootstrap_count.R": "e748ed6588ee1b2552ac612a37448d3a972bf6fff0d97f52d6938eb33369b761", + "R/validate_sampling_weights.R": "0bcd051e54f327a8f1a2c2f21f023dd174af3da677dcaeb1a3a45736c0d73626", + "R/validate_treatment_indicator.R": "14ed626dd82c34196e4c29c5a525ce078c48e693eaa18977ce962744c7d5be5e", + "R/wboot.dr.imp.panel.R": "3aaf6f8581e900308cd35fbbd512b2486326be2b15015039fcea87f18228a49e", + "R/wboot.dr.tr.panel.R": "cfae8bc52be5b9f07f698833892e25607f8ad0d87254196694792b874e4311c2", + "R/wboot.ipw.panel.R": "73f4a99f16a99f93837ef5d2aa3269a8ee11ae4004e9a694484aaf037b17b43e", + "R/wboot.reg.panel.R": "4eef168a58d37b3a70a18bb80ceea2db571130bedb109d94f6eaf42a648a9d4b", + "R/wboot.std.ipw.panel.R": "ce9127d1e1cdc1452a47ddad87f941b0b976c747235c3441ecd851eb25860afa", + "R/wboot.twfe.panel.R": "208e0d5bc8b45d8dcd572a6274906d440309cb29bf07a4ebf93a2c237624873e", + "R/wboot_drdid_imp_rc.R": "c21f0b413dd769326795fb019591174b2d1728a963b734db19ba5fff519b004a", + "R/wboot_drdid_imp_rc1.R": "6cc1e60563797c7f78e19b1db986d44812e0fdc9e11c1279b636e72bfc7ce86f", + "R/wboot_drdid_rc.R": "eb89ae24b880338e93521fb965d276c7ece1965ba80a4a8da1584579bb2a6d9b", + "R/wboot_drdid_rc1.R": "6a48f4e2b913221c0855ae5ac3a2c5109ef0298da89297b982dc0f56f6ace9dc", + "R/wboot_ipw_rc.R": "d68c1a697e9a4d7330ae170bc4976806842eaca64b3acbfce158cc35addceb83", + "R/wboot_reg_rc.R": "b88489ae688bc98b7c7f18cbcba37d4610fabba142fea5e012941adc866267b0", + "R/wboot_std_ipw_rc.R": "b42ac5d23e5a35daaae6e6aaa0a12fcbac4f0f36eab3083e802e705b9020aeed", + "R/wboot_twfe_rc.R": "1e8168f9828b15809ef9b653c9ef346a670035087bfbffd7e5e952e047b44ff4", + "R/wols.br.panel.R": "5e1fd6b01090e577f874fccabe1540c85b7360f4ad3e9514a0dfdc0e50d0c663", + "R/wols_rc.R": "a1a3ff03d0b78ead5bb5bc025d5af53744a914ed3fc9fcfb9d342b838645d6e9", + "R/zzz.R": "859c9ff4e3922ba029b6e86c44d0538d79eb9ea8f25d930b578d4f505fd03a50", + "README.md": "41f6256095a2e6a561127284b093eb4e67002ecc8b9b0b88191f704fb1c7acae", + "_pkgdown.yml": "5a5c485788bef3e3b11d0ceb945dc431f3db0f88aa931090b7d62dfb5c2afc96", + "codecov.yml": "22119d4ad24773e60f56b4617ff362a94133fa0faaead9005a61b05545f44cc0", + "cran-comments.md": "58175bbbb8734a8125d2288c32cfb89d2598e76e3e790908f7b412e22f9895d8", + "data-raw/nsw.R": "804c2f1976bc9178062d8bd356283c8cba16f050fa443d57537aa992c493bb6e", + "data-raw/nsw.dta": "9f17508ebeb9e531384745266ea2a122c1d50a2f95b067cd998008f119809200", + "data-raw/sim_rc.R": "f60c581f43a0b3c84accf5977dec193f241ed5cbcad669a73f840c55a57cfb51", + "data/nsw.rda": "b40b537d4ddb0e3d0a461538731306bed7ee43b081ff9ff61d7ca14b5679d734", + "data/nsw_long.rda": "4cdf4739cc58fdb02bfc2979a8a9d53d7dbef22b9e1157abb3cd483328ec91d7", + "data/sim_rc.rda": "b5be6aae18dfa77318f6d5a5dfc8670134d30eff343da918f9eee16113ae2f87", + "docs/404.html": "198127a212c4a3c4672d5a6d5525b738e5bcb908ff06d2da388e12c6e19faa50", + "docs/apple-touch-icon-120x120.png": "9667ec2132a95b378e8d9638c1ff073509ac75f8f7e4158a7e1efcaaf5fd80a7", + "docs/apple-touch-icon-152x152.png": "285972d900daa4656ced12df6a86e777f33ded0d75e2c1be8e7daa91dfedf1a4", + "docs/apple-touch-icon-180x180.png": "4e9f251c03862962b69714db0eb5e6f7fa6d389e7dbb952f7cc12c288de8ba61", + "docs/apple-touch-icon-60x60.png": "d336d42f12cc33e687f5dd6c582ad8e2fc1ca9d4d364dc6dd815951e786e230e", + "docs/apple-touch-icon-76x76.png": "e677ffe11a11eff233c9a789397dc3ea3fbeba5464f92ae884ef0c7791e0d714", + "docs/apple-touch-icon.png": "635982b865cc93513c224411ddb0efd9b56944fd16f52c27152153de53325136", + "docs/authors.html": "90003f285210a662467cc00dc1ba1da92b20b348fc10a1b2d52deed37bef5603", + "docs/bootstrap-toc.css": "5361de56c2d2171b60f7789ca00d7ad464332916707953c43a005b991bd9ab65", + "docs/bootstrap-toc.js": "f74f76927fe172f26d6be0eba938e1a9f3f01477ae6b6b310655577e72bc7478", + "docs/docsearch.css": "52df098c2f2582680168d9dd52441415c7df20a90b20e3e3220768975f33c127", + "docs/docsearch.js": "7d6964deb026efa1c15de6eec625a65b2a0a2e93cc389d9fe7fde6b3699e6cc7", + "docs/favicon-16x16.png": "e89a6f90070091f756928756152531816a9c12fa8c19e253b31b528005222296", + "docs/favicon-32x32.png": "fc77630dcd20c761c21da9f3f9d0bd56631c1a5a1d27ca67d38427a68a392c5b", + "docs/favicon.ico": "66cd632e4c8d129134ee0f5d904a33dd9a4a58ad3dbe8d2c0b2ed909a08c437f", + "docs/index.html": "64bf73a0a1ad9d2004b9f198d7716720eeb5e471ea551fcb028771456a01dd42", + "docs/link.svg": "f1403d3dc6051421df5b25acff90c21eb99041849957afd9e2908f66f34d1ee6", + "docs/logo.png": "5ac5dbb345f09d959cdfacc0e6c3328c6c739b62299e7876459ab420df8591f0", + "docs/news/index.html": "90a2e0309ad7b17f1e7987dec2d6ab5e85f7a092ef6334f835b79c42cf70cb26", + "docs/pkgdown.css": "5adfe331db92a9ac53058e7ba21dcaed1716a9b577226fda26d8c6dc1702aae0", + "docs/pkgdown.js": "0ab1216121aa67d206c48fd84cdb95ae9c8a17360dcb0cb0f74c8a69c9b7b065", + "docs/pkgdown.yml": "ee9eb346b45e051e7dfb3d0c71834f393856bf71c4b40a4698d03bddaf08c0a5", + "docs/reference/DRDID-package.html": "8222f58497c85a3ccd51fd8726c5cd6f1f1b67d00ca51edbef2369730c2889f7", + "docs/reference/Rplot001.png": "69a1e23f42a7fc9ff537d0d19a38b28a73276f3b6f00001d5c6a669a10c5930e", + "docs/reference/drdid.html": "192fd111d5abc790cfe9d5a6eafeb6e7c82b05330ffcd357e320c9ea55888da8", + "docs/reference/drdid_imp_panel.html": "cbcd37761a715284293c27224b355493070a946c8b2634fec02761225e202d07", + "docs/reference/drdid_imp_rc.html": "72b5956f28633b28eeb350682790147b7ef1eea2b257771faa14e67415ddb47d", + "docs/reference/drdid_imp_rc1.html": "7112e57566e5ced927e79301ac292f02a716d04cb0760453e838eb4026b6b339", + "docs/reference/drdid_panel.html": "82e7b88c7807be0183d2b2777e6795e4d1fcc710c1aa3cef2578042a41396400", + "docs/reference/drdid_rc.html": "ce792b33299396a8a5395592325d01b680da8d44247e982b0706363c878926c6", + "docs/reference/drdid_rc1.html": "3112816caf2d53a51d5f84d25ea9c380803a6617ab11c375960cd8acb106107b", + "docs/reference/figures/logo.png": "5ac5dbb345f09d959cdfacc0e6c3328c6c739b62299e7876459ab420df8591f0", + "docs/reference/index.html": "f54613950e97c49315267169e63539bf021255dfbe0846b6798b31fedf7a717a", + "docs/reference/ipw_did_panel.html": "c367ecb4a298100a0e3ecfdb5315530839e120cd75f6c5aee99989fddf495d87", + "docs/reference/ipw_did_rc.html": "326940a7a65fbbe2fa550c026b548e5e1e0b54b1de775175b7722e3862148f26", + "docs/reference/ipwdid.html": "350b91bf7edb503c4fae77b50638c8b6252108bb492cbbe407b0d26f46a37f61", + "docs/reference/nsw.html": "359da5b81c46cb55fc67b786388495dfbd58179cf248901cb0f2a28d8bed8fe8", + "docs/reference/nsw_long.html": "92a9a3f195bd625fee0f513a907314315d621545606bfdbe95b18243f995f0ed", + "docs/reference/ordid.html": "ca2a30ddf99761cfb563b8581e56c547ecd689a1eeb6eac9a68f5c7907c3f0a4", + "docs/reference/reg_did_panel.html": "b09770bf3b3c6477223bceb80afd3b8e7d0a46c6007eeca89802def3bdc3715e", + "docs/reference/reg_did_rc.html": "e112cc606ec3ebbac5dc8dcf82deefbcd06fc59b438dabb11356a6f4c48f6696", + "docs/reference/sim_rc.html": "823341d8c534928ea3f4ff1878b2bbe6dc3e71dfb5388d80ad3f80700f6363b0", + "docs/reference/std_ipw_did_panel.html": "3b81dc3d393e8e368a529d68b53d41abc78b4dadc5e856064afedce358797653", + "docs/reference/std_ipw_did_rc.html": "9f744fe5e376f566ab755518d363601f66c2b70a604ca6cde6a4ff62216b332b", + "docs/reference/twfe_did_panel.html": "8e04f19e07886cbdb74de25b3ffbc6128b4ca9e8a418d1f7eefc6edf35805adf", + "docs/reference/twfe_did_rc.html": "47e6681898a6e33b95c72cbcd35ef61efc60188e8682066ae6ada1a034fc6001", + "docs/sitemap.xml": "42d8bb0f691a37046fae01bb15206d5960ff189e4535b0074815cca2a98bd584", + "inst/CITATION": "cd4821ea59ce98bdb4e167c435cbbd5dcfbf0972955aee9a9ea254da0a2e184b", + "inst/WORDLIST": "47c6b57a8f25e8f1b1863b31b63db6ae47a91bf81e5f028ed0282dd4279e3f65", + "man/DRDID-package.Rd": "38ec18d0da9e5ed945af6748ce5e4f3794c2ac358105cfc2c54b1a434b89d2c6", + "man/drdid.Rd": "be4a56b4acf709b498f4fc23c0d4d56bb56f0a80a30acc2a54aede49cadfaf76", + "man/drdid_imp_panel.Rd": "526be4d4d69e7ccdf3f20fbdcb7ab7418db964150da067c9d6254c38e7269a47", + "man/drdid_imp_rc.Rd": "e1246816c9c20e3eccfa462f8330048875c5f592e58341ea489722a6e74ba25e", + "man/drdid_imp_rc1.Rd": "366924a15867204e68642c06e3c66b99560659932a5ada2084552949a14f5d8a", + "man/drdid_panel.Rd": "b856f60bf2c8abbfedeab41bbdb67c6f2b16822d3d5e9f4ebe19e974490fd921", + "man/drdid_rc.Rd": "5792ee690b678f9e8f587feea8d5f3a7282a1c20d754596443e489d0c80e9885", + "man/drdid_rc1.Rd": "fb23771fc15439125620d80a67f107051c0db9b0e0f55eabb88fd75a7dc8b736", + "man/figures/logo.png": "5ac5dbb345f09d959cdfacc0e6c3328c6c739b62299e7876459ab420df8591f0", + "man/ipw_did_panel.Rd": "48d1f49473a5f19638ae5ba1d0675b1362967041b16833788ce452f102ba3ff7", + "man/ipw_did_rc.Rd": "9eb89aa46e7ff4e40ac4d61fca246888966190cb833babc3fb8da2bb47bcb4ce", + "man/ipwdid.Rd": "7704b1d57656d53399a1a15ddfbf301e98a20a5174ae46afda2d0e16e965be14", + "man/nsw.Rd": "b0b91ed6f331d241b45d2515d519dd0949aef510d81db4f53ff010f7b7736708", + "man/nsw_long.Rd": "36f8d6c590f4f8a293abd7db64535d78da9109f68c96f280c02a71591a52417b", + "man/ordid.Rd": "898bdee4e939949ede2ced02b38320a2c1fea16705cf8dd54264c94f118a6415", + "man/reg_did_panel.Rd": "956d1c2e445fd23a694951dab3bbfbc0af069d217c7de80121a52d1621221753", + "man/reg_did_rc.Rd": "0a04983314eaa59bd4be89ccfe6cda8c64cb15ab95d681716e419377c67f936e", + "man/sim_rc.Rd": "d01d4c5a0c0369eda23caf6c3a84bc03dcb77129bce6225e0799233326f2d886", + "man/std_ipw_did_panel.Rd": "61ba0ae8bfe92419da948dd618ac99e36e9ab922bac09f4807c98d51ec4a3721", + "man/std_ipw_did_rc.Rd": "08fffea7be4637078bae0311eaaffbdc24e6ad6845fddaac8c0695c84f156ee5", + "man/twfe_did_panel.Rd": "0dbdd3dfff2a6064663821680863a80e2da4ba518c7a1c5f08a2b1669c2fcb6b", + "man/twfe_did_rc.Rd": "d2a29cc0f5012054eb75bb1a91447ae8c0547ae8a330e2d838c7549cd7242d62", + "pkgdown/favicon/apple-touch-icon-120x120.png": "9667ec2132a95b378e8d9638c1ff073509ac75f8f7e4158a7e1efcaaf5fd80a7", + "pkgdown/favicon/apple-touch-icon-152x152.png": "285972d900daa4656ced12df6a86e777f33ded0d75e2c1be8e7daa91dfedf1a4", + "pkgdown/favicon/apple-touch-icon-180x180.png": "4e9f251c03862962b69714db0eb5e6f7fa6d389e7dbb952f7cc12c288de8ba61", + "pkgdown/favicon/apple-touch-icon-60x60.png": "d336d42f12cc33e687f5dd6c582ad8e2fc1ca9d4d364dc6dd815951e786e230e", + "pkgdown/favicon/apple-touch-icon-76x76.png": "e677ffe11a11eff233c9a789397dc3ea3fbeba5464f92ae884ef0c7791e0d714", + "pkgdown/favicon/apple-touch-icon.png": "635982b865cc93513c224411ddb0efd9b56944fd16f52c27152153de53325136", + "pkgdown/favicon/favicon-16x16.png": "e89a6f90070091f756928756152531816a9c12fa8c19e253b31b528005222296", + "pkgdown/favicon/favicon-32x32.png": "fc77630dcd20c761c21da9f3f9d0bd56631c1a5a1d27ca67d38427a68a392c5b", + "pkgdown/favicon/favicon.ico": "66cd632e4c8d129134ee0f5d904a33dd9a4a58ad3dbe8d2c0b2ed909a08c437f", + "src/RcppExports.cpp": "2d0f681a224d6c3bc602800f38077f27566f37671187b502a8bb62a3e7493678", + "src/sanity_checks.cpp": "ebad3d16a321276d72008752d006725d894b08f7bc0a52839de9d0d278a118e3", + "tests/spelling.R": "3eece61b65afe83d6573c420bd9307ec3af8a16661f0fcdc7816399c8691e43f", + "tests/testthat.R": "15f350a1286093e71aaad05030de505406e6fa58ad196ef3a8b6d4705539edfc", + "tests/testthat/test_boot_panel.R": "51de427d459c64f4695bc32020956ec2055724bcc7bded949727e2a690c5b77d", + "tests/testthat/test_boot_rc.R": "a78985e53a946744b1b25c660fcb21ce704c854bd5b4dad140227caa5d5de3e3", + "tests/testthat/test_boot_twfe_panel.R": "7a815c52e4d436508cd1f20b2d7ea21c07573d559a9c5af3bd062aa56ea58b7f", + "tests/testthat/test_boot_twfe_rc.R": "4e5139730f0a19178e05f7d89025985c21545584059cba883011802e42500b63", + "tests/testthat/test_bootstrap_count.R": "ab97a49436ed97d25ccc722ce9fd55a672ea6a69e7a23642feff4c15dab18860", + "tests/testthat/test_bootstrap_scale.R": "9b5f3e7894764242cea8792bea5be25c41dc5a7f0423e00c9baa3eaf2ece5606", + "tests/testthat/test_errors.R": "855eb6de80f00bc8c8cf75027978be1cac180de219c6bbeee53a69d6d187cb4a", + "tests/testthat/test_fastglm_undersized_design.R": "65c94d9a6dfe509a4a493077682422d98f9d8aa48ddb69f975b6c1fbd07be715", + "tests/testthat/test_improved_panel_weighted_bootstrap.R": "ade55aa54fe670340b62b3d5a242e1da11318c916829c3f3ae017184ce829b4d", + "tests/testthat/test_ipt_fallback_objective.R": "ac115655168fff211bcf8d436def26e3da74e7233da738e202ba4a1278780555", + "tests/testthat/test_ipt_optimized_guards.R": "b5dc3acc3db40f97a13881cc025afbde4c327d37f6f35b30d30bb230a1442329", + "tests/testthat/test_ipt_weighted_arithmetic.R": "b852328a9689d55178966c067fa5cb0e93c08487ebfe281450cef8eb0460340d", + "tests/testthat/test_ipt_zero_weight_arithmetic.R": "ba9c7b331485476e4deadcbcb79b1a21d5b05adcd29752e393de96481a74ebc9", + "tests/testthat/test_ipw_rc_weight_normalization.R": "067f4feec4f029f8ec61708ed465aacd96955665553a42a419c691fcbf72666e", + "tests/testthat/test_ipw_rc_weighted_bootstrap.R": "1129743ca3854524c5b14e8a8d86b7c7d7c33cdc0b5b2180fc090234a1ab2a76", + "tests/testthat/test_nocovariates.R": "26cef99b13a82504fd362eaa02ed0d84df0b84c5b62c363b22cc7aff8b2336b7", + "tests/testthat/test_output.R": "a1dabafc2cd0064349d6f853f6b04ddea16cb4e54af68c0843e228cd3eeb676e", + "tests/testthat/test_panel_missing_covariates_weights.R": "605ecaf390d56383a7e8ab6c265a0884bd503b16143d9db05ca4235d97369a8b", + "tests/testthat/test_panel_missing_outcomes.R": "e6c98821812ed4435fc3cf531435dfe9389d38c1b12d6efaab7160f9ba8531be", + "tests/testthat/test_preprocess_column_names.R": "b21059d27a920bbdc20cfb915eaee68c9587288206f9a3abd07d86f3009f90bd", + "tests/testthat/test_rc.R": "02b69918e4996607b3cce299eb7267d71d40e9f794ec7f5893cdac23329a284f", + "tests/testthat/test_rc_inffunc.R": "1e5a1f554df756824379e8e1d0e81e505c13b2c41b4d989621444bf13668b645", + "tests/testthat/test_regression_lock.R": "9a2a26e29216e71af217e849c73a33046474084d5272418fa0bff95ab96d6555", + "tests/testthat/test_required_ipt_fit.R": "1c1299617754b836b4ba0c1dcfc5cb45faee5bc4df5c9ed16dff1ea05294a1ca", + "tests/testthat/test_sampling_weight_validation.R": "2a7ed895e75f77debabb9f559478ee902c39d54c82292d1fd1cc639663e0bdb7", + "tests/testthat/test_treatment_indicator_validation.R": "3e2e9c506835bf079504b7dfbc90bc599a1f9e3a9056f3b3a69990b0500410d7", + "tests/testthat/test_twfe_covariate_dimensions.R": "5f9185fecb76bd945b40e6a921725f237c14e54bd6d0b01e2f3ae6159bea5adc", + "tests/testthat/test_twfe_panel_inference.R": "31331e041fb856121b1cc6f749a79ceeb9c14449aab32ecfbd8b9d704fa941d8", + "tests/testthat/test_widelong.R": "764ebaf098c9ca63d787b2047c3c8adc222a7a399d9d8b48b32023022e5c1ce4" + }, + "artifacts": { + "ordinary.csv": "33c7260dec097942fb5abe2ff5440595949e1d357b92ca686e9393a668191de2", + "trim.csv": "f7c005f8ac9c260d5db916f92191a1c2e9cefc3f24ffefd8230005339d09d5e8", + "cases.json": "e995f46b619ae49b653f4dfe807667cb1edf1dcc3e05b06ad9fa09df6e81c51c", + "references.json.gz": "ac00828d2731c6976adb5f72de716187bfac89aae87decadde006848aa817564", + "export.R": "dbcf06d4f6c63ba10b88ec9f0167167d7658ff980e03d115a3ac67f02778768b", + "generate_inputs.py": "9c713ac96330750740cdfb6075d042584c5612c2251ee471eef8f8a2e5cdb9a5" + }, + "backend_replay": { + "current": "fastglmPure", + "comparison": "fastglm wrapper, same defaults", + "all_80_payloads_byte_identical": true + } +} diff --git a/tests/r_ref/ordinary.csv b/tests/r_ref/ordinary.csv new file mode 100644 index 0000000..00a96fc --- /dev/null +++ b/tests/r_ref/ordinary.csv @@ -0,0 +1,601 @@ +y0,y1,y,D,post,x,z,w +-0.37406346621831454,0.6609920593342168,0.6609920593342168,1.0,1.0,-0.3791044853954938,-1.0931174373356727,1.0921483486645065 +-0.6302152531570699,-1.3798115406013838,-1.3798115406013838,0.0,1.0,-0.7908726216664119,-1.3816762160230678,1.0503011242664932 +0.4701042200093341,-0.0286755341763536,-0.0286755341763536,0.0,1.0,-0.8167016968878583,0.6182624483645103,0.7740802670020875 +-1.018105844421732,0.8657007819870437,0.8657007819870437,1.0,1.0,-0.3508218612360901,-0.7294773013992824,1.0400379708949197 +0.9870467073744553,1.8906651896127449,0.9870467073744553,0.0,0.0,-0.05483926701026338,0.6629638275477167,0.895464744811686 +1.181755777540377,2.7606593775060295,2.7606593775060295,1.0,1.0,0.4465650508276934,0.7154034702753411,0.9821634775732558 +-2.939778527767693,-3.468698790165898,-2.939778527767693,0.0,0.0,-0.15637372336923225,2.414073586378503,0.6747683834453547 +-0.8400929525360394,0.5898129688995715,0.5898129688995715,0.0,1.0,0.5720791583526105,-1.2808963470924029,1.3587297877672813 +1.8117050308921858,2.2398051667475274,2.2398051667475274,1.0,1.0,0.2201178977639787,-0.04271868914664661,1.0517246946065602 +2.52745684342429,3.2364186592085145,2.52745684342429,0.0,0.0,0.5535374923010955,-1.191738664452028,1.3357170959034745 +0.8126497840349988,3.4421850455241576,3.4421850455241576,1.0,1.0,-0.3084977046354824,0.008510017832710362,0.9389659676621218 +1.6072575377756568,4.965577527311008,4.965577527311008,1.0,1.0,1.3647647061166517,0.16198505733811103,1.2822997975757284 +0.11284376158922282,2.3545417328396643,2.3545417328396643,0.0,1.0,2.0045086912740886,0.7296500834484639,1.3383723690802203 +1.3316917641394452,3.391232474841334,3.391232474841334,1.0,1.0,1.4772822185259922,1.7356147191450133,1.0357380204377773 +1.0789870297135236,1.9894312384040433,1.0789870297135236,0.0,0.0,-0.523504432250548,-0.0753871706986077,0.9108356438965794 +0.5738714597984754,1.4140024585588318,1.4140024585588318,0.0,1.0,0.1903289603898576,1.618919084803676,0.81483301961357 +-0.035437216949597866,-2.8428578525532036,-2.8428578525532036,0.0,1.0,-2.635083077530386,-0.03952202376809044,0.5938738761129293 +0.1062206304823255,1.0571945016992013,0.1062206304823255,0.0,0.0,0.0644784868558379,1.7244537795924082,0.7821002344789941 +-1.6770573212943933,0.18510005152314768,-1.6770573212943933,0.0,0.0,0.9503007070668135,-0.7578875235825087,1.3549211624574253 +0.09361204124840894,-1.158203622374898,-1.158203622374898,0.0,1.0,1.3952457755406773,-0.49134750050542675,1.4229771767945116 +-1.1629527324534532,-0.05129473828451481,-1.1629527324534532,1.0,0.0,-0.09688989659118519,-0.2565497432293898,1.0192881404869314 +1.6161496679348444,2.511590020775103,2.511590020775103,1.0,1.0,-0.6490758253066675,0.06423625764996002,0.8698359888149947 +1.0765444787770466,0.4399284606520747,0.4399284606520747,0.0,1.0,-0.8229956293585946,-0.3294588752190443,0.8912054499009551 +1.5112168432675808,1.9662042460188203,1.5112168432675808,0.0,0.0,0.19042739053115898,-1.4930853461078657,1.2995892851145716 +-0.06179217685048115,0.04839954999904489,0.04839954999904489,0.0,1.0,-2.4344031722804997,0.15533438786249737,0.6003870234472826 +-1.4648093806177385,-0.9679084170238369,-1.4648093806177385,0.0,0.0,-0.8481440744130646,2.2144877497447943,0.6054386893535924 +2.682542829832012,4.069433519203047,4.069433519203047,0.0,1.0,1.7243230184881153,1.323149125288637,1.1576501698148312 +-0.22234309844165334,0.9039349676143074,0.9039349676143074,1.0,1.0,0.8181413794536688,1.8866867254293318,0.8874751722764319 +1.1736673241673998,1.8559299324337948,1.8559299324337948,0.0,1.0,1.4827585439858004,1.3995147326639101,1.0904871237115885 +1.3560008675902977,2.725715298384134,2.725715298384134,1.0,1.0,-0.3235860501752366,-1.7094820820071717,1.2113132507562143 +1.4919868568393106,5.159615868847522,5.159615868847522,1.0,1.0,1.2348891817502472,1.5955120622788532,1.0076803709046036 +0.9842749127004597,1.225600848443436,0.9842749127004597,0.0,0.0,0.7705138657852854,-0.31543917285560497,1.2231367297237117 +1.1442215804742246,1.8143380526853465,1.8143380526853465,0.0,1.0,0.19585914871636054,-1.629675983560594,1.3279325077394226 +1.6192192872634992,4.409504559904357,4.409504559904357,1.0,1.0,0.5084525642943818,0.41545858050223056,1.0401570649945715 +-0.0664949162454459,0.21427482578327872,0.21427482578327872,0.0,1.0,0.5930007650520108,2.291366592299712,0.7984325100330918 +-0.7825837997984706,1.7603961571823807,-0.7825837997984706,1.0,0.0,1.17055802581983,-2.4401021603511994,1.822350095181201 +3.412751278311961,4.784697338975807,4.784697338975807,1.0,1.0,0.7979566782321004,1.3082465400250765,0.964017678971844 +1.9388710493651429,1.7385773371432296,1.9388710493651429,0.0,0.0,2.3880753513886983,0.7681125100163575,1.4367709413148462 +-0.4267353421366096,-0.2002210310725916,-0.2002210310725916,0.0,1.0,-3.272064451067127,-1.181149164205447,0.6204932730438592 +1.0116721905814445,0.8715537970409761,0.8715537970409761,1.0,1.0,0.25117439710296857,-0.8428202718381343,1.1932228458676803 +3.4087916830496665,3.8152744188862555,3.4087916830496665,0.0,0.0,0.7862528005616899,-1.0831328446178377,1.3767428927454928 +1.9600735375095728,3.376314880994783,3.376314880994783,0.0,1.0,0.19305889639694004,-0.8280365046591879,1.1768216117458385 +2.6642634645801033,2.899053375212219,2.899053375212219,1.0,1.0,0.7136474694858055,0.7313243100807225,1.0335824220645093 +0.1003214408168952,-0.18229022087670588,-0.18229022087670588,1.0,1.0,0.7177897809137842,-0.3215628709053894,1.2114189843056742 +-2.0157376784416314,-2.4426826335334573,-2.0157376784416314,1.0,0.0,-0.9680607555280035,0.3286712841041129,0.7843398709370866 +1.2771549042074994,4.121599781770238,1.2771549042074994,1.0,0.0,-0.22793903435447666,-1.2601373492651013,1.154229238823444 +1.3012174761361956,0.8849954508374338,0.8849954508374338,1.0,1.0,-2.2003985186170554,0.2613538819699887,0.619227351093884 +-1.1370105234757197,-1.7940792887623433,-1.7940792887623433,0.0,1.0,-0.0718363355647548,-0.3448658447541621,1.0380693665187006 +-1.0072786184876128,-3.008938202188425,-1.0072786184876128,0.0,0.0,-0.8721713337519261,0.7602980570961303,0.7494025609348001 +-1.3099518461901294,0.78910678227075,0.78910678227075,0.0,1.0,-1.150715305790759,-0.6956894703915907,0.881800322261705 +-0.4255395800000994,-0.15735679626675503,-0.15735679626675503,0.0,1.0,0.5045162867322663,-0.854049038709916,1.257355383444011 +0.7234271642021924,1.7135201813274499,1.7135201813274499,1.0,1.0,0.7029898595845866,-0.30048917330557495,1.2040264895268509 +1.735848236428505,2.0348323232548324,1.735848236428505,0.0,0.0,-0.5389984489206423,-1.9487725994503253,1.2026364639982339 +2.197243770299834,5.238706580656404,5.238706580656404,1.0,1.0,1.1726810513080652,-1.0508410611944912,1.4801780275703609 +1.4790057882617582,3.760977940473869,3.760977940473869,0.0,1.0,1.1272249768395943,-1.393739643177182,1.5441999458787525 +0.43510021216280137,0.337350495998903,0.337350495998903,0.0,1.0,-0.06643051655131245,0.8248686713593777,0.8719559224374842 +0.6593732020665332,3.7754231345250293,3.7754231345250293,1.0,1.0,0.7961635952321644,0.579781610749882,1.074940678680212 +0.12757216182430287,-0.28253837710492485,-0.28253837710492485,0.0,1.0,-0.7605008283893084,0.9143454970535655,0.7488234854191358 +-0.6188285277820684,0.2311376148351726,0.2311376148351726,0.0,1.0,-0.7536675134756573,0.8486521517542608,0.7572730992159127 +1.900353042129075,2.875235952897132,2.875235952897132,0.0,1.0,-1.435818177555179,-0.11182567058316197,0.7630819985024668 +1.0368883541864393,3.6238976756758996,3.6238976756758996,1.0,1.0,1.0842555585172704,0.6372760484811862,1.1289180593224684 +2.7748271617842466,3.1565123986807713,3.1565123986807713,0.0,1.0,0.4963390802808011,-0.8216985591907738,1.24922405171372 +0.5999214376420585,2.998415811252326,0.5999214376420585,0.0,0.0,-0.1636573749808397,-0.9094517093976664,1.1092524072266359 +2.916578808952313,5.262476649357627,2.916578808952313,1.0,0.0,0.568985594357648,-1.662925448263305,1.4379750894716665 +2.676396408274247,3.0353362468693645,2.676396408274247,0.0,0.0,-0.6198755058111852,-1.2258738639950364,1.0617367157068218 +0.6720649438619957,2.831353809241401,2.831353809241401,0.0,1.0,0.2087735595398228,1.0974065754438769,0.884390763012236 +0.10956969488010393,2.2675454152517567,2.2675454152517567,1.0,1.0,-0.019288594691710594,-0.40338149525506833,1.0582848222161623 +1.2192420907938681,3.243431473671884,1.2192420907938681,0.0,0.0,1.303287513306314,-0.23883923417092454,1.3451202143880026 +3.1510008040005317,6.1177366610134944,3.1510008040005317,1.0,0.0,2.429902392770576,0.9615389742353267,1.4074078840918163 +0.4754652074614787,1.9190767962932018,1.9190767962932018,0.0,1.0,-0.12307519622736586,-0.09805372844346896,0.9901419324889881 +-0.6882511994315353,-0.36444413784708724,-0.6882511994315353,0.0,0.0,-0.6016928708208543,0.36057110707580187,0.8399404855205758 +-1.2954622329958332,-2.0120930841438667,-2.0120930841438667,0.0,1.0,-1.0456980353836078,-0.5455064932944496,0.8804574886929796 +-0.5791588009459494,1.3000010732806333,1.3000010732806333,1.0,1.0,1.036981149817027,0.732996257743841,1.102352785246199 +-0.5865455682482494,-0.332942188951664,-0.5865455682482494,0.0,0.0,-1.3554673301254643,0.5298410429194405,0.7042867978566748 +0.6358312804580564,2.8506629731646287,0.6358312804580564,0.0,0.0,-0.41370703395549996,1.369552323383322,0.7496309536914683 +0.09552590470174172,1.3642621392695347,1.3642621392695347,1.0,1.0,0.14873901822698019,-0.4623764473071118,1.104181427372688 +0.9738079288651912,1.767332436377996,1.767332436377996,1.0,1.0,0.6588171915854452,-0.3172442842476873,1.196439521550011 +1.9704321549963613,4.266753796017163,1.9704321549963613,1.0,0.0,0.9959687068078522,0.8395295621999922,1.0760148976373003 +0.5350046155979081,1.1988362185307413,1.1988362185307413,0.0,1.0,-1.801257819563414,0.010138203886464648,0.6964409332219285 +0.36274083234776655,0.4000543870365457,0.36274083234776655,0.0,0.0,1.0239560752701047,1.4533312858432397,0.9868783713185583 +0.44567260234394,0.20643909749316258,0.44567260234394,0.0,0.0,-0.5052502454515667,1.48529620463215,0.7233627311598507 +2.0542293376228153,4.696601773471661,2.0542293376228153,0.0,0.0,1.7207264677881418,-0.6176805356527557,1.5477424322768252 +1.8215247614933991,2.5442836810803042,2.5442836810803042,0.0,1.0,1.1006933350790842,-0.5202662489640858,1.3474024183372586 +1.2082368560303922,3.322031029134481,1.2082368560303922,1.0,0.0,0.0060196493841770116,-0.5759068888053953,1.091540458495965 +-1.1642459631978035,0.6856734553571189,-1.1642459631978035,1.0,0.0,-1.6487505681714374,-0.27831209800383333,0.7497591188293281 +1.0555410477729332,1.9297197934719914,1.0555410477729332,0.0,0.0,-1.0376525458670185,-1.7895473937810475,1.0627943299667435 +0.7561016725604597,2.5982952857124317,2.5982952857124317,0.0,1.0,-0.4228711697954495,1.088603574698343,0.7804654783608937 +1.715677873952096,2.61541117798153,2.61541117798153,1.0,1.0,0.7897850324472693,0.46269248866743434,1.092592303981996 +0.06529209241557427,-0.20558308006507642,0.06529209241557427,1.0,0.0,-1.7681518227273945,0.3758566572680872,0.6636443681401669 +1.973413125989697,2.3877965674769484,2.3877965674769484,1.0,1.0,0.03590756697902729,-1.7604725397689436,1.311606070587801 +0.42772099859084173,-0.53015646361385,-0.53015646361385,0.0,1.0,-1.14095777544141,-0.5938468551190871,0.8701283697160211 +-0.3614928434886629,0.5243199281154242,-0.3614928434886629,0.0,0.0,-1.2267669577376026,-0.2322955091137214,0.8101717107672951 +0.05762753315973612,0.5084714553277482,0.5084714553277482,0.0,1.0,-0.6451968176408991,-1.1448473106854529,1.0436119584661436 +1.1170455941955728,0.8273183879794619,1.1170455941955728,0.0,0.0,1.080116093729768,-1.1473376572977771,1.4742123797460898 +1.2172083432811063,1.164506593968326,1.2172083432811063,0.0,0.0,-0.28438812572314054,0.8641363795380946,0.8298601535590706 +0.14294349767915726,2.1193985490962315,0.14294349767915726,0.0,0.0,2.5183257142676223,1.2737343213470909,1.3669814593812235 +-1.2726630792712985,0.013464715209819011,-1.2726630792712985,1.0,0.0,-1.9935452207790894,0.2852359955472497,0.6430746638725758 +0.6649280963572025,2.1137689420279195,2.1137689420279195,0.0,1.0,-0.3616181927627419,1.3087896480246832,0.7644168023538712 +1.005321446182517,3.230867673347835,1.005321446182517,0.0,0.0,0.9161737731636004,-1.5571934644574779,1.5171199599021021 +-1.3457325971304077,0.0917293275351552,-1.3457325971304077,1.0,0.0,-0.8954323229950644,-0.3157425186656858,0.8765819459061218 +3.0214108425112034,5.4828759792759625,5.4828759792759625,1.0,1.0,1.097046459559794,0.09933910458604048,1.226921794120135 +1.1711130486987986,-0.060879182326204706,1.1711130486987986,0.0,0.0,-1.754775909728955,-2.0747421766477543,0.9610355716535818 +1.8591647884155922,5.094398606824585,5.094398606824585,1.0,1.0,0.3096697148788805,-0.9187332052120166,1.2210900259747275 +-1.631752724245058,-1.3110439675416403,-1.3110439675416403,0.0,1.0,-1.6238450496112873,0.5861899852021274,0.6618624608465273 +1.5773403319085806,2.8338373421579988,1.5773403319085806,0.0,0.0,0.46273621026586725,-1.069955949924858,1.287935610444877 +1.1140154757799405,0.4713245649087834,1.1140154757799405,0.0,0.0,-0.17705216059025802,-1.268989385344502,1.1675855401642792 +1.3907981887851486,1.7167250748140719,1.3907981887851486,0.0,0.0,0.5380567462938883,2.0872880247393515,0.8142548695338209 +2.1717555517511586,5.467168274604676,5.467168274604676,1.0,1.0,1.2124221967091109,-1.0784610129382162,1.498183825146926 +1.2901495313128564,0.4508333559433879,0.4508333559433879,0.0,1.0,-0.3293052996795534,-0.28963198016563646,0.9778331146636839 +-1.3019091478860314,0.3862403426927863,-1.3019091478860314,0.0,0.0,0.9609005711960582,-0.07377957911853285,1.225375161145693 +0.24997576547610947,0.2443797514808448,0.24997576547610947,0.0,0.0,-1.941716281020205,0.20114747711309489,0.6580230105872025 +0.906651183635232,0.5076923059998314,0.5076923059998314,0.0,1.0,-0.37233825656961245,-0.9777894772769585,1.0748711245760203 +1.814275516158292,1.8550016855912776,1.8550016855912776,0.0,1.0,-0.3270440273236622,1.2315614794589635,0.7786894011985933 +0.04269708277287343,0.37552175132952637,0.37552175132952637,0.0,1.0,-1.1637405887776309,-3.153960628688225,1.2716890488066006 +0.3065895867563929,0.7334435791120417,0.3065895867563929,0.0,0.0,-1.2093382657516898,0.3817204429747012,0.7414661867453258 +0.22518535170037612,3.5732300542135875,3.5732300542135875,1.0,1.0,0.8765618401323108,-0.07828182409468243,1.2056931643026687 +2.4193911144119324,4.683920646108974,4.683920646108974,1.0,1.0,0.1699218253600799,-1.755155471726487,1.346162141668137 +3.57192312732558,5.397417811913579,3.57192312732558,1.0,0.0,1.4598372192774007,-0.845011382804515,1.5200134010143924 +1.185081258769682,3.6694042549511243,3.6694042549511243,1.0,1.0,0.8340943840114866,-1.7075470977323581,1.526459408262876 +0.9358776261278262,2.4367754097395764,0.9358776261278262,1.0,0.0,1.7412253404135047,0.11050818161534569,1.3932913709059973 +-0.981323499013842,-2.0703590329419024,-0.981323499013842,0.0,0.0,-0.9623237692320417,0.592604269363889,0.7547600504267491 +0.7082393592941182,3.301774749795967,0.7082393592941182,1.0,0.0,1.1742270217469417,-2.1606776528053637,1.7488301038051017 +0.6394066792649543,3.625827791274448,0.6394066792649543,1.0,0.0,-0.18677509950908958,0.43898083739702215,0.9019446309936189 +1.5624326198347118,3.334500600729227,1.5624326198347118,1.0,0.0,-0.14456943224061522,0.033773505094442366,0.9665909211157153 +-0.7619304608356252,2.691192875639733,2.691192875639733,1.0,1.0,1.7212973861854532,1.1450996214465865,1.1882653255628552 +-0.3142830201157014,1.59312955097937,-0.3142830201157014,1.0,0.0,0.05384147429847015,-0.18842152596506612,1.0398032616362127 +-1.3149626642531693,-2.9258934195105373,-1.3149626642531693,0.0,0.0,-1.289371724640362,0.06903698026320457,0.76473195515933 +-0.697431465096244,0.560055100585069,-0.697431465096244,1.0,0.0,-0.03676022376755745,-0.639901435837943,1.0926797557648102 +0.5262983263151548,2.916001199675582,0.5262983263151548,1.0,0.0,-0.012750751048187747,-0.26121250399937124,1.0373109352064234 +-0.8370348629639253,1.7944498453988422,-0.8370348629639253,0.0,0.0,0.16788634915701145,0.49349321795874174,0.9603603380014245 +2.6746634109130687,4.017169379093992,4.017169379093992,1.0,1.0,0.11009766448727895,0.6670349836302276,0.9249313923553909 +0.844110895659745,3.6411087880262514,3.6411087880262514,1.0,1.0,1.1561257881950477,-0.24186292220908182,1.3066996353750964 +0.9712560616842363,4.013463290326431,0.9712560616842363,1.0,0.0,1.0220506969387024,-0.41319795811335697,1.3052437867588036 +1.1977531928089802,3.3720090641081706,1.1977531928089802,1.0,0.0,2.0781719651248247,-1.3855139797527116,1.865373852269395 +1.3143472942594385,3.2117168087905714,1.3143472942594385,1.0,0.0,-0.08941488502146946,-1.4559119390213677,1.2220182728242157 +2.379083380542874,3.58066692714777,3.58066692714777,0.0,1.0,1.3674083131097183,-0.38451651511895363,1.3925813899241282 +1.1471017747565362,1.968629597746204,1.968629597746204,0.0,1.0,-1.3337805215965979,0.14153936394869834,0.749771332521415 +1.4285211592806508,1.865447544593148,1.4285211592806508,0.0,0.0,-0.9071025068063903,0.992517863684324,0.7187093960532936 +-0.0908415056629559,2.260365672801001,2.260365672801001,0.0,1.0,-0.048718006762484646,-0.060539861793617054,0.9993375974020771 +0.06702483750566908,-1.01702782779503,0.06702483750566908,0.0,0.0,-1.1188318289677384,1.668154657245545,0.6225137488504819 +1.1155413120824706,0.24073136409166285,1.1155413120824706,0.0,0.0,-0.09675580703897022,-0.754292984452713,1.0983321328268272 +2.5505088797251654,1.7533853159320794,2.5505088797251654,0.0,0.0,-0.2779659798762142,-0.5056362083008846,1.0204587032437753 +0.5194212686667037,1.4412356432356828,1.4412356432356828,1.0,1.0,-0.3478941923586444,-0.7569580275259586,1.0449456407650977 +1.3054848511856112,3.554602054260382,1.3054848511856112,1.0,0.0,0.16523298083685847,-0.22696614384018052,1.0693933421618667 +0.8019456729793101,-0.16243347783791484,0.8019456729793101,0.0,0.0,-0.7986708176991111,1.0176069329540232,0.7317069377263618 +0.9032260076638963,2.0707199472369533,2.0707199472369533,0.0,1.0,-0.5931408086285969,-0.28166512536078514,0.9264655722101561 +0.6789020656938647,1.3398592934811664,0.6789020656938647,0.0,0.0,0.9381664061904479,0.9122043050769851,1.0521152225709367 +1.4026117392345274,4.999674366405644,1.4026117392345274,1.0,0.0,1.2387659703455938,-2.037019722545369,1.73899289981449 +-0.7390806737835561,1.8106273355582625,-0.7390806737835561,1.0,0.0,-0.9129434747762708,-0.12559305733199777,0.8489544577332581 +2.3448720412517776,4.894835223438944,4.894835223438944,1.0,1.0,0.44414555400671957,-0.3584846642207898,1.1532704899501725 +1.2170557395206034,2.1123183678921857,2.1123183678921857,0.0,1.0,1.0151355559837705,0.5170280198545197,1.1336844550130218 +-0.42000899877305686,1.0425877272317525,1.0425877272317525,1.0,1.0,-0.6034731310826553,-0.14940267765878076,0.9063912484788972 +0.9966708106434736,2.560759706178671,0.9966708106434736,1.0,0.0,-1.955882288429478,1.0247873951056135,0.5799029210494847 +1.091975318890622,2.214916405651792,2.214916405651792,0.0,1.0,-0.37770493637351626,-0.13327685969155847,0.94596523666114 +1.7827668442297135,4.374769945697183,4.374769945697183,0.0,1.0,2.7145291366877515,2.6959413690393133,1.1485664757653324 +2.4879214147932514,2.1317111387851835,2.1317111387851835,0.0,1.0,-1.351633047811529,0.8478937545100101,0.6719907706273406 +0.6749313413380456,0.8212665212833629,0.8212665212833629,0.0,1.0,-1.1210027466197368,-0.7152393864714252,0.8896611301925781 +0.4419873201268957,1.6733243584200004,1.6733243584200004,1.0,1.0,0.767134214526247,-0.8017705813592816,1.314810343968326 +0.7425734339393835,0.38086369061426917,0.38086369061426917,0.0,1.0,-1.6548782509841904,-0.5443149544649797,0.779323995877968 +-0.19059011370329726,2.5452594976113745,2.5452594976113745,1.0,1.0,0.12262857466866438,0.4114805519565512,0.9634869189074848 +0.9351051689810893,1.6239569094875188,1.6239569094875188,1.0,1.0,0.55839306681655,-1.3328885067965632,1.3656245767668993 +-0.15433273469153086,0.29097805021085504,0.29097805021085504,0.0,1.0,-0.7209835033778402,-0.19366131775131024,0.8912346744113452 +1.1825546085258907,0.40149476926147454,0.40149476926147454,0.0,1.0,-0.8094433795766344,-0.7109689104335432,0.9462548588928482 +2.5089984620197643,2.8061204559086845,2.8061204559086845,0.0,1.0,-0.4187975691235223,-0.35518664085096047,0.9699783593354235 +0.7064926310526332,0.860951321149285,0.860951321149285,0.0,1.0,-1.1437130473880526,-0.29803004613935125,0.8319041055494257 +0.10986132834081663,0.03535936375984289,0.10986132834081663,0.0,0.0,-0.5469512404421304,0.28583308930782547,0.8587604973906496 +1.0201761324556953,1.0811269883449015,1.0811269883449015,0.0,1.0,-0.5724715466627343,0.46102086480339305,0.8322291636120288 +0.2655100820498281,3.9970008378942485,0.2655100820498281,1.0,0.0,-1.246655169446083,0.19844904764180363,0.7564654701324167 +-0.7388719999870215,0.5592798532918434,0.5592798532918434,0.0,1.0,0.5332753112892961,-0.7488386211637019,1.2448074451591449 +0.7515168543788016,3.528976801815765,3.528976801815765,1.0,1.0,0.22872055837821828,1.8306006395584093,0.7954510360526401 +0.44672758429672177,3.1166307943634726,3.1166307943634726,1.0,1.0,1.06621483757907,0.23250467854098966,1.195264220225548 +1.3381124146496326,0.6533720417051327,0.6533720417051327,0.0,1.0,0.20991045436005737,-0.0733840592441604,1.054418784295444 +1.5134565436843443,4.340711420814658,4.340711420814658,1.0,1.0,0.4793953524477713,0.6343531818355664,1.0007263568837095 +1.5048377836794056,2.964436823314985,2.964436823314985,0.0,1.0,-0.49413913527887776,0.1350684926188941,0.8877295874979019 +-0.8612719496145651,1.7185766765975146,-0.8612719496145651,1.0,0.0,0.7684223326567422,2.06742285682165,0.8551922667003101 +0.5694571840085951,2.4710633097425747,0.5694571840085951,0.0,0.0,1.5653753426498889,-0.2963886538231435,1.429798273164146 +-0.09471625883396984,1.430972746430708,-0.09471625883396984,1.0,0.0,0.18602534234182605,-1.1823996544735529,1.2393226949518914 +0.41740566047250194,2.400486122346448,2.400486122346448,0.0,1.0,1.1084606190657502,0.9031428616778029,1.0900468691769065 +2.7516502286259703,4.390094839203023,4.390094839203023,0.0,1.0,0.8269156706907735,-0.4824135897629645,1.2683859321528321 +2.560848818031358,3.0866725465154405,2.560848818031358,0.0,0.0,-0.3581146556069559,-1.1889551707634223,1.1126230598019482 +-0.7414217720103126,-0.9364044064781283,-0.9364044064781283,0.0,1.0,-0.7620772408590215,-0.8627513263073406,0.9772597970618311 +1.9601539105711865,4.443854335563793,4.443854335563793,1.0,1.0,1.4475779929261663,-0.004659985541789492,1.3367143113498448 +1.197516103703329,2.8548444968835094,2.8548444968835094,1.0,1.0,0.985228279080625,2.0118117625193124,0.9005711475373184 +1.5769414751893334,1.6059013381986946,1.5769414751893334,0.0,0.0,0.16165541429151536,-0.4527417565105698,1.1054387846539995 +3.0020648171918145,5.130223318100031,5.130223318100031,1.0,1.0,-0.07145034009708817,-0.9868294081482469,1.1430891099133242 +-0.09789327822923932,-0.10258034093572191,-0.10258034093572191,0.0,1.0,-1.4795310498839571,-1.024287139957517,0.8673929815460459 +1.63455402599417,3.4205545683212923,3.4205545683212923,1.0,1.0,0.5430567473351195,-1.6892193974891012,1.4361906968957099 +1.0138628043847855,4.715058994541594,1.0138628043847855,1.0,0.0,0.597722579237823,1.0806865833626762,0.9583344284808366 +2.307452841042543,5.701415016106819,5.701415016106819,1.0,1.0,-0.5356498534933752,1.0510062312676525,0.7673740590803854 +3.759833619466407,4.077020770186082,4.077020770186082,0.0,1.0,-0.3580306245353339,0.36820443174718137,0.8808774291622167 +0.7804296488638269,0.8441003898621652,0.8441003898621652,0.0,1.0,0.17723180496233737,-1.7608004820905978,1.3492736806104606 +0.807249448754475,0.7188846679663491,0.807249448754475,0.0,0.0,0.0048165163554452035,-0.625900245845096,1.0994920936725512 +3.115131125910681,4.698361436808669,4.698361436808669,1.0,1.0,1.4517554221600524,-1.0470995382669963,1.5642649218832232 +0.8022485450385168,1.3011254196918234,0.8022485450385168,0.0,0.0,-0.5297774500692489,0.01324534559680055,0.8976793983500709 +0.20402903559526198,-0.03585477436745599,-0.03585477436745599,0.0,1.0,1.2601536241672942,0.3663776357278634,1.217834253885682 +0.030644430193488836,3.3790409650461646,3.3790409650461646,1.0,1.0,0.7520393359471402,1.8755496042388646,0.8772839423999022 +0.5665769515836054,2.5644653454756603,2.5644653454756603,1.0,1.0,0.24207027206543488,-0.6132896232881722,1.1507426285390172 +0.8838776453343238,2.387932679330137,2.387932679330137,0.0,1.0,0.6037110257688479,-0.7149090632829526,1.2560584010875737 +0.6045384801092359,0.4881089641434815,0.4881089641434815,1.0,1.0,-0.9842034857164367,-2.210941740410214,1.1443085451799382 +2.0096998425725348,1.1053128295757326,1.1053128295757326,1.0,1.0,-0.6285224575157227,-0.5960550552526778,0.9643545773088316 +1.8751614410689947,2.5637126259966956,1.8751614410689947,0.0,0.0,0.7283607442625111,-1.5066978938241307,1.4501642602190115 +-0.7787962966224682,0.24575610030988626,-0.7787962966224682,0.0,0.0,-0.060355436139730684,1.1775360326907116,0.8280336443648108 +0.40840952953791343,2.3719382586167788,0.40840952953791343,1.0,0.0,-0.4509344350417136,-1.8848752236429949,1.2123303257821845 +1.6729614725747184,3.404666147115778,3.404666147115778,0.0,1.0,-0.85947523132347,-0.35254414116776045,0.8877958819427453 +1.6800317162435316,3.258534683295937,3.258534683295937,1.0,1.0,1.1390314800694845,-0.9592260873916061,1.450183658030871 +0.49889011393592875,1.0450293519162703,1.0450293519162703,0.0,1.0,-0.2737683546533696,1.5670649494194533,0.7484031966018029 +1.3932671584608638,2.072351845313342,1.3932671584608638,1.0,0.0,0.12018799023239488,-0.7294255828007553,1.1427657669012092 +0.18924464680618458,0.3896142080668474,0.18924464680618458,0.0,0.0,0.05271439240563387,-0.21320208594948514,1.0434402549058066 +0.6328857011148893,2.120494882335114,0.6328857011148893,0.0,0.0,1.464727508128195,-0.053547561559733656,1.3511791232404948 +0.20528286348449637,1.6572033370694919,1.6572033370694919,0.0,1.0,-0.37280489023140373,0.2698246215793342,0.8913352396345866 +-1.0045397569240708,0.5464888040244509,0.5464888040244509,1.0,1.0,-0.6328092349488721,-0.0517423413444323,0.8879849398269585 +0.15356174703998593,2.126235990235201,2.126235990235201,1.0,1.0,0.7750263567777398,-0.009042954598108888,1.1692490610007307 +0.3346994509371948,1.3285930150659886,0.3346994509371948,0.0,0.0,-1.9590382062795286,0.39243328882041084,0.6371994050895061 +0.16210018550668504,0.9884110958947809,0.9884110958947809,0.0,1.0,-0.13656447455577478,0.29716679655533074,0.9306352007755748 +0.17654778536448257,2.0404987539047443,2.0404987539047443,0.0,1.0,1.0997306876721853,1.3486877728166273,1.0177995281880774 +1.4257361180073895,1.6138576955465285,1.4257361180073895,0.0,0.0,-0.8466567707652389,0.2100017390217693,0.8180501673294763 +0.9851755788180852,1.4731294258398113,1.4731294258398113,0.0,1.0,-0.3955197646604807,-0.020500028469863485,0.9267893768589816 +1.3010975776990419,3.005346006445086,3.005346006445086,1.0,1.0,-1.024780949593855,0.17481697775103788,0.7935976084344891 +1.80780458245891,1.3405172161392194,1.3405172161392194,1.0,1.0,-1.2493951020214866,-0.028057230922943984,0.7821799609926572 +2.9213722113777365,4.1281679305632295,2.9213722113777365,0.0,0.0,0.12464865361073549,-0.724971118124138,1.1430217327835206 +-0.7732927468959669,1.029029313288206,1.029029313288206,1.0,1.0,0.8783506244659205,-0.6588882216599927,1.315876992963716 +0.5457966774017271,2.8935022096643905,0.5457966774017271,1.0,0.0,0.1087163625329726,0.46210628532735226,0.9535411764985386 +0.8732908539691415,-0.08724789240028175,-0.08724789240028175,0.0,1.0,-1.5507526244704801,2.293174609014216,0.519895881028626 +0.8862321037853791,0.635455388714629,0.8862321037853791,0.0,0.0,-1.3243975273807196,0.021191146643855026,0.7648632819957293 +1.451105181040051,3.484265987034428,3.484265987034428,1.0,1.0,-0.34019594803264064,-0.544582603861911,1.0137417628334608 +0.9671099463245596,1.9971364362352473,1.9971364362352473,1.0,1.0,-0.38908401200069365,-0.37306652496379855,0.9783803059392197 +1.1423154465963734,4.0955404213135544,4.0955404213135544,1.0,1.0,0.8741811232322231,1.1602674312592007,1.000796426937208 +1.1192164186717026,1.5580951754932995,1.1192164186717026,1.0,0.0,0.23676898783814468,1.7908858702367183,0.8014929660385327 +1.7725940711151225,2.0311129815886435,1.7725940711151225,1.0,0.0,-0.1431173723997698,-0.33906974117035926,1.0224860713552677 +-0.013009966877235435,3.2280495783831658,-0.013009966877235435,1.0,0.0,1.7667770515774999,1.2632051816078098,1.1780666152447883 +0.599543406580951,2.2685086355046638,2.2685086355046638,1.0,1.0,-0.34076164461334735,0.8122374585356321,0.826969100760501 +2.6704026518663513,3.5938665284129523,2.6704026518663513,0.0,0.0,0.537951330463356,-0.17193483365773327,1.1426846970307025 +-0.8574244404668181,-0.9625643330746352,-0.8574244404668181,0.0,0.0,-1.2051262054739915,-0.19115495557933934,0.808679993917201 +-0.14528326368559452,2.2844234380455917,2.2844234380455917,1.0,1.0,0.1502232435929503,-1.2280188694104501,1.2389292259840752 +1.6965013071105597,2.910204168438058,2.910204168438058,1.0,1.0,-0.6509627271165657,1.0989252980467763,0.7445082541145608 +0.24351696791497202,2.3408983869765887,2.3408983869765887,1.0,1.0,-1.2565625830937355,-1.4642110934351547,0.9688157277622825 +1.3997914145771164,2.488542278880438,1.3997914145771164,1.0,0.0,-0.40395557505190294,-1.8842441120421123,1.2236589403977451 +1.008009581896967,1.9642762539922682,1.008009581896967,0.0,0.0,-1.4013140903028676,-0.17370216040339734,0.7755308673487221 +1.5476821079516676,1.4348347596442501,1.5476821079516676,0.0,0.0,-0.6334953760441692,0.3962728867092676,0.8301573579950081 +0.46727729773090315,2.1873298069708285,0.46727729773090315,1.0,0.0,0.9416092255979736,0.6365908373236868,1.0972787153367356 +0.6661198325690816,-0.9690092036138094,0.6661198325690816,0.0,0.0,-0.6901741387139243,-0.7697910703886367,0.9776865442871376 +1.124277309092823,1.0398381513458608,1.0398381513458608,1.0,1.0,0.8998340561451933,0.7174959153399105,1.0750233947791197 +2.1402085423350687,1.672772321811634,1.672772321811634,1.0,1.0,-0.09604701091523836,-1.7431571145552298,1.2741307291080395 +0.8802162645992044,3.066457769090724,3.066457769090724,1.0,1.0,-0.13508609746004976,0.27189503690589734,0.9344459660235018 +1.3991617312547113,2.927032347022226,1.3991617312547113,1.0,0.0,-0.1711349450343371,-1.247434951213581,1.1651947654346841 +1.0921591976406115,1.9634556527247589,1.9634556527247589,0.0,1.0,1.6915228491878316,-0.18133547920754806,1.4412414953782855 +1.552692107639405,3.0091114636261467,1.552692107639405,1.0,0.0,0.8082947578158496,-0.8476462816508196,1.334832604110482 +0.2582453136346603,0.9252723305767623,0.9252723305767623,0.0,1.0,0.4001057783480818,0.6178307086241608,0.9874262676908384 +0.7227824880076995,2.7645244668597373,0.7227824880076995,1.0,0.0,-1.5765135999994473,-2.1332676666201307,1.0046984331786033 +0.6318033764377866,3.3537357743623035,3.3537357743623035,1.0,1.0,0.797722226207307,-0.17277358823909247,1.2037726299268174 +0.15421937770700478,1.131512950998328,0.15421937770700478,0.0,0.0,-0.6942801626519909,2.5730588962234457,0.5916648909456139 +-0.27478077513755667,0.19418459402111077,-0.27478077513755667,1.0,0.0,-0.9934428926816102,0.7956824680266746,0.7275729946069678 +0.4726646923629286,1.6870273577617065,0.4726646923629286,0.0,0.0,-1.0598621921593632,0.588815663157024,0.7405998686154969 +1.8936128216415244,3.5056026931006827,3.5056026931006827,1.0,1.0,0.3720949331691467,-0.4246070850168931,1.1481018912307912 +0.005295282853196803,3.5368501389510345,0.005295282853196803,1.0,0.0,-0.33395440789118835,1.4857850310597525,0.7485190412478052 +0.3914681883792381,0.7920450861026541,0.3914681883792381,0.0,0.0,-0.5629701095041505,0.1735146330113771,0.8705577186064759 +3.5595547551337656,4.327265080034787,3.5595547551337656,1.0,0.0,0.2871687109312852,-0.4367328706787868,1.1308207231750238 +1.409273444468294,0.9264636439212243,1.409273444468294,0.0,0.0,-0.5071929452118582,-0.008488501780364264,0.9046878483096447 +0.7622819009505163,2.7259889427082413,0.7622819009505163,1.0,0.0,0.3472053824750551,-1.9545951618105688,1.4371045364555077 +-0.0762371886273212,2.609786213995811,-0.0762371886273212,1.0,0.0,1.140170010347492,0.2592385630232455,1.2082200187029795 +1.00561673825951,0.9116097715028542,1.00561673825951,0.0,0.0,-0.5338632063662081,0.46650373658514044,0.8379907625582301 +1.815791087484469,1.6066066571299804,1.815791087484469,0.0,0.0,-0.017424833847441454,-0.2909684503271285,1.0409776303441158 +0.9341555197616155,1.2936623733071047,1.2936623733071047,0.0,1.0,-0.6975609984721123,0.24503792777376007,0.8383933570099231 +1.4767811834055444,1.9920842589138923,1.9920842589138923,1.0,1.0,0.9885663615189422,-0.3339217616597925,1.2812056344736102 +0.38845952965730335,0.23368196879287662,0.23368196879287662,0.0,1.0,0.4385815575832754,-0.12918565090402376,1.1130390523590092 +2.039733701733355,3.326879706444655,2.039733701733355,0.0,0.0,1.3898429001416792,1.1851050030208823,1.1053951021583008 +2.7527414258832446,1.8091607254720823,2.7527414258832446,1.0,0.0,-1.2214159689913306,-1.9235483124464532,1.0452426433621442 +-0.11298679311246623,-0.9978260029196263,-0.11298679311246623,0.0,0.0,-3.5190565526049573,0.8321705496301546,0.4366440734582719 +2.1990313507039025,4.834705220030969,2.1990313507039025,0.0,0.0,-0.3834636971108737,0.6572265915899396,0.8392247515110965 +0.8696303595262258,-0.3751017468479596,-0.3751017468479596,0.0,1.0,-0.857587631856296,-0.1450518406520039,0.8609147861230179 +1.7457493368775927,4.166969045046715,4.166969045046715,1.0,1.0,2.366095758388196,-0.7253130307577225,1.7896429063488521 +1.6091025914272161,3.069725502579522,1.6091025914272161,0.0,0.0,-0.033961132029644236,-1.3784754727395307,1.221377224397816 +1.503251154802495,2.7033840294003584,2.7033840294003584,1.0,1.0,0.3378343654480411,-0.4252396640161995,1.1403700587755652 +-1.3014800293832836,0.720269012080431,0.720269012080431,0.0,1.0,0.31846580834838206,0.9195805317712165,0.9284452016338076 +0.863670887051694,2.899523570455155,0.863670887051694,1.0,0.0,-0.5215895069282064,-2.5803390286350143,1.3267508095615288 +-1.3994715965250994,-1.5684705041400464,-1.3994715965250994,0.0,0.0,-0.2654578904407292,-0.6444720639620446,1.0445427517289543 +0.39852632469632815,1.4387311691250348,1.4387311691250348,1.0,1.0,0.759464177743297,0.8627618926936965,1.0227330979862395 +-0.4252389877122349,-1.6312316389723867,-1.6312316389723867,0.0,1.0,-1.6610865877435304,2.5822566883703972,0.4869685092095876 +-0.5653834158820246,1.3562176909753363,1.3562176909753363,0.0,1.0,-0.669918123123563,0.9949697387622256,0.7533471872191868 +1.1967335417953375,3.300919042714111,3.300919042714111,1.0,1.0,0.8122379293922467,-0.7498769199143912,1.316437367569248 +1.4854784132473635,3.25688466397686,1.4854784132473635,1.0,0.0,0.754990982597871,0.03750279113753099,1.156470596545854 +0.1950282132664205,1.459191098055145,0.1950282132664205,1.0,0.0,1.2112685395385352,-0.22234440546620418,1.3173279026512 +-1.1001050685988458,-3.1357151372150014,-3.1357151372150014,0.0,1.0,-0.8975907775506574,1.131578503536014,0.7052133265850135 +-0.8179144082834637,2.5137529646773595,2.5137529646773595,1.0,1.0,1.539212883374032,0.6076192291085077,1.2419710726630537 +1.0113678058785975,0.8802712947628306,0.8802712947628306,0.0,1.0,-0.7322642446334008,-0.22131140026104407,0.8929219187955667 +-0.2685651406234323,2.927249890074896,2.927249890074896,1.0,1.0,-0.6306949151227347,0.22103750717654744,0.8527450954927054 +1.5269804307959087,1.3805742662820237,1.3805742662820237,0.0,1.0,-0.07954564856676684,0.8342348466124276,0.8684507892276556 +0.7023574639269569,3.1867589612744873,3.1867589612744873,1.0,1.0,-0.6384180355145563,0.22737390641753819,0.8506200770312999 +0.062416677765538386,1.063478873390784,1.063478873390784,1.0,1.0,-0.49724813501679926,-0.4073477233362233,0.9623784865764152 +0.19914671852867438,1.8314230181125,1.8314230181125,1.0,1.0,0.1937494660871349,0.27570320814838534,0.9973978035932527 +1.1159047106604265,1.1828609007921163,1.1828609007921163,0.0,1.0,-0.9477544590589686,1.0504995388889016,0.7067164017363592 +1.7558849904254774,3.5370282252214205,1.7558849904254774,0.0,0.0,1.1240534293541125,-0.9870509644677444,1.4518931572600333 +0.2658073718019526,-0.22005267139829,-0.22005267139829,0.0,1.0,-0.8028489099502447,1.0816068489996986,0.7241108364166967 +0.4110544381408893,2.117100536439411,2.117100536439411,0.0,1.0,-0.6210959130323325,0.8663290845513747,0.7755610738645103 +0.2425170647071605,1.1426693755273507,1.1426693755273507,1.0,1.0,-0.5223994045598579,-1.3031457323492335,1.0952602200757442 +1.3682914869544045,4.638195582805261,1.3682914869544045,1.0,0.0,1.6730527648111713,-1.0754930225607653,1.6420320116210942 +1.0744469044779885,1.9846440127958125,1.0744469044779885,0.0,0.0,-0.22583460651984255,0.14718136187014738,0.9349669241269247 +1.878430055811479,1.6090291741955336,1.6090291741955336,0.0,1.0,0.08186185234450719,-0.19012531349139775,1.0459140242685458 +1.111421282963779,1.4613535445722798,1.111421282963779,0.0,0.0,0.4945430634051966,-0.009819529319097972,1.1055926677377796 +1.3571012365224782,4.438032236695186,1.3571012365224782,1.0,0.0,0.7754480820904142,2.1214960077408245,0.8494766842014538 +0.7098832151570665,0.5263373343192029,0.7098832151570665,0.0,0.0,-0.5877102823963526,0.1505646813399735,0.8692480436802338 +-0.042183882344709156,0.7001137715714747,0.7001137715714747,0.0,1.0,0.31873431663140295,0.31858172246376887,1.0160876396728926 +0.31640569801102114,4.120940526312056,4.120940526312056,1.0,1.0,0.43735589403099284,0.11307743564538617,1.0730548314979473 +1.1244247254308948,1.322726624237033,1.322726624237033,1.0,1.0,-0.45169389446709524,0.11567993784005014,0.8979052131201256 +0.6671270603372705,0.7754960503548336,0.7754960503548336,0.0,1.0,0.8577261660467054,-0.053958434845528015,1.1967852437840503 +-0.24701698621968055,0.7884353264897668,-0.24701698621968055,0.0,0.0,-0.850219986874377,0.3084837537122823,0.8054802783257802 +1.7323005075175248,2.6070475487124307,2.6070475487124307,0.0,1.0,1.322734504406935,0.30277722550975,1.2449935100040415 +-0.5536515307777634,1.3801056511230958,-0.5536515307777634,0.0,0.0,-0.35700471821651714,-0.9837028733276594,1.0791292731085302 +1.7871498612003485,5.206484454404483,1.7871498612003485,1.0,0.0,1.2079354438462235,-1.7204663232277915,1.6481559176778273 +3.1335345329288744,4.39840046774575,3.1335345329288744,0.0,0.0,0.35737466945236174,-0.5721291628804845,1.1703400040233796 +1.529786399302353,2.895489680520152,1.529786399302353,0.0,0.0,0.723307884230776,-1.1658088478739235,1.3764846637098138 +-0.41823541448270585,-1.7215375999349467,-1.7215375999349467,0.0,1.0,-0.48614094779959244,-0.01107391311577138,0.9088573729214593 +2.721650613106177,3.6854347756886714,3.6854347756886714,0.0,1.0,-0.4051921474975693,-1.3576976686162867,1.1304504942924691 +0.9052786702539514,2.3302728982616445,0.9052786702539514,0.0,0.0,-0.4694829391592798,0.4492854099435163,0.8510457434030257 +2.498152807206667,4.9187598974480755,2.498152807206667,1.0,0.0,0.7835556677871024,-0.6129042869998395,1.2822890185894211 +0.14677758858210452,0.9385655980307597,0.9385655980307597,0.0,1.0,-0.5753630325138963,1.2278280320660537,0.7413764067682254 +2.3619406790978763,6.3841963789391585,6.3841963789391585,1.0,1.0,2.7824268304148663,-1.0957770596143637,2.05618417944966 +2.7550741922814175,4.567834073456782,2.7550741922814175,0.0,0.0,0.20300624950560078,1.8411722751036494,0.7901167249261315 +0.9794287511621147,2.1901549286552173,2.1901549286552173,1.0,1.0,0.4509026016735054,0.31458722099909553,1.0439299997711264 +0.1264209109643315,0.4859309236964696,0.1264209109643315,0.0,0.0,-0.3659921734912216,2.3256053294033587,0.6557083127575144 +0.41580676166866215,2.2894880418968024,0.41580676166866215,1.0,0.0,0.8599773018270637,-0.13452718007875195,1.2118820172158058 +1.142666308820605,1.007882223291089,1.142666308820605,0.0,0.0,-0.7105205554123971,-1.8579608853535523,1.1463580702567702 +-0.5149015994848616,-0.36024132203068127,-0.36024132203068127,0.0,1.0,-1.401978568648449,1.3039009730095612,0.6212753735424191 +-0.883588058389529,-1.1714994473950398,-0.883588058389529,0.0,0.0,-0.4912967303690006,0.9986805900762462,0.7803120036611737 +-0.23177326359663808,0.0011387950694491944,0.0011387950694491944,0.0,1.0,-0.6494026231981173,-1.1062869847109547,1.0367206634201458 +-0.9641677339077288,0.6163628763683455,0.6163628763683455,1.0,1.0,0.9003945175861521,1.5894838375918994,0.9433256969784711 +2.0173240876228338,0.4055499717109856,0.4055499717109856,0.0,1.0,0.17922712811598268,-0.3873215406410733,1.098497851200799 +1.219347735603693,2.336447105127688,2.336447105127688,1.0,1.0,0.22089830600253804,1.9339780867992722,0.7819870866414621 +1.1097300405228294,0.8535267493385461,1.1097300405228294,1.0,0.0,-0.6555618072397275,-1.5177602172062208,1.1013664885278438 +0.5594288676676316,1.848119834252238,0.5594288676676316,0.0,0.0,-0.798240295654032,0.9909192156532393,0.7347052052776543 +0.1725667803742138,1.0250742962658261,1.0250742962658261,1.0,1.0,-0.1092918203024825,0.20823696685550563,0.94829095516118 +1.4554534167803068,2.320295988680718,1.4554534167803068,1.0,0.0,-0.6200537880525047,-0.3271930810110328,0.9278067648052617 +0.686442261147481,1.0493701205050505,0.686442261147481,0.0,0.0,0.2523968725705452,-0.44891664205896403,1.1250380652063592 +1.2752456192464776,2.463877666064486,1.2752456192464776,1.0,0.0,0.40954099885129885,0.6823485041392837,0.979763487382049 +-0.2429962743148968,-0.6173463822650296,-0.6173463822650296,0.0,1.0,0.17894436867937832,-0.40720506076157176,1.1017167365875054 +0.010527839651307824,3.1681944015779098,0.010527839651307824,1.0,0.0,-0.16523900725759597,1.499399064069841,0.7726279436610443 +0.8540744438509977,2.0961831012414796,2.0961831012414796,0.0,1.0,0.7996694083943681,0.6077148068848464,1.07119694199758 +-0.5775987936301236,-2.3353484213493756,-2.3353484213493756,0.0,1.0,-1.5322945586094903,-0.5286838878431878,0.7967962105607417 +1.056012321296078,1.787685365008918,1.056012321296078,0.0,0.0,-0.14727862180763457,-1.9192250108075262,1.2948929495048709 +-0.07850696094990878,-0.3113201306667402,-0.07850696094990878,0.0,0.0,-0.2739506299020948,2.062427029247694,0.6947840644219903 +-0.20331329794255404,2.526085036208292,2.526085036208292,1.0,1.0,0.8951295324693052,-0.02471295676484196,1.2004936533687407 +2.158564721859777,4.550493398766344,4.550493398766344,1.0,1.0,0.9817715354494708,-2.6709677566565775,1.8166596735695566 +1.3273274076410606,2.517300832363104,2.517300832363104,1.0,1.0,-0.4028939123046931,-0.022304903244715082,0.9256741029186398 +0.4588665353325069,2.230651828397323,0.4588665353325069,1.0,0.0,0.4567961855413734,-0.11721427227311959,1.1150969791536587 +1.5959119184923312,5.7437991646517315,5.7437991646517315,1.0,1.0,1.5084549747292715,-0.7723464538533336,1.5182266301042409 +-0.26805839540474197,-0.17766776718578453,-0.17766776718578453,0.0,1.0,0.280382180497248,1.2181827677167307,0.8810411207429648 +1.6171290550367325,1.6885258226177817,1.6885258226177817,0.0,1.0,-0.06568063425239584,0.3403831363269247,0.9378234218729253 +1.005797329289226,3.0313957040120094,3.0313957040120094,0.0,1.0,-0.6117147875639056,0.5644964723262621,0.8130054805105009 +0.3468051234186174,1.0096252963037502,1.0096252963037502,1.0,1.0,-0.7109832439757305,1.040604346523012,0.7420881066311085 +2.066341399832111,3.301165717590871,3.301165717590871,0.0,1.0,0.6151325351874335,-0.8804355268366132,1.2905801372295305 +2.075948300197434,3.894700725140937,3.894700725140937,0.0,1.0,0.6253178864813116,-0.7948216823546176,1.2767104763945933 +0.09892878936908323,-0.6992750396549804,-0.6992750396549804,0.0,1.0,-0.2574750031515586,-0.642538723348928,1.0459084185812348 +1.6027397042436249,2.036749610912177,2.036749610912177,0.0,1.0,-0.9077941246331631,0.8488342343955939,0.7342659692428577 +1.0004385474449211,2.250528774183186,1.0004385474449211,0.0,0.0,-1.0267228344131845,-0.27545075567092386,0.8487191455932614 +0.7724847043105154,2.1154248566350224,2.1154248566350224,1.0,1.0,0.8990316452861196,-0.552269930257,1.3003673722655986 +2.3711340785725863,3.5446657770497736,2.3711340785725863,1.0,0.0,-0.11056732105494545,-0.8415093047699725,1.1097257708402823 +0.5348771176333736,0.6819757303953842,0.6819757303953842,0.0,1.0,-0.3686408603549183,0.6444647622156715,0.843329200609835 +1.3907796049873022,2.154661275387329,1.3907796049873022,0.0,0.0,0.8631872828692145,-0.516141395969322,1.2841007474929975 +1.9683919168353519,3.601981370303185,1.9683919168353519,0.0,0.0,-0.10143229533851536,-0.5679170761510383,1.0670534900884228 +1.0166085703200975,2.647878503091778,2.647878503091778,0.0,1.0,-0.6182034236827999,-1.7273909850065468,1.1450725105752892 +-0.5276009622356181,-1.162498944100393,-0.5276009622356181,0.0,0.0,0.12564996292962566,0.35649935201035915,0.9720530379524757 +-0.12851696830477743,1.1413766301918038,-0.12851696830477743,0.0,0.0,-0.6893925087015942,0.0017148806164995229,0.8709804622056818 +-0.4854177292845201,2.0683820546957947,-0.4854177292845201,1.0,0.0,1.0384752477615522,0.5932738010790062,1.1260365389245888 +-0.7440648904696838,2.5909457422403945,2.5909457422403945,1.0,1.0,0.9573881082768205,1.2136112072300684,1.0094805994136224 +0.6523634486927967,-0.016824812017131485,0.6523634486927967,0.0,0.0,-1.8409747780482042,0.9746818308028684,0.597860858481363 +0.5161921756826524,1.387472108105377,0.5161921756826524,1.0,0.0,0.03895202693979417,-2.025333324168899,1.3655952361334662 +1.1888725654821994,3.0506944786499823,3.0506944786499823,1.0,1.0,0.5804995838118191,-1.0434290982984133,1.3133935469301747 +0.46824896937573146,2.952707798572105,2.952707798572105,1.0,1.0,0.6551514065060157,-0.06370891348032837,1.150948768499818 +2.0128207269145624,2.258688778657069,2.0128207269145624,0.0,0.0,-0.9812208536404771,-0.31468528351791636,0.8615334654570166 +0.5466318844882713,-1.0451749114683575,-1.0451749114683575,0.0,1.0,-1.0765516552577283,-0.8190857028242458,0.9116970960243904 +1.2095850721934212,4.6488624769216536,4.6488624769216536,0.0,1.0,0.5027346824356858,-0.12072880510587593,1.1259828033363135 +0.2711466013488688,-0.3422543681803053,-0.3422543681803053,0.0,1.0,0.046679776213965456,-0.10257668163955026,1.0250305914773106 +1.2710031377887945,0.83427461132183,0.83427461132183,0.0,1.0,-0.7321994752884958,0.12227711647744338,0.8480790208820106 +2.794494349384692,4.470779652724009,4.470779652724009,0.0,1.0,1.861947746808138,-0.46528824265414553,1.5561001473882317 +0.43066750350341043,1.9734976973808371,1.9734976973808371,0.0,1.0,-1.3618714473607854,-0.6473632061783792,0.8392305586435898 +0.8634401954463768,1.5192173039040802,1.5192173039040802,1.0,1.0,0.9512844367537601,-0.36467993380014907,1.2775687752014706 +0.9919694966278951,3.370391539976744,3.370391539976744,0.0,1.0,1.416592309837072,-1.0601094589173097,1.5563368405100495 +1.4593409750807922,4.164057698688702,4.164057698688702,1.0,1.0,0.2612268088322954,-1.6881250474986804,1.3572547844339005 +-0.25516688469040194,1.2142229528344402,1.2142229528344402,1.0,1.0,-2.124032517340925,-0.05325272772834721,0.6591404809337249 +3.0233791001956476,2.0369892525184667,3.0233791001956476,0.0,0.0,-1.2138966443082717,-0.3362878113246741,0.8250294823014939 +-0.28776811229934085,1.4844025744143667,1.4844025744143667,0.0,1.0,-0.2456414383564581,1.4065316786647912,0.7709682862980127 +-0.2600890141480551,-0.12709210944026694,-0.2600890141480551,1.0,0.0,-1.3366593389691341,-1.1250931649101785,0.9061341703066794 +1.1770905548691584,2.6819033433391373,1.1770905548691584,1.0,0.0,-1.2760140030385814,-0.3526227917206267,0.8168421727030707 +1.132187085812677,3.2098704562431752,1.132187085812677,1.0,0.0,0.5425484297707434,-0.918479533485129,1.2792597828124834 +0.7172678162865854,1.4670265106624398,0.7172678162865854,1.0,0.0,0.7845752127061075,0.9772881375849941,1.0103752756622666 +0.7553436259570269,1.1842365780250268,1.1842365780250268,0.0,1.0,0.8809790405701977,0.2629402292698575,1.1465469506037893 +3.7240773642437994,4.303378210828186,4.303378210828186,1.0,1.0,0.7510943517520623,-1.0761928244600716,1.3656736099013524 +3.077025312094234,2.359159322201263,2.359159322201263,0.0,1.0,2.1019352856222233,0.41619543992456487,1.430405171904695 +0.878727839537834,3.2033529836055497,0.878727839537834,1.0,0.0,-0.7104357194249082,0.5722790659737608,0.7961807836541848 +1.200259722516323,2.508619071166426,1.200259722516323,1.0,0.0,1.1108831288308076,-0.4448765556215337,1.3349690513970718 +0.5063079133053847,-0.01696779420221517,-0.01696779420221517,0.0,1.0,-0.8557383417253328,-0.02542925384586623,0.8459176366946847 +1.6899793730569062,2.502152779998766,2.502152779998766,1.0,1.0,-1.4824506208247334,1.6388840943115244,0.5813962514621462 +0.4099573251331388,0.9471847650341574,0.9471847650341574,1.0,1.0,-0.15717133510552284,0.2467096431610791,0.9338488230950384 +0.6684214124319641,1.907480828552672,1.907480828552672,0.0,1.0,0.5341800756757474,0.36727526511116176,1.0531068767276048 +0.1596644723480699,1.8295433222019306,1.8295433222019306,1.0,1.0,-0.48349310468935053,-0.9211280741354165,1.0423425062977458 +2.143486710793563,2.429830345062576,2.143486710793563,0.0,0.0,-0.9670168071791311,-0.5024878115303015,0.8886692235467987 +0.9517880353452036,0.8282101716663426,0.8282101716663426,0.0,1.0,0.6617946825822968,1.431394752962858,0.9209493153559455 +1.3695051595360772,2.19050477884451,2.19050477884451,1.0,1.0,1.1448965410951393,-0.20008504144537453,1.2956235232836495 +0.345169593909245,2.6370228696792335,0.345169593909245,1.0,0.0,0.22495717014390434,0.5228416458065756,0.9671179528472269 +-0.41795231914693964,2.204385514147412,-0.41795231914693964,1.0,0.0,0.24187044313250813,0.06425300900121592,1.039496163171405 +0.10868348045709537,-0.5227572436199337,-0.5227572436199337,0.0,1.0,-1.4904180943162373,0.7817475486684311,0.660112006749882 +1.0393448774757457,1.3190615945233923,1.0393448774757457,0.0,0.0,-0.46428904125666537,1.2507447291361549,0.7554289709628914 +-0.7347573004092084,0.3349830046182031,0.3349830046182031,0.0,1.0,0.10196817005031161,-0.4381975827959637,1.0899406785696544 +0.014669612320163394,-0.8799441756595687,-0.8799441756595687,0.0,1.0,-0.4205482805213722,0.4451915513324562,0.8599436726448939 +0.0873137525068266,2.6100618850391037,0.0873137525068266,1.0,0.0,0.3195795946011526,-0.3550524438958381,1.1243148023288378 +1.8136228257004758,2.4329963092998605,1.8136228257004758,0.0,0.0,-0.06141559222989351,-0.3268447944663207,1.0374269912052323 +2.750779801018613,3.067368778828034,3.067368778828034,0.0,1.0,1.3268757680417784,-0.0353687138357584,1.3108561333821278 +1.6316266123280072,3.6179796653095746,3.6179796653095746,1.0,1.0,0.7888510826692557,-0.8322240943952607,1.3265795076159754 +1.2077369787510435,5.287375715355733,5.287375715355733,1.0,1.0,1.768128102089729,-0.24810433301147228,1.4782238568638162 +1.2626577537207213,4.30448876439245,1.2626577537207213,1.0,0.0,1.672094104273705,-0.9147373751662409,1.6026033923357372 +1.575134153380628,1.5229311626061408,1.5229311626061408,0.0,1.0,-0.531843502709383,0.34613731585514024,0.8536028007297417 +0.8895365334704467,1.7939082863899811,0.8895365334704467,0.0,0.0,0.949846329426276,0.2826465759239392,1.1590170549716414 +-1.1235955204250359,0.7307278811935374,-1.1235955204250359,1.0,0.0,-0.35107872961593645,-0.11326576577217978,0.9481658155947198 +-0.1590727414481244,0.7627632426331026,-0.1590727414481244,1.0,0.0,-1.760006206593928,-0.3403683837689189,0.7401177500498504 +1.1814115074815532,1.07105987071419,1.07105987071419,0.0,1.0,-0.2721917380242562,0.38969389246787906,0.8932467401826003 +-0.6548908623573095,-0.19268649320651263,-0.19268649320651263,0.0,1.0,-0.5089850143555738,-0.5822992548280667,0.9856518158875799 +1.3230840860835562,3.9543255639666315,1.3230840860835562,1.0,0.0,1.3940489345348215,-0.11879061252765347,1.3453152588514496 +1.901057298509067,4.62059408443471,4.62059408443471,1.0,1.0,0.7361312808613238,2.016208219315881,0.8562396502953008 +0.8326080684140063,1.2451125561707332,0.8326080684140063,0.0,0.0,-0.6272691767104965,0.4615559587735607,0.8230920569960788 +-0.013947899410603926,1.955987479171222,1.955987479171222,0.0,1.0,-0.7320570889272114,0.9871255162524468,0.7449186618980705 +2.7183083817185336,3.1427236667896707,2.7183083817185336,1.0,0.0,0.8596898626245726,0.6213441304664118,1.081919039707242 +1.028470665719884,3.212262855818098,1.028470665719884,1.0,0.0,1.045345399024413,-1.1503614073004182,1.4646602303578642 +0.7870820720640872,3.4709752158866345,0.7870820720640872,0.0,0.0,-1.3565907086444975,-0.5669298984204835,0.8300422656934044 +-0.2996086312492465,0.9527915606332771,-0.2996086312492465,0.0,0.0,-1.0713320933033585,1.108896179209455,0.683450637550742 +2.7665461309618737,5.137294842520795,5.137294842520795,0.0,1.0,1.2578191731260255,-1.5710771021060326,1.6277934725844194 +1.0559557110353546,2.2937766948352234,1.0559557110353546,1.0,0.0,-1.1134889965787635,-0.3009716589330754,0.8373174154316205 +-0.15997982070028394,-0.875397416098449,-0.15997982070028394,1.0,0.0,0.5024703424376923,-0.15048546856802417,1.1309600669484254 +0.457747001599245,0.9991399688035321,0.9991399688035321,0.0,1.0,0.5653295771181884,-0.05819749766795353,1.129523135952512 +1.040188323506671,2.6720349607602207,2.6720349607602207,0.0,1.0,0.5723282943340151,1.6092882966454483,0.8807974526804527 +0.8612728397495829,-0.08742680996015029,-0.08742680996015029,0.0,1.0,-0.46378708844313776,-1.3781400580882004,1.1207113201904444 +1.2714795622304156,1.6145437659118327,1.2714795622304156,0.0,0.0,-0.2390890764675754,0.8539187041801863,0.8386971350654323 +0.9198110001554779,3.280165258022592,0.9198110001554779,1.0,0.0,-0.12937649107811325,-1.0733910218580176,1.1446894243038181 +1.250230512524129,0.3700142424186592,0.3700142424186592,0.0,1.0,-0.7935502946107262,-0.2451061138049306,0.8851978126326389 +4.5478701530728785,4.143184688924601,4.143184688924601,0.0,1.0,0.7805279269321599,0.517898678746719,1.0815776730513644 +0.6847016211219917,-0.9748728029737124,0.6847016211219917,0.0,0.0,-1.237162781376702,-1.274278320218759,0.9452642052940272 +1.221217653045498,2.946178264594891,1.221217653045498,1.0,0.0,1.4883532182653356,-0.1681203187039389,1.3811116128305536 +1.3822363596243052,0.43545508196816995,1.3822363596243052,0.0,0.0,-0.0795853491244869,0.9616940406268917,0.8519979349537771 +1.5162756079401858,2.1319670173528635,1.5162756079401858,0.0,0.0,1.4660428092287257,-0.6879726085704465,1.4864704035969667 +-0.568200911137166,-1.2263360433532877,-0.568200911137166,0.0,0.0,-0.11762100285517776,0.689356403645025,0.8807973861910152 +-0.29148265305868604,1.4603196863486587,1.4603196863486587,0.0,1.0,0.11947173408694844,0.5058048141362028,0.9493512947146082 +1.032060048986023,0.5766463815004207,0.5766463815004207,0.0,1.0,-1.0592868211172815,0.8565487540254646,0.7115285915793648 +2.182444032056445,3.0688154053943553,3.0688154053943553,0.0,1.0,-0.9347590791951627,1.6164072957334223,0.6508911141071259 +-0.23285414954242767,1.3070727761013294,1.3070727761013294,1.0,1.0,0.5453129058427028,-1.1340108188071798,1.3220244077297965 +0.8951586578618024,0.3135823397583186,0.8951586578618024,0.0,0.0,-1.144838434376811,1.9354497029486835,0.5949456974938135 +1.2651414774339629,0.9827744032724922,1.2651414774339629,0.0,0.0,-1.4881737150895604,0.4032155992396772,0.6989912302922929 +1.9420712877421025,5.327359094812697,5.327359094812697,1.0,1.0,-0.04061551177323194,-1.1812124460491151,1.184189725258886 +-0.42133753095777327,-2.062058432583124,-0.42133753095777327,0.0,0.0,-2.5294484583961863,-2.069051360955603,0.8223970366887061 +1.1986147000839449,1.375251841259964,1.375251841259964,0.0,1.0,0.7688003624169851,-0.6835923897231052,1.2921389305203956 +2.4968753390408893,3.2657351407673203,3.2657351407673203,0.0,1.0,0.06965999503721904,0.4643388611213759,0.9458050303562276 +0.6709646540981772,0.5064967844973027,0.5064967844973027,0.0,1.0,-0.49407995775190977,0.4305129323659139,0.8492574229327865 +0.3734536072163297,0.6515394467651379,0.6515394467651379,1.0,1.0,-1.0268307024701275,-0.13926203958099914,0.8315392026503928 +0.4095803976590803,2.3661341842731605,0.4095803976590803,0.0,0.0,0.726181605676397,0.47852453471042133,1.0762229479017822 +-0.1578474463146187,-0.16505254545326686,-0.1578474463146187,0.0,0.0,-2.692135332866535,0.3965664128779545,0.5499587362858223 +0.4403936154329313,-1.2833774124498267,0.4403936154329313,0.0,0.0,-0.5931849795279804,-1.773485668355714,1.1588010051837694 +0.1916691092473503,-0.7996333532473152,0.1916691092473503,0.0,0.0,-0.8680353474978357,0.9176249861699685,0.7325301215070408 +0.23987915827412198,0.9252699269022315,0.9252699269022315,0.0,1.0,-0.38589102634619993,-1.0428745393667724,1.0824781280283877 +0.5081030314119139,1.0782180111509536,0.5081030314119139,1.0,0.0,0.9573962114763911,0.17900868969894917,1.1789543939613416 +0.1800598959392583,1.0576358946412319,1.0576358946412319,1.0,1.0,0.7732795364021117,1.393891828857747,0.9470268182339122 +-0.6482023850357037,-0.36373627322301055,-0.6482023850357037,0.0,0.0,-1.154829396266696,2.305627587720127,0.5616872843975227 +-0.3988061695468378,0.3251327007067373,0.3251327007067373,1.0,1.0,-1.006760738690608,0.9550641790589681,0.7084953559779875 +-0.010544747675154564,2.0311858959016,-0.010544747675154564,0.0,0.0,2.4694715944865533,0.9910849538690067,1.4123169402504128 +1.0516776818979545,3.2720858321149806,1.0516776818979545,1.0,0.0,1.249445665774776,0.38639320346890427,1.2115858879271735 +0.1966103543565303,2.8001181695382638,2.8001181695382638,1.0,1.0,0.7889095735539969,-0.1797079868052589,1.202903373794839 +2.1057006989442497,3.022594289548122,3.022594289548122,0.0,1.0,-0.08839787114329892,-0.9988593000907606,1.1412787231792922 +0.055497848874385136,0.8993815865331459,0.8993815865331459,0.0,1.0,0.9515745580171215,-0.193821713793004,1.2453145749860948 +1.293357489343368,0.8731525102846089,0.8731525102846089,0.0,1.0,-0.8550109631545482,0.39591481471663126,0.7942242595641829 +-0.4773993353698174,0.730632468684768,-0.4773993353698174,0.0,0.0,0.32065899295177513,0.8512657137369796,0.9384196345106498 +1.5410596203991183,0.5508317369666995,0.5508317369666995,0.0,1.0,-0.34132148011838476,1.4759785586157825,0.7485172121847466 +1.802367487162258,3.494244984496401,1.802367487162258,0.0,0.0,-0.5659259503258152,-0.6117039468566254,0.9787983843714932 +0.24206794055766756,1.517186596058917,0.24206794055766756,0.0,0.0,-0.6663380569482503,1.4952683389159753,0.6993822299585456 +1.602638214654963,0.3043425459335092,0.3043425459335092,0.0,1.0,-0.24723630400908517,-0.8813301116164577,1.086272657611586 +2.4544792436875618,3.764116494200361,2.4544792436875618,0.0,0.0,0.9841512423268217,0.846930936241594,1.0722836301627827 +1.1396629512179721,3.683138943721359,1.1396629512179721,1.0,0.0,1.6481592675673173,0.024818853556644233,1.3852893371074815 +3.234875642495174,3.8119188082849873,3.234875642495174,0.0,0.0,-0.5169826762664514,-2.047300270929642,1.2259284868970153 +0.8436088697706121,0.5463332367509295,0.5463332367509295,0.0,1.0,-0.08896214751993241,-0.8839115870730866,1.121642701536702 +0.6889192876090839,3.278636020184391,3.278636020184391,0.0,1.0,-0.7319103049523236,-2.6778480061422596,1.2908425438364937 +1.859365002968277,0.3296600613089753,0.3296600613089753,0.0,1.0,-1.120985026306186,-1.3937741214716057,0.9849830096545442 +-0.4052112521586194,-0.28025976848709055,-0.4052112521586194,0.0,0.0,-0.6656018612670509,1.4765493096727937,0.7014520265712599 +1.0539446745034664,2.3872844736321297,2.3872844736321297,1.0,1.0,0.25622666808547273,0.1114355798805795,1.0351330784195512 +3.505719543468116,4.143564930980215,4.143564930980215,1.0,1.0,-0.4141450564816222,-2.0342150430837433,1.248950058512959 +-0.9383244666862038,-0.17026895589567365,-0.17026895589567365,0.0,1.0,-0.6275064579581319,-0.7148637638566523,0.9818941889304924 +1.2929964995650096,2.556699036344975,1.2929964995650096,0.0,0.0,1.4453055414765041,0.8254777246256257,1.1796755577372338 +0.8491895635782267,2.1878940479677427,0.8491895635782267,0.0,0.0,-0.24097064956353836,1.2827449329238563,0.7861514113091979 +1.7840021549727556,4.5077301504737655,4.5077301504737655,0.0,1.0,-0.7597872559928186,-0.3080916557141192,0.8996551976008915 +1.0194346553914657,2.345555686630024,2.345555686630024,0.0,1.0,0.2039629329782467,-1.4206040338230608,1.289021227055623 +0.8439804263071139,0.7822739566160136,0.7822739566160136,0.0,1.0,-0.8615591294506296,-1.1397554888310957,0.9986524062555612 +2.76565352058295,2.411035850029143,2.411035850029143,0.0,1.0,-0.2641167275740761,-0.7245600132871528,1.0574503246177807 +1.3090564859647345,3.7989671958619966,3.7989671958619966,0.0,1.0,-0.3830597904970057,-1.2276937109258108,1.1135377380722138 +-0.013350566131494213,0.6036345902996213,0.6036345902996213,0.0,1.0,0.5031802525415986,-0.05270389170559416,1.1146513152595843 +-0.1829483621379701,1.0445394506774204,1.0445394506774204,0.0,1.0,-1.7637638902449633,0.20121342087583705,0.6818573609499933 +0.5750831617975338,1.6883574685346552,1.6883574685346552,0.0,1.0,0.9799542482396361,1.4621872224237047,0.9769329734788432 +1.6055129933655836,4.3540018388028665,4.3540018388028665,1.0,1.0,1.6317415968418214,-1.1730570705156693,1.6525290631068907 +0.18575614094823878,1.914062038315004,0.18575614094823878,1.0,0.0,0.07846231370371805,-0.8743387637941407,1.1581724369056432 +2.8526550204176444,3.7677020286782965,3.7677020286782965,1.0,1.0,-0.5100665780639554,-0.7529070986984958,1.0109826202037262 +-0.22927084936947562,1.585740105684872,-0.22927084936947562,1.0,0.0,-1.3320764545832204,0.0859079843006369,0.756311849467254 +1.112046910994427,2.348153544851246,1.112046910994427,1.0,0.0,0.5225324293340186,1.560649865424032,0.8784546507236234 +-0.40937125848820266,0.7661086228602063,0.7661086228602063,1.0,1.0,-0.7381130109371242,-1.0612613878111627,1.0116337578278043 +-0.13202417896000235,0.15518488801931882,0.15518488801931882,0.0,1.0,-0.47560268899475566,2.1400130511392517,0.659599467588808 +-0.5374649716757006,-0.743737377737238,-0.743737377737238,1.0,1.0,-0.7556457265813252,1.1842374415315988,0.7198123243708144 +1.6193246864919695,3.0624965783067988,1.6193246864919695,0.0,0.0,-0.19293381821156227,0.5183580132231742,0.8901720986980047 +0.6976282242395744,2.6619729058618233,0.6976282242395744,1.0,0.0,-0.38582092826384895,0.592549906658855,0.8470067020651921 +3.181790533356257,4.865013189865508,4.865013189865508,1.0,1.0,-1.1079114208918794,-0.095529769337341,0.8128141293341892 +-1.0998464338646878,-0.8113633161538297,-0.8113633161538297,0.0,1.0,-1.626101585761986,0.19353770656185737,0.7016988376961136 +0.8509935193665692,2.2069647824301666,0.8509935193665692,0.0,0.0,-2.212505344912249,0.38567885998572865,0.6063166540311327 +0.15806657943334645,1.8758494881463568,0.15806657943334645,0.0,0.0,0.7249278683040877,-0.8691584326372417,1.3170038401079556 +1.0110603588873617,2.456779174039374,1.0110603588873617,1.0,0.0,0.01117300576571991,-1.0897753463730533,1.1802200487802235 +0.9627599165792753,1.5056364392619517,1.5056364392619517,0.0,1.0,-0.8470665254414588,-0.07656111846603154,0.853910290197589 +0.6063171262737737,0.23973787550630857,0.23973787550630857,0.0,1.0,-2.823351380527185,-0.39111719451008536,0.6029007455211904 +1.7407699509350805,2.7412800169170564,2.7412800169170564,0.0,1.0,1.4520123101327513,0.660583554448613,1.210840720728821 +-0.4849637617498538,2.812404292515472,-0.4849637617498538,1.0,0.0,0.3572832101872922,-0.10516267572281557,1.091148753310563 +0.9565459938286759,1.0155707684112014,0.9565459938286759,0.0,0.0,-0.31657089566990604,-0.8430340379746049,1.06517694037879 +0.26660651094418086,1.8501924276401518,1.8501924276401518,1.0,1.0,-0.5032643614342294,-0.45510935653962964,0.9681323568147671 +1.4131803234798104,1.7522107124417226,1.7522107124417226,0.0,1.0,-1.0166005727050904,0.6063219711995287,0.7450764784595189 +-0.14201792833621663,1.2786237678897319,1.2786237678897319,1.0,1.0,1.0069107361855276,0.9047668803528597,1.067871179891755 +1.7642024383326698,1.6918467900510739,1.7642024383326698,0.0,0.0,-0.8548570575845327,0.06769287696966876,0.8343307745671762 +-0.23487330517198224,1.4595126621110772,-0.23487330517198224,0.0,0.0,-0.22105265408831082,1.7919768509316991,0.731244751090729 +-0.663272581184607,0.4725476379191629,-0.663272581184607,0.0,0.0,-1.3283362034851751,-0.7444832601015984,0.8572765202596184 +-0.39392614434436535,0.6567989442973596,0.6567989442973596,0.0,1.0,-1.4946215220253776,0.6742365994742512,0.6702799658984337 +-0.09221580240922067,1.709718343451992,1.709718343451992,1.0,1.0,0.7023962228735602,0.6619841894875117,1.042041339898897 +0.25579010546771164,0.738905769277683,0.25579010546771164,1.0,0.0,-1.815896254829235,-0.9317646710949589,0.7997832301836123 +0.7333334197265412,1.9314248108456176,0.7333334197265412,0.0,0.0,-0.12744228887925116,-0.9469219811655137,1.1236135092937038 +2.365722390294864,3.7924705852012868,3.7924705852012868,0.0,1.0,0.17447253783418062,1.5654754821156092,0.8187906742850624 +0.5057687960968983,1.046212554230863,0.5057687960968983,0.0,0.0,-0.6689899729059512,0.49590059646111806,0.8120583481695942 +-0.001803840258782552,3.026793738691081,-0.001803840258782552,1.0,0.0,0.8987205164573033,0.4230868376596745,1.1233115655306414 +0.34459569166054077,1.586872115008107,0.34459569166054077,0.0,0.0,-0.5275407361755065,0.170428329844068,0.877154269007541 +1.3996184978207094,3.368972292962185,3.368972292962185,1.0,1.0,0.39764220584541854,-1.7950062207289024,1.4173364549664207 +1.3266725427735808,2.148439573618668,2.148439573618668,0.0,1.0,0.9017330151765709,-0.021424591198436954,1.2014874029641496 +3.3393443602809376,4.5371081417234915,4.5371081417234915,1.0,1.0,0.730893472275351,-0.4434310473575742,1.2370052673407304 +2.1820959024157056,2.124435118007338,2.124435118007338,1.0,1.0,-1.8799440541059236,-1.522562178922048,0.8627722877268728 +0.6094969836027129,2.5703213230807327,2.5703213230807327,1.0,1.0,0.720091943616049,-1.1287426231396032,1.3679725896501185 +3.4039838638582802,2.905080477690287,3.4039838638582802,0.0,0.0,-0.18087289231492454,0.02523290866996945,0.9608283377274166 +2.8459015236036844,5.131955512125595,2.8459015236036844,1.0,0.0,1.0617222186137412,-0.843959389487492,1.4034568224443171 +-0.44584316951810465,1.2031531301610197,1.2031531301610197,1.0,1.0,-0.45769759402894916,-1.4524357634553873,1.1346518294873345 +1.1268850168503435,-0.3589307947935232,1.1268850168503435,0.0,0.0,0.2688630391943755,0.04444947032859263,1.0482322639915524 +-1.349935115109048,-1.8355307321593302,-1.8355307321593302,0.0,1.0,-1.8108996947140383,0.5921346684608116,0.6369907535012646 +0.2562752640916222,-1.0090771896688446,-1.0090771896688446,0.0,1.0,-0.23911441556091953,0.6002461951192822,0.8712208175581764 +0.8405249596839097,1.2144953298097627,0.8405249596839097,0.0,0.0,-1.3151720528839725,-0.5499244028724565,0.8348144869386666 +2.076378803604396,1.9416320928633886,2.076378803604396,0.0,0.0,-1.6539208212307255,0.7289679632159576,0.6439531147388949 +1.3483535802385491,3.0074019757995707,3.0074019757995707,1.0,1.0,0.04635970121632901,0.006856535571474412,1.008277530779442 +-1.656744568906325,-1.7930037757315191,-1.7930037757315191,0.0,1.0,-1.2931661091151168,0.60389031184428,0.7052402397604217 +1.5858674357663878,3.8401851874911177,1.5858674357663878,1.0,0.0,1.1132611215101305,0.07676925354886861,1.2350813474233409 +1.4008122971887527,0.6292223829447336,1.4008122971887527,0.0,0.0,-1.4802073919720404,0.11605569431948269,0.7309210465344999 +0.03920301188036468,2.164771714880319,0.03920301188036468,1.0,0.0,-0.45469296758528344,0.7793118443804852,0.8123407612221831 +0.6501581285372755,0.16247636348202044,0.16247636348202044,0.0,1.0,-1.3516454016893364,-0.4003399037956552,0.810358858072989 +2.6600542915371324,3.6285460815177366,3.6285460815177366,1.0,1.0,0.3275660214985847,0.45394905688321185,0.9974241689279181 +0.3730605266739664,1.8061021908506574,1.8061021908506574,1.0,1.0,-0.07233403159422497,-0.7388192137804052,1.1011510873921662 +0.9882847670708479,2.523644855227223,2.523644855227223,1.0,1.0,-0.17810232962214428,-0.5778977608486396,1.0523904526903616 +1.2092974381782817,2.5877733206940827,2.5877733206940827,1.0,1.0,-1.0182636270834193,-0.6002536769012462,0.8926018324253039 +0.43004353354938685,4.73391099500863,4.73391099500863,0.0,1.0,2.3343896820243195,1.2077426335328905,1.3307151990858685 +0.24135968884332043,0.6007759888536104,0.6007759888536104,0.0,1.0,-1.6286996944192547,0.11630212697783966,0.7095067576305296 +-0.15681286568716224,-0.41956842510391923,-0.15681286568716224,0.0,0.0,-0.5541882394492595,0.8824112460415666,0.7841151967495105 +2.3862985432116854,6.266197832527126,2.3862985432116854,1.0,0.0,1.860107327529166,1.5086563628921572,1.1568757019067992 +1.783010957576178,2.2147978777171753,2.2147978777171753,0.0,1.0,0.14009681719883288,-1.9657747398136716,1.3811073078476737 +0.5896964568810252,1.439419355678063,1.439419355678063,1.0,1.0,1.196171628166297,-0.1648799969116103,1.3020843480935413 +2.592012609176548,5.351198014843742,5.351198014843742,1.0,1.0,0.7101820837184374,0.2890509244585324,1.1037117062113357 +1.0617870082834269,3.2974094069779536,3.2974094069779536,1.0,1.0,1.2412335311977098,-0.5907876737033556,1.4005497768631843 +2.057579483786997,3.2679709076887167,3.2679709076887167,0.0,1.0,1.5532094196395545,-0.3461119272487448,1.4370015317254634 +-0.2321274788946126,1.3718118508223833,-0.2321274788946126,0.0,0.0,0.09879484905297921,1.6664964646327696,0.7943623990517311 +0.019936182841244765,4.933586264888813,0.019936182841244765,1.0,0.0,0.800835500969027,-1.8629452564962703,1.5521000558651152 +0.862600558458816,2.8185338745673594,2.8185338745673594,1.0,1.0,0.7646819728277854,0.24272531744553594,1.1235885176540619 +1.4135078316445315,3.2998536783806665,1.4135078316445315,1.0,0.0,-0.31223214055761406,-1.1495693185216806,1.116265757607639 +2.5400669620258727,4.2037612688243176,4.2037612688243176,1.0,1.0,-0.2254358926287123,-0.45826912498504485,1.0239351455850552 +1.4130602057188955,0.4953234894003702,0.4953234894003702,0.0,1.0,-0.449265656043066,1.2768505244086046,0.7547409434507958 +1.7366097774587113,2.6401165555839996,1.7366097774587113,1.0,0.0,1.586280711841934,-1.0566955060884786,1.6092375063642734 +1.4193612677819614,1.8183128668444803,1.8183128668444803,1.0,1.0,1.4832160030144952,1.1594438057530772,1.130575313031615 +-0.6453084240372904,1.3460243748707617,1.3460243748707617,1.0,1.0,0.8615544900754812,-0.1381550000933026,1.2129242117832093 +1.047482771289249,3.4818240881209723,3.4818240881209723,1.0,1.0,2.403269813948587,-0.726826015562624,1.8034073814042388 +0.9708362014799995,1.2352791067624664,0.9708362014799995,0.0,0.0,-0.6846073351534799,0.7642546035441566,0.7775870672770893 +-0.33978281693519263,0.6960445440777854,0.6960445440777854,1.0,1.0,0.9327739128266438,0.3009052952592598,1.1519071824945457 +-0.7701835462165046,0.014431961238482185,0.014431961238482185,0.0,1.0,0.14980519953098895,-0.3470071941761765,1.085468964583632 +1.3157713334988617,5.1206721797544645,5.1206721797544645,1.0,1.0,-0.7377185477121752,-1.0985942164238753,1.0173949837365392 +1.2676890906119007,3.0456346340113125,3.0456346340113125,1.0,1.0,0.5516466189324829,-1.738175532866831,1.4492637280549434 +-0.8565958936138849,-0.48416186055216415,-0.48416186055216415,0.0,1.0,-0.6520963648613506,1.2779534600509086,0.7246168171041419 +0.936565486453687,1.6544137656450821,1.6544137656450821,1.0,1.0,-1.530546906009033,-1.0149323502965428,0.8573838777399664 +1.1592003035759597,2.913217140169732,2.913217140169732,0.0,1.0,-0.17207705285787858,-0.28720412485896185,1.0087028597478536 +0.04759776082401809,1.0153880624341203,1.0153880624341203,0.0,1.0,-0.9554890982478914,1.7100593314811918,0.6391560022835003 +1.734079484021763,3.6341647111863273,1.734079484021763,1.0,0.0,-0.5422374782910219,0.29246210920666177,0.858716186015968 +2.0593843583233116,2.1567790482379383,2.1567790482379383,0.0,1.0,0.28794687061846236,-0.30774375779191343,1.1093241297893168 +2.421568746730114,6.5443377272856,2.421568746730114,1.0,0.0,1.3225334884651005,-0.8204488466834969,1.4734020177180238 +0.598773769929992,1.6805587468674101,0.598773769929992,0.0,0.0,-0.9038153350788465,0.30717610397681666,0.797048712199536 +1.63247384495557,2.6524230122536934,1.63247384495557,0.0,0.0,-1.0176253121576542,1.734482859328787,0.6289537896656185 +-0.4650313139512241,-0.4481777336649848,-0.4650313139512241,1.0,0.0,-0.7653950039145827,0.07462018955021736,0.8485111706544384 +1.3196953615697273,0.8564732092057258,0.8564732092057258,0.0,1.0,-0.5223828284171997,-0.016131433839238898,0.9029782153494894 +0.22166392883384545,1.663074099843835,1.663074099843835,1.0,1.0,1.2613695464154824,1.1703767600928157,1.0797368945172727 +2.5175183901906095,3.8551347204261304,2.5175183901906095,0.0,0.0,0.7118591414923574,-0.987463629212361,1.337084333347031 +3.0910180700695546,5.135128618905241,3.0910180700695546,0.0,0.0,0.7047517365510229,-1.0531370648061142,1.3484029700610523 +-0.3622025377252953,-0.43699717007486016,-0.3622025377252953,0.0,0.0,-0.49171094947870053,-1.6967658061083473,1.1690280546188823 +-0.003253552044220287,2.14011227213072,-0.003253552044220287,0.0,0.0,0.4726105760925913,0.7969650189864166,0.9752878335738537 +2.439787369013672,4.496205791415817,4.496205791415817,1.0,1.0,1.3075861440893404,0.10139717049967835,1.2792930916733634 +-0.02811763944471002,1.9260077194060163,1.9260077194060163,0.0,1.0,-0.45012477925387145,-1.5700826798964387,1.15660321464892 +0.017934531205555326,2.18405851028196,0.017934531205555326,0.0,0.0,-0.3766620101167045,0.47123809545651885,0.8641420479501148 +-0.2575895227680327,1.2085841455602875,1.2085841455602875,0.0,1.0,-0.5678175483883725,0.7549246096034693,0.7970784279203146 +2.3176592281040107,3.1767618037155994,3.1767618037155994,1.0,1.0,0.08144497971585075,-0.9286236927395417,1.1683383782492187 +3.3845848089055046,4.394198369185241,3.3845848089055046,0.0,0.0,1.4063932721541608,1.0172249775897468,1.1373430767175792 +1.55199019542198,3.569971328620618,1.55199019542198,1.0,0.0,0.8668262669582207,0.01600292146947637,1.1864490032822743 +0.13619775537750023,1.9236875288834572,1.9236875288834572,1.0,1.0,1.3331838426955929,-0.6492597650602315,1.4391112467603475 +1.821946215912501,4.5162206066725235,4.5162206066725235,1.0,1.0,0.49471439782109655,-0.3947473878923243,1.1713477251859372 +-0.28278955890602986,1.1675266246447245,-0.28278955890602986,0.0,0.0,1.223952733502351,-0.25141134912827906,1.326444758360125 +1.2875297421820528,2.898116941846042,1.2875297421820528,1.0,0.0,0.22591105440469186,0.9126879477442101,0.9123596794634443 +1.510491140047102,3.9512634716122452,1.510491140047102,0.0,0.0,1.8299190452805012,-0.34774117801245163,1.5191409122328001 diff --git a/tests/r_ref/references.json.gz b/tests/r_ref/references.json.gz new file mode 100644 index 0000000..69f5b9d Binary files /dev/null and b/tests/r_ref/references.json.gz differ diff --git a/tests/r_ref/trim.csv b/tests/r_ref/trim.csv new file mode 100644 index 0000000..ad4157f --- /dev/null +++ b/tests/r_ref/trim.csv @@ -0,0 +1,2001 @@ +y0,y1,y,D,post,x,z,w +3.544986189333452,7.138612160171121,3.544986189333452,0.0,0.0,2.5,1.604251873335518,1.0937091535498134 +2.1798578655001557,4.004820520122666,4.004820520122666,0.0,1.0,2.8,-0.15743136926745557,1.3441248564450279 +4.154766360949178,8.110433785106016,4.154766360949178,0.0,0.0,3.1,1.322678553146439,1.1945053237808596 +3.154577189288491,7.432574789620531,7.432574789620531,0.0,1.0,3.3,-0.06779798064538915,1.4004306522432743 +-2.1941682802033613,-0.20352615399823243,-2.1941682802033613,1.0,0.0,0.1535379018519455,-0.4994061163409222,1.067473244193612 +0.19136144740137997,1.1582205368047729,1.1582205368047729,0.0,1.0,-0.6914023373674143,0.276191518042694,0.9077744035044197 +-1.2435907014525036,-1.8956679887628398,-1.8956679887628398,0.0,1.0,-1.349562264133814,0.059657758852003875,0.868557054509544 +-3.650736639181063,-5.740133617491755,-3.650736639181063,0.0,0.0,-3.183571366041252,-0.8579157424715288,0.7924977896205128 +-1.0201517955156918,-0.3432512530808213,-0.3432512530808213,0.0,1.0,-0.9470407000531846,-0.7597776266951562,0.9814479405887985 +-2.0745953717249765,0.07856554607565935,0.07856554607565935,0.0,1.0,-0.7617206724365843,-1.0645127349212573,1.03074228346702 +1.491674571688783,3.315643135385034,3.315643135385034,1.0,1.0,0.05895770408039034,2.3933425752809296,0.791806300528151 +4.022924087076907,6.738751370296915,6.738751370296915,1.0,1.0,0.3048914901866018,2.5970160189333042,0.795159581619636 +0.9104573972483391,2.9653804577297853,2.9653804577297853,0.0,1.0,0.3184698321716141,-0.33181230976584475,1.0671891338404194 +0.7929307600609552,0.7116345208202487,0.7116345208202487,0.0,1.0,-0.3469621246721117,0.41012568765102,0.9270861521376301 +-1.12571266957868,-1.6918899621197676,-1.12571266957868,0.0,0.0,-0.36701724856004303,-1.0383627107855655,1.069439357520975 +-0.2272944406914088,1.6219983129633535,1.6219983129633535,1.0,1.0,0.20148771877042956,-0.49233560479249455,1.0718459321990055 +-0.27401090957406393,3.732537956979196,3.732537956979196,1.0,1.0,0.133221787142032,-0.05968800399123335,1.0194782523404928 +-1.0057076447193485,-2.6730201623967824,-2.6730201623967824,0.0,1.0,-0.461979164724697,0.0887096044442935,0.9464199592196274 +0.08601467699735776,2.6105499464493693,0.08601467699735776,1.0,0.0,0.4054958911491078,-0.2640990112941003,1.069252162153397 +0.9588836565761159,4.155974083344949,4.155974083344949,1.0,1.0,0.20980706613760283,0.14462881649762105,1.006539112208843 +-0.19375967421885368,-0.1509128866073481,-0.19375967421885368,0.0,0.0,-0.6132369885745442,-0.003896339935717787,0.940885275129519 +1.7666085237934837,5.003996664629234,5.003996664629234,1.0,1.0,0.5055439897726144,1.554738455766567,0.9003970497093218 +-0.5207147611974515,0.7125701439232002,-0.5207147611974515,0.0,0.0,0.05183425450832031,-0.11728268977480506,1.0170555066917324 +-1.28321998412523,0.09804263094464905,-1.28321998412523,1.0,0.0,-0.23624833131908266,-0.26168507696862814,1.0025469124498938 +1.363047097271347,3.3688968984335714,3.3688968984335714,1.0,1.0,0.5314792322167294,1.2986217192993823,0.9261544656329811 +0.4428210653786309,0.03768089507844019,0.03768089507844019,0.0,1.0,-0.0030201598045083715,0.3766060444020042,0.9627489273685391 +2.5084688871552956,5.894322431482829,5.894322431482829,1.0,1.0,0.9880993532591923,0.7334610499439514,1.0257908030861704 +0.3716480034944525,2.394198830189123,0.3716480034944525,1.0,0.0,1.0341869460467783,-1.2244068045514103,1.2533993936696273 +0.4176240038618844,1.535694787049983,1.535694787049983,0.0,1.0,-0.12196175347982409,-0.6392387469055629,1.0530889466552842 +1.2239435269537156,3.7541162155752223,1.2239435269537156,1.0,0.0,0.40107427031106857,-0.07335732338807621,1.0485865971044577 +0.09735632953928705,0.19392753190829404,0.09735632953928705,0.0,0.0,-0.9424815989489723,0.9279386527318835,0.8294088796054009 +-0.5072624123483267,0.6067090237844263,0.6067090237844263,0.0,1.0,-0.43952335959036426,-0.879571820118163,1.0449874189403598 +-1.0869218594027048,1.276494445287266,1.276494445287266,1.0,1.0,0.12379461431303403,-0.9130896740053599,1.1092547892581757 +0.9558098567109199,2.325705352818137,0.9558098567109199,1.0,0.0,-0.08962168713318303,-0.5985488715653793,1.0522100045005274 +0.6636888503171514,2.3575229617860725,2.3575229617860725,0.0,1.0,-0.5785143458199171,-0.7784901758183109,1.020198874202933 +-0.8760948326100746,-2.9090742782963295,-2.9090742782963295,0.0,1.0,-1.8139142309646052,-0.7927879207994563,0.9029278482601161 +1.719912603692535,2.0635306492231837,2.0635306492231837,0.0,1.0,-0.36065843114454954,-0.028592028843070588,0.9673386478540164 +-1.03867637992699,-1.7208022994356698,-1.7208022994356698,0.0,1.0,-0.47488792808299213,-1.5633827049987272,1.1149945061626676 +2.182670636798865,3.9880308449930553,2.182670636798865,1.0,0.0,0.7205260775088267,1.6663179871442184,0.9097556873438548 +-1.8436740251838968,-3.273291764817125,-3.273291764817125,0.0,1.0,-0.8026427462715902,-0.5434787859934135,0.9744165512976902 +1.196782479644404,1.8721122929277314,1.196782479644404,1.0,0.0,0.13030574055084088,1.3100427353563027,0.8887194260898036 +-1.3420779748590048,-1.1802481877959492,-1.3420779748590048,0.0,0.0,-1.227719316510312,-1.0565849136425924,0.9830321628590374 +0.4641002791519825,0.6003086612780348,0.4641002791519825,0.0,0.0,-1.100913616178967,2.4348079911602336,0.7021753212733256 +1.5398800083292046,5.617210833272485,5.617210833272485,1.0,1.0,0.9898637153957501,0.4290283392090803,1.0576860366189615 +1.5869794608795795,6.412204231669106,6.412204231669106,1.0,1.0,0.159106365652961,0.9380923210113323,0.9250582268213857 +-0.11523151593992248,3.1511161535611736,-0.11523151593992248,1.0,0.0,-0.043398575128719565,-0.46086928610149713,1.0426307339503453 +0.513476267517341,0.08082235151709471,0.08082235151709471,0.0,1.0,-0.34139612117792634,1.6617614750545129,0.8184722717749788 +-3.059983493272062,-5.798742040849881,-5.798742040849881,0.0,1.0,-1.676435066781946,1.3511773460504157,0.7387754643967989 +3.248269400794836,4.822932247664268,4.822932247664268,1.0,1.0,1.353370215752224,1.4233956364422646,0.993021918599787 +0.8472717743463448,3.7686273728331083,0.8472717743463448,1.0,0.0,0.7500878290346253,0.5657825613232643,1.0186014171819864 +1.0353511750543039,3.407738507997154,1.0353511750543039,1.0,0.0,0.32649445189070697,-1.0847252712986037,1.1515650984844956 +1.5966376253376307,2.5504075623039557,1.5966376253376307,1.0,0.0,0.2475805873479138,0.3323904626506179,0.9915548745907956 +1.2599896566537754,3.292607877550043,3.292607877550043,1.0,1.0,0.592537534272946,-1.2446257260137705,1.2016748908532522 +-2.0045895209666016,0.0115696209565549,0.0115696209565549,1.0,1.0,0.11741641043489225,-1.4217481702246952,1.1663934399442217 +-0.7609695350854112,-1.0710518515688299,-1.0710518515688299,0.0,1.0,-0.49793284306036095,0.11407103430284005,0.9406347292249457 +-0.19387095606875748,2.7181659469681887,-0.19387095606875748,1.0,0.0,0.769126556831435,-0.40058666532298093,1.1240871928979563 +0.4542655992375808,0.7569778041398206,0.7569778041398206,0.0,1.0,0.35397291790377794,-0.6257797402477823,1.1029355045604874 +0.9600911426016144,0.11489521648846024,0.9600911426016144,0.0,0.0,-0.3780618680400369,1.8279424140094436,0.8020370876718753 +-3.028546564661582,-4.270284946361035,-4.270284946361035,0.0,1.0,-0.9172336077353371,-0.18111728319357143,0.9290324298324417 +0.43084451798881185,1.6087208133882425,0.43084451798881185,0.0,0.0,-0.11028521112268026,0.3094826705630283,0.95889203795451 +1.9791863101286566,5.49746627496849,1.9791863101286566,1.0,0.0,0.7898565482885911,0.998503681846463,0.9793514487785957 +0.5188738426143864,4.085251360723993,0.5188738426143864,1.0,0.0,0.6868724202561145,0.2804709862811645,1.0414772556366179 +3.614060843125494,6.350605526780752,3.614060843125494,1.0,0.0,2.0403316110672125,2.133376235396852,0.9907386901367555 +-0.15690155029721398,0.6717909350078233,-0.15690155029721398,1.0,0.0,0.012609481963355816,1.4618070210196266,0.8650917105565111 +-1.3638553249332557,-3.3490112509911714,-3.3490112509911714,0.0,1.0,-0.7380011302554221,-0.8894345820290105,1.0152585866076942 +1.4585911982882143,0.854621162242278,0.854621162242278,0.0,1.0,-0.43125024921304617,-0.6598793492587312,1.0231262695570116 +1.804886759819798,3.4004399320823735,1.804886759819798,0.0,0.0,-0.15887128229487035,-0.4584650758938876,1.0304126770808877 +-0.9987191537688247,-0.27418319684171244,-0.27418319684171244,0.0,1.0,-0.4320346576056819,-0.6413663745233413,1.0211538073758362 +-0.45330123421266594,-0.4488205947328308,-0.45330123421266594,0.0,0.0,-0.8553546283936669,0.2251257289495544,0.8975844792652832 +1.5091608404695065,4.161259461995795,1.5091608404695065,1.0,0.0,0.07525742212051631,0.6539696216187124,0.9437714785496056 +1.0095246622885954,3.4466836889649395,1.0095246622885954,1.0,0.0,0.24363747184990064,-0.42926589607452137,1.0696059790666417 +-0.4365215370663722,-1.5131919352601166,-0.4365215370663722,0.0,0.0,-0.7276339842573137,0.4700892294530955,0.8871223925358246 +-0.8592492405531723,-1.6987274337422167,-1.6987274337422167,0.0,1.0,-1.0338931062045233,0.21101046582885327,0.8829467754015574 +0.31639014671406807,1.8390571857038118,0.31639014671406807,0.0,0.0,0.16042124295949686,-0.15422806084901625,1.0319651843350535 +-0.37618781007425445,2.685972173511939,-0.37618781007425445,1.0,0.0,-0.1584996960933016,-0.6915526312105071,1.0547516047921757 +1.949712752277197,4.155315274414451,4.155315274414451,1.0,1.0,0.42153530353157687,-0.6859184083954769,1.1171104221425874 +0.14026420055081912,2.57949769071235,2.57949769071235,1.0,1.0,0.9980384312183438,-0.8497273061753519,1.202949639560567 +-0.08867972837514104,4.035135055647393,4.035135055647393,1.0,1.0,1.2282567673521732,-0.17973865815983894,1.1511938594697364 +0.24973914978611056,1.9674497056156048,0.24973914978611056,1.0,0.0,0.5029973357347368,0.3214968366984268,1.0183157631088113 +-1.2873905071418204,-3.0697916892716384,-3.0697916892716384,0.0,1.0,-1.4121147869768562,-1.6736234394703822,1.0264957993370678 +1.0986840062229006,5.21055517380757,1.0986840062229006,1.0,0.0,1.0315650358219481,0.6319664076598548,1.0407689998174117 +4.590679909500896,6.773210069133903,4.590679909500896,1.0,0.0,1.4035365083928732,1.153167476860705,1.0253529585835846 +0.14318963767106263,-0.761296697120384,-0.761296697120384,0.0,1.0,-1.1783449771298138,-0.49207712390433733,0.9336750763033134 +1.190968640258379,2.118249393329174,2.118249393329174,0.0,1.0,0.16200545609579878,0.33666198917394236,0.9826859870985588 +0.26045174630843515,0.6608088798559677,0.26045174630843515,0.0,0.0,-0.628810101115052,2.1430451013546854,0.7579138756974478 +1.9775256414177833,4.357170710167969,1.9775256414177833,1.0,0.0,0.5228474552014946,0.3860983156902496,1.0137688432569378 +-0.0001922091338171228,-0.05250858211079601,-0.0001922091338171228,0.0,0.0,-0.7018869034126014,-0.831305642358131,1.0130259823933756 +-1.1950410882197908,0.20124845954710335,-1.1950410882197908,1.0,0.0,1.0070468893100601,0.2824621319426346,1.075148160427968 +-0.8696799431460956,-2.3399676757241448,-0.8696799431460956,0.0,0.0,-1.8093854805330762,0.2676229702980383,0.8124500487878192 +0.9334865922034439,3.9009532441037065,3.9009532441037065,1.0,1.0,1.0715120157855904,-0.4589486281203027,1.1653786601641183 +0.05963690797309565,0.7961882502705717,0.05963690797309565,0.0,0.0,-0.4516344744220463,0.5166375911536374,0.9077128394092625 +0.8826946416715276,2.16132275473504,2.16132275473504,1.0,1.0,0.451313721122442,1.0574675930473216,0.9411851620391399 +-0.68715499111219,0.9104678748582417,0.9104678748582417,1.0,1.0,0.29908553738774596,-0.15180491186558434,1.0461210075284986 +2.143454933256173,5.973919146126187,2.143454933256173,1.0,0.0,2.033307970933208,1.122843801841815,1.0953198454402784 +-4.18883043448242,-4.311487599968469,-4.311487599968469,0.0,1.0,-2.5662732252866824,-1.2778907700763724,0.8791161550209895 +-2.5847273311223042,-3.2724081986926974,-2.5847273311223042,0.0,0.0,-0.8757011047337492,0.8812089720923283,0.8388771498893269 +0.16804492348603045,0.44323518505015175,0.16804492348603045,0.0,0.0,-0.7604721061351984,1.3280541368013374,0.8115148244014129 +-1.1802874490452164,-1.8441530712598815,-1.8441530712598815,0.0,1.0,-0.9106388397283133,-0.4577292806031736,0.9557193691746353 +0.9609711384597921,2.4014543231240433,2.4014543231240433,1.0,1.0,0.2747993309535125,0.8533794334994803,0.9437839455655398 +0.11231164189543727,-0.5318277236866331,0.11231164189543727,0.0,0.0,-0.7071716519892115,0.4013935626445041,0.895067162643185 +0.7583922951945345,2.3877644526427435,0.7583922951945345,1.0,0.0,0.1202412675318163,0.4087353333407856,0.9715627644089897 +2.3448999546437586,4.973927897658971,4.973927897658971,1.0,1.0,0.21537581885330975,1.2518702131342971,0.9015412868603638 +-0.9098328246740259,0.048910492819366436,-0.9098328246740259,0.0,0.0,-1.5668195371341485,-0.43884181529564115,0.8933312982879189 +3.37885202014422,6.186175837239263,6.186175837239263,1.0,1.0,1.9632568841051632,1.5995919617543797,1.0370358424376398 +2.788155338282926,4.389633886837011,2.788155338282926,1.0,0.0,0.26550094709507777,0.3136480411251405,0.9951968627307085 +1.963845991477462,3.046688841040931,1.963845991477462,0.0,0.0,0.5661992889100353,-0.1568425012830801,1.0749822813936862 +-0.9418023223463203,-2.273179392494666,-0.9418023223463203,0.0,0.0,-2.0465858240792585,-0.49822111071731856,0.8565552373648411 +-0.6506098542636075,2.998940955878649,2.998940955878649,1.0,1.0,1.4063979963939954,-1.9551527377717692,1.3995560419208142 +-0.12003634556499382,-0.7014538446582731,-0.7014538446582731,0.0,1.0,-0.18613844736555601,0.38725576899700376,0.9442735081076924 +2.094114249447613,7.1069572561612375,7.1069572561612375,1.0,1.0,2.5392756026780434,1.3684647774658512,1.124210579823339 +2.3689445795971036,5.511673194171224,2.3689445795971036,1.0,0.0,1.4155934119359164,-1.0736709940298101,1.282647678801472 +-0.26799854011608676,-0.10035076441370172,-0.10035076441370172,0.0,1.0,-1.4679034109354463,1.3861764177571163,0.7517075079640677 +1.0747816634520426,4.440489512829271,4.440489512829271,1.0,1.0,0.623038834540371,0.3991882691117239,1.0226374819210766 +3.1091849025422844,5.9421726006035716,3.1091849025422844,1.0,0.0,0.8947374610969269,0.17026300314486206,1.0751363016720166 +0.06944399665109735,2.7768079377333876,2.7768079377333876,1.0,1.0,0.3427659600262008,-0.08184739155321208,1.0433757136365847 +-0.29938992557649574,-0.5980305049834946,-0.5980305049834946,0.0,1.0,-0.986335203641469,-0.07274333145522564,0.9126898254967812 +1.9224529261805605,3.588758102270642,1.9224529261805605,0.0,0.0,-0.9780769245976398,1.2610635807632742,0.7993838380291373 +1.7235329229028895,4.735659031542619,4.735659031542619,1.0,1.0,0.23024234817288647,1.3492148943588145,0.8941361211377905 +-0.43175827266294275,0.8867630821838004,0.8867630821838004,0.0,1.0,-0.5003388528731284,0.22998415360790472,0.9295708038014414 +1.6662904897254736,3.6513336921291653,3.6513336921291653,1.0,1.0,0.4191824913980989,1.241020083686296,0.921102682025237 +0.6819640914444789,0.19793998117694556,0.19793998117694556,0.0,1.0,-0.6157643116719312,-1.1324344959373942,1.0530250461921316 +0.46594915379486523,2.124255188472536,2.124255188472536,1.0,1.0,0.7813162659993279,-0.35410945180361103,1.1202395784704693 +0.04521991110226742,0.07306001091159975,0.04521991110226742,0.0,0.0,-0.13590794870484815,-1.3192021149661506,1.1256148465458953 +-2.6428741909458684,-5.486281229036779,-5.486281229036779,0.0,1.0,-4.92843227909316,0.19488325878929721,0.5990971219928265 +-1.6440637261252349,-0.8250724389532766,-1.6440637261252349,0.0,0.0,-0.25426694753639006,-1.3692344533599794,1.1179501113128152 +0.8364785854674996,1.7538677187925666,1.7538677187925666,1.0,1.0,0.7935923521603429,-0.8642841387199144,1.180322432564327 +1.6586821357748522,6.358124422133613,1.6586821357748522,1.0,0.0,1.0103864527516322,-0.2944730099156118,1.139381927211338 +-0.7258271919174683,-0.28680142843009016,-0.28680142843009016,0.0,1.0,-1.1431000571934822,-1.5493858053146556,1.0414652072877584 +1.0828217545638774,5.170970992788824,5.170970992788824,1.0,1.0,0.6831581079353166,0.5025143543554217,1.0182285231056645 +0.6336086825143654,0.7991394586242264,0.6336086825143654,0.0,0.0,-0.7581210167459103,1.5434169996815332,0.7944114113268961 +0.8483557169738641,1.4579023399758744,1.4579023399758744,0.0,1.0,-1.1015327614216675,-0.3086686407298344,0.9237753061550634 +-0.26355440661391694,3.7572166861029785,3.7572166861029785,1.0,1.0,0.5818326336046372,-0.6355789347715997,1.1294617104992808 +2.5988871333458925,4.89960006174223,2.5988871333458925,1.0,0.0,1.6316117624239768,0.34604631070609954,1.1371857218352512 +-0.15479733930873377,2.4643701108138343,2.4643701108138343,0.0,1.0,-0.06423333511532583,-0.6665594666896321,1.0620835724267481 +-0.5105642258080423,1.2012773025474421,-0.5105642258080423,0.0,0.0,-0.9599993101995941,-1.4649994521252314,1.0517968782826974 +0.9113200850941786,0.6342163974607343,0.9113200850941786,0.0,0.0,-0.3420069867771102,0.2989834004044232,0.9379121053180923 +0.7536248704343953,3.7085200466844053,0.7536248704343953,1.0,0.0,0.9206852473656439,-0.5250589084345559,1.1555476825153415 +0.732627045601657,0.7006417580001932,0.7006417580001932,0.0,1.0,-1.2729845594971116,1.3603976650574237,0.7684819355039803 +-2.1421571004167657,-3.049134755557268,-2.1421571004167657,0.0,0.0,-0.9489426412223145,-1.3919246339882783,1.045294014336729 +1.3292870519475342,0.5312545821457646,1.3292870519475342,0.0,0.0,-0.5624413684048692,0.10015124750164964,0.9358881929737195 +2.2068674993707353,5.187145586047745,5.187145586047745,1.0,1.0,1.1190260019313834,1.6367873088492046,0.9495414162303354 +0.755505148319257,3.100233959410984,0.755505148319257,1.0,0.0,0.7843188353690438,1.3237789114903469,0.9474832620045642 +3.0522868866677486,8.654777130420996,3.0522868866677486,1.0,0.0,1.6897447808981019,-0.7423155760495087,1.2753313608339392 +-0.6505362662868618,-1.2226640157243684,-0.6505362662868618,0.0,0.0,-0.7051762072111558,-0.5729652930355611,0.9868659233128823 +1.4098585542494078,0.920757834681966,0.920757834681966,0.0,1.0,-0.39006347422390303,-0.29564301582265917,0.9906023903086733 +1.3040740522070835,6.050587324951689,1.3040740522070835,1.0,0.0,1.8382567759949873,-1.8918736599232915,1.4521032803517295 +1.4220457002063323,1.7514409620274152,1.7514409620274152,0.0,1.0,-0.8001523691156693,-0.5056594038698843,0.9709801084591609 +0.8104861521196147,3.3076227825653888,0.8104861521196147,0.0,0.0,-0.23114957451020246,0.8328712838350271,0.899063074862317 +-0.7204102291849235,-1.1730386582468464,-0.7204102291849235,0.0,0.0,-1.7818212384458263,-1.136332286934589,0.9374902744127412 +1.7094473506065238,3.4030356779555335,3.4030356779555335,0.0,1.0,-0.1103329327218298,0.4064945701356359,0.9496300889334126 +1.5644739584415062,3.73611492098268,1.5644739584415062,0.0,0.0,-0.1373439553000878,-0.6817311970341764,1.0559477703588207 +-2.2128279845620633,-2.6409670569158443,-2.6409670569158443,0.0,1.0,-1.7646406673813113,-0.6037201109696725,0.8903932538027864 +0.2362962155342823,1.5610444933611642,1.5610444933611642,0.0,1.0,-0.4799666241069267,0.9927223894786619,0.8630618677016639 +0.26045998793186664,1.9831613146169524,1.9831613146169524,1.0,1.0,-0.19251407753911404,-0.2826561098554328,1.009054953513323 +0.5499184895751345,1.4619229588036151,1.4619229588036151,1.0,1.0,-0.024396384757512952,0.3764058919453444,0.9607123603459528 +0.05588557822534401,2.0762613071609293,2.0762613071609293,1.0,1.0,1.4633080846508177,0.5523057698204306,1.0953787911971007 +0.48172708747945014,3.2180853020462705,3.2180853020462705,1.0,1.0,0.17462621009512308,-0.7185347765682105,1.0934262322791612 +2.059234985033457,5.303329157105628,2.059234985033457,1.0,0.0,0.7337541168879037,0.04440877896490137,1.0713660685788846 +2.0804684152798467,2.2630552661366847,2.2630552661366847,0.0,1.0,-0.7369557610870828,-0.43148266660272366,0.9699145448596226 +3.308897962140531,4.439858308315422,4.439858308315422,1.0,1.0,1.3248969752063497,-0.2509713952013588,1.1706824121643105 +0.5580587076142122,-0.8739230317311713,0.5580587076142122,0.0,0.0,-0.8045416368453253,0.42360173064279216,0.8844278530689197 +-2.195374858992034,-2.7861750596453527,-2.7861750596453527,0.0,1.0,-2.0869020367233238,0.619473113338448,0.762892983549247 +1.9758094187510293,4.588712059955902,1.9758094187510293,1.0,0.0,0.5679118073236298,0.5466954607448525,1.0021238869172306 +-0.8332248511455873,-2.0898710086948498,-2.0898710086948498,0.0,1.0,-0.33556614898413667,-0.358404683564131,1.0022864634378672 +-0.27633987152982575,0.4304642054065533,0.4304642054065533,1.0,1.0,0.4748479840822425,1.0629940318660334,0.9428815586895626 +0.39943213989952786,2.2028255357532607,0.39943213989952786,0.0,0.0,0.2399553181147062,1.001000173245997,0.9267193727514167 +-0.6141647302548523,-1.42065404388602,-0.6141647302548523,0.0,0.0,-0.37303670259107885,0.36286873428962874,0.9290520221866477 +-0.3183597050007281,-0.4013598243627975,-0.3183597050007281,0.0,0.0,-0.9663446358957034,0.048991480754637516,0.9034508123458015 +-1.011141804364546,-0.05182714148507017,-0.05182714148507017,0.0,1.0,-0.07658869978998684,0.39875037029629223,0.9535781396022559 +2.284933096281703,5.686406550155408,2.284933096281703,1.0,0.0,0.7706004927560848,1.1006709869797051,0.9675317390251145 +-0.16850454098221068,-0.5829396611840779,-0.5829396611840779,0.0,1.0,-1.0759256287338377,0.7622887756655066,0.8320843671811147 +1.1376008287993986,2.3831621357120527,2.3831621357120527,0.0,1.0,-0.463024827539756,0.6432325603725892,0.8952737524724814 +-1.489216835401265,-2.8973257989840935,-2.8973257989840935,0.0,1.0,-0.818886591380326,-2.2564786769987064,1.154606055797213 +2.1960218715315856,4.565765395843821,2.1960218715315856,1.0,0.0,1.809476948457896,-1.9055810177695858,1.4499162506945797 +0.520649468594649,3.9764053725654267,3.9764053725654267,1.0,1.0,1.8626327038765402,-0.3524552264588804,1.2479582215110214 +2.1791242106088906,5.667468822548188,5.667468822548188,1.0,1.0,1.1388629997055963,0.15702199631591687,1.1031658596235852 +-0.37748288674418295,1.0026629372179556,1.0026629372179556,0.0,1.0,-0.9789523943506289,1.1401874821899562,0.8090342815104176 +0.35177197051367537,-1.84799720401988,-1.84799720401988,0.0,1.0,-0.7151778141666089,-0.03859239877250496,0.9345795391910375 +-3.0100007238518507,-4.465341079756991,-4.465341079756991,0.0,1.0,-2.083927663534085,-0.26350943527281806,0.8335664775808523 +-1.3634707777029214,-3.939109408382338,-3.939109408382338,0.0,1.0,-0.35775018097676103,-0.14667971501873947,0.9791141481229795 +0.5621841155681334,0.9134137273753185,0.9134137273753185,1.0,1.0,-0.08673011442695334,-1.2073365562474945,1.1185806939994243 +2.3803710695005718,4.665781936893431,2.3803710695005718,0.0,0.0,-0.38660617286919075,0.7754987254575929,0.8902878070420166 +0.03026833066347856,0.6203209021154056,0.03026833066347856,0.0,0.0,-0.25208690361241315,-0.9942301875521713,1.0770376205036856 +-0.24164031628659444,2.407453613720437,2.407453613720437,1.0,1.0,0.4950306990120241,-1.4088740646430968,1.2097218732453685 +-0.5798396181037049,-1.0601726728149485,-0.5798396181037049,0.0,0.0,-0.3750547421656023,0.7930690458491262,0.8897521138619857 +-0.6355780387590569,2.80279087070007,2.80279087070007,1.0,1.0,0.9350501782316206,-0.8503457958606113,1.1954702198597793 +-0.3127609374192657,0.7940905124836374,0.7940905124836374,1.0,1.0,-0.03953456413384408,0.10236554967872374,0.9859101923064882 +1.1210734826557571,2.6657601348854754,2.6657601348854754,1.0,1.0,0.014175335182076377,0.01550334804205278,0.9998672075317028 +1.3485616467157548,2.587044514107736,1.3485616467157548,0.0,0.0,0.5326900553718305,-0.37124593797822364,1.0946050347417564 +1.604839865571802,1.3447949678378974,1.3447949678378974,0.0,1.0,0.2788733629996501,1.425735942246207,0.8916458468457082 +2.441462776047617,4.933974767401896,4.933974767401896,1.0,1.0,1.4907825809945396,-0.09842965472051275,1.1722455977217976 +0.9094222190465459,2.14957006796096,0.9094222190465459,1.0,0.0,1.4744175316443264,0.011721764104969007,1.1575081832942808 +-1.9536503147006887,-1.7412518344597276,-1.7412518344597276,0.0,1.0,-1.4116805342789878,-0.3041686497399273,0.8951614477266786 +0.26844716161542315,1.016140295330514,0.26844716161542315,1.0,0.0,0.3587187206525832,0.3018908699739571,1.0056989627211175 +2.0978671783108633,3.606263817208619,3.606263817208619,1.0,1.0,1.0059899450467833,1.3555822154600001,0.9656447876499418 +-0.626717130761899,1.8137045927519329,1.8137045927519329,1.0,1.0,-0.3145353020897751,0.7115444059831247,0.9024807029222556 +0.6438536111765394,-0.8889357563028648,0.6438536111765394,0.0,0.0,-0.6186673021198249,0.15616496896044493,0.9254425466143219 +-0.5240636668665732,-2.6953169077579116,-0.5240636668665732,0.0,0.0,-1.7748756387659474,-0.4374452504868738,0.8748148291680814 +2.614311633314412,3.3865962707170842,2.614311633314412,1.0,0.0,0.17763993939666597,0.05886562676147952,1.0119482480463222 +-0.22507189565965302,-1.1557454417588329,-1.1557454417588329,0.0,1.0,-0.6817572918456015,-1.2464969206555339,1.058099064590298 +0.7900155752620313,0.5538991542859384,0.7900155752620313,0.0,0.0,-0.8973892640345261,-0.0259576849312774,0.9165458754485266 +-0.4558507261784339,3.3003621496248936,3.3003621496248936,1.0,1.0,0.3670276205879709,-1.1038542304353804,1.1584561170967926 +-0.6855507761591377,0.5013264837265105,-0.6855507761591377,0.0,0.0,0.17145595848031667,-0.4365266301626637,1.062684505381376 +-1.297078335405946,-0.6966973813900994,-1.297078335405946,0.0,0.0,-0.27823042530090586,-0.11389506122939491,0.9837007575046481 +0.6058984806079681,-0.2072896284775031,0.6058984806079681,0.0,0.0,-0.6811550806273972,-0.8219669921040275,1.0141807980987771 +0.4557631389821476,-0.07459096931490783,0.4557631389821476,0.0,0.0,0.1969881709269715,-0.2765349276854103,1.0484913378544998 +-0.1902174571017502,1.8225318565998252,1.8225318565998252,0.0,1.0,-0.719207821986235,0.7695114848519999,0.8616794625322644 +0.4827719253292182,-0.458978321747862,0.4827719253292182,0.0,0.0,-0.8625735172962081,-0.5470749635513183,0.968942648250951 +-0.10968681940657465,-0.5270585211269649,-0.10968681940657465,1.0,0.0,-0.040267581856579214,0.2094540444562933,0.9753370624678597 +-2.1261984290218634,0.4932268486756348,0.4932268486756348,0.0,1.0,-0.5037461579601371,-0.43477169406205346,0.9931262863969846 +1.7282365880273818,2.3735027985817525,2.3735027985817525,0.0,1.0,-0.11872494001968288,0.6532502183556643,0.9257069937560481 +-2.923815907041452,-3.324865366129301,-2.923815907041452,0.0,0.0,-0.7955346445714709,1.1391220714022372,0.824098125681806 +1.0181075219090931,1.246493247719392,1.246493247719392,0.0,1.0,-0.022540944389758982,1.036507307504383,0.8995102547201743 +0.3341664346924125,2.765116669068896,2.765116669068896,0.0,1.0,-0.38580819981401837,0.9790986211648443,0.8724144492941903 +-0.8796563442374524,-0.46726078976573554,-0.8796563442374524,0.0,0.0,-0.49681468769118536,-0.7413582588781483,1.0247558172316285 +0.7200411027270117,2.998751072339484,0.7200411027270117,1.0,0.0,-0.32750607253654135,0.704378454969659,0.901956981190216 +-1.1050778448482852,1.4300534954276451,1.4300534954276451,1.0,1.0,-0.43846884137384157,-0.6066047891365297,1.0169557387940948 +0.9794013346740087,3.7354178620212126,3.7354178620212126,1.0,1.0,1.4103985493962643,-0.5866528311871232,1.2210426660626847 +0.26502477675611313,0.9140197488267885,0.9140197488267885,0.0,1.0,-0.17943990702050946,1.303016627218675,0.862219281805599 +3.2102151888949297,6.259477752070192,6.259477752070192,1.0,1.0,1.000859788019573,-0.3200996611941885,1.1412178080675721 +3.305115081868958,5.530359336351906,5.530359336351906,1.0,1.0,1.210575434051334,-0.43434090893118527,1.1787937080737738 +-0.5776141959031666,-2.7559609362766366,-2.7559609362766366,0.0,1.0,-1.5230799483281665,-0.17906542901595954,0.8742390291995075 +-2.00129486524641,-3.132972661758555,-3.132972661758555,0.0,1.0,-0.8544562124216745,-0.1118234179218683,0.9284272258516312 +-0.768892516088463,-2.7491725389900945,-2.7491725389900945,0.0,1.0,-0.348860526625393,-0.6394008744734875,1.0294802207144331 +1.019554621764344,3.422976351763789,1.019554621764344,1.0,0.0,1.3581744925424244,-0.29577441320288844,1.179858941906178 +2.0480988506102227,4.816117443759343,2.0480988506102227,1.0,0.0,0.8125913965147566,-1.0571914500363724,1.205601104721883 +0.4420774675553298,0.9007562913015941,0.9007562913015941,0.0,1.0,-0.14469595394350424,1.2524974299323752,0.8696022651262031 +0.7672101732209338,4.370280269352854,4.370280269352854,1.0,1.0,0.38562224389423294,0.41380522472827813,0.9971856695904012 +-0.34782837761909247,5.846040221098779,-0.34782837761909247,1.0,0.0,0.8217069088108071,-1.0162520779889288,1.201770515114808 +-2.0652316309396053,0.4428420631031904,0.4428420631031904,1.0,1.0,-0.1841741215190097,-1.8737787998326307,1.1840733290122047 +-1.7089392441721951,0.15621055410497098,0.15621055410497098,1.0,1.0,-0.10057551305242622,1.8953062723936567,0.8190679934049232 +0.3019486025595186,0.10770642147320486,0.3019486025595186,0.0,0.0,-0.6197517071626292,0.6170840742149204,0.8836594058049668 +0.02344423141742935,3.1199338376392776,3.1199338376392776,1.0,1.0,0.9741329105992564,-0.9856098246932365,1.2164956087930452 +-0.6224182942848443,-0.47320165417503884,-0.47320165417503884,0.0,1.0,-1.2407304923060303,0.3289099912128832,0.8547347873896128 +-0.991057535972852,-3.057540797467346,-0.991057535972852,0.0,0.0,-1.1355611286106901,-2.4196215784363284,1.137014588047089 +0.9426243408326771,4.302625940248818,4.302625940248818,1.0,1.0,0.7318282120305682,-1.2143345467243014,1.214844731807735 +0.8370471966471362,1.6930882171741284,1.6930882171741284,0.0,1.0,-0.5153603975881541,-0.7104415048555156,1.01969963733223 +0.7634301076618678,1.212835427411854,0.7634301076618678,0.0,0.0,0.015498629868216877,-0.05676368813592171,1.0072524040176185 +1.1687109729813652,4.273724412844174,1.1687109729813652,1.0,0.0,0.3059189822213772,-0.4108767468760849,1.074311050542321 +-0.08047280852903009,1.559397197093898,-0.08047280852903009,0.0,0.0,-0.42836797656882636,-0.14380835582485782,0.9719450956494975 +-1.7969264761609078,-0.7345352726325778,-1.7969264761609078,0.0,0.0,-1.5991017368591929,-0.4670805718120425,0.8929701578682651 +3.0791591365963407,6.374818796673784,3.0791591365963407,1.0,0.0,2.084646635971961,0.16582719663718362,1.2115274803530827 +-2.9314698693599186,-4.208406688801839,-4.208406688801839,0.0,1.0,-2.0318356210053374,-2.203831404310358,1.0173483427491132 +-0.9177357376432049,-0.35827934046002385,-0.9177357376432049,1.0,0.0,-0.062458943841968276,0.5804108120843645,0.9377358536110982 +0.03181994667468613,1.4339449552822154,0.03181994667468613,0.0,0.0,-0.26962677815985364,-1.720196640383711,1.1561054504731738 +1.915124413032032,7.845506518834548,7.845506518834548,1.0,1.0,1.5760395452376923,0.06864915547566756,1.1626932008802273 +-2.4819923779734347,-3.8903286555067558,-3.8903286555067558,0.0,1.0,-1.9771855251794674,-1.61879879508663,0.9647959285525255 +1.4321773296736606,4.739903433864954,1.4321773296736606,1.0,0.0,1.8353183367191004,-1.298024042429741,1.367978684967529 +0.6714540332335348,-1.4858788292190068,-1.4858788292190068,0.0,1.0,-1.6799579977658872,0.01986472831930175,0.8436797727054323 +2.232621790588947,2.2184473360509704,2.2184473360509704,0.0,1.0,0.023789521994714565,-0.8789909790858215,1.0944785612832704 +-1.667723211256348,-0.20399005340279142,-1.667723211256348,0.0,0.0,-0.3383928178120039,-1.2343759284173308,1.0937348542604788 +0.42125247232812146,2.144104849619354,0.42125247232812146,1.0,0.0,0.8267400643241777,-0.8236880790846612,1.1794436147313805 +0.6974663206358791,3.7320737310795273,3.7320737310795273,1.0,1.0,0.18063386328155756,-0.4186746300629236,1.061763122380153 +2.943001491681319,6.693915204851301,6.693915204851301,1.0,1.0,0.5406104846251922,0.272835746471895,1.0271392119607503 +-0.8453181824440167,-0.11170685952943696,-0.11170685952943696,0.0,1.0,-0.2081493141395594,-0.8354888727532401,1.064743532770925 +-0.5658477219502408,0.8599435119905623,-0.5658477219502408,1.0,0.0,-0.2509753325852279,-0.3100449329419019,1.0059244405260022 +2.48692024746296,5.571464715551228,5.571464715551228,1.0,1.0,0.5486463396050832,1.3702418164108763,0.9211249836172342 +0.38420711767586857,1.3975374866283896,0.38420711767586857,1.0,0.0,0.39407235898327964,-2.196792118204745,1.2957458142562892 +-0.7582829847905376,-1.0541149102912821,-0.7582829847905376,0.0,0.0,-1.5399502777435259,0.3563435831596179,0.8272656733015096 +-0.2014131616886003,-0.8361217942364263,-0.8361217942364263,0.0,1.0,-0.84155896697129,-0.04024513162770773,0.9229950720653226 +0.9427453687873959,0.6897447458713426,0.6897447458713426,0.0,1.0,-2.1075555941782804,2.1493685368253184,0.6533172630501916 +-1.3808183990775318,1.0024682983799553,1.0024682983799553,1.0,1.0,0.37802061695181716,-1.2027549340566424,1.1712570281422598 +1.1608184612951884,-0.1597516297099355,1.1608184612951884,0.0,0.0,-0.6198208521320576,3.0974181355458863,0.6895446003578165 +-1.3376463253817608,-0.5567676700957125,-1.3376463253817608,0.0,0.0,-0.527281322156887,0.4143903763999096,0.9101306031213389 +2.2631838711646544,6.0464432982330525,2.2631838711646544,1.0,0.0,0.383781778670952,0.4836083999516056,0.9900669992552007 +1.2974555213957897,1.8493653243174117,1.8493653243174117,0.0,1.0,-0.3645793068437925,-0.2494795965910006,0.9885560152817527 +0.30786300650106424,3.1871419673189334,3.1871419673189334,1.0,1.0,0.4600909760253413,-0.8313272762308843,1.137851488766795 +-1.1526788141563917,0.259633537130693,0.259633537130693,1.0,1.0,-0.03465297573347552,0.4552676111539394,0.9521886912952547 +-1.107724855125772,0.1676498956295842,0.1676498956295842,0.0,1.0,-1.1334518257598079,-0.6523538195804848,0.9530291381440754 +-0.5585631954266006,1.9641729971981592,-0.5585631954266006,1.0,0.0,0.4439226841226778,0.8191233017521966,0.9631750945365661 +-0.4114152852054918,0.08802067932141806,0.08802067932141806,0.0,1.0,-0.17113720703837249,-0.8972859975700953,1.0753163303167335 +0.43814930422367326,-0.7625135014532398,0.43814930422367326,0.0,0.0,-2.0025992113859736,0.944750236400661,0.7447289556061897 +-1.0037789226077227,1.5660085278979643,-1.0037789226077227,1.0,0.0,1.9048711333090929,0.8354410744259778,1.1128708255876776 +1.88504406029291,4.250602217996948,4.250602217996948,1.0,1.0,0.25773489763362784,1.0586899239095102,0.9230281905596097 +1.043108040651516,3.430855975424657,3.430855975424657,1.0,1.0,1.2194451956150834,-1.7558049877010218,1.3465220626668581 +1.8439048852185795,3.6019939392259492,3.6019939392259492,1.0,1.0,0.15099020651995365,0.7123351634356538,0.9454119735019966 +4.0503581558799695,6.813030482793943,6.813030482793943,1.0,1.0,1.3048860271031202,-0.8005253841524829,1.2343458345545404 +0.18987813344842386,2.4490677520680415,0.18987813344842386,1.0,0.0,1.325812755868557,-0.16550740806342895,1.1608262271855438 +-1.363147862422689,0.9074245562308271,-1.363147862422689,1.0,0.0,0.4441502261176029,0.07804069027580332,1.0372893886086056 +-0.052495539104279565,0.4941213868991825,-0.052495539104279565,0.0,0.0,-0.37785033164197407,-0.8910592361560413,1.0526606278364539 +0.11774460888635596,-1.116754519948454,-1.116754519948454,0.0,1.0,-0.7319104746209185,1.8539990616257176,0.7721387990327896 +1.3444588087693605,1.562420425850512,1.562420425850512,0.0,1.0,-1.2052621422746206,0.7509894364424061,0.8223204172500168 +1.168210301041289,2.6761881668481924,2.6761881668481924,1.0,1.0,0.4375139485862597,-0.055582456892244704,1.0505455918961213 +-0.7622574444764221,-2.21613365398866,-2.21613365398866,0.0,1.0,-1.688512053471639,-2.2602935248535143,1.058844423698409 +-0.983014619682555,-1.6884842985952428,-1.6884842985952428,0.0,1.0,-1.8248860302288326,0.45745195560208984,0.7959381488686268 +-1.7774445981448403,-2.00251665849369,-2.00251665849369,0.0,1.0,-0.5487279677142788,-0.07607025901745526,0.9538338626455544 +1.6100198172952864,4.121723635137171,4.121723635137171,0.0,1.0,0.17049713479474887,3.0927692333994483,0.7465988820727447 +-1.79400472336336,-1.5278421323917812,-1.79400472336336,0.0,0.0,-0.36378726886470736,-1.0678350993655483,1.0729424022637881 +-0.45601926231525336,2.854340659433481,2.854340659433481,1.0,1.0,0.3393615087893264,0.391059914603691,0.9948435000448442 +1.27463760013837,1.8678596903570592,1.8678596903570592,1.0,1.0,0.1527560673958645,0.969334070171116,0.9215872716518644 +0.9802280572627455,1.343464240667807,1.343464240667807,0.0,1.0,-1.0780569030112308,-1.2472028355701075,1.0170584549645538 +-1.7161791255483663,-0.47987331096441044,-0.47987331096441044,0.0,1.0,-1.1207821115258754,0.11112996418214426,0.8840946008174119 +-0.3203677677107149,2.1719905195713105,-0.3203677677107149,1.0,0.0,0.058844792473011255,-0.07607688727494645,1.0135835980068328 +-3.213587561325689,-4.3942968893841385,-3.213587561325689,0.0,0.0,-1.9476493495675413,-1.1958937073147846,0.9275806220591091 +-0.3446215985053066,0.5182455250216149,0.5182455250216149,0.0,1.0,-0.6762352388308784,-1.7817574641656346,1.116894674598684 +1.8521361953007314,6.31408693829282,6.31408693829282,1.0,1.0,1.6706472031896054,-0.7907590249110135,1.279079428639125 +1.539179253569323,0.9976366349148524,0.9976366349148524,0.0,1.0,-0.14884840796163856,-0.1873543483446112,1.0038580171001956 +-0.010042550333893285,0.5500181862033389,-0.010042550333893285,0.0,0.0,-0.8049487170763137,-0.06017407256252117,0.9282283919593425 +-0.42923585117886054,0.513371605881043,0.513371605881043,0.0,1.0,-0.4587904580828575,-0.5885916916871564,1.0130647308371705 +1.4912401456251283,4.75240863019627,4.75240863019627,1.0,1.0,0.40153739848899633,-0.9627789002450582,1.1461765108636726 +2.080496221259884,4.451067412517325,2.080496221259884,1.0,0.0,0.5207962430994839,0.42911159941062904,1.009210623484608 +0.7344505338745054,1.4693336273661224,1.4693336273661224,0.0,1.0,-0.39982497540283757,0.003768798947859302,0.9604442151446133 +-2.038817231575536,-4.666021331647856,-2.038817231575536,0.0,0.0,-2.9902963587744473,-0.46942065530568455,0.7771766774577148 +1.9731885634873967,0.546309570757582,1.9731885634873967,0.0,0.0,-0.6311212926453555,1.1731371626416496,0.83491459105153 +-1.1808025196207863,-1.6306734741874407,-1.1808025196207863,0.0,0.0,-0.5616277652251446,-0.7383627550267486,1.0178305994033048 +1.0203376327393485,0.20399782349524398,1.0203376327393485,0.0,0.0,-0.6751103806578317,1.4382326538883863,0.8095034018579017 +0.5563230207696759,-0.8598148514393229,-0.8598148514393229,0.0,1.0,-1.503164922983089,1.519566758623561,0.7391361288527399 +-2.2455367757393647,-1.8647270559047748,-1.8647270559047748,0.0,1.0,-1.1374787519429097,0.25258908726518514,0.870222124920245 +-0.8656909071706118,2.146893375682358,2.146893375682358,1.0,1.0,0.74438065829962,0.16688227016368,1.0594499293057538 +1.9358654853993813,3.712470179173084,3.712470179173084,1.0,1.0,0.9685764556948707,-0.34426793469995576,1.1402920787719903 +-0.6931094333404428,-2.3903904765484665,-2.3903904765484665,0.0,1.0,-2.259977993513971,-0.8999780488647037,0.8728426373199673 +-0.30186417356760464,-0.9101101121341776,-0.9101101121341776,0.0,1.0,-0.9919986605071074,0.6665786915638587,0.8471667476186919 +0.7967949915465575,3.190878616316609,3.190878616316609,1.0,1.0,1.0885761569348005,-1.5320480132056504,1.2996076575272872 +0.15207741620608883,1.6265757832612202,1.6265757832612202,1.0,1.0,0.4294080358390952,0.4180642765491803,1.0011350195767221 +-0.7776610725048737,-1.559343128533515,-1.559343128533515,0.0,1.0,-0.37624990029626304,0.2329895870612167,0.9408947932936657 +-0.8463016144152194,-0.18588370257967768,-0.18588370257967768,0.0,1.0,-0.7234624539407716,-0.04352082528949855,0.9342659269975202 +-0.1689230447640957,-0.7982284401884461,-0.7982284401884461,0.0,1.0,-0.07253987959233857,1.7852465049503654,0.8304574059718882 +-0.3668279966885053,-1.0534009324751992,-1.0534009324751992,0.0,1.0,-0.944800535352187,-0.7326385927120684,0.9790072859287865 +2.5856439505031403,5.053229749492936,5.053229749492936,1.0,1.0,0.5792553662572849,1.571616057272807,0.905528915392138 +0.8064351457111802,0.4322153288237044,0.4322153288237044,0.0,1.0,-0.9752983904448768,-0.1360445239435611,0.919499860500486 +0.7678084438301639,2.219506091460353,2.219506091460353,0.0,1.0,-0.482372721689887,1.076185888215667,0.8556825187132387 +-1.4261307971596326,-0.15565596561268458,-1.4261307971596326,0.0,0.0,-0.5133537138170651,-0.9144230777775322,1.0409220806967991 +-1.4961785459825339,0.550821366475542,0.550821366475542,1.0,1.0,0.42714677114802513,-0.8363976929991879,1.1346842817904907 +0.04652361867677879,1.6159842523217873,1.6159842523217873,0.0,1.0,-0.10129861434578488,1.0714604389030993,0.8893397857278416 +0.15581574642617335,-0.9383106594168473,-0.9383106594168473,0.0,1.0,-0.2336615272940592,-1.0615318098707165,1.0863104304855216 +1.648896401831753,1.8207425630675786,1.648896401831753,0.0,0.0,-1.4101032672547953,2.665577297491559,0.6652661741868329 +0.6052134032455131,2.709037289255348,0.6052134032455131,1.0,0.0,0.5695047953250375,-0.07263483167234965,1.0663205271739304 +1.2066429531804252,3.8839804031015017,3.8839804031015017,1.0,1.0,2.3259633896161103,-0.4061860086902902,1.314182684673539 +0.8205414259696816,2.3698661987865357,0.8205414259696816,1.0,0.0,0.22008723508757042,0.7924932054862914,0.9443668301671886 +0.6003186583402693,5.7036204038894,5.7036204038894,1.0,1.0,0.48102621818897634,0.10431768766222627,1.0383893939248148 +-0.9540957814194696,-0.5741872269935424,-0.5741872269935424,0.0,1.0,-1.433297915766511,-1.7977025214700078,1.0371125530895662 +0.20423948726503371,4.59306151891534,4.59306151891534,1.0,1.0,1.735187182508116,-0.4396024954701148,1.2429392874824319 +0.37143500865398477,0.7019566008899072,0.37143500865398477,0.0,0.0,-0.33681396888928716,1.1337205579664777,0.8632478332680599 +-0.542319872479711,-1.10189723167638,-1.10189723167638,0.0,1.0,-1.3109813749813706,-0.01790442693428456,0.8787035514275537 +-1.8263961282405974,-3.5071825155301846,-3.5071825155301846,0.0,1.0,-2.8066205287356154,0.1957593323659125,0.7406419372123881 +1.2198071604573066,2.1735155979166607,2.1735155979166607,0.0,1.0,-0.06751033665539084,0.3601856664171179,0.9581321179838287 +0.8232119972309608,3.299196475495026,3.299196475495026,1.0,1.0,-0.16391785451162313,0.26181041825090434,0.9583206710952562 +-1.6136677535494024,-0.905942721542629,-1.6136677535494024,0.0,0.0,-1.5438135729803646,-2.481374991700805,1.0982918858553405 +2.5705049212227324,6.225458123386746,2.5705049212227324,1.0,0.0,1.0865206844535964,1.252228770700119,0.9835657319881459 +5.025480033601946,8.056607762495188,5.025480033601946,1.0,0.0,1.694729001162558,2.5504988866728495,0.9179824661935969 +-1.4872678984237235,-1.5141465799425282,-1.4872678984237235,0.0,0.0,-0.6468588796902776,-0.5956057170017002,0.9948877957539178 +1.83187467845666,5.139636598589582,5.139636598589582,1.0,1.0,1.0882361831817051,-0.9969609601771396,1.231853214989601 +0.8050392250062155,4.051496320725314,4.051496320725314,1.0,1.0,0.5369155613341193,0.8988868926916264,0.964450149659637 +1.9929175498014935,4.8057470956808235,1.9929175498014935,1.0,0.0,0.6148094362556632,1.1028624752048342,0.9523665337039238 +0.04671751415752354,-1.0379319842162493,-1.0379319842162493,0.0,1.0,-1.1423637078452487,1.1862329504530162,0.7922647475392787 +0.767258126074275,3.1875665220932166,3.1875665220932166,1.0,1.0,0.2079679615979999,-1.6053980543759212,1.1988186356551074 +2.7151596210403293,8.187436154256822,2.7151596210403293,1.0,0.0,1.4798282040822255,1.2579795205781705,1.0224327824619208 +-1.5417991488553184,-2.4242206484099955,-2.4242206484099955,0.0,1.0,-1.375461494792115,0.8480849676404759,0.8006313730707234 +-1.2490928753391746,0.5522694117558864,-1.2490928753391746,0.0,0.0,-0.2520101186344381,0.65405144997681,0.9133773674798644 +1.2047309535497208,2.5776238456597556,1.2047309535497208,1.0,0.0,0.6758913133375065,1.3998138698138165,0.9301659613905017 +0.8378753656021778,1.340815821791444,0.8378753656021778,0.0,0.0,-0.9426503375553524,0.5260553368875001,0.8634057229937514 +1.1794504132531076,4.370581091318925,4.370581091318925,1.0,1.0,0.9108863651218664,-1.403772903435872,1.260446378474684 +1.2367951188731208,1.929200859678343,1.2367951188731208,1.0,0.0,0.39437399534193057,0.12361242612316499,1.0274460469123619 +-0.19404985274900455,-0.6395971896121351,-0.19404985274900455,1.0,0.0,0.09748153984525386,-0.440468037475774,1.055268205384524 +-2.2361499115819803,-2.677266852076078,-2.677266852076078,0.0,1.0,-2.5155400949966817,-0.8615271423206797,0.8475535166194132 +0.09848171415177254,2.99337287266842,0.09848171415177254,0.0,0.0,-0.1557014944526782,1.0784753394333915,0.8838943974411422 +-2.408804514880819,-2.7012743238443293,-2.7012743238443293,0.0,1.0,-1.453761946283242,-1.1190878274550908,0.967086426243679 +1.2049522325484339,3.0108823097770894,1.2049522325484339,1.0,0.0,1.1883592836890324,1.2294678012740021,0.9958975862261986 +0.14571865026445302,1.565790280730632,0.14571865026445302,1.0,0.0,0.6774997664856401,-1.3274916810552666,1.2220125671183477 +2.8208139653626447,6.2867702863218184,6.2867702863218184,1.0,1.0,1.8540658422979759,-1.2288623513555208,1.361099486878271 +-0.7742194600384518,2.23356459441964,-0.7742194600384518,1.0,0.0,0.16229955198539778,-1.3648520574352683,1.1649930961423856 +-2.3319660981204207,-2.8205946751864297,-2.8205946751864297,0.0,1.0,-0.24748059774752923,-1.3242852246534291,1.113691822435712 +0.09404100336477494,0.8393522458243298,0.8393522458243298,0.0,1.0,0.026234243538815767,0.46852467421464766,0.956734798902425 +2.276506895039168,4.73302553375765,2.276506895039168,1.0,0.0,0.8249812719282632,0.10652341810819436,1.0744896292786041 +1.7912519036214272,4.1798868439539385,1.7912519036214272,1.0,0.0,0.10725304048241127,0.2898837285495598,0.9819026904098603 +-1.9681305241650024,-2.8682745193753285,-1.9681305241650024,0.0,0.0,-0.9203426660809244,-2.127697730057182,1.128326437772593 +0.6482158259769394,2.3717766757290057,2.3717766757290057,1.0,1.0,0.361876483641226,0.8323592764588942,0.9540413360479907 +2.9482670011621943,4.892429349673948,4.892429349673948,1.0,1.0,1.9606856874750975,-0.10334548559269602,1.2292486355294068 +0.22459222835943948,0.7365641796143825,0.7365641796143825,0.0,1.0,-1.3943167230055793,-0.3032040036693341,0.896630642121943 +1.0551720780488716,1.981612205105747,1.981612205105747,1.0,1.0,0.6052603961551938,1.1986707778277836,0.9423853249837651 +-1.3410810337223724,-1.0483286938416074,-1.3410810337223724,0.0,0.0,-1.017925537682011,0.04834186590818745,0.8988611189607439 +0.21773519055654023,3.527902204935642,3.527902204935642,1.0,1.0,-0.17647208085502028,1.2190219700150131,0.8697500520659174 +2.2638232808281042,5.0717775413684665,2.2638232808281042,1.0,0.0,0.8988924416216918,-0.3144889149818189,1.1290066052257226 +-0.7193132163433982,-1.6325718792609463,-0.7193132163433982,0.0,0.0,-0.764376165356577,-0.2677924045847192,0.9515544427420506 +-1.9026826947287174,-2.9316539949940723,-2.9316539949940723,0.0,1.0,-1.0505157503255007,-1.236724752629813,1.0187953503166933 +2.0058750835456793,3.186356283937628,2.0058750835456793,1.0,0.0,1.2503058145850499,0.4031626699169266,1.0884060804069657 +-0.142304292392276,1.1222395908898168,-0.142304292392276,0.0,0.0,-0.5344856708545868,-0.6841125200756774,1.0150751862993652 +1.9414955351762604,4.118284170574475,1.9414955351762604,0.0,0.0,-0.043016674542862926,1.8068976085255066,0.8311114078535656 +-0.6202187469288479,0.0131219934353497,0.0131219934353497,0.0,1.0,-0.4664494914018325,0.12491028099435035,0.9425785912076997 +0.6098938787089615,-0.15999710292983504,-0.15999710292983504,0.0,1.0,-0.395612573441746,1.2564111447636992,0.8477221316566895 +0.6199798325078119,1.7593573103136744,1.7593573103136744,0.0,1.0,-0.485549151984226,0.34647647695023087,0.9201647371092808 +3.0409102783997666,5.388522909180993,3.0409102783997666,1.0,0.0,1.1056469365695416,-0.6141947525642046,1.1876590311320743 +-0.8137231753470939,-2.4617283546771116,-0.8137231753470939,0.0,0.0,-0.22246370112788486,0.5291115547690756,0.9275973544988358 +1.000078462732942,3.497799145234582,3.497799145234582,1.0,1.0,0.1227871759421298,0.37575435639955795,0.9750205629069179 +1.0215480546830553,-0.8029499333118617,1.0215480546830553,0.0,0.0,-0.3104197273225309,-0.06551557597789182,0.9758070418528693 +-2.9570298806350066,-3.1206331854143046,-2.9570298806350066,0.0,0.0,-1.6303565345469886,-1.1691654962475588,0.9549282198089726 +1.1886145736615696,4.564421271950749,1.1886145736615696,1.0,0.0,0.8194993944427579,-0.730660039802686,1.1676765777201275 +3.2786080699508418,5.890225085863427,5.890225085863427,1.0,1.0,1.134634498074765,-0.5376249173239086,1.1820213028531112 +-0.381781611879212,-0.17621685548332092,-0.17621685548332092,0.0,1.0,-0.7334284420448474,0.23841263474591645,0.9073889334835025 +0.6312132160712621,0.4653636336803235,0.6312132160712621,0.0,0.0,-0.5196800512359394,-1.3678566547895716,1.0885185685129413 +0.656132605039107,1.3767598807589643,1.3767598807589643,1.0,1.0,0.5090962343799417,1.8871159999489628,0.8712712067884635 +-0.6117060681546183,1.1673380447817228,1.1673380447817228,1.0,1.0,0.25576419757907215,-1.6377645664437674,1.2084673168505635 +-2.0362128730698212,-4.087463156153066,-2.0362128730698212,0.0,0.0,-1.782313305764505,0.15684090455339383,0.8237275713504214 +1.3070343973068805,3.8292665245948045,3.8292665245948045,1.0,1.0,0.6678321333125399,0.8932173993454778,0.9777135684849294 +0.011600157432356095,-0.1973213546205616,0.011600157432356095,0.0,0.0,-0.8372806550363441,0.2234363127751763,0.899360164535427 +1.608014951177059,3.4160103393586105,3.4160103393586105,1.0,1.0,0.8401646731653649,0.3200301966229595,1.0533899080413818 +1.5168767497853115,4.947782142546405,4.947782142546405,1.0,1.0,0.8381626228340673,-0.42259112342953753,1.1343676675998458 +0.8734814818758919,-0.7054681968581877,0.8734814818758919,0.0,0.0,0.20008982598694436,0.015335583107797613,1.018647150882862 +-0.2891832995120279,-1.1142652797550396,-0.2891832995120279,0.0,0.0,-1.539474401480683,-0.2589005043073249,0.8798028860568237 +-2.412296582155231,0.8191939813430895,0.8191939813430895,1.0,1.0,0.3317341178571075,-0.048269422849192924,1.038731600662785 +0.7754010813676836,-0.42820805791037064,0.7754010813676836,0.0,0.0,-0.43405698123256553,-0.3570590036233617,0.9923297697452514 +-1.0784104036365125,-0.6222140730140578,-0.6222140730140578,0.0,1.0,-0.5736898012757005,0.18487581072260723,0.9269491574989622 +1.0874633404695122,2.6675173994740646,1.0874633404695122,1.0,0.0,1.4600421031256483,-0.5720434762634753,1.225327993481477 +-2.2970846876101643,-2.4521152707055713,-2.2970846876101643,0.0,0.0,-0.6000166916116031,-0.007537906973011369,0.94247312141061 +-0.046865185079209226,-0.007427529097600805,-0.046865185079209226,0.0,0.0,0.27265326613938773,-0.09580851366404451,1.0375334130778167 +-1.214707478140703,-0.672183388101578,-0.672183388101578,0.0,1.0,-0.6930279545494487,-0.18228565638424465,0.9502081341390543 +-0.4248920860526981,2.2591919899796555,2.2591919899796555,0.0,1.0,-0.15237716642239332,-1.5374927048298843,1.148562951806953 +-0.7391631386383304,1.1225953085317981,-0.7391631386383304,1.0,0.0,0.4751808235253152,0.37106867869455434,1.0104655997516172 +-2.0415587907509236,-3.8793656653958166,-2.0415587907509236,0.0,0.0,-2.2869248733804235,-0.10030724267234598,0.8035934771816069 +1.2107326919447061,2.9089799732309087,1.2107326919447061,1.0,0.0,0.5295303017040843,-1.0739737591483955,1.1739221483949547 +-0.03838933952130397,3.1654187672231915,-0.03838933952130397,1.0,0.0,0.7156125141639877,-0.9606672433182204,1.1824966113906044 +-0.4380632727811875,-0.4532775550851538,-0.4380632727811875,0.0,0.0,-0.8663540317080474,1.052679379820449,0.8253866455576535 +-0.6538639312734269,-0.4407278346716341,-0.4407278346716341,0.0,1.0,-0.12286332189640649,-0.11468872003526383,0.9991828738434388 +-0.3985090709191883,4.213289568585701,-0.3985090709191883,1.0,0.0,0.8575891106480272,0.1891468565896594,1.069128922078388 +0.09188902658016024,0.29492424096599945,0.29492424096599945,0.0,1.0,-0.015210488476202953,-1.2550743755748583,1.1320004629075804 +1.1792573248215112,2.6109843925749816,2.6109843925749816,0.0,1.0,-0.5971436990692164,0.893519717392485,0.8615119588815197 +0.9358738247417353,3.070187137127854,3.070187137127854,1.0,1.0,0.6373321013914527,-0.1881150562631645,1.086047235786773 +-0.6762811273872976,1.9962276257101534,1.9962276257101534,0.0,1.0,-1.0740359448415935,-1.786406247544342,1.0738357272775643 +1.2674653494639085,2.3533287912765415,2.3533287912765415,0.0,1.0,-0.9718631013462687,0.19046710026543034,0.8902677487912323 +0.518377889786769,1.4683839250936321,1.4683839250936321,0.0,1.0,-0.4121980056465428,0.2088739435949449,0.9397821415161182 +-1.5035264962194892,-2.459106291846445,-1.5035264962194892,0.0,0.0,-0.5392392425139305,-0.6345276983165643,1.00957438957493 +-0.6929179277770614,0.9194184276862855,-0.6929179277770614,1.0,0.0,0.459157438640099,-1.8998788404033422,1.2660522921748028 +-0.9021204042188693,-1.7145492741627364,-1.7145492741627364,0.0,1.0,-0.9915261803399273,-0.9662335631987227,0.9974739341733091 +1.360252767670362,4.419149988215505,4.419149988215505,1.0,1.0,1.6388576301162359,0.09207825519966385,1.1672819628040132 +0.8106215432399141,2.955320945941021,2.955320945941021,1.0,1.0,-0.03288021415518084,-1.2176424560710168,1.1257801074516336 +0.8414009505716674,4.8580439344250514,4.8580439344250514,1.0,1.0,1.7646194587904291,-2.1156647078139974,1.474071671887154 +0.7355095297348613,1.9465042330075437,1.9465042330075437,0.0,1.0,-0.008909045626757428,0.45191373523097206,0.95496338639881 +-1.1871733731782066,-0.8688532596857056,-0.8688532596857056,0.0,1.0,-0.6956783703884999,-0.13903067574773192,0.945856162617208 +-1.5484162793609229,-0.8779816556231375,-1.5484162793609229,0.0,0.0,-0.11635276939806828,-0.06475808756685987,0.9948538190114046 +1.4582719395251598,1.61479206951013,1.4582719395251598,1.0,0.0,0.013793767357487262,-0.40195553875906137,1.042451270436389 +0.33369318646241336,1.4978445717725797,1.4978445717725797,1.0,1.0,0.26754508183343395,-0.631443068115454,1.094063575275832 +0.8522835746923798,4.9577664136576365,4.9577664136576365,1.0,1.0,0.6833372141147708,0.5134125153401439,1.0171376631251627 +2.059260234188389,3.9941010641184973,2.059260234188389,1.0,0.0,-0.02592141239853584,0.4774120218267848,0.9509123912721441 +1.2945112575395639,3.5908504232772187,1.2945112575395639,1.0,0.0,0.8536655947965246,0.7792062164176733,1.00747372776423 +0.3716031658415193,1.310774313011492,0.3716031658415193,0.0,0.0,-0.5553820023478677,-1.224129368753854,1.0691615430195702 +0.9364925711734242,3.0224004095093058,0.9364925711734242,0.0,0.0,-0.2778125606838229,-0.4724535411327084,1.0196547586041358 +-1.5992374410905241,-1.8696178566687893,-1.8696178566687893,0.0,1.0,-0.9178318888757764,-0.5527994635396987,0.9641549675863699 +-0.9975426637956376,-0.4985980031513879,-0.9975426637956376,0.0,0.0,-0.4359347414273646,0.3460839167940767,0.9247777266839153 +-0.20241755313151888,2.29552780944178,2.29552780944178,0.0,1.0,0.1374982902283465,1.5156695694699964,0.8712580059384296 +-0.5319835503543061,0.5341427701571286,0.5341427701571286,0.0,1.0,-0.9489576965341965,2.006519520998501,0.744123902978481 +-0.575562667852533,-1.6998867310293941,-1.6998867310293941,0.0,1.0,-1.7325411377931845,-1.4883849928956598,0.9758800355786686 +-0.23190711736935268,0.7738812249668772,-0.23190711736935268,0.0,0.0,-0.2450314502639085,-0.6198014994351357,1.0381881235853956 +0.5493588172997695,1.9973673898614148,0.5493588172997695,1.0,0.0,-0.20124261621560038,1.0103630440384257,0.8858917040626202 +-2.369553759212415,-2.7335832164532468,-2.7335832164532468,0.0,1.0,-1.0027961066893425,1.4141594111680318,0.7852952228897977 +0.8309757564951502,2.7152662786095347,2.7152662786095347,0.0,1.0,-0.15539619317433642,1.5439306811466211,0.8437216077529971 +1.5312242722040845,4.759146735065091,1.5312242722040845,1.0,0.0,1.1462743571823952,1.9166721205086785,0.9258530258361428 +-3.0545540161998566,-4.592749000720442,-4.592749000720442,0.0,1.0,-1.6222936431327433,-0.8869802762410551,0.9291070301971187 +1.8629997451086149,3.372760349947393,3.372760349947393,1.0,1.0,1.3708663909482646,-0.8995690246809013,1.2548845063834368 +-1.1477779102885215,1.3631213436628629,1.3631213436628629,1.0,1.0,0.16752177234532778,-0.7180299146448567,1.0925945279664702 +1.0411662903564323,0.9430805802825811,0.9430805802825811,0.0,1.0,-1.040334149463107,0.5520823025152115,0.8527902613974656 +-0.319292922414945,-0.9030884492039088,-0.319292922414945,0.0,0.0,-0.27267101119383513,-1.317746615904771,1.1101637871957102 +-1.4172200092476022,-2.3623325992157724,-2.3623325992157724,0.0,1.0,-2.4458768366284636,2.27449634166024,0.6237302362252203 +0.8374079656321832,2.0153805505770466,2.0153805505770466,0.0,1.0,-0.22422576310986886,-1.005947088005781,1.0813087710224052 +2.3370334386431155,2.841136466692911,2.841136466692911,0.0,1.0,-0.4310268308306742,1.703726210005196,0.8077721085767136 +1.583263609735877,1.189651955131195,1.583263609735877,0.0,0.0,-0.34634750553713256,0.1544418993643592,0.9511543369474628 +2.387597312553697,2.9610273261122435,2.387597312553697,0.0,0.0,-0.05642783271227004,-0.06464935552796743,1.000822490341396 +0.7700382856853818,0.7250178657753421,0.7700382856853818,0.0,0.0,-0.59292245915247,0.28496876531853454,0.9159540104991235 +-0.6340637595561629,-1.5837004287180876,-0.6340637595561629,0.0,0.0,-1.752239451611085,-0.22974258746643983,0.8587738298110942 +0.7095456661815975,4.5619966396145175,4.5619966396145175,1.0,1.0,1.2490793189125882,0.4239028320082676,1.0860178400625862 +1.5516438634463976,4.484107366710246,4.484107366710246,1.0,1.0,0.15320690998173597,1.8998351033419936,0.8397401171694822 +1.7342878597686753,1.920639350681833,1.920639350681833,0.0,1.0,-0.08187719939776349,-0.10480605010414298,1.0022955157418363 +-0.3113391653278126,0.5178596840102675,0.5178596840102675,0.0,1.0,-0.5889417351114756,1.0380065761843256,0.8498504967622829 +0.31049467871726827,0.8581833470551739,0.31049467871726827,0.0,0.0,-0.034543454868368725,-0.04264010287444032,1.0008099926676333 +2.6825502115706494,4.694653301821911,2.6825502115706494,1.0,0.0,1.6784701400484947,0.10793024401905138,1.1700587832047822 +-0.13670182064354464,0.6004131469660865,0.6004131469660865,0.0,1.0,0.1035278352552508,0.4922786792196137,0.9618708543205248 +-2.568906416249976,-5.3578074149026715,-2.568906416249976,0.0,0.0,-2.126641265972571,-0.607606705257669,0.859071214847618 +0.9024405194598851,2.269723440541073,0.9024405194598851,0.0,0.0,-0.3875470470104471,0.180752075042339,0.9447547469529496 +0.7379683004409314,3.8149879129518025,3.8149879129518025,1.0,1.0,1.1772187446621234,-0.06804389165791848,1.1326117665682638 +1.20025220887637,4.147245115866954,4.147245115866954,1.0,1.0,0.6233785149214671,0.08130620679042457,1.0557033537526566 +-1.2564638938776058,-2.209056411129378,-2.209056411129378,0.0,1.0,-1.1565138684449865,-0.4512757445394372,0.9319055483627111 +2.8316298612141417,6.907896752625135,2.8316298612141417,1.0,0.0,1.1639235535119652,0.5736119246675198,1.0608082980714861 +2.013211688810646,3.1067287484535915,3.1067287484535915,0.0,1.0,-0.4005859679375482,2.118411497327222,0.7773226634597953 +-1.328678382996713,0.09250005407471962,0.09250005407471962,0.0,1.0,-0.7396078011089764,0.7855212273850953,0.8585478161717464 +1.5269852024339599,4.154425857745669,4.154425857745669,1.0,1.0,1.30757778439018,1.1372285972503111,1.0171808403519524 +-0.1383807160117536,1.732284748062742,1.732284748062742,1.0,1.0,1.1631430688187188,0.3218408766495291,1.0877705332135623 +3.2621416168106387,4.970548551575973,4.970548551575973,1.0,1.0,1.5070173915757255,-0.3330398294716755,1.202022701176419 +1.406995426396643,1.8694087823131853,1.8694087823131853,1.0,1.0,0.6678847692217809,0.5326910823157129,1.013611168581201 +-2.5849142207428564,-3.69719321877192,-3.69719321877192,0.0,1.0,-1.6580773088216023,-0.28107993929731173,0.8713602897658609 +1.096773159204377,0.4196398369067976,1.096773159204377,0.0,0.0,-0.864066596608508,0.5593641350884827,0.8673236499646784 +1.69778315094584,6.606109876278106,6.606109876278106,1.0,1.0,1.8585816460874411,0.5537616665157258,1.1393774285876712 +3.1387460401524816,6.910789757792298,3.1387460401524816,1.0,0.0,1.9513906444081253,1.3388805483497135,1.0631657455119063 +2.528696307167796,1.4326622125156323,2.528696307167796,0.0,0.0,0.3474275735848446,0.019470968523617627,1.0333393656235101 +0.7990881420154827,3.2977278470034785,0.7990881420154827,1.0,0.0,0.03711562670603319,-0.28515763147177764,1.0327522498721247 +-2.0505203137326102,-4.046178771430733,-2.0505203137326102,0.0,0.0,-1.7512807618107855,-0.4153886764482275,0.8749494125396277 +0.22972693390120957,-0.043409006160613495,0.22972693390120957,0.0,0.0,-0.47122711197903433,-1.3718274041363931,1.0942399681008113 +1.825654326948423,3.044433043858726,3.044433043858726,1.0,1.0,-0.4570364031615446,2.548982325937344,0.740372476417692 +4.281189343940142,8.952313296676705,4.281189343940142,1.0,0.0,1.9484850531273499,0.11085447941716423,1.2017310480461065 +2.169564618802048,1.9104427581376338,2.169564618802048,0.0,0.0,0.21269691507728747,2.186434259377413,0.8208837834431374 +3.1534572686473723,6.46248729783678,6.46248729783678,1.0,1.0,1.1754951017616977,0.1342424064065085,1.1097394627557233 +0.23738637643421612,0.8294706354867752,0.8294706354867752,0.0,1.0,-0.5109345772320615,-0.4368886405176409,0.9926227527941607 +-3.443434357302913,-4.077981849326467,-4.077981849326467,0.0,1.0,-0.8628694145334488,-2.847288034900517,1.2195011260415385 +-0.18677679172519468,-0.29016257379050864,-0.29016257379050864,0.0,1.0,-0.5165097731366122,-1.3946219500781927,1.0917819934498953 +0.8589950621389993,2.6446303900460952,0.8589950621389993,1.0,0.0,0.41053130818877687,1.582370989538929,0.8894215528872477 +2.4887278236119075,6.527186259740039,2.4887278236119075,1.0,0.0,1.9081337592212526,1.6820710013773092,1.0228637340339246 +1.9917662848970552,3.777030578261931,3.777030578261931,1.0,1.0,0.39585696083925215,1.2140525886248985,0.921438205446862 +0.6396809155983144,2.7526469352745058,0.6396809155983144,1.0,0.0,-0.25013619653306707,0.903206175177839,0.8910682659921949 +1.107580503481736,2.8513308152895074,2.8513308152895074,1.0,1.0,0.22097138845962658,-0.29383521971081594,1.0528288252459785 +0.6515081238480496,2.0899923684861905,0.6515081238480496,1.0,0.0,-0.07153138748215997,-0.44706444515389854,1.038267341243887 +2.2359893030004336,4.0528883201866215,4.0528883201866215,1.0,1.0,0.5347011654181018,1.1546028070014984,0.9398921313758067 +0.9690194880248343,3.024609879662157,0.9690194880248343,1.0,0.0,0.3813246828292833,0.41340761858083785,0.9967968474991818 +1.1554632865209276,4.514893643067716,1.1554632865209276,1.0,0.0,0.536453912895367,-0.4344800273830977,1.101963285605035 +-1.3540517844458482,-1.9307789941664635,-1.3540517844458482,0.0,0.0,-0.8076052756637265,0.9256702509209287,0.8408621431009594 +-0.024823556080144527,0.009520647664969017,-0.024823556080144527,0.0,0.0,-1.1967057918080688,1.0289824985517815,0.8004599099701735 +2.259915585884901,3.3413413722115384,3.3413413722115384,1.0,1.0,0.19790613181098204,0.12624262475994996,1.007192090446251 +-2.0222053888857587,-1.0185094123368201,-1.0185094123368201,0.0,1.0,-0.5683863187840361,-1.620235794265841,1.1109160525572588 +0.18298155973461216,2.294952515900169,0.18298155973461216,1.0,0.0,0.5804049378366957,0.3421576894068142,1.0241108009772146 +0.10862307917070058,0.7502317311387346,0.10862307917070058,0.0,0.0,-0.10903757763686901,0.940463270662263,0.9003694635595526 +1.9259841947573513,3.5788845342807183,3.5788845342807183,1.0,1.0,0.8657633633264242,0.2849972759706753,1.0597961822459379 +2.122609873808223,8.322777213138707,8.322777213138707,1.0,1.0,2.854341036807,0.49509552673278423,1.266078782194539 +-0.8474461022762674,1.299408674840869,-0.8474461022762674,1.0,0.0,0.12224991312012219,-1.3672770871364772,1.160618090704838 +0.1555958646720563,-0.5791072498285856,-0.5791072498285856,0.0,1.0,-0.26618368137174,-0.3366536436749016,1.0070718847369735 +-1.785691418541972,-2.2651619307789366,-1.785691418541972,0.0,0.0,-1.5133929501555765,1.8641037716325137,0.7133738428684914 +0.6273638811115191,0.3127418145879463,0.3127418145879463,0.0,1.0,-1.2751732732233962,1.6910900688759862,0.7433217143705088 +-0.02895522637397968,-1.4243319951575928,-1.4243319951575928,0.0,1.0,-0.855260897509968,0.10964220356222198,0.9080186961609301 +2.0049117831712233,6.665314292091596,6.665314292091596,1.0,1.0,2.0209026508402816,-1.456045566065287,1.4158001123191066 +-1.9841277543312303,-3.714652735208421,-3.714652735208421,0.0,1.0,-2.8179659073864496,-0.482978521929526,0.7917585945069071 +-1.0525320108672727,1.2505929801500542,1.2505929801500542,0.0,1.0,-1.0440184758053475,-1.0672052825296197,1.0023213708913086 +1.2762346202847354,5.342291450557654,5.342291450557654,1.0,1.0,1.1634309229193105,-0.5498194622923206,1.1868764669033365 +0.8276827398083256,1.7320648722059044,1.7320648722059044,0.0,1.0,-0.11401944072600274,1.0597146364910366,0.8892530771943633 +-0.6910644812948807,-1.3597749209841852,-1.3597749209841852,0.0,1.0,-0.5612548097056532,-0.1508596308336473,0.9597912002779649 +1.8960237531202175,1.4267372450649547,1.8960237531202175,0.0,0.0,-0.4823203900333481,0.5040598514619603,0.9060706243559077 +0.15224921114925605,-0.0844902623983309,-0.0844902623983309,0.0,1.0,-1.2471766916790716,0.17889114540787315,0.8670949577330639 +2.2101664708709228,3.149590989326719,3.149590989326719,1.0,1.0,-0.04338241334766759,1.1830317476810963,0.8845808021281995 +-1.5885807687404003,-2.4350813192797878,-1.5885807687404003,0.0,0.0,-1.5887085853660206,-1.141841535675689,0.9562970380160566 +-0.07310884734212197,-0.04578967871110817,-0.04578967871110817,0.0,1.0,0.06268332725513898,1.9860801663110885,0.8250265726399687 +1.4536504506114654,4.298157360162936,4.298157360162936,1.0,1.0,0.48952326091811077,1.368142404303465,0.9158873389008372 +0.7524699645471692,3.41070110539547,0.7524699645471692,1.0,0.0,0.47912957918453414,-1.70248081188582,1.243787349896159 +-0.37896100059280724,-2.105158645244919,-2.105158645244919,0.0,1.0,-2.7760316984243234,1.5489702047959057,0.6488847296373873 +1.9777213482495473,2.5678640184436876,1.9777213482495473,0.0,0.0,0.07551965444396042,1.7751994439690602,0.843691832060071 +-1.183121478256358,-1.2936061808839399,-1.183121478256358,0.0,0.0,-0.5836608220073861,-1.2216370524043247,1.0658766680526373 +1.7116105705625166,4.3312152050913,4.3312152050913,0.0,1.0,-0.00028730872211754323,0.43845078464534365,0.9570747237472715 +-0.9477378510405337,-0.1798154604513882,-0.9477378510405337,0.0,0.0,-0.7153315942421525,0.4773574400715157,0.8875690982933258 +1.6604854876662785,2.7418447466656755,1.6604854876662785,1.0,0.0,1.2592319739604483,0.387233138655367,1.0911147537920212 +1.2024307027881753,4.556517951815864,1.2024307027881753,1.0,0.0,0.5729490110397039,-0.06536040188031939,1.0659121817920176 +-2.1902179565827096,-1.842174305977937,-1.842174305977937,0.0,1.0,-1.5482392838509544,-0.21392420978638016,0.8750874039309148 +-1.3184019221465624,-1.216593745041453,-1.216593745041453,0.0,1.0,-1.1565293659322704,-1.6210785099952794,1.047550848551897 +-0.7176866753864585,1.091619268741903,-0.7176866753864585,1.0,0.0,0.2696921964295322,-1.0494805745544526,1.1410139273802629 +1.7877986892423934,3.2257738861972944,1.7877986892423934,1.0,0.0,0.5802943397697671,-1.827479888824095,1.2722378327331982 +0.20450531254050713,2.8188042304584346,0.20450531254050713,1.0,0.0,0.326142099092098,-1.5659817613514821,1.2082975507702052 +1.0308411913491224,2.914107299153961,1.0308411913491224,1.0,0.0,0.2213581438788154,0.17920203911005952,1.0042245086620891 +1.8926762245928743,6.129686386381344,1.8926762245928743,1.0,0.0,1.2177361991398283,0.252317801736374,1.101355660614679 +2.1158106920702955,4.314021531101713,2.1158106920702955,1.0,0.0,0.39487666685509654,0.1564957855271378,1.0241244865580854 +2.8470733661855867,6.4725228612846815,2.8470733661855867,1.0,0.0,1.4114585889727989,0.26435689878396196,1.1215483310080916 +-1.6199627016099154,-4.700574033339642,-4.700574033339642,0.0,1.0,-2.3729779799536797,0.25322506328532374,0.769033840706921 +-1.5402362910247773,-0.38709300786962497,-1.5402362910247773,0.0,0.0,-0.4056560729574392,-1.776359593992725,1.1469088331311652 +1.199072341837645,2.0570284045242206,2.0570284045242206,0.0,1.0,0.08788875371338743,-0.3935663424928212,1.0493233308561032 +-0.3857540835311025,1.2428819419027104,-0.3857540835311025,1.0,0.0,-0.163560147479398,0.8498287404925514,0.903626752008115 +-1.2303642404693829,-1.7167311777104644,-1.2303642404693829,0.0,0.0,-1.6009802068007202,0.29907967114660905,0.8269541822966405 +-0.3130724137384164,0.30832549872692894,0.30832549872692894,0.0,1.0,-0.49307021936436046,0.7262318767934047,0.8852101455030549 +1.2926849511920921,4.493251852088967,1.2926849511920921,1.0,0.0,0.6666406257506785,0.09797164655269425,1.0585149104821627 +0.960366944344383,4.439294932378153,4.439294932378153,1.0,1.0,1.091521322124749,-0.6625105026077384,1.1917266030434073 +-1.8137514630085598,-2.579585623395782,-2.579585623395782,0.0,1.0,-1.270582091822517,0.39809074168831204,0.8463119235666063 +0.6760102022876866,2.6643259369787553,2.6643259369787553,0.0,1.0,-0.8521873854994775,0.28615170737593343,0.892406163949649 +-2.6970124410022986,-2.396999555678683,-2.396999555678683,0.0,1.0,-1.8997585702289381,1.0175048029516398,0.7469729266194722 +1.7808403056968842,5.2484293917341045,1.7808403056968842,1.0,0.0,0.30111294209976797,-1.0477126401768186,1.1444023758155932 +0.2539287636103752,0.9898681530294986,0.9898681530294986,0.0,1.0,-0.5046388620146645,1.1940770610357794,0.8437731566064945 +1.6156764800646684,4.1707134562699375,4.1707134562699375,1.0,1.0,1.58669268861336,0.10350985101301932,1.1598820092256352 +-0.19489202926727028,2.144945593515226,2.144945593515226,1.0,1.0,0.22982941301561494,-1.026918898350783,1.1339133949996787 +1.2650228608628975,3.47744258286787,3.47744258286787,1.0,1.0,0.250388601111357,-0.7100622762506463,1.100808695847162 +1.4513261746948434,2.823888216946976,2.823888216946976,0.0,1.0,0.02727412226721236,1.153991746242841,0.8934438738665638 +0.9076094440694129,0.4544381404659381,0.4544381404659381,1.0,1.0,0.06539538902854483,0.16330789862384806,0.9902565272747673 +3.16962703225147,0.9605491477678747,3.16962703225147,0.0,0.0,-1.1102670234834484,2.7064880871835735,0.6827165512320714 +0.3177679315531015,3.6833738552920234,3.6833738552920234,1.0,1.0,0.5426831734093611,-0.5269775066122381,1.1128964910373047 +0.7736042594881498,2.633160687825281,0.7736042594881498,1.0,0.0,1.4975988364549535,-0.25354428662735284,1.1913823985005347 +1.105494603241602,4.360422210752422,1.105494603241602,1.0,0.0,1.5232368044487092,0.5233161076303843,1.1051621537533898 +0.9168373439712167,3.3983831167870924,3.3983831167870924,1.0,1.0,0.7417880007146973,0.5561570320735687,1.018736462217837 +2.003431458170201,1.4107421979017842,1.4107421979017842,0.0,1.0,-1.09340386547634,2.0022473497754434,0.7337659858825124 +2.637718991805334,1.6516369255613166,2.637718991805334,0.0,0.0,-0.9867646634028131,1.0325259277909136,0.817152895432089 +1.525661989979774,0.20078107467304718,1.525661989979774,0.0,0.0,-0.4794219844079101,0.8691434466027922,0.8738412612541858 +-1.0982785702964053,1.362368385325442,1.362368385325442,1.0,1.0,0.7438259948862731,-1.1341867801229288,1.2065937142051923 +1.7041013251436157,5.471233787993363,1.7041013251436157,1.0,0.0,1.0047882723634345,0.1733279075447102,1.0867004948780805 +3.559843342582364,6.2910548172966525,6.2910548172966525,1.0,1.0,1.160431300627857,-0.37853058879185963,1.1663697984105672 +-2.0542263470553097,-2.972216564767884,-2.0542263470553097,0.0,0.0,-2.3117719295403414,1.6546173592845457,0.6725768298627928 +0.7467172296179196,2.8409105543938438,2.8409105543938438,1.0,1.0,1.1299798881633214,-0.9109852005367873,1.226416507816328 +0.24562285086984906,2.7222687252460087,0.24562285086984906,0.0,0.0,-0.1542661788530635,-0.6000242543600806,1.0455842368862083 +2.341885431882802,3.5442886845472716,3.5442886845472716,0.0,1.0,0.18677154347404645,0.6861150593792896,0.951291873249287 +-0.9278176664129768,-0.6074301296600457,-0.9278176664129768,0.0,0.0,-0.3610283823034362,0.29734635587279373,0.9362830224317034 +1.8450699188520177,0.12576135985478265,1.8450699188520177,0.0,0.0,-0.5357310250443275,0.35075337206030444,0.9151672534908084 +1.7814025050636184,5.809985223757614,1.7814025050636184,1.0,0.0,1.1441956265066007,1.0123795717393889,1.013268865827164 +0.6581464245732673,2.7284500843475032,2.7284500843475032,1.0,1.0,0.5222078468132532,-1.1865827818567,1.186347266908521 +2.177637136334834,5.997116854766153,5.997116854766153,1.0,1.0,0.2002172340998577,0.09472073278223453,1.0106054938953388 +-1.2421398875802905,-1.9266705320944002,-1.2421398875802905,0.0,0.0,-0.7944657987295094,-0.6232700551413773,0.9830261328874257 +-0.40579291014281654,1.3530071678262465,-0.40579291014281654,1.0,0.0,0.3696049468897207,-0.9127023595520932,1.1368152705589718 +-0.3277335316240557,1.474853378814144,-0.3277335316240557,1.0,0.0,1.1019642596205554,-1.2599394069643757,1.2664153704835717 +-3.415049369119447,-4.914120527676007,-3.415049369119447,0.0,0.0,-1.7672531900671637,-0.9763115616532797,0.9239529183166811 +-1.0642875688496523,1.5755788730403828,-1.0642875688496523,1.0,0.0,-0.2757376923474698,-0.1555093875959954,0.9880491549727508 +2.1150727831607634,5.762357794830726,2.1150727831607634,1.0,0.0,0.5036103424142143,-0.8725342235815963,1.1475330411856388 +1.158265100530305,1.6077486652403798,1.6077486652403798,0.0,1.0,-0.5552236407529261,-0.8410554446251989,1.0289955995272482 +1.7610851582671772,3.212449273728315,3.212449273728315,1.0,1.0,1.3033512126628721,-0.004657530908521953,1.1397408070936397 +0.581060167033535,2.065869687543099,0.581060167033535,1.0,0.0,0.9876331055239844,-1.0898448858085201,1.2309026956728901 +-0.02313357047681322,0.21943243147973637,0.21943243147973637,0.0,1.0,-0.29776236594990935,0.25540718018487,0.9461852026562856 +-0.3563957736331102,0.6955297656281477,-0.3563957736331102,1.0,0.0,-0.005307611773793022,-0.898613614204571,1.093442088798555 +0.6859893780874047,1.7371004030057977,1.7371004030057977,0.0,1.0,-0.058840116515561265,-0.2935794869727998,1.0237516184072997 +1.9410268815381622,6.007995492923087,1.9410268815381622,1.0,0.0,1.5524399243470406,-0.10208241356627665,1.179926600753147 +2.842306565595998,5.8505679194314535,2.842306565595998,1.0,0.0,1.6828495731100226,-0.04772765850906668,1.1889347321753714 +-0.5908499509825822,-0.3452267731160952,-0.5908499509825822,0.0,0.0,-1.4075344552725264,-0.29093929947777997,0.8943487174702932 +2.1947270349298846,2.8282425568459564,2.1947270349298846,1.0,0.0,0.6225076903552289,-0.7772398178319133,1.1502447557522104 +-1.9571710462780074,1.08891126061778,-1.9571710462780074,1.0,0.0,-0.1889575864775601,-0.6793869411139379,1.0502654434057392 +3.9345192676586906,6.6187898169400015,3.9345192676586906,1.0,0.0,1.7878418964007292,1.3703033615868188,1.0426378054964522 +-0.8859725343936601,-1.681443219980084,-0.8859725343936601,0.0,0.0,-1.385865418489767,-0.2492323604013321,0.8925584245333533 +3.1866916051228373,5.128530128639165,5.128530128639165,1.0,1.0,1.029982573420729,0.2330107838885968,1.082959075215171 +1.2255192644507373,5.305152051994806,1.2255192644507373,1.0,0.0,1.2979858179232804,0.7093946345309776,1.0606258074889896 +2.4161132233280105,7.358299443279087,7.358299443279087,1.0,1.0,2.675992437338346,-0.7921533666289529,1.4145544149340106 +-0.9996018950021623,0.6941462613260672,0.6941462613260672,0.0,1.0,-0.09751247503864331,-1.1744961224868589,1.1137117599855755 +1.003355004114943,3.032277196554151,1.003355004114943,1.0,0.0,1.0059728956083844,-0.9872994384442558,1.2205813155363228 +3.6405569000130686,6.8317167462114705,6.8317167462114705,1.0,1.0,1.8672532713905954,0.5960581987051606,1.135552716476268 +0.817213302960335,2.7433651253556466,0.817213302960335,1.0,0.0,0.8024743260871492,1.3611982469376205,0.9456598018668366 +0.48015810244398405,1.6331108649332355,1.6331108649332355,0.0,1.0,-0.11409474737383968,-0.08606683943499689,0.9972011333571852 +1.9852404371527348,4.8734010144627735,4.8734010144627735,1.0,1.0,1.2091956517694893,0.9014140730837463,1.0312567023236574 +-0.7973087933853767,-0.21998883221480536,-0.7973087933853767,1.0,0.0,0.23706674792010013,-0.31108052716534235,1.056344884895721 +-0.48169351224345824,-0.8527552657429638,-0.8527552657429638,0.0,1.0,-0.4976485412283583,0.20257116644478326,0.9323733347233243 +1.1594368055409403,2.9304345798720153,2.9304345798720153,1.0,1.0,-0.010528882528614657,-0.061408628653821615,1.0051009403357796 +-0.33035932322286454,1.9456722049879596,-0.33035932322286454,0.0,0.0,0.09382128840002141,-0.3841578284600854,1.0489586516181062 +-0.26947216317655537,1.408747575173521,-0.26947216317655537,1.0,0.0,-0.08892243595496185,-1.079136318979638,1.1040899139153757 +1.719167056850161,3.826863575894995,3.826863575894995,0.0,1.0,0.3442589784918116,0.24105968569555347,1.0103733634037353 +0.43832418805963214,3.5593026201464237,0.43832418805963214,1.0,0.0,0.27334810053844905,0.25329964362169743,1.0020068567385205 +-0.7605480525788392,-1.2980514391089113,-1.2980514391089113,0.0,1.0,-0.4307755753733378,-1.0550564900814392,1.0644179154390854 +1.7750425969400898,3.352826132246318,3.352826132246318,0.0,1.0,0.05409422506915414,0.7562931619254583,0.9321888149329057 +4.289226778372778,5.713771948006247,5.713771948006247,1.0,1.0,0.7725205101812156,1.3351306846717315,0.9452923658842075 +0.28728713667130323,0.018037210678713722,0.28728713667130323,0.0,0.0,-1.6455270144016578,0.0540785435715922,0.8436980949387138 +2.1908052736789134,2.038026738654114,2.1908052736789134,0.0,0.0,-0.18520395892672775,0.7123726464761041,0.9141526936999176 +1.160147136725878,1.5153542464017329,1.160147136725878,0.0,0.0,-0.025914304156349516,0.428750603674338,0.9555516218220661 +-2.314557953480463,-2.5435997410326894,-2.5435997410326894,0.0,1.0,-1.5924387807150084,-1.7029921059763906,1.0111166685363766 +0.4722706180013352,4.292213610038692,0.4722706180013352,1.0,0.0,0.3849080445932031,-0.4483598484324176,1.0868969368109562 +2.2433381259275245,3.7700159904449424,2.2433381259275245,1.0,0.0,1.6239541608758683,1.6306310966401631,0.9993325292813235 +-0.2006432441139272,2.848571409854576,2.848571409854576,1.0,1.0,0.6370291809001597,-0.10014104442072637,1.0765021365422285 +-1.4638956606650977,-2.0608059691591727,-2.0608059691591727,0.0,1.0,-1.3136576425561977,-0.06304315331672493,0.8824426757656517 +0.5611053933794677,2.3172961630364877,2.3172961630364877,1.0,1.0,0.5698748759134848,0.17160595021771108,1.0406306177073745 +-0.06174741124123115,2.353224226029261,2.353224226029261,1.0,1.0,0.21643815309035674,-0.9674803215063207,1.1256851218126562 +0.8961064227893596,2.9513478875409165,2.9513478875409165,1.0,1.0,0.8580517545057527,-0.8864316532433246,1.1905892358790102 +2.440751543352795,6.113206684021871,6.113206684021871,1.0,1.0,0.6256291723184955,0.9620906645041917,0.9669135872392596 +0.20001970929394358,2.3333838910652402,0.20001970929394358,0.0,0.0,-0.4107155992493323,-0.4417460341335335,1.0031078629115362 +2.628130789593664,7.548567326763073,7.548567326763073,1.0,1.0,2.1019233683383276,-0.9545723269683437,1.3575065115422658 +1.9656650364231782,4.2538152302604635,1.9656650364231782,1.0,0.0,0.4349268875431912,1.3349239101451729,0.9139314573849587 +2.0288906753340825,3.564515635342419,2.0288906753340825,1.0,0.0,0.13076419650020213,1.2354474192246654,0.8954146944429642 +1.2899234060988354,1.9360731965720748,1.9360731965720748,1.0,1.0,0.07290394541337981,0.47457074640119895,0.9606293080194039 +2.500915262525302,4.127334165406866,2.500915262525302,1.0,0.0,0.7778038890244097,0.3463961920632952,1.044084860014708 +-0.661063474817024,3.37971873306277,3.37971873306277,1.0,1.0,0.20382501215285223,-1.206682402763517,1.1514830744712015 +-1.2767068099243681,-3.35134963920843,-1.2767068099243681,0.0,0.0,-1.949723621743399,-0.31047389261808933,0.8488057029109922 +3.690450387326225,8.66463481562608,8.66463481562608,1.0,1.0,1.8458248499696313,1.5279339640564105,1.0322997585470348 +0.9780265408611347,1.7388968641279987,1.7388968641279987,1.0,1.0,0.15688497308288088,1.7290096850914187,0.8545224781109519 +0.6322396431424382,-0.4003072614327112,0.6322396431424382,0.0,0.0,-0.45389534712012825,0.7217866747927405,0.8890798724830739 +-1.7410015104002776,-2.4553335794199223,-1.7410015104002776,0.0,0.0,-1.378431577353269,-1.795130645355962,1.0425502831867237 +-0.1981389493757857,-0.8371530296180332,-0.8371530296180332,0.0,1.0,-1.1752154928288925,-0.1362438175619068,0.9013179774127151 +2.5045850676536254,4.457672905706692,4.457672905706692,1.0,1.0,1.0777637811393026,0.9751270198702476,1.0103165283152107 +-0.6878380235775223,-1.5583158667597854,-1.5583158667597854,0.0,1.0,-1.2464161314815143,0.9239099252065791,0.8049037244528754 +0.47837545806035836,4.004144744185813,0.47837545806035836,1.0,0.0,1.5226759825739724,-2.059269510981394,1.430743943717405 +-0.18979562610137002,2.702776201018301,2.702776201018301,1.0,1.0,1.0837929300425406,-0.4165529504053668,1.1618744289980882 +-0.8979407452844941,-0.1316377500658985,-0.1316377500658985,0.0,1.0,-1.1438781260149204,0.1449479578779983,0.8790771557718841 +2.9152174869241696,6.289367684003193,2.9152174869241696,1.0,0.0,1.897239225281175,1.7056205763382677,1.019346631699349 +-1.98965530546812,-2.24095288959286,-1.98965530546812,0.0,0.0,-1.0978065964498207,0.530400459881188,0.8497435289853351 +2.4750308463978965,5.159764402906705,2.4750308463978965,1.0,0.0,1.8274001112042642,0.09581473553966291,1.189054599964544 +2.032628536968054,4.668200067670177,2.032628536968054,1.0,0.0,0.9821356166887358,-1.018316375811585,1.2214579658964906 +-0.4957443464222523,-0.1425099025651475,-0.1425099025651475,0.0,1.0,-0.6345033906504094,2.2271266451954457,0.7511401674275665 +-1.9298068306604983,-1.3898954595893207,-1.3898954595893207,0.0,1.0,-1.8272752989564411,-0.7613343137582929,0.8988904599197256 +-1.7992279069539618,-2.75684019039842,-2.75684019039842,0.0,1.0,-0.7770936769854107,1.012391552246381,0.8361489407924622 +-0.4864670926959477,1.6799370006854712,-0.4864670926959477,0.0,0.0,0.10855037415852846,-1.1533857980484672,1.1345018061060834 +0.628628399271172,0.8173106999479852,0.628628399271172,0.0,0.0,0.28210234565288883,-1.1102336179679118,1.1493925625676629 +0.3356177542695904,1.8246713001280792,0.3356177542695904,0.0,0.0,-0.1378891982044597,-0.18284781732712171,1.0045059834621122 +-1.0820327434928534,0.6070829740706698,0.6070829740706698,1.0,1.0,0.0406412187768792,0.447412026998549,0.9601391272306419 +0.47078813444013223,0.504368498490472,0.47078813444013223,0.0,0.0,-1.4387101657998407,0.5620424241254136,0.8186691385449085 +-0.6467991420783409,-2.9616269240451336,-0.6467991420783409,0.0,0.0,-2.198155635064039,0.4584367653248349,0.7667003437717971 +-1.557537946818442,-0.9815991587404558,-0.9815991587404558,0.0,1.0,-1.4376537004755472,0.28072679457502153,0.8421155431546217 +1.258836939815462,4.536923277052104,4.536923277052104,1.0,1.0,1.6795632974112304,-1.906364441489555,1.431313814519177 +2.148555640154937,4.4013400261746805,4.4013400261746805,1.0,1.0,1.1989579544475948,0.4258714107588826,1.080375487549802 +1.2192516762185375,2.1192685461496885,1.2192516762185375,1.0,0.0,-0.2574262641641185,0.7003666459693514,0.9086645443694884 +0.5916898581933092,0.7101596681623324,0.5916898581933092,0.0,0.0,-1.3697401603570285,-0.246476804398832,0.893752546635305 +1.0952829999909657,5.278715704749685,1.0952829999909657,1.0,0.0,0.7606381550687527,-1.232380144626796,1.220550308971184 +0.5515415699904065,0.3734017929018906,0.5515415699904065,0.0,0.0,-0.1460861245237184,-0.615949059056163,1.0481076430447873 +-0.7760955824403637,1.9587040675597103,1.9587040675597103,1.0,1.0,0.0482462115844172,0.035893077829419015,1.001236076689346 +-0.03901825635359052,-1.0997491617742934,-0.03901825635359052,0.0,0.0,-1.1479127655777275,1.7752962122423224,0.746528938051769 +-0.7308906618649338,-0.17449904406853423,-0.7308906618649338,0.0,0.0,-0.6667923229271955,-0.26246597223756574,0.9603738578510612 +-3.203480234990255,-4.175730246977641,-3.203480234990255,0.0,0.0,-1.951359345036108,1.1761731104950568,0.7314303740005063 +0.9949353838188834,3.5671012191844227,0.9949353838188834,1.0,0.0,0.5884172796670886,-1.2499704715049083,1.201822043857536 +1.8789974415048598,3.5076815078636985,1.8789974415048598,1.0,0.0,0.9303690279571618,0.07677402026554055,1.0891085316830422 +1.089900032159664,2.78249630363949,2.78249630363949,1.0,1.0,1.5147126904900794,0.7183281567599203,1.0828954796825097 +0.19479243971612514,3.0395420355549243,3.0395420355549243,1.0,1.0,1.112435907330079,-0.9968289363025995,1.2348215730302938 +-3.0365785757125314,-2.3943295392259074,-2.3943295392259074,0.0,1.0,-2.0145520887732595,-1.3905610647484683,0.9395078521165194 +0.050000521895401384,2.6242419022899615,0.050000521895401384,1.0,0.0,0.5603342950653541,0.15480105687983187,1.0413868389448313 +0.4902524187554378,3.7871943836398265,0.4902524187554378,1.0,0.0,0.1941547788484959,1.119135213176933,0.9116509946691109 +-1.7895513587241898,-2.781028941614828,-2.781028941614828,1.0,1.0,-0.5275793649513318,-1.9604658713694794,1.154062874582285 +1.781666433267273,2.5402523364427796,2.5402523364427796,0.0,1.0,0.09287986788900261,-1.0754430819335126,1.1239309250286598 +-0.8823274305502553,2.4062860690367964,2.4062860690367964,1.0,1.0,0.5382232846794504,-0.9425965729380651,1.1596079638080783 +0.09192542365618245,0.8517638224930482,0.8517638224930482,0.0,1.0,-0.3527962824578152,-0.01666444028387254,0.9669454620721735 +-2.3357740413238166,-1.7656175889420394,-1.7656175889420394,0.0,1.0,-0.5841929468139807,0.6504413080882843,0.8838539671784831 +0.531201541109602,-2.297166691860488,0.531201541109602,0.0,0.0,-1.9930400082833715,-0.07144631663891626,0.8251753505058739 +2.265023547506393,4.470891980193103,2.265023547506393,1.0,0.0,0.5393063508000983,0.7814631454095565,0.9760751676879158 +3.0207717349220244,5.242862457802261,5.242862457802261,1.0,1.0,0.94662476449881,0.6247871719793091,1.0327072573833347 +1.2724309206341173,4.789391964124004,4.789391964124004,1.0,1.0,0.8857823011315379,-0.8604512496620135,1.1907976242609521 +-0.2947431354130587,0.7510939310487832,-0.2947431354130587,0.0,0.0,-0.7435519211669831,0.890715647985712,0.849228696853174 +0.6204229760609943,1.877888450129224,1.877888450129224,1.0,1.0,0.7968986323330356,1.057995909269629,0.9742281839318792 +0.38580491345866363,0.9217683771197198,0.9217683771197198,0.0,1.0,-0.3234289904088881,1.0657043623050877,0.8703034498022981 +0.6317278217506448,4.634738745073756,4.634738745073756,1.0,1.0,0.08223282479313476,-0.21328052569588082,1.0299923088202936 +1.6228128034046558,4.577181623880718,1.6228128034046558,1.0,0.0,-0.021944614734508813,-1.2173087217947867,1.1269742772492874 +-1.2688424605281508,-2.032086106438421,-1.2688424605281508,0.0,0.0,-0.18845148358846087,-0.3332984357951451,1.0145901067548753 +1.1471696474886637,4.626246599202574,4.626246599202574,1.0,1.0,0.7722038050742713,0.062316344229718074,1.0735691439438957 +1.8289853668255822,3.5526308401301936,1.8289853668255822,1.0,0.0,0.12107930761143836,-0.6067245001938333,1.0754943117545652 +-0.0070508385989478395,1.7625513653595852,1.7625513653595852,1.0,1.0,-0.013480431434065104,0.3888243660726694,0.9605680221589845 +1.337523755268494,2.4049294354982917,2.4049294354982917,1.0,1.0,0.7166519392711869,-0.717538001947679,1.1542133089574367 +-1.7729380363837008,-2.999577245484355,-2.999577245484355,0.0,1.0,-1.3303613429654462,-0.6219134354677419,0.9316064748494843 +2.527696680891752,2.7089250098515447,2.527696680891752,0.0,0.0,-0.14946747581001665,1.8810641565360555,0.8162348465874715 +2.132771838254012,6.039717866492378,2.132771838254012,1.0,0.0,3.46188810567071,-1.3281810597858854,1.6144703020775666 +2.565925928818447,4.684457138860493,4.684457138860493,1.0,1.0,1.157582941276007,0.7886491455539029,1.0375823874623549 +-0.8323983948825389,-2.8083074278414735,-2.8083074278414735,0.0,1.0,-0.18265690978183688,-0.41497455493078444,1.0235037239047609 +2.5141447781543462,6.1482547985048885,6.1482547985048885,1.0,1.0,1.495579359288684,0.168750398566611,1.1418878437932503 +-0.22558617208844187,0.45789197920106495,0.45789197920106495,0.0,1.0,-0.3108860459635108,0.013497050963770681,0.9680821692757187 +-1.0290572533354305,-2.2197219255624505,-1.0290572533354305,0.0,0.0,-1.950932214481803,0.1613922476082189,0.809585859844135 +-3.687800994512077,-4.006066760422821,-3.687800994512077,0.0,0.0,-2.1977890622047855,-1.1550762790876279,0.9009808477024974 +0.2120442721064436,1.791544527538451,0.2120442721064436,1.0,0.0,0.22167212595426386,0.9039926094138859,0.9340437051309745 +0.6807278035515616,2.198486546274312,0.6807278035515616,1.0,0.0,0.15243526286942533,-0.601190780252551,1.0782750671954786 +0.44527370367618935,4.088182029991194,4.088182029991194,1.0,1.0,1.5854732544783425,0.4375022131657883,1.1216458371765714 +-4.35746617318269,-4.460346972165524,-4.35746617318269,0.0,0.0,-1.6924706433909662,0.6141353452275323,0.7940089078352501 +-2.6813446369040186,-4.15303688989687,-2.6813446369040186,0.0,0.0,-1.6334468432676583,-0.1839196004573258,0.8650631886282452 +-1.5516034754126933,1.8865086896928536,-1.5516034754126933,1.0,0.0,0.4286700120492989,-0.1382248118719738,1.0583271301588368 +-0.7328117131768328,-0.7677434701162007,-0.7328117131768328,0.0,0.0,-1.403976477889089,-0.7096780558310998,0.932925583089689 +-0.430132801793507,0.3252284470881215,0.3252284470881215,0.0,1.0,-0.751051145299261,-0.44895578607979525,0.9702422116513016 +1.4969146976281351,3.618225231820304,1.4969146976281351,1.0,0.0,0.9142477323485174,-2.505539723396986,1.407730376695784 +2.154786197493503,5.253155869879941,2.154786197493503,1.0,0.0,1.0265147294525037,1.755735114853657,0.9296733058887369 +2.555634502924341,5.4916798906307935,5.4916798906307935,1.0,1.0,-0.3335221647188095,1.4729605904962444,0.8347289016572605 +0.843412822030037,-1.0384132343840227,0.843412822030037,0.0,0.0,-0.050910189498148996,1.322261049338042,0.8716937473889217 +-2.122985935028078,-1.8768791488173806,-2.122985935028078,0.0,0.0,-1.092740792766041,0.18169851659654107,0.8803427744455976 +-0.07469237790581007,0.45230525688267936,-0.07469237790581007,0.0,0.0,-0.8398726752623794,-1.0644679856287065,1.0227136451659251 +2.5257025977440444,5.835948973158768,5.835948973158768,1.0,1.0,1.5953383151393186,0.6978471602554049,1.0938998067568755 +1.9524059291498963,4.631006617787281,4.631006617787281,1.0,1.0,0.4674057935390937,-1.2172701506990449,1.1834898745521527 +2.316350621153317,6.0912708459043605,6.0912708459043605,1.0,1.0,0.9554060833236776,-1.1721699911324537,1.2370847547650319 +1.0148333683863462,5.1091426600392476,5.1091426600392476,1.0,1.0,1.0320819276085849,-2.422303047355313,1.4126092094809541 +0.8155403071101913,1.238396036880571,0.8155403071101913,0.0,0.0,-0.30060366061747334,2.556601002198533,0.7514726485336434 +1.7201692594505653,5.244372692446261,1.7201692594505653,1.0,0.0,1.0989293378651892,0.5350547624962809,1.058007537325477 +-0.5446716553293733,-1.6888432906963526,-0.5446716553293733,0.0,0.0,-0.5680221122836208,-0.19081187246515688,0.9629815521803862 +1.0684579235893539,1.1230257345879802,1.1230257345879802,0.0,1.0,-0.5398000730973685,0.5884356518529132,0.8933082503597617 +-0.7569186686554814,0.07696913203890587,0.07696913203890587,1.0,1.0,0.20354950656625004,-0.5601762478440983,1.079364644010236 +-0.5543585790364911,0.0697874618946373,0.0697874618946373,0.0,1.0,-0.44724725158738815,-0.43345384481895904,0.9986216101762748 +-0.33138913298690453,0.13796373703032583,0.13796373703032583,0.0,1.0,-0.24076437440599283,0.3219038189869302,0.9452868814175654 +1.29402638028448,2.53477857882193,2.53477857882193,1.0,1.0,1.0478351286893877,-0.4418137275434431,1.160632233616055 +-2.3224136215136637,-2.5286336749158638,-2.5286336749158638,0.0,1.0,-0.5211603127785434,-2.6583268500167967,1.2382717453934147 +0.04831656677971896,-0.5435122184443241,-0.5435122184443241,0.0,1.0,-1.790424055084535,0.05037571592940597,0.8318692706731355 +-0.39250579651603446,0.567632645219287,0.567632645219287,1.0,1.0,-0.10662648055163172,0.497807547477659,0.941347045114977 +0.5486493445493245,3.3604295074834036,3.3604295074834036,1.0,1.0,1.1349569627455451,-0.18231387893753667,1.1407969352339808 +1.236891176030333,2.460228990856515,2.460228990856515,1.0,1.0,0.8361754002114468,-0.6967404775952412,1.165664823011887 +0.7362582096278492,1.1862265740386047,1.1862265740386047,0.0,1.0,-0.29909796419144885,-1.8335165571560574,1.1658400023936522 +3.19663155961682,6.127140683351666,3.19663155961682,1.0,0.0,1.691557113809163,0.6462352008857148,1.1101911317782707 +1.3025297912510725,4.345457925732302,4.345457925732302,1.0,1.0,1.7276723806931478,-0.5759689751482548,1.2590583944312816 +1.6912767688184565,4.038658965296714,1.6912767688184565,1.0,0.0,0.17918975561311937,1.2425575087722236,0.8991217950555038 +-0.41452652461599904,-1.1074362622313265,-0.41452652461599904,0.0,0.0,-1.486273767649322,0.18209933438921141,0.8463372905786563 +0.7557240007821712,1.9605689415517853,0.7557240007821712,1.0,0.0,-0.026389678743757663,0.7837009333071306,0.9221853352962966 +0.4040084203228852,1.6450603722263546,1.6450603722263546,1.0,1.0,-0.26517934671711135,0.4677776613967118,0.9293259869437562 +0.5644638176158953,2.1759794403731023,2.1759794403731023,0.0,1.0,0.07241056400289815,0.18250116096362257,0.9890513182304357 +-0.7291056354787024,1.669120403003013,1.669120403003013,1.0,1.0,0.11534464782016782,0.09483038979768417,1.00205353141575 +3.117691339307382,6.417672259750221,6.417672259750221,1.0,1.0,0.466237757623641,0.6313414268930867,0.9836251821674111 +-0.20812924069499605,-0.11352847748392751,-0.20812924069499605,0.0,0.0,-0.7263121471261165,-0.3348332882441551,0.9616084903048604 +-2.18905023926986,-1.5738116869684524,-1.5738116869684524,0.0,1.0,-1.0348611369053609,0.25125857798361917,0.8793150986851431 +-2.0724641560316783,-4.8644952365216305,-4.8644952365216305,0.0,1.0,-1.8533295856183118,-0.41574000977671893,0.8660964888905305 +0.7458771356438783,2.6032551974694536,2.6032551974694536,1.0,1.0,-0.7947627319040653,1.6201608520703616,0.7854548058995054 +1.6150934659642053,4.3917514598543415,1.6150934659642053,1.0,0.0,1.5312773616386282,-0.26819959571681345,1.197154745185845 +0.8611482757139605,2.4758860689983018,2.4758860689983018,1.0,1.0,0.8856464842432946,-1.7660371874515977,1.3036504492379293 +-1.4005370648201363,-0.06136414302849702,-0.06136414302849702,1.0,1.0,0.04147744779361411,-0.4726891236523608,1.0527614424910998 +2.3585768292407403,6.056478779638201,2.3585768292407403,1.0,0.0,1.0889494069269559,0.3862050263473496,1.0728025587089676 +3.243698024812211,7.489524799171365,3.243698024812211,1.0,0.0,1.5983120781675921,-0.045138091264980695,1.1786208891276497 +1.0144213405306142,4.213433536591488,1.0144213405306142,1.0,0.0,1.2822696286847008,0.39173318989643346,1.0931392949853946 +2.224436167202165,4.880643246985413,4.880643246985413,1.0,1.0,0.8079242057398117,0.7108509246230205,1.0097545970490986 +-1.219911321702864,1.4210353879724948,1.4210353879724948,1.0,1.0,0.6841011445930486,-1.1369128937015736,1.1997358455208718 +2.7629938885901,5.743354767472902,5.743354767472902,1.0,1.0,1.3868164384376385,0.7612552093342368,1.0645542031214286 +3.626856832046165,6.002996663639579,3.626856832046165,1.0,0.0,1.1147648240331274,0.09080281341448072,1.1078223051627192 +0.46484960013799165,2.0307787009679563,2.0307787009679563,0.0,1.0,0.016693607955282432,-0.4162004332454441,1.044240058500076 +0.9894812824405248,3.575226972981654,3.575226972981654,1.0,1.0,0.6368209763283454,0.23611482143651613,1.040884274149442 +0.6439830256766048,3.919211995431609,0.6439830256766048,1.0,0.0,0.8191035309842294,-1.985701297265091,1.323765706243237 +2.57913145047944,5.85050951781178,2.57913145047944,1.0,0.0,1.0520219827637713,0.6503683340715369,1.0409829019614996 +1.1090543248035116,4.815687281507911,4.815687281507911,1.0,1.0,1.1313767541471806,-0.5473343787966103,1.1827841556700271 +0.10926685757518517,-1.7671227317613991,-1.7671227317613991,0.0,1.0,-0.7455365644721386,-0.18190777809100833,0.9451960821836772 +-0.25786810001648436,-0.6678075834530339,-0.25786810001648436,0.0,0.0,-0.8255114335542555,-0.35272654901011,0.9538217322597204 +-1.4539840835157964,-2.5098220795886568,-1.4539840835157964,0.0,0.0,-0.9507696994379833,0.08362746978137875,0.9017303801863232 +2.589262251990081,4.917533389835879,2.589262251990081,1.0,0.0,0.8697918236937162,0.6011499488592815,1.027228282831258 +1.8385945034242712,6.587514053570768,1.8385945034242712,1.0,0.0,1.8235268676911642,-0.2730793089186367,1.2332594424508698 +3.5444482935707207,5.284397218214709,3.5444482935707207,1.0,0.0,1.7057222189294419,0.03251498351366507,1.1821333425078473 +2.268662187657072,2.9261638529785787,2.268662187657072,0.0,0.0,-0.3705976132374388,0.2495641295731958,0.9398676849840507 +0.5611898405823402,2.3012890092001235,2.3012890092001235,0.0,1.0,-0.6174764924172897,1.2230975477162465,0.8318880487433593 +1.3316104058080611,4.652462680129416,1.3316104058080611,1.0,0.0,0.0017937085863497335,1.0356099493261424,0.9017827657937973 +2.200203167262096,4.952121990222291,4.952121990222291,1.0,1.0,0.21705061849640772,-0.4586150580610456,1.0699014780607257 +-0.09572787189380261,1.733840746390956,1.733840746390956,1.0,1.0,0.39835263651717795,-0.05129749536457174,1.0459912633690205 +-2.473700845902678,-1.6129711920963152,-2.473700845902678,0.0,0.0,-0.5439933670091939,-0.9083194829653318,1.0371044128512852 +1.4733547639247588,5.776248324479118,1.4733547639247588,1.0,0.0,0.8451201802711151,1.5471557868953916,0.9322040405187889 +-0.06566848528108649,-0.5625541331724865,-0.06566848528108649,0.0,0.0,-0.17923282557578232,1.082356399229405,0.881474749497702 +0.02558275152467218,-0.7096513548047351,0.02558275152467218,0.0,0.0,-0.07651049028314902,-0.40878586973490805,1.0337857379645423 +1.593464607091936,2.8039899419570657,1.593464607091936,0.0,0.0,-0.6616949964601118,1.1655566828704396,0.8329970585840986 +1.7965631089867968,6.129593091321174,6.129593091321174,1.0,1.0,1.1042130452436127,-0.8575665652455227,1.2167434190033495 +-0.36857318797528793,0.71666983659576,0.71666983659576,0.0,1.0,-0.1375788008706722,-1.7516166482337643,1.1751593844487007 +-0.09801248526743755,1.8342579661609628,1.8342579661609628,0.0,1.0,0.5377624636463603,-3.419995078903705,1.4855361550358468 +-0.35749344257641624,-1.3332811603807757,-1.3332811603807757,1.0,1.0,0.2770331822352973,1.6153851765312517,0.8747342094220988 +2.1104131356219575,2.6880595798591673,2.6880595798591673,0.0,1.0,-0.19572580070084347,1.3868383374146076,0.8536308711584772 +1.657186370107397,0.6688827377896115,0.6688827377896115,0.0,1.0,-1.1010516762037392,0.7563467056120454,0.8304896285708178 +2.1506382773540333,5.057852572066148,2.1506382773540333,1.0,0.0,1.355107806317299,0.4399771647610001,1.095831092706967 +0.7629557772840162,-0.6459872247281624,0.7629557772840162,0.0,0.0,-1.21245955807907,0.8203161333631601,0.8160516992147079 +-0.7351318129572835,2.4593951135923815,-0.7351318129572835,1.0,0.0,0.33149849830679473,0.41758131568162593,0.9914286634322718 +1.7329715366048948,2.4413727533002123,2.4413727533002123,1.0,1.0,0.538478237635638,-0.26476711999397207,1.083638690123916 +-1.1864641609669728,-0.6422580449615531,-0.6422580449615531,1.0,1.0,0.2641593698229861,-1.3584547529392283,1.176167665803718 +-1.9290452932450968,-3.1502573217054106,-1.9290452932450968,0.0,0.0,-1.7891912531848893,2.068258789307377,0.6799438863780518 +-3.4139524527513148,-2.582387490559779,-3.4139524527513148,0.0,0.0,-2.3623573206860935,-0.1347240319960376,0.8003042357911363 +-4.380000332535834,-4.575912686677667,-4.575912686677667,0.0,1.0,-0.7492147115887444,-0.6161287163919997,0.9867795683273267 +-1.1216211100674676,1.4650043878006582,1.4650043878006582,1.0,1.0,0.280487387162395,-0.9666965909751534,1.1328294009101032 +1.4763334346707544,4.977546046114923,1.4763334346707544,1.0,0.0,0.4821621830252554,-0.08653548351872574,1.0585179470848662 +1.3321525549488586,3.6119133273790096,1.3321525549488586,1.0,0.0,1.1614002014823974,-0.5102497484758715,1.1819492649349734 +-1.3569814354087324,-1.6726984316663178,-1.3569814354087324,0.0,0.0,-0.396672241335749,0.3278144207361241,0.9301134916880759 +-2.5076928871478836,-2.6622688100007474,-2.5076928871478836,0.0,0.0,-0.6987614201360905,-1.3227390174871732,1.0643856302858328 +-1.069232901947598,-1.5072780156807108,-1.069232901947598,0.0,0.0,-1.0081053007334049,1.568601035991223,0.7728497408722077 +-0.6478739347755588,-0.22663673181303173,-0.6478739347755588,0.0,0.0,-0.5802530356034364,-1.328060570787259,1.0776478544814827 +-0.8918700388028888,-0.6088330344238806,-0.8918700388028888,0.0,0.0,-0.6609517549184286,0.07723835273697206,0.928839788631435 +2.965285463279865,6.32483149297516,6.32483149297516,1.0,1.0,1.132176916899544,1.7003902537713602,0.9447628515834063 +-0.31674446557983016,-1.2136316370463736,-1.2136316370463736,0.0,1.0,-0.3991898317720107,1.3857591106016123,0.8365283279815713 +-0.6597833601323422,0.22321480619275852,-0.6597833601323422,0.0,0.0,-0.5823108629595611,-0.05962975803815353,0.9490743759305632 +1.0651647067165577,-0.2881708693399563,-0.2881708693399563,0.0,1.0,-0.18252475756746853,1.9566572144630985,0.8074144310800233 +1.3399895160247963,4.70458707560115,1.3399895160247963,1.0,0.0,0.9266159963091861,2.263540429116335,0.8748590920227974 +-0.12737033243901985,0.06271180373944285,-0.12737033243901985,0.0,0.0,-1.447293404209452,0.8470160137201178,0.7949858670408287 +-1.9996071615650268,-0.5870208991635983,-1.9996071615650268,0.0,0.0,-0.44354856927208275,-0.19895077909211104,0.9758369372489897 +0.9217335824789408,-1.7301131192813446,0.9217335824789408,0.0,0.0,-0.5786403579397662,0.004507638965277532,0.9433529334778049 +2.648683877112812,5.1793283358042626,5.1793283358042626,1.0,1.0,1.8505526610282022,-2.1400427018840698,1.490422350185094 +2.7401365797371913,5.001500631139554,5.001500631139554,1.0,1.0,0.5747731581527891,1.4455838734202875,0.9166027822338638 +2.061366666605251,6.3926327861618875,2.061366666605251,1.0,0.0,1.1226502943146541,-0.43589956083767845,1.1686567186493926 +-1.2501261702152702,2.0511600202247635,-1.2501261702152702,0.0,0.0,0.47446657153652494,-0.5984242736530287,1.1132560330512717 +0.5979127527164227,2.1805474801473346,2.1805474801473346,1.0,1.0,1.316403891451259,0.41993757510013824,1.0937877054339635 +-0.5479701082324322,-1.0423580982244567,-0.5479701082324322,1.0,0.0,0.2398136320165513,-0.9275923142592101,1.1238278648896018 +-0.7677774839310361,-0.6409786923155849,-0.6409786923155849,0.0,1.0,-1.9314617204049072,-0.7051969955453475,0.8845940210636107 +1.2405196214705583,4.792851335343718,4.792851335343718,1.0,1.0,0.7904626605625478,-1.2935178631264752,1.2317033544207827 +2.0528712264847977,4.627677229463464,2.0528712264847977,1.0,0.0,1.3023488087113426,1.420186283726955,0.9882854089437967 +-1.3372435647523067,-0.43245821965365844,-1.3372435647523067,0.0,0.0,-0.23499930191713153,-0.8448177194437292,1.0628796139810432 +1.1268893127593693,3.674983023557661,1.1268893127593693,1.0,0.0,1.5154878474548779,-1.2511294732676228,1.3187202148246941 +0.23616665388188074,0.29972731819660225,0.29972731819660225,0.0,1.0,-1.3763120782585554,-0.6456717959822302,0.929541311237702 +-1.5793453163763846,-3.219640883923015,-1.5793453163763846,0.0,0.0,-2.091066081974697,-0.07358818432348334,0.8173010336358213 +1.3655448570034663,2.0057361152834114,2.0057361152834114,0.0,1.0,-0.7343127922774333,-0.3958076412981702,0.9667160032841385 +0.3168248897668687,2.937662494039383,0.3168248897668687,1.0,0.0,0.11731023734627977,0.497667654747218,0.9626785324703933 +0.9289899209853091,3.41427629254203,3.41427629254203,1.0,1.0,1.561275713925639,-0.3600967225556311,1.211836822458902 +-1.4188752066158714,-3.6239083936048337,-1.4188752066158714,0.0,0.0,-2.571951475750928,-0.5728336816073236,0.8188029851706314 +1.4327415818973033,4.706364567687958,4.706364567687958,1.0,1.0,0.6599090989752625,1.2415030212427804,0.943499548956895 +-0.09616776899957172,0.2799412792464193,0.2799412792464193,0.0,1.0,0.07381719171408826,-1.5616796577811003,1.1776838668973104 +2.2016111348110092,3.8483346361982727,3.8483346361982727,1.0,1.0,-0.14687813350746595,0.4073684219626806,0.9460833031140973 +-1.6922238303443347,-1.2807720437107504,-1.2807720437107504,0.0,1.0,-0.7231674740398218,0.4786070109783377,0.8867630679772686 +-1.0680994455354895,-0.8450154822408077,-0.8450154822408077,0.0,1.0,-0.44273202757269486,-1.3429870503177601,1.0942021879939614 +-0.44255811252442867,1.325686925991913,1.325686925991913,0.0,1.0,-0.7824638064250143,-1.934428827659107,1.1220939097455334 +-1.8252711983820715,-1.2891444605927,-1.2891444605927,0.0,1.0,-0.9158127759598577,-0.26080799818158007,0.9365985992734767 +1.6808542264490165,4.999611542734024,1.6808542264490165,1.0,0.0,2.599159355745825,-1.567900250277783,1.5169564024044553 +1.3313145726292923,4.686677355537739,1.3313145726292923,1.0,0.0,0.9106880203097798,-0.6039102003970453,1.16353155258206 +0.6544516065866729,1.8159465901452738,1.8159465901452738,0.0,1.0,-1.09406181011356,-0.3938468502663776,0.9323737773980616 +2.0858965349326413,5.509072801983219,5.509072801983219,1.0,1.0,0.5517658365761086,0.63854755180413,0.9913593751171262 +1.9797347193548485,6.746513087385932,6.746513087385932,1.0,1.0,1.7658955050219929,0.23240938948465792,1.1657312955134622 +-0.17997428422377487,1.278244086288086,1.278244086288086,0.0,1.0,-0.21891498946516744,0.14107546869314658,0.9646412139280586 +-0.06293809328159172,0.2855766667025118,-0.06293809328159172,0.0,0.0,-0.14821679155259015,0.1291292278112239,0.9726464710395487 +0.4290286630345986,1.8706092448862797,1.8706092448862797,1.0,1.0,0.2538366554768735,-0.46124157779735053,1.0741265539121676 +0.21284829823415108,0.05746487010797577,0.05746487010797577,0.0,1.0,-0.7687650628332543,-2.3647851198218253,1.1730439132822437 +0.6790743817697473,3.095408706279029,0.6790743817697473,1.0,0.0,-0.03067204158031733,-0.5620086503338858,1.0545705905279583 +0.002652581140681176,-0.36231713243903896,0.002652581140681176,0.0,0.0,-0.8344090635554585,1.799094143066201,0.7684726383069096 +1.5105485929980362,5.058521413961323,5.058521413961323,1.0,1.0,0.7225369763211749,1.225199636385129,0.9509761781576288 +0.3404692208775607,3.259674473301369,3.259674473301369,1.0,1.0,0.02888786993856575,0.8646787725192405,0.9198183351248048 +0.46765281753176224,1.8794776391154593,1.8794776391154593,0.0,1.0,-0.24309362347376753,-1.2133725764520649,1.1018911107730085 +-1.2638302131075907,-2.0212579151462267,-2.0212579151462267,0.0,1.0,-1.1441486296965722,0.14632773976174787,0.8789320949077013 +2.1512310488245268,4.123774180072936,4.123774180072936,1.0,1.0,0.32684165591717335,0.6178359055936249,0.9713198862172795 +0.44576321128220964,3.807003282579193,3.807003282579193,1.0,1.0,1.2698940649823627,0.017084598522869917,1.1334668520485467 +-0.20811357127612995,0.4051387245218334,0.4051387245218334,0.0,1.0,-0.19940232312926576,-2.0065517733341385,1.198073613763609 +0.2864846859625727,-0.21299039468845193,0.2864846859625727,0.0,0.0,-0.6101725980255124,-1.2324197784126556,1.0642014631255092 +2.29204792416993,5.72547703153434,5.72547703153434,1.0,1.0,0.9304594919677249,0.7900137535452715,1.0141436622106565 +0.689735046809644,4.130820901687397,4.130820901687397,1.0,1.0,0.6575781335548708,-0.7824479228775044,1.1548871177448017 +-0.6138123512297113,-0.9798277062995733,-0.9798277062995733,0.0,1.0,-0.5063260031717157,-1.090674636263475,1.060175927093915 +0.6994348242340886,1.0470451884210332,1.0470451884210332,0.0,1.0,-0.2240050323841238,2.06598514331701,0.7953293148599987 +2.5939412271214883,3.6667060078487363,2.5939412271214883,1.0,0.0,1.0394372713843476,-0.5647217063967529,1.1739990330613672 +1.0844183798354754,3.67214093496191,3.67214093496191,1.0,1.0,0.666217271201808,-1.262554405214232,1.2127338214146184 +2.8779682443150545,5.365208275898207,2.8779682443150545,1.0,0.0,0.6496550622348755,1.573166084476279,0.9117849636107213 +-0.806479013629513,-1.4599034401872255,-1.4599034401872255,0.0,1.0,-1.0090249829321947,-1.03239058918297,1.0023392925101788 +0.1360324494068239,0.6445525693291863,0.1360324494068239,0.0,0.0,-0.8377446208968133,0.9773339791854805,0.8340116899389707 +2.8405684273323883,5.843007866041132,5.843007866041132,1.0,1.0,0.7466017674181357,-1.1171484114480863,1.2048740249729244 +-0.2971319911122786,-0.2057987885864503,-0.2971319911122786,1.0,0.0,0.06734150226367369,-2.0491609823132593,1.235715616046965 +-0.08052426101911658,3.7636972710371754,3.7636972710371754,1.0,1.0,0.9947537447979979,-0.13186376870758607,1.119253283001921 +-0.7830836450672098,-0.6711223608222269,-0.7830836450672098,0.0,0.0,-1.1640953601228479,-0.6097683069979678,0.9460756873960414 +-1.0792433651143867,-1.4222389126535822,-1.4222389126535822,0.0,1.0,-2.013063989962275,-0.47976708534708856,0.8578468512597905 +1.61056921295911,2.9059032607057285,2.9059032607057285,0.0,1.0,0.15197044188865344,1.7648624971010005,0.8510459083375354 +1.9690875394613285,2.5084185396494663,1.9690875394613285,0.0,0.0,0.28439601254411256,0.6623649781525328,0.9629084910581999 +2.4600858757014676,4.640593044879157,4.640593044879157,1.0,1.0,0.5665936551360662,2.2811549357383445,0.8424372265645624 +0.9574835085817374,1.4068857417577265,1.4068857417577265,0.0,1.0,-1.116021321711613,0.24510278572337899,0.8727445211139331 +1.1162226766579006,3.6526826565638455,3.6526826565638455,1.0,1.0,1.603924938319653,0.9622955795438245,1.0662661176142143 +1.3231439015044464,4.745874934655555,4.745874934655555,1.0,1.0,0.8485399098217097,0.06813544363909542,1.081166387309884 +3.953302331377843,9.76847400046127,9.76847400046127,1.0,1.0,3.04130635351366,1.2810229031873328,1.1924718588253858 +2.0430156438247247,6.478451956435262,2.0430156438247247,1.0,0.0,2.143515464237353,0.053362068460611166,1.2324639038610385 +-1.3987997893136686,-1.329940761169461,-1.329940761169461,0.0,1.0,-2.405023877102102,-0.31739316499036224,0.8115875013095879 +-2.2746659321147544,-2.837120591241874,-2.837120591241874,0.0,1.0,-1.3981107359343468,0.49691198165450545,0.8273708373082702 +0.4294463678122562,0.8601795900286373,0.8601795900286373,0.0,1.0,-0.5811609512253073,0.7165940547032023,0.8782925849538771 +0.9890025996501731,2.0118889881804116,0.9890025996501731,0.0,0.0,-0.6476234430083885,-1.0819350120000069,1.044388092922302 +0.21396982343428395,2.7142511346018203,2.7142511346018203,1.0,1.0,0.4246627138736908,1.2929579245563716,0.9168333830866395 +-0.22935027057379226,0.6206608986929791,0.6206608986929791,0.0,1.0,-0.8179661200940742,1.2713666426479915,0.8114493767628531 +1.7041341973979558,0.609721872507198,0.609721872507198,0.0,1.0,0.1552546258016502,1.094826072955062,0.9103217735035762 +1.2760031882897218,2.5917152228330584,2.5917152228330584,0.0,1.0,0.003929939840613709,0.5112887879029808,0.9505296867147583 +0.7253167780912518,2.8906421220656906,0.7253167780912518,1.0,0.0,1.1113761632536125,-1.4020942822253464,1.2857562215985936 +0.1624450673093484,-0.5961047762289732,0.1624450673093484,0.0,0.0,-0.3724033994489262,0.13161627441049611,0.9508471381339892 +0.7602573728157588,0.46156628556656454,0.7602573728157588,1.0,0.0,-0.20526650169042726,0.5953209336385329,0.92306212086389 +2.1723257453166367,4.613592114166674,2.1723257453166367,1.0,0.0,0.2140133636684358,0.14869934285173048,1.0065527782015835 +2.0711689258010217,3.1905597032981747,3.1905597032981747,1.0,1.0,0.09385168263772141,0.6011552592136833,0.9505349404481431 +-1.5500270779840968,-0.7704126737465764,-0.7704126737465764,0.0,1.0,-1.611520869417128,-0.8960487498307829,0.9309523244746797 +1.0741585475203608,3.1252534119683677,3.1252534119683677,1.0,1.0,0.5063393684672933,2.136709864503947,0.8495597119808802 +0.5986988701233216,4.927704983300111,4.927704983300111,1.0,1.0,1.3835911320919412,0.33238492352054094,1.1108445933019673 +1.065089827760664,3.463590408572844,3.463590408572844,1.0,1.0,0.5635072886611584,-1.099600856606981,1.1809400980241938 +0.293575903424649,-0.7103802336139546,-0.7103802336139546,0.0,1.0,-0.17528520425905825,2.8297060003239003,0.7404485554133207 +3.326666951418627,5.916400027282638,3.326666951418627,1.0,0.0,1.2099421057794688,0.653828098055519,1.0571867819368261 +0.5104179342225279,2.1918012283540413,2.1918012283540413,1.0,1.0,0.4917681995391223,2.021644337444002,0.8581403508517433 +3.0234157762994727,4.152423902517409,3.0234157762994727,1.0,0.0,0.6161258867813779,-1.317250999057407,1.213292439354542 +1.7221400730556802,2.6015308258590513,2.6015308258590513,1.0,1.0,-0.21242426079349852,2.772445857470542,0.7419399182319815 +-0.7737931416705026,0.2901574103751051,0.2901574103751051,0.0,1.0,-1.0519130404619745,-0.39509343810727116,0.9364286384807736 +0.03182891563751171,1.0547138933759381,1.0547138933759381,0.0,1.0,-0.5276321853436362,0.5626047669205826,0.8967091695196923 +-0.9824264805359743,-2.4306443105063185,-0.9824264805359743,0.0,0.0,-0.7742188502861344,1.9191183137675132,0.7638882910530406 +2.5046703087473374,4.563517432161126,2.5046703087473374,1.0,0.0,1.0212984851524767,0.33631169775171516,1.070899210013836 +1.2103096123938308,3.4496319552580714,1.2103096123938308,1.0,0.0,1.797160416988664,-1.2872252504401014,1.3612978780161795 +-0.5659991933235715,-0.20453521608859182,-0.20453521608859182,0.0,1.0,-1.9781566936744954,-1.384649463391696,0.9423761981570606 +-1.238016373482406,-0.5991894686930583,-1.238016373482406,0.0,0.0,0.48675162023540647,-1.0502254158231084,1.1661383140829715 +1.8122221377706285,4.780462395477729,1.8122221377706285,1.0,0.0,0.5353749744781543,-0.35839311078934144,1.0934926160481526 +0.590481213200067,3.033750026023837,0.590481213200067,1.0,0.0,1.4457883480008293,0.006843251122246992,1.154762285865486 +-0.04129299234214345,-1.5806018258305854,-1.5806018258305854,0.0,1.0,-0.5505610025697203,-1.1872600869017516,1.0657405487258074 +-1.0456367901025712,-0.2827935692272723,-1.0456367901025712,1.0,0.0,0.15482612715483043,0.1112059454877845,1.0043715456158797 +0.9347151770542936,3.774966933807098,0.9347151770542936,1.0,0.0,0.19829663219863564,0.12369162086654133,1.007488400008497 +-0.9591752353279113,-2.1972480261631775,-0.9591752353279113,0.0,0.0,-1.3295152363937435,-0.8911640563632779,0.9571117549611723 +1.9740361757778806,6.041574261138411,1.9740361757778806,1.0,0.0,1.465543711904123,-1.22895152492002,1.3092435447652753 +1.0710135375987064,4.574750041094538,1.0710135375987064,1.0,0.0,0.7272411505652303,0.10861003411516133,1.063816710640922 +-1.6741268377338796,-2.076283948140011,-1.6741268377338796,0.0,0.0,-0.7727983111703459,-0.5724509414878138,0.9801646247679338 +2.113311433070693,2.787646793599489,2.787646793599489,0.0,1.0,0.21110305941420063,1.7271463662073683,0.8593282232986246 +3.151124186269622,5.85865923971972,5.85865923971972,1.0,1.0,1.408115307689132,0.15161242609310244,1.1338855657307714 +-0.0325956922865096,1.5240903490823703,-0.0325956922865096,1.0,0.0,0.5625104336197048,0.5712460130837076,0.9991268234942643 +-1.5177408010608784,1.1444367518059044,-1.5177408010608784,1.0,0.0,0.268169138947096,-0.5433138300019011,1.0845317173279558 +2.7234804904181718,2.9738543598403346,2.9738543598403346,1.0,1.0,0.8784520897049659,1.448669786780301,0.9445735060537248 +2.302264536998783,5.114950656273691,5.114950656273691,1.0,1.0,0.9895200542838145,0.16417970947963076,1.0860356354686302 +-0.47385511163726,-2.175319748683025,-2.175319748683025,0.0,1.0,-1.5197450674571464,-0.5673518981120715,0.9091553321642271 +-1.4754838431959745,0.579194697891495,0.579194697891495,1.0,1.0,0.09514086739487129,-0.45573529063749857,1.0566331883855022 +0.8495833402265656,1.478742355634686,1.478742355634686,0.0,1.0,-0.6530102096450653,-1.7159939045719939,1.1121536597303237 +4.210286317020403,5.54788963244533,4.210286317020403,1.0,0.0,0.41314285062300204,1.6217532215559511,0.8861570940026996 +-0.9851809826702973,2.1221067455761853,-0.9851809826702973,1.0,0.0,0.6334189644101321,-0.7722145184821811,1.1509219861944324 +-0.34397207771777083,-1.1948833030677815,-0.34397207771777083,0.0,0.0,-1.0009367717261026,-0.905327436782901,0.9904846269146942 +0.7114929117958005,2.606137722414887,2.606137722414887,1.0,1.0,0.6145108463784217,-2.5582380313887687,1.373380045428934 +-0.7153379322715521,-1.31630032557497,-1.31630032557497,0.0,1.0,-1.3999162364807753,-1.8055609091247928,1.0413984436473376 +2.450230409137148,4.5008268782995655,2.450230409137148,1.0,0.0,1.4886514899038532,-0.43093135011371153,1.211619971974018 +1.7664070409135397,0.020206526250813095,1.7664070409135397,0.0,0.0,-0.7890080445423451,1.6147807475916922,0.786329880574183 +2.363881304886056,5.9782840581857135,5.9782840581857135,1.0,1.0,1.1223137128318232,-0.12598570496990782,1.1329557682423816 +0.6371458126203313,2.1138493922602564,0.6371458126203313,0.0,0.0,-0.23369236228238377,1.6638825276281948,0.8271597049566453 +0.6950210672998254,1.268981212313102,1.268981212313102,1.0,1.0,0.10664805448588602,-0.7995240387319984,1.094849826727054 +4.002372507554208,8.10903439500135,4.002372507554208,1.0,0.0,2.628849210486843,-1.4889362592874684,1.509500115948737 +-0.8298484251549282,1.9083373620590585,1.9083373620590585,1.0,1.0,0.26180621648782115,-1.5873950839411435,1.2031223429601856 +-0.801408282400821,-1.6674528146173482,-1.6674528146173482,0.0,1.0,-2.312491946320839,1.1652568494650501,0.7062578513845629 +-0.7872378161677909,2.1902634852687024,2.1902634852687024,1.0,1.0,1.7584902815806267,-0.2610947861097371,1.223797227756821 +-0.8673987925335676,0.848845855581839,0.848845855581839,1.0,1.0,-0.02534008667279386,-0.2713277783746957,1.0249038150075491 +0.7811456723500396,0.8015769044698486,0.8015769044698486,1.0,1.0,0.2106470457221203,-0.6170197354983648,1.0862883241458732 +-1.6402544288158123,-2.1588986074050363,-1.6402544288158123,0.0,0.0,-0.563955910311908,-0.7712626230449459,1.0209470442380457 +-1.635076775267924,-1.6256926231814333,-1.6256926231814333,0.0,1.0,-0.5815387004303315,-0.8126510149362206,1.023380365299135 +0.2399913777194309,-0.9062023549620285,0.2399913777194309,0.0,0.0,-1.4337297925840267,0.9512227133188208,0.7878124298922641 +-0.7179457727764028,4.561547876225447,-0.7179457727764028,1.0,0.0,0.4613814931288332,-1.251625385574132,1.186847566040748 +4.815563727357798,8.017874146069774,8.017874146069774,1.0,1.0,1.6761896710502802,1.9069342049581033,0.9771897259762418 +1.7620247190392413,3.273817129507919,1.7620247190392413,1.0,0.0,1.347108000490059,0.9376749087782923,1.0417930437602514 +-1.8234730588200143,-2.3867103502778058,-1.8234730588200143,0.0,0.0,-0.9851004927065187,-1.0271737189418866,1.0042161858311314 +1.0982279226295586,2.945983859250684,1.0982279226295586,0.0,0.0,-0.38942211257678716,1.8209156105319961,0.8016896049224336 +1.3257646772032277,2.5962914528745955,2.5962914528745955,1.0,1.0,0.7691023237290888,-0.34895193823241666,1.1182952485145916 +-0.4240616971872464,-1.7964085722961673,-1.7964085722961673,0.0,1.0,-1.7325955116500042,1.0454089376892108,0.7574479590112189 +1.1482977199114104,2.2322882623071654,1.1482977199114104,0.0,0.0,0.7549256297402183,-0.11886783723551411,1.0913105862732013 +-1.1219321106696305,-2.0021739691941223,-2.0021739691941223,0.0,1.0,-1.6217830009329062,-2.6061923620109897,1.1034492284633695 +0.2063975150833368,2.8449688527241572,0.2063975150833368,1.0,0.0,0.34305945894988144,-0.2962834539423969,1.066022349505867 +1.9826878851391532,3.493291367901231,1.9826878851391532,1.0,0.0,0.8440911348077105,0.005891294858205743,1.0874331208220505 +1.1071214304840524,1.7568314068063895,1.1071214304840524,1.0,0.0,0.7030771563081956,0.022672952529968766,1.0704085739233482 +0.18227321159163695,0.06340641430503613,0.06340641430503613,0.0,1.0,-0.8167240151559478,1.2979842507882997,0.8093928934554475 +1.81244843114394,1.380523524162729,1.380523524162729,0.0,1.0,-0.07347547862795104,1.5003573197080176,0.8543765307597062 +-1.302897921366155,0.003885186353838277,0.003885186353838277,1.0,1.0,0.625554647875485,0.1749772420794726,1.0460882599073758 +-0.14902442241174185,0.4606555620065832,-0.14902442241174185,0.0,0.0,-0.1975516257729835,1.4909904708821473,0.8446320335969154 +-2.1097161974831984,-3.2557435836974,-3.2557435836974,0.0,1.0,-1.4011471392957278,-0.5117824444312288,0.9149036960298154 +1.3577470175867512,3.0908454111094255,1.3577470175867512,1.0,0.0,0.3431683366686544,0.5726996973288137,0.9773082832109643 +-2.8680676095528246,-4.52723422025969,-4.52723422025969,0.0,1.0,-2.1251081109942684,-0.36542926625321254,0.8386449164271162 +-1.338938287151437,-0.6734297341538451,-0.6734297341538451,0.0,1.0,-1.352797864213535,-1.9195154032982051,1.0583083677899174 +-0.056828072243881866,1.0864462733961355,-0.056828072243881866,1.0,0.0,-0.7443114746627948,-1.0011193473714548,1.0260133796631064 +-0.7888960294785707,0.372810352973801,0.372810352973801,0.0,1.0,-0.06772408201262411,-0.6516312991742063,1.060129130272465 +-0.21586352436733022,-0.0166151243624042,-0.21586352436733022,0.0,0.0,-1.2923770575933198,1.566733851891197,0.7513294129629192 +0.2709830288172972,1.1678842161155576,0.2709830288172972,0.0,0.0,-0.6054971967436732,1.4513367353722024,0.8140907821530677 +1.3991618561247976,2.6840152084499214,2.6840152084499214,0.0,1.0,-0.5565486310137898,1.2177548563970588,0.837419324614715 +0.8942799862906947,2.9294941572897346,2.9294941572897346,1.0,1.0,0.3406331431832197,-0.9791401083699075,1.1410824451066717 +0.5437540824350027,0.2119504226944584,0.2119504226944584,0.0,1.0,-0.547162403725045,-0.7962959080029269,1.025226281256851 +1.3914132506833923,3.2158179752569636,1.3914132506833923,1.0,0.0,0.45282123878262154,-0.5484649987460174,1.105313078449091 +-0.6295236741343013,-1.4354456881974795,-0.6295236741343013,0.0,0.0,-0.6030469929287446,-0.3836945320508615,0.9783035819844712 +1.988838960918391,2.099309097921731,2.099309097921731,0.0,1.0,-0.23277987455751686,0.6928001944733247,0.911596330550764 +-1.4792529005234751,1.568340476323153,1.568340476323153,1.0,1.0,0.3859211647256731,-0.65636874556893,1.1098545725602633 +0.2627526253373175,1.452645276032343,1.452645276032343,0.0,1.0,-0.42341418388005236,-0.04308230029375489,0.9626809905590522 +-2.320011818280012,-1.7311039952401783,-1.7311039952401783,0.0,1.0,-1.2404081271336242,-0.8051817392701867,0.9574108792252836 +-1.0817519239869817,-0.5281403453107181,-0.5281403453107181,0.0,1.0,-0.6409453895138739,0.8190221153528873,0.8641605112811757 +0.6136970313699923,1.913480505075122,1.913480505075122,1.0,1.0,0.15785646113328367,1.596910165317844,0.8659696905314976 +-0.47060696393892837,1.8813474482865455,1.8813474482865455,1.0,1.0,0.21480530142200915,-0.7368777683090383,1.0998439509554796 +1.6925663194454872,4.094859695232971,4.094859695232971,1.0,1.0,2.0956794370356953,-0.8672068172627542,1.3448582611146707 +-2.0992578799446817,-2.4841309991714438,-2.4841309991714438,0.0,1.0,-0.8021291702103573,-2.062511175337652,1.134325499271061 +-0.12857305254144213,3.4797253916487625,-0.12857305254144213,1.0,0.0,1.0371285129578196,-1.5507841203218575,1.2953633867635213 +-0.6712685059426001,0.29928361270445164,0.29928361270445164,0.0,1.0,-0.43680063720930185,-1.3419724892723814,1.094740320818259 +-0.33465649243685647,-0.870216091838995,-0.870216091838995,0.0,1.0,-1.605564630092607,-1.2475753164518328,0.9648342718919232 +-3.0301437590446407,-4.5636371720374465,-3.0301437590446407,0.0,0.0,-1.5456278878060412,-1.254182966043598,0.9712761125277372 +-2.4528913603390197,-2.7188636071530965,-2.7188636071530965,0.0,1.0,-1.9612365157323952,-1.4639509205886923,0.9514876617240788 +-1.5183680603371466,-2.0158583845713887,-2.0158583845713887,0.0,1.0,-1.7834917686900382,0.21627691132027912,0.818749692175966 +2.742475334532569,8.652372810297926,8.652372810297926,1.0,1.0,2.2391815808001643,-0.372472764933152,1.2984424549399236 +-0.9190501183382765,-0.4092831221564396,-0.9190501183382765,0.0,0.0,-0.569263508525508,0.09253174838818175,0.9359628198355949 +0.36375070620074246,-0.48002813450826143,0.36375070620074246,0.0,0.0,-1.0452692520817892,-0.19238436492591396,0.9182473421905356 +-1.4795713295249227,-4.7829931390050096,-1.4795713295249227,0.0,0.0,-1.6572120722232,0.0028635805770590122,0.8470398260716827 +0.4351170467923459,1.9146098090119819,1.9146098090119819,1.0,1.0,0.3822138140534422,0.03267575593037989,1.0355718702933545 +-1.4119379123462725,-3.4378857587655194,-3.4378857587655194,0.0,1.0,-1.8434821831777548,-0.70789786230939,0.8926520353660152 +-0.7432294360685672,2.0779110397151674,2.0779110397151674,1.0,1.0,0.12819131491132144,-0.4874557357595163,1.063499308096621 +3.236547581396957,5.28173508872225,3.236547581396957,0.0,0.0,0.2331834688787863,3.155813026471759,0.7465721947016264 +-0.06235295805068963,-1.7266615049424354,-1.7266615049424354,0.0,1.0,-0.187959325233303,2.176024724124452,0.7894660840853629 +0.7720957563033868,1.616861604669314,1.616861604669314,0.0,1.0,-1.42712350061278,1.7070435045735421,0.730945263829117 +-0.24399507892731476,-1.5435442659726837,-0.24399507892731476,0.0,0.0,-1.217770463513484,-0.13671100951093706,0.8975325019529515 +-1.2492010136612928,-0.0559696647141501,-0.0559696647141501,1.0,1.0,-0.12648287570732794,-0.07684609441549788,0.99504862056377 +0.37852275677992114,0.7453902439267722,0.7453902439267722,0.0,1.0,-0.08821935382399282,-0.3626613224085328,1.0278242576843695 +0.32519291006417844,2.6179319797179836,0.32519291006417844,1.0,0.0,0.27432437363366163,0.29989408199600226,0.9974462954291864 +0.12953451560068974,3.9145298926764047,3.9145298926764047,1.0,1.0,1.8357208804480145,-0.06902325190517555,1.209823417774351 +-0.37319711562505276,3.2258684782861,3.2258684782861,1.0,1.0,0.27288685158584824,0.47860731376457283,0.9796381147109252 +1.1173438020126578,4.126042466750964,4.126042466750964,1.0,1.0,1.6457686134925906,1.6153986262574744,1.0030416150762378 +2.146431533522402,4.192936562785396,2.146431533522402,1.0,0.0,0.3014977385112114,0.5929402554797062,0.9712763460996571 +0.40472275565770843,0.5841008775696461,0.5841008775696461,1.0,1.0,-0.4603767315995608,-0.6050189446561799,1.0145693343359101 +1.533445371518416,4.279307724319176,4.279307724319176,1.0,1.0,1.8848267385644006,-0.685643815592624,1.293105972966876 +1.2563798485566704,3.0479848675974517,1.2563798485566704,1.0,0.0,0.21207801848831773,-0.8229631828425253,1.1090503627907464 +0.7983667678129307,3.699380921786514,0.7983667678129307,1.0,0.0,0.5855417114610741,-0.9185766841450146,1.1623128305762487 +0.3438736423070464,2.845693144274165,0.3438736423070464,1.0,0.0,0.6790884082295409,-2.1028867419198067,1.3207470388192777 +-1.625936093862585,-2.8955528888978863,-1.625936093862585,0.0,0.0,-1.847260250978975,-1.2263930446182605,0.9398013830833915 +1.9377826742704491,4.209856447044027,4.209856447044027,1.0,1.0,-0.03657282034817419,-0.10785431564112606,1.0071536152590348 +3.65392395530237,6.917853627764692,3.65392395530237,1.0,0.0,1.3480781735281064,1.1343397678711504,1.021603897237254 +3.817893296110728,5.303477547942519,3.817893296110728,0.0,0.0,-0.18739846775046798,1.6184159972677417,0.834784687635501 +0.9589491214747228,1.8047229261917739,1.8047229261917739,1.0,1.0,0.05668099830195851,0.7357665125478565,0.9343459142732397 +0.9509668075115307,0.8572828655223138,0.8572828655223138,0.0,1.0,0.0002222400392636289,-1.604857273565746,1.1741071088523896 +0.6840687162877799,2.4810057110653316,0.6840687162877799,0.0,0.0,-0.3501269222937274,-0.3861308742707563,1.0036068844060604 +0.9869883031434704,3.17226419818457,0.9869883031434704,0.0,0.0,0.0457853717818305,0.3439500770891826,0.9706236552470211 +-0.6895007871958665,0.12154022485487948,-0.6895007871958665,0.0,0.0,-0.6759608624367357,0.8539506736105854,0.8581373131996822 +-0.2004988619084811,-0.2591182660197149,-0.2591182660197149,1.0,1.0,0.12399590241831146,-0.31646324148369187,1.0450303357175355 +-0.7116228865974734,0.4130343923731661,0.4130343923731661,1.0,1.0,0.7468372851947289,-0.7596605961953072,1.162589434169345 +2.2768564482920266,1.9359032365391529,2.2768564482920266,1.0,0.0,0.16476600477681852,0.2001160674131309,0.9964712345151143 +-1.3940978552422463,-3.277506681075212,-3.277506681075212,0.0,1.0,-1.4522962674732238,-0.023743666035374443,0.8668795318343195 +-0.48042896531571777,0.20686517856494369,0.20686517856494369,0.0,1.0,-0.40076423062764727,-1.029099616347742,1.064849568097611 +-0.9042180490612601,-1.6394176028983443,-0.9042180490612601,0.0,0.0,-0.9584817479749457,-1.2769542194525738,1.0323597973566743 +-0.026482133577912625,-0.7638642379018165,-0.026482133577912625,0.0,0.0,-1.0675209770458933,-0.9008581322716254,0.9834718296938967 +-0.5050581461326131,1.9533661045415869,1.9533661045415869,1.0,1.0,0.6277795176103698,0.00990732373340692,1.063735978252907 +-1.796487604672062,-0.6100223068721853,-0.6100223068721853,0.0,1.0,-0.8107159268141038,0.684080366001971,0.8611559802069918 +2.1878850004100996,5.941847276718715,5.941847276718715,1.0,1.0,0.7385962994486079,0.7582926923165856,0.9980322991797601 +1.3780773743371273,2.381784973739082,1.3780773743371273,1.0,0.0,0.439423795185912,-0.36936193035266746,1.0842392321721168 +1.0773869270481695,5.459931302602488,5.459931302602488,1.0,1.0,1.3100407985649658,-1.6008461436462664,1.3378832411998833 +1.3714649133044639,3.5949570026891866,3.5949570026891866,1.0,1.0,0.8836279065577927,0.9524625619671809,0.9931401712425638 +-0.31984321663362114,2.948587425141951,2.948587425141951,1.0,1.0,0.5946001980814344,-3.0229279980637807,1.4358439856231837 +-1.3017556108059738,-1.1566874665421216,-1.3017556108059738,0.0,0.0,-0.6985454698146805,-0.2949244855111829,0.9604416017839926 +-1.1526675540242324,-2.657536822286987,-1.1526675540242324,0.0,0.0,-0.4328953793436926,-0.5941093053005791,1.0162520433919915 +2.70866993567346,2.5261047731286594,2.5261047731286594,0.0,1.0,-0.005078832437607646,2.86526597430473,0.7504858511327802 +1.3989698969569668,2.954961716059761,2.954961716059761,1.0,1.0,0.8252525465725213,0.9399639840470031,0.9885943989659718 +0.23625236447324516,-0.44581084950320593,-0.44581084950320593,0.0,1.0,-1.3483644730192559,0.18990717246981073,0.8574202008129111 +1.2075780398856855,1.5124264277980244,1.5124264277980244,0.0,1.0,-0.6726982344502255,-0.17752914686831348,0.9516890661201223 +-0.8967993826837521,-1.7741672204720655,-1.7741672204720655,0.0,1.0,-0.6136809349463623,0.12144687464050785,0.9291242706167135 +-0.6566711598668427,-0.1099322487347949,-0.1099322487347949,0.0,1.0,-0.5184860230037271,0.10361970756562212,0.9396849936146733 +-0.6303616018905428,-1.3167139132481918,-1.3167139132481918,0.0,1.0,-1.234745321513461,0.56135488459816,0.8355960131016756 +1.287615798725101,2.8634113753444224,2.8634113753444224,1.0,1.0,0.754895194191648,-0.25038349926410286,1.1057544579277707 +-1.2630261323750882,-2.368848644164891,-1.2630261323750882,0.0,0.0,-0.789930880985127,-1.1620175011890088,1.0379095705524926 +0.051684133096402005,-0.4640333872772939,0.051684133096402005,0.0,0.0,-0.5656787882785506,0.6171773538981227,0.8884422646312592 +0.1279659834049588,-1.0109880016039334,0.1279659834049588,0.0,0.0,-1.2823392106350673,0.21539295661377555,0.86090319273393 +2.08643568058101,4.685715005172955,2.08643568058101,1.0,0.0,1.7152354067577298,0.4414973509488209,1.1358415223355143 +0.5527903532603504,1.6157461715323649,1.6157461715323649,0.0,1.0,-0.05863356841433834,0.6839589004847201,0.9284309697977433 +2.467142869084405,3.3758149350892825,3.3758149350892825,0.0,1.0,-0.6388750589679247,0.5976271925198379,0.883688878978896 +2.503120765779672,5.725295396269883,5.725295396269883,1.0,1.0,0.9019161506675846,0.46243034743801104,1.0449286236146744 +-0.5148355350673132,-2.5374782941313554,-2.5374782941313554,0.0,1.0,-0.4750836924808296,-1.0625635327799143,1.0605079421219898 +-1.5071101561039764,-1.8799783949315223,-1.5071101561039764,0.0,0.0,-1.4203462604713513,0.2799038942393001,0.8436437121875449 +2.031297154029601,1.7771772564892028,1.7771772564892028,0.0,1.0,-0.2548531948844284,0.16175164704488917,0.9591953872910951 +0.6473557606428527,0.05021889611527652,0.05021889611527652,0.0,1.0,-0.3214041258560883,1.408047809351835,0.8411837158991287 +0.3582951012932153,0.649880085598467,0.3582951012932153,1.0,0.0,0.8063099926687094,-0.06331518036028276,1.0908557907347831 +1.2966378946994637,1.1939283462370218,1.1939283462370218,1.0,1.0,0.7437914454930821,-0.3339836357907915,1.113799906390634 +1.2118689101074225,3.453803775258945,3.453803775258945,1.0,1.0,0.6110950300530149,0.45975115032961994,1.0152494927691142 +1.5620187583250962,5.277996150671605,1.5620187583250962,1.0,0.0,0.3234937680712512,1.834851992349062,0.8597309199880124 +-0.643419502589529,-2.4386820840760537,-0.643419502589529,0.0,0.0,-0.9477917519534568,0.17497068044543906,0.8937973179273249 +-0.5809323881367812,-0.1738892618481189,-0.1738892618481189,0.0,1.0,-0.07661356519136601,-1.1827036287105988,1.1169580979438045 +1.5481328466861073,4.23602320018211,1.5481328466861073,1.0,0.0,1.0446380525115897,0.556342006006302,1.050041413321827 +2.674455410239611,5.923746044625671,5.923746044625671,1.0,1.0,0.7102877683219465,0.9484804354563179,0.9764621730287714 +-2.4158839409917228,-3.7418809474207393,-2.4158839409917228,0.0,0.0,-2.0390887495628522,-1.0549159957204823,0.9062706604055465 +-1.0836136486544554,1.2131865913478825,1.2131865913478825,0.0,1.0,-0.11294434625783595,-1.3695832909334784,1.133900993831931 +-0.9454099950409213,-0.5425508350263597,-0.5425508350263597,0.0,1.0,-0.42955812960918227,-0.07208659915734673,0.9648842306819128 +-0.1548069897490998,3.785804463661117,-0.1548069897490998,1.0,0.0,0.4078711384525062,-0.7244364088182158,1.1198903231209252 +-0.0052787905381113664,0.9760585848490511,-0.0052787905381113664,1.0,0.0,0.28008163407564907,-0.696785781169192,1.1026173267795936 +-0.008454414311550806,2.3857833549432748,-0.008454414311550806,0.0,0.0,-0.4175147123927326,-1.0036794618839042,1.0603684848674981 +0.7345286443186827,1.886022909497086,0.7345286443186827,0.0,0.0,-0.001650746030719928,-0.08876321391281874,1.0087493001155603 +-1.8750609270945038,-3.892558404271364,-1.8750609270945038,0.0,0.0,-1.4506582583850784,-2.024833885991678,1.0590979579440287 +-0.8525409013112506,0.2701953494603382,-0.8525409013112506,1.0,0.0,0.3760326927437284,-0.13328682495134903,1.0522512870087772 +3.2910915184511693,5.832607929575362,3.2910915184511693,1.0,0.0,0.9648265687706651,1.5031512535482607,0.9475908445412614 +0.897832786908308,1.3032005867134149,1.3032005867134149,0.0,1.0,0.11783775730545744,1.2664006132038934,0.8914942552719405 +0.971317419090932,0.6452515315954457,0.6452515315954457,0.0,1.0,-0.6982601812488286,0.4933958217022248,0.887660791700855 +0.597905310303006,2.283679459684535,0.597905310303006,1.0,0.0,-0.39282902227506056,1.1058487847449099,0.8608217861532417 +2.2975419150375744,6.478336625055288,6.478336625055288,1.0,1.0,1.344061362634632,-0.5237174443453863,1.2053595216977049 +1.9448347094798253,4.756700262523145,4.756700262523145,1.0,1.0,1.4558146296699805,0.06143774604446813,1.1496271683348498 +0.5473551797599565,0.2724789326663859,0.2724789326663859,0.0,1.0,0.03759601129355112,1.1631082309330558,0.8935515764696569 +-2.0778845882228634,-1.7957862368080848,-1.7957862368080848,0.0,1.0,-1.3777525429625188,-1.6426604817173,1.0268447939571304 +-0.5533954128339765,-0.4796659405769865,-0.4796659405769865,0.0,1.0,-0.8959597573382618,-0.5483964795622085,0.9658407361445979 +-0.12089519372331697,1.2056323017959303,-0.12089519372331697,1.0,0.0,0.40646194840917044,-1.3416233694071442,1.1910181526558214 +1.1146899758092528,1.4335145600990797,1.1146899758092528,0.0,0.0,-0.08729031184591109,0.7179978516920953,0.9226283164166935 +0.47913053124151966,1.9765464007047662,1.9765464007047662,1.0,1.0,0.2715241058492742,-0.6431485579680438,1.095780907231553 +0.5980566540648592,2.2412370923064726,0.5980566540648592,1.0,0.0,-0.008394075838742425,0.15066793423871483,0.9842196345355911 +-1.3063303596348503,-0.24684442317893085,-0.24684442317893085,0.0,1.0,-1.1973268879760268,0.09612867537546566,0.878670282996094 +0.8555110119949629,0.5435629652687284,0.8555110119949629,0.0,0.0,-0.8615208513080954,0.757311846418232,0.8505404825296599 +0.6364161444999576,1.831947576182137,1.831947576182137,1.0,1.0,1.2563652023975114,0.21785802543109828,1.109434823567087 +2.0541536721760574,3.194671395011323,3.194671395011323,0.0,1.0,-0.08820224106261977,0.39724264653306673,0.9526149577052746 +0.09211087707444021,-0.22197140347564906,-0.22197140347564906,0.0,1.0,-1.0270222230630845,-0.044995201971437124,0.9064651427338605 +4.0455945363967745,7.197659314177311,4.0455945363967745,1.0,0.0,2.165539451183925,1.5815865174517532,1.0601339768303653 +1.0880205197540604,3.268327084613304,1.0880205197540604,1.0,0.0,0.4628639532544823,1.37096230382388,0.9131913513699138 +2.6024487575480313,6.140686353094944,2.6024487575480313,1.0,0.0,0.8779363069782344,0.08085483512293974,1.0829709534270384 +0.3981459161177776,-0.21666134143927995,0.3981459161177776,0.0,0.0,-0.5199427643827272,1.6963058961239126,0.8012158712400129 +-0.5905226295813137,-0.906104164649413,-0.5905226295813137,0.0,0.0,-0.18741482443773763,0.20554658339797466,0.9614659377060598 +1.6250215821275975,2.242437403023726,1.6250215821275975,0.0,0.0,0.23737639349464745,0.8831818471127955,0.937460603117589 +-1.0999721625689927,-2.4429075747871405,-1.0999721625689927,0.0,0.0,-0.3585254485173637,-0.5168712252544088,1.015960608937323 +-0.5358089372572002,-0.2563342505499524,-0.2563342505499524,0.0,1.0,-1.184451776554804,0.9732375115221696,0.8059215056026943 +1.8232435043417745,4.309870659477684,4.309870659477684,1.0,1.0,1.711291301381047,-0.8931725074044834,1.2975091406869859 +2.3223308570077017,5.270092233734163,2.3223308570077017,1.0,0.0,1.683524045047558,0.6008564884912028,1.11434496356375 +-0.22015608657554286,0.48559086054462375,-0.22015608657554286,0.0,0.0,-0.625756575269761,-1.4521726255655678,1.0861524672020617 +-0.2921067453909174,0.7239803524149981,-0.2921067453909174,0.0,0.0,-0.08344094552168485,-0.24676251339166583,1.016466255505412 +2.754101475970981,1.7386423487660057,1.7386423487660057,0.0,1.0,-0.5162241674404779,0.4043902388147137,0.9120491109557037 +0.08780137581672876,2.7919602130097347,2.7919602130097347,1.0,1.0,0.5646508311011366,-0.301696669902444,1.090498302573526 +-0.5448752793418572,-0.14829719176185563,-0.14829719176185563,0.0,1.0,-1.2745906564307774,-0.10323727096649365,0.8894648061431303 +-0.7787091415922409,-2.7226861830127786,-2.7226861830127786,0.0,1.0,-1.5226035106405182,-0.47161974118108935,0.9002359557659142 +1.3065601651422372,2.753934181321932,2.753934181321932,1.0,1.0,1.199914766294136,-0.5775299648392705,1.194520050244498 +0.021934497139359466,1.3626823760560784,1.3626823760560784,0.0,1.0,0.13535090751383458,0.7561226618439271,0.9398103537212443 +-1.9968854042223527,-1.6583362596783495,-1.6583362596783495,0.0,1.0,-1.139929129950074,0.34337451881101627,0.862146245051699 +1.4742314595133927,4.976487587624683,4.976487587624683,1.0,1.0,1.128923762523286,-0.8276021582888772,1.216104347658181 +-0.34622814151725534,0.0772384652393478,-0.34622814151725534,0.0,0.0,-0.4741644385610777,-1.5174953203188515,1.1099701112676144 +1.148451593601538,1.8942695138699968,1.8942695138699968,0.0,1.0,-0.83620056069169,1.1383468682131423,0.8208172876050144 +0.533819606277442,1.787205068005727,0.533819606277442,1.0,0.0,0.43136934917325936,-0.5359106273745649,1.1015607057723098 +1.3579823202716925,2.0533632356970113,2.0533632356970113,1.0,1.0,0.33463371892065713,-0.07186583101525665,1.041487474240924 +-1.728238762148957,-2.141718674129793,-2.141718674129793,0.0,1.0,-1.2485104753213652,0.09974416712742523,0.8738684196631022 +-0.07413056179005856,1.4977940069684659,1.4977940069684659,0.0,1.0,-0.3979797413282434,0.2878999646059992,0.9337113173518281 +2.557816605526286,4.888558862504492,4.888558862504492,1.0,1.0,0.9469195520541789,0.8211904577516105,1.0126522807500167 +2.0540088420274585,2.755069643938657,2.0540088420274585,0.0,0.0,-0.6949299631975878,0.5148639860279834,0.8860522165793226 +-0.044742206933670925,2.0598925826859595,2.0598925826859595,1.0,1.0,0.3857958838944787,-0.058714739257149484,1.0454538133693276 +-2.0438199061270925,-1.6520274753238762,-2.0438199061270925,0.0,0.0,-2.4320703773798003,-0.06873265826287887,0.789517111314793 +0.38572046596785065,0.651389827914675,0.38572046596785065,0.0,0.0,-0.6835045762784904,1.1409615470538608,0.8332291268998646 +2.2267419440997367,3.4472465787319146,2.2267419440997367,1.0,0.0,0.0002630887563427856,1.185427893726332,0.8882371769460492 +3.3968345415742744,7.211251663973839,3.3968345415742744,1.0,0.0,2.524143643698515,-0.07648893958572173,1.2970121308900995 +-1.4096533403882066,0.9786908120020229,0.9786908120020229,1.0,1.0,0.6065819306661715,1.3905190901924744,0.9246003249741951 +3.7199637020963046,6.665439067169491,3.7199637020963046,1.0,0.0,1.170050688048621,-0.1363988998569723,1.1395631176125853 +1.3361499728207882,1.356364221237457,1.3361499728207882,0.0,0.0,-0.3885892110454105,1.2685740673525752,0.847286551708526 +3.6657141244991394,5.835018498904084,3.6657141244991394,1.0,0.0,1.434887210969187,-0.7515933833395306,1.2443932471442498 +2.4055584762454334,5.987627427700555,2.4055584762454334,1.0,0.0,0.9246854576952076,0.5135846526878769,1.0419667994596138 +0.15104017930288066,1.639443746774932,1.639443746774932,0.0,1.0,-0.07975403097054733,-0.5213000022766849,1.0451439186503768 +1.515182099789182,4.200350748640848,4.200350748640848,1.0,1.0,0.9205867242122012,1.9605647462299458,0.9012272781347409 +2.6007499145145214,4.984807860120452,4.984807860120452,1.0,1.0,1.0009530165678515,0.3378509246373027,1.0685581423168315 +1.8095356880722628,4.016127854021319,4.016127854021319,1.0,1.0,1.1870960348344308,1.0472212115541173,1.0140857648660897 +1.802286289589534,4.320497115671937,4.320497115671937,1.0,1.0,0.23364879239405265,0.4885327676869261,0.9748336893794574 +-2.3030395529161627,-0.12940105760851983,-0.12940105760851983,0.0,1.0,-0.0029310912060259886,-1.3338162163533331,1.1423511062252887 +-2.047788399061748,-1.9076139182759657,-1.9076139182759657,0.0,1.0,-1.2024841472726404,-1.6905718911445697,1.0500195409104787 +1.2023808317092395,4.387978102376868,1.2023808317092395,1.0,0.0,1.0030380934297642,-0.7754838436702757,1.1946487315877277 +-1.5380059433201592,-0.9748915116167352,-1.5380059433201592,0.0,0.0,-1.4310807441697841,0.4357525163696401,0.8297064412001276 +0.5792118343210252,0.41725425064380467,0.5792118343210252,0.0,0.0,-1.3363165373890458,0.5310292060695536,0.8296639212517698 +1.4161375903582971,4.474198524400306,4.474198524400306,1.0,1.0,0.973821061830549,-2.344286143465603,1.3934890646767228 +1.1515467745625618,1.8673331477353052,1.1515467745625618,1.0,0.0,1.1048232300130818,-0.31688765598224045,1.1527738581313323 +2.411495099401525,4.550452664195386,4.550452664195386,1.0,1.0,1.585248802952418,0.31396631238392064,1.135562643281115 +3.8416109521105306,7.4730352149960995,7.4730352149960995,1.0,1.0,0.39690414245628824,0.9199558573020734,0.949039202944071 +-2.1705904251838133,-4.933612650089378,-4.933612650089378,0.0,1.0,-1.4340096526119575,-2.2740593070643147,1.0876342943839432 +-0.5451750467174425,-1.3596562053766723,-0.5451750467174425,0.0,0.0,-1.5433785233510122,2.0484876740343254,0.6982440330730854 +1.6062135449850414,4.348461685526506,1.6062135449850414,1.0,0.0,1.0931234205274374,-0.8185415862329523,1.210661011177786 +-1.9876385368409566,-2.9922173284758196,-2.9922173284758196,0.0,1.0,-0.21110103093672639,-1.1645985645899577,1.100043531778446 +0.4257603246860242,0.8070997980250542,0.4257603246860242,0.0,0.0,-0.44599055941043036,-0.689129423843356,1.0246118791996308 +0.9377092106137592,1.2942051694945569,1.2942051694945569,0.0,1.0,0.06934837802963727,-1.0954914922964076,1.1235395191214697 +0.16576233314268907,2.4158019368736356,2.4158019368736356,1.0,1.0,0.7422268406484873,-0.1926872748957421,1.098001173177485 +-2.8652760305088925,-2.402451956872082,-2.402451956872082,0.0,1.0,-0.5218516095504292,0.5275633057309513,0.900377200739306 +0.5436563705047222,3.839766906867506,0.5436563705047222,1.0,0.0,0.10653792673021276,1.6305139973565868,0.8586468088242996 +1.2755329493122298,2.420771143022698,2.420771143022698,1.0,1.0,0.14779648710571403,1.215035476925802,0.8987737910945638 +-0.5654861702331757,-0.1997277631131651,-0.1997277631131651,1.0,1.0,0.0868730276868686,1.092716016032085,0.904308877015158 +1.376465860750787,1.7936741292086884,1.376465860750787,0.0,0.0,0.33612075541625974,1.0234731048790342,0.93357382508303 +-0.3818675017198787,-1.589299592168036,-0.3818675017198787,0.0,0.0,-2.1801823699260687,0.3648090282564743,0.7753047199934504 +0.22601578544948875,3.1600144511774424,0.22601578544948875,1.0,0.0,0.8649603577499186,-1.8356263853219108,1.310041314244763 +0.8801960875036636,1.6251706659716538,1.6251706659716538,0.0,1.0,-1.7789579097281936,-0.5928594608997154,0.8881542510987561 +1.4812005765691805,4.317085842413093,1.4812005765691805,1.0,0.0,0.6246235866438424,0.9914258427918917,0.9639843435686825 +0.9047690366847512,0.7852812849746874,0.9047690366847512,0.0,0.0,-0.3992290438761313,-0.4561883718431139,1.005712185465294 +1.0221270135867746,2.1222357911263607,1.0221270135867746,1.0,0.0,0.25152223280215913,0.38043628096163085,0.9871913334241156 +-0.787005841892748,1.624367550575803,1.624367550575803,1.0,1.0,1.05993139086408,-3.676297308543297,1.6058012768881729 +0.09691738849034626,0.8540039753306452,0.09691738849034626,1.0,0.0,0.752304112770562,0.14805557792436821,1.0622877673468334 +-2.4546888130654443,-0.01836865864674911,-2.4546888130654443,1.0,0.0,0.43222783297413736,-1.754319887687035,1.2444016003302558 +0.4476786763957199,1.3344071844821896,1.3344071844821896,0.0,1.0,-0.44094430018042985,0.46088461149063203,0.9137640506142913 +-3.1303778474536044,-7.568248151390523,-3.1303778474536044,0.0,0.0,-2.7507709085621586,-1.8317616521785578,0.9121955202571664 +-1.053167772690486,-1.570606424890081,-1.570606424890081,0.0,1.0,-0.6312729019192076,1.3184065518548016,0.8228610341331791 +-1.4009613390856184,-0.13240108855105848,-0.13240108855105848,0.0,1.0,-0.9420691215713493,0.02339779710811849,0.9079675019112914 +-1.8043936579426043,-3.956453716742849,-3.956453716742849,0.0,1.0,-1.7233002696714275,-1.4414797831459452,0.972211360921647 +1.7878051872615006,2.257191446599984,2.257191446599984,0.0,1.0,-0.5118539845045248,2.534373359545119,0.7374015181438173 +2.3448334989902344,3.8589335985356,2.3448334989902344,1.0,0.0,0.0018990118972071369,0.7306414757969313,0.9297177380367012 +-0.3388254717316912,0.9183274201835993,0.9183274201835993,1.0,1.0,-0.1536052927776366,-0.024320105913240308,0.9871546956127053 +-0.4376835095314815,1.2073483430087784,1.2073483430087784,1.0,1.0,0.119805789919647,0.15567760013530782,0.9964192452259405 +-1.4962916650585378,-0.8792372863780649,-0.8792372863780649,0.0,1.0,-1.1773230565224946,0.15569108384800495,0.8752012544052534 +-0.29486656199170697,1.3882502225237987,-0.29486656199170697,0.0,0.0,0.11350767544248691,-0.5793565167862808,1.0717431330270837 +1.58150714999713,3.0423468794903172,1.58150714999713,1.0,0.0,0.6158218373259324,-1.1200420545936887,1.1895634477558645 +0.6127733191517235,1.8542602434514759,0.6127733191517235,1.0,0.0,0.20859783823206038,-0.309437093424677,1.0531687673175336 +0.512369052849114,2.125460928196725,0.512369052849114,1.0,0.0,0.2499838484151969,-0.8889490350157953,1.1206325339489185 +0.030017655240979435,3.9229537377038017,3.9229537377038017,1.0,1.0,0.29116335381501934,-0.28398473455211815,1.0592009560725961 +0.20404256108878338,3.784538326145842,3.784538326145842,1.0,1.0,0.43763329342137053,-0.7296172209842883,1.123810397158683 +-3.291008761489171,-3.153649683164429,-3.291008761489171,0.0,0.0,-1.3032414206937757,-1.478663183435146,1.0176969439109103 +3.1221201041283733,5.270222513963787,5.270222513963787,1.0,1.0,1.516832188254176,-2.3308275792509403,1.4692704377621035 +0.7516555038907031,1.3103100071794516,0.7516555038907031,0.0,0.0,-1.5240938907031951,0.35331057689993306,0.8288298047778201 +2.1819756349979036,4.170680883801137,4.170680883801137,1.0,1.0,1.6575665056710887,0.5459916344416665,1.117570896021179 +-0.45327557946076946,1.0868323033459737,-0.45327557946076946,1.0,0.0,1.3390638384884586,-1.5732664840669512,1.3380763625742431 +1.1486474529909618,5.569777876420978,1.1486474529909618,1.0,0.0,0.9295645290894373,-0.3784048988893283,1.1397363261439208 +0.7054622260127577,3.319631556121406,0.7054622260127577,1.0,0.0,0.6841409398168191,0.16588856257967877,1.0531916682559053 +0.7150001094789876,2.0620580664979515,2.0620580664979515,1.0,1.0,0.12217089513503393,-1.2334913446821059,1.1451850320359411 +-0.6328836519505028,-0.8058825573918816,-0.6328836519505028,0.0,0.0,-0.36873414318056,1.2847228991361597,0.847600634307055 +0.2908433293061105,2.437632387048331,2.437632387048331,1.0,1.0,-0.004526387255464231,-0.56030081917455,1.0571508830411127 +0.6525752021369681,4.494772135488172,0.6525752021369681,1.0,0.0,1.7731603981496769,-1.4071414211889532,1.3744177431869802 +1.5815231809823878,5.439082345524032,5.439082345524032,1.0,1.0,1.3620766825133734,-1.1680500742419089,1.28789960172863 +-2.581212596245472,-3.613995736294883,-3.613995736294883,0.0,1.0,-0.5983708398745607,-0.5145765452886265,0.9916555801054633 +-0.24693974689966924,1.6896809942302475,-0.24693974689966924,1.0,0.0,1.4529819943768227,-2.6223878350402576,1.5031110339739284 +-0.7338491292475766,-1.295107639870144,-1.295107639870144,0.0,1.0,-1.6383246660553543,-1.7287301409451044,1.009081536666847 +0.16319414314792868,-1.1561748335543016,-1.1561748335543016,0.0,1.0,-1.134939264136766,0.2328752481141295,0.8721608149825103 +1.376533393681797,3.9479778196837856,3.9479778196837856,1.0,1.0,0.28516540510148064,-0.1042675976288175,1.0397115306189495 +-1.7469867277563682,-4.015582329324255,-4.015582329324255,0.0,1.0,-1.8513441522930107,-1.305347877916204,0.9468641705074197 +1.3543689745007814,3.0328276838953507,1.3543689745007814,1.0,0.0,0.14454507953841275,-1.132696850506875,1.1362395766527273 +1.6020561346770705,4.345390752369182,4.345390752369182,1.0,1.0,0.5634740286524365,0.3679748841748158,1.0197422654624002 +0.6949435473307729,0.3863651848816386,0.3863651848816386,0.0,1.0,-1.5349527253876636,0.9073057075424484,0.7833107088149719 +0.24575672094785808,0.4900439158345346,0.24575672094785808,0.0,0.0,-0.05095214645305256,-0.08833583674392752,1.003745365446266 +-1.1338478136784809,-1.3612501557023327,-1.1338478136784809,0.0,0.0,-0.8094416347578839,-2.178855505230569,1.146760931506251 +0.48504170792672197,0.19934044052860206,0.19934044052860206,0.0,1.0,-0.8420441660058318,-0.5582616574634692,0.9720206296236902 +1.3996930102224314,0.3312556217927438,1.3996930102224314,0.0,0.0,-0.5611183077742956,1.8505624914777832,0.7857095532862864 +-0.6381662262312471,1.669202865457864,-0.6381662262312471,1.0,0.0,0.9369569480973454,-0.18699305953545045,1.11895476134855 +0.992612127791382,2.0437144271847414,2.0437144271847414,1.0,1.0,0.02634026029650275,-1.2356401248289202,1.1345068220807528 +0.6966282492934149,1.8546620013476596,1.8546620013476596,1.0,1.0,1.1045227515027551,0.31084128602907973,1.082602805200625 +-2.182630846537258,-2.4119543466726894,-2.182630846537258,0.0,0.0,-1.6340059923088577,-0.4430655417846358,0.8877243107567591 +1.6063835456299242,4.397572697827878,4.397572697827878,1.0,1.0,0.633168874910603,1.48612631443923,0.9182406801123582 +0.24558941398963086,-0.6679980597531529,-0.6679980597531529,0.0,1.0,-0.9353664175499905,2.062030157873202,0.7410111122258246 +1.401857833673269,1.4477974800745805,1.4477974800745805,0.0,1.0,-0.4933429278738299,-0.04840760500672288,0.9564817863235757 +1.2557609338785074,2.9259923498091984,1.2557609338785074,0.0,0.0,-0.32099116956997886,0.7563727245579509,0.8978642517592778 +3.564465813500429,6.549732540434781,3.564465813500429,1.0,0.0,1.0404805200489817,1.2539635625942263,0.9788779578284859 +-0.24870951864756308,0.6771625523095892,0.6771625523095892,0.0,1.0,-0.6153317302237337,-1.0889663462555959,1.0485030304245304 +-0.9527136217365191,-0.6652985292670686,-0.6652985292670686,0.0,1.0,-0.7485328849178581,-1.2252047181711885,1.0488215319360725 +-0.9454874350739773,-1.7038392220099479,-1.7038392220099479,0.0,1.0,-1.8852298907757552,-0.5550555971762047,0.8754498334455274 +1.1460763463014163,0.8250478009669702,0.8250478009669702,1.0,1.0,0.9234244605276563,-0.06095665153772478,1.103446111332645 +-0.2991194377448602,1.8093993325510789,-0.2991194377448602,1.0,0.0,-0.013604265892662967,-0.6032688079139878,1.0607396567851997 +1.0720651587297656,2.918946486561622,2.918946486561622,1.0,1.0,0.5950978657325229,0.9017405324141756,0.9698011129845484 +0.8320335920515886,5.141072752317328,5.141072752317328,1.0,1.0,1.2587705232210344,-0.07563280005511884,1.1427530786845208 +0.9275028827100528,0.8671296769679225,0.9275028827100528,0.0,0.0,-0.781019399052211,0.7730729964366665,0.8560647702278635 +1.4226672355210188,4.926248604580701,1.4226672355210188,1.0,0.0,0.9138696125289256,0.06596293008002045,1.0884891874960179 +1.5270733633966744,4.536799578539406,1.5270733633966744,1.0,0.0,0.045039331021819375,0.1452384870699702,0.990030116504273 +0.17358970141586272,0.9541622405040295,0.9541622405040295,0.0,1.0,-0.5846357714209943,1.0164992577937093,0.8520470736454904 +1.203005134566327,4.088550058111161,1.203005134566327,1.0,0.0,1.2194003368451716,-0.704696870002021,1.2121670651548515 +-0.9801857158125163,1.8556529965983184,-0.9801857158125163,1.0,0.0,0.9485841280670466,-1.7485706657892506,1.3095917918600013 +3.421007691397158,6.8173929114244105,6.8173929114244105,1.0,1.0,2.046101776189498,0.5442167916001626,1.1620532673348256 +2.268538095773904,5.475668939402704,5.475668939402704,1.0,1.0,1.805412485022177,-0.2872772271711865,1.232776535349207 +0.6327633594198658,3.4040620821881977,0.6327633594198658,1.0,0.0,-0.1639874339623917,1.2641383420362184,0.8669165332476654 +1.7166012549220886,0.6453885486952651,0.6453885486952651,0.0,1.0,-0.8880751526492907,0.9005238253414865,0.8362230478799336 +-0.14406250081579297,0.6058406841926913,0.6058406841926913,0.0,1.0,0.2450710117441287,0.9213087764983856,0.9346120304732938 +2.712621766563239,6.097115262776294,6.097115262776294,1.0,1.0,1.6038516071459434,-1.017006023668659,1.2996379986094444 +0.3822556714886124,1.5285667837416084,0.3822556714886124,0.0,0.0,-1.160278120635956,0.13624386459694188,0.8784008869240734 +-0.141039444120247,-0.6287197859299897,-0.6287197859299897,0.0,1.0,-0.32412371728442396,0.10245548766106037,0.958239127974626 +-2.1461740223319943,-0.2078599698928505,-2.1461740223319943,0.0,0.0,-0.9851704802242504,-0.5607714733531967,0.9584480658602625 +0.2807498036138664,1.0208336345771225,0.2807498036138664,0.0,0.0,-0.6493051724300939,1.0800562564501044,0.8411913291784879 +0.6192096191272787,-0.544053902499763,-0.544053902499763,0.0,1.0,-0.5639998031822745,-0.8654695804444722,1.0306059989486078 +0.41222396857405597,3.1669758827787935,0.41222396857405597,1.0,0.0,0.7024434102622846,0.08295207052176948,1.063908226568198 +-1.3040628948558042,-1.5789214838922137,-1.5789214838922137,0.0,1.0,-0.15896437578045697,-1.3830640164162362,1.1302173553148909 +1.9606650581845904,3.428967558247308,1.9606650581845904,0.0,0.0,-0.45594316386305195,0.03261870489767391,0.9523180756883908 +0.020368101875077205,-0.38404349824480355,-0.38404349824480355,0.0,1.0,-0.1562701259210549,-1.5026871184778265,1.144126769428289 +-2.6143791240543464,-4.955846626750604,-4.955846626750604,0.0,1.0,-2.694359172306468,-0.2901533256018425,0.7862970870109546 +2.3533781403874636,3.791702918220394,2.3533781403874636,1.0,0.0,0.9735797571076958,-1.0640692755453336,1.226009888650953 +0.3086111667051029,3.329172648391046,3.329172648391046,1.0,1.0,0.030948200045417616,0.5974841467098698,0.9449213384708052 +-0.6341642997711257,0.11492583742277096,-0.6341642997711257,1.0,0.0,-0.7231168196848923,-0.8530977146054637,1.0130829318549721 +-0.3839951844819306,-1.120059074510545,-0.3839951844819306,0.0,0.0,-1.27787272229443,-0.06468548260915202,0.8857516043321086 +0.42014251398558095,2.522629671432786,0.42014251398558095,0.0,0.0,-0.31706795268760984,-0.8058946904881552,1.0500971395842569 +0.7488319296685887,0.6609348170986125,0.6609348170986125,0.0,1.0,-0.11740509421140136,0.3674002121602255,0.9526758871177899 +-0.08558650793617778,2.1751979966192434,-0.08558650793617778,0.0,0.0,-0.12484724868711622,0.06000976198908796,0.9816841115261635 +2.9758825723942923,5.52215236567753,5.52215236567753,1.0,1.0,1.700935619359366,0.2530047870356913,1.1558003910428358 +0.1650252660075796,-0.48853697582112443,0.1650252660075796,0.0,0.0,-1.0060426645009535,-0.17117312418297875,0.9199030876193848 +-0.2816628182794956,1.066260919617091,-0.2816628182794956,0.0,0.0,0.37400358214501195,0.34498745086200333,1.0029058268822497 +2.0531856947991924,5.7454266061613035,5.7454266061613035,1.0,1.0,0.6538771527697776,-1.0463274810059362,1.1853291069092502 +-0.6893857970151512,-0.29983642596758875,-0.29983642596758875,0.0,1.0,-1.7421187918939287,-0.6108714761966144,0.8930392629796868 +-0.06617539206152367,3.653985268415051,3.653985268415051,1.0,1.0,1.173572084598983,-1.8408090518988998,1.3518014544911774 +0.2373282283399738,-0.7052177168636808,0.2373282283399738,0.0,0.0,-0.8791147257195517,-0.46866561892323877,0.9597860243372014 +1.517918028933815,5.652345572881341,1.517918028933815,1.0,0.0,1.3169138030055905,1.013170756988627,1.0308403100217893 +0.3368462108727298,0.31495911329544307,0.3368462108727298,0.0,0.0,-0.3327947744611629,0.6847987982432246,0.9032468853138969 +-1.7036983283318694,0.2558548311294313,-1.7036983283318694,0.0,0.0,-0.420054245733527,-0.3009635310325862,0.9881615608550337 +0.8972019831250938,3.1739355091198114,0.8972019831250938,1.0,0.0,0.16677428687005538,1.6892440297338547,0.8587761589188747 +1.1428371173816325,4.388420239351778,4.388420239351778,1.0,1.0,0.4472551672755335,0.7423996749372542,0.9709168470474889 +-1.118137821242792,-1.7649411401939494,-1.7649411401939494,0.0,1.0,-1.0081259827741555,0.7109108583128764,0.8420602730485579 +-0.44122628272226827,0.7236576556500169,-0.44122628272226827,0.0,0.0,-0.5967031147357774,-1.8918890902991303,1.13828028049758 +-3.0472205074998784,-4.68381123239481,-3.0472205074998784,0.0,0.0,-1.553440796289921,-2.179810311033952,1.0646402529866306 +0.0649487996624652,2.0292207358361614,0.0649487996624652,1.0,0.0,0.20925112733371795,-1.0430308157383095,1.1334070605982929 +1.3744894703984707,4.360921660795477,4.360921660795477,1.0,1.0,0.30551578153147724,0.17353419731114075,1.0132856385501054 +0.8109491693869891,3.209542496916366,0.8109491693869891,1.0,0.0,0.36168155653182554,0.12316673497705209,1.0241382037965512 +-1.8277230952137102,0.19086451418917583,-1.8277230952137102,0.0,0.0,-0.6098624733818648,-0.23863738179994384,0.9635580834283104 +0.6475769945321764,1.7680575991847682,1.7680575991847682,1.0,1.0,0.12611669305522338,-0.4747589586702066,1.0619295305167897 +0.5130022892396564,-0.15079841540839423,0.5130022892396564,0.0,0.0,-0.4569046966070314,0.9646910570376893,0.8674828165537817 +1.2438848031848835,3.847558422760337,1.2438848031848835,1.0,0.0,0.7456958711521291,0.3221662657766119,1.0432626443167288 +-1.2170262810169712,0.90219276932464,-1.2170262810169712,1.0,0.0,0.2276458955312635,-0.6445540558140561,1.0911366980805608 +-2.740365193558326,-1.7907640234795863,-1.7907640234795863,0.0,1.0,-1.7232508266334916,-0.3193732730293128,0.8690212024302995 +-0.6343388293484788,-0.3699986639031429,-0.6343388293484788,0.0,0.0,-1.0634496553164643,-0.044929106327135655,0.9031631603502963 +-1.6113734062858462,-0.04380970860796338,-1.6113734062858462,1.0,0.0,-0.21691786730357762,-2.454250683121344,1.2507373802408113 +-1.0200627645738871,-0.5639033759479759,-1.0200627645738871,0.0,0.0,-0.5100858263485697,-0.5246812008103992,1.001460603089347 +2.6160842694420827,5.493073480722998,5.493073480722998,1.0,1.0,0.24718109746579092,0.8846966534730506,0.9382380705707524 +2.051031796534951,4.0155676579557955,2.051031796534951,0.0,0.0,-0.2809290721352569,0.27520815435434337,0.9459044467942344 +0.762784612920491,3.834297906356016,3.834297906356016,1.0,1.0,0.959035430479574,-0.16401107388455136,1.1188536679870906 +2.3407525329723695,1.7024631738042324,1.7024631738042324,0.0,1.0,-0.6845132185858132,1.1882811923196823,0.8292119881046631 +1.949817279953207,4.158813642180205,4.158813642180205,1.0,1.0,0.5434220095001614,1.4406907252572663,0.9141808399481126 +-1.7583258955421566,-2.6303353380527303,-2.6303353380527303,0.0,1.0,-0.5166472787795964,-1.6173836889490938,1.1163602773380406 +4.362542444929939,8.81064105377839,8.81064105377839,1.0,1.0,2.7643886087966556,0.34028229796287285,1.2743173597125355 +-0.7651591571422404,-1.4149149460842476,-1.4149149460842476,0.0,1.0,-1.416023087024453,-1.2924918131239493,0.9877228592752885 +0.4965561440901146,1.414915124340316,0.4965561440901146,0.0,0.0,-0.6516189422389932,0.012386270573636346,0.9357559990341908 +-1.030898486860238,-1.43991993640585,-1.030898486860238,0.0,0.0,-1.2234835065804721,-1.738017155912227,1.0528000877448405 +1.4943697178923645,1.749850093894724,1.749850093894724,0.0,1.0,-0.23832769015757585,0.11778690445776692,0.965015168164468 +-0.3647047209990555,-0.2726404644579166,-0.2726404644579166,0.0,1.0,-0.22417253001235835,-1.0040618997197543,1.0811106982446357 +-0.5569361232754299,2.821258552968268,-0.5569361232754299,1.0,0.0,0.4833173282834553,-0.09893639935768297,1.0599538535230553 +3.8955840725912507,8.818162742024262,8.818162742024262,1.0,1.0,2.3001272932410575,1.6702010931522515,1.0650189793716929 +0.1342183953850541,0.09314081038921562,0.1342183953850541,0.0,0.0,-1.1960396871354433,0.2330958413510431,0.8668290005544347 +-1.5447522158109745,-1.7443319716235284,-1.7443319716235284,0.0,1.0,-0.7593287572961919,-1.706263896006549,1.0993218765826764 +0.2314846618172883,-0.47039141643897886,-0.47039141643897886,0.0,1.0,-0.3201029428149615,0.3119078170245812,0.9387546936864822 +0.8296042656130276,3.8719846673434866,0.8296042656130276,0.0,0.0,-0.3288316079329754,-0.20248334257274225,0.9874446577757747 +2.453559710797479,6.352162531423019,2.453559710797479,1.0,0.0,0.828981125280832,-0.0010119738322044306,1.0865410587382767 +1.1835612117155379,4.356484436001637,1.1835612117155379,1.0,0.0,0.7467801522530453,0.827907022475205,0.9919201320129896 +2.7253161791567,6.140887631258724,2.7253161791567,1.0,0.0,1.4695158645151596,1.417889411143246,1.0051759947535106 +0.8001535555660854,0.10702096211989143,0.10702096211989143,0.0,1.0,-0.2158935818699597,0.7770825278219471,0.9054731891662497 +0.026684848080190227,0.37256957368829985,0.37256957368829985,0.0,1.0,-0.8365818947441945,-0.1650155106669845,0.9350487253217152 +0.41312305432306684,4.766090967179671,0.41312305432306684,1.0,0.0,1.2740892613404258,-0.6417684582716816,1.2111687130008106 +1.8578417867468007,4.126254705572898,1.8578417867468007,1.0,0.0,0.47903115302561006,-0.10090442385113467,1.0597081687173 +-0.7612291880006907,1.0743838615268602,-0.7612291880006907,1.0,0.0,0.26257093683390076,-0.07904153739419774,1.0347514442803327 +-0.12875578160301016,1.0943753494205914,-0.12875578160301016,0.0,0.0,-0.6889318344166574,0.300558639626546,0.9057888591412898 +0.07408406788276067,0.8770923634635855,0.07408406788276067,0.0,0.0,-0.5989979356865979,1.36863586429209,0.8213849664327074 +-0.17808692496716982,-0.7438404674327939,-0.17808692496716982,0.0,0.0,-0.21723874223893308,0.9302288626325181,0.8915919016190696 +-2.2695749559053726,-2.308174373577681,-2.308174373577681,0.0,1.0,-1.4366220207773277,1.2228309909824024,0.7664810519665807 +-0.38583971349923063,-2.1155268307229083,-2.1155268307229083,0.0,1.0,-1.4546713687935942,0.8514850808646727,0.7940446024314339 +-1.6254798296705852,-1.8602543506808453,-1.6254798296705852,0.0,0.0,-1.0345499914748433,-0.4795036130413642,0.9460076362250378 +-0.499582645578198,0.13644461967551957,-0.499582645578198,0.0,0.0,-0.8139443784368584,0.5332847303036176,0.8739580424106808 +-0.8003990669893933,-0.922517456551258,-0.8003990669893933,0.0,0.0,0.13249354189388493,-1.4948825769041134,1.1767278897585414 +-1.7270456574538817,-2.0930039185243707,-1.7270456574538817,0.0,0.0,-1.4101896374234864,-1.006883708636966,0.9604718615032023 +-2.206685445915244,-3.9023299351111347,-2.206685445915244,0.0,0.0,-1.887900277899167,0.29016843429052935,0.804280756430297 +-1.63863374916401,-3.4192208239484563,-1.63863374916401,0.0,0.0,-1.0917320989990087,-0.7987850406654543,0.9711302245482676 +0.5637864437536763,0.7815672242856104,0.5637864437536763,0.0,0.0,-1.5554967453471011,1.792084140634175,0.7155111557247253 +0.35020252780505456,-0.8787715660490498,-0.8787715660490498,0.0,1.0,-1.3231251323665791,0.04635645689131002,0.8720154311770412 +0.9372018196786733,0.908502976181677,0.9372018196786733,0.0,0.0,-0.36023299531175534,-0.3473699724695626,0.9987145246479643 +1.8960963242283408,6.6814901857097935,6.6814901857097935,1.0,1.0,1.9932451095443722,1.0271662316169112,1.1014284054133627 +-0.44201059121846126,-1.8895308233224866,-0.44201059121846126,0.0,0.0,-0.8496189889189213,-0.12641619289470862,0.9302329134672351 +-0.7768797561792258,-0.4505432888197898,-0.7768797561792258,1.0,0.0,-0.48624449465762193,-0.5272480975786977,1.0041087782710199 +-3.599541975448015,-4.152050014872502,-4.152050014872502,0.0,1.0,-1.8361389823413454,-1.2914426269477761,0.9469872631787504 +-0.5720101375394802,0.7047392476518797,0.7047392476518797,0.0,1.0,-0.2901075486689523,-0.018599589495065127,0.9732144736892437 +0.7013723375416113,1.1393018435862905,1.1393018435862905,1.0,1.0,0.546274761000281,-0.5266184091333177,1.1132562918771003 +-0.33162038339200817,0.47063445135101734,0.47063445135101734,0.0,1.0,-0.015069454104234077,0.421685156057924,0.9572645767392374 +-1.8424586350200018,-2.2897361600285997,-1.8424586350200018,0.0,0.0,-1.3159563197084923,-1.387975607576887,1.0072279250462284 +-2.4620882694453305,-3.504897744507528,-3.504897744507528,0.0,1.0,-1.8971356487360367,0.5396567161945874,0.7837389888145995 +2.018722431490861,4.681519934032787,2.018722431490861,1.0,0.0,0.7851733262538038,1.138598866214226,0.9652747009107931 +2.583941600852803,5.122995036709249,2.583941600852803,1.0,0.0,1.2585283272921723,-1.6360956296775793,1.3357092119486833 +-2.114864250457483,-1.6031770564649894,-1.6031770564649894,0.0,1.0,-0.660211646036314,-2.0186666823043713,1.1455049035699776 +1.4151545187326218,2.9426531842886012,2.9426531842886012,1.0,1.0,0.33860757695378313,-2.0356426382388584,1.2679799220183263 +0.5920820163064913,1.004711881007802,0.5920820163064913,0.0,0.0,-1.215478210589167,-0.9514369798908509,0.9739414178725649 +-1.3470151667790788,0.41396562582584084,0.41396562582584084,1.0,1.0,-0.061771268227395065,-1.6393965455856032,1.1708881082399005 +1.5444846394639475,4.949953347195572,1.5444846394639475,1.0,0.0,1.478486546479685,0.6142916188762564,1.0902635900723234 +0.871783943753939,2.6596161513747276,2.6596161513747276,1.0,1.0,-0.4696852073168237,1.4098283309162127,0.8286550171505956 +2.37721056140974,3.9807094775877614,2.37721056140974,1.0,0.0,0.8637009821880007,-0.6640622095408878,1.165064347237839 +-0.3759670862674156,-1.3544250821743151,-1.3544250821743151,0.0,1.0,-1.6475026944008544,0.11218002488009292,0.8386445914908608 +2.3778718608018488,5.035757520446639,2.3778718608018488,1.0,0.0,0.18055333790945194,-0.4979755637867528,1.0702078588012816 +-1.3653228580634678,-0.13874510128269057,-0.13874510128269057,0.0,1.0,-1.248627214849683,-1.0581110353886807,0.9811287170864819 +-0.18065648462145745,-0.8893897291080319,-0.18065648462145745,0.0,0.0,-0.2789787284862981,1.2832152899367348,0.855371499699044 +0.18184005038846718,-1.3774127738256314,0.18184005038846718,0.0,0.0,-1.4248888586496125,0.6967477943211569,0.8088323089529543 +-2.8341728891112927,-3.0380847648739957,-2.8341728891112927,0.0,0.0,-1.7309914263413122,-2.3211425225792257,1.0607912687760623 +1.1998890993371127,2.012524215826309,2.012524215826309,0.0,1.0,-0.28989675325104663,0.36983263784191295,0.9361561971693857 +0.2961724966598596,1.3187414882888644,0.2961724966598596,0.0,0.0,0.0764260709987961,-0.26527593343273037,1.0347607084725343 +-0.06349545209552143,0.21335435696853075,0.21335435696853075,0.0,1.0,-0.3336255466732185,-0.16392558593696807,0.9831731832481744 +2.0758159807068965,4.433286541409015,4.433286541409015,1.0,1.0,0.2872507721088968,1.7552121550235582,0.8634699879418162 +-0.6139661481250479,-0.21969895643060544,-0.6139661481250479,0.0,0.0,-0.8085187028438763,0.36898659248982435,0.8889177836900828 +1.3277794011487072,4.95028900401476,4.95028900401476,1.0,1.0,0.9357459615001943,0.9284321439133227,1.0007316492835425 +1.2614007818849728,1.7343541280424994,1.7343541280424994,0.0,1.0,-0.053959407320718585,0.43465716788692715,0.9523128659088154 +-0.19414460259080235,2.8122614797402585,-0.19414460259080235,1.0,0.0,1.1885907305568713,-2.2683464792098103,1.412969786531579 +-0.7642922866061015,2.312992087016009,2.312992087016009,0.0,1.0,-0.30536693897064593,0.772180933353725,0.8978477331666626 +1.5663987998853035,4.318694155451847,1.5663987998853035,1.0,0.0,1.022641513312367,-0.23553529788915223,1.1340753860793946 +-0.3983181969046449,-1.2374413093963978,-0.3983181969046449,0.0,0.0,-1.3774477845948647,-0.0091422875110401,0.8721179942605319 +-1.718816709793478,-2.2413194407371075,-1.718816709793478,0.0,0.0,-1.352128981737831,-1.386387228536185,1.003431699524017 +0.0929187391183226,3.872892283495028,3.872892283495028,1.0,1.0,0.7032401674405889,2.358224597418697,0.8474711827183822 +-0.5557411664263832,0.6560072501250266,0.6560072501250266,0.0,1.0,-0.9914549791667513,0.5034500622655959,0.8611466153057886 +-1.2565093712914432,0.6528214880084818,0.6528214880084818,0.0,1.0,-0.33478826022829516,0.1576384446748076,0.9519500914711104 +-0.8559881251722372,-0.4730993934880409,-0.4730993934880409,0.0,1.0,-0.9583386245910155,0.035058110540900626,0.9054351034613851 +-2.2982693828724243,0.6128503316366595,0.6128503316366595,1.0,1.0,0.3286643785246886,-1.2038696974144958,1.1656203185608554 +-0.28719888593782134,-0.736570309560139,-0.28719888593782134,0.0,0.0,-0.960339930097216,0.32145880302275104,0.87969513123598 +2.9658188015602835,7.845875330306027,2.9658188015602835,1.0,0.0,1.4273505547402303,0.2818537985348454,1.1213683443487614 +0.8402157122147313,1.1851170352747222,0.8402157122147313,0.0,0.0,-1.282510629227122,1.035196279367127,0.793127973949952 +2.2892827877307655,4.034337666268905,4.034337666268905,1.0,1.0,-0.03144290231105735,-0.48699697664313374,1.0466089929253122 +1.3359870782292593,4.94977447759716,4.94977447759716,0.0,1.0,0.1053999681937699,0.5683385870601487,0.9547613529900808 +1.9444532887692647,2.9156692359407583,1.9444532887692647,0.0,0.0,-0.34821799040011064,2.2671111112389677,0.7698705384418133 +0.5974102845805856,1.7990131938871796,0.5974102845805856,0.0,0.0,0.05265683419337868,0.4425943960724984,0.9617567141558172 +-0.5982728049959638,2.8682444030188328,-0.5982728049959638,1.0,0.0,0.13591812599040665,0.5452979621479733,0.9598886569257346 +1.9347300733767103,6.143911443997764,6.143911443997764,1.0,1.0,0.8204156319063817,2.0085278614616393,0.8879754143149369 +2.632986057528405,5.079597369470486,5.079597369470486,0.0,1.0,0.0705892407029515,1.4711993803067072,0.8693051940280275 +-0.9752064860404767,-0.744489810530764,-0.744489810530764,0.0,1.0,-0.11923830409519898,-0.5167518092029701,1.0405520092972202 +0.7022392023257179,3.7566476920939205,0.7022392023257179,1.0,0.0,0.35818598346675523,0.990039124634056,0.9387694903299312 +0.29777999004391065,3.783597989838034,0.29777999004391065,1.0,0.0,0.48081735653377083,0.136946474571318,1.0349851597370687 +1.7546459109784425,4.927508962320509,4.927508962320509,1.0,1.0,1.3888952596969297,2.2881419269662224,0.9140000372921676 +-1.5704308150785686,-1.5662695633966337,-1.5704308150785686,0.0,0.0,-0.7341152812452028,-0.9309944719607209,1.019883004321191 +0.6101327919413425,2.170293341229858,2.170293341229858,1.0,1.0,0.3807738224872819,0.40014230921016963,0.9980650258087103 +1.2232468625418598,2.1334042132080206,1.2232468625418598,1.0,0.0,0.12588858506224193,1.512771335579518,0.8704993425308936 +-1.614779278115362,-0.4249338930559724,-1.614779278115362,0.0,0.0,-0.3802696099146903,-0.24161635452949812,0.9862303553615339 +3.631905191145335,8.004965835551538,8.004965835551538,1.0,1.0,1.3004509135111957,-0.25772836763258655,1.1686134120713272 +0.16183062131887263,0.13040278299887187,0.16183062131887263,0.0,0.0,-0.21568430560684473,-0.8040780621755199,1.060604868097267 +0.04786400412024083,1.7377853019290717,0.04786400412024083,0.0,0.0,-0.9355599564184436,-0.48132434356555404,0.9555926440538192 +-0.9736756859570668,-1.8112074147384578,-0.9736756859570668,0.0,0.0,-1.346732801397444,-0.9886145713459833,0.9648218336749739 +0.2034099811296724,2.7017812079686365,2.7017812079686365,1.0,1.0,0.39353457209208353,-0.6659594384514674,1.1117656209150835 +2.579199021462448,4.518159196915393,4.518159196915393,1.0,1.0,1.1378864368526778,0.2281283317047387,1.0952425115855016 +-0.2571866821774027,-1.2844797096798062,-1.2844797096798062,0.0,1.0,-0.82797699172743,0.860121952115847,0.8446694645323575 +-0.3909264686381119,-0.12046447402972738,-0.12046447402972738,0.0,1.0,-1.5091998395465083,1.2032650825808888,0.7624285405431745 +0.4956590804640232,-0.08740449617600754,-0.08740449617600754,0.0,1.0,-0.27859609732848994,-0.6663829697675251,1.039540394640469 +0.014928081296751272,0.3863084626828708,0.014928081296751272,0.0,0.0,-0.20688239396056401,-0.1771851817194239,0.9970346840360832 +-0.4014447385070877,-0.025718755705670338,-0.4014447385070877,0.0,0.0,-1.0211645186590839,1.0142604455077675,0.8158355334992078 +3.108940414555301,1.7387120835736494,3.108940414555301,0.0,0.0,-0.3242870813951371,1.395651261973576,0.8419843645444471 +-0.21369065642657425,-0.3895738377072069,-0.21369065642657425,0.0,0.0,-1.5449112583363802,0.435054211784978,0.8203726858698688 +1.4864593438418159,4.477349149199814,1.4864593438418159,1.0,0.0,0.15064236182885998,0.9089088832855748,0.9269768820861227 +-2.260919056639633,-3.498257077115266,-3.498257077115266,0.0,1.0,-1.2303833999464844,-0.8607184258872499,0.9637084215402699 +-0.10839780719521064,2.424661439615278,-0.10839780719521064,1.0,0.0,0.5099594735059387,-0.8485900172631224,1.1455157234304831 +0.4817756541916708,2.109890041074386,0.4817756541916708,1.0,0.0,0.5602309710803579,-0.7524873383539883,1.1402777019505708 +-0.46140104982800845,-0.038171975057245136,-0.038171975057245136,0.0,1.0,-0.2288620966353904,1.1746174472845243,0.869055791004064 +4.4647149251377645,7.51821212648919,7.51821212648919,1.0,1.0,2.067197478528039,0.6887228569539413,1.1478004539151434 +-0.8801834689356706,0.5038266462077047,0.5038266462077047,1.0,1.0,0.03064255540386404,0.9702836349189554,0.9103154347401476 +0.14075006450110106,3.113183500288067,3.113183500288067,1.0,1.0,1.4477962339145733,0.47646098966785577,1.1020075087163128 +7.074335491173793,10.829370033690338,7.074335491173793,1.0,0.0,4.007021094957828,0.4366174004266521,1.4290935604148889 +-3.461626337027484,-4.77239474892259,-4.77239474892259,0.0,1.0,-1.910272896189057,-0.9941117528082652,0.9124553608504135 +-1.4247546524228405,-1.3659747614148365,-1.3659747614148365,0.0,1.0,-1.186547910138583,-0.11747414747055865,0.8986089016469266 +1.9808715670546175,3.2143918035062122,3.2143918035062122,1.0,1.0,1.2467196599341615,-0.38427418158255267,1.1771536742944695 +-0.47679974489816657,-0.1008394483535644,-0.1008394483535644,0.0,1.0,-1.184826853137617,-0.11410021699091306,0.8984603852390827 +2.718107029669799,4.2222497085937825,4.2222497085937825,1.0,1.0,0.5929510713348326,1.6632529546613484,0.8984985484078184 +-1.7979848875002906,-0.6115591551810451,-0.6115591551810451,0.0,1.0,-0.7624024839989393,-1.0603784493705137,1.0302459874935177 +2.4397942424452217,7.503860851789515,2.4397942424452217,1.0,0.0,1.105087835913401,0.19990961144783198,1.0947410184310757 +-0.07325456968058996,2.939025291090212,-0.07325456968058996,1.0,0.0,0.43687722160218057,-0.3803300144270801,1.0851527099680855 +1.1185843145707277,1.744276297268592,1.1185843145707277,0.0,0.0,-0.48896131303986634,0.9098653073071499,0.8694602501102452 +-1.5155290738734357,-1.295858521291982,-1.295858521291982,0.0,1.0,-0.32379456504621096,0.01156908761447003,0.9670197446616783 +-0.3942956863560411,0.4369385865152018,0.4369385865152018,1.0,1.0,0.29472983278443743,-2.1768064664239266,1.2803758017022875 +2.384094118010816,4.553659196302875,2.384094118010816,1.0,0.0,0.7998637216880239,0.5676138218269108,1.0234967901728096 +1.9448050167391526,2.355212824785411,1.9448050167391526,0.0,0.0,-0.2182739114450759,0.7667351536840622,0.9061948711365453 +1.0153271039879508,4.846435310801548,1.0153271039879508,1.0,0.0,0.9281804293152326,0.4187934314103059,1.052258387646501 +1.583833258992082,2.4118253073926126,2.4118253073926126,1.0,1.0,0.8604371228525692,-0.3913572834275835,1.1333518041810593 +1.3220008395541998,3.6737759356072255,3.6737759356072255,1.0,1.0,0.0031021482824248933,-0.5066810839896212,1.052300082566171 +-2.8721543909088214,0.6533250921933296,0.6533250921933296,1.0,1.0,0.21890517001958193,-1.6785069167170346,1.2089366948400135 +0.4496879042327588,3.42519690851545,0.4496879042327588,1.0,0.0,0.36027694946503125,-1.2832339918785343,1.178628051853791 +3.8476993114509623,4.519642189472887,3.8476993114509623,0.0,0.0,-0.3317841969574998,2.2022150443966435,0.7761574156630159 +1.1004052184648394,2.102650950247794,1.1004052184648394,0.0,0.0,-1.0928877426732964,2.1552524091163883,0.7226617452596428 +-0.9904928017987871,2.0031280986035953,2.0031280986035953,1.0,1.0,0.7644496390406532,-0.513126414444831,1.1362775417145985 +0.6702403101247738,5.714910527818304,0.6702403101247738,1.0,0.0,1.5724223049190729,-0.35836195260731774,1.2129779184951395 +2.9284149480269237,4.577799268193357,2.9284149480269237,1.0,0.0,0.4745280086448153,0.46849486211642105,1.00060349668373 +2.724669443016412,5.508605148477688,2.724669443016412,1.0,0.0,1.224392009944726,-1.0317652081734912,1.253094036038522 +2.139526314444483,3.7566149890043636,3.7566149890043636,1.0,1.0,0.3142253307451794,2.174199552888119,0.8302757352520965 +-0.1438834301679761,-1.8413000845124963,-1.8413000845124963,0.0,1.0,-0.7298411019582876,-1.6405285863607235,1.0953443058825947 +1.7495230399130377,3.884959841637406,3.884959841637406,1.0,1.0,0.4005236000477763,0.13211606225018924,1.0272042113501045 +0.3039784180979658,3.1434432970885826,3.1434432970885826,1.0,1.0,0.017219483087627784,-1.5841339774405656,1.1736697118051356 +0.8047841327359797,4.453242815118102,0.8047841327359797,1.0,0.0,0.9258393282836708,0.23249002649281578,1.0717951255723708 +2.5343983216748187,3.883357811418626,2.5343983216748187,1.0,0.0,0.8724916581953087,-0.6286086260285465,1.161962084550072 +2.7918185759620213,3.6604392461070376,2.7918185759620213,1.0,0.0,0.39125809799161854,-0.011110316817231338,1.0410573105513348 +0.7243088607951819,1.7073353368892719,0.7243088607951819,0.0,0.0,-0.06885847283780122,-1.511897275561009,1.1552351083505714 +-0.7784315815559113,-1.1228989950512083,-0.7784315815559113,0.0,0.0,-1.285886346698707,-0.4384375591057437,0.918746646289132 +1.1757941737473168,4.1979254236927535,4.1979254236927535,1.0,1.0,0.7857789043374526,-0.24979086196487044,1.1091089848573492 +-0.6403351902418722,-0.6719037434194608,-0.6403351902418722,0.0,0.0,-1.4405930218963818,1.3265301388247557,0.7582726085778665 +-0.8063883482953091,0.38399278121080727,-0.8063883482953091,0.0,0.0,-0.06660019005416874,0.18960411032580363,0.9747049881384344 +0.9019138559811937,3.064480102292382,3.064480102292382,1.0,1.0,0.8778275125413555,-1.2308867221291384,1.2347535845195843 +1.6237539178646019,5.215968190290274,5.215968190290274,1.0,1.0,1.1116793138943866,0.43762553459208303,1.0697290348335606 +3.5906940191216528,5.770074222165027,3.5906940191216528,1.0,0.0,0.43262099746651017,0.7884803530196343,0.9650397994354646 +2.931954824970356,5.58844957208988,2.931954824970356,1.0,0.0,0.9397887773082158,-0.07077236027972189,1.1063387208457878 +0.008299956930160945,4.155290785932879,4.155290785932879,1.0,1.0,1.156548026587299,0.25522167839642435,1.0943194189381598 +-0.14790516304765344,1.4262235174066102,1.4262235174066102,1.0,1.0,0.20587271117577166,-1.3470912585109913,1.1680041026803702 +-1.0907979019241258,-1.9172947975046737,-1.9172947975046737,0.0,1.0,-0.8857388370020617,-1.8091254906466385,1.0967361857533229 +0.031378117847816855,1.9085297617026744,1.9085297617026744,1.0,1.0,0.9090917685895351,-0.9876683443799446,1.2088578779082535 +-1.6924958463119748,-3.0256391961886617,-3.0256391961886617,0.0,1.0,-1.3179217425382883,0.07815082872965033,0.8696997367067346 +1.7836832657917767,4.7356854741444305,1.7836832657917767,1.0,0.0,0.04228044662975206,-0.4620145381710934,1.0517227126913924 +-0.8420593673233063,-0.4250490988040776,-0.8420593673233063,0.0,0.0,-0.1411522377253569,0.6454747636251159,0.9243516555572886 +-1.3287233580958304,-1.504997601215143,-1.504997601215143,0.0,1.0,-0.21719519949555022,1.338753045404064,0.8559059122392068 +1.0645095974471375,3.606683274091171,3.606683274091171,1.0,1.0,1.341868096885412,1.436076142877003,0.9906234321562233 +0.07846315719082009,2.1261392853317354,2.1261392853317354,1.0,1.0,0.3034868150339472,0.04543868816188553,1.0261406392912407 +0.5134826420682076,1.6633722729340228,0.5134826420682076,0.0,0.0,-0.49563744772357765,0.825279934637688,0.8762606047897273 +-0.3349330455921364,-1.4170813230189783,-1.4170813230189783,0.0,1.0,-1.3777028594674616,1.2687976252183681,0.767474481856793 +1.3519412723095252,4.81411169788378,1.3519412723095252,1.0,0.0,0.3183443688687282,0.35284014767155975,0.9965563650779632 +0.7878224883065369,-0.484504716617151,0.7878224883065369,0.0,0.0,-0.9887892239898065,0.7357880394963623,0.8415938653054619 +2.328996498326122,5.4278675938231835,5.4278675938231835,1.0,1.0,0.5045381519585589,1.353485503364602,0.9186089765569819 +1.3794726859940727,2.666801451762386,1.3794726859940727,1.0,0.0,0.31328669203235376,0.7800875702184213,0.9543926705986475 +-1.0797969567402255,-1.7628146701198328,-1.0797969567402255,0.0,0.0,-1.9049291018524068,-0.09833003407481083,0.834719192767966 +1.2102061830504873,1.8652477055961043,1.2102061830504873,1.0,0.0,0.3285923958623032,-0.3659483158086327,1.071922827909714 +0.2689187063763858,5.172320470848139,0.2689187063763858,1.0,0.0,1.2654784098808876,0.2194676585851029,1.1102676086374699 +-0.08627420464381785,-0.1949432993588197,-0.1949432993588197,0.0,1.0,-1.5222616192978917,0.4113618279231467,0.824183281565416 +-1.0626210331253518,-1.5491783337436011,-1.5491783337436011,0.0,1.0,-0.584378247981164,-0.6711949667824946,1.0087194668888966 +2.7309792567861924,1.3817249789859627,1.3817249789859627,0.0,1.0,0.06635005707874223,1.7360791422373203,0.8462225364510763 +0.7114463071368708,0.17351351623309963,0.17351351623309963,0.0,1.0,-0.2547137294962782,-0.2909543104754012,1.003630632936594 +1.0133852311082627,2.1323403672577212,2.1323403672577212,0.0,1.0,-0.17999923373534943,1.5704743405681436,0.8394172671831363 +0.49484211574078596,2.206365042320199,0.49484211574078596,0.0,0.0,-0.04109566494906559,-1.7872764903306424,1.1907913457479722 +0.26676409635561665,-0.4620601282286052,0.26676409635561665,0.0,0.0,-0.7049487113987407,1.0506680335912215,0.8389856515580629 +-0.09547242632230431,0.43951582945591955,-0.09547242632230431,0.0,0.0,-0.2751486009341985,-0.18994132725334004,0.9915154711438428 +1.1993414637934294,2.656795350674717,1.1993414637934294,1.0,0.0,-0.33436290146172587,0.8672371599218638,0.8867785353558939 +3.4891399465225637,5.886715649743318,3.4891399465225637,1.0,0.0,1.2535727889824617,-0.02760200835855995,1.1366865324849786 +2.418594194498426,4.470613314087859,2.418594194498426,1.0,0.0,0.7055321386803352,-1.019267039434113,1.188247957755842 +-1.7946517005153542,-1.886772581826133,-1.7946517005153542,0.0,0.0,-1.0608503598043066,-1.0626974947839616,1.000184730558554 +-0.44899467603276705,2.2908902770805355,2.2908902770805355,1.0,1.0,-0.048276786423211475,0.0283769228872139,0.9923639331014819 +-0.6897978255351203,0.19047861260534166,0.19047861260534166,0.0,1.0,-0.3625940331110767,-0.694906433441254,1.033789565137238 +1.9107643156692253,1.8705700194303159,1.8705700194303159,1.0,1.0,-0.18245916438303936,1.636893726547908,0.8336552852598621 +1.7332035062485494,3.78552751974146,1.7332035062485494,1.0,0.0,1.083681472490164,-0.12458203636388009,1.1284289446659022 +0.5229072337698082,2.6248103823607036,0.5229072337698082,1.0,0.0,0.6953821558175269,0.1380164677572003,1.0573191162093465 +1.4217338750095285,0.9944885091208614,1.4217338750095285,0.0,0.0,-1.0180978682943962,1.6112515748139513,0.7687919099718665 +0.7933328760507076,3.316641858401578,0.7933328760507076,1.0,0.0,-0.05302590441450362,1.2572914807195075,0.877189933244776 +-0.4208073052457498,0.48935548919996497,0.48935548919996497,0.0,1.0,-0.9923759194579688,0.5292065062406835,0.8588523629823662 +-0.560354446543395,-0.3897103643961709,-0.560354446543395,0.0,0.0,-0.6756718400267928,-0.2619179179759995,0.959468885194975 +-2.084213685857171,-3.4397780564363396,-3.4397780564363396,0.0,1.0,-1.419039614305503,-0.02056497324337979,0.8694908538485439 +2.6860523562441863,4.34193280780304,4.34193280780304,1.0,1.0,1.19446248200529,-0.2600371662961453,1.156559864465163 +0.35219987990777724,1.9495757669726932,0.35219987990777724,1.0,0.0,0.3756255470690572,-0.8940695535249451,1.1353823995118155 +-0.9542275450812089,-0.5292403282572149,-0.5292403282572149,0.0,1.0,-0.7852100009036849,0.20376758747682983,0.9058353169445844 +0.43670529556486504,3.353683499521633,3.353683499521633,1.0,1.0,0.3268377914390915,-0.30352338390799394,1.0650653060697965 +2.5055542425128925,4.547396002511006,2.5055542425128925,1.0,0.0,0.915841865269841,0.2163075399901072,1.0724582384223524 +-1.6220409001686558,-2.589318149985946,-2.589318149985946,0.0,1.0,-0.8717595077982291,-0.22821403715356395,0.9376724915600365 +-1.226138856812919,-1.8573194905257853,-1.8573194905257853,0.0,1.0,-1.8084929556113656,1.9152995530407808,0.6890928539003696 +-0.9934805637705779,0.12419194111582732,-0.9934805637705779,0.0,0.0,-0.6900997273309704,-0.2551538337945811,0.9574377344339462 +1.0261130076016032,3.0367478574205538,3.0367478574205538,1.0,1.0,-0.41007846978927565,1.2645805512027541,0.8458054569877207 +0.0608162647582986,0.8134798672268408,0.8134798672268408,0.0,1.0,-0.2845853607834223,0.5837897315656461,0.9168260592980473 +1.6061946116825014,4.922308956065922,4.922308956065922,1.0,1.0,1.6769053957485305,-0.662844057548848,1.2636128324083116 +-0.050668318636605675,2.8406668939359108,-0.050668318636605675,0.0,0.0,0.28884296346361893,-1.835833774229679,1.2367261342248066 +-1.539724979888474,-1.9860166169757343,-1.539724979888474,0.0,0.0,-0.7478497653863068,0.19733596447737065,0.909810836564842 +-0.5026560946872906,-1.2383730915271594,-0.5026560946872906,0.0,0.0,-0.6019751153990539,0.08554434120608562,0.933558224527969 +-1.2105924454496475,-1.1233732541098127,-1.1233732541098127,0.0,1.0,-1.1447516371004294,-1.2245754682746801,1.0080143272778141 +0.8336157242675888,1.0300916081392772,1.0300916081392772,0.0,1.0,-0.12037514775671339,-0.39629136141680177,1.027975795339319 +0.319451891160415,0.9726300763154183,0.9726300763154183,0.0,1.0,-0.25792516974558516,0.3564971553413177,0.9404072691390979 +1.5429811076562432,4.812175563164062,1.5429811076562432,1.0,0.0,1.0888431548471202,0.2739183916500867,1.084905055074507 +-0.8560553118379229,-1.0020385091765447,-1.0020385091765447,0.0,1.0,-0.7686624685858062,-0.5768627100956472,0.9810027895439368 +0.1834433609737085,0.10813314717560318,0.1834433609737085,0.0,0.0,-0.07320032766764406,2.319111403829819,0.7872328742326807 +2.0284289162025946,4.16543240312,4.16543240312,1.0,1.0,0.9318412407089504,-0.5735479893635526,1.1624605506830252 +1.3174688293019716,2.5855487335326117,2.5855487335326117,0.0,1.0,-0.6288140796634365,-0.3499484521390987,0.97249867811773 +0.11210972132256125,-0.10167058582747929,-0.10167058582747929,0.0,1.0,-0.6618251461367796,-1.1962645591191212,1.0548978539058254 +1.2351752036815213,3.6618043085514853,1.2351752036815213,1.0,0.0,0.45431812527625604,0.6373441611228107,0.9818638718723819 +1.2250084969374433,3.9331531580543198,3.9331531580543198,1.0,1.0,1.5187826004310279,-1.7671108267430538,1.3890073324742387 +0.08947050188677719,3.5814516048009697,3.5814516048009697,1.0,1.0,0.4734596729281016,0.2811208910326856,1.0194200408524863 +0.4135269453835395,3.2237449867743937,0.4135269453835395,1.0,0.0,0.6206604073838781,0.21401129575746375,1.0415030510201364 +0.8595646626958726,3.145725183002688,0.8595646626958726,1.0,0.0,0.7738381662260942,-1.8383922322423916,1.2985172542270824 +-3.4065168376204134,-2.800205054470267,-2.800205054470267,0.0,1.0,-0.935394458144856,-1.7635635313905662,1.0863428889124653 +-0.9792147607000838,0.08247712599434132,0.08247712599434132,0.0,1.0,-0.37506047368339474,0.26392558826833445,0.9381001122484174 +1.031181104475525,3.445572134398428,3.445572134398428,1.0,1.0,-0.10253652323414132,0.7485025230356384,0.9184168516832083 +0.380511337137608,2.734007083832852,0.380511337137608,1.0,0.0,0.29737105238722233,0.4680670830614294,0.9830752572001511 +-0.17619657939578415,2.050388347576054,2.050388347576054,1.0,1.0,0.7112515275769892,-1.527334620718262,1.2508941490427237 +1.7545200361926179,3.4038414997015063,3.4038414997015063,1.0,1.0,0.44769457064801055,0.7323229900761284,0.9719384088181352 +-0.9788641405711562,-1.0535002800294082,-1.0535002800294082,0.0,1.0,-0.6873116987898921,-0.5379735553773496,0.985177142043433 +-0.07963877740222158,-0.12915494161145857,-0.07963877740222158,0.0,0.0,-1.6383903569388252,0.6936545378171449,0.7919916030166682 +-1.0243657104983643,0.9263313768028296,0.9263313768028296,1.0,1.0,0.6618689529579059,-0.6978851295755951,1.1456537196224181 +0.6932502956129476,1.8983856742752603,1.8983856742752603,0.0,1.0,-0.10984858591988504,-0.14079514602635446,1.003099449401916 +-0.1758472062365969,2.4156635658766548,2.4156635658766548,1.0,1.0,0.5039517016215393,-1.0939768087957509,1.1732678046137073 +-1.6048366225634711,-1.8800538057303375,-1.6048366225634711,0.0,0.0,-1.7283474063871465,0.8076517482269658,0.7760022064330423 +-0.8155441059111943,-1.792267412992307,-0.8155441059111943,0.0,0.0,-1.2772345678603483,1.376395215353629,0.7669275213827957 +-0.7308454919391922,1.392993962284057,1.392993962284057,1.0,1.0,0.5243979386053494,-0.5337656719003444,1.111617721451159 +-0.5403726870618412,-1.0445954742170032,-1.0445954742170032,0.0,1.0,-0.5269145927184594,0.09232065504562374,0.93995476729351 +-0.17741347867666812,-0.06399450782450705,-0.17741347867666812,0.0,0.0,-0.8988508207172266,0.03052036576288138,0.9112507991768596 +2.166764404519762,5.338756606460326,5.338756606460326,1.0,1.0,1.834763236322749,1.09895056324367,1.07635600567259 +-0.11926122474694101,2.729785247218409,-0.11926122474694101,1.0,0.0,1.096639928353727,-2.1531026424396242,1.3839950174482274 +2.986564846230956,4.6145726956701205,2.986564846230956,1.0,0.0,0.981961223031041,2.6358267962402633,0.8475660079099956 +-0.6976844083037066,0.04480426596148504,-0.6976844083037066,0.0,0.0,-0.273985861403739,0.6505548866270948,0.9116910795953994 +1.6426695816499106,3.6831996805725837,1.6426695816499106,1.0,0.0,0.4128919928404313,0.42256977355592185,0.9990326900746161 +-0.12619898829838933,0.07211773863442816,-0.12619898829838933,0.0,0.0,-0.5380360025187287,-0.6241854291602031,1.0086521580754788 +1.6740676688039604,5.635894993475521,1.6740676688039604,1.0,0.0,1.9334531781035262,-0.014664174153316275,1.2150822077772978 +2.372499888773928,3.888205552653598,2.372499888773928,0.0,0.0,0.06632309987092243,1.4252921899372717,0.8729326193410912 +1.0670928190352564,7.110328144120915,1.0670928190352564,1.0,0.0,2.3133693377472877,-0.2589787889669064,1.2933487857899326 +1.020710337534791,3.033053395227513,3.033053395227513,1.0,1.0,0.30102668347461997,0.31460957196283607,0.9986426332079564 +-1.1655364064502185,-1.500200410751874,-1.1655364064502185,0.0,0.0,-0.10413430595826176,-0.49250929274462574,1.0396015333003492 +1.5856321813395224,2.113194013000419,1.5856321813395224,0.0,0.0,0.11786772772160183,0.3195980536445914,0.9800290816622091 +-1.2108704031433577,-1.6921504329651944,-1.2108704031433577,0.0,0.0,-0.647230020460002,-0.11889568967753941,0.9485379943785439 +-0.882569825219329,0.09313215555870702,0.09313215555870702,1.0,1.0,0.450162623100964,0.33010017108270057,1.0120786094815213 +0.42424718181730287,2.934529188668252,2.934529188668252,1.0,1.0,0.8142500204795063,-0.7395055520165535,1.1680965658729232 +-2.24573938256425,-4.5015447408296785,-2.24573938256425,0.0,0.0,-2.032211003815691,2.267014919457508,0.6505594510673548 +1.6960587647565473,4.589330923991766,4.589330923991766,1.0,1.0,0.7474092808368609,0.09488759784476324,1.0674281619929182 +0.3417349498706922,-0.49433916342723205,-0.49433916342723205,0.0,1.0,-0.15061420350680815,1.6506588021284996,0.8351638878103297 +0.3517083386385155,0.09462339877599613,0.3517083386385155,0.0,0.0,-0.337804446395274,-0.966940439757676,1.0649348241806118 +-0.18162246112409436,1.27819187643155,1.27819187643155,1.0,1.0,0.16671056365055098,-0.688140126558753,1.0892452977239082 +0.7826793987306748,1.7281933086501855,1.7281933086501855,1.0,1.0,0.6381274005093921,0.1702069138480975,1.0479040733706044 +-0.36200715196064837,0.6192005728765207,0.6192005728765207,0.0,1.0,-0.9505172779824,0.9997267101518209,0.8228145821116348 +-0.2428505041787557,0.1597498784917476,-0.2428505041787557,0.0,0.0,-1.2307984557514609,1.0193006081697777,0.7985083083837784 +2.667527514926312,4.887855354731147,2.667527514926312,1.0,0.0,0.46864993441255604,0.6486695090294787,0.9821591098175859 +0.10079928138559913,-0.9619749800524336,0.10079928138559913,0.0,0.0,-0.3435004697134387,-0.7876249559382346,1.0454134453164483 +0.975608243738172,2.8872185595124,0.975608243738172,1.0,0.0,0.8694433953896902,0.7180905931331372,1.0152503986292445 +0.1373305686987995,-0.24753667660733014,-0.24753667660733014,0.0,1.0,0.05375514511512798,-1.4532071924143153,1.1626434326033614 +2.6891739395662357,2.9910973854977465,2.6891739395662357,0.0,0.0,0.32659102974664983,0.6745954036593683,0.9657981342224472 +1.2473941186862203,0.8094210730017827,1.2473941186862203,0.0,0.0,-0.3154856232122566,-0.03271281791377811,0.9721187798170206 +2.3537178000128565,3.90740662938151,3.90740662938151,1.0,1.0,1.1228593847632724,-0.9103951411543134,1.2254712361438853 +1.6990311752385834,5.357770472349782,5.357770472349782,1.0,1.0,2.1312240821297976,0.011480270962467391,1.2361162167557902 +1.5084800416993147,3.878930030371227,3.878930030371227,1.0,1.0,0.34585884182349563,-0.25393873580995313,1.0618150528162367 +0.2579911381441784,0.42050025621304965,0.42050025621304965,0.0,1.0,-1.458128332020343,-0.19541353250813068,0.8813755385129839 +-0.067097350045265,0.9340974014131646,0.9340974014131646,0.0,1.0,0.27567133137868344,-1.6540586037650733,1.2128500382596965 +4.6802888988600415,8.144846769302154,4.6802888988600415,1.0,0.0,3.1791218776789334,1.1210585215090132,1.228515261305447 +1.0418097994553046,5.729466713924293,1.0418097994553046,1.0,0.0,0.9661883133602963,-0.6178074953253171,1.1716342638224844 +-0.09591184651392437,-0.613099326990437,-0.613099326990437,0.0,1.0,0.08352628047344095,0.095782468850462,0.9987751319263174 +-1.2053431899025069,-1.0688338253220537,-1.0688338253220537,0.0,1.0,-0.3766603498377022,-0.5996554887643465,1.0225500065421702 +0.970773730977617,2.198672777553545,0.970773730977617,0.0,0.0,-0.4360336668814583,-0.6798634958712205,1.024682678694904 +-1.6093082246330803,-0.16442053192125855,-1.6093082246330803,1.0,0.0,-0.12281915582555021,-0.9461494548383705,1.0858173592707885 +1.4441385853667892,3.2506273584033503,3.2506273584033503,1.0,1.0,-0.6528606363883773,0.5024348353621134,0.8908942484398743 +-1.3135839740684068,-0.6760362707377121,-0.6760362707377121,0.0,1.0,-1.7135630194095826,-1.023837433050815,0.9333522921868899 +-0.24282998079705692,-2.037109863276162,-0.24282998079705692,0.0,0.0,-0.7006338826947824,-0.6553574062139217,0.9954825866968645 +1.3508757914312208,3.838927048310121,3.838927048310121,0.0,1.0,0.2784413795471844,-0.009352920897137686,1.0291975593775482 +2.5332058013441894,6.161675386165258,2.5332058013441894,1.0,0.0,2.309616996173564,0.013765818392881646,1.258077947465541 +-1.5254691585323341,1.6402932660838478,-1.5254691585323341,1.0,0.0,0.5131174334195973,-0.42324587823352816,1.0981603066107575 +-0.7114373887920956,0.035617814420928234,0.035617814420928234,0.0,1.0,-0.15602234577932209,-0.524876889078129,1.037574164403082 +3.1534760716014736,7.214809717986665,7.214809717986665,1.0,1.0,0.07942724014200568,2.022984990535937,0.8233649194666693 +-1.5677275403401962,-0.09851644849103314,-1.5677275403401962,0.0,0.0,-0.2683524368694375,-0.5848119101642688,1.032152004432108 +0.4625548461059754,1.802861532303627,1.802861532303627,0.0,1.0,-0.10448385461813428,1.341920855060435,0.8653333496521436 +0.8355987515594263,4.963873981171833,0.8355987515594263,1.0,0.0,-0.12207182673450694,0.8499780656601438,0.9073699859845192 +0.22069652032547643,-0.31459794768787197,-0.31459794768787197,0.0,1.0,0.01333979202786766,-1.0267605169664478,1.1096115852619786 +0.10896303559581749,2.7211581406733263,2.7211581406733263,1.0,1.0,0.4746235682719507,-0.6768931433112875,1.122043606320227 +-0.942311103927951,2.249789119584073,2.249789119584073,1.0,1.0,0.6862653907952984,-2.7142352452850056,1.405017929069756 +0.9764882000604942,0.968118413467438,0.9764882000604942,0.0,0.0,0.08983205026941504,1.1577822433353024,0.8987098722838074 +0.1902433135188201,2.3314431647735585,2.3314431647735585,1.0,1.0,-0.06340408801116375,0.06189700630841832,0.9875480655349477 +0.4477524325818094,0.5527261728861128,0.5527261728861128,0.0,1.0,-0.8426209049526628,-1.1157162504012759,1.0276858578106955 +0.38281316360500595,-0.0388990844064091,-0.0388990844064091,0.0,1.0,-0.20151080379367187,0.24150141070567444,0.9566657458244006 +1.3027368807154862,5.812579824718371,1.3027368807154862,1.0,0.0,0.7702419627547915,-0.2544291059820683,1.107900858987549 +2.4388185721592164,6.261180029752713,6.261180029752713,1.0,1.0,1.2074953627179554,-0.8549784988703313,1.2290572181334913 +-1.7127219941165674,-0.15858137210775125,-0.15858137210775125,1.0,1.0,0.15315772102007227,-0.7770291469685436,1.0974822435064033 +1.2122982834401528,3.479223555986297,1.2122982834401528,1.0,0.0,0.3912812801400485,0.72496925124211,0.9671817999542474 +0.09022616209289192,-1.3389976806344146,0.09022616209289192,0.0,0.0,-0.8088410189380127,-0.4982774330200097,0.9694209363375819 +-2.5997596120200273,-2.532664850901034,-2.5997596120200273,0.0,0.0,-0.801574815344376,-1.5917506456647237,1.0822233506708676 +0.12188630368174586,1.6946768446032774,0.12188630368174586,1.0,0.0,0.47192227198349335,-0.5770728254525034,1.110599000369636 +0.673965270439693,2.7300313597206767,2.7300313597206767,1.0,1.0,1.3004237599565858,0.3120957911990468,1.1038817116564879 +-0.6749232644092109,-4.185599330693669,-0.6749232644092109,0.0,0.0,-2.117153347220949,-0.09935223527966261,0.8172746177253873 +1.134815585397425,2.018708774571693,2.018708774571693,1.0,1.0,0.6334796486470944,-0.03535011909512143,1.0691703530898473 +0.9734134912604329,2.59140343536475,2.59140343536475,1.0,1.0,-0.333210475860112,1.114276335083437,0.8652397168870128 +-2.8574837508003257,-5.4113253548424805,-5.4113253548424805,0.0,1.0,-2.04283114531741,-1.2097123836596806,0.9200641563882913 +1.822288122963208,3.9585496107534723,1.822288122963208,1.0,0.0,0.36338852433930435,-0.6685622738243565,1.1087076744703541 +1.396766171666741,2.9670482572978485,2.9670482572978485,1.0,1.0,0.049945158819688196,1.8148909026114055,0.838203326916276 +-0.7124442520411136,-0.9365142725803471,-0.9365142725803471,0.0,1.0,-1.0635199128179815,1.0433866769769986,0.8100246019658929 +-1.8609817035174039,-2.653815965008979,-1.8609817035174039,0.0,0.0,-1.348067891106824,0.09648110063171911,0.8654939460148655 +-1.6885646950367363,0.13736294652898867,0.13736294652898867,1.0,1.0,0.06813475452691037,-0.14347471918932309,1.02138642787019 +-0.5038730745029093,0.8607536013815668,-0.5038730745029093,1.0,0.0,-0.026820767317395303,-0.01215954420184393,0.9985349519207116 +-0.10136998034516592,0.8233719823768912,0.8233719823768912,0.0,1.0,-0.11522914714266123,-0.9952397550629861,1.0919892804011113 +2.6003014573847394,4.517870500438447,2.6003014573847394,1.0,0.0,1.651588670554825,0.28806013221185617,1.1460862231743274 +1.061142332902884,2.9480676785954993,1.061142332902884,0.0,0.0,-0.3512440003825914,-0.38420469529973783,1.0033015075018068 +0.5812554179849718,2.8799284776101644,2.8799284776101644,1.0,1.0,0.4579739485515031,1.1914394184610326,0.9292787354690331 +2.26648810147605,4.77198404840185,4.77198404840185,1.0,1.0,1.566337554123365,0.14290712026773625,1.1529721001572932 +0.6784338913369996,2.6385111308396167,2.6385111308396167,1.0,1.0,0.36768156528734336,-0.06765463317229033,1.0444951094864299 +0.528420110775724,2.2129784361933176,2.2129784361933176,1.0,1.0,0.4949934150659579,-0.03289061344486715,1.0542065544162253 +0.8376943570087718,0.6460599340223658,0.6460599340223658,0.0,1.0,-0.4135010473089542,0.7386888555744267,0.8911709647499123 +1.778303201240695,2.7666802199485785,2.7666802199485785,0.0,1.0,0.47841577309956146,0.07297845533505543,1.0413768499663354 +3.7202905989580914,6.0272690569946334,3.7202905989580914,1.0,0.0,2.110763717859779,0.7818117297337337,1.1421302954473784 +0.7220468319059569,-0.16958389853999634,-0.16958389853999634,0.0,1.0,-1.2764614456148449,1.1217608108322792,0.7867677157583263 +1.497578693656999,3.8067731488609717,3.8067731488609717,1.0,1.0,0.3048806922114015,0.0943874993266551,1.0212724188245168 +5.35230741665353,8.355823527950044,5.35230741665353,1.0,0.0,1.9553340836992399,0.7634512357185048,1.12658201658779 +-3.2813934030510974,-3.1459758640379936,-3.1459758640379936,0.0,1.0,-0.8968646124361498,0.12497193587400698,0.9028637211574163 +1.7822081254508162,1.9944308695261674,1.7822081254508162,1.0,0.0,0.8165366789672531,1.178846164673375,0.9644175369098343 +0.6302745947834489,0.26399295733024175,0.26399295733024175,0.0,1.0,-0.03569088724496734,0.12669659888632084,0.9838923890683193 +-0.2370534237990023,0.5096763048796867,0.5096763048796867,0.0,1.0,-0.3710340392227039,-0.24119750536635762,0.9871002706358699 +0.9415211479080894,2.4876049294176057,2.4876049294176057,1.0,1.0,1.2304234799789422,1.151226092380932,1.0079511828456478 +-0.8941439076362664,-0.33463234390807517,-0.8941439076362664,0.0,0.0,-0.8451685459098559,0.3919992633388191,0.8836300663369147 +1.1239191323463138,2.692867825833801,1.1239191323463138,0.0,0.0,-0.24570464993570268,1.1049416597672734,0.8736594444056849 +-0.38333472118561307,-1.052076209185317,-1.052076209185317,0.0,1.0,0.11686142861220729,-0.06845349276344931,1.0187042658393066 +0.2194124817957681,0.5557456554569515,0.5557456554569515,0.0,1.0,-1.8017724900847674,0.3575049726518383,0.8057935213547451 +0.2135915229182483,0.02122179803065727,0.2135915229182483,0.0,0.0,-0.4238689860122958,1.1445175194573651,0.854841975976211 +-0.23253730198337363,2.320203093604025,-0.23253730198337363,1.0,0.0,1.1465461291622716,0.15558982358248638,1.1041718870837705 +0.07027247511385742,1.4866917244625164,1.4866917244625164,1.0,1.0,0.34069536840624953,-0.8976573254197734,1.1318294086842893 +1.7420154564110772,5.561377690185605,5.561377690185605,1.0,1.0,1.7532666752548014,0.3001576052312285,1.1563990469444323 +0.7749147580008189,3.9622332473319544,3.9622332473319544,1.0,1.0,1.0613091153982783,-0.49388477794022806,1.1682645877197684 +2.526473038367006,3.7802556729738925,2.526473038367006,1.0,0.0,1.1294654286207557,1.8146850076235543,0.9337729561849561 +0.0945319409981148,1.3389868281828101,1.3389868281828101,0.0,1.0,-0.6700296587198142,2.292165757912276,0.7436241536145811 +-3.3387126054020104,-4.995249820558043,-4.995249820558043,0.0,1.0,-3.101128889887262,-1.2398116177752903,0.8301642325598967 +-2.2273297035669026,-3.8529576673696697,-3.8529576673696697,0.0,1.0,-0.5999646044031298,-2.2243834937005507,1.176379955764136 +-0.16699352597880343,-1.577779991065516,-1.577779991065516,0.0,1.0,-0.5863603792116192,0.1319374137978305,0.9306893049126546 +0.979754725601141,4.174383565510851,4.174383565510851,1.0,1.0,-0.12350769585432794,0.023156988811165596,0.9854405602985349 +2.863686481815718,4.518282276086081,2.863686481815718,1.0,0.0,0.4279638800645971,-0.9029267175397736,1.1423517313721978 +-0.5756596764973281,0.30878331128099257,0.30878331128099257,0.0,1.0,-1.1834818100487676,1.2083544822940202,0.7872703032556606 +1.0473958034955424,2.9983035804662026,1.0473958034955424,1.0,0.0,0.3184586931003094,0.2778508641969093,1.0040690390408766 +1.157105377662537,2.3253177214836187,1.157105377662537,1.0,0.0,0.385235989877863,2.031526516075214,0.8482082863793216 +0.1017378861395235,1.136364184478414,0.1017378861395235,1.0,0.0,0.8198090784403843,-1.5404278438517782,1.2662043090142325 +-0.12754715310939205,3.732761575280901,-0.12754715310939205,1.0,0.0,0.5295785960154088,-2.109001649333551,1.3019433391674986 +2.7816655066616733,7.065719655409798,2.7816655066616733,1.0,0.0,2.329874632221226,-0.28627158686110504,1.2990258298582844 +1.0152702804480946,2.9394554435887255,1.0152702804480946,1.0,0.0,-0.002114962095819262,0.027528822427326155,0.9970400109791066 +-1.5527807660234723,-2.0223218857259906,-1.5527807660234723,0.0,0.0,-1.7014721418420298,-0.9666392393091652,0.9291516715508933 +0.22890193690601823,2.353712913242473,0.22890193690601823,0.0,0.0,0.09829569518676169,0.6773511152726184,0.9437390869253338 +-0.5976007403296419,-0.8595396103033678,-0.8595396103033678,0.0,1.0,-1.3520551521770863,0.9567945887006015,0.7938307718925665 +1.579505118859095,4.204951623947835,1.579505118859095,1.0,0.0,0.7163606844585909,-0.3971707616723427,1.1177895785304983 +0.3126934467392117,-0.4100878843676463,-0.4100878843676463,0.0,1.0,0.023380925374612255,-0.40850417584455323,1.0441347062603328 +0.22515231697221294,1.7916775325170982,0.22515231697221294,1.0,0.0,0.09248884539173009,0.3279861417942248,0.9767254012582576 +2.1368248793671984,5.342234481968739,2.1368248793671984,1.0,0.0,0.16688950421831275,0.30116258224400183,0.9866624363715795 +0.8753432617347059,2.331082054966812,0.8753432617347059,0.0,0.0,-0.42982585518544075,0.4075051169848435,0.9196766876078474 +0.9968065087135304,1.1298239240932826,1.1298239240932826,0.0,1.0,-0.12278708105880233,-0.45288595066407616,1.033560757965206 +2.1449379247953035,5.9269066764560625,2.1449379247953035,1.0,0.0,0.41866624125882207,0.21907389785010364,1.02015975169438 +-4.013753271610487,-4.873435790879201,-4.013753271610487,0.0,0.0,-2.4410682028373127,-0.6563679953775926,0.8365491356205133 +0.7062026417962289,1.3923631974790243,0.7062026417962289,1.0,0.0,-0.44939789713969114,-0.9578663500810898,1.0521617374212175 +-0.9083157558624665,-0.1481538189106043,-0.1481538189106043,1.0,1.0,-0.059791205547204976,-1.9083686399830864,1.2030472865899366 +3.603375934558763,8.516044695355495,8.516044695355495,1.0,1.0,2.7224791584914767,1.0470950370006782,1.1823907074807547 +1.4207447805010238,5.963382313356411,5.963382313356411,1.0,1.0,0.42070021674053193,0.8344949972037935,0.9594649649654375 +0.2552348513432938,0.6337823727096942,0.2552348513432938,0.0,0.0,-0.48407853122555944,-0.2978251758008789,0.9815470441506725 +3.066664130621498,7.636601373012508,3.066664130621498,1.0,0.0,1.9757350691238331,0.0450525909937937,1.2129655729419324 +2.5845493020818777,4.954364511716434,2.5845493020818777,1.0,0.0,1.2467839686647346,-1.2348968712317745,1.2816753431950652 +-4.335737215837105,-5.051568456323642,-5.051568456323642,0.0,1.0,-1.7781866460342552,-0.5970971650734623,0.8885992361457725 +0.6870607426367765,2.5408050285074433,2.5408050285074433,1.0,1.0,0.4838617405383931,-1.1184044801412327,1.173776844588776 +-0.5217218751556597,1.3163905605000406,1.3163905605000406,1.0,1.0,0.51494169150042,-0.23479295922928692,1.0778555496868087 +-1.5766380068486814,-1.0851706695742886,-1.5766380068486814,0.0,0.0,-1.153054401045819,0.05579639493685049,0.886135788822477 +0.13145467414978085,-1.7845689188138798,0.13145467414978085,0.0,0.0,-1.2483832991013235,0.2551417456328293,0.8604046264823109 +2.583597458013336,6.275448305652871,2.583597458013336,1.0,0.0,0.11561569786184275,0.38075201410760273,0.9738347687950878 +1.343627780304502,2.7618046738438533,2.7618046738438533,0.0,1.0,0.23778428043676278,-0.5827712523748768,1.0855161121363235 +2.2988942987524554,3.666352539511638,2.2988942987524554,1.0,0.0,1.220653961369927,0.3613713185326428,1.089728153071582 +0.1071099550297861,1.0690415141372376,0.1071099550297861,0.0,0.0,-1.1567612567713939,2.0657686164365026,0.7245148740656732 +0.08136385046342709,-0.11405568466741221,-0.11405568466741221,0.0,1.0,-1.1432818850359294,0.4425060749120705,0.8533557201288173 +-0.36640806682377214,1.964919084104811,-0.36640806682377214,1.0,0.0,0.5627090926808769,-0.6180968371032478,1.1253348017961753 +1.581128574616741,3.1170357030515965,3.1170357030515965,1.0,1.0,0.3251125427017826,0.44150743668821124,0.9884279874058347 +-0.4251318286350701,2.066554141406693,2.066554141406693,0.0,1.0,-0.14698238836035002,-1.4844763008031265,1.143106311295064 +1.7368107044250523,4.812346294407586,4.812346294407586,1.0,1.0,1.3138265065136374,-1.1983158937937366,1.2855854787023655 +0.37064915724769343,3.057496528469542,0.37064915724769343,1.0,0.0,0.5894871281347644,0.5476171029744705,1.004195780257597 +0.26666505683377695,0.28913949068976813,0.26666505683377695,0.0,0.0,-0.2772724618790121,-1.6822408770842516,1.1508454446373904 +0.9151105952757088,2.0607666667815767,0.9151105952757088,0.0,0.0,-0.732380597855397,0.17789641469709083,0.9129924195129128 +0.16618050209691093,4.548579731448298,4.548579731448298,1.0,1.0,1.807086877398987,-1.8218374141987168,1.4374812198613798 +0.12691218916918845,-1.55721820467427,-1.55721820467427,0.0,1.0,-1.440709541325078,-0.6995989838009968,0.9285685652342061 +3.139942817815533,6.257835799738441,3.139942817815533,1.0,0.0,1.2546556957489738,0.4892802467644892,1.0795427208981296 +0.13550719283509788,-1.187408718126108,0.13550719283509788,0.0,0.0,-1.2327101254426927,1.4333487715518545,0.7659748905807932 +1.4901931787677092,1.7033405678823887,1.7033405678823887,0.0,1.0,0.3480180892137011,-1.7230329390475128,1.2301118532189301 +-2.2608961830163397,-4.045946726826227,-4.045946726826227,0.0,1.0,-1.251321546789314,-0.815086631551621,0.9573143265861535 +0.09275637157239974,1.1109085448204818,0.09275637157239974,1.0,0.0,0.16187245096949487,0.05790576382266807,1.0104509018599301 +2.0051161432888227,5.125609201670588,2.0051161432888227,1.0,0.0,0.3097326442066763,-0.7233015895634564,1.1088278023149447 +0.3867832888839541,2.8480742793243423,2.8480742793243423,1.0,1.0,0.14816050490094962,1.2430001400450703,0.896296537693369 +1.3908088820844147,4.908473682900912,4.908473682900912,1.0,1.0,0.9260522181114333,-0.20727996935967596,1.12000507746443 +-0.8401485626373242,0.3472198564972434,-0.8401485626373242,0.0,0.0,-0.9598510467417724,-0.03369198765296218,0.9115435515574773 +-2.219038035426583,-1.2029131377390712,-1.2029131377390712,0.0,1.0,-0.3447364884086837,-1.5861586439076736,1.1321768727069654 +-1.625864588440411,-0.18209462101475615,-1.625864588440411,0.0,0.0,-0.06384778630140223,-0.773333234199404,1.073525985941917 +0.18613663548116333,0.8269510853737907,0.18613663548116333,0.0,0.0,-0.2683325915679837,-0.8047943801244631,1.0551112154452513 +1.2823734911784566,3.725756417664283,3.725756417664283,1.0,1.0,2.0605816073895675,-0.9039322399596399,1.3450771671246868 +1.7563127974088362,2.286598347812016,2.286598347812016,0.0,1.0,0.1090452596678136,0.9186125058629246,0.9222336005910253 +-0.4029632072759352,-0.3787475437793668,-0.4029632072759352,0.0,0.0,-0.9027680482647139,1.0018893705496603,0.8265740741166522 +-0.7893428099118833,2.3151973280752234,2.3151973280752234,1.0,1.0,0.23008143503607947,0.16310783474472954,1.006719837496694 +-0.9922955523024769,-0.6298939048282873,-0.9922955523024769,0.0,0.0,-0.9290939943482689,-1.9028351062149984,1.1022726690302875 +-1.0624629865861164,-0.8220523754311855,-0.8220523754311855,0.0,1.0,0.081235238375741,-2.0764953995002062,1.2408207598835705 +-1.6908643172953455,-2.232718680012382,-1.6908643172953455,0.0,0.0,0.08453282783756057,-2.23150399527613,1.2606200237998249 +0.8397930895414838,4.655279002055213,0.8397930895414838,1.0,0.0,1.580426696320343,0.9656776090604258,1.0634038140375728 +3.250955990032205,2.4092191736815867,2.4092191736815867,0.0,1.0,-0.0484855301784199,2.5732230687954623,0.7693795563645942 +-0.45605698288430974,1.5655727932150572,-0.45605698288430974,1.0,0.0,0.5109530775167138,-0.3719109898250873,1.0923009195715143 +1.6764856285929928,4.129773039403258,4.129773039403258,1.0,1.0,0.22820572049454127,-0.59640227133145,1.08595610223778 +0.5603990435155058,2.0688436406995176,2.0688436406995176,0.0,1.0,-1.4768700574139342,1.053452289889303,0.7764428529943631 +-0.25230080194936344,-0.14360116846626614,-0.25230080194936344,0.0,0.0,0.22552966573944697,-1.6764401795390083,1.209487824581032 +1.9530502772710139,5.39570580197746,1.9530502772710139,1.0,0.0,0.7657422749291879,-0.005202740424002078,1.08014414684986 +1.0403865995748922,6.021869516843593,6.021869516843593,1.0,1.0,2.237578166814082,0.05231213648328434,1.2442421168010744 +-0.35454085118492684,0.8091152803209519,0.8091152803209519,1.0,1.0,0.32450722236666474,0.24588935820364205,1.0078927714050259 +-0.6979386792801535,-1.0282310352079556,-1.0282310352079556,0.0,1.0,-0.7315063369500815,-1.070620892326355,1.034493004045851 +-1.073859110802099,1.9607280241883087,-1.073859110802099,0.0,0.0,0.016442866742516448,-0.6188875848466346,1.0655946979658013 +-0.3115659449356256,0.8444254447824641,0.8444254447824641,0.0,1.0,-0.3808686661017019,-0.17757179981325624,0.9798755681752023 +0.054126080566516244,3.3104946919296605,3.3104946919296605,1.0,1.0,0.912012419047774,-0.435349942965844,1.1442349367913724 +-1.7750035571897775,-3.5572928621993762,-1.7750035571897775,0.0,0.0,-0.940982076432071,-0.9378297095019374,0.9996848129888523 +-0.5649854728062412,0.28399333366986146,-0.5649854728062412,1.0,0.0,0.43127322203721913,0.08100393279797322,1.0356475972994783 +2.0349396717320696,3.579920512330246,2.0349396717320696,1.0,0.0,1.3981971686115071,1.8489145943407344,0.9559288985742447 +3.0003066226288344,6.016784096987664,6.016784096987664,1.0,1.0,0.6595992279329783,-0.6281882237801177,1.1374384325772229 +0.22528052151976707,2.926047697459354,0.22528052151976707,1.0,0.0,0.849935216806199,-0.5055939056771112,1.1451697877395846 +0.10259227247848071,-1.9365359672362366,0.10259227247848071,0.0,0.0,-0.4899790299154918,-0.30244897005237664,0.981421737603034 +2.0831171015036043,4.768921771246196,4.768921771246196,1.0,1.0,1.8832453188419016,1.6410701738388438,1.0245131401199399 +1.574643967172128,3.1851416159889108,1.574643967172128,1.0,0.0,0.8617687539201305,-0.007344879348248447,1.0907999905509904 +-1.5001782808370723,-2.040510764028841,-2.040510764028841,0.0,1.0,-1.6414386409748607,-0.04740334490127341,0.8526522191232966 +-0.9192673639339874,-0.9323180523330434,-0.9323180523330434,0.0,1.0,-0.6860301517478217,0.6291740281553951,0.8767613732498036 +2.7643168697100142,7.309671994626834,7.309671994626834,1.0,1.0,1.4319947477186787,-0.6366237258228398,1.2298126581713917 +0.9996793382774256,0.9061308774069627,0.9061308774069627,0.0,1.0,0.3248952102623897,-0.2487596524304945,1.0590428052744514 +1.1919647350880513,2.2260212372433834,1.1919647350880513,1.0,0.0,0.2546128049119969,0.018534762673105366,1.0238886743210376 +-1.2130781865724103,-1.1051174576915401,-1.1051174576915401,0.0,1.0,-1.2991186468284834,0.5976287533827286,0.827228154402225 +-1.3190111143513925,-0.4643280238209786,-0.4643280238209786,0.0,1.0,0.2104771730696016,-2.34889682947461,1.2916718670785452 +0.303957637753108,1.188463703172382,0.303957637753108,0.0,0.0,0.22296997101920657,-0.13255610844784593,1.0361921586360672 +1.0454943874767384,3.692373138830456,3.692373138830456,1.0,1.0,1.6618968759390935,0.0020208142359193393,1.1805584699919973 +0.48819408353195215,2.3833661787999807,0.48819408353195215,0.0,0.0,-0.8829013576521049,0.008409748541370166,0.9147256354674449 +0.36777528829589873,0.2312871066806167,0.2312871066806167,0.0,1.0,-0.4393464600316829,0.7285645813917876,0.8897710432362719 +2.4843523518016695,5.193564065186336,5.193564065186336,1.0,1.0,1.7179405487167756,0.7788867383235754,1.0984558062531793 +-0.4288557580603466,-0.7733712229081559,-0.4288557580603466,0.0,0.0,-1.2887699933445995,-0.41431122738324605,0.9162684618768802 +1.310644503868375,1.4084440772464695,1.310644503868375,0.0,0.0,-0.3950909435116316,2.3759439810862766,0.75797604824545 +-0.875432004771409,-1.010175893921596,-1.010175893921596,0.0,1.0,0.1551766829586854,0.5428619629274978,0.961973353276461 +1.3905391780219851,3.1263456047167226,3.1263456047167226,1.0,1.0,1.315870472048898,-0.911217992850994,1.2494567370577903 +0.8851143300299884,2.7470174819019153,0.8851143300299884,1.0,0.0,1.0906034008277257,-1.5808452385256173,1.3062296581940722 +-0.396159236125019,2.9395439853771017,-0.396159236125019,1.0,0.0,0.6282819462429433,-0.026077326639098453,1.067624329536013 +1.3216324100497032,4.533429787258615,4.533429787258615,1.0,1.0,1.976481445505905,0.12849615866217645,1.2029760505436702 +-1.0599717827515867,0.45108775116337996,0.45108775116337996,1.0,1.0,0.007539050331796829,-1.075631926668045,1.114401063379403 +0.39062049103071106,3.6141242140222993,0.39062049103071106,1.0,0.0,1.5384657131846824,-1.5295667787299851,1.3590735429463576 +0.1782713947833295,0.2716173215315093,0.2716173215315093,0.0,1.0,0.32913183661826634,-0.798907381136584,1.1194124190287162 +-1.613223133197366,-0.4119264004812271,-0.4119264004812271,0.0,1.0,-0.8679969948689606,-0.880620066413043,1.0012631041994209 +0.43290354580066126,3.0915708840426257,0.43290354580066126,1.0,0.0,0.07877440636724609,-0.3945272873373131,1.0484681239986826 +-0.936013986292048,-0.9129835287716185,-0.9129835287716185,0.0,1.0,-0.8020358345931782,-0.8693419441670162,1.0067533124223103 +-0.5983212351491318,0.2928580853368742,-0.5983212351491318,0.0,0.0,-0.007685082283558532,-0.4858799255383264,1.0489812806689958 +0.1708542147799499,4.112642400985074,4.112642400985074,1.0,1.0,0.9577050215541177,-0.9664384997484528,1.212172679253597 +-1.3532273145539921,0.2802405111138062,-1.3532273145539921,1.0,0.0,1.0600167109579541,-1.3481863240907195,1.2722923882823516 +0.9888081126670148,0.723140392876978,0.723140392876978,0.0,1.0,-0.05652408338386532,-0.36236520553422263,1.0310566108569565 +0.05194127738299048,0.2482002218772344,0.05194127738299048,0.0,0.0,-0.08842221774231966,0.5432822895147327,0.9387834437316454 +0.20592996123956275,2.0630650523478162,2.0630650523478162,1.0,1.0,0.33908894426088787,-1.5635929298570008,1.2095739466682707 +1.1005120386085547,1.3047504108930472,1.3047504108930472,0.0,1.0,-0.6830687053043112,-0.14549561565113195,0.9476620676836461 +-0.36948615695738535,1.7625132355536526,1.7625132355536526,1.0,1.0,0.11090663972895234,-0.30866499362762234,1.0428498055868638 +2.1238479016825993,2.2363493482716974,2.2363493482716974,1.0,1.0,0.9397147735756282,0.19305149713321001,1.077524550738422 +1.1961265177909506,1.2670618611682896,1.2670618611682896,0.0,1.0,-1.2975797629016133,2.3456313150555577,0.69466809558446 +0.2268788714784955,0.39954235271738325,0.39954235271738325,0.0,1.0,-1.6608336186510286,1.2479932017627549,0.7476033801758922 +0.4944142423448178,3.0098284345673645,0.4944142423448178,0.0,0.0,-0.0640392831095658,1.4863849328008574,0.8563788477597797 +0.036562296258301874,2.6540846854169913,0.036562296258301874,1.0,0.0,0.2753376263457601,-0.2077880850481298,1.049498647049322 +0.5354469072759119,1.12598765410846,1.12598765410846,0.0,1.0,-0.23882189299170375,0.780205406085676,0.9031173937088154 +-2.119703531605707,-2.392165719927082,-2.392165719927082,0.0,1.0,-1.681913763332671,-1.4110376433384715,0.9732759671353933 +-0.4535380192292741,2.3307821992383277,2.3307821992383277,1.0,1.0,0.2568316496018327,-1.6225014677990446,1.206753036405993 +0.3468389499698671,3.050204094016984,0.3468389499698671,1.0,0.0,0.25994771450933235,0.6453919898669086,0.9621889561059633 +2.288998938807273,6.44694656311572,6.44694656311572,1.0,1.0,1.5129628434866933,1.0004172023532025,1.0525908110271642 +1.7644849361811143,5.200912823289505,5.200912823289505,1.0,1.0,0.41772960667722525,-0.7531635149936466,1.1242198317163619 +0.8150961849462687,-1.39077759762944,-1.39077759762944,0.0,1.0,-1.2523260311546174,2.5806563715199813,0.6816095855442292 +-3.316950216142533,-5.372814338498344,-5.372814338498344,0.0,1.0,-2.5579433789649313,0.697747281878069,0.7221163047982062 +-0.709721184853157,0.33124646890763193,0.33124646890763193,0.0,1.0,-0.3289051560076619,1.1013125519960638,0.8667351991710882 +2.0402628805748786,2.8673604319255706,2.8673604319255706,1.0,1.0,0.6533603821065974,0.5792676067376982,1.0074367941511282 +-0.3742864309659733,0.12441032620146636,0.12441032620146636,0.0,1.0,-0.8502995400691938,0.8155340132676536,0.8465522493491621 +-1.2222170399323122,0.12670952971420002,-1.2222170399323122,0.0,0.0,-0.46797836852151553,-1.760985124753126,1.1380322512848442 +1.2515225567460417,-1.0652557190242589,1.2515225567460417,0.0,0.0,-1.694072260495275,1.6513470786995779,0.715665833525219 +-1.1588626174539616,-1.0319876284528715,-1.1588626174539616,0.0,0.0,-0.6958732617835083,-0.5684737295193639,0.9873408564431992 +0.647223195005717,2.144826977583093,2.144826977583093,0.0,1.0,0.046937716656602686,-0.8193241826548315,1.0904889677634815 +0.9107470085754273,5.323097129287167,0.9107470085754273,1.0,0.0,1.0815010875858728,0.3593849862150899,1.0748827760910955 +2.286760235035959,4.605353496994595,2.286760235035959,1.0,0.0,1.4498645078747292,0.7288373001695191,1.0747657391586378 +2.384084789990058,4.965294490379032,2.384084789990058,1.0,0.0,1.6152604364303664,-0.2997589720592165,1.2110671836361935 +-0.641687171171609,-0.9202234849177668,-0.641687171171609,0.0,0.0,-0.3506013873924048,-0.8331953390775365,1.0494428404236311 +3.8663958484678047,5.093595951719626,5.093595951719626,1.0,1.0,1.2703430235607744,1.2374892861322837,1.0032907764982342 +3.0286471656917664,7.647028504154113,7.647028504154113,1.0,1.0,2.3516796917794145,-0.8277890494823559,1.3743032482271789 +0.7356462364771447,0.24298477969755694,0.24298477969755694,0.0,1.0,-1.100927592917515,1.0100125128867554,0.8096979431295092 +-1.1668450817438047,-3.130319921467286,-3.130319921467286,0.0,1.0,-2.1498956951331554,0.7682030961117159,0.7469105257584052 +-2.0195181974745435,-0.28590140679888054,-0.28590140679888054,0.0,1.0,-0.6702477324484862,-1.6217569996075367,1.0998248355508482 +2.103088393803632,4.508335149369169,2.103088393803632,0.0,0.0,0.2594167586342083,1.1381917331022924,0.9158730666404725 +-0.2333504179844732,0.41215694266898784,0.41215694266898784,0.0,1.0,-0.954572933040592,0.4005949280571822,0.8732645040916167 +0.30074542446872043,2.3719802105829033,2.3719802105829033,1.0,1.0,0.24414849047416515,-0.914892598726668,1.1228881920091982 +-1.5039473412697686,-1.7252961518413736,-1.5039473412697686,0.0,0.0,-1.0570385227115782,1.4125796035648768,0.781170523811468 +0.19926764563320798,2.152231727433409,2.152231727433409,1.0,1.0,0.3910777083023348,-0.13153259737814205,1.0536507416718326 +-0.8780299540696581,-0.5004635462065221,-0.5004635462065221,0.0,1.0,-0.7671449931095183,-0.9391496524657149,1.0173492457531093 +0.0001846083045547453,1.4291480139123043,1.4291480139123043,1.0,1.0,0.29497908285946384,-1.0535398347288178,1.1443672815739168 +0.7463805446272064,2.048922398804564,2.048922398804564,0.0,1.0,-0.5945632830742572,-0.8403684016648734,1.024885103190536 +2.8752003443524634,3.9058947140625686,2.8752003443524634,1.0,0.0,0.6079195586639313,-0.461516063675877,1.1128714447287142 +0.9386835173740581,2.740244972675404,0.9386835173740581,1.0,0.0,0.23690903637017494,0.5982265355536462,0.9645132105749875 +-2.4602278353723506,-1.7954659620643452,-2.4602278353723506,0.0,0.0,-0.9890668095676809,1.296950796180874,0.795645327758872 +0.7081771425833183,0.7996583452084859,0.7996583452084859,0.0,1.0,-1.0170599558312232,-0.062293947342454324,0.9089396298206016 +-0.08098941074816529,3.196106349372374,3.196106349372374,1.0,1.0,0.21132026577877266,-0.47941706236063486,1.0715152120675226 +1.2178409172565146,0.6991637405277242,0.6991637405277242,0.0,1.0,-0.2364260348225915,0.14726912137474105,0.9623572691394018 +1.3369614091146456,3.7934966547168933,1.3369614091146456,1.0,0.0,0.7083660984325444,-0.6885929582513888,1.1499240602946514 +0.9029207045947725,5.10872256432747,5.10872256432747,1.0,1.0,0.644715517088165,1.17565833222763,0.948290601993869 +-0.005724680436749036,-1.0883017398106096,-0.005724680436749036,0.0,0.0,-0.5852291370485201,0.27625476439846886,0.9174580793814507 +-2.345724629357875,-2.144257437607974,-2.345724629357875,0.0,0.0,-0.9314189269820335,-1.014966489356758,1.0083897546131009 +1.4322305824737729,4.4692510857166265,1.4322305824737729,1.0,0.0,1.0960522174817724,0.06762323043770682,1.1083172773180077 +1.6479992575422968,4.484528495447933,1.6479992575422968,1.0,0.0,0.4582659966708822,-1.0642318400581334,1.164451060971913 +0.14163312331624184,5.001794932874989,5.001794932874989,1.0,1.0,1.254061916862139,-2.0279967667260617,1.388474785893849 +0.6527642466416413,2.4553117179467736,2.4553117179467736,1.0,1.0,0.4649835305180842,-1.1171526973309127,1.171416409216572 +0.5525880359511827,3.069083154651006,0.5525880359511827,1.0,0.0,0.4636783812506689,-0.1480412986328107,1.0630817144927351 +1.5986945645747022,4.4522246382353945,4.4522246382353945,1.0,1.0,1.2002708374727444,-0.700678646959927,1.2093644194750606 +0.9711096353447219,5.012907042989735,0.9711096353447219,1.0,0.0,-0.26566722321691766,2.212748560974823,0.7804835789268805 +0.49987562824089443,2.458562377676229,0.49987562824089443,1.0,0.0,0.10995160719053321,-0.3360341737981972,1.0456080456835102 +-1.270379485097362,-3.6353165558735627,-1.270379485097362,0.0,0.0,-2.420729008494591,0.7678686909624546,0.7269774862512282 +-2.3864428133700515,-1.9350411286546945,-1.9350411286546945,0.0,1.0,-0.04850968774908679,-3.3808053863854557,1.3954676190114315 +1.8874275372224745,5.56883766068614,5.56883766068614,1.0,1.0,0.2724836909475627,1.5015660499405992,0.8843448099437455 +1.3676023113368132,1.7805982780018632,1.3676023113368132,0.0,0.0,-0.19378458215689612,-0.16083005493824848,0.996709971322593 +0.2417259582229831,1.5864438890589518,1.5864438890589518,0.0,1.0,-1.1165412564438277,0.8034130920901074,0.8253106361471323 +-0.09752175103005221,1.1229509843788137,-0.09752175103005221,0.0,0.0,-0.14078204332661812,-0.5283507663965508,1.0395177173796968 +1.6675775939066053,2.0033692172787463,1.6675775939066053,0.0,0.0,0.0788699520200442,-0.459827139397966,1.0553470911188594 +0.8371021497934601,3.788547576503417,3.788547576503417,1.0,1.0,0.9704230100364833,-0.24170029305962878,1.1288645790877758 +-2.7059530904397913,-3.8594271537302838,-2.7059530904397913,0.0,0.0,-1.3861603064425085,0.17363416604213644,0.8555767746471841 +-1.2025564816155156,0.024583501692298948,0.024583501692298948,1.0,1.0,0.015733496534046414,-0.11685846024407583,1.0133474886123623 +0.20093577353518008,2.231762960554667,0.20093577353518008,1.0,0.0,-0.01190500516681219,0.08892226188808941,0.9899679335758633 +-2.0445580320161376,-0.689402282307261,-0.689402282307261,0.0,1.0,-1.4648923744757418,-1.0499842778055897,0.9593581521218273 +-0.06298397668062294,1.2337075518776934,-0.06298397668062294,1.0,0.0,0.7946486760749006,-0.9888209574086599,1.1952399537559415 +1.774048077064582,3.323721537845395,3.323721537845395,0.0,1.0,-0.3829139565543196,2.3384940554808273,0.7617469986444912 +2.1205480309090126,5.411739509104883,5.411739509104883,1.0,1.0,1.497922795027947,1.2186668180758875,1.0283191722586398 +0.3852411724762181,1.8445649603781296,0.3852411724762181,0.0,0.0,-0.6684468791020485,0.624724136155674,0.8786952857472244 +2.366648386647273,4.1202087162075,4.1202087162075,1.0,1.0,0.8759577369942703,-0.2769801224656318,1.1222030766403686 +-0.706860099910311,-1.3825263754445754,-1.3825263754445754,0.0,1.0,0.15239848161040898,-0.006980307219001237,1.0160655643176784 +0.4932143392816406,2.213916291362332,2.213916291362332,1.0,1.0,1.3103555530232203,1.0355604958988849,1.0278605496217101 +2.50635415032013,4.860240597573789,4.860240597573789,1.0,1.0,0.7246516922156654,0.2877523785508192,1.0446583888660623 +-0.7800929705217564,1.828852440458765,1.828852440458765,1.0,1.0,0.11189361905621001,-1.965835163358712,1.2309335660019285 +-2.5112837976963673,-1.4834949884566124,-1.4834949884566124,0.0,1.0,-0.5131631493640885,-1.5035028489504045,1.1041038052824348 +-1.5517302778587778,-2.1706020139491513,-1.5517302778587778,0.0,0.0,-1.5527703603470195,-0.38190663549909576,0.8895083607979922 +0.46531805193954234,1.5068898032987665,1.5068898032987665,1.0,1.0,0.4182398705869997,0.4273329117499075,0.9990911091754184 +0.47767587520882304,2.315331024231739,0.47767587520882304,1.0,0.0,1.2766461090813317,-0.8562024824469536,1.2377371817954703 +-1.3079991431076965,1.536100925611858,1.536100925611858,1.0,1.0,0.2809973964050763,-0.08988755797299117,1.0377848559997815 +2.6894908716242414,7.284561969151503,7.284561969151503,1.0,1.0,2.0586683790428877,-0.31029778143793885,1.2673100914768305 +0.6122262224574869,-0.5854642589329209,0.6122262224574869,0.0,0.0,-1.1131581167620463,-0.4959989645373683,0.9401499311417107 +0.504814456721302,3.258287335938493,3.258287335938493,1.0,1.0,0.14817102500276158,-0.03420374801445499,1.0184047956983018 +-0.6493115185615184,0.782938092067376,0.782938092067376,0.0,1.0,-0.5735546649965296,-0.43153539798129836,0.98589844494078 +1.2667107562415043,2.1714726771230737,1.2667107562415043,1.0,0.0,-0.08688579801131956,0.5040084180210561,0.9426224745753533 +0.7710727826918526,0.907871534111898,0.907871534111898,0.0,1.0,-1.417528440891689,0.4452053134994912,0.8300466495953771 +0.8674176129397155,1.1189176962607839,0.8674176129397155,0.0,0.0,-0.8251622202655277,0.22961396470145737,0.8998946136156578 +-0.9834457504819253,-0.799101478382943,-0.9834457504819253,0.0,0.0,-0.34706391319354557,-1.0849284834796105,1.0765768855211286 +1.1318440536462608,4.417570661467616,4.417570661467616,1.0,1.0,0.5200429607392721,-0.12079760699274902,1.0661820148148458 +-2.6672000870240056,-3.754050149661661,-3.754050149661661,0.0,1.0,-0.6261120776921498,-1.1784495427475725,1.0567876062177186 +1.5196395422987077,3.3758817976944466,3.3758817976944466,0.0,1.0,-0.20224720410982208,-0.17267837627864532,0.9970474844892143 +0.5398382830876586,0.3414983648732606,0.3414983648732606,0.0,1.0,0.04874319673872764,-0.21736084660803773,1.0269676226801145 +2.8686632171575015,7.9594672676056595,7.9594672676056595,1.0,1.0,1.9862904742109064,0.03328684720866674,1.2156760754060463 +2.26250055878335,3.8820359159207,3.8820359159207,1.0,1.0,1.4223678807016618,-0.17392684046240842,1.173076133038649 +-1.1542881797672184,1.1914817942148148,1.1914817942148148,1.0,1.0,0.33638135012476134,0.6594627247534413,0.968208194892721 +1.2599535417456023,2.783882814012906,2.783882814012906,1.0,1.0,0.4021440672044805,-0.4831457541821629,1.0925659170485336 +0.9680102058737003,3.351253116305312,0.9680102058737003,1.0,0.0,0.29641808577383416,-0.9347772892242099,1.1310196121237839 +2.2051060005305305,7.215981137540291,2.2051060005305305,1.0,0.0,1.763667188003958,1.1516691397534136,1.0631113077367165 +-0.03228014681991803,0.3630664640012043,0.3630664640012043,0.0,1.0,-0.30319816865729593,-0.6792940329693432,1.0383257772636874 +1.0190687373404748,0.7735377040134568,1.0190687373404748,0.0,0.0,-1.3007230710201625,-0.1556406349163308,0.8918045866982722 +0.2121355843050884,1.527644671467315,1.527644671467315,0.0,1.0,0.18038685437418017,-1.7862800848028988,1.2173382268443373 +1.5144328596065513,1.4917059527873662,1.5144328596065513,0.0,0.0,0.5020476467221736,1.3446811486248227,0.9191891555789042 +-0.5735797151992252,0.02635622321770792,0.02635622321770792,0.0,1.0,-0.8086340087417753,0.5048747286506412,0.8769100357022832 +-0.9980651811284134,-0.5967267247471881,-0.5967267247471881,0.0,1.0,-0.5077475315182216,0.10974571623137847,0.9401185216779268 +1.4518547808970799,0.9223515124969904,1.4518547808970799,0.0,0.0,-0.4881307649646226,-0.3243306834910695,0.9837534147036686 +0.7664631826586886,1.5231642986466203,0.7664631826586886,0.0,0.0,-0.39112849750304085,1.1345891143830564,0.8584972849602667 +1.923474491270397,2.2273504733491136,1.923474491270397,1.0,0.0,1.0388973988053942,-0.2964332224160691,1.1428590508560197 +0.6947573090994201,2.26813432810656,0.6947573090994201,0.0,0.0,-1.2190823110781654,1.1669441323551213,0.7877278283016458 +-1.1169560182896394,-0.81667152335728,-0.81667152335728,0.0,1.0,-0.27364874372884285,-0.5236493572295805,1.025315183427589 +-1.4849221653682974,-2.602794440210951,-1.4849221653682974,0.0,0.0,-1.5036805633655632,0.15819202777119903,0.8468876319126669 +2.4237200686278415,5.471398008630037,2.4237200686278415,1.0,0.0,1.4692243640063234,0.5063148767487102,1.1010793750358034 +1.5888437739050003,3.237609130531147,3.237609130531147,1.0,1.0,0.4470840702702834,0.18495913721074006,1.0265590622276553 +-0.41478238836942927,0.9835540528888803,-0.41478238836942927,0.0,0.0,-0.9232531243860821,-0.8752836367014164,0.995214538215446 +-3.2664238064789903,-0.004418221987871007,-3.2664238064789903,1.0,0.0,0.29086751367503616,-1.601160563264058,1.208285977328245 +4.823284564220451,7.825224801849167,7.825224801849167,1.0,1.0,1.7320495124559887,1.3030295895554724,1.0438355859018247 +0.8048068970397594,1.4449847176124524,1.4449847176124524,0.0,1.0,-0.3544973864987963,-0.05969559412711755,0.9709501224225688 +-1.8244989533542308,-2.2243231832333805,-1.8244989533542308,0.0,0.0,-0.5958293603175869,-0.8990575578839515,1.0307872387343415 +0.10200246088548082,0.9346074928946422,0.9346074928946422,0.0,1.0,-0.5484023649714913,0.15659206527173197,0.9319282585870291 +1.9886691818958364,-0.4309132485314686,1.9886691818958364,0.0,0.0,-0.7166533981711097,2.0731594600992507,0.7565540613661289 +2.3006888966262786,4.37803468038447,4.37803468038447,1.0,1.0,1.386615875880089,1.1586374911466155,1.023059695330086 +2.196423765035538,5.25405400457918,2.196423765035538,1.0,0.0,0.19637034869031655,0.24745688350473694,0.9949043734958762 +-0.9384673451602079,1.2134356912125053,1.2134356912125053,0.0,1.0,-0.6072031915855239,0.403941464677963,0.9038295695466885 +-0.6673470856246209,-0.3227888569939592,-0.3227888569939592,0.0,1.0,-1.374912928450994,0.9172052850304191,0.795160083784165 +3.227434853238726,5.543499680433866,3.227434853238726,1.0,0.0,0.8412352856205451,1.9635239721610094,0.8938396622081028 +2.022129919264569,5.750463274920618,2.022129919264569,1.0,0.0,0.9490815793728744,0.019157881944557698,1.097453361384757 +-0.4618361866164402,0.9818024560374524,0.9818024560374524,1.0,1.0,0.2628023973473573,-0.0019776040953241856,1.0268316568648783 +-1.7624154248873076,-0.8759026605077043,-0.8759026605077043,0.0,1.0,-0.3863608574631829,-0.024128223662508764,0.9644249486708506 +-1.2114753729184509,-1.8219981196967465,-1.2114753729184509,0.0,0.0,-0.46187528242681636,-1.6917370139781052,1.1308687844921355 +-0.49964648790264826,2.1745116408009335,-0.49964648790264826,1.0,0.0,0.2132364950998342,-1.5279808068115726,1.19020044032948 +-0.15298102706026062,1.6595248166418521,1.6595248166418521,0.0,1.0,-0.9229349706887341,0.5607287036685628,0.8621152061388533 +-0.04515857891507871,0.40525614370535995,-0.04515857891507871,0.0,0.0,-0.3115389510652148,-0.744612530518802,1.044258806771944 +0.3898908434804933,0.17790885040119525,0.17790885040119525,0.0,1.0,-1.5459284993099995,1.877762564690736,0.7100860590233398 +1.989274015818858,5.599772856784363,1.989274015818858,1.0,0.0,0.454513510766632,0.19341477399128626,1.0264537225231916 +2.143478081286866,3.663386408122974,2.143478081286866,1.0,0.0,1.6567994902664969,-1.591942381430685,1.383856528121344 +-0.6211520529937804,1.0696239895806197,1.0696239895806197,1.0,1.0,-0.22708847727793016,1.065770274551705,0.8787227246158471 +-1.4905008270049407,-0.15769301179560835,-0.15769301179560835,0.0,1.0,-0.4671945198915769,-1.1105022276242027,1.0664450892952575 +1.1875567916261245,1.912825478727702,1.1875567916261245,0.0,0.0,-0.15753856598819632,0.7369737256552835,0.9144328616916022 +1.0448368123697902,1.9279857848677724,1.9279857848677724,0.0,1.0,-0.16455382629450824,0.2791284892786301,0.956601641697883 +1.7124354690566101,5.347103422462657,1.7124354690566101,1.0,0.0,0.7831736463148093,-0.19036636626395223,1.1022505026282818 +1.0773018292593721,3.7060808766173325,3.7060808766173325,1.0,1.0,1.0551094029721255,-0.3258212266534433,1.1480823892511287 +1.1084604642623994,0.44117447100970053,0.44117447100970053,0.0,1.0,-0.2915269586731038,0.7518611866375574,0.9009200009170406 +1.3442240713857896,4.308324631109166,1.3442240713857896,1.0,0.0,1.333152292655528,-0.3931019642374268,1.1884208697742609 +-0.35526806091423024,3.3976961991591628,3.3976961991591628,1.0,1.0,0.5578377097211199,0.02358093541573633,1.0548785875669284 +1.0087112422530826,2.874196552592,2.874196552592,1.0,1.0,-0.20706276501644102,-0.8443456957838831,1.0658027734243178 +1.1321756032451464,0.8512785507734413,1.1321756032451464,0.0,0.0,-1.6643765381979025,1.2808073997500578,0.7448902448572835 +-0.25567727296880993,2.0217302700370667,2.0217302700370667,1.0,1.0,0.8034071982282781,-0.2974937528962502,1.1163786461877807 +1.0190465498347858,3.3862327431694212,1.0190465498347858,1.0,0.0,0.9070994049096547,-0.126758553993878,1.1089191430098122 +1.189990548824147,4.4280914273166925,1.189990548824147,1.0,0.0,0.5447232084213656,-1.1130136668916997,1.1803059535407745 +-1.2942614223975117,-2.6366383945194456,-1.2942614223975117,0.0,0.0,-1.019676349048036,-0.2723702394668472,0.9279934439238533 +0.18054760277031445,1.90311662205169,0.18054760277031445,0.0,0.0,-0.0789010087566755,1.4869602201545808,0.8550578744755419 +-0.8237965339166213,-1.9608114866728612,-0.8237965339166213,0.0,0.0,-1.8234995971330104,-0.884532663669211,0.9103768053643386 +1.0308096756301892,0.5573446538413279,0.5573446538413279,0.0,1.0,-1.1871359544017852,0.3719815871079448,0.8556346932495245 +0.11256721153995419,-0.46825013738363264,-0.46825013738363264,0.0,1.0,-0.48869831380699746,-0.1903959394585755,0.9706102928562149 +2.473990787619994,5.521507924660751,5.521507924660751,1.0,1.0,2.08354104226236,-0.4259869129122519,1.2852494133657446 +-0.5620021042685781,-1.6499219894020531,-1.6499219894020531,0.0,1.0,-1.5010741804113963,0.37795328755435065,0.8286952965860872 +2.9803227381983737,5.507136916689395,2.9803227381983737,1.0,0.0,0.49135638107283997,1.4928327514114248,0.9047038403841834 +-0.8159935501378922,0.9857784197023994,-0.8159935501378922,1.0,0.0,-0.15906381741946,1.0473380499393599,0.8863528237263283 +1.8847131477627612,4.255983168432778,1.8847131477627612,1.0,0.0,1.1779964800477711,-2.2323248640981657,1.4063984339263986 +-1.410901899979855,-1.3953190355978957,-1.410901899979855,0.0,0.0,-0.314001993164603,-0.8282990358403097,1.0527751780887062 +-0.23239374027804505,-1.4402384420587309,-0.23239374027804505,0.0,0.0,-0.5143565569782932,-0.06463524786724649,0.9560241249831632 +2.629770576482535,5.819327254785771,2.629770576482535,1.0,0.0,0.8510540146822582,2.5079843236140174,0.8473062911280285 +3.4942806276953333,5.040819605428469,5.040819605428469,1.0,1.0,0.5222220356230544,1.3698170821932665,0.9187332088929155 +-4.172113858452303,-3.5363265271393116,-4.172113858452303,0.0,0.0,-1.1496715946051703,-0.8861391197233596,0.9739909689691525 +-1.0574971679628828,2.915336975097535,2.915336975097535,1.0,1.0,0.3588818871508385,1.051560580270015,0.9330767039845719 +-1.0695576754624683,-2.5958662951114064,-2.5958662951114064,0.0,1.0,-1.6897619603574716,-0.7772916534354427,0.9127921953579258 +-1.3063717353831268,-2.086258927244356,-2.086258927244356,0.0,1.0,-0.22266705630734965,-1.0149839677205994,1.0824550882738742 +1.8972730891566154,6.2175234288301855,1.8972730891566154,1.0,0.0,1.8934149058518366,1.5420299735566474,1.0357631450498939 +-0.7837616120023339,-1.587166454284385,-0.7837616120023339,0.0,0.0,-1.2495242901024783,0.8697826768639285,0.8090207634350948 +0.06279753770227609,-0.520924461886478,0.06279753770227609,0.0,0.0,-0.5995528756296383,-0.31003700620473656,0.9714634948461981 +2.4384864118509144,4.31723968673022,4.31723968673022,1.0,1.0,0.09346923002051845,-0.4968555970209711,1.0608096981481043 +-2.4391949597363336,-3.9868454734468015,-3.9868454734468015,0.0,1.0,-1.9078713608880116,-0.36953248279717815,0.857414436173199 +1.8900454901919697,3.935194805093311,3.935194805093311,1.0,1.0,1.3999571948954428,0.5182103822859486,1.0921788885514785 +-2.904797802689549,-2.7287886114242985,-2.7287886114242985,0.0,1.0,-0.26895618355536566,-0.880371607058691,1.0630493700453618 +-0.2584319980929446,3.669216912248851,3.669216912248851,1.0,1.0,1.0051046101704406,-0.4122790690113513,1.1522751369532618 +0.08416273247497133,-0.7683654758013835,-0.7683654758013835,0.0,1.0,-0.05624404764851792,-0.08767909316541636,1.0031484505433477 +-1.7309568662626287,-3.5174980234528856,-3.5174980234528856,0.0,1.0,-1.4020252842460872,-1.2700255106639882,0.9868867602785328 +0.5027844540697415,1.2768263341219848,1.2768263341219848,0.0,1.0,0.3289110648188997,0.8665809628947716,0.947652893561051 +-1.3798954074014687,-1.8922564580269607,-1.3798954074014687,0.0,0.0,-1.4531376506004268,-0.8559299759214346,0.9420275415980921 +-0.37560142236629,-0.20877682801599318,-0.20877682801599318,0.0,1.0,-1.5647067710004827,-0.9999330378458232,0.9450878684582783 +-0.33672656770812126,1.1452940006739687,1.1452940006739687,1.0,1.0,0.7148518853950085,0.900387184803329,0.9816175272572224 +2.688681430164122,4.642575290045257,4.642575290045257,1.0,1.0,2.5053547627320656,-1.5990646990260475,1.5074838646454385 +3.199222330797875,6.520318022074788,3.199222330797875,1.0,0.0,1.7716670817069697,-0.46373015936318546,1.2504953140995139 +-0.5405200607230507,-0.02152568887773798,-0.02152568887773798,0.0,1.0,-1.7477064053506124,0.1798377688229434,0.8246844774162821 +-0.8377384227570966,1.4765248401516387,1.4765248401516387,0.0,1.0,0.06689167314305447,-1.5055184553567111,1.170277631861891 +-1.6348644713887353,-0.7276980304570242,-0.7276980304570242,0.0,1.0,-1.4297134612789357,-0.2759320159938639,0.8910291423982705 +1.8801013762588015,2.987757605319395,1.8801013762588015,1.0,0.0,0.8424630722263132,0.5833422915985134,1.0262507145558326 +-1.8488396429705751,0.5212707423653581,0.5212707423653581,1.0,1.0,-0.09487298649110482,-0.750942727589122,1.0678069589028814 +2.662032766785041,3.7258645907953047,2.662032766785041,1.0,0.0,1.4005169254106942,0.47753431546255765,1.0966918737142777 +-1.0278829411781516,-1.7739767367502866,-1.7739767367502866,0.0,1.0,-0.8030157835412599,-0.7568366192301336,0.995392729750939 +0.4559872451586403,-0.07198039125708788,-0.07198039125708788,0.0,1.0,-0.5745460254093101,-0.19426341824942311,0.9626857343186388 +-0.1717905049513221,0.7724404235396883,-0.1717905049513221,0.0,0.0,-0.8704935227174121,-0.9612838295414644,1.0091203700940217 +-0.5732837477657173,-0.9934530460801205,-0.9934530460801205,0.0,1.0,-1.111043234228116,0.3750156716220934,0.8619087343180045 +3.3456164730587474,5.622830603950151,5.622830603950151,1.0,1.0,1.3515443454114613,1.063428410304846,1.0292306624708447 +3.9787162834285494,6.203672713745966,6.203672713745966,1.0,1.0,1.9991967783562814,1.3607815607916733,1.0659234596976357 +-2.9823592620275394,-3.8226157754643952,-2.9823592620275394,0.0,0.0,-2.672776617980834,-2.047291791330989,0.939367518668729 +2.0334203376631534,4.4647908705857375,2.0334203376631534,1.0,0.0,0.6625684858188597,0.47056668688354436,1.0193856887129984 +3.0684222107565526,5.078375135497487,5.078375135497487,1.0,1.0,-0.20777957879145845,2.7014515654688345,0.747573153399533 +0.616247757975896,2.3661862904601723,0.616247757975896,1.0,0.0,1.2293348435096632,-1.4795537235700422,1.3111293390551892 +-1.3655416627695975,-0.47576202625661224,-1.3655416627695975,0.0,0.0,-1.5949953432282977,0.5476410982895304,0.8071355603987355 +1.0408014533401602,2.072530590512611,1.0408014533401602,1.0,0.0,0.1555597098160741,-1.2340265797014682,1.1490765605184095 +0.5194755095127275,0.5405700618955308,0.5405700618955308,0.0,1.0,-0.2905970719096061,1.6871989507300775,0.8205506807224343 +-0.7296201445934392,-0.970978397193448,-0.7296201445934392,0.0,0.0,-1.9046101376668498,0.7942931488526704,0.7634632197861267 +-0.05256646870415821,1.8886760789863233,1.8886760789863233,0.0,1.0,-0.9184763517008697,-0.005610047848433948,0.9127560497828613 +-0.4994815089222018,0.5358104199332914,-0.4994815089222018,0.0,0.0,-1.339671275475822,-0.33979810342304007,0.9048488939759625 +-1.2393630914531975,-1.496512782420081,-1.496512782420081,0.0,1.0,0.010840176037531393,-2.6404877881284543,1.3036040782346743 +-0.18590074719480099,-0.27499238522857383,-0.18590074719480099,0.0,0.0,-1.281134635084747,-0.0012060809766600857,0.8798596653580426 +-0.1899663845730859,0.7545783088013294,-0.1899663845730859,1.0,0.0,0.32823361712052035,-0.37384025148431826,1.0727306284242828 +0.4087728842027202,3.664917213866682,3.664917213866682,0.0,1.0,-0.19720240146752932,-0.6847582237903627,1.0499636895938396 +0.915090316951705,4.404061693917867,4.404061693917867,1.0,1.0,0.12018486630334274,-0.3839540694845837,1.0517063007903278 +3.4290245068668974,4.243164415077856,3.4290245068668974,0.0,0.0,-0.10746414429393762,-0.10922136451026196,1.0001757374616513 +0.9321135725630136,4.617390376320948,4.617390376320948,1.0,1.0,0.9377366780135682,-0.7884532085803735,1.188413219898208 +-1.6264374199010407,0.33998760128567684,0.33998760128567684,1.0,1.0,0.37564544150205714,0.28698520304871494,1.0089054434469995 +0.18076210031058337,-0.11923612697808272,0.18076210031058337,0.0,0.0,-0.46573845291323546,-1.2751176547965484,1.0843035811152093 +1.5406413946193294,5.155483459384023,5.155483459384023,1.0,1.0,0.8850280414070081,1.450095350586493,0.945060123351592 +0.22407234589248082,2.1291502286376076,2.1291502286376076,1.0,1.0,0.8317228834239015,-1.1750813518699421,1.2222341121400069 +-0.7871738671777575,0.5305987781318985,-0.7871738671777575,0.0,0.0,0.14321539058571492,0.5618408388698439,0.9590015912415244 +1.1657207686441775,2.661698843323144,1.1657207686441775,1.0,0.0,0.8877050988708757,1.0608278516684746,0.982836721096803 +3.939310767939885,8.475416126929971,3.939310767939885,1.0,0.0,1.6701492293295142,1.2609347428321556,1.0417702698700069 +1.8199682595374986,4.459884885566672,4.459884885566672,1.0,1.0,1.4630991918555571,1.210064745885314,1.0256262940675769 +-2.269953142700379,-3.796582302046938,-2.269953142700379,0.0,0.0,-0.3354874127568135,-1.3702717202378207,1.1090218723349632 +1.1634026687170984,5.458515478509798,5.458515478509798,1.0,1.0,1.429356590395443,-0.199230471670559,1.1768703934581994 +1.8806028798624543,4.57328312876774,1.8806028798624543,1.0,0.0,1.2645128303518447,0.7112112509267251,1.0568894975410712 +0.21795284265509685,2.310316016842039,0.21795284265509685,0.0,0.0,-0.48004764666821054,-0.3259550503096482,0.9847088555380281 +0.9901186377126932,0.34983127560164773,0.34983127560164773,0.0,1.0,-0.5981753851941883,0.8504750310890474,0.8651390429888929 +0.9293650441716917,3.7391724732618994,3.7391724732618994,1.0,1.0,0.6109146222860738,0.7111549516437101,0.9900260402310259 +-0.9069557716140174,-1.2387560812461158,-1.2387560812461158,0.0,1.0,-1.1217809157300627,-0.4597707244246835,0.9359427029918532 +-1.2727463055882233,-0.3333053416418945,-0.3333053416418945,0.0,1.0,-1.0565661964743371,-0.015488676539714835,0.9011281938304957 +-0.22701863126166588,1.3791462397351726,-0.22701863126166588,1.0,0.0,0.00644667920718968,-1.1323097905884147,1.1206127646373731 +0.02353520691818023,1.840792869092168,0.02353520691818023,0.0,0.0,-0.2987924802755161,1.4686911907833569,0.837990624000764 +3.684107628891228,5.774190889849536,5.774190889849536,1.0,1.0,1.437428220773746,1.4502998415808117,0.9987136659570934 +1.4896298870768752,3.9048973429711684,1.4896298870768752,1.0,0.0,0.5276276432811812,-1.035196807536419,1.16915637892844 +0.040838969120762236,1.4406482079638052,1.4406482079638052,1.0,1.0,1.319469457396683,-1.9110877621873357,1.3813423198604657 +0.9320752760924707,2.4016675156295557,2.4016675156295557,1.0,1.0,0.4013336776137409,0.42899711367484317,0.997237479196489 +1.3966598189520343,1.7123364579764953,1.7123364579764953,0.0,1.0,-0.31707928597768775,1.3539768959231224,0.8461102419853892 +1.9745174609335145,5.38736390453552,5.38736390453552,1.0,1.0,1.4740464607575234,-0.3907394007608649,1.2049988181476903 +-1.1088415902818733,-1.2602961702015016,-1.2602961702015016,0.0,1.0,-0.5532360192439184,-0.45920598793444484,0.990641066864722 +-2.0888335892343153,-1.1036506722540647,-2.0888335892343153,0.0,0.0,-0.6034538332858367,0.7159876924224081,0.8763899378376805 +4.623211354561662,7.529372706121317,7.529372706121317,1.0,1.0,1.688455886793319,2.8929959393540137,0.8865178615697039 +-3.999756875614527,-4.081150927802847,-3.999756875614527,0.0,0.0,-1.2518230049259162,-1.7893773401013,1.0552264975617913 +0.3970952505694839,1.1060381281031677,1.1060381281031677,0.0,1.0,-0.9242437494073847,1.278842929925349,0.8022711243701127 +-2.331982176816974,-4.013163724419506,-2.331982176816974,0.0,0.0,-2.041817102817067,-0.7098318928130131,0.8752913111530211 +-0.26972276638170034,0.2001402769654522,0.2001402769654522,0.0,1.0,-0.13371514335147458,0.3950903564296235,0.9484933032617078 +0.7225093556624618,3.498336385080095,3.498336385080095,1.0,1.0,1.4139589842156757,0.39611238349889505,1.107145033524061 +3.947400254274406,7.719949324264201,7.719949324264201,1.0,1.0,1.1975254146392396,2.132013110061124,0.9107846761469419 +-1.5374593784258597,-0.5164045312756111,-1.5374593784258597,0.0,0.0,-1.1074515867175068,-1.6258993914476452,1.053212250717761 +-2.2045071723502847,-2.8353553054164613,-2.8353553054164613,0.0,1.0,-1.5592334031499686,-0.06498848476870289,0.8612034634552191 +2.248859545580613,4.285062562327394,2.248859545580613,1.0,0.0,0.588664773310219,1.2289267966952009,0.9379804219282155 +-1.223752482678695,-1.1108247553632744,-1.1108247553632744,0.0,1.0,-0.9606885861071328,0.1528285848783797,0.8946240390165495 +4.434075132912007,9.339911754822467,4.434075132912007,1.0,0.0,2.255190234178941,0.13832203105118585,1.235760809285793 diff --git a/tests/test_contracts.py b/tests/test_contracts.py new file mode 100644 index 0000000..0efddd2 --- /dev/null +++ b/tests/test_contracts.py @@ -0,0 +1,336 @@ +"""Independent contracts for the six shared two-period DiD estimators. + +Expected values below come from weighted difference-of-means identities and +refitted empirical derivatives, rather than a second copy of estimator code. +The fixed-R numerical fixtures live in a separate test module. +""" + +import numpy as np +import pytest + +from drdid import drdid, ipwd_did, reg_did + + +ESTIMATORS = { + "drdid_panel": drdid.drdid_panel, + "std_ipw_did_panel": ipwd_did.std_ipw_did_panel, + "reg_did_panel": reg_did.reg_did_panel, + "drdid_rc": drdid.drdid_rc, + "std_ipw_did_rc": ipwd_did.std_ipw_did_rc, + "reg_did_rc": reg_did.reg_did_rc, +} +NAMES = tuple(ESTIMATORS) +RC_NAMES = tuple(name for name in NAMES if name.endswith("_rc")) + + +def _sample(zero_weights=False): + rng = np.random.default_rng(8201) + n = 240 + x, z = rng.normal(size=(2, n)) + cov = np.column_stack((np.ones(n), x, z)) + probability = 1 / (1 + np.exp(.3 - .5 * x + .2 * z - .4 * np.sin(2 * x))) + treated = (rng.random(n) < probability).astype(float) + post = (rng.random(n) < .55).astype(float) + y0 = .8 + .3 * x - .2 * z + rng.normal(size=n) + y1 = y0 + .6 + .4 * x + 1.1 * treated + rng.normal(size=n) + weights = np.exp(.2 * x - .15 * z) + if zero_weights: + weights[::11] = 0 + return y1, y0, treated, post, cov, weights + + +def _arguments(name, sample): + y1, y0, treated, post, cov, weights = sample + outcomes = ((post * y1 + (1 - post) * y0, post) + if name.endswith("_rc") else (y1, y0)) + return (*outcomes, treated), cov, weights + + +def _closed_form(args, weights, repeated_cross_section): + first, second, treated = args + n = len(treated) + weights = np.ones(n) if weights is None else np.asarray(weights, float) + influence = np.zeros(n) + att = 0. + if repeated_cross_section: + cells = ((1, 1, 1), (1, 0, -1), (0, 1, -1), (0, 0, 1)) + for d, t, sign in cells: + cell_weights = weights * ((treated == d) & (second == t)) + cell_mean = np.dot(cell_weights, first) / cell_weights.sum() + att += sign * cell_mean + influence += sign * cell_weights / cell_weights.mean() * (first - cell_mean) + else: + change = first - second + for d, sign in ((1, 1), (0, -1)): + cell_weights = weights * (treated == d) + cell_mean = np.dot(cell_weights, change) / cell_weights.sum() + att += sign * cell_mean + influence += sign * cell_weights / cell_weights.mean() * (change - cell_mean) + return att, influence + + +@pytest.mark.parametrize("name", NAMES) +@pytest.mark.parametrize("weight_kind", ["default", "varying", "zero"]) +def test_intercept_only_att_influence_and_se_match_closed_form(name, weight_kind): + sample = _sample(zero_weights=weight_kind == "zero") + args, _, weights = _arguments(name, sample) + if weight_kind == "default": + weights = None + actual_att, actual_if = ESTIMATORS[name](*args, i_weights=weights) + expected_att, expected_if = _closed_form(args, weights, name.endswith("_rc")) + np.testing.assert_allclose(actual_att, expected_att, atol=1e-11, rtol=1e-11) + np.testing.assert_allclose(actual_if, expected_if, atol=1e-10, rtol=1e-10) + n = len(expected_if) + # R uses sd(IF) * sqrt(n - 1) / n: the centered L2 norm divided by n. + np.testing.assert_allclose(np.linalg.norm(actual_if - actual_if.mean()) / n, + np.linalg.norm(expected_if - expected_if.mean()) / n, + atol=1e-11, rtol=1e-11) + + +@pytest.mark.parametrize("name", NAMES) +def test_default_weights_match_explicit_ones_with_covariates(name): + args, cov, weights = _arguments(name, _sample()) + default = ESTIMATORS[name](*args, covariates=cov) + explicit = ESTIMATORS[name](*args, covariates=cov, i_weights=np.ones_like(weights)) + np.testing.assert_allclose(default[0], explicit[0], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(default[1], explicit[1], atol=1e-12, rtol=1e-12) + + +@pytest.mark.parametrize("name", NAMES) +@pytest.mark.parametrize("zero_weights", [False, True]) +def test_weight_scale_preserves_att_and_full_influence(name, zero_weights): + args, cov, weights = _arguments(name, _sample(zero_weights)) + att, influence = ESTIMATORS[name](*args, covariates=cov, i_weights=weights) + assert np.isfinite(att) and np.isfinite(influence).all() + for multiplier in (.001, 17.3): + scaled_att, scaled_if = ESTIMATORS[name]( + *args, covariates=cov, i_weights=multiplier * weights) + np.testing.assert_allclose(scaled_att, att, atol=1e-11, rtol=1e-11) + np.testing.assert_allclose(scaled_if, influence, atol=1e-10, rtol=1e-10) + + +@pytest.mark.parametrize("name", NAMES) +@pytest.mark.parametrize("weight_kind", ["equal", "varying", "zero"]) +def test_finite_large_weight_scale_avoids_intermediate_mean_overflow(name, weight_kind): + """R accepts these finite weights although their naive sum overflows.""" + args, cov, weights = _arguments(name, _sample(weight_kind == "zero")) + args = tuple(np.resize(values, 600) for values in args) + cov = np.vstack((cov, cov, cov[:120])) + weights = (np.ones(600) if weight_kind == "equal" + else np.resize(weights, 600)) + expected_att, expected_if = ESTIMATORS[name]( + *args, covariates=cov, i_weights=weights) + large_weights = weights * 1e307 + assert np.isfinite(large_weights).all() + with np.errstate(over="ignore"): + assert np.isinf(np.mean(large_weights)) + actual_att, actual_if = ESTIMATORS[name]( + *args, covariates=cov, i_weights=large_weights) + np.testing.assert_allclose(actual_att, expected_att, atol=1e-11, rtol=1e-11) + np.testing.assert_allclose(actual_if, expected_if, atol=1e-10, rtol=1e-10) + + +@pytest.mark.parametrize("name", NAMES) +def test_weight_mean_that_rounds_to_zero_is_rejected(name): + """R's positive-mean check also rejects an underflowed final double mean.""" + args, cov, weights = _arguments(name, _sample()) + weights[:] = 0 + weights[0] = np.nextafter(0., 1.) + assert np.mean(weights) == 0 + with pytest.raises(ValueError, match="positive finite mean"): + ESTIMATORS[name](*args, covariates=cov, i_weights=weights) + + +@pytest.mark.parametrize("name", NAMES) +def test_appending_zero_mass_preserves_contributions_and_se(name): + args, cov, weights = _arguments(name, _sample(zero_weights=True)) + att, influence = ESTIMATORS[name](*args, covariates=cov, i_weights=weights) + n = len(weights) + extended_args = tuple(np.r_[values, [0., 1., 0., 1.]] for values in args) + extended_cov = np.vstack((cov, [[1., -4., 2.], [1., 3., -1.], + [1., .2, .1], [1., -1., 3.]])) + new_att, new_if = ESTIMATORS[name]( + *extended_args, covariates=extended_cov, + i_weights=np.r_[weights, np.zeros(4)]) + np.testing.assert_allclose(new_att, att, atol=1e-11, rtol=1e-11) + np.testing.assert_array_equal(new_if[n:], np.zeros(4)) + np.testing.assert_allclose(new_if[:n] / (n + 4), influence / n, + atol=1e-10, rtol=1e-10) + # R's analytical SE is the centered norm of the IF/n contributions. + np.testing.assert_allclose(np.linalg.norm(new_if - new_if.mean()) / (n + 4), + np.linalg.norm(influence - influence.mean()) / n, + atol=1e-11, rtol=1e-11) + + +@pytest.mark.parametrize("name", NAMES) +@pytest.mark.parametrize("zero_weights", [False, True]) +def test_full_influence_matches_refitted_empirical_weight_derivative(name, zero_weights): + """Include each RC cell and large contributions to catch pre/post sign bugs.""" + sample = _sample(zero_weights) + args, cov, weights = _arguments(name, sample) + _, influence = ESTIMATORS[name](*args, covariates=cov, i_weights=weights) + treated, post = sample[2:4] + indices = [] + for d in (0, 1): + for t in (0, 1): + cell = np.flatnonzero((treated == d) & (post == t)) + indices.extend(cell[np.argsort(np.abs(influence[cell]))[-2:]]) + indices.extend(np.flatnonzero(weights == 0)[:2]) + h, n = .001, len(weights) + derivatives = [] + for index in indices: + plus, minus = weights.copy(), weights.copy() + plus[index] *= 1 + h + minus[index] *= 1 - h + att_plus = ESTIMATORS[name](*args, covariates=cov, i_weights=plus)[0] + att_minus = ESTIMATORS[name](*args, covariates=cov, i_weights=minus)[0] + derivatives.append((att_plus - att_minus) / (2 * h / n)) + # Central-difference error is O(h**2); models are refitted in every call. + np.testing.assert_allclose(influence[indices], derivatives, atol=2e-5, rtol=2e-6) + + +@pytest.mark.parametrize("name", NAMES) +@pytest.mark.parametrize("representation", ["column", "list"]) +def test_vector_column_and_list_inputs_preserve_results(name, representation): + args, cov, weights = _arguments(name, _sample()) + expected = ESTIMATORS[name](*args, covariates=cov, i_weights=weights) + if representation == "column": + changed_args = tuple(values[:, None] for values in args) + changed_cov, changed_weights = cov, weights[:, None] + else: + changed_args = tuple(values.tolist() for values in args) + changed_cov, changed_weights = cov.tolist(), weights.tolist() + actual = ESTIMATORS[name]( + *changed_args, covariates=changed_cov, i_weights=changed_weights) + assert np.asarray(actual[1]).shape == weights.shape + np.testing.assert_allclose(actual[0], expected[0], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(actual[1], expected[1], atol=1e-12, rtol=1e-12) + + +@pytest.mark.parametrize("name", NAMES) +def test_one_covariate_accepts_vector_and_adds_one_intercept(name): + args, cov, weights = _arguments(name, _sample()) + expected = ESTIMATORS[name]( + *args, covariates=cov[:, :2], i_weights=weights) + for one_covariate in (cov[:, 1], cov[:, 1:2], cov[:, 1].tolist()): + actual = ESTIMATORS[name]( + *args, covariates=one_covariate, i_weights=weights) + np.testing.assert_allclose(actual[0], expected[0], atol=1e-12, rtol=1e-12) + np.testing.assert_allclose(actual[1], expected[1], atol=1e-12, rtol=1e-12) + + +@pytest.mark.parametrize("name", NAMES) +@pytest.mark.parametrize("bad_value", [-1., .5, 2., np.nan, np.inf]) +def test_nonbinary_or_nonfinite_treatment_is_rejected(name, bad_value): + args, cov, weights = _arguments(name, _sample()) + invalid = list(args) + invalid[2] = invalid[2].copy() + invalid[2][0] = bad_value + with pytest.raises(ValueError): + ESTIMATORS[name](*invalid, covariates=cov, i_weights=weights) + + +@pytest.mark.parametrize("name", RC_NAMES) +@pytest.mark.parametrize("bad_value", [-1., .5, 2., np.nan, np.inf]) +def test_nonbinary_or_nonfinite_post_is_rejected(name, bad_value): + args, cov, weights = _arguments(name, _sample()) + invalid = list(args) + invalid[1] = invalid[1].copy() + invalid[1][0] = bad_value + with pytest.raises(ValueError): + ESTIMATORS[name](*invalid, covariates=cov, i_weights=weights) + + +@pytest.mark.parametrize("name", NAMES) +@pytest.mark.parametrize("bad_kind", ["negative", "nan", "inf", "zero", "short", "matrix"]) +def test_invalid_sampling_weights_are_rejected_before_fitting(name, bad_kind): + args, cov, weights = _arguments(name, _sample()) + if bad_kind == "negative": + weights[0] = -1 + elif bad_kind == "nan": + weights[0] = np.nan + elif bad_kind == "inf": + weights[0] = np.inf + elif bad_kind == "zero": + weights[:] = 0 + elif bad_kind == "short": + weights = weights[:-1] + else: + weights = np.column_stack((weights, weights)) + with pytest.raises(ValueError): + ESTIMATORS[name](*args, covariates=cov, i_weights=weights) + + +@pytest.mark.parametrize("name", NAMES) +@pytest.mark.parametrize("bad_kind", ["outcome_length", "outcome_nan", "outcome_matrix", + "design_length", "design_nan", "design_ndim"]) +def test_invalid_outcome_and_covariate_shapes_are_rejected(name, bad_kind): + args, cov, weights = _arguments(name, _sample()) + invalid = list(args) + if bad_kind == "outcome_length": + invalid[0] = invalid[0][:-1] + elif bad_kind == "outcome_nan": + invalid[0] = invalid[0].copy() + invalid[0][0] = np.nan + elif bad_kind == "outcome_matrix": + invalid[0] = np.column_stack((invalid[0], invalid[0])) + elif bad_kind == "design_length": + cov = cov[:-1] + elif bad_kind == "design_nan": + cov[0, 1] = np.nan + else: + cov = cov[:, :, None] + with pytest.raises(ValueError): + ESTIMATORS[name](*invalid, covariates=cov, i_weights=weights) + + +@pytest.mark.parametrize("name", NAMES) +def test_singular_design_is_rejected(name): + args, cov, weights = _arguments(name, _sample()) + duplicated = np.column_stack((cov, cov[:, 1])) + with pytest.raises(ValueError, match="singular|rank|variation|covariate"): + ESTIMATORS[name](*args, covariates=duplicated, i_weights=weights) + + +@pytest.mark.parametrize("name", NAMES) +def test_positive_weight_support_is_required_in_both_groups(name): + args, cov, weights = _arguments(name, _sample()) + for group in (0, 1): + no_mass = weights.copy() + no_mass[args[2] == group] = 0 + with pytest.raises(ValueError): + ESTIMATORS[name](*args, covariates=cov, i_weights=no_mass) + + +@pytest.mark.parametrize("name", RC_NAMES) +def test_positive_weight_support_is_required_in_each_rc_cell(name): + args, cov, weights = _arguments(name, _sample()) + for d in (0, 1): + for t in (0, 1): + no_mass = weights.copy() + no_mass[(args[2] == d) & (args[1] == t)] = 0 + with pytest.raises(ValueError): + ESTIMATORS[name](*args, covariates=cov, i_weights=no_mass) + + +@pytest.mark.parametrize("name", ["drdid_panel", "reg_did_panel", "drdid_rc", "reg_did_rc"]) +def test_zero_weights_do_not_make_an_undersized_outcome_design_estimable(name): + args, cov, weights = _arguments(name, _sample()) + control = args[2] == 0 + if name.endswith("_rc"): + control &= args[1] == 0 + # Three columns need at least three positive-weight observations. Other + # groups remain large, isolating the outcome-regression support failure. + indices = np.flatnonzero(control) + weights[indices[2:]] = 0 + with pytest.raises(ValueError): + ESTIMATORS[name](*args, covariates=cov, i_weights=weights) + + +@pytest.mark.parametrize("name", NAMES) +def test_inputs_are_not_mutated(name): + args, cov, weights = _arguments(name, _sample()) + before = tuple(values.copy() for values in (*args, cov, weights)) + ESTIMATORS[name](*args, covariates=cov, i_weights=weights) + for actual, expected in zip((*args, cov, weights), before): + np.testing.assert_array_equal(actual, expected) diff --git a/tests/test_r_parity.py b/tests/test_r_parity.py new file mode 100644 index 0000000..daaff6e --- /dev/null +++ b/tests/test_r_parity.py @@ -0,0 +1,85 @@ +"""Full numerical contracts for the six traditional/normalized/OR kernels.""" +import gzip +import hashlib +import json +import os +from pathlib import Path + +import numpy as np +import pytest + +from drdid import drdid, ipwd_did, reg_did + + +ROOT = Path(__file__).parent / "r_ref" +CASES = json.loads((ROOT / "cases.json").read_text()) +REFERENCE_PATH = Path(os.environ.get("DRDID_R_REFERENCE", ROOT / "references.json.gz")) +if REFERENCE_PATH.suffix == ".gz": + with gzip.open(str(REFERENCE_PATH), "rt") as stream: + PAYLOAD = json.load(stream) +else: + PAYLOAD = json.loads(REFERENCE_PATH.read_text()) +REFERENCES = PAYLOAD["results"] + + +def _assert_both_units(actual, expected, scale): + # Preserve the strict raw-output comparison as well as the declared unit + # conversion. The latter makes small outcomes informative under atol. + np.testing.assert_allclose(actual, expected, rtol=1e-6, atol=1e-7) + np.testing.assert_allclose(np.asarray(actual) / scale, np.asarray(expected) / scale, + rtol=1e-6, atol=1e-7) + + +def test_reviewed_reference_integrity(): + manifest = json.loads((ROOT / "manifest.json").read_text()) + assert manifest["r_revision"] == "eaac3b49cd225d0d7706c633858555a5f204e21e" + assert manifest["configurations"] == len(CASES) == len({case["id"] for case in CASES}) + assert PAYLOAD["schema_version"] == 1 + assert PAYLOAD["configurations"] == len(CASES) + expected_revision = os.environ.get("DRDID_R_REVISION", manifest["r_revision"]) + assert PAYLOAD["source"]["revision"] == expected_revision + if expected_revision == manifest["r_revision"]: + assert PAYLOAD["source"]["version"] == manifest["r_version"] + assert PAYLOAD["source"]["hashes"] == manifest["r_source_hashes"] + assert set(PAYLOAD["inputs"]) == {"ordinary.csv", "trim.csv", "cases.json", + "export.R", "generate_inputs.py"} + for name, expected in PAYLOAD["inputs"].items(): + assert hashlib.sha256((ROOT / name).read_bytes()).hexdigest() == expected, name + assert set(manifest["artifacts"]) == {"ordinary.csv", "trim.csv", "cases.json", + "references.json.gz", "export.R", "generate_inputs.py"} + for name, expected in manifest["artifacts"].items(): + assert hashlib.sha256((ROOT / name).read_bytes()).hexdigest() == expected, name + assert set(REFERENCES) == {case["id"] for case in CASES} + + +@pytest.mark.parametrize("case", CASES, ids=[case["id"] for case in CASES]) +def test_complete_output_matches_r(case): + data = np.genfromtxt(str(ROOT / (case["dataset"] + ".csv")), names=True, delimiter=",") + n = len(data) + weights = None if case["weights"] == "none" else ( + np.ones(n) if case["weights"] == "ones" else data["w"].copy()) + if case["weights"] == "zero": + weights[::11] = 0 + design = np.column_stack((np.ones(n), data["x"], data["z"])) if case["covariates"] else None + name, scale = case["method"], case["scale"] + module = reg_did if name.startswith("reg_") else ipwd_did if name.startswith("std_") else drdid + arguments = (data["y"] * scale, data["post"], data["D"]) if name.endswith("_rc") else ( + data["y1"] * scale, data["y0"] * scale, data["D"]) + options = {"covariates": design, "i_weights": weights} + if not name.startswith("reg_"): + options["trim_level"] = case["trim_level"] + att, influence = getattr(module, name)(*arguments, **options) + assert np.isfinite(att) and np.isfinite(influence).all() + assert influence.shape == (n,) + expected = REFERENCES[case["id"]] + assert set(expected) == {"att", "influence", "se", "lci", "uci"} + assert np.asarray(expected["influence"]).shape == (n,) + # Same fixed raw-output tolerances as CSDID's current-R gate, plus the + # predeclared conversion in cases.json (never fitted to a discrepancy). + _assert_both_units(att, expected["att"], scale) + _assert_both_units(influence, expected["influence"], scale) + # R analytical SE is sd(IF)*sqrt(n-1)/n, i.e. the centered L2 norm/n. + se = np.linalg.norm(influence - influence.mean()) / n + _assert_both_units(se, expected["se"], scale) + _assert_both_units([att - 1.96*se, att + 1.96*se], + [expected["lci"], expected["uci"]], scale) diff --git a/tests/test_transformations.py b/tests/test_transformations.py new file mode 100644 index 0000000..1f1e0de --- /dev/null +++ b/tests/test_transformations.py @@ -0,0 +1,84 @@ +"""Estimator equivariance across independent samples with zero-weight rows. + +These transformations have known effects on both the ATT and every influence +contribution. Ten samples and six kernels exercise 390 transformations without +using a reference implementation or regenerating expected numerical fixtures. +""" + +import numpy as np +import pytest + +from drdid import drdid, ipwd_did, reg_did + + +ESTIMATORS = { + "drdid_panel": drdid.drdid_panel, + "drdid_rc": drdid.drdid_rc, + "std_ipw_did_panel": ipwd_did.std_ipw_did_panel, + "std_ipw_did_rc": ipwd_did.std_ipw_did_rc, + "reg_did_panel": reg_did.reg_did_panel, + "reg_did_rc": reg_did.reg_did_rc, +} + + +def _sample(seed): + rng = np.random.default_rng(7000 + seed) + n = 320 + design = np.column_stack((np.ones(n), rng.normal(size=(n, 2)))) + probability = 1 / (1 + np.exp(.2 - .5 * design[:, 1] + .1 * design[:, 2])) + treated = (rng.random(n) < probability).astype(float) + post = (rng.random(n) < .55).astype(float) + y0 = design[:, 1] + rng.normal(size=n) + y1 = (y0 + .6 + .3 * design[:, 2] + + treated * (1 + .1 * design[:, 1]) + rng.normal(size=n)) + y = post * y1 + (1 - post) * y0 + weights = np.exp(.3 * design[:, 1]) + weights[::13] = 0 + # Preserve a separate deterministic row permutation for each kernel. + permutations = {name: rng.permutation(n) for name in ESTIMATORS} + return y1, y0, y, post, treated, design, weights, permutations + + +def _assert_same(actual, expected, transformation): + np.testing.assert_allclose(actual[0], expected[0], atol=1e-9, rtol=1e-9, + err_msg=transformation + ": ATT") + np.testing.assert_allclose(actual[1], expected[1], atol=1e-8, rtol=1e-8, + err_msg=transformation + ": influence function") + + +@pytest.mark.parametrize("name", tuple(ESTIMATORS)) +@pytest.mark.parametrize("seed", range(10)) +def test_known_transformations_preserve_att_and_full_influence(name, seed): + y1, y0, y, post, treated, design, weights, permutations = _sample(seed) + estimator = ESTIMATORS[name] + repeated_cross_section = name.endswith("_rc") + args = (y, post, treated) if repeated_cross_section else (y1, y0, treated) + expected = estimator(*args, covariates=design, i_weights=weights) + + for scale in (1e-6, 1e6): + actual = estimator(*args, covariates=design, i_weights=weights * scale) + _assert_same(actual, expected, "sampling-weight scale %g" % scale) + + permutation = permutations[name] + att, influence = estimator( + *(values[permutation] for values in args), + covariates=design[permutation], i_weights=weights[permutation]) + _assert_same((att, influence[np.argsort(permutation)]), expected, + "row permutation with influence contributions restored") + + for scale in (1e-5, 1e5): + scaled = ((y * scale, post, treated) if repeated_cross_section + else (y1 * scale, y0 * scale, treated)) + att, influence = estimator(*scaled, covariates=design, i_weights=weights) + _assert_same((att / scale, influence / scale), expected, + "outcome-unit scale %g" % scale) + + shifted = ((y + 5, post, treated) if repeated_cross_section + else (y1 + 5, y0 + 5, treated)) + _assert_same(estimator(*shifted, covariates=design, i_weights=weights), + expected, "common outcome-location shift") + + if repeated_cross_section: + att, influence = estimator( + y, 1 - post, treated, covariates=design, i_weights=weights) + _assert_same((-att, -influence), expected, "reversed pre/post labels")