From 6160c13526f5f957902910b462164c93c1d8f39a Mon Sep 17 00:00:00 2001 From: eumemic Date: Sun, 11 Oct 2026 06:12:30 -0700 Subject: [PATCH] Certify R740 block retiming improvements --- .../workflows/r740-block-retimed-kernel.yml | 32 + .../r740-block-retimed-kernel/.gitattributes | 6 + .../CERTIFICATE.json | 30 + .../r740-block-retimed-kernel/EXPECTED.json | 9 + .../INDEPENDENT-AUDIT.json | 104 + research/r740-block-retimed-kernel/LICENSE | 201 + .../r740-block-retimed-kernel/MANIFEST.json | 101 + research/r740-block-retimed-kernel/NOTICE.md | 21 + research/r740-block-retimed-kernel/PROOF.md | 65 + research/r740-block-retimed-kernel/README.md | 31 + .../r740-block-retimed-kernel/SOURCES.json | 428 ++ .../r740-block-retimed-kernel/VALIDATION.json | 34 + .../code/bit_audit.py | 134 + .../code/bit_construct.py | 26 + .../code/bit_global.py | 275 + .../code/bit_kernel.py | 70 + .../code/bit_price.py | 18 + .../code/combined.py | 56 + .../code/complex_audit.py | 168 + .../code/complex_construct.py | 278 + .../code/complex_emit.py | 136 + .../code/complex_integrate.py | 109 + .../code/complex_phases.py | 29 + .../code/complex_phases_full.py | 39 + .../code/complex_replay.py | 177 + .../code/independent_audit.py | 367 + .../code/pair_retime.py | 19 + .../code/primitive_retime.py | 27 + .../code/residual_routes.py | 26 + .../code/window_retime.py | 19 + .../inputs/bit-geometry.json.gz | Bin 0 -> 116121 bytes .../complex-canonical-reference.json.gz | Bin 0 -> 82889 bytes .../inputs/complex-data-phases.json.gz | Bin 0 -> 33869 bytes .../inputs/complex-phase-receipt.json | 22 + .../inputs/complex-phase-recipes.json.gz | Bin 0 -> 96078 bytes .../inputs/complex-ports.json.gz | Bin 0 -> 23365 bytes .../inputs/complex-template.json.gz | Bin 0 -> 415067 bytes .../inputs/e8-r865.json.gz | Bin 0 -> 33865 bytes .../notices/NOTICE-PR352.md | 33 + .../notices/NOTICE.md | 47 + .../notices/PR386.txt | 25 + .../notices/PR426-SOURCE-PINS.json | 1116 +++ .../notices/PR426.md | 53 + .../notices/PR438-NOTICE.md | 44 + .../notices/SUSSMAN-NOTICE | 290 + .../proofs/INHERITED-COMPLEX-GEOMETRY.txt | 161 + .../proofs/PR386-BIT-GEOMETRY.txt | 191 + .../proofs/PR425-COMPLEX.txt | 211 + .../r740-block-retimed-kernel/proofs/PR426.md | 108 + .../proofs/PR438-PROOF.md | 198 + .../proofs/PR438-README.md | 75 + .../stages/final-word.json | 1 + .../stages/kernel-selection.json | 1271 ++++ .../stages/kernel-v2-word.json | 1 + .../stages/pair-retime-selection.json | 6278 +++++++++++++++++ .../stages/retime-selection.json | 726 ++ .../stages/window-retime-selection.json | 4409 ++++++++++++ .../vendor/clifford_exact.py | 149 + .../vendor/engines/base_two_moment.py | 63 + .../vendor/engines/moment.py | 113 + .../vendor/engines/outer.py | 58 + .../vendor/export_records.py | 72 + .../vendor/hamming_packets.py | 253 + .../vendor/kernel417/LICENSE | 201 + .../vendor/kernel417/e8core.py | 203 + .../kernel417/engines/base_two_moment.py | 63 + .../vendor/kernel417/engines/moment.py | 113 + .../vendor/kernel417/engines/outer.py | 58 + .../vendor/kernel417/stages.py | 143 + .../vendor/pr436/LICENSE | 201 + .../vendor/pr436/NOTICE.md | 51 + .../vendor/pr436/README.md | 182 + .../vendor/pr436/code/bit/producer/compile.py | 201 + .../pr436/code/bit/producer/compile2.py | 142 + .../vendor/pr436/code/bit/producer/e8lib.py | 79 + .../vendor/pr436/code/bit/producer/frames.py | 45 + .../pr436/code/bit/producer/fullword.py | 75 + .../vendor/pr436/code/bit/producer/ham1.py | 81 + .../vendor/pr436/code/bit/producer/ham2.py | 131 + .../pr436/code/bit/producer/params-r865.json | 2082 ++++++ .../vendor/pr436/code/bit/producer/price.py | 23 + .../vendor/pr436/code/reuse/controls.py | 71 + .../vendor/pr436/code/reuse/ecost.py | 20 + .../vendor/pr436/code/reuse/regen.py | 49 + .../vendor/pr436/code/reuse/retime.py | 112 + .../vendor/pr436/code/reuse/reuse.py | 258 + .../vendor/pr436/data/bit/bitE8-r740.json.gz | Bin 0 -> 35456 bytes .../vendor/pr436/data/bit/reuse-ledger.json | 1 + .../vendor/pr436/data/params/params-r740.json | 1 + .../vendor/pr438/complex_phases.py | 22 + .../vendor/pr439/LICENSE | 201 + .../vendor/pr439/NOTICE.md | 26 + .../vendor/pr439/bank_routes.py | 64 + .../vendor/pr439/e8core.py | 203 + .../vendor/pr439/engines/base_two_moment.py | 63 + .../vendor/pr439/engines/moment.py | 113 + .../vendor/pr439/engines/outer.py | 58 + .../vendor/pr439/tile_m.py | 93 + research/r740-block-retimed-kernel/verify.py | 50 + 99 files changed, 24482 insertions(+) create mode 100644 .github/workflows/r740-block-retimed-kernel.yml create mode 100644 research/r740-block-retimed-kernel/.gitattributes create mode 100644 research/r740-block-retimed-kernel/CERTIFICATE.json create mode 100644 research/r740-block-retimed-kernel/EXPECTED.json create mode 100644 research/r740-block-retimed-kernel/INDEPENDENT-AUDIT.json create mode 100644 research/r740-block-retimed-kernel/LICENSE create mode 100644 research/r740-block-retimed-kernel/MANIFEST.json create mode 100644 research/r740-block-retimed-kernel/NOTICE.md create mode 100644 research/r740-block-retimed-kernel/PROOF.md create mode 100644 research/r740-block-retimed-kernel/README.md create mode 100644 research/r740-block-retimed-kernel/SOURCES.json create mode 100644 research/r740-block-retimed-kernel/VALIDATION.json create mode 100644 research/r740-block-retimed-kernel/code/bit_audit.py create mode 100644 research/r740-block-retimed-kernel/code/bit_construct.py create mode 100644 research/r740-block-retimed-kernel/code/bit_global.py create mode 100644 research/r740-block-retimed-kernel/code/bit_kernel.py create mode 100644 research/r740-block-retimed-kernel/code/bit_price.py create mode 100644 research/r740-block-retimed-kernel/code/combined.py create mode 100644 research/r740-block-retimed-kernel/code/complex_audit.py create mode 100644 research/r740-block-retimed-kernel/code/complex_construct.py create mode 100644 research/r740-block-retimed-kernel/code/complex_emit.py create mode 100644 research/r740-block-retimed-kernel/code/complex_integrate.py create mode 100644 research/r740-block-retimed-kernel/code/complex_phases.py create mode 100644 research/r740-block-retimed-kernel/code/complex_phases_full.py create mode 100644 research/r740-block-retimed-kernel/code/complex_replay.py create mode 100644 research/r740-block-retimed-kernel/code/independent_audit.py create mode 100644 research/r740-block-retimed-kernel/code/pair_retime.py create mode 100644 research/r740-block-retimed-kernel/code/primitive_retime.py create mode 100644 research/r740-block-retimed-kernel/code/residual_routes.py create mode 100644 research/r740-block-retimed-kernel/code/window_retime.py create mode 100644 research/r740-block-retimed-kernel/inputs/bit-geometry.json.gz create mode 100644 research/r740-block-retimed-kernel/inputs/complex-canonical-reference.json.gz create mode 100644 research/r740-block-retimed-kernel/inputs/complex-data-phases.json.gz create mode 100644 research/r740-block-retimed-kernel/inputs/complex-phase-receipt.json create mode 100644 research/r740-block-retimed-kernel/inputs/complex-phase-recipes.json.gz create mode 100644 research/r740-block-retimed-kernel/inputs/complex-ports.json.gz create mode 100644 research/r740-block-retimed-kernel/inputs/complex-template.json.gz create mode 100644 research/r740-block-retimed-kernel/inputs/e8-r865.json.gz create mode 100644 research/r740-block-retimed-kernel/notices/NOTICE-PR352.md create mode 100644 research/r740-block-retimed-kernel/notices/NOTICE.md create mode 100644 research/r740-block-retimed-kernel/notices/PR386.txt create mode 100644 research/r740-block-retimed-kernel/notices/PR426-SOURCE-PINS.json create mode 100644 research/r740-block-retimed-kernel/notices/PR426.md create mode 100644 research/r740-block-retimed-kernel/notices/PR438-NOTICE.md create mode 100644 research/r740-block-retimed-kernel/notices/SUSSMAN-NOTICE create mode 100644 research/r740-block-retimed-kernel/proofs/INHERITED-COMPLEX-GEOMETRY.txt create mode 100644 research/r740-block-retimed-kernel/proofs/PR386-BIT-GEOMETRY.txt create mode 100644 research/r740-block-retimed-kernel/proofs/PR425-COMPLEX.txt create mode 100644 research/r740-block-retimed-kernel/proofs/PR426.md create mode 100644 research/r740-block-retimed-kernel/proofs/PR438-PROOF.md create mode 100644 research/r740-block-retimed-kernel/proofs/PR438-README.md create mode 100644 research/r740-block-retimed-kernel/stages/final-word.json create mode 100644 research/r740-block-retimed-kernel/stages/kernel-selection.json create mode 100644 research/r740-block-retimed-kernel/stages/kernel-v2-word.json create mode 100644 research/r740-block-retimed-kernel/stages/pair-retime-selection.json create mode 100644 research/r740-block-retimed-kernel/stages/retime-selection.json create mode 100644 research/r740-block-retimed-kernel/stages/window-retime-selection.json create mode 100644 research/r740-block-retimed-kernel/vendor/clifford_exact.py create mode 100644 research/r740-block-retimed-kernel/vendor/engines/base_two_moment.py create mode 100644 research/r740-block-retimed-kernel/vendor/engines/moment.py create mode 100644 research/r740-block-retimed-kernel/vendor/engines/outer.py create mode 100644 research/r740-block-retimed-kernel/vendor/export_records.py create mode 100644 research/r740-block-retimed-kernel/vendor/hamming_packets.py create mode 100644 research/r740-block-retimed-kernel/vendor/kernel417/LICENSE create mode 100644 research/r740-block-retimed-kernel/vendor/kernel417/e8core.py create mode 100644 research/r740-block-retimed-kernel/vendor/kernel417/engines/base_two_moment.py create mode 100644 research/r740-block-retimed-kernel/vendor/kernel417/engines/moment.py create mode 100644 research/r740-block-retimed-kernel/vendor/kernel417/engines/outer.py create mode 100644 research/r740-block-retimed-kernel/vendor/kernel417/stages.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/LICENSE create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/NOTICE.md create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/README.md create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/compile.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/compile2.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/e8lib.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/frames.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/fullword.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/ham1.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/ham2.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/params-r865.json create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/price.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/reuse/controls.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/reuse/ecost.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/reuse/regen.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/reuse/retime.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/code/reuse/reuse.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/data/bit/bitE8-r740.json.gz create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/data/bit/reuse-ledger.json create mode 100644 research/r740-block-retimed-kernel/vendor/pr436/data/params/params-r740.json create mode 100644 research/r740-block-retimed-kernel/vendor/pr438/complex_phases.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr439/LICENSE create mode 100644 research/r740-block-retimed-kernel/vendor/pr439/NOTICE.md create mode 100644 research/r740-block-retimed-kernel/vendor/pr439/bank_routes.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr439/e8core.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr439/engines/base_two_moment.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr439/engines/moment.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr439/engines/outer.py create mode 100644 research/r740-block-retimed-kernel/vendor/pr439/tile_m.py create mode 100644 research/r740-block-retimed-kernel/verify.py diff --git a/.github/workflows/r740-block-retimed-kernel.yml b/.github/workflows/r740-block-retimed-kernel.yml new file mode 100644 index 0000000000..07271bf83a --- /dev/null +++ b/.github/workflows/r740-block-retimed-kernel.yml @@ -0,0 +1,32 @@ +name: r740-block-retimed-kernel +on: + pull_request: + paths: + - 'research/r740-block-retimed-kernel/**' + - '.github/workflows/r740-block-retimed-kernel.yml' + push: + paths: + - 'research/r740-block-retimed-kernel/**' + - '.github/workflows/r740-block-retimed-kernel.yml' + workflow_dispatch: +permissions: + contents: read +jobs: + verify: + runs-on: ubuntu-latest + timeout-minutes: 30 + strategy: + fail-fast: false + matrix: + python-version: ['3.12', '3.14'] + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 + with: + persist-credentials: false + - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7 + with: + python-version: ${{ matrix.python-version }} + - name: Replay both suppliers and every selected Gaussian phase + run: python -B research/r740-block-retimed-kernel/verify.py "$RUNNER_TEMP/r740-block-kernel-proof" --replay-phases + - name: Require an unchanged tracked tree + run: git diff --exit-code diff --git a/research/r740-block-retimed-kernel/.gitattributes b/research/r740-block-retimed-kernel/.gitattributes new file mode 100644 index 0000000000..a251e913f2 --- /dev/null +++ b/research/r740-block-retimed-kernel/.gitattributes @@ -0,0 +1,6 @@ +# Hashes bind exact imported and generated bytes. +* -text +vendor/** -whitespace +inputs/** -whitespace +notices/** -whitespace +proofs/** -whitespace diff --git a/research/r740-block-retimed-kernel/CERTIFICATE.json b/research/r740-block-retimed-kernel/CERTIFICATE.json new file mode 100644 index 0000000000..0e83bac063 --- /dev/null +++ b/research/r740-block-retimed-kernel/CERTIFICATE.json @@ -0,0 +1,30 @@ +{ + "status": "PASS_FINAL_WINDOW_BLOCK_RETIMER", + "kappa": "1138798055343319/1000000000000000000", + "kappa_decimal": "0.001138798055343319", + "bit_lower": "17814006170324008149/15625000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "word_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "template_sha256": "b87ed8c20819237f2daacdd1383a2776419551a62a7014eb9720af146a9dd9ec", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "verification_steps": [ + "hamming_packets", + "complex_construct", + "complex_audit", + "complex_emit", + "complex_phases", + "bit_construct", + "bit_kernel", + "bit_export", + "bit_global", + "bit_audit", + "bit_price", + "complex_integrate", + "complex_replay", + "combined", + "independent_audit" + ], + "phase_mode": "full replay", + "independent_audit": "INDEPENDENT-AUDIT.json", + "scope": "Finite conditional witness; inherited all-size compiler, dirty-bank, compressed-window, restored-work, precision and analytic interfaces remain assumptions." +} diff --git a/research/r740-block-retimed-kernel/EXPECTED.json b/research/r740-block-retimed-kernel/EXPECTED.json new file mode 100644 index 0000000000..f9021cbb84 --- /dev/null +++ b/research/r740-block-retimed-kernel/EXPECTED.json @@ -0,0 +1,9 @@ +{ + "kappa": "1138798055343319/1000000000000000000", + "kappa_decimal": "0.001138798055343319", + "bit_lower": "17814006170324008149/15625000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "bit_template_sha256": "b87ed8c20819237f2daacdd1383a2776419551a62a7014eb9720af146a9dd9ec", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f" +} diff --git a/research/r740-block-retimed-kernel/INDEPENDENT-AUDIT.json b/research/r740-block-retimed-kernel/INDEPENDENT-AUDIT.json new file mode 100644 index 0000000000..ecf6b5bc96 --- /dev/null +++ b/research/r740-block-retimed-kernel/INDEPENDENT-AUDIT.json @@ -0,0 +1,104 @@ +{ + "local_audit": { + "window_retiming_changes": 42, + "pair_retiming_changes": 112, + "retiming_changes": 57, + "status": "PASS_INDEPENDENT_R740_KERNEL_AND_RETIMING", + "source_sha256": "d6ec8811541d6ab59a3bbbaaa15bccc8918b3b43b23d9f593198cfe90826fd20", + "candidate_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "entries": 112, + "donor_slots": 100, + "total_entrance_rank": 136, + "root_closed_frames": 944, + "source_span_checks": 20652, + "forward": { + "all_columns": 980, + "dirty_columns": 740, + "copies": 9, + "paid_profile": { + "1": 2528, + "2": 1004, + "3": 284, + "4": 347, + "5": 118, + "7": 14, + "8": 9 + } + }, + "reflected": { + "all_columns": 980, + "dirty_columns": 740, + "copies": 9, + "paid_profile": { + "1": 2528, + "2": 1004, + "3": 284, + "4": 347, + "5": 118, + "7": 14, + "8": 9 + } + }, + "negative_controls": [ + "omitted_first_basis", + "omitted_final_basis", + "missing_donor" + ], + "events": 19727, + "scope": "Independent reconstruction, every F2 scalar column and dirty restoration, exact source span/first-frame relations and both complementary dimension ledgers; global banking and pricing audited separately." + }, + "status": "PASS_INDEPENDENT_GLOBAL_INVOICE_AND_EXACT_ASSEMBLY", + "candidate_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "global_template_sha256": "b87ed8c20819237f2daacdd1383a2776419551a62a7014eb9720af146a9dd9ec", + "expanded_program_sha256": "ecb666b6a74fbf1e3482f37e84101588b15dd1deaeefe3c509644c251ac75332", + "events": 1420344, + "global_scalar_columns": 7620, + "global_dirty_columns": 6660, + "all_global_scalar_columns_restored": true, + "bank_assignments": 53280, + "bank_families": 6507, + "residual_isometries": 15, + "route_corruption_controls": [ + "altered_basis", + "missing_factor", + "wrong_frame" + ], + "extra_route_factors": 144, + "banks_per_stage": 723, + "live": 14187, + "physical": 14196, + "paid_profile": { + "1": 182016, + "2": 72288, + "3": 20448, + "4": 24984, + "5": 8496, + "7": 6768, + "8": 648, + "14": 3840, + "28": 3840, + "42": 3840 + }, + "deficit": 2496, + "source_bound_invoice": { + "prefix_bits": 123, + "charged_prefix_bits": 128, + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14187, + "physical": 14196, + "extra_helper_route_factor_bound": 144, + "selector_charge": 2375347104, + "full_counted_coefficient": "8271410009661736653226855278395470361", + "two_level_coefficient": "7323242093316479963924177312150069573045566553609912891292783054664675728289084971684" + }, + "independent_moment": "third rational enclosure; lower passes, adjacent upper fails", + "bit_lower": "17814006170324008149/15625000000000000000000", + "kappa": "1138798055343319/1000000000000000000", + "kappa_decimal": "0.001138798055343319", + "strict_outer_constraints": 47, + "bridge_omission_controls": 18, + "bootstrap_levels": 6 +} diff --git a/research/r740-block-retimed-kernel/LICENSE b/research/r740-block-retimed-kernel/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r740-block-retimed-kernel/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/r740-block-retimed-kernel/MANIFEST.json b/research/r740-block-retimed-kernel/MANIFEST.json new file mode 100644 index 0000000000..2c8bc4d51d --- /dev/null +++ b/research/r740-block-retimed-kernel/MANIFEST.json @@ -0,0 +1,101 @@ +{ + "files": { + ".gitattributes": "2f9541c7c27f084baad73b4cd50ddaeb264cc3aa8dbf13ec21df5ab3f673ca7e", + "CERTIFICATE.json": "c572b08b556331f84915ca6bd33c5d06b4f7d6513674ab37ab38e0056046d540", + "EXPECTED.json": "6d938c11d4d404ff33311176e001e9e48e156116bce8e98012caad5ae9df26e9", + "INDEPENDENT-AUDIT.json": "29b9ed22637f7735699bf965f504139a67e96236b357f0c9abcb85afa5a7fc5c", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "57af5e62fa0783b441c16976f37ebdc3debbb03a4d180299db5b769ef4bbbb71", + "PROOF.md": "737634a1100d08ed1666b4ad822f5df4ec2c09b2aad5dcad45018f0287b0337d", + "README.md": "032db2167bc47421d2db5c82021a74260162a98dfe508653f9dd17655dcb9bdb", + "SOURCES.json": "385bec1f9f58e0610f6700f95f442e1c93fb3662599a7f98875d52f0f7f6beed", + "VALIDATION.json": "7e728efc8b45bd5d5e998be7e7810c30f0cce4be347435b544af006f7211f7be", + "code/bit_audit.py": "6e8cb29cc22109b6854c2e9dd7b38b3b0e0b80e47d5b89a11c8639969c60486e", + "code/bit_construct.py": "6ee33b40c27b67be525da995890ef3d719d426b81ca2e28b7939befee0f8c3c1", + "code/bit_global.py": "9355b2c1122c8569557154f6640edec7cbe0ffe13634309c5b3f9af21e98b091", + "code/bit_kernel.py": "1fcf46e588edf3c268ebb32c66a1b022a4034d1a9e60d1020847fe6060077e8a", + "code/bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "code/combined.py": "64e7d98e8a4e3b7cd692c330ef07d0d0eff974592efc401e896f1c9b43b946f7", + "code/complex_audit.py": "adeba5ea113652b60105db2e8719b18ffa292d3cc23730cca614b40272348330", + "code/complex_construct.py": "0f7f45b2333ec7daf4291e2bf675b49bc330b97fb5965dd27220ba353c291d6f", + "code/complex_emit.py": "f56d5f01f7c121741f175814138dca7190d769920f0a27e2d5b99c21aebed0f1", + "code/complex_integrate.py": "3792f41e409383e6989bda22801a4836a646a530f99e99bbd7244a8f3a1a8b4f", + "code/complex_phases.py": "dff0495a4086dc359158425e71de5f01b5ea3d3bc060db18182f8509e2025c98", + "code/complex_phases_full.py": "0f2795aaffafe0c64d77f3748ef2109a3c42c58da867e4cf269a0a8cb6109466", + "code/complex_replay.py": "be2dccce2d1ad2c4f5c01a851c9c3896cc88236b5aeae706aad2ab16d6bfdad9", + "code/independent_audit.py": "5bd0936436dc1ffe2dbef744c5e98c0e558fc1f297c9d51cb4bbc8791be9dfdb", + "code/pair_retime.py": "0c3da5940f3b1650dd0937539f1891aa4ea4df46dedfd41a577dae70ded7e668", + "code/primitive_retime.py": "dde8600a6fb576616d9f2e9c848f007450a1d17baff70ec84026efd066a7b90e", + "code/residual_routes.py": "402924994a880d1ee45e42be2e7a51bd0281822046e474f5f5cc0adf885b52c7", + "code/window_retime.py": "97cbb5116c10428c60346e6e0ab43fa3c627233ce6c74088165a14be9f22ca5c", + "inputs/bit-geometry.json.gz": "5c980202227859e8bb9b863f94503930c2a59d460c0421356688e2b0d828b4a1", + "inputs/complex-canonical-reference.json.gz": "79ff8e19335d5d5d1563ef0bc218106945d6a2b88ece53ee24bb3d88b2594ba3", + "inputs/complex-data-phases.json.gz": "c972b5b60649c2a52354f5160f69adc0f4a270fa09d32012beff9888774ab84f", + "inputs/complex-phase-receipt.json": "b7e9de8137ed1de3e72a94c3a11525a8ff3770c914a43e3c3b82fd5d75264b32", + "inputs/complex-phase-recipes.json.gz": "b5472bb1d3f9ff41b0819780a42886a7686b4caf3c0617bb1dc86158b3fb8671", + "inputs/complex-ports.json.gz": "77b0c0fa19ef3da1c7316010e13493aa5eea1a50c3506eddc08f7480e659878b", + "inputs/complex-template.json.gz": "1b84904a31a733aab9bfdda3f528c06719f590d2133a43687a8bded955dc991e", + "inputs/e8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "notices/NOTICE-PR352.md": "967e6d7e76e216e4898cf543c75b527e8d397ec1ddba3800cb20701f24c89524", + "notices/NOTICE.md": "025773f32fb43667395e64c627a1752877bdc93afbfe01b106703eee438d21d3", + "notices/PR386.txt": "ae2241615a23063b18a04f1b7a88a52e62b3d7d42e333fbd21e3668567ab83d1", + "notices/PR426-SOURCE-PINS.json": "18ace817f2f9af22511bb303e99656ed114e534b87f3dd95a65ca4ca670baf2f", + "notices/PR426.md": "6a5593d0f284a2f0865037f5c5fa9e5f76f9e12cf50ec5284486d3b8137c89da", + "notices/PR438-NOTICE.md": "36c3eedbed8c4d3201cb8045615baf9a42a8ccc9ed346e0439857fe1fedebad3", + "notices/SUSSMAN-NOTICE": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81", + "proofs/INHERITED-COMPLEX-GEOMETRY.txt": "c1ff55536594222a8d2a30bc0e0956959774e1be2d5420b7838ad553ee556df2", + "proofs/PR386-BIT-GEOMETRY.txt": "c5f077b849e9add9957ab4ee36095dd47bc678dee7e09baa146dac4c0a0d66b2", + "proofs/PR425-COMPLEX.txt": "2cda27b9b9a1eb24127c38c2c7a6e085155a2472183e220189a3ea2c2b7720dc", + "proofs/PR426.md": "5787738ceb6faf14d3d96e8452592860a6c6a469733a9bcf196e8d1562ba1ffb", + "proofs/PR438-PROOF.md": "0f482e06aeda510e08055848bc2b68d30c93ed1722b9ed5e7613f96cf6346dde", + "proofs/PR438-README.md": "aebe7e50b25e43818f844886ae01c08c712b5453604fccac393631592fe9d0d2", + "stages/final-word.json": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "stages/kernel-selection.json": "fe7739e28bf7cfced2f71425242025cfbfa7f129ea61f94927f247b6b3e7df62", + "stages/kernel-v2-word.json": "b5789bffbf7bafe77a222366ea9a125b1d4a6f9d84b96afc4bb3c509d6b89b1a", + "stages/pair-retime-selection.json": "201d8cbc8ac1df10ee74246815f3ce8507b94395af69835e8098a8274bca5651", + "stages/retime-selection.json": "161b7c17f7fca5df2e52d6887c31acd2b370b2392fcb7d4a638bb9d8b0fc9c95", + "stages/window-retime-selection.json": "170a2190b6bae36de3a18a8b4c1a152cebd95b839ae889da3049f9d9b0109e30", + "vendor/clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "vendor/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "vendor/hamming_packets.py": "daa9301e2767a711cfe66c6bebaad68e1a3bdb97ec9e848c927527ab43b37ae5", + "vendor/kernel417/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/kernel417/e8core.py": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29", + "vendor/kernel417/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/kernel417/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/kernel417/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/kernel417/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "vendor/pr436/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr436/NOTICE.md": "eb9cb7eab03977930484fee70d0aea066803917a6304b1ad2644cfcc6bf2acd4", + "vendor/pr436/README.md": "d737a3b77de97bdf67d2a140465be5b8886af6aa57516f78ad8f2839f3dae8cc", + "vendor/pr436/code/bit/producer/compile.py": "60fea6a9d6617a3f87376d3fda040642e9cb70e7c179015e03ede8d289f30357", + "vendor/pr436/code/bit/producer/compile2.py": "0e23d4282ceb75768e82631da016aaff9818aec53c7d75a6b2a28ee1b1160dc3", + "vendor/pr436/code/bit/producer/e8lib.py": "4f8a6843e83bc4f7055d7337f33dbe12ce499051f46bee1b81bbf6b34c652574", + "vendor/pr436/code/bit/producer/frames.py": "ba71f77dd3e3c1c54f361c066cebe9faadbc78db46376046e7af625bf1de8c24", + "vendor/pr436/code/bit/producer/fullword.py": "0daf87599e9e48646b985ad87351c56c1b73cfc99cdf9eca081483846ddbfa90", + "vendor/pr436/code/bit/producer/ham1.py": "359040fb432fd392472af6b8f5dca0234dd6c2be744a791df27ba62bc5da5175", + "vendor/pr436/code/bit/producer/ham2.py": "fdf0af785ce697bd7f80b4e75f7163735f3b599d9dc42f652f0ffdbdf18ea8bf", + "vendor/pr436/code/bit/producer/params-r865.json": "1256c54debe0a551da8e24896ab73ef0bd4a5233ff8e6fedf21a9e6301d6e6f3", + "vendor/pr436/code/bit/producer/price.py": "46c858e60ba0a117bf8227b864abf55e85ebee2d56a0dce64472b706499ac405", + "vendor/pr436/code/reuse/controls.py": "89df84f78064de12cd11f0f5f63aa9cad2385f5d18d2e4ade7409a5ae0435721", + "vendor/pr436/code/reuse/ecost.py": "901c61f0a8082fc87012f91372aafbb2a1b464be685426e32e77cc9f0e393958", + "vendor/pr436/code/reuse/regen.py": "972740a54e487b12aebc09f2fab5f2878835727cb4ad82fb1aa26a0f2d34f517", + "vendor/pr436/code/reuse/retime.py": "d8530464a6e00e0a509cf8b392cae70579c8d0f636a0dc86677f5dee0863d34d", + "vendor/pr436/code/reuse/reuse.py": "b802483c024d23c92df30f1a2d93838280e39dfa0bd7129b879d6cc0b84c80a4", + "vendor/pr436/data/bit/bitE8-r740.json.gz": "f8daa4982d865748fa9a3095b2cf4290f34e2c085d6d35673fd7171cab95623c", + "vendor/pr436/data/bit/reuse-ledger.json": "e7bb324150a5342076c9a268f69b83c65f817a7cfc1d14fda9558a9f7e486f0b", + "vendor/pr436/data/params/params-r740.json": "871fc75ce6fea2638f68553bcfe771d09297e987d59c123338227e29415851d1", + "vendor/pr438/complex_phases.py": "3e2a52198475ee280a314895ab74df8437e3c0de0cad2d90baa370aa2a52c364", + "vendor/pr439/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr439/NOTICE.md": "750f199a92e02e1ae45d092c1768f0e1833542787158348ab4af63adbde003e7", + "vendor/pr439/bank_routes.py": "0dd88bd715477cdf804a41577bc096ba7911427f748f3ac6d6added365f7da60", + "vendor/pr439/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "vendor/pr439/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/pr439/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/pr439/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/pr439/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "verify.py": "e48fc2734325c298224d0a3b92dfea82e8b0671ad98549f8f189f9ea5d63265e" + } +} diff --git a/research/r740-block-retimed-kernel/NOTICE.md b/research/r740-block-retimed-kernel/NOTICE.md new file mode 100644 index 0000000000..54a13275b2 --- /dev/null +++ b/research/r740-block-retimed-kernel/NOTICE.md @@ -0,0 +1,21 @@ +# Attribution and AI disclosure + +This R740 shared-donor kernel and block-retiming composition was prepared by eumemic with OpenAI Codex assistance. The new finite selections, deterministic reconstruction, residual-isometry generator, portable phase binding, integration and audit changes are licensed under Apache-2.0. The selected construction is not represented as an optimal solution or a new unconditional multiplication theorem. + +Direct sources and contributions: + +- **eumemic, PR #440**, with OpenAI Codex assistance: frozen R740 shared-donor kernel selection and preceding 57 A-only retime. This successor begins with the exact same selected scalar word, then applies its two new B-frame witnesses. + +- **eumemic, PR #436**, with Anthropic Claude assistance: frozen R740 word, producer parameters, elimination-reuse reconstruction, retiming and provenance. The complete selected base is regenerated unchanged before the new kernel. +- **Chafik Boukhalfa (chafreaky), PR #417**, with Anthropic Claude assistance: shared-donor response-kernel mechanism and E8 replay/stage code. Original source notices remain in vendored files. +- **rohanarun, PR #438**, with Anthropic Claude assistance: composition of kernel entrances with compressed nine-stage mixed residual banks, bank admission and integration based on PR #433. Its original README, proof and notice are preserved under `proofs/` and `notices/`. +- **rohanarun / OpenAI Codex, PR #434**: concurrent ordered primitive-gate expansion and retiming idea. The preceding 57 A-only frame changes and the successor 112-B and 42-B frame-change witnesses were selected independently on this R740 kernel word. The latter two stages use pair search with single-gate descent and window moves, respectively; the ordered scalar ADD sequence is unchanged. +- **chafreaky, PR #439**, with OpenAI Codex assistance: explicit residual-isometry witness format, validation, corruption controls and conservative 144-factor helper-route charge. `vendor/pr439/` preserves exact source files, license and notice. This package generates the witnesses anew from its own entrance frames. +- **icekylinx, PR #433**, with OpenAI Codex assistance: unchanged split-centre complex supplier, finite invoices, six-level assembly and verifier lineage. The complex scalar word, both orientations, exact phases, banks, profiles and invoices are replayed in this package. +- **Zhihao Chen / jacklightChen, PR #425 and #386**, with OpenAI Codex assistance: mutable-basis Hamming complex producer and scalar-interface extension, exact phase lowering, compressed nine-stage bit geometry and global audit. +- **Dylan Crow / utcorvusvolat-dotcom, PR #370**, with Anthropic Claude assistance: E8 root family, bit producer, record format and exporter. +- **ai-nanachi, PR #426**; **applecrusher, PR #376**; **Jacob Sussman**, and the PR #266/#315/#329 compiler, pricing and analytic lineage: original construction, reuse and interface contributions retained in the source notices. + +`SOURCES.json` records exact imported commits and hashes, adapted source hashes, and the frozen canonical complex reference. Python gzip metadata can vary; the phase adapter compares the decoded canonical bytes to a reference whose compressed hash is exactly the original PR #433 receipt hash. This is a portability change, not a change to the complex program or phase evidence. + +The original historical documents under `proofs/`, `notices/`, and `vendor/` state the scope of their own packages. The current result and remaining inherited assumptions are in the top-level README and PROOF. diff --git a/research/r740-block-retimed-kernel/PROOF.md b/research/r740-block-retimed-kernel/PROOF.md new file mode 100644 index 0000000000..0d133c0571 --- /dev/null +++ b/research/r740-block-retimed-kernel/PROOF.md @@ -0,0 +1,65 @@ +# Finite R740 block-retimed response-kernel composition + +The exact conditional exponent saving is + +`κ = 1138798055343319 / 1000000000000000000 = 0.001138798055343319`. + +This successor to PR #440 (`bd03373b6d4d4e380d0b6ea7d55cd2ac8f163544`) states the changed finite construction. PR #440 and its `0.001136403735815528` claim remain frozen. The historical PR #438 proof and README are retained under `proofs/PR438-*`; their earlier values and source-centre bit word are historical and are not the present result. + +## 1. Pinned starting word + +`code/bit_construct.py` calls the unchanged PR #436 reconstruction: PR #370's producer with the frozen PR #436 parameters, elimination reuse, and six retiming sweeps. It compares the resulting JSON and reuse ledger to the pinned PR #436 copies. The canonical word hash is `d6ec8811541d6ab59a3bbbaaa15bccc8918b3b43b23d9f593198cfe90826fd20`. + +The base has h = 8, 120 ports, 740 dirty helpers and nine sequential retained copies at the full frame. The original source/target decoder and dirty restoration are replayed on all 980 independent binary columns. This package does not apply PR #433's source-centre conversion or PR #434's eleven resets to that base. + +## 2. New kernel witness + +`stages/kernel-selection.json` is bound to that input hash. The construction uses the shared-donor response-kernel mechanism of PR #417. A pivot p starts at a root-closed entrance E contained in the first frame of p and every donor. Its frame-zero completion reads are removed. Each donor adds the appropriate pivot at E before its first A gate, and adds the same pivot after C at the full frame. + +The completion response of each pivot equals the XOR of its donor responses. The 112 selected entries use 100 donor slots; their total entrance rank is 136. Every pivot is distinct, no pivot is a donor, and a donor is assigned consistently to one entrance. The exact reconstruction, response identities, source spans, nested frames and scalar decoder are checked, including arbitrary helper dirt. The kernel content hash is `b5789bffbf7bafe77a222366ea9a125b1d4a6f9d84b96afc4bb3c509d6b89b1a`. + +Expand each multi-source gate into its ordered primitive ADDs, preserving the exact scalar sequence. The expanded input hash is `cb2afa377baeb8578e867ecda0f81caa68b2dac9cca805f41247754cfe91deb5`. The frozen retiming witness changes only the frames of 57 distinct A gates; all destinations and sources remain identical. That intermediate word hash is `bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e`. + +This successor applies the separate `pair-retime-selection.json`: 112 net B-frame changes following 53 pair moves and single-gate descent. Its output hash is `fc4d045fd68ba47e21d69b840a51128ff52739dca3c0f7b9255bd757e31737e7`. The separate `window-retime-selection.json` then changes 42 B frames selected by 14 window moves. The final output hash is `00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6`. Both stages check old frame identities, uniqueness of modified gates, exact membership in the existing frame family, and unchanged ordered scalar destinations and sources. The discovery traces are provenance; the finite deterministic gate replacements are the proof witnesses. The full decoder, dirty restoration and integer source-span legality are replayed again after these changes. The ordered primitive-retiming idea is credited to concurrent PR #434; this selection is derived independently on the R740 kernel word. + +All 944 frames remain in the pinned rational frame family. There are 104 rank-one entrances, eight rank-four entrances, and 628 helpers with zero entrance. The actual local paid profile, including nine rank-eight retained copies, is + +`{1:2528, 2:1004, 3:284, 4:347, 5:118, 7:14, 8:9}`. + +The exported scalar record stream is rebuilt after primitive retiming; exact event counts appear in the emitted GLOBAL receipt. Reversing the actual stream and complementing frames gives the reflected program; each reflected ERASE becomes a fresh COPY. Both programs restore all independent helper columns and close each copied register. Their paid profiles agree. Exact rational spans and frame inclusion imply the corresponding commuting orthogonal-projector difference identities in both orientations under the inherited positive form. + +## 3. Mixed residual banks and nine-stage word + +Use the compressed PR #386 windows with ambient width 64, nine stages and eight replicas. A helper with entrance rank e requires a residual block of width 8-e. Each stage therefore has 832 width-seven slots, 64 width-four slots and 5,024 width-eight slots. The exact tiling uses 104 banks of eight width-seven plus one width-eight slot, four banks of sixteen width-four slots, and 615 banks of eight width-eight slots. That is 723 banks per stage and 5,920 assignments per stage. + +Every coordinate of every bank is occupied once. The generated owner map and an independent audit check disjointness, coverage, stage/replica identity and reflected orientation. For all 15 distinct entrance frames, the package generates a matrix N with integer entries and N N^T = 4I. Its first e rows span the actual entrance and its remaining rows span the residual. N/2 is a coordinate permutation, checked by replaying at most seven swaps. Extended by identity on 56 exterior coordinates and followed by at most 64 coordinate swaps, it gives an explicit residual-to-bank isometry valid over every inherited odd address prime. The verifier checks the actual frame ID on every owner and rejects altered bases, frames and omitted factors. This closes the finite residual-isometry obligation highlighted by PR #439. The cover construction and correlated-dirty-bank semantics remain inherited all-size interfaces. + +There are `W = 64·120 + 9·723 = 14187` live families, plus nine private centres. All nine local invocations replay 7,620 independent unbanked scalar columns, and the integer eight-bank macro identity includes all eighteen signed bridge shears and the terminal exchange. Omitting each bridge fails. + +The complete paid profile is obtained by summing all 72 emitted local invocations and the actual idle children: + +`{1:182016, 2:72288, 3:20448, 4:24984, 5:8496, 7:6768, 8:648, 14:3840, 28:3840, 42:3840}`. + +It satisfies `64·W - sum(r·H[r]) = 2496`. The maximum child is 42 and `64² > 2·42²`. No saving is inferred solely from a helper count or a prospective histogram. + +## 4. Complex supplier and finite invoices + +The complex side is the unchanged PR #433 split-centre program. The package rebuilds its scalar word, both orientations, bank ownership, padding and complete paid profile. The `--replay-phases` mode also reconstructs every selected Gaussian phase pair and checks the exact recipe bytes. Two rational moment engines certify `b = 1183986549206329/10^18` with the inherited bad-branch allowance. + +The bit finite invoice adds a conservative 144 elementary factors to every helper route, exceeding the seven local and 64 bank-coordinate swaps. The bit finite invoice is recomputed from emitted additions, owner assignments, geometry, copied-centre episodes, actual prefix bounds, compiler charges and selectors. It checks the retained two-level `2^512` coefficient allowance, row coefficient `18355 < 20161`, and the maximum-child inequality. Both rational moment engines, including the `10^-16` bad-branch allowance, certify + +`c = 1140096394900736521536/10^24`. + +The bit component binds. Exact counts and coefficient sizes appear in `CERTIFICATE.json`, and are recomputed by `code/combined.py`. + +## 5. Exact outer assembly + +Set eta = beta = `10^-18`, and + +`s = min(c, (1-beta)b) - 10^-24`. + +Starting at `a0 = 384599/10^10`, use six ordinary bootstrap levels `a[j+1] = (1-s)s + s·a[j]`. Each positive gap and finite cutoff is checked exactly with the charged 512-bit coefficient reserve. Put `q = a6(1-2eta)` and choose the largest `10^-18` grid point strictly below `(1-eta)q/(1+q)`. + +The resulting κ above satisfies all 47 strict outer inequalities. The next κ grid point, zero eta, zero beta and unit beta are rejected. The result composes both actual supplier programs; independently quoted improvements are not added numerically. + +All-size compiler, restored-work, tape, common-grid precision, correlated-dirty-bank and analytic transfer assumptions remain conditional. This finite computation is not an unconditional multiplication theorem or a Lean-kernel proof. diff --git a/research/r740-block-retimed-kernel/README.md b/research/r740-block-retimed-kernel/README.md new file mode 100644 index 0000000000..95782c7eeb --- /dev/null +++ b/research/r740-block-retimed-kernel/README.md @@ -0,0 +1,31 @@ +κ = 1.138798055343319e-3 + +# Block retiming on the R740 shared-donor E8 word + +This conditional construction combines frozen PR #436's R740 bit word with a newly selected shared-donor response kernel and PR #433's unchanged split-centre complex supplier. The exact result is + +`κ = 1138798055343319 / 1000000000000000000 = 0.001138798055343319`. + +The bit supplier binds at `c = 1140096394900736521536 / 10^24`. The complex supplier remains `b = 1183986549206329 / 10^18`. This improves PR #440's R740 shared-donor package's `κ = 0.001136403735815528` by approximately 0.21069%. + +After kernel construction and the preceding 57 A-only primitive frame changes, this successor applies 112 net B-frame changes following 53 pair moves and single-gate descent, then 42 further B-frame changes selected by 14 window moves. Every stage preserves the complete ordered scalar ADD sequence and uses only the existing frame family. The bit construction has 740 helpers. Its 112 kernel entries use 100 donor slots and add 136 total entrance dimensions. In each compressed nine-stage window, 5,920 residual slots tile 723 width-64 banks exactly, with no padding. Live stock is 14,187 and the rank deficit is 2,496. No previous published PR is changed. + +## Reproduce + +Python 3.11 or later and its standard library suffice. Run from any directory, choosing a fresh output directory: + +```sh +python3 -B research/r740-block-retimed-kernel/verify.py /tmp/r740-block-retimed-kernel-check --replay-phases +``` + +Omit `--replay-phases` to reuse only the unchanged, source-bound complex phase evidence. The full command reconstructs the PR #436 word from its pinned producer parameters, elimination reuse and retiming; applies the frozen kernel and retiming selections; replays both scalar orientations and arbitrary dirty columns; checks both reflected frame ledgers and exact bank coordinates; rebuilds complete paid profiles and finite invoices; verifies two rational moment engines and all 47 strict outer inequalities. The full complex replay reconstructs every selected Gaussian phase pair as well. + +The phase input is bound to a frozen canonical payload whose original compressed hash matches PR #433's receipt. Comparing decoded bytes removes the Python 3.12/3.14 gzip metadata difference without changing the mathematical input. `MANIFEST.json` and `SOURCES.json` bind package files and provenance. `EXPECTED.json` binds the final exact result and template hashes. + +## Construction and scope + +PR #436 is reproduced exactly before the new kernel is applied. The kernel and all three retiming selections are finite witnesses, not claims of optimal search. Every stage is reconstructed from its input hash; the final word has SHA256 `00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6`. The previous 57-gate package is published as PR #440 at commit `bd03373b6d4d4e380d0b6ea7d55cd2ac8f163544`; its claim and selected word remain frozen, and its release manifest is pinned in SOURCES.json. Explicit residual isometries follow the obligation made concrete by PR #439, and their route factors are charged in the invoice. Ordered primitive expansion and retiming also follow the contemporaneous idea in PR #434. The kernel mechanism comes from Chafik Boukhalfa's PR #417; the compressed mixed-width admission follows PR #438 and PR #386. The complex program is reconstructed and checked from the pinned PR #433/PR #425 inputs. + +The precise finite claim is in [PROOF.md](PROOF.md). All-size compressed-window and correlated dirty-bank semantics, recursive compiler, restored-work/tape/common-grid precision, and analytic transfer interfaces remain inherited assumptions. No unconditional multiplication theorem or new Lean proof is claimed. + +Prepared by eumemic with OpenAI Codex assistance. Earlier Anthropic Claude and OpenAI assistance is preserved in [NOTICE.md](NOTICE.md), [SOURCES.json](SOURCES.json), and the original notices. Historical documents under `proofs/` describe their original constructions; they do not state this package's result. diff --git a/research/r740-block-retimed-kernel/SOURCES.json b/research/r740-block-retimed-kernel/SOURCES.json new file mode 100644 index 0000000000..2bf6ed4206 --- /dev/null +++ b/research/r740-block-retimed-kernel/SOURCES.json @@ -0,0 +1,428 @@ +{ + "upstream_base": "12a4934d15006e8c10f9b2264f13f8f341be802b", + "pr425": "e11ccea1d092beb1b01b4ee4ce49da478234254c", + "pr426": "88d552526893cd15325948bb1487e9a4d4bf32f6", + "imported_files": [ + { + "path": "vendor/hamming_packets.py", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/complex-network/hamming_packets.py", + "sha256": "daa9301e2767a711cfe66c6bebaad68e1a3bdb97ec9e848c927527ab43b37ae5" + }, + { + "path": "vendor/clifford_exact.py", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/odd-stages/clifford_exact.py", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" + }, + { + "path": "inputs/complex-ports.json.gz", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/higher-stage-e8/verified/gcert1-e8-retimed.json.gz", + "sha256": "77b0c0fa19ef3da1c7316010e13493aa5eea1a50c3506eddc08f7480e659878b" + }, + { + "path": "inputs/complex-template.json.gz", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/complex-nine-native/GLOBAL-TEMPLATE.json.gz", + "sha256": "1b84904a31a733aab9bfdda3f528c06719f590d2133a43687a8bded955dc991e" + }, + { + "path": "inputs/complex-data-phases.json.gz", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/complex-nine-native/DATA-PHASES.json", + "sha256": "c972b5b60649c2a52354f5160f69adc0f4a270fa09d32012beff9888774ab84f", + "source_sha256": "f621f6d4296cb215f334830356c5f79fe10d6d04d15b3ccda76ba0885ab67d0a", + "encoding": "gzip; decoded bytes identical to source" + }, + { + "path": "inputs/e8-r865.json.gz", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/pr370-source/research/e8-bit/data/bit/bitE8-r865.json.gz", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + }, + { + "path": "proofs/PR425-COMPLEX.txt", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/complex-network/hamming/PROOF.txt", + "sha256": "2cda27b9b9a1eb24127c38c2c7a6e085155a2472183e220189a3ea2c2b7720dc" + }, + { + "path": "proofs/INHERITED-COMPLEX-GEOMETRY.txt", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/complex-nine-native/PROOF.txt", + "sha256": "c1ff55536594222a8d2a30bc0e0956959774e1be2d5420b7838ad553ee556df2" + }, + { + "path": "vendor/engines/moment.py", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/pr361/code/engines/moment.py", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + { + "path": "vendor/engines/base_two_moment.py", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/pr361/code/engines/base_two_moment.py", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + { + "path": "vendor/engines/outer.py", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/pr361/code/engines/outer.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + { + "path": "vendor/export_records.py", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/e8-bit/code/bit/export_records.py", + "sha256": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3" + }, + { + "path": "inputs/bit-geometry.json.gz", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/e8-bit-complex-nine-validation/GEOMETRY.json.gz", + "sha256": "5c980202227859e8bb9b863f94503930c2a59d460c0421356688e2b0d828b4a1" + }, + { + "path": "proofs/PR386-BIT-GEOMETRY.txt", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/e8-bit-complex-nine/PROOF.txt", + "sha256": "c5f077b849e9add9957ab4ee36095dd47bc678dee7e09baa146dac4c0a0d66b2" + }, + { + "path": "notices/PR386.txt", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/e8-bit-complex-nine/NOTICE.txt", + "sha256": "ae2241615a23063b18a04f1b7a88a52e62b3d7d42e333fbd21e3668567ab83d1" + }, + { + "path": "notices/PR426.md", + "source": "CrocSwap/integer-mult-bounds@88d552526893cd15325948bb1487e9a4d4bf32f6:research/e8-clean-reuse-extension/NOTICE.md", + "sha256": "6a5593d0f284a2f0865037f5c5fa9e5f76f9e12cf50ec5284486d3b8137c89da" + }, + { + "path": "proofs/PR426.md", + "source": "CrocSwap/integer-mult-bounds@88d552526893cd15325948bb1487e9a4d4bf32f6:research/e8-clean-reuse-extension/PROOF.md", + "sha256": "5787738ceb6faf14d3d96e8452592860a6c6a469733a9bcf196e8d1562ba1ffb" + }, + { + "path": "notices/PR426-SOURCE-PINS.json", + "source": "CrocSwap/integer-mult-bounds@88d552526893cd15325948bb1487e9a4d4bf32f6:research/e8-clean-reuse-extension/SOURCE-PINS.json", + "sha256": "18ace817f2f9af22511bb303e99656ed114e534b87f3dd95a65ca4ca670baf2f" + }, + { + "path": "notices/NOTICE-PR352.md", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/pr370-source/research/e8-bit/NOTICE-PR352.md", + "sha256": "967e6d7e76e216e4898cf543c75b527e8d397ec1ddba3800cb20701f24c89524" + }, + { + "path": "notices/NOTICE.md", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/pr370-source/research/e8-bit/NOTICE.md", + "sha256": "025773f32fb43667395e64c627a1752877bdc93afbfe01b106703eee438d21d3" + }, + { + "path": "LICENSE", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/pr370-source/research/e8-bit/LICENSE", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "notices/SUSSMAN-NOTICE", + "source": "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/e8-bit/code/complex/inputs/complex/NOTICE", + "sha256": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81" + }, + { + "path": "vendor/pr436/LICENSE", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/LICENSE", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "vendor/pr436/NOTICE.md", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/NOTICE.md", + "sha256": "eb9cb7eab03977930484fee70d0aea066803917a6304b1ad2644cfcc6bf2acd4" + }, + { + "path": "vendor/pr436/README.md", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/README.md", + "sha256": "d737a3b77de97bdf67d2a140465be5b8886af6aa57516f78ad8f2839f3dae8cc" + }, + { + "path": "vendor/pr436/code/bit/producer/compile.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/bit/producer/compile.py", + "sha256": "60fea6a9d6617a3f87376d3fda040642e9cb70e7c179015e03ede8d289f30357" + }, + { + "path": "vendor/pr436/code/bit/producer/compile2.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/bit/producer/compile2.py", + "sha256": "0e23d4282ceb75768e82631da016aaff9818aec53c7d75a6b2a28ee1b1160dc3" + }, + { + "path": "vendor/pr436/code/bit/producer/e8lib.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/bit/producer/e8lib.py", + "sha256": "4f8a6843e83bc4f7055d7337f33dbe12ce499051f46bee1b81bbf6b34c652574" + }, + { + "path": "vendor/pr436/code/bit/producer/frames.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/bit/producer/frames.py", + "sha256": "ba71f77dd3e3c1c54f361c066cebe9faadbc78db46376046e7af625bf1de8c24" + }, + { + "path": "vendor/pr436/code/bit/producer/fullword.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/bit/producer/fullword.py", + "sha256": "0daf87599e9e48646b985ad87351c56c1b73cfc99cdf9eca081483846ddbfa90" + }, + { + "path": "vendor/pr436/code/bit/producer/ham1.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/bit/producer/ham1.py", + "sha256": "359040fb432fd392472af6b8f5dca0234dd6c2be744a791df27ba62bc5da5175" + }, + { + "path": "vendor/pr436/code/bit/producer/ham2.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/bit/producer/ham2.py", + "sha256": "fdf0af785ce697bd7f80b4e75f7163735f3b599d9dc42f652f0ffdbdf18ea8bf" + }, + { + "path": "vendor/pr436/code/bit/producer/params-r865.json", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/bit/producer/params-r865.json", + "sha256": "1256c54debe0a551da8e24896ab73ef0bd4a5233ff8e6fedf21a9e6301d6e6f3" + }, + { + "path": "vendor/pr436/code/bit/producer/price.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/bit/producer/price.py", + "sha256": "46c858e60ba0a117bf8227b864abf55e85ebee2d56a0dce64472b706499ac405" + }, + { + "path": "vendor/pr436/code/reuse/controls.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/reuse/controls.py", + "sha256": "89df84f78064de12cd11f0f5f63aa9cad2385f5d18d2e4ade7409a5ae0435721" + }, + { + "path": "vendor/pr436/code/reuse/ecost.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/reuse/ecost.py", + "sha256": "901c61f0a8082fc87012f91372aafbb2a1b464be685426e32e77cc9f0e393958" + }, + { + "path": "vendor/pr436/code/reuse/regen.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/reuse/regen.py", + "sha256": "972740a54e487b12aebc09f2fab5f2878835727cb4ad82fb1aa26a0f2d34f517" + }, + { + "path": "vendor/pr436/code/reuse/retime.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/reuse/retime.py", + "sha256": "d8530464a6e00e0a509cf8b392cae70579c8d0f636a0dc86677f5dee0863d34d" + }, + { + "path": "vendor/pr436/code/reuse/reuse.py", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/code/reuse/reuse.py", + "sha256": "b802483c024d23c92df30f1a2d93838280e39dfa0bd7129b879d6cc0b84c80a4" + }, + { + "path": "vendor/pr436/data/bit/bitE8-r740.json.gz", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/data/bit/bitE8-r740.json.gz", + "sha256": "f8daa4982d865748fa9a3095b2cf4290f34e2c085d6d35673fd7171cab95623c" + }, + { + "path": "vendor/pr436/data/bit/reuse-ledger.json", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/data/bit/reuse-ledger.json", + "sha256": "e7bb324150a5342076c9a268f69b83c65f817a7cfc1d14fda9558a9f7e486f0b" + }, + { + "path": "vendor/pr436/data/params/params-r740.json", + "source": "CrocSwap/integer-mult-bounds@da8ca2025472553ac9b36f4400138ed48a6a0e3b:research/e8-bit-elimination-reuse/data/params/params-r740.json", + "sha256": "871fc75ce6fea2638f68553bcfe771d09297e987d59c123338227e29415851d1" + }, + { + "path": ".gitattributes", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/.gitattributes", + "sha256": "2f9541c7c27f084baad73b4cd50ddaeb264cc3aa8dbf13ec21df5ab3f673ca7e" + }, + { + "path": "code/bit_price.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/bit_price.py", + "sha256": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee" + }, + { + "path": "code/complex_audit.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/complex_audit.py", + "sha256": "adeba5ea113652b60105db2e8719b18ffa292d3cc23730cca614b40272348330" + }, + { + "path": "code/complex_construct.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/complex_construct.py", + "sha256": "0f7f45b2333ec7daf4291e2bf675b49bc330b97fb5965dd27220ba353c291d6f" + }, + { + "path": "code/complex_emit.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/complex_emit.py", + "sha256": "f56d5f01f7c121741f175814138dca7190d769920f0a27e2d5b99c21aebed0f1" + }, + { + "path": "code/complex_integrate.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/complex_integrate.py", + "sha256": "3792f41e409383e6989bda22801a4836a646a530f99e99bbd7244a8f3a1a8b4f" + }, + { + "path": "code/complex_phases_full.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/complex_phases_full.py", + "sha256": "0f2795aaffafe0c64d77f3748ef2109a3c42c58da867e4cf269a0a8cb6109466" + }, + { + "path": "code/complex_replay.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/complex_replay.py", + "sha256": "be2dccce2d1ad2c4f5c01a851c9c3896cc88236b5aeae706aad2ab16d6bfdad9" + }, + { + "path": "inputs/complex-phase-receipt.json", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/inputs/complex-phase-receipt.json", + "sha256": "b7e9de8137ed1de3e72a94c3a11525a8ff3770c914a43e3c3b82fd5d75264b32" + }, + { + "path": "inputs/complex-phase-recipes.json.gz", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/inputs/complex-phase-recipes.json.gz", + "sha256": "b5472bb1d3f9ff41b0819780a42886a7686b4caf3c0617bb1dc86158b3fb8671" + }, + { + "path": "vendor/kernel417/LICENSE", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/kernel417/LICENSE", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "vendor/kernel417/e8core.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/kernel417/e8core.py", + "sha256": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29" + }, + { + "path": "vendor/kernel417/engines/base_two_moment.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/kernel417/engines/base_two_moment.py", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + { + "path": "vendor/kernel417/engines/moment.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/kernel417/engines/moment.py", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + { + "path": "vendor/kernel417/engines/outer.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/kernel417/engines/outer.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + { + "path": "vendor/kernel417/stages.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/kernel417/stages.py", + "sha256": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668" + }, + { + "path": "vendor/pr438/complex_phases.py", + "source": "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/complex_phases.py", + "sha256": "3e2a52198475ee280a314895ab74df8437e3c0de0cad2d90baa370aa2a52c364" + }, + { + "path": "vendor/pr439/LICENSE", + "source": "CrocSwap/integer-mult-bounds@fa3a588ec1e383083abb8de9c51904fb9d689ad4:research/e8-r740-kernel/LICENSE", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "vendor/pr439/NOTICE.md", + "source": "CrocSwap/integer-mult-bounds@fa3a588ec1e383083abb8de9c51904fb9d689ad4:research/e8-r740-kernel/NOTICE.md", + "sha256": "750f199a92e02e1ae45d092c1768f0e1833542787158348ab4af63adbde003e7" + }, + { + "path": "vendor/pr439/bank_routes.py", + "source": "CrocSwap/integer-mult-bounds@fa3a588ec1e383083abb8de9c51904fb9d689ad4:research/e8-r740-kernel/code/bank_routes.py", + "sha256": "0dd88bd715477cdf804a41577bc096ba7911427f748f3ac6d6added365f7da60" + }, + { + "path": "vendor/pr439/e8core.py", + "source": "CrocSwap/integer-mult-bounds@fa3a588ec1e383083abb8de9c51904fb9d689ad4:research/e8-r740-kernel/code/e8core.py", + "sha256": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb" + }, + { + "path": "vendor/pr439/engines/base_two_moment.py", + "source": "CrocSwap/integer-mult-bounds@fa3a588ec1e383083abb8de9c51904fb9d689ad4:research/e8-r740-kernel/code/engines/base_two_moment.py", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + { + "path": "vendor/pr439/engines/moment.py", + "source": "CrocSwap/integer-mult-bounds@fa3a588ec1e383083abb8de9c51904fb9d689ad4:research/e8-r740-kernel/code/engines/moment.py", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + { + "path": "vendor/pr439/engines/outer.py", + "source": "CrocSwap/integer-mult-bounds@fa3a588ec1e383083abb8de9c51904fb9d689ad4:research/e8-r740-kernel/code/engines/outer.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + { + "path": "vendor/pr439/tile_m.py", + "source": "CrocSwap/integer-mult-bounds@fa3a588ec1e383083abb8de9c51904fb9d689ad4:research/e8-r740-kernel/code/tile_m.py", + "sha256": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd" + } + ], + "adapted_sources": { + "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/complex-network/hamming_full.py": "613796df039dfc08de708831582533e553316eaf157485531e4df2d897bdb3bb", + "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/complex-network/audit_full.py": "fdc1da8fa95716d60076383e691a5be1bf8bec0b229b7582bc056afac28951d0", + "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/complex-network/integrate.py": "eb5b427f2095578f28a1fb320b4694047e20abdbe0c8bcdc65b1e9e05ab90d01", + "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/complex-network/phase_full.py": "5c2bd267cc3106c9eee8787132c460614fdde8177c0c2653435f8a7b110ebac1", + "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/hamming-mutable-basis-complex/work/complex-network/replay_ir.py": "f7a3829118581ee59fdeefc1f91166d8e7bb94686ea92e7743a2ef7d50139dcc", + "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/e8-bit-complex-nine/global_word.py": "2c438be46213e014170e607a745185e45e33c7b7240b833efc86a2330de0d1f6", + "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/e8-bit-complex-nine/audit.py": "75811327b0d6cbd56aae8e28d72abd42d57c7f3f3630781d045efee2d36446e9", + "CrocSwap/integer-mult-bounds@e11ccea1d092beb1b01b4ee4ce49da478234254c:research/e8-bit-complex-nine/certify.py": "550b1408fb3a581dd6b82c90e3f84ad7a9f78746d2be11ffa1cf543d719ae2d4", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/CERTIFICATE.json": "f71580f22193726fb582eae604807ff70a7302265e001d9484a718e63bbe14c4", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/EXPECTED.json": "1563715b7b1ba846ec9dfabf6badd61913269fc84dfb349299a73d530aaac4a9", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/SOURCES.json": "11aa666d678fed084b01d1e8e47239e1674eaedbc6fe0cee7edb2753477af9be", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/VALIDATION.json": "4957420a5a988e045537e31f79da7f8d35592185d45802c0ff4adfd0d97a772e", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/bit_construct.py": "a461e6c983531beb5c8ac82ff593f39ce4e056387d1d6061f6e6b294dde4395f", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/bit_global.py": "b3a486487e223ef0e2b4fd212063c1506740ba18765e99878e07d06968877eca", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/bit_kernel.py": "14f164fcc0674f73163808a9d9762eb439ea130895f593cb78a6cafaed2dfb11", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/complex_phases.py": "3e2a52198475ee280a314895ab74df8437e3c0de0cad2d90baa370aa2a52c364", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/inputs/bit-geometry.json.gz": "5c980202227859e8bb9b863f94503930c2a59d460c0421356688e2b0d828b4a1", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/inputs/bit-r767.json.gz": "bd3b84244528767b85d8d7fe423b155630b5c659e21e51563674b1dcb6305ad7", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/inputs/complex-data-phases.json.gz": "c972b5b60649c2a52354f5160f69adc0f4a270fa09d32012beff9888774ab84f", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/inputs/complex-ports.json.gz": "77b0c0fa19ef3da1c7316010e13493aa5eea1a50c3506eddc08f7480e659878b", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/inputs/complex-template.json.gz": "1b84904a31a733aab9bfdda3f528c06719f590d2133a43687a8bded955dc991e", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/inputs/e8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/notices/NOTICE-PR352.md": "967e6d7e76e216e4898cf543c75b527e8d397ec1ddba3800cb20701f24c89524", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/notices/NOTICE.md": "025773f32fb43667395e64c627a1752877bdc93afbfe01b106703eee438d21d3", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/notices/PR386.txt": "ae2241615a23063b18a04f1b7a88a52e62b3d7d42e333fbd21e3668567ab83d1", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/notices/PR426-SOURCE-PINS.json": "18ace817f2f9af22511bb303e99656ed114e534b87f3dd95a65ca4ca670baf2f", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/notices/PR426.md": "6a5593d0f284a2f0865037f5c5fa9e5f76f9e12cf50ec5284486d3b8137c89da", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/notices/SUSSMAN-NOTICE": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/proofs/INHERITED-COMPLEX-GEOMETRY.txt": "c1ff55536594222a8d2a30bc0e0956959774e1be2d5420b7838ad553ee556df2", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/proofs/PR386-BIT-GEOMETRY.txt": "c5f077b849e9add9957ab4ee36095dd47bc678dee7e09baa146dac4c0a0d66b2", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/proofs/PR425-COMPLEX.txt": "2cda27b9b9a1eb24127c38c2c7a6e085155a2472183e220189a3ea2c2b7720dc", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/proofs/PR426.md": "5787738ceb6faf14d3d96e8452592860a6c6a469733a9bcf196e8d1562ba1ffb", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/stages/kernel-selection.json": "4db07350804923c5c2bdb0aadb5dd4366f55b0e349dccad96d69a09feac9ad9e", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/vendor/hamming_packets.py": "daa9301e2767a711cfe66c6bebaad68e1a3bdb97ec9e848c927527ab43b37ae5", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/verify.py": "46ed1039f35480fef612d54f12fd874e2266c0ce3baab692603886bc7aa4c58b", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/NOTICE.md": "36c3eedbed8c4d3201cb8045615baf9a42a8ccc9ed346e0439857fe1fedebad3", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/PROOF.md": "0f482e06aeda510e08055848bc2b68d30c93ed1722b9ed5e7613f96cf6346dde", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/README.md": "aebe7e50b25e43818f844886ae01c08c712b5453604fccac393631592fe9d0d2", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/bit_audit.py": "b2b4b792f14ac9946bdcd1bf4c0d47c46fe05ff6ff9c5f0317037c9a1ee1e5fe", + "CrocSwap/integer-mult-bounds@e3b56de7869f6af88d48ac0ab1d7959c4c9e6176:research/split-centres-kernel-r747/code/combined.py": "825c32a81529da35a347666468585c69d66c0ee161717f2994769782fb57e29e" + }, + "pr436": "da8ca2025472553ac9b36f4400138ed48a6a0e3b", + "new_work": "OpenAI Codex: selected response kernel on frozen PR436 R740, followed by 57 A-only ordered primitive retimings; generated explicit residual isometries and adapted independently audited bank/invoice integration with full PR433 complex replay. Primitive expansion/retiming credits concurrent PR434. Explicit residual-route checks and conservative 144-factor charge credit PR439. This successor adds a frozen 112-B-gate retiming witness from equal-frame pair search and single-gate cleanup; ordered scalar operations are unchanged. A further frozen 42-B-gate window retiming follows the pair stage; both new stages preserve every scalar destination and source in order.", + "pr438": "e3b56de7869f6af88d48ac0ab1d7959c4c9e6176", + "canonical_reference": { + "path": "inputs/complex-canonical-reference.json.gz", + "sha256": "79ff8e19335d5d5d1563ef0bc218106945d6a2b88ece53ee24bb3d88b2594ba3", + "canonical_payload_sha256": "be2d8d412b948bce50a0fc852ab4c01f57bff4c3c8272da80c09be5bcdf253bf", + "provenance": "Frozen PR433 canonical complex word regenerated in the independently verified Python 3.14 full-phase replay; its original gzip SHA256 is pinned by inputs/complex-phase-receipt.json. This package compares decoded bytes to handle Python gzip metadata variation." + }, + "pr439": "fa3a588ec1e383083abb8de9c51904fb9d689ad4", + "pr434_retiming_idea": "6a1c6a308429ea11f64b679df6abdf2bf40436b0", + "pr434_receipt_only_current_head": "1146ce018558e3cc4d913717f26675f4d11b861b", + "selected_witnesses": { + "kernel_base_sha256": "d6ec8811541d6ab59a3bbbaaa15bccc8918b3b43b23d9f593198cfe90826fd20", + "kernel_output_sha256": "b5789bffbf7bafe77a222366ea9a125b1d4a6f9d84b96afc4bb3c509d6b89b1a", + "primitive_input_sha256": "cb2afa377baeb8578e867ecda0f81caa68b2dac9cca805f41247754cfe91deb5", + "retimed_output_sha256": "bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e", + "kernel_entries": 112, + "retiming_moves": 57, + "discovery_claim": "Selected finite witnesses are regenerated and exactly checked; optimization search is not claimed to be reproduced or globally optimal.", + "pair_retime_input_sha256": "bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e", + "pair_retime_output_sha256": "fc4d045fd68ba47e21d69b840a51128ff52739dca3c0f7b9255bd757e31737e7", + "B_retime_moves": 112, + "window_retime_input_sha256": "fc4d045fd68ba47e21d69b840a51128ff52739dca3c0f7b9255bd757e31737e7", + "window_retime_output_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "window_retime_moves": 42 + }, + "prior_package_manifest_sha256": "96d74b0f35af21c8e50224f850514b1d1d1a3247206ce7e7372fc821a2f6d619", + "predecessor_pr440": { + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/440", + "head": "bd03373b6d4d4e380d0b6ea7d55cd2ac8f163544", + "manifest_sha256": "0c27346bb5a784e24ceaf3888c710d7947deba2e2cac7e8649af44f83611637b", + "claim": "0.001136403735815528", + "word_sha256": "bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e", + "relationship": "This successor starts from the exact same selected scalar word and kernel witnesses. Prior development package manifest is separately recorded; the published PR440 audit source has only whitespace differences from that development package. Both previous package and published PR heads remain frozen." + } +} diff --git a/research/r740-block-retimed-kernel/VALIDATION.json b/research/r740-block-retimed-kernel/VALIDATION.json new file mode 100644 index 0000000000..defca421fa --- /dev/null +++ b/research/r740-block-retimed-kernel/VALIDATION.json @@ -0,0 +1,34 @@ +{ + "status": "PASS_FRESH_COMPLETE_PHASE_AND_INDEPENDENT_REPLAY", + "runtime": { + "executable": "/private/tmp/moonshot/primitives/char0/venv/bin/python", + "version": "3.12.13" + }, + "command": "python3 -B research/r740-block-retimed-kernel/verify.py OUTPUT --replay-phases", + "observed_exit_code": 0, + "full_complex_phase_replay": true, + "independent_audit_no_producer_or_pricing_imports": true, + "word_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "kappa": "1138798055343319/1000000000000000000", + "bit_template_sha256": "b87ed8c20819237f2daacdd1383a2776419551a62a7014eb9720af146a9dd9ec", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "verification_steps": [ + "hamming_packets", + "complex_construct", + "complex_audit", + "complex_emit", + "complex_phases", + "bit_construct", + "bit_kernel", + "bit_export", + "bit_global", + "bit_audit", + "bit_price", + "complex_integrate", + "complex_replay", + "combined", + "independent_audit" + ], + "prior_release": "PR #440 bd03373b6d4d4e380d0b6ea7d55cd2ac8f163544", + "post_replay_packaging": "Certificates and manifest metadata added after successful replay; construction and audit code unchanged." +} diff --git a/research/r740-block-retimed-kernel/code/bit_audit.py b/research/r740-block-retimed-kernel/code/bit_audit.py new file mode 100644 index 0000000000..33058e814a --- /dev/null +++ b/research/r740-block-retimed-kernel/code/bit_audit.py @@ -0,0 +1,134 @@ +# Adapted with exact rational span checks by icekylinx; Codex assistance. +"""Independent audit of the emitted bit template, including mutation controls. +Prepared by Zhihao Chen with OpenAI Codex assistance; Apache-2.0. +""" +import argparse, copy, gzip, hashlib, json, struct, time +from collections import Counter, defaultdict +from pathlib import Path +from fractions import Fraction as Q +from residual_routes import validate_isometries + +def sha(p): return hashlib.sha256(p.read_bytes()).hexdigest() + +def main(): + ap=argparse.ArgumentParser(); ap.add_argument('--local-check',type=Path,required=True); ap.add_argument('--out',type=Path,required=True) + a=ap.parse_args(); start=time.monotonic(); out=a.out + blob=gzip.decompress((out/'GLOBAL-TEMPLATE.json.gz').read_bytes()); t=json.loads(blob) + g=json.loads((out/'GLOBAL.json').read_text()); geo=json.loads((out/'GEOMETRY.json').read_text()) + assert hashlib.sha256(blob).hexdigest()==g['template_sha256'] + assert t['geometry_sha256']==sha(out/'GEOMETRY.json') and t['source_record_sha256']==sha(a.local_check/'records/249-records.bin') + fs=json.loads((a.local_check/'records/frames.json').read_text())['frames'] + records=list(struct.iter_unpack('<6i',(a.local_check/'records/249-records.bin').read_bytes())) + word=json.loads((a.local_check/'bit-source-centres.json').read_text()) + assert g['word_sha256']==sha(a.local_check/'bit-source-centres.json') + def rank(rows): + piv={} + for rr in rows: + row=list(map(Q,rr)) + for k,b in sorted(piv.items()): + q=row[k] + if q:row=[x-q*y for x,y in zip(row,b)] + k=next((j for j,x in enumerate(row) if x),None) + if k is not None: + q=row[k];piv[k]=[x/q for x in row] + return len(piv) + dimensions={};proj={} + for key,f in fs.items(): + k=int(key);B=f['B'];roots=[word['lines'][j] for j in word['frames'][k]] + assert rank(B)==f['dim']==rank(B+roots)==rank(roots) + dimensions[k]=f['dim'];proj[k]=B + sets=[set(f) for f in word['frames']];pairs={} + for op,x,y,c,r,z in records: + if op==0: + assert sets[y]<=sets[c] and dimensions[c]-dimensions[y]==r + pairs[y,c]=r + # Positive definite rational form: exact inclusion implies commuting + # orthogonal projectors and rank(P_V-P_U)=dim(V)-dim(U), also in reflection. + assert len(proj)==len(word['frames']) + expected={} + for rev in (False,True): + es=[] + for op,x,y,c,f,z in (reversed(records) if rev else records): + if op==0: es.append([0,x,c if rev else y,y if rev else c,f,int(rev)]) + elif op==1: es.append([1,x,y,-c if rev else c,f,int(rev)]) + elif op==(3 if rev else 2): es.append([2,x,y,c,f,abs(dimensions[c]-dimensions[f]),int(rev)]) + else: es.append([3,x,y,c,f,z,int(rev)]) + expected['reverse' if rev else 'forward']=es + assert t['local_programs']==expected + + st=json.loads((a.local_check/'records/249-states.json').read_text()) + RR=st['n']-240; width=[8-dimensions[st['initial'][str(i)]] for i in range(240,240+RR)]; ENT=sum(8-x for x in width); assert ENT%8==0 + NB=(8*RR-ENT)//8; LIVE=7680+9*NB; assert g['live']==LIVE + def validate(q,check_profile=True): + assert validate_isometries(q['residual_isometries'],word['frames'],word['lines'],dimensions)==set(word['start'][240:]) + assert (q['m'],q['live'],q['replicas'],q['stages'])==(64,LIVE,8,9) + assert q['bank_padding'] is None and q['local_programs']==expected + hist=Counter(); occupation=defaultdict(set); calls=set() + for c in q['calls']: + st,rep,p=c['stage'],c['replica'],c['pair']; rev=c['orientation']=='reverse' + assert 0<=st<9 and 0<=rep<8 and p==max(0,(st-1)//2) + assert rev==(st in (1,3,5,7)) and (st,rep) not in calls; calls.add((st,rep)) + own=c['owners']; assert len(own)==240+RR + assert len({(f,tuple(r)) for f,r in own})==240+RR + for i,(family,route) in enumerate(own): + assert 0<=family=0 + cur[x]=newf + if f: hist[f]+=1 + events.append([0,x,oldf,newf,f,int(reverse)]) + elif op==1: + assert cur[x]==cur[y]==f and x!=y and x/2) a power +of two (no new bad primes), total entrance rank = 0 mod 8 (exact width-64 bank tiling, checked in bit_global/bit_audit). +Original kernel integration by rohanarun, with Anthropic Claude assistance. This R740 selection and integration by OpenAI Codex; Apache-2.0.""" +import json, os, sys, hashlib +from fractions import Fraction as Q +from pathlib import Path +HERE = Path(__file__).resolve().parent.parent +sys.path.insert(0, str(HERE / 'vendor/kernel417')) +from stages import kernel, content_sha +from e8core import replay, Lat +D = Path(os.environ['E8_OUTPUT']) / 'bit426-source-centres' +src = D / 'bit-source-centres.json'; pre = D / 'bit-source-centres-prekernel.json' +c = json.loads(src.read_bytes()); pre.write_bytes(src.read_bytes()) +sel = json.loads((HERE / 'stages/kernel-selection.json').read_text()) +assert sel['input_sha256'] == content_sha(c), 'selection bound to a different input word' +w, ne, tot, nd = kernel(c, sel['entries']) +assert tot % 8 == 0 and tot == sel['total_entrance_rank'] +r = replay(w, span_mode='z'); assert not r['viol'], r['viol'][:5] +assert content_sha(w) == sel['output_sha256'], 'output differs from the frozen selection output' +L = Lat(w['lines']); n0 = len(c['frames']); newdets = [] +assert w['frames'][:n0] == c['frames'] +def det(M): + M = [[Q(x) for x in r] for r in M]; d = Q(1); k = len(M) + for i in range(k): + p = next((j for j in range(i, k) if M[j][i]), None) + if p is None: return Q(0) + if p != i: M[i], M[p] = M[p], M[i]; d = -d + d *= M[i][i] + for j in range(i + 1, k): + f = M[j][i] / M[i][i]; M[j] = [a - f * b for a, b in zip(M[j], M[i])] + return d +for fr in w['frames'][n0:]: + m = sum(1 << i for i in fr); assert L.close(m) == m, 'new frame not root-closed' + vs = [w['lines'][i] for i in fr] + # basis of the span: greedy independent roots + B = [] + for x in vs: + if len(B) < 8 and abs(det([[sum(a * b for a, b in zip(u, v)) for v in B + [x]] for u in B + [x]])) != 0: B.append(x) + G = [[Q(sum(a * b for a, b in zip(u, v)), 2) for v in B] for u in B]; g = det(G); assert g > 0 + num, den = g.numerator, g.denominator + for x in (num, den): + while x % 2 == 0: x //= 2 + assert x == 1, ('new frame Gram determinant has an odd prime factor', fr, g) + newdets.append(str(g)) +D.joinpath('bit-source-centres-pre-retime.json').write_bytes(json.dumps(w, sort_keys=True, separators=(',', ':')).encode()) +# The kernel output is followed by a deterministic A-only retime with the same scalar operands. +from primitive_retime import apply +rt=json.loads((HERE / 'stages/retime-selection.json').read_text()) +w=apply(w,rt) +D.joinpath('bit-source-centres-after-A-retime.json').write_bytes(json.dumps(w,sort_keys=True,separators=(',',':')).encode()) +from pair_retime import apply as apply_pair +pt=json.loads((HERE/'stages/pair-retime-selection.json').read_text()) +w=apply_pair(w,pt) +D.joinpath('bit-source-centres-after-pair-retime.json').write_bytes(json.dumps(w,sort_keys=True,separators=(',',':')).encode()) +from window_retime import apply as apply_window +wt=json.loads((HERE/'stages/window-retime-selection.json').read_text()) +w=apply_window(w,wt) +D.joinpath('bit-source-centres.json').write_bytes(json.dumps(w, sort_keys=True, separators=(',', ':')).encode()) +assert json.loads((HERE/'stages/final-word.json').read_text())==w +r2 = replay(w, span_mode='z'); assert not r2['viol'], r2['viol'][:5] +res = dict(status='PASS_KERNEL_AND_PRIMITIVE_RETIME_STAGE', entries=ne, total_entrance_rank=tot, donor_slots=nd, new_frames=len(w['frames']) - n0, + new_frame_gram_determinants=sorted(set(newdets)), kernel_histogram=dict(sorted(r['H'].items())), local_histogram=dict(sorted(r2['H'].items())), columns=r2['n'], + input_sha256=sel['input_sha256'], kernel_output_sha256=sel['output_sha256'], A_retime_output_sha256=rt['output_sha256'], pair_retime_output_sha256=pt['output_sha256'], output_sha256=wt['output_sha256'], window_retime_moves=len(wt['gates']), primitive_retime_moves=len(rt['gates']), B_retime_moves=len(pt['gates'])) +(D / 'bit-kernel-receipt.json').write_text(json.dumps(res, indent=2) + '\n'); print(json.dumps(res)) diff --git a/research/r740-block-retimed-kernel/code/bit_price.py b/research/r740-block-retimed-kernel/code/bit_price.py new file mode 100644 index 0000000000..005da012a3 --- /dev/null +++ b/research/r740-block-retimed-kernel/code/bit_price.py @@ -0,0 +1,18 @@ +"""Exact price of the emitted bit program; no histogram supplied by discovery.""" +import json,importlib.util +from fractions import Fraction as Q +from pathlib import Path + +def load(name): + p=Path('work/pr361/code/engines')/(name+'.py');sp=importlib.util.spec_from_file_location('price_'+name,p);m=importlib.util.module_from_spec(sp);sp.loader.exec_module(m);return m +p=Path('bit426-source-centres/global');g=json.loads((p/'GLOBAL.json').read_text());a=json.loads((p/'AUDIT.json').read_text()) +assert a['template_sha256']==g['template_sha256'] +H={int(r):n for r,n in a['profile'].items()};m,W=g['m'],g['live'] +M,B=load('moment'),load('base_two_moment');root=M.certify(H,m,W,True);lo,hi=Q(root['lower']),Q(root['upper']) +fb=32*m*m*sum(H.values()) +def other(x): + l,u=B.moment(m,W,list(H.items()),x);a,b=B.moment(m,W,[(1,fb)],x);return l+a/10**16,u+b/10**16 +assert other(lo)[1]<10 + cutoff=max(ceil(36/gap**2),ceil(2*(4+512)/gap)) + assert cutoff*gap**2>=36 and cutoff*gap>=2*(4+512) + cutoffs.append(dict(gap=str(gap),cutoff_log2=str(cutoff)));chain.append(a) +q=chain[-1]*(1-2*eta);margin=(1-eta)*q/(1+q);ticks=margin/grid;k=grid*((ticks.numerator-1)//ticks.denominator) +bridge={'semantic':{'C0':{'base':2,'exponent':210000},'strict_literal_gap':1},'rows':{'degree_gap':Q(10**6)-Q(51*20161,25)}} +a=Outer.assembly(chain[-1],b,bridge,k,eta=eta,beta=beta) +assert len(a['strict_constraints'])==47 and all(x>0 for x in a['strict_constraints'].values()) +controls=[] +for name,kk,ee,bb in [('next_grid',k+grid,eta,beta),('zero_eta',k,Q(0),beta),('zero_beta',k,eta,Q(0)),('unit_beta',k,eta,Q(1))]: + try:Outer.assembly(chain[-1],b,bridge,kk,eta=ee,beta=bb) + except AssertionError:controls.append(name) + else:raise AssertionError(name) +result=dict(status='PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY',kappa=str(k),kappa_decimal=format(float(k),'.18f'),bit_lower=str(c),complex_lower=str(b),binding_component='bit',gain_over_pr425_percent=float(100*(k/Q(1048005508028206,10**18)-1)),bit_invoice=dict(prefix_bits=prefix.bit_length(),charged_prefix_bits=charged_prefix,extra_helper_route_factor_bound=144,selector_charge=selectors,full_counted_coefficient=str(coefficient),two_level_coefficient=str(two),coefficient_bits=coefficient.bit_length(),two_level_coefficient_bits=two.bit_length(),charged_two_level_coefficient_bits=512,row_coefficient=row,live=W,physical=physical),strict_outer_constraints={n:str(x) for n,x in a['strict_constraints'].items()},outer_controls=controls,bootstrap=cutoffs,bit_template_sha256=g['template_sha256'],complex_template_sha256=cx['global_template_sha256'],scope='Finite research composition with explicit changed words, exact local and global replay and incremental phase evidence. All-size correlated dirty-bank, compressed-window, compiler, restored-work, tape/common-grid, precision and analytic interfaces remain inherited assumptions. This certificate makes no unconditional integer-multiplication or Lean-kernel claim.') +(ROOT/'RESULT.json').write_text(json.dumps(result,indent=2)+'\n') +print(result['status'],result['kappa_decimal'],result['gain_over_pr425_percent'],result['bit_invoice']) diff --git a/research/r740-block-retimed-kernel/code/complex_audit.py b/research/r740-block-retimed-kernel/code/complex_audit.py new file mode 100644 index 0000000000..ba6789a3a6 --- /dev/null +++ b/research/r740-block-retimed-kernel/code/complex_audit.py @@ -0,0 +1,168 @@ +# Modified from PR425 by icekylinx with Codex assistance. +"""Read-back audit, independent of the Hamming producer and its row state.""" +import copy,gzip,hashlib,importlib.util,json,math,time +from collections import Counter +from fractions import Fraction as Q +from pathlib import Path + +OUT=Path('split-centres');p=OUT/'FULL-WORD.json.gz' +word=json.load(gzip.open(p));v=120;n=240+word['report']['R'];start=time.monotonic() +def apply(e,rows): + if e[0]=='scale': + _,t,a,b,*_=e;q=Q(a,b);assert q + rows[t]={j:q*x for j,x in rows[t].items()} + else: + _,t,s,a,b,*_=e;q=Q(a,b);assert t!=s + for j,x in list(rows[s].items()): + z=rows[t].get(j,Q(0))+q*x + if z:rows[t][j]=z + else:rows[t].pop(j,None) +def ident():return [{r:Q(1)} for r in range(n)] +def inv(e): + e=copy.deepcopy(e) + if e[0]=='add':e[3]*=-1 + else:e[2],e[3]=e[3],e[2] + return e +def dual(e): + e=inv(e) + if e[0]=='add':e[1],e[2]=e[2],e[1] + return e + +main=word['A']+word['cut']+word['B'] +assert all(not 120<=e[2]<240 for e in word['A']+word['B'] if e[0]=='add' and not 120<=e[1]<240) +matrix=ident() +for e in main:apply(e,matrix) +print('full main columns',n,'replayed',flush=True) +# Compute -A_Y^-1 B_S using only rows of the explicit main operator. +dirty=[{} for r in range(n)] +for r in range(v,2*v):dirty[r]={j:x for j,x in matrix[r].items() if j>=2*v} +for e in word['precondition']:apply(e,dirty) +comp=[] +for r in range(v,2*v): + for j,q in sorted(dirty[r].items()):comp.append(['add',r,j,-q.numerator,q.denominator,[]]) + +cleanup=[inv(e) for e in reversed(word['A']+word['B']) if not v<=e[1]<2*v] +assert [e[:-1] for e in cleanup]==[e[:-1] for e in word['cleanup']] +program=word['precondition']+comp+main+cleanup +actual=ident() +for e in program:apply(e,actual) +expected=ident() +for t in range(v):expected[v+t][t]=Q(1) +assert actual==expected +print('PASS exact arbitrary dirt and restored sources/helpers',flush=True) +back=ident() +for e in program:apply(dual(e),back) +expected_back=ident() +for t in range(v):expected_back[t][v+t]=Q(-1) +assert back==expected_back +print('PASS exact inverse-transpose on every column',flush=True) +# Independent sparse vector controls avoid repeating a dense full replay. +def vector(es,x): + x=list(map(Q,x)) + for e in es: + if e[0]=='scale':x[e[1]]*=Q(e[2],e[3]) + else:x[e[1]]+=Q(e[3],e[4])*x[e[2]] + return x +sample=[((i*137+13)%101)-50 for i in range(n)] +want=vector(program,sample) +controls={ + 'missing_dirty_compensation':word['precondition']+main+cleanup, + 'missing_Y_inverse_basis':comp+main+cleanup, + 'missing_source_cleanup':word['precondition']+comp+main, + 'wrong_dual_event_order':[dual(e) for e in reversed(program)], +} +for name,es in controls.items(): + expected_sample=vector([dual(e) for e in program],sample) if name=='wrong_dual_event_order' else want + assert vector(es,sample)!=expected_sample,name + +# Orthogonal transvection and a port permutation bring the new geometry onto +# the already fixed 120-port routing family. Every incidence is transformed. +old=json.load(gzip.open('work/higher-stage-e8/verified/gcert1-e8-retimed.json.gz')) +def tau(x):return x^(43 if (x&43).bit_count()%2 else 0) +assert 43 .bit_count()%2==0 +assert set(map(tau,word['ports']))==set(old['ports']) +mapping={i:old['ports'].index(tau(q)) for i,q in enumerate(word['ports'])} +mapping.update({v+i:v+mapping[i] for i in range(v)}) +mapping.update({r:r for r in range(2*v,n)}) +def basis(vs): + b={} + for x in vs: + for k in sorted(b,reverse=True): + if x>>k&1:x^=b[k] + if x: + k=x.bit_length()-1 + for j in b: + if b[j]>>k&1:b[j]^=x + b[k]=x + return tuple(b[k] for k in sorted(b,reverse=True)) +def perp(x):return basis([z for z in range(1,512) if not (x&z).bit_count()%2]) +full=tuple(1<0 + edges.add((old,f));paid[delta]+=1;cur[r]=f +for part in ('A','B'): + if part=='B': + assert all(cur[r]==f for r,f in zip(can['centers'],can['center_frames'])) + assert all(cur[r]==0 for r in range(v,2*v)) + for f in can['center_frames']:paid[len(frames[f])]+=1 + for e in can[part]: + rs=[e[1]]+([e[2]] if e[0]=='add' else []) + for r in rs:climb(r,e[-1]);incidences+=1 +for r,f in enumerate(can['final']):climb(r,f) +assert dict(paid)=={int(r):x for r,x in word['report']['local_profile'].items()} +assert sum(r*x for r,x in paid.items())==9*can['R']+240*8+72 +can['local_profile']=dict(sorted(paid.items()));can['edges']=sorted(edges) +cp=OUT/'CANONICAL-WORD.json.gz';cp.write_bytes(gzip.compress(json.dumps(can,sort_keys=True,separators=(',',':')).encode(),mtime=0)) + +def engine(name): + p=Path('work/pr361/code/engines')/(name+'.py');s=importlib.util.spec_from_file_location('hamming_'+name,p) + m=importlib.util.module_from_spec(s);s.loader.exec_module(m);return m +M,M2=engine('moment'),engine('base_two_moment');m,W=73,12720 +HG={int(r):z for r,z in word['report']['global_profile'].items()} +root=M.certify(HG,m,W,True);b=Q(int(Q(root['lower'])*10**18),10**18);grid=Q(1,10**18) +assert M.moment(HG,m,W,b,True)[1]<1>p&1:x^=b[p] + if x: + p=x.bit_length()-1 + for q in b: + if b[q]>>p&1:b[q]^=x + b[p]=x + return tuple(b[p] for p in sorted(b,reverse=True)) +def inside(a,b):return basis(a+b)==b +def hyper(p):return basis([x for x in range(1,512) if (x&p).bit_count()%2==0]) +FULL=basis([1<>p&1:x^=b[p] + if x: + p=x.bit_length()-1 + for q in b: + if b[q]>>p&1:b[q]^=x + b[p]=x + return tuple(b[p] for p in sorted(b,reverse=True)) +def dual(e): + e=list(e) + if e[0]=='add':e[1],e[2]=e[2],e[1];e[3]*=-1 + else:e[2],e[3]=e[3],e[2] + return e +def scalar(e,back): + e=dual(e) if back else list(e) + if e[0]=='add':return ['add',['L',e[1]],['L',e[2]],e[3],e[4]] + return ['scale',['L',e[1]],e[2],e[3]] +def primitive_bound(e): + if e[0] in ('clear','copy'):return 1 + q=Q(e[3],e[4]) if e[0]=='add' else Q(e[2],e[3]) + a,b=abs(q.numerator),q.denominator + assert b&(b-1)==0 + if e[0]=='scale': + assert a&(a-1)==0 + return abs(a.bit_length()-b.bit_length())+int(q<0) + # Exact binary Horner multiplication on a cleared private stream, repeated + # halving, signed accumulation into the target, then clear the private stream. + return 3+(a.bit_length()-1)+a.bit_count()+(b.bit_length()-1) + +def emit(back): + out=[];cur=c['start'].copy() + def event(e):out.append(e) + def scal(e,f):event(['scalar',e,f]) + event(['phase','zero_frame_precondition']) + for e in c['precondition']+c['compensation']: + regs=[e[1]]+([e[2]] if e[0]=='add' else []) + assert all(c['start'][r]==0 for r in regs) + scal(scalar(e,back),0) + event(['phase','entry_adapters']) + for r,f in enumerate(c['start']):event(['adapter','old_to_new',r,f]) + def climb(r,f,part): + old=cur[r] + if old==f:return + assert basis(frames[old]+frames[f])==tuple(frames[f]) + rank=len(frames[f])-len(frames[old]);assert rank>0 + event(['climb',part,r,old,f,rank]);cur[r]=f + for part in ('A','centers','B','final'): + event(['phase',part]) + if part in ('A','B'): + for e in c[part]: + regs=[e[1]]+([e[2]] if e[0]=='add' else []) + for r in regs:climb(r,e[-1],part) + scal(scalar(e,back),e[-1]) + elif part=='centers': + assert all(cur[r]==0 for r in range(v,2*v)) + for k,r in enumerate(c['centers']): + cf=c['center_frames'][k];rank=len(frames[cf]);assert cur[r]==cf + C=['C',k];scal(['clear',C],0 if back else cf) + terms=[e for e in c['cut'] if e[2]==r] + if back: + for e in terms:scal(['add',C,['L',e[1]],e[3],e[4]],0) + else:scal(['copy',C,['L',r]],cf) + event(['center',k,0 if back else cf,cf if back else 0,rank]) + if back:scal(['add',['L',r],C,-1,1],cf) + else: + for e in terms:scal(['add',['L',e[1]],C,e[3],e[4]],0) + scal(['clear',C],cf if back else 0) + else: + for r,f in enumerate(c['final']):climb(r,f,part) + event(['phase','exit_adapters']) + for r,f in enumerate(c['final']):event(['adapter','new_to_old',r,f]) + event(['phase','full_frame_cleanup']) + for e in c['cleanup']: + regs=[e[1]]+([e[2]] if e[0]=='add' else []) + assert all(c['final'][r]==1 for r in regs) + scal(scalar(e,back),1) + event(['phase','done']) + return out + +def check_local(events,back): + # Literal scalar replay of the emitted stream, including center lifetimes. + state={('L',r):{r:Q(1)} for r in range(n)};live=[];paid=Counter();prims=0;macros=0 + for e in events: + if e[0]=='climb':assert not live;paid[e[5]]+=1 + elif e[0]=='center':assert live==[e[1]];paid[e[4]]+=1 + elif e[0]=='scalar': + op=e[1];tag=op[0];t=tuple(op[1]);macros+=1;prims+=2*primitive_bound(op) + if tag=='clear': + state[t]={} + if t[0]=='C' and t[1] in live:live.remove(t[1]) + elif tag=='copy':state[t]=dict(state.get(tuple(op[2]),{}));live.append(t[1]) + elif tag=='scale':state[t]={j:Q(op[2],op[3])*x for j,x in state[t].items()} + else: + s=tuple(op[2]);q=Q(op[3],op[4]);row=state.setdefault(t,{}) + if t[0]=='C' and t[1] not in live:live.append(t[1]) + for j,x in list(state.get(s,{}).items()): + z=row.get(j,Q(0))+q*x + if z:row[j]=z + else:row.pop(j,None) + assert not live and all(not row for r,row in state.items() if r[0]=='C') + for r in range(n): + expected={r:Q(1)} + if back and r2*maxchild**depth +assert local_bound<1<<48 and logical<1<<6050 and router0 + bound=max(math.ceil(36/gap**2),math.ceil(2*(4+512)/gap)) + assert bound*gap**2>=36 and bound*gap>=2*(4+512) + cutoffs.append(str(bound));chain.append(z) +bridge={'semantic':{'C0':{'base':2,'exponent':210000},'strict_literal_gap':1}, + 'rows':{'degree_gap':Q(10**6)-Q(51*20161,25)}} +q=chain[-1]*(1-2*eta);ticks=(1-eta)*q/(1+q)/grid;kap=Q((ticks.numerator-1)//ticks.denominator,10**18) +assembly=Outer.assembly(chain[-1],b,bridge,kap,eta=eta,beta=beta) +try:Outer.assembly(chain[-1],b,bridge,kap+grid,eta=eta,beta=beta) +except AssertionError:pass +else:raise AssertionError('next kappa grid accepted') +result={'status':'PASS_NEW_STRUCTURAL_PROGRAM_AND_FINITE_ASSEMBLY_PENDING_REPLAY', + 'canonical_word_sha256':sha(cp),'scalar_audit_sha256':sha(OUT/'SCALAR-FRAME-AUDIT.json'), + 'exact_phase_receipt_sha256':sha(OUT/'CLIFFORD-REVIEW.json'),'global_template_sha256':hashlib.sha256(blob).hexdigest(), + 'local_program_checks':checks,'R':R,'m':m,'live':W,'physical':physical, + 'bank_assignments':len(assignments),'rank_mass':mass,'deficit':2496, + 'global_profile':dict(sorted(paid.items())),'emitted_local_events_all_calls':event_count, + 'finite_invoice':{'local_primitive_bound':local_bound,'local_adapters':adapters, + 'pervertex':pervertex,'physical_stock_bits':stock.bit_length(), + 'router_bits':router.bit_length(),'literal_bits':literal.bit_length(), + 'physical_row_coefficient':row,'retained_row_coefficient':20161, + 'compiler':compiler,'G_exponent':30000,'E_exponent':100000,'C0_exponent':210000, + 'required_C0_bits':(32*m*BB*BB).bit_length(),'halving_degree':depth, + 'halving_integer_inequality':[m**depth,2*maxchild**depth]}, + 'complex_b':str(b),'bit_c':str(bit),'prospective_kappa':str(kap),'kappa_float':float(kap), + 'log2_kappa':math.log2(float(kap)), + 'kappa_gain_percent':float(100*(kap/Q(998390813251625,10**18)-1)), + 'strict_outer_constraints':{name:str(z) for name,z in assembly['strict_constraints'].items()}, + 'next_kappa_grid_rejected':True,'bootstrap_cutoffs_log2':cutoffs, + 'scope':'New finite scalar interface with a written conjugation proof, conditional on inherited all-size compiler, precision/tape and analytic transfer. Independent emitted-program replay and fresh package replay still required before final promotion.'} +(OUT/'INTEGRATION.json').write_text(json.dumps(result,indent=2)+'\n') +print('PASS prospective kappa',float(kap),'gain',result['kappa_gain_percent'],'percent',flush=True) diff --git a/research/r740-block-retimed-kernel/code/complex_phases.py b/research/r740-block-retimed-kernel/code/complex_phases.py new file mode 100644 index 0000000000..127a042ea7 --- /dev/null +++ b/research/r740-block-retimed-kernel/code/complex_phases.py @@ -0,0 +1,29 @@ +"""Bind unchanged exact phase evidence, or regenerate all selected phase pairs.""" +import gzip,hashlib,json,os,subprocess,sys +from pathlib import Path +P=Path(__file__).resolve().parent.parent;O=Path('split-centres') +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +c=json.load(gzip.open(O/'CANONICAL-WORD.json.gz')) +r=json.loads((P/'inputs/complex-phase-receipt.json').read_text()) +raw=gzip.decompress((P/'inputs/complex-phase-recipes.json.gz').read_bytes());recipes=json.loads(raw) +# Bind the canonical payload to the original frozen envelope. Python 3.11/3.12 +# and 3.14 emit different gzip OS bytes for identical contents. +reference=P/'inputs/complex-canonical-reference.json.gz' +assert sha(reference)==r['canonical_word_sha256'] +assert gzip.decompress((O/'CANONICAL-WORD.json.gz').read_bytes())==gzip.decompress(reference.read_bytes()) +r['frozen_canonical_envelope_sha256']=r['canonical_word_sha256'] +r['canonical_word_sha256']=sha(O/'CANONICAL-WORD.json.gz') +r['canonical_payload_sha256']=hashlib.sha256(gzip.decompress(reference.read_bytes())).hexdigest() +assert hashlib.sha256(raw).hexdigest()==r['recipe_sha256'] +edges=set(map(tuple,c['edges']))|{(a,b) for f in c['center_frames'] for a,b in ((f,0),(0,f))} +assert {(z['old'],z['new']) for z in recipes['children']}==edges +assert len(recipes['children'])==len(edges) and len(recipes['endpoint_adapters'])==240 +for z in recipes['children']:assert z['rank']==abs(len(c['frames'][z['old']])-len(c['frames'][z['new']])) +if os.environ.get('E8_REPLAY_PHASES')=='1': + subprocess.run([sys.executable,'-B',str(P/'code/complex_phases_full.py')],check=True) + assert (O/'CLIFFORD-RECIPES.json').read_bytes()==raw +else: + (O/'CLIFFORD-RECIPES.json').write_bytes(raw) + r['validation_mode']='Reuse exact phase evidence bound to the unchanged canonical word and recipe hashes' + (O/'CLIFFORD-REVIEW.json').write_text(json.dumps(r,indent=2)+'\n') +print('PASS source-bound phase recipes',len(edges)) diff --git a/research/r740-block-retimed-kernel/code/complex_phases_full.py b/research/r740-block-retimed-kernel/code/complex_phases_full.py new file mode 100644 index 0000000000..b5a5bd64b4 --- /dev/null +++ b/research/r740-block-retimed-kernel/code/complex_phases_full.py @@ -0,0 +1,39 @@ +# Adapted from PR425 for heterogeneous centres by icekylinx with Codex assistance. +"""Exact phase-aware lowering of every used edge of the new structural word.""" +import gzip,hashlib,json,sys,time +from collections import Counter +from pathlib import Path +sys.path.insert(0,str(Path('work/odd-stages').resolve())) +from clifford_exact import * + +OUT=Path('split-centres');P=OUT/'CANONICAL-WORD.json.gz' +c=json.load(gzip.open(P));n=c['h'];frames=c['frames'];start=time.monotonic();ops=[] +for U in frames: + op=canonical_frame(n,U) + L=[u|(u<>(y.bit_length()-1)&1:x^=y + if x:return False + return True +def local(events,back): + rows={('L',r):{r:Q(1)} for r in range(n)} + norm={('L',r):Q(1) for r in range(n)};prefix=Q(1);cur=c['start'].copy();private={} + hist=Counter();phases=[];entry=[];exit=[];centers=[];matrix_hash=hashlib.sha256() + allowed=['zero_frame_precondition','entry_adapters','A','centers','B','final','exit_adapters','full_frame_cleanup','done'] + for event in events: + tag=event[0] + if tag=='phase': + phases.append(event[1]);assert phases==allowed[:len(phases)] + if event[1]=='A':assert entry==list(enumerate(c['start'])) + if event[1]=='centers':assert all(cur[r]==0 for r in range(v,2*v)) + if event[1]=='full_frame_cleanup':assert cur==c['final'] and exit==list(enumerate(c['final'])) + assert not private + elif tag=='adapter': + assert event[3]==(c['start'] if event[1]=='old_to_new' else c['final'])[event[2]] + (entry if event[1]=='old_to_new' else exit).append((event[2],event[3])) + elif tag=='climb': + _,part,r,a,b,rank=event + assert not private and phases[-1]==part and cur[r]==a + assert contains(frames[a],frames[b]) and rank==len(frames[b])-len(frames[a])>0 + hist[rank]+=1;cur[r]=b + elif tag=='center': + _,k,a,b,rank=event + assert phases[-1]=='centers' and private=={('C',k):a} + cf=c['center_frames'][k];cr=len(frames[cf]) + assert (a,b,rank)==((0,cf,cr) if back else (cf,0,cr)) + private['C',k]=b;hist[rank]+=1;centers.append(k) + elif tag=='scalar': + _,e,f=event;op=e[0];target=tuple(e[1]);source=tuple(e[2]) if op in ('copy','add') else None + if target[0]=='C' and op=='clear': + assert private.get(target,f)==f + private.pop(target,None) + else: + for r in (target,source): + if r is None:continue + if r[0]=='L':assert cur[r[1]]==f,('common frame',r,cur[r[1]],f) + else: + if r==target and r not in private:private[r]=f + assert private[r]==f + if op=='clear':rows[target]={};norm[target]=Q(0) + elif op=='copy':rows[target]=dict(rows[source]);norm[target]=norm[source] + elif op=='scale': + q=Q(e[2],e[3]);a,b=abs(q.numerator),q.denominator + assert a&(a-1)==0 and b&(b-1)==0 + rows[target]={j:q*x for j,x in rows[target].items()};norm[target]*=abs(q) + else: + q=Q(e[3],e[4]);a,b=abs(q.numerator),q.denominator + assert source!=target and b&(b-1)==0 + # Independent symbolic replay of the cleared coefficient work. + w=0 + for bit in bin(a)[2:]:w=2*w+int(bit) + assert Q(w,b)*(1 if q>0 else -1)==q + prefix=max(prefix,Q(a)*norm[source]) + norm[target]=norm.get(target,Q(0))+abs(q)*norm[source] + row=rows.setdefault(target,{}) + for j,x in list(rows[source].items()): + z=row.get(j,Q(0))+q*x + if z:row[j]=z + else:row.pop(j,None) + prefix=max(prefix,norm[target]) + else:raise AssertionError(tag) + assert phases==allowed and centers==list(range(len(c['centers']))) and not private + assert all(not row for reg,row in rows.items() if reg[0]=='C') + for r in range(n): + expected={r:Q(1)} + if back and r=0 + ev.append(('move',q,cur[q],f,delta));hist[delta]+=bool(delta);cur[q]=f + for q in src: + if q=2*v:assert set(coeff[q])<=F[f];spanchecks+=1 + for x,c in coeff[q].items():coeff[d][x]=coeff[d].get(x,0)+c + ev.append(('add',d,q)) + if d=2*v:assert set(coeff[d])<=F[f];spanchecks+=1 + for q,f in enumerate(w['final']): + if cur[q]!=f: + assert F[cur[q]]<=F[f];delta=dims[f]-dims[cur[q]];assert delta>=0 + ev.append(('move',q,cur[q],f,delta));hist[delta]+=bool(delta);cur[q]=f + hist.pop(0,None) + assert cur==w['final'] + def scalar(events,rev=False,omit=None): + vals=[1<=0;current[q]=b + if d:hs[d]+=1 + elif e[0]=='add':vals[e[1]]^=vals[e[2]] + elif e[0]==('erase' if rev else 'copy'): + assert vals[n]==0;vals[n]=vals[e[1]];hs[8]+=1;copies+=1 + else: + assert e[0]==('copy' if rev else 'erase') and vals[n]==vals[e[1]];vals[n]=0 + assert current==(w['start'] if rev else w['final']);assert copies==len(w['ret']) + assert all(vals[q]==((1<2:x/=2;k+=1 + def unit(y): + z=(y-1)/(y+1);s=Q(0);power=z + for j in range(100):s+=2*power/(2*j+1);power*=z*z + return s,s+2*power/(201*(1-z*z)) + l,u=unit(x);l2,u2=unit(Q(2));return Q(((l+k*l2)*GRID).__floor__(),GRID),Q(((u+k*u2)*GRID).__ceil__(),GRID) +def expo(x): + assert 0<=x<1;t=s=Q(1) + for j in range(1,25):t*=x/j;s+=t + return s,s+t*x/25/(1-x/26) +def moment(c): + lo=hi=Q(0) + for r,count in list(paid.items())+[(1,Q(32*64*64*E,10**16))]: + l,u=log_bounds(Q(64,r));a,b=expo(c*l)[0],expo(c*u)[1];lo+=Q(r*count,64*W)*a;hi+=Q(r*count,64*W)*b + return lo,hi +c=Q(result['bit_lower']);l,u=moment(c);assert u<1 +lup,uup=moment(c+Q(1,10**24));assert lup>1 +# Recompute finite bootstrap and every exact outer inequality without pricing imports. +b=Q(result['complex_lower']);eta=beta=Q(1,10**18);s=min(c,(1-beta)*b)-Q(1,10**24);chain=[Q(384599,10**10)];cuts=[] +for _ in range(6): + old=chain[-1];a=(1-s)*s+s*old;gap=min(s-a,1-a-s,1-a-s*(1-old),1-s);assert old0 + ceil=lambda x:-((-x.numerator)//x.denominator) + cut=max(ceil(36/gap**2),ceil(2*(4+512)/gap));assert cut*gap**2>=36 and cut*gap>=1032;cuts.append({'gap':str(gap),'cutoff_log2':str(cut)});chain.append(a) +assert cuts==result['bootstrap'];a=chain[-1];q=a*(1-2*eta);tau,sigma=1-a,1-b;lp=1-q;lam=(tau+lp)/2;cc=q+eta/4;eps=(1-eta)/(1+q);minimum=eps*q;rr=(minimum+1-eps)/2;delta=eta/8;internal=tau+(1-beta)*max(sigma-tau,Q(0));leaf=sigma+beta*(1-sigma) +margin={'balanced_prefix':1-eps,'coordinate_movement':a,'compact_phase_layer':minimum,'bulk_exposure':a,'Gaussian_arithmetic':min(1-eps-delta,rr-delta),'scalar_work':1-eps-delta,'dimension':eps} +k=Q(((minimum*10**18).numerator-1)//(minimum*10**18).denominator,10**18);assert k==Q(result['kappa']) and k0 +assert {name:str(value) for name,value in slack.items()}==result['strict_outer_constraints'] +r=dict(local_audit=local_receipt,status='PASS_INDEPENDENT_GLOBAL_INVOICE_AND_EXACT_ASSEMBLY',candidate_sha256=g['word_sha256'],global_template_sha256=g['template_sha256'],expanded_program_sha256=expanded.hexdigest(),events=events,global_scalar_columns=GN,global_dirty_columns=9*R,all_global_scalar_columns_restored=True,bank_assignments=assign,bank_families=len(occ),residual_isometries=len(isometries),route_corruption_controls=route_controls,extra_route_factors=144,banks_per_stage=NB,live=W,physical=W+9,paid_profile=dict(sorted(paid.items())),deficit=2496,source_bound_invoice=invoice,independent_moment='third rational enclosure; lower passes, adjacent upper fails',bit_lower=str(c),kappa=str(k),kappa_decimal=result['kappa_decimal'],strict_outer_constraints=len(slack),bridge_omission_controls=18,bootstrap_levels=6) +out.write_text(json.dumps(r,indent=2)+'\n');print(json.dumps(r,indent=2)) diff --git a/research/r740-block-retimed-kernel/code/pair_retime.py b/research/r740-block-retimed-kernel/code/pair_retime.py new file mode 100644 index 0000000000..76e03339b9 --- /dev/null +++ b/research/r740-block-retimed-kernel/code/pair_retime.py @@ -0,0 +1,19 @@ +"""Apply frozen pair-search endpoint frame changes after the 57-gate A retime. +The witness changes 112 B frames; every ordered scalar ADD is identical. +Prepared by eumemic with OpenAI Codex assistance; Apache-2.0. +""" +import copy,json,hashlib + +def content(w):return hashlib.sha256(json.dumps(w,sort_keys=True,separators=(',',':')).encode()).hexdigest() +def apply(src,selection): + assert content(src)==selection['input_sha256']=='bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e' + out=copy.deepcopy(src);frames={tuple(sorted(f)):i for i,f in enumerate(src['frames'])};seen=set() + for ph,i,old,new in selection['gates']: + assert ph=='B' and (ph,i) not in seen;seen.add((ph,i)) + gate=out[ph][i];assert tuple(sorted(out['frames'][gate[0]]))==tuple(sorted(old)) + assert tuple(sorted(new)) in frames;gate[0]=frames[tuple(sorted(new))] + assert len(seen)==112 + for ph in ('D','A','B','C'): + assert len(out[ph])==len(src[ph]) and all(g[1:]==h[1:] for g,h in zip(out[ph],src[ph])) + assert content(out)==selection['output_sha256']=='fc4d045fd68ba47e21d69b840a51128ff52739dca3c0f7b9255bd757e31737e7' + return out diff --git a/research/r740-block-retimed-kernel/code/primitive_retime.py b/research/r740-block-retimed-kernel/code/primitive_retime.py new file mode 100644 index 0000000000..4d8c5b88a6 --- /dev/null +++ b/research/r740-block-retimed-kernel/code/primitive_retime.py @@ -0,0 +1,27 @@ +"""Apply the pinned 57-gate A-only primitive retiming to the V2 kernel word. +Selection and output hashes are exact; scalar gate operands remain unchanged. +OpenAI Codex integration, using the finite candidate found by search_r740_quad. +""" +import copy,hashlib,json +from pathlib import Path + +def content(w): return hashlib.sha256(json.dumps(w,sort_keys=True,separators=(',',':')).encode()).hexdigest() +def apply(src,sel): + w=copy.deepcopy(src); frame_map={tuple(sorted(x)):i for i,x in enumerate(w['frames'])} + assert sel['input_sha256']==content(w) + for ph in ('D','A','B','C'):w[ph]=[[f,d,[x]] for f,d,ss in w[ph] for x in ss] + assert content(w)==sel['primitive_input_sha256'] + prepared=copy.deepcopy(w) + changed=0 + seen=set() + for ph,i,old_lines,new_lines in sel['gates']: + assert ph=='A' and (ph,i) not in seen; seen.add((ph,i)) + gate=w[ph][i]; old=tuple(sorted(w['frames'][gate[0]])); assert old==tuple(sorted(old_lines)),(ph,i,old,old_lines) + nf=tuple(sorted(new_lines)); assert nf in frame_map + gate[0]=frame_map[nf]; changed+=1 + assert changed==57 and all(g[1:]==prepared[ph][i][1:] for ph in ('D','A','B','C') for i,g in enumerate(w[ph])) + assert content(w)==sel['output_sha256'] + return w +if __name__=='__main__': + import sys + src=json.load(open(sys.argv[1])); sel=json.load(open(sys.argv[2])); out=apply(src,sel);json.dump(out,open(sys.argv[3],'w'),sort_keys=True,separators=(',',':')); print('PASS primitive retime',sel['gates'].__len__(),'moves',sel['output_sha256']) diff --git a/research/r740-block-retimed-kernel/code/residual_routes.py b/research/r740-block-retimed-kernel/code/residual_routes.py new file mode 100644 index 0000000000..04feccfe52 --- /dev/null +++ b/research/r740-block-retimed-kernel/code/residual_routes.py @@ -0,0 +1,26 @@ +"""Generate exact coordinate isometries for this kernel's residuals. +OpenAI Codex. Route witness/check conventions follow chafreaky's PR439. +""" +import sys +from pathlib import Path +sys.path.insert(0,str(Path(__file__).resolve().parent.parent/'vendor/pr439')) +from bank_routes import validate_isometries + +def generate(word,dimensions): + roots=word['lines'];index={tuple(r):i for i,r in enumerate(roots)};out=[] + for f in sorted(set(word['start'][240:])): + e=dimensions[f];rs=[roots[j] for j in word['frames'][f]] + axes=sorted({i for r in rs for i,x in enumerate(r) if x}) + assert len(axes)==e, 'This finite selection must have coordinate entrances' + order=axes+[i for i in range(8) if i not in axes] + matrix=[[2*int(i==j) for j in range(8)] for i in order] + basis=[index[tuple(r)] for r in matrix] + assert set(basis[:e])<=set(word['frames'][f]) + reduced=order[:];ops=[] + for i in range(8): + j=reduced.index(i) + if i!=j:reduced[i],reduced[j]=reduced[j],reduced[i];ops.append(['swap',i,j,None]) + assert reduced==list(range(8)) and len(ops)<=7 + out.append(dict(frame=f,entrance_rank=e,denominator=2,entrance_basis=basis[:e],residual_basis=basis[e:],orthogonal_rows_numerator=matrix,gaussian_reduction=ops)) + assert validate_isometries(out,word['frames'],roots,dimensions)==set(word['start'][240:]) + return out diff --git a/research/r740-block-retimed-kernel/code/window_retime.py b/research/r740-block-retimed-kernel/code/window_retime.py new file mode 100644 index 0000000000..a556e55ec8 --- /dev/null +++ b/research/r740-block-retimed-kernel/code/window_retime.py @@ -0,0 +1,19 @@ +"""Apply frozen window-search endpoint frame changes after the 112-gate B retime. +The witness changes 42 B frames; every ordered scalar ADD is identical. +Prepared by eumemic with OpenAI Codex assistance; Apache-2.0. +""" +import copy,json,hashlib + +def content(w):return hashlib.sha256(json.dumps(w,sort_keys=True,separators=(',',':')).encode()).hexdigest() +def apply(src,selection): + assert content(src)==selection['input_sha256']=='fc4d045fd68ba47e21d69b840a51128ff52739dca3c0f7b9255bd757e31737e7' + out=copy.deepcopy(src);frames={tuple(sorted(f)):i for i,f in enumerate(src['frames'])};seen=set() + for ph,i,old,new in selection['gates']: + assert ph=='B' and (ph,i) not in seen;seen.add((ph,i)) + gate=out[ph][i];assert tuple(sorted(out['frames'][gate[0]]))==tuple(sorted(old)) + assert tuple(sorted(new)) in frames;gate[0]=frames[tuple(sorted(new))] + assert len(seen)==42 + for ph in ('D','A','B','C'): + assert len(out[ph])==len(src[ph]) and all(g[1:]==h[1:] for g,h in zip(out[ph],src[ph])) + assert content(out)==selection['output_sha256']=='00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6' + return out diff --git a/research/r740-block-retimed-kernel/inputs/bit-geometry.json.gz b/research/r740-block-retimed-kernel/inputs/bit-geometry.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..19725bec462cbc531e180934c9af965d3ce0637f GIT binary patch literal 116121 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 Xu;%6q*cHt16<)8tzgSHO!L|PfF3dgp literal 0 HcmV?d00001 diff --git a/research/r740-block-retimed-kernel/inputs/complex-data-phases.json.gz b/research/r740-block-retimed-kernel/inputs/complex-data-phases.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..22154a8c5875bd3398e1cb112ea0a5307d6793e8 GIT binary patch literal 33869 zcmc$`WmJ`G_ctm6VxV*>p&%lygh-2$QqrB$Dczt5Dy@=|(p}Obpfti_NiCER$tA5U zy4JbwMaX`~JH~m>_@8mk9?$-;zdU2Cd0%tRUrp#j&Ypt)IgMVZ8x1#+iAi#UXG?dj z=~D0T_31sJzK3%&_*dwuaGbPnl$Grb85J!y~r)0wjWcLTi(zq~h1x4+uf zu)C$`w}~{^->pTX+|Ykw$M)LtMfcp$YgOPs4EAS5(d#LG8=azivjphHi0$IlvHd0V z)*{`0=Wt3=tdgiA8nwJXzJXq?-CEvv+k-2n?C*4<(Xs>ERh(t|`z>f;zqBfJ1@r!5 zL&H9|{tc@?aP(rVpWmL8-ri2b7h{NsPz|UVzri)MKKgZv$iU+6_dzs$3@oJtD`G#A(Qf~B^%N|HOQ(H%Y&A^C zJlD#2*h*(~SEeFLwRj)qrzu>YU$oh2k0w}aq&VlTCT$=Rvfmv+&t{9_Zod5B=Pn`R z%=ex3chmaXqau|(cZB*PFEC`AqNLXQz4R*m%xnu={?xxL^PVpg%l^HJFEILuI>|Rg z0liJ?|6`XeH-~jO+3&)T)PhK0M%erP&_#14F9pVBkvFPdI<5Oombug4+)@5u{~{JFnS|ca*7;|8`7}Bn! z7|s_~Kb42RwIDKmXO63v`0*_h$lrA*Exst(sV{}Pu42qPzjdH+mzOWJ2lZJ zTGumE6}c)H?F0E^Bs?#d{(knGVXSC4_LgYhhfucf3*y?bIq(Yh)QI?2^}Ox=V3DCu z8F!4YoZEij_nTlZRdm&lbkFE4{?;1R%An|I=O-U^ejH(BeR(hA%OqdV2pP2PKnD5! z;oO`7-L_lg#TW_2UccZ# zMX%WwvCM$Vx$T;&p+4*AHEg-e4C30XCDNQh>nO{$Z|0>@0x8=HFMXIF6laU4J2rJj zj^*8+&7IBcP*zyFT`#m-cq4%}Q9qe>Epk9tKUuWk$9ZsdeHu&;VNqht6OR^6XNfHiTCp4)!VUjPpW^42bUq2I%g;e=msoyG>C;!!GaoR@b9W%0Po`lDn#fWhY@U~ff&)Xr*8xsYM@0F?D-nWt0X08 zxm~o@{vaIZjx5Q_MW*K}k|0J_n75;jsrnMW~)Yiqp38PBKV$vwwv zh+D8J{)j~V^ZCTsyPWdHr)82-1hUWVJ`??exBodM?gsv|Ys=!MCRiB=JI&S&j`0;qtl2;OOQ&3a zu@hw{Y28tN;?(Z6SfG)uneRvCy!V6Y#@gEif?u{HW#_L|oPXJeW8Ci`+*J1VMnP9` zT-)x%&m2?Xwza;V()+Sq^K`?z0zbE3SM~{6D|_`D-H4*K?s%O1AT00FjgKPvckd^@ z93cLhGuMd1u@o+8s)=}LjVKk?Y3L-Vv_^}1Un;_NeBw6dldi0~y=y728eFyhj$Tur z@Txy9%ROB1?KhsRJUjpB88!*t3?8wdzA95GHu&}nFZaMhi2U{Jn!EnrPZN`kZMe|e z2Q8jVNp_p%ps%r@hwwV&L39qWTH3?jc%+Oq!j-j9OWjg_vALUU5I@%I9-sA+iiiojVBm}OrPwa)T4Rtx&urQ3YSLIjnu<`B zA{orF>C_K4L$G0ROR6I}2sBS!7_F#0s-2ayHlz{LHaR?)M0>vH9 zgHiBuEu%nM>)GL$1Lb(}of?cdP!8f5A(c3l+I$_$?vD?hTDiKTXF_?YKrQq&3T?F- z7Gt9gUU+My7!+{utIhAj;pz3f79l!$r}#oyI3~N{_lI{qq@`0y=bz~+{w=)GZAUUd zBtB0X>Uk&9n>Ai4KOPy26bKEl%XQ_0ZK=$c4Z}!Y4+X|AzsiayFcV;{%`We{{y`-1 zeRAf-dt7S1cQ=&Yb!#?tlda`@wzxKIH6#hKG7-IwuHEUTPD<#nX*w3dmN80A`KuK=M%f-{ltW`TCsS>P$D$s3%ZKl|b_v%+@3suPQg(?c@Q9yIQ zQ9Ym#413I@cuIBaf#)UgD8O{+a873Kqw1`Vp0!E1BB1ChmhBOl;_}yMRWRp0c}*M@( zrCi|_pLhiAy_^*iF<9)vbYY^I!B`!Yg6mqAhhT~WzdO~ zXHZO!&TSU=E9(VDQzH^|&suXPtUw(mB4XZ+alXu?$}B*-tE)7<;=k}qp13PUq^eA} zBJT{LHA!ME;(SfqM`$*(<}H1$vib*EO7FjTc+2&L8`RV!X%#u8LGk<=$ z0SOI8oLH+gW$FsJvpj9p6b&UeW-Pp);GwYc2ZLdmcx)QaPIdBr1;Lf;hKGZpY5!#j z-HXq!4N|V%)pM{P|4E;I?r=WrlZ-Q;7!SK6an~*$&d8K@i~1=JdsCh^mh^W+HC*wQ zl(KesKb8I2sXDuf;L(q1CkBjhPaB*O9xTqSTc`*-|MP{g^;zE8fNQiZ#!=9SB&IRj zUbsES?zt-2WzXBTR>MZ0*v&HcFl0Z1v1gP=qb@Hu7oF$!n@D_3OQm)vDA|R#!emV_ ziGPh?&WqPXw(q41U38zEkJm)~EY7eU?vP^aQ`zS@BcmImIi%4dehMVf6L~&af1)XH z&KiKZh{bZRMNh~ZY|CGD&0bsk1>qC}9dn-#79<#wCT@mj?KDP;?p8l}^5qa9Fx``Q zdJ-XAKYRdh6K6ae<8w#9TIzEtaEieMy2<)&zGylM{vi+QL$F=GUClpLf;yQOLN^zFIot5sP-T_-e z`#9vjb*}>Cd)wT8wO3W-i z`_(sCT6A~hsMt8qzW#C=>_^q7!CsnM;9-3B55h%ZzoFsGBl+pK}MM^Bg2u~UP&7+#A` zhUOwk#@!y~tl{jhW?(KpIi8Et&|F-XTX;togaUI>=)_!X1amQ{g(L)iA?0{38ml)K z91jFA7wrz`qKs2AGmJ|4BNZ|<|E_t#xUNIDW@PD%-IU9~P)tmOhA-8Mo{w+Y$Em2o zEB8brwh`}z?Q-cyZsk>n3W{D>L?M~41u7TdISRK_#ory4SCu6!Qn@wvLvE$eBDv5i zc`SLJhxlXW&?pa5u@LUc7jbWnVy>Pc-by5HwqPN-mn*$}`-y*ijO(cm)vfUnsXzgj z?$M7mt;JU4!+T3;*Oih)@q3y}OFB-@!3uD~Iq~c``xKV!=@(dz+F(7Lx?t!)S4IbR zMKzCurSEmbWUGs@@WFb3$c`A@RexS`Yc^NT1^pxND5LYH@+5ft%YO(S`#rKAfeM)A za2GyEnl^dYZPrpB|K@i==9Om(VeUoLa0#(_d+u= zcVtgogKYlkm9M*3LLQaH>xYNr{!Y)0=(MpL8p-ksx8>VYVEVqrc{eod=Ex}D&vw#x z$@HZ`at;U)m9zP8z6|Yf8{$HHVnW;l+7h=6jX&?+GtMUZzLleL8d?wpyU#@b_~Gv! z@I8Md86AZPM{oR5B}9qRPZXjH9!BNpfB{jeTS4VBvimD$n%u>W@mnSoPt4}S>uvPt zZr;?~!0o;UuSj=S?aHSSCGad7n`wE|@yU19_WRn_hUv#!#uc2`>f*<>f=>Nx6{_jC zGLZNfKe?@YfAAUSg)*xPi>-kf36{ycv!uDcJr#+U!qXX1+P%+%iUjOx)M!GVf6TgM zlX_>zu@@BLyv>Yz-^G}(iw2_&E-&|RWU9MH12@LJ7*tF={XgH}YSGzIy;jhb>48Un z5&V8ojJxuN5R(#$bH63}_D9D^$+}V5|88Fnv#N6x=;GY@w=ZS>*L^v8v@f5*V)18S zpUt#z@8}3<7?zPe?pXZHc_}+p%JUDSFF#=Z1c2V<2@fsdj{M z@5tzttp?~>bYY9fBU6op%T=K!ESZ(HfzN2ES%E2SA+MPn>#c)5tI7hq~XOf|lNY8dRO zim`E?Cv5hIpu^|j+V5MSB%faf5ug}qXgCWZhq3k#fCItqxs}g^1;v^MrA|i3<5?LW z%yV*9zG^$1m8me2z&ko0sfG&jznMud>gK{;zko&rJFliPmpU{d^b)0q#Au7rrr)ak z<8T_brt_4VO-HIOB}oRn9chs|0MuP~-Ug)WGCnnmDtk9o(7V4fh^6Ljuu3Qg#w35f zoAmoRvclY4jybKYw;Lo$YQpF_6Em)K?Y^_ZInNU?c$(T=dM`^>u5EJTN3*NW(?98q zQyHh}9XH0J7*qp1U$8OVZ*kkv#bW2X^!l4W`M1;B_d*2u_uk`{e@+jQLOpm#%U41& zhlTz{xBJ}h55a!N)+wUI(z}lxyvEm$i|{?TwuVmHZp(FalGrkjus15Ps*uh+W*@%K3~5INpk>{ zXv)>|KQ!e=JhU$=&K%wPvb`=>Z&@;#WLJV3bJaW@R9(AVhd~D;03B%W$ngVoK-hGI z4mLL-bl?|+Ucr6_&_U$jKXlNs{F#ut_^!T#!}!GU$9@$|_@9s6a`>^eU?>w_R5jHA zb$*T+0W#QX-2@U6Le5+D#fF9cqF&Lh&Df&940!aau4qQk>AD)pbFmI^7V)@m6><@< zoJr3Y=8TWeO;6*bJ(uSKJ@24qroAoX%67l7#4gWS5T;i8SZO|Nu0+7ns>LkNO|(a? zgRwcj_tU7#l|YdlEv>cehRY}#c5uh% zs_CesN;AB9`m_eE`fks}uZ)m~>N?}|@IvT_s{8f4myNLi=h%AC;`*scsgO1qoT*9L z5>_c74R1Lm{w5t>RLLwGxphzI0)z>$*p?6I{%TP!Vix^;@6DeJHJqSuc9rY@t(WVxS-~Who0I_RmJVe z4=bIom*+e?f`gD z_lasQH2)FO0{PWB9HX$+epU1md^{QpkbyM$VUg~esX`O7- z*}g!%F^|%0HvKE%+>aRbyg4sZG^85aUZ#cfOh8H{dl;<4icAHq9F5BNBH!aP#{f1+ zNvb?k$jQ(pqT|fPD*W!F2+&qmXMQhl%cEU(+#U``?q~=ZAsc3&;Bz^+jXlGtOdUXF z`m+A+1EewqAFE6#NM*V}LNSA945>^NCsd}1XV*6M|JF@RH+CMYOgG7t{-ZL59jZ*k z2}l{6a98ehX#eb;blmw#Ek#F!C3AX&Zo0@N8h<$$Sc{_B zk8~ai7~ZI3(`xIpvf47tDl2*^5>GDs*3re^dhQOae-ohQ%)0}38rp7Vk*qF`EjGA> zCy8Fo7L5%U+1r@@O`4Q^wIfL3_D>NtkJ~$mfMVT~|T#!P?oLL5UF?~{L zgp-88K?n83-X6-|HDR-=E zn5rU7_sL6) zxpJo6^3c=q>GB0+;#Y5T=GGg{h%19ZYxfS#l9&59K2OggGz&_<*Oho3Pfc5ip_5ay z8F>H}-#$XVyANuRklOvBKHDiHa>*d<}ib&9?Bu2rFAyu+ofB3k1ML&oZ?O`9J5 zRWEop8f=$}!=@&NtLtc(fAZUt`l;XVWy30g`_0R5z^aO%J>6yok?da zBxK9L;M|r^5BrAmH^b}}=Of+cE_lJ-!*}Rg5PqI0vt-=NA1$HJ)NVniPHVwooa0n$x%5Bn*A3R>(Oq zIA;JxXf+OPSqS`bJUF#jKm2EK3LRkt0Yw)@q% zDQ~Vq^jgYx=rPrgulT;SYlW#MG=y`z-9r!0)rapOh?)y}UTh}ZuXKE-q2iq{vt5dd z5}M7xj)=z5m0u~8#(N(n6>h5a@sdo8m0MpTSz;Ow3)cqY85-w@Tmw)wemtffyZ=t9 zw*Zmt8g+n~a=2SIt>ar#e*C{DmrVc2<<f; zL*bt!rdK6h7-;#x#E77e_-UQ~bWmyRvXz~SR`4$eUC<^~;g4kJ8zWDthbpUsN)Qz_ z7kb1gnM+FwC&+Ze&1ZS@aRVf#E^7C9O4oXHU$&c*QEID9b%~X6R)OPj`&g?y)}AqF z35Y|UNehpQ&qPhu5QMm_Z(9$wR0=+;^Re-g`MfpZSVt6FyE6mH4Jyq*hFu@derV-k z^fcp0Zs=Ho+TLoh9~5Pe!N$P;Vsl5;}@Ea<%SjYssG5ZPY>mWAeUqo z#E(vxrny0j0H?-{WQGB%V926yy!MzA!5(Um9M$*r!IeKPnmedCJ_$Di&X= z^#ZYSQi<|$xFnediO~F6#xS0S`v}YI%Rq&!W>IE(A<&RGC>m;*=fvH)w#6oZ$DtxLsz<-TbMNR@Zc)(V3qAXOxYf22wVK+N5uO})QQ z#>bB#W6hV5Kj^CFU0ykQ}?Ocn+#S__Vxh*Wbf8!p>w*-AO1v*QhyB;*YvY_n{bj z35c;tC&gIiHjy1M)hb zEVSx=yrotkkBX>Gahj_+$tE|GB{E>2h+l|wU*&&}Z#c-CEuGp&vKTHwL33^yMAfmGU^}^|l z;zK=}EIN|c@U?`NtL^dT7%DJnKdhsMpRei==m`t&?ooaQZ2!XJOr1m4hKj9SR7OF2t` z|7A6JmW+WylHszR( z*Z$!Ih_Lt2sthU{6|cY<7r;$VhFu>Ep81hCv$a^Gz>unwH!2Tk#THH@>XKku z?#%Od-CviO*|~!Y2$*s#E%9C-ZAwImi&L1v0KibA=*1}`{-CENfOleW!?k`;i!l*3 z1yGBrV>D?7)#8ceMDMP20jNdu2{h>sYGKWW&|J{}evBp~E9q@d)?(tQ7C9)nRE5P9 zyB7ke8~q+1ugMl@XI|s0yxrmA+Nb5Pdf8Y$ z%W;E5Pptsk?k38f?LN%Plb<6iEh0;VtxW5VtzDmRTV;Z8Hp#*+1$C<=DKr^?SqFdp zT|DcqbqY(sK)d1M9u=gvo!4|o{&WMVv6Q!N8~R=^?K`{R-Or4*3j|oaeW1FDp4q>J z^I~@!{|hQO;sPCorTkHQq`W%W9W%&Q{F=itxht-XV)XOiF3?gpf_Z+x^ z){-9>&_GN{U85-@b`i|V+RF3+&Ara|^YEgLqJWw@UfR#Y)#hZ(<+Lr=7ni~?`RVL1O-aZzqZ5_u*^n*jeM+*Dktk?D26)WHFt!rB~UlP$X+! zNjoLRb|6Vtha?ez=iwc<2_)&^zl{PlGzYpocor#F!MNNGULzBva6KNE8M)FbCx z(YPEEQnDzUPDq7Sp0|C`504(gx1@v=8Rh3gxtAC?Af83RRPMxsKy&@p5tH*ziTg-- zkZZ6MzuBR8_7+P`^0-c?4TH?xue_O=SEg-l@aLB|?7G||8>0}$Q7Ij^?4F|`&heD6 zw#w^V(2DtAW!UB)pDqSM>SH)}hHD>V*5uzE8{=B`dz(GPj>=d>H9PiSiCFFnKZqeo zov8IGdKz;DPufBZQXb#8BqjO+Jr=_&QspA9d_TAL6p~f7a-gJCH_NT2uUHkF0Y>v`t-fmfk5@)Hq1U50M2Je`-RCxb1w4b;7DXNfnH z1(dTpCI04^vaYkbCqL(0bg9TEXjmqjw?@6tZcm%}$m64s^%Z&&Lp3#1&PehQQ}1jY zw)Nrl(muwSjMKzUZes~RmENAk?@;CX1*{eiu8+8YXu3>-_ zty7p^0;FiH3AwaTqKghfikqB&4ScVb0HnBb0x50*q&P{|#>&B=t9#V?=ah)jPV_#0 z?h#VV_ed@<)3TG`MSTD&tb0+8nPThP;b&Dj@9+3@w4a5%DA{<Iv0G!To@9dY#TjebW1SU<{hDrG84h=UgI#iFAFHlTB$0m&hSQ$Vb~{*RZ&ir(zrZGZmKpTSiT)l$a!THy|P~@wt$D3F%tG^8h5Rihv6pF_;i_bxZDSg z-{mnC^N=gJI&=q-O7k%scc`n)P}NbmsVe4CEU|%fUK8RLz(^~FH(#34hUbNI6-Jpc zLjfNC*>h|jlH3(momL_-Q4wYW^V+rot-317!~SnV!k=ZeLXW+P%F!c2UJf}uEK)j3 zYq)Fi7r-R%5o}jTXcF-Y2jWVtPo6UnS6-PPi7VcaxMKLN`Tf?Ldq7-~S^X!jn1IeN z($p=zTld8CSX{A?_;#}MuOD^35c1th;hNk7pWQ!-=WgPehnd@C@oMd4nZXI%-|1^(b|gHF=lzL zf*{A#M?5DO68>C9uP7%>i|*$axv`71m z$nJ(ffdZYI25rLm?G8Py^96F-$F?-C@GAVHYp z#N+ZYX+}#$XD%wxbGl!`3f2pp$w9b+&T~X8ky#46z`N*VIX!3{cslvuEok`l`Hk); z^{!9tlPP}RvKOF!E;lmj_6uWGI0CDp#3zdlSQW2~kF1IjOrWK)IdJRQcVJb>EdH}9 zGJsW4ui;(nUi0UlRq;?F>g2mHIkGC6XFP}#(#P;^X4DK-=*DV@6H;$H2DY4z@grkJ zN!2Hi=4Mt>m~GO64Fwnok+HR%yAy-KIFQhEyLfv+YuJ(oJCt&M03Qj@T)Pz^>JPK{ zvh9wDOmxxy`kP@eCxQWCVFf)7{=gySUM%ie(++`Tb(KzF&bbJ$_LOV(e!FJ#Tdk-p zo$4}_`yC`(1%VE^6AH^$5aOvia6@2D@Gs9x*qNu|j z7MX7%=(}HSIlS1#u}M#aSk+e>g=-Wv5}vj_y$g2nWxjnD3_M~&xl~;jROQ*}x||Ue zBC*;olxkI%D>4{=)3JwvHu)}`G(RssW=%G{bYXo1tDJ6Wze(xU*HOR6;UEi2wKOZ9 zt!bY!Hz&-A|GM`y6n;DvA~@QA22_GpUMQZfCKnbmA8>+K83SJRn5|W_OF!-(ud1N8 zKDk30k9buEN)@UAckd7NH{GO@HS|fIOqf?8*7)u=H*o;u=jF(Iu`y`9`vT=aqYAL^ zCwaNDGHwbi=|~ZlNnV+-Ki}~cS6?0^L1){@yHFV__8kvT7Xb%51N+fehPDrEdM~eI zfYW&erORaRc8H%}5@39Hko377VV~M{(^7q2MeyMPZ0dh!yvYk5#m*_$2K4`-jTQON z#v=S5+gRK!?%e%922;EB70KroVCQ{prGBP4dZxz{MI=Dl^c$(=iUT8`x9TGsBX2tB z5qp}{7(^fwRsm&ZLDr@^gKm%x>Q;L9YbX+%m;&#$R=;pIr2R^H+S+SZR3h(4e`H#? z?Spxa$lqDX1dwIXTHe(VeC{^M4NpYo9WCdF@*cVL2}9WmPbE#EFyxPsz2N=DF+Ce} z@05>z$*BEiL@l{*CEEz!CkOFy-^DNtzmm40S4jl?suA!js$+f?0r4yRI7+~;z5{;s z>;%8U0sIOTe2{xO;@izR{~_EjbPxH}TZE93Hut)Y5$r=jV|?t!Z)zi$ZYX0Fw!Om_ zLhIX(!18ulyj#^V3eimP%~UB1*&tQ22;Q*K6A)V>KL5BH$~`^JHJ#z>xNVXivqn9L zB#xB6yP6)W>BYy3S*Pdk`+OC%Rkv;-Vq2t@1IGjN*vxA3>@yjU?fTDr?p+=4XF6vy z6SiaRvpByWyJ0_SBq~O{bmb@i+b7-6Bg_egyK4x%t>pL@W|RcoxlWgSKizuRO-)Q zoz_pnKbu)&5Vzq-dnT39K{~Xkj`1-@ne?(Ttp}0QQ}&a|Y8f}r@)AigVKboJc%h7} z_FPxToI6*%65to+yb~j@I^%rg^|EzXM&(fjGGX~yi2KR>a=d+pxf_OQ`EOCgX0m;M z70`q(MFU!W%4_2zOy_JX3!AJ*Tmx)(&1<@zlwk}1Ik_G z8m-_mnGbu#2PMQRwNJs2DA!{~Fmmt1HLCG4+s9d6RXLdi*`29_1cs z-)1Q263K=_^S@=SJ0Tz1zF6aItk(u6R?Ox85Sq|xkOa~5vA9yNIS-N`g}-oL_Td?m zI#6vCK3E`CSt<9Wj0OiKg^W==y}Qaa@a1{P%1czsa}rN7_%Tm6Q}rhX+!7?F^rewZ zD6f$|?EPz*EL!-|1#QGY_mb*`uBCqo|EyZqSuZpC9-!D$|Ef3Y* zJi|-$)~VZ(9;Ba`Qhg2X&ohy+bn9p^wKzR_8cGg$Cg9vcH~O&w>Ew`C7A80&SW0`u zx__l)fJt#Bgpa&|!uNPmG#9@5&!pHr>W(=fwLBG_axf~&gI!uXvu3DEyQ}vH4kEJ? z0iL!m-!MR)p7j-d6__MeG1ws{iy@QJbyp5#%0KK2%^6M4*X|W%gTeUgvwzU z{;hl?+xc=Hf3`7{qR#8om8k2{Sx%SpzI+*ELI(1E*HgRG(&OIi8uM1vru^0#{3dpX z9mUDyJVUJ}Y*NbOb9YUqH(~zXLbhUpWOd!St1sL>e(Clb9_Rbyczq%M z{(o+c$PSHO6JB`a0NY8U=({>vOE|KqW;dj z=Z1BA%U3KY6p|{x>a6>Ud*C22#SmKu0?E~ZJ+Ui6qW4nc6zp?@Ml;PS`hHOVEFg75JAZ)a!Q_a zt3omJ*H6GsF3=?!Y(<)h`gf0ECrLTI#mO#tdjva^QF0#LuXkYg%yn=DCZ{FtN`d^8 z*@3rV$v1Q;))fa?ya_$651fs5HFuH*{{zyFQ+k^%eU_~1AT)WS)GFw{?|`CRKa?Kr zUtgK_V_`o7WXlR5Tc!;Cu3J-*RKlJYczy#4P5M~(b;u_%bqPL1?aBt{oUzZ{bzh1M z5U9wlwj>YX{RC&LL{Fo~r;KVgFBa1o@gpBG0kE~vGrKWe?yCS2A}(vnLU{iYA`gs( zp;$!kbp%SYh-CiR;RzDK-ns2lLRLYmiaz>H&NqK@kj^{_m%mV^N?cQ!q6yGa$4OG zcD)nzs33CspS^u<;}p?C$#o7qn*3CWIUBkxrJn=Ej)TiIb z>tfy71?__%33D$eN$>XC=Mdp2DUXeXeLWAwKd#-W`>VE`4So5lOSa!!JackmbPMK{ zIiZMDeTK(W-hGFHmQO-!o^Q((1_)CCI$L| zHFq#ks$kAtrj3U;-R`g*9@8yzg|rmb*i;dHuiPv2T5$gVp&`~h#_(NUtO+N@UhI=u znx%$e8iIURyF8lLQ6G9Igte79nOan>5HYpL|EcnonU}Q&LrmdfweDXeB1YR;f!kFm zF?w(Ds>17elWzr46IReeA$}q7Ao$bc?;J#?h6tkaE~O)e zV#o*55_11G)xaG=W@-6Du+gU+@(})|X$uAv~9-R;@x`1F2+Cmxf<3ic7VDUlSsjXZat9?;Ehy>-2rN^uAL|_yZC6WKs_j%1GPhrEqT*r zDNcfpfx;cS$I0LhQs7ssrsltV5H!C}Sr`!)64U#xCC8EvruBt+TH7VOz}Q)X^YCKR zi-Tv5%M*R^yL9px1P_18S$QX zrvWjtm~+%L^w9lky-PqIg>V&VOmY||In|?-en#n56e0$*L3X{(c7hz(1nkPMlWP-L z^1-#53r2oEChhKWC3qOpj^jo9)y4nBm68&;QsO6fVtc`fZ*XLY zbm+XPI>}0~1P-s15FUA&=F5DKlRU`gKY9N_O1s3EVUFCtn$|^2-i3lAd&E~Sw9Y{X zjDBC@D(eoSGZt75dcWCVH!;!lIU4rv2dd09lu&MDPMMuGW-HpOhp6ZsfSrJwF}+J` zLg0Upq;Z=e`qustSRx|%jEr?G73+jLDojeK3UMEy4VkwI3F~ofh}Lq;l>;`VB??aGOcUgNVgp2da=urN}<`M*6(XY?fKcJ-Z zBESC&>dSyLKA~c8@a-@@dAw#qgDFqW)b^vGz9kHm!P~G~kxqtS%P*PvQS^&v`8Rhl zLFkP93r+w$V{1q%?O1n#`Bks)xTqcC!8mR@QWo4lbTds#x4?_97!AcSHmRdgDg6ckAUU zn4Ey#jo1%v)fs!Xv)w`e4qikINJ3*G`EX3YUn8+FN&RQZf=)@|CkAIL zP`!g&$U^!qWFHSse|4Py3{J|zuMR>{(-1=e0^L4h;{ga~s_u0;_==8g z$Bk8k{EPyskcC4mj1LhNllP!k$ntU^4Q#bgUa$N&VZw^CO3J7UEn(PPI8wwshuh9? z(63YD45Gjt5iE0|xV7u%(R283dI{?S%}RTfF|bnrKI_d>{=Hqma(2_K z-{n@%7D=L?hEmgRLXdWUd%qBc$~fR-+<=ZFO3O!2+teu<@CGIA0~G4MA>A>`2MdyW zGkb1DOZ27O-;s~nHAZY~1?7Ie^f?ihnQ8T?N%=v0DOcj+ZZeOy5}(bT8iQwfk4 zg4MXCeWe4_AL|Q7J+1u*C{#=krN5f&av=4}pXK158B9~^Sc7~aVp=0<_5g z09&y1YV8zCo9h4zAfNLroM`qqI>9cjsckLkkMV|Pk^(Du<`JJUXiG;oR#}qk;E3&e z*0t+_N{13odYO8%!Q@NY2Zs=JE$aS2+k2D>3+j}sZl4|CCG?J}wblZw=f*4YoG3A! zQkavP@6%jhHW2$g4N<8IRpdcZ!s^;jHuAxZ*Gs?+xNxcx12HBr5aa)|b}4qf5AOL8 zsokdhS~*VV)c;ruu8{AZe|bpA%t3AfbJACAprL~?hpN4IY}7EO`hZ6#3v|wtJYsx(MkwY0=GkZyJtysm;5$SbS+94LQu)$b9E^X zfcK-91Wg0w!@K6cqZER~iHo$ABWUyCil;Bd3eDTM$%WY3{PIJ|t zQmmR2untwC55Weo93a!|YV{|Vt5FEXnD|_W_C<$G3VMN0058x85+-)N14c4TV}eEz z{<*`WLgp7Y;<6<@$+8AUV~pm&^^UzQ`wg0_kstNw=6L4N%sK)fOOWxUTmPpyw#^4=U}YC0Yzvi zP)!P^htg@*W!k)?ga8DgzJ)0h1t);kQyq~k((w*0^HkmN>shZuy5*U_Q?)?W=v!^o za}O3SnSSqR9_1O!>wg`)>)2tc+WF{8Wt2Bq5{3F!NvR8}E+)w|b@Sflbu*YHQDYgA zZd<37fcEsBjzzcW*^BB(FX<>R2TUzpnSqo$=6YU##s0s4g;H{W|v-E?Xi?wNUw8Jq-u0LlyU=5LPQFSnRb$QI|Uj& zJctyC$8BKey&ymExx@|+12-mG=c%latL4T9i4|hYAMWII5+AUPa(d%e#6!VXfYkqF zU$`ZlX?e=4}kLw^ITqp zQa?$B#90tZQfJulyt_eqTVav3Qoep<-xjSi|DE9V>zx->5dk9)oD#v`01)|It6~zo zy#8)NOP>_LC|1nQgi|1&k(HeGnjx^UaKBU#i9Dg(Y@Q-wE7deE^)Nym1M08AQ6~ZQ zE7+lKV+15B{szkNf?MW#f&9h$h+S$Ug}Q7Es61;F*&Mcj@jRA9);^N6vSV(Th+`!B z^9C@z!N#LJoMv0LKGJ%SAs{aKir;sB_wjAaUxbh@EMDgcSTL1gfU?M_!iP+KnNgYf zWKpq~wAgq7s#LH1SU=P+RLgFgtSj{j@`;n_yQy{%+ZFZ2F3V)Ydo$=lj|FG`n$?T; zbo@0hTlt|ojc--i?WD*>5{dGWoA<;o0OtqjSjn6{*q}0JV07Pm|4?f(^_;N7{$kO` z8Q*R(UTyq+Y=x`*F2*FCs?Utz?$#4yea z(pRyGD(ya+vn|lZ{5^d|4H;meigAJ5Wf=o|9`a&>m$HeUX8F4W`B27~`*#)I@F5)J zmb^PG%M5rxYYA;a*ttewKaoD~2Otg0T+eMSm=bAlKjYE%ZtW{WNYLe9nxVFwuiO4A zaY}gCB9^w*-hD^9LwMZ|{Ouq)I@BmL7r1{H2lwyi3BMhhf=r*1FM^6Jyb~=-9p^7m zNXFa5KK#QFOuqmRZ#E8UnF)j)Qw?TT<^S;TJ4Za6Uy*dCKY7V4uB>=@=F@_u73^D7Bl2AsRLQ}@m#gKE} z-Nji&G44xC8;bwS6Wj$q5OsQ&T^W<0;C*n=RluP0EvPgnb?V2{4^U3MzCtZ&$azRN zMuZ?=;2iQUbPX#kk;vWhWSF(G_N?JX2)b&f6s706`M-G@+@n=U2`qYTplgE1@z*|X%)h8VuH5)eOs_b;J$eI{?JjEenWgE1f=}PW0&8-A}}Yx`Ol-( z;AU@8s2_;|T`$WMkOkv<*mu^z1zS~RdX|Nno6rXJn{Iu(ot8?SXLWuyUZS68KRAx1 zF@A822y>=aG1-o@fAofVX_yK8*(@dSXS4pV;=Vd6%Jtiyun-jxX$e6=4=Er>4k{s? z(jh2a(g!4uh=hPh=O`f{odQD%BF)epl0z#D%`n{eodM*0*YA&Wf9KwH|9XMNVlDQ& z_x{B5>^&fT##0wI{0yFe%Edu)bHKO$`P5tgZw~QYTWD*wXYC$}2K*>}tRF?i3*J5) zQyfy^_}&)*8g%b04T|YYIZ{DK>QUVNZt_y_)X!syGMwCQe7x-F7}P}Bv1=h?@!ho` zr`Z_`;H5u-Am2;ch%5~9v9$xM50<_xcJh$`-yalJASLu zw{-kIVfS+Tp0v9{qTpUaowK2GbxzfXp70T1RDxhxwWr`7LGFd6%*mTfgVuqh}KckMlR z9*FGkd%Sl28bk6iT0rMPw0JcKkDIrv|2Gw&oS+Jw2PRi^8wB#4{Sf{R7CIK-@eU!$ z;ytSN$3)d{cXR3Ew~AA!$SOnj`WejLruK+omST93Pig2B$8y}zqHhMbVyufBuVlVX zKB!T~6a>NIWkEQb^ok@4o9Y*EvXSnQ6z!Vm1agG4vJo+1OU-!G_+k%)XuHQHHEhYL--^=tpzOVZj5zClZKJnIZ z?n!D98%vO5R70S9WJ6%{LP_bm8?@1VKvDYV)8abUJkZvk7B<*0IlBh>w)0}#igcL+ z&(l`HiPt+tL%zGO9W|55?vBaX_gjRd1PzMx7Muy|>0Yr(D)O_`>s8fOrO#O8yb=T=MJ3-w?3-@^c*i@@!%fRZof$P#v%TlY#Cg*zpy?%Z#Nj6i( zw#e7tfI+W$f3gBmh3pB6p}l~HK>C3`{k7|C3}t8UGMxM7O&Kb?FLue_=XH1+oU}Hv zjfmZwT#WF;*-kt&TyY=o3v*g+MU-`1z9*NMLnY`4PZp=(@|;;dnh+mEEEqwJ%W3!7 z;s;Gdbe4-^3-V3ILNcsPi)_Rbo>ecUr)r4!nKX!Ec5MwPyi_|VmLvlQ-Zow>`iB>K zcgK>qR$8bpJKSs5$}%#`mbN02aHRcY;{x10(>29!vmldB%uH1Q zHbH~sk{V&!?Ku7>tKPC3{XrX49vOp(4(6yY%moDp6go6oBWMEGX@Z_f$0cgQbj9v_ z?;TwxQkc}g?cFb^Mvka`3#8wsdZZgnJTTsmi;W7jgKXcIk{F+mg}mcu6N;A`LVr&O zj7c$$HVzn~YZv^VCN&5L-MI9KGW*TZQZ`_7HvI*Y({iNt`253T+&X9bo9I&epy}8* z(di*0X!G0Gw^+A^WFG_nCQv+i!G)!z?HQQC4rSIwz4kj=1@HkNJl~$$X{!Yo-(=l# z1(a%>Ymh04bo`E*Ora4pOS(h5opT%hDTzGst0XsAKG~Dh+SebX%h3|OiL>L!;_b)k ztCq2b9TMsD!j1{Wj(|I1R{;M-7C%_3wY4&a!@gY2I#}_Yueva1WFg!!;O5xaanAg_ zVs}FwRR*V+lJPCuD!t;53D1sW=^zV`I-2(jUU=R|hBu+yd#xTEB@GxLWd?@7T*;Aa zeq5Ifk9~i`gKd-t!>NsRwU=;(j;#MJ*DodGr2B9ApFyq3_S=}CtXr{CcfqqEBdD8v zAlW{cKTG#)$~TR$`O}GzRHaPqe~7PhaZy z?(`9pYh50g?vg#J!kq9(-BwoHRvLSAkuN3Q$+x@LbV_(IB#A8%Tt%|X6S`5-ic`v0 zu#$9RV1+)c&RL_YRL?a*Scc^eaT;u&nYJXk|NQ68#EJA|b+&TFm}&c0xB?vSaJj|K zHI=245I^_67k)bhF^{zNm@9jnKib1EO zi&->H(a}kB>@=kSf$!LDW6<7EF6{m6SyU{T3_?(mx+(`!ya)D!T`<04tlgnM|4Nv- zCx@}JRM#XYrqg7vd^<&Fwc8!Q) zdQs!TFoOaxTrFrJkwc`m^fFvGgG_dnl)1d}sn~l$AP_)QR;f|AR1Em^ETSEu=e;WD z6@I-r3dcO|1`gf>u``71jBlKheisb^sOw0Fcr4P46cYHPXR6UReZ4Ld3qG@E41`Rllb1V=C= zOs>qk!QJcXhlS;?UB$NphR>K;o*lu^)u{MAsDjYmpBrq2z>ZUZsAm=w-{*vT2$c34 z2NX4E^N-TCduZ8mbK)6l`W)x5Qi!<^!3(1P&*^Ecj{PS^c<7f$3OTucrp|6`B#R zf`fy@5|7!3-c{08Bj`s~EQ&qSgsBUw)lyQqO`Bo%9*FJCCNjlU9?9}iGqDIlZ2w%f zJnKuvh0n^O-Vti*HTp|o>kYFQ=?8+&GiG?axDSDpp<(CK&NkGnKS`N3#@N#-lYE>q zI2*pWO3hOyIK0_-ABHItS#dre6kyi8p*5p4-_A?}cO69@kKCIvnx(~nle`l#fg8Je z%bF9g%Z2S3p1S+xG3*&ifWwIXT$nhQeqf{-xUM7PwXpa`rDLLnMG0sVqB5NlIkU9$ zhsCcZ$ns#dx_l8h^3b`@)EiC?V(&Pvy%A9x?Grj?{*qY3;+UC3f#5#lv;1R z{PU(47?U_0d2b*@3|G&Hb9EUdH&FWBz0_ZiU7A|XX0P@1+zD*oFgreHgD6rS_NpUH zP&~O)(Aldmg``kLZ0(qBCI;aVs{DACoLK1A6Iz?bb{Wfbk!+9ZpvwHC}8sQ<)mVbvDx;*Hb}HI>Yx&a2WAL_N;9yZ9@v7?Kgy5ekf9 z;b}+7PmFCS(#Cu_WVC`I=CpkhdNgbp2VHvdIQ}wHmS8wWA^ZUodS3kFpqhmF2z4p-u;hT!1sMOO><0q z9Gf%KB~0_fBSU8|cd@HJ?_ z?~OLijglWFj`+u$1h12QjwoOAorvh7kc{wPaNM9Iu2*x7Okb1 z*qeJXa?!*Q`23K#J-LMQBVFO3JPHl;mYcNj1)%!?)LEz<&-vl$|0ILlX|w&iyqzPvM@CF0mQgbKOSHCl9G zCIUE=8D14!l;JGN#6O=Xtkd?X0~l&#Lk&5%=ew`Sc<0EotyC%*yYx>arS}X?J6aQ` z|7I~&(j2{kx3&qwb@jOzn$L0r90rHVe+6LWYU<~dt6?P+*g|kWZ9-l z(Y4`aXgLd}zc7Tjk9;W$iK;9CDvW7K{HnoR`Bs$SS&lq#RN+D><9oif%xjoo;eUuppH&^S z$P<&1op#+=nkUv;Sny}0agXtr_QEgL+m~QJFIL;H)pi6rSBNJ@h$XMCzI6N+s7cS# z@8TIBsJS*RYVfW#`0SZ-jQK!39l|UIz*GJUqe;|@xyH+@&pm%@Y(j>M0GELqB{dNH z-8kVgu59a?n2f`A-y2Vlxs0eH#eOgI5`flht<2k09g+KO^%c}F`0blL7DX1+S1~Gk zyKJ@}7P*h{bD=^*2_wMAQ2}EuOn$ecZWeHTx0w|MU3^vhi?g%&Ov}%)v0-+K5?$d- zx$rXx+kB(B7p@n^>2$lva$^;C>{vEa#3xBoM6+`nZ+6(eFu?OhP3ht%Hlb4JKt(H< zd6Uz=RBHa1y8B9tPml4!&9j9-L8Yar_wI?6R3izW^a2G%@JiQ)i=pYL18+Ox{RMR3 zFj6K&V>radk!AOE2Mz!V>J2#&do`E)NkIh|leC^LD1qaGI&l5IVOo}mzO=M~nAMPh z-aHuci@Y)tqT3CL5E2H=dL3db~v1dqXX3(js=8d zevODydJzH;k^uG9I~I~DfRI!KD+v&i5rB|i;JC`Xd&5A(K;p)`LS=Zb+e)_31#hMXp(Z;fPp&lXT0XtFlfOsnKHcjXXzYQS#GoCW4Hpy|`DZ#ySD#$}&f`U{N2YL}@u9g2y|kCixP`99#gr#HF3C2r87y%T0LbCoZdxiP zNe+MLuy`YQZZ@YiuvPzD#&n1%od{ucH?p^_vZPt7(oUa)ydy{c&d^RoM>-;j{a_)P zjx&;1a35NB?P)Iyxh;Ve*#Yb4Ty3|c4%cBtOCFDME<_8P8#?bZrB`kDK$2QRCyRMM{!60zF8S^ETr@47!nuhN^OIiE*XBk^y-gq1HF%^ z+gq~@*#{!N(mJ6n67v>QlUPjVa^%yiB^%p++$%wkwuD&8AbK3&kq5=ry*0OFLp^^? z)8J5hP04uMMQbh}My?Tt0?qu}g2_ZGlg5mjLV5Ks!Y4B_s;fF}_Qol=S{zu1CguwT zu}SSEH-Uv&caI$wnsI`|r+6_q%-#gxBa?yQAw9cC@rGX)%?VXBBkwv*72lN{FI)XU zDCcd#V=s)mc#c5H!AwX~5>Jh0=387!mMoTPsPxe`6jaRB-LEb13|L#?)UrWigbs}#G;Or zyU7ZOcCQo^1O>bvZ2$oZK%WXwED#_HcD-Upzb>ki06iuD`nLcT9|dR~O4#OQQRFCm zs7166&E0Hm@v7j6B%ujjMp}Lfs191b)nEF|bztD-@@CzwKL&&6az0)b(n2H;>?k!D z3ft0t;x-B(BV;Puyc&IQ$2BW6F=uhbP--xfbW=Q>+p@1kYq-;u?D57stJdE~tIUXP*g%zo-N zTx+^AU`iszKzJx54NgpVBdu?Rryci>Bgb9Zi-YT6L2>k8;mrcP-u9jT{WGt^-(BP|eC) z`A;0B#mEfg^DBiDkuyO10a<~YWJxt|%WLh0W{+3Oxw>2c&Bp4oB4$v19A}UHzssK5 zjr5g}bjZkqy&gJG`AzO_XlY5nJt-#G6QPNyfXFY8Ts8QIKL}3TyojkSyWs^Fd20~0 zkp0T$A0=O~c?>bjP{}px1oIecX=y25aH{xQV{T!-HL_OOM%{0(Exww8)L3$V!m21b9tGY2zBS@*uq*)w@yK`FQr`Jbak(k_{EZYhSDXV0c}84^Xqr5 zmOSW+AtEq!mCHL@-N2^7NBwU0FMwN{)V_6niEDVS?L&09e#gKYufoa1UqnYu8F;+A z2-HeB$w^0s)Dpy|L{2!~h% znO*H_)b0cN_f zYN>WycWfo9?I$bbG)e{gdF5qFQp{r^CF5JBAG-an`a+cC3J)V;{HNW#OEXQ2H7unv{@_sMC?83!C% zHq#8!88x(l`if$ux!h#`^%4kQ-?J0FfnaquOS2$s{n5|sg}UhFa7b&HHj- z$mViHi?>AzG0c$m@I#ZRYq$bOW*84Fm>Yg?(HH=2@@PAc=};^;2OU$+`9mt;}CQ=wdai;C5n}v;mR5 zIR3lEL{f#4JtS$jX#VqyIueri{DoJ5*nD?NHw z`nn^$X6lE_&!`&*0f6-}5C*j9|8-KR4$|d!=;B}l^}Qb8ux-xl`4J*5^5@stA zwirVtiJ{czLP^nD_1d|2UI{It`UDO7Fp#Aauiz0J693iG;-EZ|b_m0kS@+FHGQ3*% zIM5H=@x?3^bP2dtuLd2|aC=VL37Y%dA6t%hoC(y0-x;9r{1~Wf-r^CYm21Vz(0b&3 zAh$s8;{hj2RYD%oAy8G5r>lw#sH&8-(5P`Px8GIO&KP&PstS**3eVApKxt%Wnm|bi zY(2K0^iOd@<)0o#vnxvDeXIdGd2X>6g+&3%^8mIebDP*e^={+XpL3?l&OZ5g*?0bf z5X#2}@?K${&1ureCGFN5TGV7RzG*>yLfzTrP+gfCh%&;!0q_A0Xg zqDLO`Iyp*v2ME=^MXtT=>KaS}H3gH2q<&4Y7|@zO*le*MwPx8G1&Q2ZKu-LvHERiB zT61`~LdOL0L9?GrGUS9YGm9|;H6EOAQ#X$d5EKFr3H|Qeh=kg_ zJ9Kzc?XzWO58Oj5?h__Qwgd=is`asL==1)+WP&IZ;iz8`Xm1 z$S^1>#y%&8R`ZKwSJJk?D!R_~?eZztf{iD*N1?{jA{x__Lu3f={go140V0>( zCpK2rC6al@cUzp2v~n#d_fk6YHm;0hE0sc8IH0-c@jm@S&6W1*IqH?*IHNc}jv2*^ z&$4V=hh6M=K|%i~s>{+v7DW8pYUx#=Gp zHo(cQ#KKOT5$_Qcq8qj(FuT{Cry9n}UT(|P8X0`4@Sog-Aif2tR2?RDaDt^eVt8OFk61wUCHm=-<}7<<%Ri8zZ8iF zm3W62z8R>#DLnAaM$P#uq`X7l1!M;tc#RDPyjV_!*L><+!{Lzs{di z3Whu5XILtZ<1BJ(@RW@fnR_){{vbaWn4Be|3JB=<-E*CMnR5ZLMH4vMASH9@;`gS0 zxk!hbtA^TyDXl{RVQh~-ufYs3uOes77xDD`-T*S-@|59T155)!fdF(RK_%(IS1jQI zc^CHsF<%bt3bTbvDLf}0=U2AB{&rq#e&lh^Kqz7kBVL3cATUETvQzCB83K|L;^T={ zedI6$sS=1f+%QQ(nVJH>AjG4A<`Kk~n}ysnu11;q4lkh6ncHIzH}3R>d}>cTl>6*z zG>6)Sr?#*lJfG~s^%Edn5|ST6#ApGMJp(zknURsT>Ayl)s5=7zUWGRm=J6psd>(uw z|AsaO0JO1Y=pb@sBPa_79f)tug0-7?Yzi-A{s@Au@~FT$FOCpR=;>2< z{ZV~j>~SzTUH>H>X26lRS^u*-uX_Kys(ZytgBS>T7946@eeKY-e4n+UUTW?40RX)A>Wf7br~R6P-e;^A2e>Z*w-`!(BW`arJ=-LcVY zdp(El2IdFpUduW8=#j<6$+=ddhMHCA^k#kZl!epFlIn8Ky5$>z}l;m6|+XRSr2{$1-cCi=R&>Q zowgT{?R$nEu7}dCx}uP_(50-Jjl0fDwGCU3?z@*Bgra*E4IMm64tDl=Y<}7tx>S|J zPz%b0DC4Sfy@?Ic-2J4hTX8}CJS+n|HA`+=Gj8oaE0ToD_32q_j2=uYWNSiom9xFN z-piLC=8d8cy}Xc>dkt^mVJ>?vUg)w41A|;XdOB#&00l(G(qMxRRq~E6Xmbl{lWRMW zC12on=vfri29cc$B^rr_T+ro)zWZ}6Wjths#$mh1*?nJ>>~J>FtNP`r?$YM9b9A|o z315hXdr|*{{x;fUTO*5xy&@-HbBv-U+twyYKOty83kF|OT81p%y2L4a+w!2g6IR?k zvYinv^Te`)xl(uA>-NKp!ok;n94ak~eHu7efT-FIZR_|7zj}5^>~$MGt6o$;+BY{= zlK*9Q{or64whzzBa(eo8Y-RJw5BTC3`NjDBx8tg04mIe??mf#JGgI-0`(9mDWL(^g HG&uhSNfl*J literal 0 HcmV?d00001 diff --git a/research/r740-block-retimed-kernel/inputs/complex-phase-receipt.json b/research/r740-block-retimed-kernel/inputs/complex-phase-receipt.json new file mode 100644 index 0000000000..2a370225ea --- /dev/null +++ b/research/r740-block-retimed-kernel/inputs/complex-phase-receipt.json @@ -0,0 +1,22 @@ +{ + "status": "PASS_NEW_WORD_EXACT_LOCAL_PHASE_RECIPES", + "canonical_word_sha256": "79ff8e19335d5d5d1563ef0bc218106945d6a2b88ece53ee24bb3d88b2594ba3", + "fresh_edges": 248, + "reused_exact_edges": 2670, + "prior_recipe_sha256": "ecd793998109e76a139afcf5a3d83376cbc27f6364fd5fbc9e5645d129b2f791", + "frames": 956, + "directed_edges": 2918, + "ranks": { + "1": 1424, + "3": 168, + "8": 24, + "5": 294, + "2": 784, + "4": 224 + }, + "endpoint_adapters": 240, + "all_child_equalities_include_global_phase": true, + "recipe_sha256": "242fe77af077973e1933524fe5c7ff3b68bef14b1f6938e024827de78d954492", + "seconds": 17.302232877002098, + "scope": "Every local frame and center transition. Expanded scalar-interface integration and global emitted program are separate obligations." +} diff --git a/research/r740-block-retimed-kernel/inputs/complex-phase-recipes.json.gz b/research/r740-block-retimed-kernel/inputs/complex-phase-recipes.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..03dc5fbe5e54c0f5fe0e104c2d1b27ab6adcfee2 GIT binary patch literal 96078 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

$4W-?;&y6a$Ci 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 R1jN7p{s-plURsPS4**vNEZzVB literal 0 HcmV?d00001 diff --git a/research/r740-block-retimed-kernel/inputs/complex-ports.json.gz b/research/r740-block-retimed-kernel/inputs/complex-ports.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..ccbdc0596c33ea2e02649a740bdc2273ef320a58 GIT binary patch literal 23365 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

suS-d0@srcOUscmM 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 b_y7L%`tV;reA}PK|Nj32VGWScqrCwDs@O*T literal 0 HcmV?d00001 diff --git a/research/r740-block-retimed-kernel/inputs/complex-template.json.gz b/research/r740-block-retimed-kernel/inputs/complex-template.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..975ce5c0df3e4a7aa22264df7f13b592bd2318e6 GIT binary patch literal 415067 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

o3;C6)`B%CkVo(5qkOpI1 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 literal 0 HcmV?d00001 diff --git a/research/r740-block-retimed-kernel/inputs/e8-r865.json.gz b/research/r740-block-retimed-kernel/inputs/e8-r865.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8bec1751f7e33c3a1e4673ef5dbc34d6f205321e GIT binary patch literal 33865 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 F0sxs54@Cd~ literal 0 HcmV?d00001 diff --git a/research/r740-block-retimed-kernel/notices/NOTICE-PR352.md b/research/r740-block-retimed-kernel/notices/NOTICE-PR352.md new file mode 100644 index 0000000000..4f9a0194a3 --- /dev/null +++ b/research/r740-block-retimed-kernel/notices/NOTICE-PR352.md @@ -0,0 +1,33 @@ +# Attribution and provenance + +Prepared by DaysSky, assisted with Claude. Apache-2.0 (see `LICENSE`) applies to the new code and to the inherited Apache-2.0 +code below; third-party notices are preserved where files are vendored. + +- **Complex supplier: the E8 unit** (`code/complex/inputs/e8/`): Jacob Sussman, jacobalansussman/wht-power-saving-lean + at `9c94857bbaee886f8649edee0bc2d3c738f9555e` (Apache-2.0, Copyright 2026 Jacob Sussman; his `LICENSE` and `NOTICE` + are vendored beside the files). The certificate `tools/certificate/gcert1-e8-r783.json.gz`, the 24 Lean modules and + the comparator configuration of his kernel-checked theorem `wht_main_block_B2Ge8x`, his Lean-data generators + (`tools/gx/{gxgen,gxrate,gxbind,gxunit,gxcore,gsmirror,gxpaths,regen_check,regen_check_e8}.py`, + `tools/gen/{foldlib,foldgen,gen_rates,gen_sharp}.py` and templates) and his stand-alone `tools/e8/replay.py` are + vendored byte-identical and sha-pinned in `code/complex/inputs/complex/source-pins.json`. His README credits + devices from this repository in the unit: slot reuse with a compensating read (jamesyc #124, eumemic #143), late + pairing (Chafik Boukhalfa #200/#233), the in-place pair (icekylinx #184, carried in ikeboy's #191/#193). +- **Bit word, Design T, twin condensation, checkers and engines** (`data/bit/`, `code/builders/`, `code/checkers/`, + `code/pricing/`, `code/export_p10.py`, `code/stage_cohort.py`): unchanged from LJH-217's PR #346 at + `11b4de5ff8ed5fccf55d4af1043358d257308e8e`, which builds on DreamingOfClouds' PR #325 p10b word and PR #315 engines + (#285/#276 gen5/gen4 lineage on eumemic's PR168 generator and source527 package, PR #200's physical rules, hcg890 + and Jacob Sussman's five-stage architecture, Evan McKinney's completed banks), utcorvusvolat-dotcom's w3 Design T, + twin condensation and verifier (PR #310) and PR #266's official checkers. See PR #346's notice for detail. + `json.hpp`: Niels Lohmann, MIT license in its header. +- **Complex checks** (`code/complex/portable_complex.py`, `code/complex/code/`, `code/complex/inputs/complex/`): + PR #315's portable complex checks as ported to p = 10 in PR #346 (#256/#233/#202/#200/#194/#184 lineage: + icekylinx, Chafik Boukhalfa, Avi Eisenberg, eumemic and others). Jacob Sussman's `gx.check1`, `gxcore` and pinned + Lean chain sources under `code/complex/inputs/complex/sources` are unchanged from PR #346 (byte-identical at + `9c94857` except his `ORIGIN.md`, kept at `f010392`). +- **New here**: `code/complex/code/scatter.py` and the generalization of the label, scalar, splice and guard checks + from the paired-cube star scatter with h centres of rank h − 2 to any gx scatter (table or star) with any number + of retained totals of any rank (regression: on PR #346's p = 10 program the generalized checks give byte-identical + scalar schedules, splice programs, primitive expansions, ledger and precision guard); the generalized final-climb + partition; the E8 pins; the Lean-binding and replay steps of `certify_complex.py`; `verify.sh` changes. + +Credits do not imply endorsement or review by the credited authors. diff --git a/research/r740-block-retimed-kernel/notices/NOTICE.md b/research/r740-block-retimed-kernel/notices/NOTICE.md new file mode 100644 index 0000000000..c244e3f56a --- /dev/null +++ b/research/r740-block-retimed-kernel/notices/NOTICE.md @@ -0,0 +1,47 @@ +# Attribution and provenance + +Prepared by Dylan Crow, with Anthropic Claude assistance. Apache-2.0 (see `LICENSE`) applies to the new code and to the +inherited Apache-2.0 code. Third-party notices are preserved where files are vendored. + +## New in this package + +- The E8 bit word `bitE8-r865` and its producer (`code/bit/producer/`). +- The record exporter. +- The independent checker and the controls. +- The centre-count CP-SAT proof. +- The generalized bit-side checkers, each with a documented default that reproduces the original: + - `NCOPY` in `legality_h.cpp` and `columns_h.cpp`; + - the `--gram` parameter in `gram_frames.py`; + - the label-family parameters in `geometry_g.py`; + - h and replicas in `tile_g.py`; + - h and T in `certify_bit_g.py`; + - NCOPY and the route template in `finite_g.py`. +- The receipt assembler. +- The secondary `seven_stage.py`. + +## Vendored + +- **`code/complex/`, `code/pricing/`**: unchanged from PR #352 (DaysSky) at `04b4c3c478b5bd8797d2663d89d8db4dfd0ad9f2`. This + includes: + - Jacob Sussman's E8 unit, Lean data, generators and replay, from jacobalansussman/wht-power-saving-lean at `9c94857` + (Apache-2.0, Copyright 2026 Jacob Sussman; his `LICENSE`/`NOTICE` are beside the files); + - PR #315's engines (`moment.py`, `base_two_moment.py`, `outer.py`, `prime_witnesses.py`). + See `NOTICE-PR352.md`. +- **`code/bit/regression/`**: unmodified from PR #352 / PR #346 (LJH-217): + - `legality_h_pr346.cpp` and `columns_h_pr346.cpp` (PR #266's official cohort checkers as generalized in h by #346); + - `stage_cohort.py`, `prime_new.py`, `tile_check.py`, `cost.py`, `certify_bit.py`. + The generalized checkers in `code/bit/checkers/` derive from these, and from the source527/p10 packages' + `finite_check.py`, `geometry527.py` and `global_lowering.py`, whose lineage is: + - eumemic's source527 package; + - PR #200 (Chafik Boukhalfa); + - PR234 (hcg890 / Henry Grant), on Jacob Sussman's five-stage architecture; + - Evan McKinney's completed banks; + - the p = 10 ports by DreamingOfClouds and Chafik Boukhalfa. +- **`code/secondary/bridged.py`**: unchanged from PR #363 (DaysSky) at `9df55dad6ddd05c3458793dfd82d1c2fe0ddbbb4`. + See `NOTICE-PR363.md`. +- **`data/regression-p10/BASE-*`**: PR #325's p10b word as exported in PR #352 (DreamingOfClouds; #352 `data/bit`). +- **`data/regression-p10/receipts-loans/`**: verification receipts of agent G's p = 10 passive-loans package, used only as + regression input. +- **`json.hpp`**: Niels Lohmann, MIT license in its header. + +The E8 label family on the bit side follows Jacob Sussman's introduction of the E8 family for the complex supplier. diff --git a/research/r740-block-retimed-kernel/notices/PR386.txt b/research/r740-block-retimed-kernel/notices/PR386.txt new file mode 100644 index 0000000000..28cfebeb08 --- /dev/null +++ b/research/r740-block-retimed-kernel/notices/PR386.txt @@ -0,0 +1,25 @@ +Prepared by Zhihao Chen with substantial OpenAI Codex assistance. +New compressed nine-stage bit geometry, source-bound global template, +independent audit, finite bill, combined certificate and documentation: +Apache License 2.0, the repository LICENSE. + +Pinned dependency research/e8-bit is reproduced without modification from +Dylan Crow (utcorvusvolat-dotcom), with Anthropic Claude assistance, PR #370: +https://github.com/CrocSwap/integer-mult-bounds/pull/370 +commit b7fe9cdf2da009c947ff6b334c562bc190b30373. +All LICENSE, NOTICE.md, NOTICE-PR352.md and NOTICE-PR363.md files are retained. +The local E8 bit word and its producer are their contribution, not ours. + +Pinned dependency research/nine-stage-complex-e8 is the independently +developed complex component from PR #377, commit +d0a620fcc99ba012468d61d01f5bb14007076d50: +https://github.com/CrocSwap/integer-mult-bounds/pull/377 +Its inherited sources, source notices and licenses remain unchanged. + +Jacob Sussman introduced the E8 family and complex unit. The preserved +upstream notices credit source527/eumemic, PR234/hcg890, PR266, PR315, +PR346/LJH-217, PR352/DaysSky, PR363/DaysSky, Chafik Boukhalfa, +DreamingOfClouds, Evan McKinney and other original contributors. + +The portable bits/stdc++.h shim contains standard-library includes only; +it changes neither inherited algorithms nor their verification checks. diff --git a/research/r740-block-retimed-kernel/notices/PR426-SOURCE-PINS.json b/research/r740-block-retimed-kernel/notices/PR426-SOURCE-PINS.json new file mode 100644 index 0000000000..24a25d4342 --- /dev/null +++ b/research/r740-block-retimed-kernel/notices/PR426-SOURCE-PINS.json @@ -0,0 +1,1116 @@ +{ + "files": [ + { + "commit": "b07cf2f3fdffcbccca86c88a0c33b32dfce4bfe9", + "path": "vendor/source376/two_alias.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "5046a050e168266aff6488d27ca6525469c844118fbaced9af2b3dde8e13065c", + "source_path": "research/e8-far-helper-composition/two_alias.py" + }, + { + "commit": "b07cf2f3fdffcbccca86c88a0c33b32dfce4bfe9", + "path": "vendor/source376/candidate_from378.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "b97c57e03fb570caab63bd82bf00664b5abea7eda8db3adfed69fc20efd82fb6", + "source_path": "research/e8-far-helper-composition/candidate_from378.py" + }, + { + "commit": "b07cf2f3fdffcbccca86c88a0c33b32dfce4bfe9", + "path": "vendor/source376/candidate_frames.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "2b8d10ff732e030eb643478b3da0a91753dc77314eeb882a51eafdb871d935e2", + "source_path": "research/e8-far-helper-composition/candidate_frames.py" + }, + { + "commit": "b07cf2f3fdffcbccca86c88a0c33b32dfce4bfe9", + "path": "vendor/source376/transport.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "264f6fc385532a25ae7f99774c2cb33e6ff6943fdbca546cfa000fb9e551fafb", + "source_path": "research/e8-far-helper-composition/transport.py" + }, + { + "commit": "b07cf2f3fdffcbccca86c88a0c33b32dfce4bfe9", + "path": "vendor/source376/LICENSE", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "source_path": "research/e8-far-helper-composition/LICENSE" + }, + { + "commit": "b07cf2f3fdffcbccca86c88a0c33b32dfce4bfe9", + "path": "vendor/source376/NOTICE.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "604f9225eee50bc7bc5cb8bfd33c2598e700466278d03fa06cfbb74c2b8e0d8e", + "source_path": "research/e8-far-helper-composition/NOTICE.md" + }, + { + "commit": "dcebad83e4d7e6a5643ba8edfb432b0ba0dd1826", + "path": "vendor/source395/construct.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "2b49d8b1f24f6e642d3cc81142a3ad8dfacead60280dc0df0a1326daa97acc0b", + "source_path": "research/e8-signed-prefix/construct.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/architecture/audit.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "c69bd2ac387a944ffa33bb9660f7ee407ca75648ec937217851780333df28f22", + "source_path": "research/e8-response-subspaces/architecture/audit.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/architecture/banks.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "7a8d81894dd7c35f05122bca19c5fc30f04ddf0dc4f2c8d73e334cdd3b64e396", + "source_path": "research/e8-response-subspaces/architecture/banks.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/architecture/bridge.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "92456fe1df26f51233fa5f8b96c1f8dd6118df3f3b385654c26de8c205db6bb0", + "source_path": "research/e8-response-subspaces/architecture/bridge.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/architecture/deps/json.hpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "source_path": "research/e8-response-subspaces/architecture/deps/json.hpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/architecture/inputs/BANK-PATTERNS.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "5d29feadc8f6b4d946cfdf26455e4211e1213616ae033625e924d1ad30d61bae", + "source_path": "research/e8-response-subspaces/architecture/inputs/BANK-PATTERNS.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/architecture/inputs/DATA-PHASES.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "47225c2ce696432aa9df6f422ae784aaa91bef651757f4266d0ea4edbff74694", + "source_path": "research/e8-response-subspaces/architecture/inputs/DATA-PHASES.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/architecture/inputs/GLOBAL-TEMPLATE.json.gz", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "19185edd2837894f97dd962e8cebdcb12e46ec85b8f0146405840ee8eddd79f5", + "source_path": "research/e8-response-subspaces/architecture/inputs/GLOBAL-TEMPLATE.json.gz" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/architecture/phase-replay.cpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "b3f44ae97d191df8f11024cef3bd0fd1a92f543f45183557db546c43cc6d4674", + "source_path": "research/e8-response-subspaces/architecture/phase-replay.cpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/architecture/phase.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "be98c242c194674b35ece6b2254605ba0a04d51a0d13933ff86c84240b3f957a", + "source_path": "research/e8-response-subspaces/architecture/phase.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/architecture/SUFFICIENT.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "1c9b41de1015196b608dbbe17fdcab692ac78249b585f4579dfe13676b8faa5f", + "source_path": "research/e8-response-subspaces/architecture/SUFFICIENT.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/code/bit-compose-replay.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "553f29567694069526dd317f2c42ef4a235efbcec2d639c1692dcae50647ce04", + "source_path": "research/e8-response-subspaces/code/bit-compose-replay.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/code/engines/base_two_moment.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "source_path": "research/e8-response-subspaces/code/engines/base_two_moment.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/code/engines/moment.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "source_path": "research/e8-response-subspaces/code/engines/moment.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/code/engines/outer.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "source_path": "research/e8-response-subspaces/code/engines/outer.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/code/outer.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "1db8744f85e87cfaa5e2b3696d7f89a2972c668365318a7cb1b6695c537467ee", + "source_path": "research/e8-response-subspaces/code/outer.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/frames/PROOF.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "01e721550cbee2d58681bcd2b561b1f8d5e2e422dc7a630cb99d62505166beb8", + "source_path": "research/e8-response-subspaces/frames/PROOF.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/frames/README.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "6592f3191538dff5233c7b4613848f750e3e645ab0956a20ca93b9f6d0775a4f", + "source_path": "research/e8-response-subspaces/frames/README.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/frames/reconstruct.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "726b3404aacf86b2515027622102d1a3075e82e1fbeb477f9d6aa438bb9baee3", + "source_path": "research/e8-response-subspaces/frames/reconstruct.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/frames/selection.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "17b7959402af929e2b24d2d1b285f84d6cf51a90cd077eb0fca9b4f5f7bf1d76", + "source_path": "research/e8-response-subspaces/frames/selection.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/BASE-MANIFEST.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "01663bf06edadded13027713c49b5764fb0db8161bdf0b38320328e0fc428359", + "source_path": "research/e8-response-subspaces/inherited/BASE-MANIFEST.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/BASE-REPLAY.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "7c323c0abfad726178ac36c69604b6825049c194715d1ea621f1b86a99a72e1d", + "source_path": "research/e8-response-subspaces/inherited/BASE-REPLAY.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/BASE-VALIDATION.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "dea88d4f6e201abec078505ded8d08a85fd6492d8c60874feb9113589f887157", + "source_path": "research/e8-response-subspaces/inherited/BASE-VALIDATION.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/BIT-COMPOSITION-RECEIPT.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "453cb782369596c1086d98eab7931ff4a48046e71005a749d48e693431a50bbe", + "source_path": "research/e8-response-subspaces/inherited/BIT-COMPOSITION-RECEIPT.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/BIT-REUSE.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "17dfc693af28f4ba639eb1145610f6f88b799efae49cc3a6a0fba886a3e0e35c", + "source_path": "research/e8-response-subspaces/inherited/BIT-REUSE.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/complex-reserve-notice.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "380ce615ddb67da3680fa188a0ba0daf578b983d58c2496cd20dd06f32e4ef57", + "source_path": "research/e8-response-subspaces/inherited/complex-reserve-notice.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/e8-notice.txt", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "557c9ad4660eebd14a00583736c4d12d2c45f3fc9bc148845f9f3efec72c9434", + "source_path": "research/e8-response-subspaces/inherited/e8-notice.txt" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/helper-notice.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "604f9225eee50bc7bc5cb8bfd33c2598e700466278d03fa06cfbb74c2b8e0d8e", + "source_path": "research/e8-response-subspaces/inherited/helper-notice.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/LICENSE", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "source_path": "research/e8-response-subspaces/inherited/LICENSE" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/NOTICE.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "9d8ba00681a08f4f6e2d2fef828c9837763a5ea534dca198b5b82ca8a0fc3662", + "source_path": "research/e8-response-subspaces/inherited/NOTICE.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/outer-notice.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "eb15ca83343fadc44f184513680aaaca34d447e04f5929c30054afb205732ddc", + "source_path": "research/e8-response-subspaces/inherited/outer-notice.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/pr352-notice.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "967e6d7e76e216e4898cf543c75b527e8d397ec1ddba3800cb20701f24c89524", + "source_path": "research/e8-response-subspaces/inherited/pr352-notice.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inherited/sussman-notice.txt", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81", + "source_path": "research/e8-response-subspaces/inherited/sussman-notice.txt" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inputs/bank-patterns.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "5d29feadc8f6b4d946cfdf26455e4211e1213616ae033625e924d1ad30d61bae", + "source_path": "research/e8-response-subspaces/inputs/bank-patterns.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inputs/candidate781.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "a4e42aa1663f5ad0da48cee6fe8514b205e43cf6e791b80674dbc7506a098a32", + "source_path": "research/e8-response-subspaces/inputs/candidate781.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/inputs/helper781.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "3df4c637c69840d53a0137eadbe16e25add617984bbe4da099d059f026192f1e", + "source_path": "research/e8-response-subspaces/inputs/helper781.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/LICENSE", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "source_path": "research/e8-response-subspaces/LICENSE" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/ANCESTRY-NOTICE.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "66997993ef97c9c185b2b96b9bc0f67ee297f01cc79da6f4b7e7077b3a601e6a", + "source_path": "research/e8-response-subspaces/local/ANCESTRY-NOTICE.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/deps/clifford_exact.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "source_path": "research/e8-response-subspaces/local/deps/clifford_exact.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/deps/complex_labels.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "e000ee131389fec427388b85f632879cbaaf10e5e5d979a47d6307d64ce58982", + "source_path": "research/e8-response-subspaces/local/deps/complex_labels.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/deps/complex_scalars.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "38e985ebe8c8e7f8c83c03828abde0c80be418caf95e97afdf2d0c357c0ed919", + "source_path": "research/e8-response-subspaces/local/deps/complex_scalars.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/deps/complex_splice.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "aaf46c8e5c68875b8315892e924e082b2f219f8d042dd14937e7cd2f72456dce", + "source_path": "research/e8-response-subspaces/local/deps/complex_splice.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/deps/p10pins.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "93b78a2e038b23264d04836928c78b6ebf33b87ff3dcc0e43ba0f1748fadd143", + "source_path": "research/e8-response-subspaces/local/deps/p10pins.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/deps/scatter.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "dfd1afbbb3ff86f54db6a0313916403ec8ee6f939caa62f3edcc9d7a151bff95", + "source_path": "research/e8-response-subspaces/local/deps/scatter.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/local_admit.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "bb6e0f228e841bb0dfa61accae6478e3ddf153e414bc353f2f48ca4e9c7cc9b3", + "source_path": "research/e8-response-subspaces/local/local_admit.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/MANIFEST.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "3244b88da8f5b1582a777319d9a92b7bf317c41ae76215f9a191fb39b2a9e218", + "source_path": "research/e8-response-subspaces/local/MANIFEST.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/prior-phase/CLIFFORD-RECIPES.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "356211a16d179c8b4d37d0bc5d038b55b4d0397242b119f7b83a583b7f766e1a", + "source_path": "research/e8-response-subspaces/local/prior-phase/CLIFFORD-RECIPES.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/prior-phase/CLIFFORD-REVIEW.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "0adf36a157af511c6b96a1a5c3c319061a7c9585b865f1289668c0f915fff641", + "source_path": "research/e8-response-subspaces/local/prior-phase/CLIFFORD-REVIEW.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/prior-phase/SOURCE-REUSE.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "e5e7b8c8dc2f6df47ab2b21e58299d4316d104bbf426146d948f16ba92ecd88c", + "source_path": "research/e8-response-subspaces/local/prior-phase/SOURCE-REUSE.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/README.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "fb34710058552124798406167c0e3f2525cb665f9aa8d297329b3a4d1e295051", + "source_path": "research/e8-response-subspaces/local/README.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/local/UPSTREAM-NOTICE.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "9d8ba00681a08f4f6e2d2fef828c9837763a5ea534dca198b5b82ca8a0fc3662", + "source_path": "research/e8-response-subspaces/local/UPSTREAM-NOTICE.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/MANIFEST.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "5ff08a6c7b051d227fcd516542b56718ae65bca93615acfe09cb8785d8e3f43c", + "source_path": "research/e8-response-subspaces/MANIFEST.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/NOTICE.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "8e2a5c0d6a1a582f52bdfc421d7412eb3e84aef5460835c647ce55f5b8d2896d", + "source_path": "research/e8-response-subspaces/NOTICE.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/PROOF.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "94a8244d3211ef091d570735cee4521995691ecba7fd18ed05647745d58d24da", + "source_path": "research/e8-response-subspaces/PROOF.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/README.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "912d7aec76f958142cacd2f647e9224e22f2909feb0430295ad5584f86451c67", + "source_path": "research/e8-response-subspaces/README.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/requirements.txt", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "f201db884fc05bd8fb9478402ec8394b7c71a6ae189e4e953c6f00a2b793ffa7", + "source_path": "research/e8-response-subspaces/requirements.txt" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/research-notes/AUXILIARY-PREWHITENING.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "58024afc83867a99441c513c6852df7305c2423ae5601c73c2e22854e261ce43", + "source_path": "research/e8-response-subspaces/research-notes/AUXILIARY-PREWHITENING.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/research-notes/bank-patterns.cpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "b7c16637602a6682b79f75dc7b0f069284b0cc21ba43b6b3c36f7fa9606f28ce", + "source_path": "research/e8-response-subspaces/research-notes/bank-patterns.cpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/research-notes/bank-review.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "23914f4771dc882f71683809b4d84dda7ae8b60bbb9c64ac8ec17816d71a3a24", + "source_path": "research/e8-response-subspaces/research-notes/bank-review.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/research-notes/frames-gl3.cpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "5ed6b2c0a654393c54552d26bd4c1c9cc07addb0d6c8ddd8e969e1ab9681dee5", + "source_path": "research/e8-response-subspaces/research-notes/frames-gl3.cpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/research-notes/frames-NOTES.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "e4bec2dab0e059df74d35870c1ca3435d4cd5fd021961b56253aea7f429d796b", + "source_path": "research/e8-response-subspaces/research-notes/frames-NOTES.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/research-notes/frames-response-search.cpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "fa56a09e7b98465e0173a2bdd8e331dd8831dead7f5397e2509586c386bcc321", + "source_path": "research/e8-response-subspaces/research-notes/frames-response-search.cpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/research-notes/outer-and-dual-proof.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "0312475a1c2426df57b4e4b655b0f29f13cb21ba8e7aab3d7a800ace37303a3a", + "source_path": "research/e8-response-subspaces/research-notes/outer-and-dual-proof.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/research-notes/readout-SUMMARY.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "974f59c965f1ae0fd89e2f87d1d6108f41a731535caa93638fe513daefa02165", + "source_path": "research/e8-response-subspaces/research-notes/readout-SUMMARY.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/research-notes/SEARCH.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "ef66c6962ec287562d06cecb94d918d82279ec56a7112ecd578406f865084c27", + "source_path": "research/e8-response-subspaces/research-notes/SEARCH.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/RESULT.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "466cb1aeb6ffde5fcebb019e5dd8e5549c1b24e25e74e5d32b82c56691b56c6e", + "source_path": "research/e8-response-subspaces/RESULT.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/VALIDATION.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "316f09393038630b772e82669fb00963a14c8218a831d9b35c0f256543a4eb7e", + "source_path": "research/e8-response-subspaces/VALIDATION.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/VALIDATION.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "e3bdad62dc0f4ef7c90b9fd650d3647d5b3eeef69473aa4caf4dc3cfba72dfa4", + "source_path": "research/e8-response-subspaces/VALIDATION.md" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/certify_bit_g.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "c9a31508126f34e7ac95d802c39e8919a872cd705314de5bf3538de1636ce8ce", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/certify_bit_g.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/certify_bit_k.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "e68a81ef7981a90d613752003cd5cab5351e260f909b094f1668d8a4dfe480df", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/certify_bit_k.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/columns_h.cpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/columns_h.cpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/columns_k.cpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/columns_k.cpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/cost.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "d55d2b865d1c3d35e343e1a38c592b9172ed8e2596d1107e34d92e2a80c7d03f", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/cost.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/exactnd_h.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "28a0d8ee29ac75b8a789705454987f07d618f135ed1f1bd45b97f18bcc4163e3", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/exactnd_h.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/finite_g.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "a591d8caa9ab50a4c7ec6934c71c93fc18fd14680180b43071e8d9d704f7ac9a", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/finite_g.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/finite_k.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "7e67dc75e63a11e38ac6d6615656c7cf6982e5a33dd404d04b967bf474cad02e", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/finite_k.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/geometry_g.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "b9fa3cd05f36f5fcebfdebfb4a86fb90e92ed3c1d9157c52918ee8c5b563b54f", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/geometry_g.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/geometry_k.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "646b7e8773d9c99376cb00627f109a97319e6d72b439ff513c39035c28c3f70f", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/geometry_k.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/gram_frames.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "223a5a07731fc315a90a3e48177796babc155c1d9985c7ae5017eff6af2a0608", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/gram_frames.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/json.hpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/json.hpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/legality_h.cpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/legality_h.cpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/tile_g.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "8140eec180e42202f2c6a9f11f5c92885e60861c38a7611dd805c524e3438138", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/tile_g.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/checkers/tile_k.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "64255088821f601ede2c3006f08cb97c39a4fa10dbbeb93a8a71fcfa0e1d8d77", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/checkers/tile_k.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/export_records.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/export_records.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/independent/centres_sat.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "f69379968367544807db2f0cf14359977e56299383b3edcc4469ddea7c7ecb40", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/independent/centres_sat.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/independent/checkword.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "11bf9620ca9db16d52d9fe806b814fc9ec9a89c4d7645354d1861d96f6e805ad", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/independent/checkword.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/independent/mutate.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "0ff65aace5da4b57d96235bf830f8f11969322e75134d498aeb70e9753ec6b0d", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/independent/mutate.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/mutate_records.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "b0e75d6550412a7be4017695e6b237392b611bb852ad8ff309d6682c9f166a4e", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/mutate_records.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/producer/compile.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "60fea6a9d6617a3f87376d3fda040642e9cb70e7c179015e03ede8d289f30357", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/producer/compile.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/producer/compile2.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "0e23d4282ceb75768e82631da016aaff9818aec53c7d75a6b2a28ee1b1160dc3", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/producer/compile2.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/producer/e8lib.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "4f8a6843e83bc4f7055d7337f33dbe12ce499051f46bee1b81bbf6b34c652574", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/producer/e8lib.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/producer/frames.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "ba71f77dd3e3c1c54f361c066cebe9faadbc78db46376046e7af625bf1de8c24", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/producer/frames.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/producer/fullword.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "0daf87599e9e48646b985ad87351c56c1b73cfc99cdf9eca081483846ddbfa90", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/producer/fullword.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/producer/ham1.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "359040fb432fd392472af6b8f5dca0234dd6c2be744a791df27ba62bc5da5175", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/producer/ham1.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/producer/ham2.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "fdf0af785ce697bd7f80b4e75f7163735f3b599d9dc42f652f0ffdbdf18ea8bf", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/producer/ham2.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/producer/params-r865.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "1256c54debe0a551da8e24896ab73ef0bd4a5233ff8e6fedf21a9e6301d6e6f3", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/producer/params-r865.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/producer/price.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "46c858e60ba0a117bf8227b864abf55e85ebee2d56a0dce64472b706499ac405", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/producer/price.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/producer/search2.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "4999c5d6bac9757e4236c45435201631eae21f644dc9543d8c0b6e3cc8360daf", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/producer/search2.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/receipts_e8.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "935ea65d9c6739e868ccf1aa439bd3c246657dfc887e4a0222a8f0901a5b41a5", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/receipts_e8.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/receipts_k.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "67f714e10a846e9cc62996342f825cd715055031e0b12591abdafd225717e195", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/receipts_k.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/regression/certify_bit.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "fc03e8f7bf73d7d70346b87c835d44508b0581c9ff9aec708fbbd4f0121e0394", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/regression/certify_bit.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/regression/columns_h_pr346.cpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "26f5c9be3a7f545d50be458e3d17403921b5542a7dcd2986c848664a774977a8", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/regression/columns_h_pr346.cpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/regression/cost.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "d55d2b865d1c3d35e343e1a38c592b9172ed8e2596d1107e34d92e2a80c7d03f", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/regression/cost.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/regression/json.hpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/regression/json.hpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/regression/legality_h_pr346.cpp", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "5661d0b91e07d95736bde4c1824f27bebaecce0a84e38403f5391ebc51a52056", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/regression/legality_h_pr346.cpp" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/regression/prime_new.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "7bd5cb48537621f1217d174274d42483da4e2d02feec238643c798c36b30366a", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/regression/prime_new.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/regression/prime_witnesses.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/regression/prime_witnesses.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/regression/stage_cohort.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/regression/stage_cohort.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/bit/regression/tile_check.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "38c3f78daac118395565a65fa3543b1c349638ff2519ce7fda0dad2d788e90ae", + "source_path": "research/e8-response-subspaces/vendor/bit/code/bit/regression/tile_check.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/complex/code/bridged.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "5fe7174cd3a6580a74e4c1bf8fa7b426e8673f1c285603bf3076d4e758d70731", + "source_path": "research/e8-response-subspaces/vendor/bit/code/complex/code/bridged.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/pricing/base_two_moment.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "source_path": "research/e8-response-subspaces/vendor/bit/code/pricing/base_two_moment.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/pricing/moment.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "source_path": "research/e8-response-subspaces/vendor/bit/code/pricing/moment.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/pricing/outer.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "source_path": "research/e8-response-subspaces/vendor/bit/code/pricing/outer.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/code/pricing/prime_witnesses.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "source_path": "research/e8-response-subspaces/vendor/bit/code/pricing/prime_witnesses.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/bit/data/bit/bitE8-r865.json.gz", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "source_path": "research/e8-response-subspaces/vendor/bit/data/bit/bitE8-r865.json.gz" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/complex_basis.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "52d68781eaf6d9decf02446a532a7336fcf15924a9f6781ba0833d038decb9f8", + "source_path": "research/e8-response-subspaces/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/complex_basis.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/complex_gx.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "ccc924537db0c0d55f0c1934e79b8cf4d85b4fb336473d7b42d69e12557aa9f2", + "source_path": "research/e8-response-subspaces/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/complex_gx.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/complex_labels.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "e000ee131389fec427388b85f632879cbaaf10e5e5d979a47d6307d64ce58982", + "source_path": "research/e8-response-subspaces/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/complex_labels.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/complex_scalars.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "38e985ebe8c8e7f8c83c03828abde0c80be418caf95e97afdf2d0c357c0ed919", + "source_path": "research/e8-response-subspaces/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/complex_scalars.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/complex_splice.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "aaf46c8e5c68875b8315892e924e082b2f219f8d042dd14937e7cd2f72456dce", + "source_path": "research/e8-response-subspaces/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/complex_splice.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/p10pins.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "93b78a2e038b23264d04836928c78b6ebf33b87ff3dcc0e43ba0f1748fadd143", + "source_path": "research/e8-response-subspaces/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/p10pins.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/scatter.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "dfd1afbbb3ff86f54db6a0313916403ec8ee6f939caa62f3edcc9d7a151bff95", + "source_path": "research/e8-response-subspaces/vendor/cx/work/native358/vendor/complex-reserve/upstream/pr352/code/complex/code/scatter.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/odd-stages/clifford_exact.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "source_path": "research/e8-response-subspaces/vendor/cx/work/odd-stages/clifford_exact.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/odd-stages/data_phases.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "671d6f8144c6d31e1766c6a0e144172da661a63f86b3d4d17fe2710f3ef752c4", + "source_path": "research/e8-response-subspaces/vendor/cx/work/odd-stages/data_phases.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/odd-stages/global_nine.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "7e33e6ca88b11e28544bf7d43b02252208d4355369a14adb2aa8baa15773e42a", + "source_path": "research/e8-response-subspaces/vendor/cx/work/odd-stages/global_nine.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/odd-stages/RECIPE-9.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "abda2e4c73ecb48d29c30c12bc9a5c2db71d11a35667b4298788ec9154eeec7b", + "source_path": "research/e8-response-subspaces/vendor/cx/work/odd-stages/RECIPE-9.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/pr361/code/engines/base_two_moment.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "source_path": "research/e8-response-subspaces/vendor/cx/work/pr361/code/engines/base_two_moment.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/pr361/code/engines/moment.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "source_path": "research/e8-response-subspaces/vendor/cx/work/pr361/code/engines/moment.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/cx/work/pr361/code/engines/outer.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "source_path": "research/e8-response-subspaces/vendor/cx/work/pr361/code/engines/outer.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/helper/candidate_frames.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "2b8d10ff732e030eb643478b3da0a91753dc77314eeb882a51eafdb871d935e2", + "source_path": "research/e8-response-subspaces/vendor/helper/candidate_frames.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/helper/candidate_from378.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "b97c57e03fb570caab63bd82bf00664b5abea7eda8db3adfed69fc20efd82fb6", + "source_path": "research/e8-response-subspaces/vendor/helper/candidate_from378.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/helper/two_alias.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "5046a050e168266aff6488d27ca6525469c844118fbaced9af2b3dde8e13065c", + "source_path": "research/e8-response-subspaces/vendor/helper/two_alias.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/reuse/frame-selection.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "a83d4880579fb1f8cffb701d1d685c157b7fa14ef9d6642e42ff1e4f5a1b8c5c", + "source_path": "research/e8-response-subspaces/vendor/reuse/frame-selection.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/reuse/frame_replay.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "6dc74f24323c717d9eff7c12f27c67a0531899e61a8ee340c98162b1e34f9531", + "source_path": "research/e8-response-subspaces/vendor/reuse/frame_replay.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/reuse/reuse-selection.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "0b300bab47cf0d69cbc7965bf01c2a27c96b97677ee651334470d8c968b603f1", + "source_path": "research/e8-response-subspaces/vendor/reuse/reuse-selection.json" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/vendor/reuse/reuse_replay.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "e83251e3d49267fb5b53eda53c1be80118b7df0cc671c38cad1f300883cd1316", + "source_path": "research/e8-response-subspaces/vendor/reuse/reuse_replay.py" + }, + { + "commit": "7844f72c6051a4408284c3092490687061675c1a", + "path": "vendor/source401/verify.py", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "9a573069ef44ffa092ab638bbfa817cc2922c5a2827c7de0e71138b6cf9c13ff", + "source_path": "research/e8-response-subspaces/verify.py" + }, + { + "commit": "12f488264cdd74a3b60d0fb534f4955792384f5c", + "path": "vendor/source404/selection194.json", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "7b8d5701b6ac524070fab509bf21fadef557d1eb396d28eb0136ca4ab18728e5", + "source_path": "research/e8-shared-donor-chains/shared/selection194.json" + }, + { + "commit": "12f488264cdd74a3b60d0fb534f4955792384f5c", + "path": "vendor/source404/NOTICE.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "175492d6648fbd5de1a45aa3b6ac99268551299786781a4b14d1bab3c5a1a19b", + "source_path": "research/e8-shared-donor-chains/NOTICE.md" + }, + { + "commit": "12f488264cdd74a3b60d0fb534f4955792384f5c", + "path": "vendor/source404/README.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "2beb4568b319804ac7790ef5803cb442c529a8a02692e8b8c5eca60c95a2b5e0", + "source_path": "research/e8-shared-donor-chains/README.md" + }, + { + "commit": "12f488264cdd74a3b60d0fb534f4955792384f5c", + "path": "vendor/source404/PROOF.md", + "repository": "CrocSwap/integer-mult-bounds", + "sha256": "5ab68880c7a72d909ced76074650908d3a9bd1e19bd9df0f8b7b9e924e1cc899", + "source_path": "research/e8-shared-donor-chains/PROOF.md" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/repivot.py", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "7dfe60b7ace9f8ba4674e0ead24e6933f48b0e0497038d1cf64ef2d4bffd142c", + "source_path": "research/e8-repivot-fusion/code/repivot.py" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/seqenlarge.py", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "8cdaabaa1923677e9bbbccc1291e414b13fc8ae19ea33202c4ae50fd8b03b6e0", + "source_path": "research/e8-sequential-enlarged/code/seqenlarge.py" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/repivot-e8.json", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "58fd4e9f2712ba5b33f78d792d99de612e2dfd888cdb83d0718028e6d6633c85", + "source_path": "research/e8-sequential-enlarged/data/repivot-e8.json" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/repivot-e8seq.json", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "e1e0dfe35c4ccbd572e6ecdd5be855e2a2e73a34a05c4437e94b97ab22d8f7d2", + "source_path": "research/e8-sequential-enlarged/data/repivot-e8seq.json" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/pr410/enlarged205.json", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "46b28ee2fd1768317fae7983043964b28f0f9c6e32a50f6a8b8b9b90e38920cc", + "source_path": "research/e8-sequential-enlarged/data/pr410/enlarged205.json" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/pr409/SELECTION.json", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "55ed27fc7d202aac06b5c62e5822764b24283f2637b70c2ffa9b3ee3dc7f2a48", + "source_path": "research/e8-sequential-enlarged/data/pr409/SELECTION.json" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/LICENSE", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "source_path": "LICENSE" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/NOTICE.md", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "ab9c3c082f2e00c5636603978d044127bd7b7fda6cdf955456154a36e222bc7a", + "source_path": "research/e8-sequential-enlarged/NOTICE.md" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/LICENSE-pr409", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "source_path": "research/e8-sequential-enlarged/data/pr409/LICENSE-pr409" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/LICENSE-pr410", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "source_path": "research/e8-sequential-enlarged/data/pr410/LICENSE-pr410" + }, + { + "commit": "616d9d678c00d79693b869934464003ba5b8d1b1", + "path": "vendor/source412/NOTICE-repivot.md", + "repository": "chafreaky/integer-mult-bounds", + "sha256": "8c7f4785def2bc39334aac618184bb4e3c6b11ee6f1c8b51edc89d7b8fddc2c0", + "source_path": "research/e8-repivot-fusion/NOTICE.md" + } + ], + "parent": { + "commit": "b3c45822ca847aec8c0c019bb04db30881fc2966", + "manifest_sha256": "389ac12de894730bd534f9a00d604866dd400175e32bd1204920dd98eafb8888", + "package": "research/e8-coupled-bit-retiming", + "scope": "Complete frozen source tree is retained beside this extension, without modifying any original bytes." + } +} diff --git a/research/r740-block-retimed-kernel/notices/PR426.md b/research/r740-block-retimed-kernel/notices/PR426.md new file mode 100644 index 0000000000..2a7a8c0c6b --- /dev/null +++ b/research/r740-block-retimed-kernel/notices/PR426.md @@ -0,0 +1,53 @@ +# Sources and attribution + +This extension preserves the full frozen PR389 package at b3c45822ca847aec8c0c019bb04db30881fc2966. +All notices and licenses in that package continue to apply, including Jacob +Sussman's original gx/E8 construction and Dylan Crow's bit word. + +applecrusher PR376 supplies the two exact equal-helper aliases, frame repairs, +two subsequent rank-six to rank-five moves, and deterministic transport. +Dugongue PR390 supplies target-prefix difference restoration and its sufficient +main-only Y-to-Y compiler extension. Rohan Arun PR395 supplies the signed +extension; its original source file and exact function bytes are retained. +The fixed signed selection here is reconstructed on the R779 word, rather than +claiming another contributor's selected witness as new discovery. + +ai-nanachi, with substantial OpenAI Codex assistance, supplies two further +two-donor clean substitutions, 55 clean-reset bit helper reuses, 54 subsequent +bit frame moves, changed complete supplier replays and exact composition. +The first contribution's frame search and exact record are preserved separately. +The headline gain comes from the changed complex supplier. The bit gain is +reported separately because it does not change the binding complex ceiling. +No worldwide priority or global optimality is claimed. + +Source byte identities and original commit paths are in SOURCE-PINS.json. +New contributions are Apache-2.0; original source-specific notices and licenses +are retained in the frozen parent and vendor directories. + +Dugongue [PR401](https://github.com/CrocSwap/integer-mult-bounds/pull/401) +at 7844f72c6051a4408284c3092490687061675c1a supplies arbitrary entrance +subspaces, exact even/degenerate two-sided normalization, mixed banks and +independent readback. Dugongue +[PR404](https://github.com/CrocSwap/integer-mult-bounds/pull/404) +at 12f488264cdd74a3b60d0fb534f4955792384f5c supplies the expanded shared-donor +selection and sufficient nested-donor construction. Our private nested-flag +experiments ran independently around this public update; no priority over +PR404 is claimed. applecrusher's PR376 at +7aa9d9f0247bb60c0519704bbca18990011e2a37 supplies the additional rank-eight +to rank-seven frame change, frozen through PR404's composition source. +Our contribution is the explicitly mapped R779 composition, all-pair fresh +phase replay, full changed supplier/bit checks, and independent clean-reset +bit mechanism. PR404's incompatible overlapping target recovery is excluded. +No source-specific numerical gains are added to the headline. + +Chafik Boukhalfa, with Anthropic Claude assistance, supplies the checker-clean +re-pivoting from [PR412](https://github.com/CrocSwap/integer-mult-bounds/pull/412) +at 616d9d678c00d79693b869934464003ba5b8d1b1. The four ordered groups originate +in Rohan Arun's [PR409](https://github.com/CrocSwap/integer-mult-bounds/pull/409); +the eight enlargements originate in eumemic's +[PR410](https://github.com/CrocSwap/integer-mult-bounds/pull/410). +Exact selected source bytes, commit paths and licenses are retained through +the frozen PR412 composition in vendor/source412. This submission maps these +relations onto R779, checks both unchanged original checker families, +recomputes every chronological omission, and freshly admits every phase pair. +No independently reported numerical savings are added together. diff --git a/research/r740-block-retimed-kernel/notices/PR438-NOTICE.md b/research/r740-block-retimed-kernel/notices/PR438-NOTICE.md new file mode 100644 index 0000000000..ee51ac2694 --- /dev/null +++ b/research/r740-block-retimed-kernel/notices/PR438-NOTICE.md @@ -0,0 +1,44 @@ +# Attribution + +Copyright 2026 icekylinx. New split-centre cancellation, reversible source-centre +composition, integration and verification changes were prepared by icekylinx +with substantial OpenAI Codex assistance. Apache-2.0 applies to these changes. +Earlier private Pro exploration used GPT-6 Astra; the new construction and +composition in this package were developed with Codex. + +## Direct sources + +- Zhihao Chen, with OpenAI Codex assistance: PR425's mutable-basis Hamming packet + producer, common-frame scalar interface, exact phase lowering and verification; + PR386's compressed nine-stage bit geometry, owner template, audit and finite + accounting. These supply the immediate complex and geometric baselines. +- ai-nanachi, with OpenAI Codex assistance: PR426's R767 bit word, including 55 + clean-reset helper reuses and 54 frame changes. The complete selected word is + imported unchanged before the nine source-centre replacements. +- Dylan Crow (utcorvusvolat-dotcom), with Anthropic Claude assistance: PR370's + Hamming E8 bit producer, root table, record exporter and local format. +- Jacob Sussman: the E8 family, complex unit and underlying interchange framework. +- applecrusher, Dugongue, eumemic, Rohan Arun, Chafik Boukhalfa, DaysSky, + DreamingOfClouds, Henry Grant, Evan McKinney, LJH-217 and other contributors: + the source, frame, compiler, rational-pricing and analytic lineage detailed + in the preserved original notices. + +The current value is computed from the two actual resulting programs. +Independently published improvements are not added numerically. `SOURCES.json` +records original commits and file hashes; `notices/` preserves source notices. +Files under `proofs/` describe their original packages and retain their original +scope and attribution; the current statement is in `PROOF.md`. + +## Earlier contributions by icekylinx + +The earlier #10, #18, #24, #32 and #36 contributions developed projector batching, +partial-swap frames, endpoint gauges and conditional analytic/tape integration. +The subsequent #104, #115, #130 and #144 contributions covered stopped-product +integration, partial gauges, three-stage covers and paired-cube/source chronology. +These provide historical context, not additional savings in this ledger. The +source-centre idea from the preceding local round is used here on PR426's bit +word. Unselected research experiments and superseded submission candidates are +not part of this package. + + +Kernel stage (this package): code/bit_kernel.py, the bank-tiling and audit changes in code/bit_global.py / code/bit_audit.py, stages/kernel-selection.json - rohanarun with Anthropic Claude assistance, Apache-2.0. vendor/kernel417/ is chafreaky's PR #417 code (e8core.py, stages.py, engines/), Apache-2.0, with two marked assertion relaxations. diff --git a/research/r740-block-retimed-kernel/notices/SUSSMAN-NOTICE b/research/r740-block-retimed-kernel/notices/SUSSMAN-NOTICE new file mode 100644 index 0000000000..63aa295646 --- /dev/null +++ b/research/r740-block-retimed-kernel/notices/SUSSMAN-NOTICE @@ -0,0 +1,290 @@ +Walsh-Hadamard power saving (wht-power-saving-lean) +Copyright 2026 Jacob Sussman + +Repository: https://github.com/jacobalansussman/wht-power-saving-lean + +This repository is not a project of OpenAI. OpenAI did not write, review or +endorse it. The package name "OAI" and the namespace "OAI.PowerSaving" are +those of openai/math and are kept only because the new files extend that +development. + +This repository is not a project of CrocSwap/integer-mult-bounds either. Its +authors did not write, review or endorse it. Section 6 says what is taken +from their repository. + +This repository contains files from, and files derived from, the repository +"openai/math" (https://github.com/openai/math), family 130, "Exact Fourier +transforms below n log n", at commit fd4aeeb2ee4fc729c18d98444fed42fd0529eeeb. +That repository is published under the Apache License, Version 2.0. A copy of +the licence is in the file LICENSE. The upstream repository has no NOTICE file +and its licence text names no copyright holder; the files are attributed here +to the authors of openai/math (OpenAI). + +1. Unmodified upstream files. + The 89 files under OAI/Computability/ are byte-for-byte copies of the files + with the same paths under lean/ in openai/math at the commit above. They + have not been changed. Modified copies of some of them are under + Work/Fourier/ and are listed in section 7. + One more file of openai/math is here unchanged, outside the Lean build: + third-party/openai-math/lean/ComparatorChallenges/UniformFourier.lean is a + byte-for-byte copy of lean/ComparatorChallenges/UniformFourier.lean at the + commit above (the statement of OpenAI's Fourier challenge). It is included + so that the modified copy named in section 2 can be compared with it. + +2. Files that contain upstream text. + - Work/CarrierCheck/ChallengeB2Ke16x.lean, + Work/CarrierCheck/ChallengeB2Ke16xR.lean, + Work/GCert/Data/ChallengeB2Gp193x.lean and the text template + tools/gen/templates/ChallengeB2L16x.lean.txt each contain, as their + lines 22-270, lines 9-257 of + lean/ComparatorChallenges/UniformFourier.lean of openai/math (the RAM cost + model), unchanged. Everything else in these files was written for this + repository. + - Work/Fourier/UniformFourierChallenge.lean is a modified copy of + lean/ComparatorChallenges/UniformFourier.lean of openai/math (the + statement of OpenAI's Fourier challenge, 336 lines). Changes: a comment + was added at the top; the exponent 1 - 1/(10^(13:ℕ)) was replaced by + 1 - 7474546/(10^(10:ℕ)); seven names received the suffix "Z" + (decimalExponent, decimalTime, TimeBounds, DFTGoal, ConvGoal, + transform_main, convolution_main). Everything else in the file is the + upstream text, unchanged. See section 7. + - Work/Scratch/Engine.lean and Work/Block/Engine.lean contain copies of + proofs of openai/math, changed for this repository: sections 1, 2 and 5 + of Work/Scratch/Engine.lean are upstream proofs with the batch layout + renamed, and both files contain a copy of the private upstream theorem + "hills_project" (lean/OAI/Computability/FourierTransform/ + TensorProgram.lean) with its envelope generalised. The comments in the + two files mark these places. + - lakefile.lean is adapted from lean/lakefile.lean of openai/math: the same + package name, toolchain, package option and Mathlib pin; every other + dependency was removed and the libraries of this repository were added. + lean-toolchain is a byte-for-byte copy of lean/lean-toolchain. + lake-manifest.json lists Mathlib and its dependencies at the revisions of + lean/lake-manifest.json. + - RELATED-WORK.md reproduces the BibTeX entries of two manuscripts of + openai/math. + +3. New files that build on upstream proofs. + The other files under WHTCheck/ and Work/ were written for this + repository. They import the upstream files, and several of them generalise + or adapt proofs of upstream files (for example Work/Block/Recursion.lean, + which says so in its header). They are changes and additions made for this + repository and are not part of openai/math. + +4. How the new files were made. + Jacob Sussman made the new files on 2026-10-08 and 2026-10-09 by directing + a team of AI agents (Claude). The agents wrote the new Lean files, the + certificate data and the generator scripts. See README.md, section 4. + +5. Ideas taken from other public work. + The network of the first result uses ideas published by others, among them + the helper circuit "NStar3" (Swapnil-jain/integer-mult-kappa, which credits + CrocSwap pull request #36 and Paureel for parts of it), its transfer to + family 130 (shea256/fourier-transform-below-nlogn), and "carrier links" and + "whole-residual batching" (pull requests to CrocSwap/integer-mult-bounds). + No file of Swapnil-jain/integer-mult-kappa or of + shea256/fourier-transform-below-nlogn is included here. One comment in + Work/Scratch/Engine.lean quotes three counts reported in + Swapnil-jain/integer-mult-kappa and names that source. The general frame + lemma that Work/GFrame proves is stated in + notes/general-clifford-frames.tex of CrocSwap/integer-mult-bounds; its Lean + proof was written for this repository. The credits, with links, are in + RELATED-WORK.md. + +6. Data derived from CrocSwap/integer-mult-bounds (second result). + The helper circuit of the second result is the paired-cube circuit of the + repository "CrocSwap/integer-mult-bounds" + (https://github.com/CrocSwap/integer-mult-bounds), in the state of its pull + request #193. It is the design of that community: icekylinx (pull requests + #144 and #184), eumemic (#168, and #117 behind its modules), ikeboy / + Avi Eisenberg (#191 and #193), with an664 (#128) credited there for the + workspace-sharing principle. That repository is published under the Apache + License, Version 2.0 (the same licence text as the file LICENSE). Its + NOTICE file begins "A sharper exponent for integer multiplication / + Copyright 2026 Douglas Colkitt" and says that the community release "is + not solely Douglas Colkitt's work". A complete copy of that NOTICE file, as + it is at the head of pull request #193, is in + third-party/CrocSwap-integer-mult-bounds/NOTICE. + + The data were taken from these files of that repository. They were loaded + as data by programs written for this repository; no program of that + repository was run, and none is included here. + - at the head of pull request #168 (eumemic), + 4a3c769e5c5430e7114c4d3e099ff34664677f17: + references/paired-cube/sources/local_L1.json + references/paired-cube/sources/tmod_TE_TD_TB3_1_1_4_full_6.0617964e-4.json + references/paired-cube/sources/pmod_J0_full_6.0666810e-4.json + references/paired-cube/sources/qmod_climb3u_best.json + references/paired-cube/selected-module/matching-arcs.json + references/paired-cube/physical/frames.json + - at the head of pull request #193 (ikeboy), + 187e1010ac8b259af8e9b5166f68b64bc27b4b47: + research/source-assisted-v4/data/physical-pairs.json + + Files of this repository that contain data derived from them: + tools/certificate/gcert1-p11-pr193.json.gz and the Lean data modules + generated from it, Work/GCert/Data/Gen/P193*.lean and the files they import + from Work/GCert/Data/Gen/P193/; its block counts are also in the generated + modules Work/GCert/Data/P193Price.lean, RateB2Gp193.lean, RateB2Gp193x.lean + and InstB2Gp193.lean. + Changes made: the circuit was rebuilt from those data as one explicit, + renumbered list of additions with a table of frames, in the certificate + format "gcert/1" of this repository; its 1,980 in-place steps were written + as pairs of additions with rescaled coefficients; the Lean data modules + were generated from that list. No file of that repository is included + unchanged, except the copy of its NOTICE file named above. + + Notices of that NOTICE file that pertain to these data, quoted: + + Paired-cube and shared-core extension, 9 October 2026 + Copyright 2026 icekylinx + + Source-assisted common-frame extension (2026-10-09) + Copyright 2026 icekylinx. Apache-2.0. + Substantial dependency: eumemic PR168, + fd25adb7fbaa12ee761d02c733c54d1d2a7687ee + + The full text of both notices, and the notices of the work they build on, + are in the copy named above. The credits, with links and with the words of + pull request #193 about its own sources, are in README.md ("Whose circuit + this is") and in RELATED-WORK.md, section 1. + +7. Modified copies of upstream files (third result). + The files listed below are copies of files of openai/math at the commit + above, changed for this repository. Each begins with a comment that names + the upstream file it is derived from and states what was changed. The + upstream originals under lean/OAI/Computability/ are in this repository + as well, unchanged (section 1), and the copies import them. The upstream + challenge file lean/ComparatorChallenges/UniformFourier.lean is in this + repository in both forms: unchanged under third-party/openai-math/ + (section 1) and modified (section 2). + + - Work/Fourier/ArbitraryLength.lean: modified copy of + lean/OAI/Computability/FourierTransform/ArbitraryLength.lean (224 + lines; 159 of them unchanged in the copy). Changes: identifiers renamed + on 64 lines (18 names: 15 with the suffix Z, 3 with Z inserted); 1 + import line replaced by 1; 15 comment lines added; no other change to + the code. + - Work/Fourier/Asymptotics.lean: modified copy of + lean/OAI/Computability/FourierTransform/Asymptotics.lean (187 lines; + 112 of them unchanged in the copy). Changes: identifiers renamed on 74 + lines (32 names: 26 with the suffix Z, 6 with Z inserted); 1 import + line replaced by 1; 15 comment lines added; no other change to the + code. + - Work/Fourier/Axioms.lean: written for this repository (not a copy of an + upstream file). + - Work/Fourier/ConvolutionProgram.lean: modified copy of + lean/OAI/Computability/FourierTransform/ConvolutionProgram.lean (100 + lines; 77 of them unchanged in the copy). Changes: identifiers renamed + on 22 lines (10 names: 9 with the suffix Z, 1 with Z inserted); 1 + import line replaced by 1; 15 comment lines added; no other change to + the code. + - Work/Fourier/Goal.lean: written for this repository; contains lines of + upstream files: of its 7 code lines, 6 are lines of + lean/OAI/Computability/FourierTransform/Goal.lean (original lines 35, + 75-77, 79, 81): unchanged: its lines 25; with identifiers renamed: its + lines 21, 24, 26, 28, 30. + - Work/Fourier/Main.lean: modified copy of + lean/OAI/Computability/FourierTransform/Main.lean (151 lines; 90 of + them unchanged in the copy). Changes: identifiers renamed on 59 lines + (40 names: 35 with the suffix Z, 5 with Z inserted); 1 import line + replaced by 2; 24 comment lines added; other code lines changed: 1 of + the original, 1 of the copy (copy line 59). + - Work/Fourier/Seam.lean: written for this repository; contains lines of + upstream files: of its 122 code lines, 15 are lines of + lean/OAI/Computability/FourierTransform/TensorProgram.lean (original + lines 36-37, 95-96): unchanged: its lines 93-94, 113-114, 141-142, + 163-164, 185-187, 194-196; with identifiers renamed: its lines 184; 3 + are lines of lean/OAI/Computability/FourierTransform/TensorSaving.lean + (original lines 83-84, 114): with identifiers renamed: its lines 45-46, + 59; 1 is a line of lean/OAI/Computability/FourierTransform/Main.lean + (original line 60): with identifiers renamed: its lines 213. + - Work/Fourier/SectorAlgorithm.lean: modified copy of + lean/OAI/Computability/FourierTransform/SectorAlgorithm.lean (224 + lines; 162 of them unchanged in the copy). Changes: identifiers renamed + on 61 lines (17 names: 13 with the suffix Z, 4 with Z inserted); 1 + import line replaced by 1; 15 comment lines added; no other change to + the code. + - Work/Fourier/SynchronizedAlgorithm.lean: modified copy of + lean/OAI/Computability/FourierTransform/SynchronizedAlgorithm.lean (126 + lines; 94 of them unchanged in the copy). Changes: identifiers renamed + on 31 lines (12 names: 10 with the suffix Z, 1 with Z inserted, 1 + other), the other being "canopy" to "Grove.canopy" (5 lines); 1 import + line replaced by 1; 16 comment lines added; no other change to the + code. + - Work/Fourier/TransformProgram.lean: modified copy of + lean/OAI/Computability/FourierTransform/TransformProgram.lean (146 + lines; 94 of them unchanged in the copy). Changes: identifiers renamed + on 51 lines (21 names: 19 with the suffix Z, 2 with Z inserted); 1 + import line replaced by 1; 15 comment lines added; no other change to + the code. + - Work/Fourier/UniformBounds.lean: modified copy of + lean/OAI/Computability/FourierTransform/UniformBounds.lean (183 lines; + 115 of them unchanged in the copy). Changes: identifiers renamed on 67 + lines (29 names: 25 with the suffix Z, 4 with Z inserted); 1 import + line replaced by 1; 15 comment lines added; no other change to the + code. + - Work/Fourier/UniformFourierChallenge.lean: modified copy of + lean/ComparatorChallenges/UniformFourier.lean (336 lines; 328 of them + unchanged in the copy). Changes: identifiers renamed on 7 lines (7 + names: 7 with the suffix Z); 12 comment lines added; other code lines + changed: 1 of the original, 1 of the copy (copy line 281). + - Work/Fourier/WorkingCompiler.lean: modified copy of + lean/OAI/Computability/FourierTransform/WorkingCompiler.lean (153 + lines; 104 of them unchanged in the copy). Changes: identifiers renamed + on 48 lines (14 names: 14 with the suffix Z); 1 import line replaced by + 1; 15 comment lines added; no other change to the code. + - Work/Fourier/WorkingPreparation.lean: modified copy of + lean/OAI/Computability/FourierTransform/WorkingPreparation.lean (212 + lines; 156 of them unchanged in the copy). Changes: identifiers renamed + on 55 lines (30 names: 28 with the suffix Z, 2 with Z inserted); 1 + import line replaced by 1; 15 comment lines added; no other change to + the code. + - Work/Fourier/WorkingTransform.lean: modified copy of + lean/OAI/Computability/FourierTransform/WorkingTransform.lean (119 + lines; 91 of them unchanged in the copy). Changes: identifiers renamed + on 27 lines (9 names: 8 with the suffix Z, 1 with Z inserted); 1 import + line replaced by 1; 15 comment lines added; no other change to the + code. + + Changes made to the eleven copied proof files: every declaration received + the letter "Z" in its name (as a suffix of its own name, or of the name + of the declaration it belongs to), so that it does not collide with the + upstream declaration of the same name; the upstream exponent "alpha" + (1 - 2/10^11) and the bound "hills" defined from it were replaced by + "alphaZ" (1 - 7474547/10^10) and "hillsZ", which are defined in + Work/Fourier/Seam.lean, and the single use of the upstream theorem + "hills_program" by "hillsZ_program"; the five definitions of the upstream + statement that contain its exponent (decimalExponent, decimalTime, + TimeBounds, DFTGoal, ConvGoal) were replaced by the versions of + Work/Fourier/Goal.lean, whose exponent is 1 - 7474546/(10^(10:ℕ)); + the import lines point to the copies; a header comment was added. + Two further changes: in the copy of Main.lean the same constant stands + once as the literal 2/10^11 and was replaced there too, and the two + final theorems of that copy received a documentation comment; in the + copy of SynchronizedAlgorithm.lean the name "canopy" was written out as + "Grove.canopy" in 5 places, because the short name is shadowed in the + larger environment of the copy. The script also renamed three names + inside upstream comments; the comments are otherwise the upstream ones + and describe the upstream network. + The proofs are those of openai/math. The copies were made by the script + tools/fourier/mkchain.py of this repository. + + Work/Fourier/Goal.lean contains copies of those five definitions of + lean/OAI/Computability/FourierTransform/Goal.lean, with the exponent + replaced and the suffix "Z" on the five names. + + Work/Fourier/Seam.lean was written for this repository. It repeats the + statement of the upstream theorem "hills_program" (TensorProgram.lean) and + the definition of "hills" (TensorSaving.lean) with the two names replaced; + its header says so. + + The work of others that the third result follows (danadran01, shea256, + eumemic) is credited in README.md ("Whose reduction this is") and in + RELATED-WORK.md, section 1. No file of their repositories is included + here. + +Not included in this repository and fetched by the build: Mathlib +(https://github.com/leanprover-community/mathlib4, Apache License 2.0) and its +dependencies. The comparator (https://github.com/leanprover/comparator) is a +separate tool and is not included. diff --git a/research/r740-block-retimed-kernel/proofs/INHERITED-COMPLEX-GEOMETRY.txt b/research/r740-block-retimed-kernel/proofs/INHERITED-COMPLEX-GEOMETRY.txt new file mode 100644 index 0000000000..c4150cb693 --- /dev/null +++ b/research/r740-block-retimed-kernel/proofs/INHERITED-COMPLEX-GEOMETRY.txt @@ -0,0 +1,161 @@ +Independent compressed nine-stage complex component + +Claim and retained assumptions + +The fixed E8 local invocation has h=9, v=120, R=783 and copied rank loss +cst=72. The construction below has m=73, live stock 14727 per complete +orthogonal cover, and paid profile + 1:157599, 2:43488, 3:37296, 4:10080, 5:15480, 6:23832, + 7:3096, 8:7488, 9:576, 16:3840, 32:3840, 48:3840. +It is a conditional complex component, not an integer multiplication bound. +The local E8 invocation theorem, general Clifford rank-zero compiler, +complete-stream tape primitives, common fine-grid precision, and retained +analytic recurrence interfaces are assumptions retained from the fixed local +source package. The new finite construction and its charges are supplied +here. No new Lean kernel proof is asserted. Final bit-side admission and +outer assembly are separate obligations. + +Exact operator convention + +For q in F2^m, let X_q be translation by q and + C_q = ((1+i) I + (1-i) X_q)/2. +Then C_q^2=X_q and C_q fixes the uniform vector. Write C_all for the product +over the coordinate vectors. An invertible binary matrix G acts by the +literal address permutation P_G. All products of C_q are commuting exact +Gaussian-dyadic operators. Their multiplier on Fourier character y is +i^(sum epsilon_q * parity(q.y)). Modulo 4, parity expands as its linear sum +minus twice its pair sum, so this multiplier is an exact Z4 quadratic form. +Equality of these forms proves equality including the scalar phase. + +For arbitrary local subspaces U, including degenerate ones, use the +deterministic canonical representative from clifford_exact.py. A basis G +whose first columns span U gives K_G = D_Q P_G, with +Q=I+G^(-T)G^(-1), and T_U=K_G C_[dim U] K_G^(-1). +Its preimage Lagrangian is {(u,u+w): u in U, w in U^perp}. Thus a nested +transition has Fourier rank equal to the dimension difference. The supplied +compiler produces two explicit monomial operators around one rank-r C child. +Its equality is checked both as a signed Pauli tableau and on a nonzero +exact Gaussian state vector, which fixes the otherwise missing global phase. +All 946 local frames, all 3120 used directed transitions, and all 240 old/new +source/target adapters are checked. No rank-only replacement is made. + +Compressed window and data routes + +Use V=F2^9 direct_sum (F2^8)^8 with the ordinary dot product. Let E_s be the +first s exterior eight-dimensional blocks, for 0<=s<=8. The exact window +representative of local U is T_U tensor C_Es. A nested transition cancels +the common exterior tensor factor exactly and keeps its original rank. +Conjugating the whole window by any cover permutation preserves this fact. +The old/new endpoint adapters are the checked local adapters tensored with +identity, followed by the declared address conjugation. This proves the +window lift directly; a divisibility assumption m=multiple_of_h is not used. + +Every supplied port q has odd weight and a zero coordinate. The explicit +orthogonal matrix U_q in data_phases.py maps e0 to q: swap e0 with a zero +coordinate e_j when necessary, then use the even-vector transvection +x -> x + ((q+e_j).x)(q+e_j). Its remaining columns are an orthonormal basis +of q^perp. For s>0, rho_s,q exchanges that complement in the local block +with exterior block s and fixes q and all other exterior coordinates. +It is a symmetric orthogonal involution. The stage data owners are +g=d*rho_s,q, with rho_0,q=I, so the right factors are bijections of O(73,2). + +Use canonical data levels X_s=C_[0,9+8s), Y_s=X_s C_q^(-1), and initially +X_(-1)=C_q, Y_(-1)=I. The routed stage starts at level s-1 and ends at level s. +Their binary preimages agree with the window endpoints. Exact phase +polynomials determine the translation that reconciles each endpoint, and +the template applies that translation. There are 3840 nonzero such +translations across the 120 port types and nine stages, before replica +multiplicity. These operators are not silently identified from equal +binary matrices. + +Four-pair scalar chain and idle children + +Starting with F_0 (Y_0 += X_0), for j=0,1,2,3 apply B_j (X_j -= Y_j), +then for j<3 apply X_j += X_(j+1), Y_(j+1) -= Y_j, apply F_j, and undo +that bridge. The last pair has B_3,F_3 without a following bridge. +Afterwards apply, in descending j=2,1,0, X_(j+1)+=X_j and Y_j-=Y_(j+1). +Finally exchange each pair by newX=oldY, newY=-oldX. The complete signed +integer scalar matrix is the identity; omission of every bridge fails. + +Before a bridge, advance the idle pair to the active pair's level. The +two advances for the newly used pairs have ranks (16,8), (32,8), (48,8). +The final advances have ranks 48,32,16,0. Each rank occurs on both members +of the pair, each of 120 ports, and each of eight replicas. A nested idle +transition is factored in the explicit orthonormal basis U_q direct_sum I. +Its exact Z4 phase is reconciled by the stored translation after that child. + +The final Y endpoint is C_all C_q^(-1). A source began at C_q, so its +unadjusted exchange route would be C_all C_q^(-2)=C_all X_q. Applying the +literal X_q to each final Y before the signed exchange removes this factor. +The corresponding 120 omission controls fail. This correction is charged. + +Banks and arbitrary correlated dirt + +There are eight replicas of each of the four data pairs, hence 7680 data +families. Each stage has 783 independent bank families. Number a local +helper occurrence by z=783*replica+helper. It uses bank floor(z/8) and slot +z mod 8, with its nine-dimensional residual assigned to coordinates +[9*slot,9*slot+9). A paid coordinate C child at coordinate 72 completes +each bank. All eight whole residuals and this padding fill dimension 73. +Thus there are 9*783=7047 bank families and live stock 14727. + +Let Pi_slot swap the first nine coordinates with the assigned block. The +local invocation at class d uses the bank class g=d*Pi_slot^(-1). Its +residual at that owner is P_g C_block P_g^(-1). Right multiplication is a +bijection. Local helpers sharing one bank have distinct slots, hence +different right factors and different actual bank classes for every d. +All data and private families are disjoint from banks. The checker verifies +these injections for all 72 invocation/replica templates and 56376 residual +assignments. A complete cover sweep for one replica finishes before the +next begins. The local dirty invocation is block diagonal on helpers at +its endpoint and permits arbitrary correlated helper values. Therefore +overlap between different invocations does not impose a cleanliness or +independence assumption. At each bank class, the eight residuals and the +padding are coordinate factors in one common conjugated basis, and their +exact product is P_g C_all P_g^(-1). + +One more exact correction is essential. Orthogonality alone does not imply +that P_g commutes with C_all as an exact operator. In fact + P_g C_all P_g^(-1) = C_all X_delta(g), + delta(g)_i = (weight(row_i(g))-1)/2 mod 2. +The quadratic terms cancel by row orthogonality and the remaining even +linear terms give the displayed translation. Both sides fix the uniform +vector, fixing the global scalar. Apply X_delta(g) to EVERY final live +family in cover class g, after the bank padding and signed data exchange. +The template includes and charges all 14727 corrections per cover. This +identity is also checked on every orthogonal matrix in dimensions 1..5. + +Finite work and recurrence charges + +The source emitter is regenerated and revalidated in both orientations. +It accounts for 1242936 local events over 72 invocations, with all copied +center and dirty-tableau lifetimes intact. Forward and backward scalar +words freshly replay all 1023 independent dirty live columns. Only the +private work starts at zero. Work comprises 783 tableau streams, nine +reserved center streams (eight used), and one coefficient stream. Each +invocation completes and erases its private work before the next. Physical +stock is therefore 15520 per cover; scalar-only work is excluded from the +recursion-volume denominator. + +GLOBAL-REVIEW.json records the complete recomputed finite overcharge, with +64*(73+1)^3 compiler groups per rank-zero adapter, source-counted scalar +primitives, and overcharges for all data routes, bank selectors, phases, +padding, bridges, exchanges and cover corrections. The O(73,2) order is +2^(36^2)*product(2^(2i)-1,i=1..36); its bit length is 2628. The recomputed +router fits 2^30000, the literal charge fits 2^100000, and the precision +guard fits C0=2^210000. No even-dimensional orthogonal-order formula is used. + +Largest child 48 does not satisfy one-layer halving. Instead +73^2=5329>2*48^2=4608, so two nested children have width strictly below +half the parent, including floors. The general depth is bounded by +2*ceil(log2 e), with direct small leaves. For B=s+E the completed-child +semantic induction has 2B(73-48)-s-E=49B>0. The resulting conservative +complete-row coefficient is 2*2642+9909+252=15445<20161, retaining the +external bit/base-row allowance as an explicit interface assumption. +The inherited bad-branch envelope is priced conservatively as before. + +Two independent rational moment engines admit +b=999240641319551/10^18 and exclude b+10^-18 for the source-bound profile. +The rank mass is 1072575, and 73*14727-1072575=2496=8*(8*120-9*72). +This complex component exceeds 1/1024 but does not improve the current +bit bottleneck. No improved final kappa or completed PR milestone follows. diff --git a/research/r740-block-retimed-kernel/proofs/PR386-BIT-GEOMETRY.txt b/research/r740-block-retimed-kernel/proofs/PR386-BIT-GEOMETRY.txt new file mode 100644 index 0000000000..31efe31268 --- /dev/null +++ b/research/r740-block-retimed-kernel/proofs/PR386-BIT-GEOMETRY.txt @@ -0,0 +1,191 @@ +Compressed nine-stage E8 bit supplier and combined conditional bound + +Claim and source assumptions + +The conditional combined value is + kappa = 998243154231047 / 10^18 = 0.000998243154231047 > 1/1024. +It is approximately 2^-9.9683211064. This is a conditional finite construction +in the inherited supplier framework, not a Lean proof of integer multiplication. +No priority claim is made. + +The E8 bit word, its 120 root lines, all 865 helpers, and nine retained totals +are taken without modification from Dylan Crow's PR #370, commit +b7fe9cdf2da009c947ff6b334c562bc190b30373. Its raw word has SHA256 +1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55. +The original verification is rerun, including regeneration, independent +1105-column F2 checking, official record legality/formal columns, all-frame +Gram and prime witnesses, negative controls, and the original regression set. +Its five-stage c is 904072820242522/10^18, insufficient by itself for -10. + +The complex supplier is the separately reconstructed compressed nine-stage +component from PR #377, with b = 999240641319551/10^18. Its complete source, +notices, exact Clifford and Z4 phase checks, global template and finite bill +remain included. In particular, its terminal X_q and every-live-family +X_delta(g) corrections are retained; equality of binary matrices is not +substituted for equality of complex operators. + +The inherited all-size weighted bit compiler, tape/prime/precision and +analytic transfer interfaces remain conditional. PR #370's explicit admission +of nine copied totals at h=8 is retained. The complex local E8 theorem, +Clifford compiler, common fine-grid, restored-row and analytic interfaces +remain conditional exactly as stated in the companion component. The new +window, banking and two-level finite charges are described below rather +than inferred from a rank histogram. + +Exact bit operators and compressed ambient space + +Over an admitted odd address field, the E8 form is G=I_8/2. For a nondegenerate +subspace U, write P_U for its orthogonal projector. On the doubled address +space define + D_U = [[I-P_U, P_U], [P_U, I-P_U]]. +Thus D_U is an exact involution. If U is contained in V then +D_V D_U = D_(V intersect U-perp), with rank dim(V)-dim(U). Also + D_I D_P = D_(I-P). +These are literal address matrices. Unlike the complex C operators, they +have no hidden scalar phase. The auditor reconstructs all 944 rational +projectors and checks all 3289 used nested pairs, in both orientations. + +Set V_global = Q^8 direct_sum (Q^7)^8, m=64, with form I_64/2. +Let E_s be the first s exterior 7-blocks, s=0,...,8. At stage s lift the +entire local word by replacing U with U direct_sum E_s. Both ends of every +local transition contain the same E_s, so it cancels exactly; the child +projector and rank are unchanged. This holds for copied totals as well: +the temporary transforms between the source and scatter frames, whose +common E_s cancels. COPY/ERASE windows remain sequential and immutable. +No assumption that m is a multiple of 9h is used. + +Port routes + +The reference root is q*=2e_0. For every root q, the checked product g_q +of at most two E8 root reflections sends q* to plus or minus q. Let A_q be +its last seven columns. They form an orthonormal basis of q-perp: + A_q^T A_q=I_7, A_q A_q^T=I_8-P_q, P_q=q q^T/4. +For stage s>0 use, on the local block and exterior block s, + rho_(s,q) = [[P_q, A_q], [A_q^T, 0]], +and fix all other coordinates. For s=0 use the identity. These matrices +are orthogonal involutions. Conjugating the lifted endpoints gives + (P_q,E_s) -> (I_8,E_(s-1)), (I_8,E_s) -> (I_8,E_s), + (0,E_s) -> (I_8-P_q,E_(s-1)), + (I_8-P_q,E_s) -> (I_8-P_q,E_s). +These equalities are checked as exact rational matrices for every port. +Each nontrivial route has a replayed elementary factorization, at most +77 factors, with denominators 1,2,4. Omitting a factor fails. Thus all +routes remain defined at every odd address prime; there is no new odd +exceptional prime. The existing local prime witnesses are rerun separately. + +Nine-stage scalar recipe and deferred endpoint completion + +Use four data pairs (X_j,Y_j). Start with F_0: Y_0 += X_0. For j=0,...,3, +apply B_j: X_j -= Y_j; when j<3 insert the two shears + X_j += X_(j+1), Y_(j+1) -= Y_j; +apply F_j; then undo those two shears. After all stages, for j=2,1,0 apply + X_(j+1) += X_j, Y_j -= Y_(j+1). +Finally replace (X_j,Y_j) by (Y_j,-X_j). The complete signed integer +8-by-8 scalar matrix is the identity. Omitting any of the eighteen +individual bridge shears changes it. + +Each B_j is the reflected inverse of the actual local record stream: +reverse the order, negate ADD coefficients, replace U by U-perp, and +turn ERASE into a fresh COPY from the original unchanged center. No erase +is inverted. PR #370 stores zero in the ERASE rank field; the reflected +COPY rank is freshly derived from its two frames, giving rank 8. Both +oriented streams replay all 1105 independent input columns and close work. + +Before each bridge the newly used pair is advanced to the active level. +The two idle increments are (14,7), (28,7), (42,7). Endpoint completion of +the earlier pairs is deferred to the final stage, with ranks 42,28,14,0. +Every increment acts on both members of every port pair and every replica. +The schedule checker requires equal complete frames at every bridge. +The signed terminal exchange completes the data transform using the exact +identity D_I D_P=D_(I-P). Scalar replay on 8745 independent columns includes +960 data and 7785 separate stage-helper inputs. All are restored after +the exchange; the reflected copy work closes to zero. + +Whole-block banks and arbitrary correlated dirt + +Use eight replicas. There are 4*2*120*8=7680 data families. For each stage, +number a local helper occurrence by z=865*replica+helper, and assign it +to bank floor(z/8), slot z mod 8. There are 865 banks at each of nine +stages. Each slot is one whole 8-dimensional coordinate block in Q^64. +The eight slots are mutually perpendicular and fill the ambient space; +no padding child is needed. Live recursion stock is 7680+9*865=15465. +Nine private center slots are reserved and excluded from recursion volume, +so charged physical stock is 15474. Only one such slot is used at a time. + +Let Pi_slot exchange the first eight coordinates with its bank block. +For a cover class d in O(I_64/2,F_q), the helper owner is the bank class +g=d Pi_slot^-1, and a data owner is d rho_(s,q). Right multiplication is a +bijection of the finite cover. Within every local invocation, helpers in +the same bank have different slots, hence different actual cover classes; +all data and work families are disjoint from banks. All 62280 assignments +are checked, and every physical bank receives each of its eight slots once. + +The local all-column theorem permits arbitrary helper inputs, including +correlations created by earlier invocations. After its endpoint each helper +has only the known residual D_H. The common E_s cancels, so no cleanliness +assumption is imposed by a previous bank action. Complete cover sweeps run +sequentially. At a fixed bank owner g the residuals are D on the eight +orthogonal coordinate blocks conjugated by g. They commute and multiply +to D_I. Since diag(g,g) commutes with the literal head/tail exchange D_I, +no complex-style cover phase correction is needed on the bit side. +This is a symbolic finite cover proof, not an enumeration of O(64,F_q). + +Actual emitted ledger + +The source-bound template emits 72 local invocations and 1355328 events. +All local COPY/ERASE and helper lifetimes are rechecked. Its paid profile is + 1:149472, 2:67824, 3:32256, 4:30096, 5:22176, 6:144, + 7:5760, 8:1296, 14:3840, 28:3840, 42:3840. +There are 320544 paid children, rank mass 987264 and deficit + 64*15465-987264 = 2496 = 8*(8*120-9*72). +The independent auditor recomputes the profile from the emitted template +and rejects missing idle/bridge/exchange/invocation events, bank-slot aliasing, +understated stock, a missing local MOVE and a wrong reflected COPY charge. + +Finite cost, precision allowance and two-level halving + +The largest child is 42, so one-level halving is false. Two levels suffice: + 2*42^2=3528 < 64^2=4096. +Floors only reduce descendant widths. The exact one-level moment, including +the inherited 10^-16 bad-branch envelope, is strictly below one; composing +two levels squares this contraction. The finite composite may be used with +the inherited halving-based compiler and direct small leaves. + +The old five-stage 104-bit payload-prefix guard is not reused. Fresh local +cancellation-free row bounds are 742 forward and 6308 reverse. For five +forward calls, four reflected calls and eighteen bridge shears, the bound + 2^18 * 742^5 * 6308^4 +has 117 bits. We explicitly charge 192 bits per nine-stage block. The actual +source operations, copy episodes, 77-factor routes, selectors, all owner +adapters and this prefix bound enter certify.py's finite coefficient. It +has 117 bits; the charged two-level coefficient has 269 bits and is bounded +by 2^512. This deliberately increases the finite cutoff, rather than passing +the old 104-bit assertion. The exact three bootstrap cutoff inequalities +are checked using the changed coefficient. + +For cover/routing enumeration use the inherited coarse q^(m^2+1) bound; +two levels and the retained additive row charges give + 2*(64^2+1)+9909+252 = 18355 < 20161. +The explicit rational bit routes introduce only powers of two. The new +finite constants fit well below the companion bridge's 2^30000 reserve, +and the common external C0=2^210000 and row allowance 20161 are retained. +As for the companion complex component, the general compiler/common-grid +interfaces are assumptions; no new Lean formalization is asserted. + +Exact price and combined assembly + +Two independent rational moment engines, both with the 10^-16 envelope, +admit c=1057833103534317/10^18 and reject c+10^-18. The complex supplier +therefore binds. With eta=10^-12 and beta=10^-9 choose + s=999240640320309/10^18 < (1-beta)*b < c. +Start a0=384599/10^10 and apply a_(j+1)=(1-s)s+s*a_j three times. The retained +outer assembly at (a3,b) admits kappa=998243154231047/10^18. All 47 strict +constraints are positive; the next 10^-18 kappa grid point is rejected. +The strict excess over 1/1024 is 21680654231047/10^18. Final kappa is about +24.0286% above frozen #361, within the explicitly retained assumptions. + +Attribution: Dylan Crow / Anthropic Claude for PR #370's new local bit word; +Jacob Sussman for E8 and the complex unit; the inherited source527, PR234, +PR266, PR315, PR346, PR352 and PR363 contributors as listed in the preserved +notices; Zhihao Chen with OpenAI Codex assistance for this compressed bit +composition, its independent audit, and the combined nine-stage package. diff --git a/research/r740-block-retimed-kernel/proofs/PR425-COMPLEX.txt b/research/r740-block-retimed-kernel/proofs/PR425-COMPLEX.txt new file mode 100644 index 0000000000..41061757ce --- /dev/null +++ b/research/r740-block-retimed-kernel/proofs/PR425-COMPLEX.txt @@ -0,0 +1,211 @@ +Hamming packets with mutable source and target bases +Conditional finite extension of the complex E8 supplier + +1. What is new + +The old r783 word keeps source values fixed and does not read target registers. +Those are sufficient restrictions on a scalar word, not necessary conditions +for a common-frame linear program. The new word uses 680 helper registers: + + * source registers themselves carry one branch of a simultaneous signed + packet computation; + * retired packet registers retain a full source basis, from which the eight + central coordinate sums are reconstructed; + * 56 pairs of targets carry a first two-output butterfly, with its input + basis explicitly compensated at frame zero and in the center decoder; + * an exact inverse on all source/helper registers is executed at their + common full frame after the last recursive climb. + +No recursive work is deleted from the ledger. A helper is counted for its +entire lifetime, including unused final climbs. All 120 sources and targets +retain their original line/full and zero/hyperplane endpoint ranks. + +The new local histogram is + {1:2248, 2:896, 3:168, 4:336, 5:392, 8:24, 9:8}. +Its rank mass is 9*680 + 240*8 + 72 = 8112. There are 4072 local children. +There are more local children than in the old r783 word, but substantially +less helper rank mass; the complete moment, not a count proxy, decides gain. + +2. Exact Hamming geometry and signed packet algebra + +Use the pinned PR370 table of 120 E8 root lines in Construction-A coordinates: +eight coordinate lines 2e_i and 112 sign lines on the 14 weight-four Hamming +blocks. For integer representatives r_s, let G_st = r_s dot r_t / 2. +The matrix C_st = 1 + G_st mod 2 has binary rank nine. The construction gives +an explicit orthonormal realization p_s in F_2^9 with + + p_s dot p_t = C_st, and p_s dot p_s = 1. + +Consequently the nonzero off-diagonal entries of G/2 occur only where a source +line lies in the target hyperplane. The rank-eight central factorization is + + (G/2)_ts = sum_i r_ti r_si / 4. + +For a source Hamming block d, a coordinate pair {i,j} in d, and epsilon=+-1, +define the signed face packet + + P(d,ij,epsilon) = sum_{s in d, r_si*r_sj=epsilon} r_si x_s. + +Each packet has four terms and its binary port span has rank three. Split +the eight sign lines of a block into its two parity tetrads. Each tetrad pair +occurs in two face packets with independent signed coefficient rows. The two +rows are formed simultaneously by two determinant-one shears, rather than +forming independent one-output sums. The packet factory uses its eight source +registers and sixteen additional helpers. Its twelve retired registers can +be oriented to retain a full rank-eight source basis. Exact elimination on +that stock produces four coordinate sums without allocating more helpers. + +This comparison of an individual factory is not a claim that the whole old +supplier used 48 helpers per block. The relevant complete counts are 783 and +680, both charged with their full actual profiles. + +For two target/source blocks whose intersection is {i,j}, the contribution +to target t is -r_ti P(d,ij,r_ti*r_tj)/2. The remaining within-block and +coordinate-line contributions are explicit four-output signed transforms. +Every one of the 14400 rational decoder entries is rechecked. Adding the +eight coordinate centers leaves precisely the identity matrix on sources. + +The binary transvection x -> x+(x dot 43)*43 is orthogonal because 43 has +even weight. It maps the constructed port set exactly to the old fixed E8 +port set. All frames and register indices are transported, so the old nine- +window data routes and their global phase correction apply to exactly the +same ordered ports, without introducing an unproved new covering geometry. + +3. General scalar-interface lemma + +Write z=(x,s) for the source and arbitrary dirty helper streams, and y for +the targets. Permit scalar additions and invertible dyadic scalings between +registers at the same current label. No target may feed a z register. The +raw A/center/B word therefore has block form + + z' = U z, + y' = V y + J x + K s, + +where U and V are invertible, and the retained-center operations are included +in J and K. The actual word has J=I after its adjusted center scatter. The +checks compute every coefficient over Q, rather than inferring it from a +desired sparsity pattern. + +At frame zero, before entry adapters or recursive children, execute + + y <- V^{-1} y - V^{-1} K s. + +Both y and s have label zero there. The code emits the literal inverse of +the 56 disjoint two-output target bases and a direct, charged dyadic old- +response matrix with 13216 additions. There is no uncharged oracle for K. +It is computed from the explicit scalar word and serialized. All coefficient +work is cleared immediately after its use. + +After the last main gate, finish every z register's climb to the full frame, +then execute U^{-1} by reversing and inverting the non-target gates. These +gates are legal at one common full frame, including helper-to-source gates. +The result is exactly + + (x,s,y) -> (x,s,y+x). + +The second orientation is the inverse transpose: negate and transpose every +addition and invert every scale in the SAME event order. Each retained +center is implemented by the transposed gather/child/scatter stream. The +result is (x,s,y) -> (x-y,s,y). Both orientations are replayed on all 920 +independent live columns, including all 680 arbitrary helper columns. +Missing compensation, missing output preconditioning, missing cleanup and +the wrong inverse-transpose order are rejected. + +Why the scalar argument lifts to exact complex labels: for each binary +subspace F use the exact canonical representative L(F). A climb from A to B +acts as L(B)L(A)^{-1}. If two registers share F, a scalar addition commutes +with their common L(F), as does a scalar scaling. Induction through the +actual stream therefore gives the block-diagonal conjugation of its scalar +matrix by the current labels. Center copies explicitly move from full to +zero, or zero to full in the other orientation. The preconditioner uses +only label-zero registers, and the z cleanup uses only full-label registers. +Thus the proof never moves a scalar operation across unequal labels or +identifies two frames merely because their ranks agree. + +Every used canonical frame, nested transition, center direction and endpoint +adapter is independently lowered by the exact Gaussian Clifford compiler. +Equalities include global phase. The old restricted gx gate-shape checker +is not used to admit this new interface; the stronger explicit matrix and +common-frame checks replace its source-immutability/target-read restrictions. +This is a written finite algebraic extension, not a new Lean theorem. + +4. Complete programs and work lifetimes + +Each orientation emits 27537 events, including startup, entry/exit adapters, +all recursive climbs, eight sequential center children, scalar operations +and final cleanup. Temporary centers are initialized, used and erased one +at a time. No center or coefficient work stream survives a live child. + +All added coefficients are dyadic. To apply a/2^j, compute |a| times the +source by binary Horner additions on a cleared private stream, halve j +times, accumulate with its sign, and clear the private stream. In-place +scales are signed powers of two. Every such primitive is charged. This +introduces no new denominator prime. Independent replay bounds the actual +cancellation-free prefix norms, including coefficient work; a 192-bit local +payload allowance is retained conservatively. + +5. Nine-window composition and finite bill + +Use the previously verified m=73 compressed nine-window geometry, four data +pairs, eight replicas, and the original signed bridges, idle children, +terminal exchange, terminal translations and full-cover phase correction. +The source scalar identity and its negative inverse-transpose are exactly +the two local interfaces consumed by that unchanged geometry. + +There are 680 whole-block banks per stage, each containing eight rank-nine +helper blocks plus one paid rank-one padding child. The live width is + + W = 240*4*8 + 9*680 = 13800. + +The conservative physical width is W+680+9+2=14491. The old-response matrix +uses no persistent tableau, but the old-size reserve is still charged. +The emitted owner table has 48960 distinct stage/replica/helper assignments. +The new global profile is + + {1:167976, 2:64512, 3:12096, 4:24192, 5:28224, + 8:7488, 9:576, 16:3840, 32:3840, 48:3840}. + +Its rank deficit is 73*13800 - sum(r*H_r) = 2496. The maximum child is 48, +and 73^2 > 2*48^2 supplies the same charged two-level halving argument. + +The finite bill is recomputed from the new scalar programs, bank owners, +work stock and adapter counts. It is not asserted unchanged. The local +primitive bound fits 2^48; the tape router fits 2^30000; the literal envelope +fits 2^100000; the precision envelope fits 2^210000. The physical row +coefficient is 15445, below the explicitly inherited external allowance +20161. Full-cover corrections apply to all 13800 live families. + +6. Conditional numerical conclusion and retained assumptions + +Two independent rational moment engines, with the inherited 10^-16 bad- +branch envelope, accept + + b = 1049104978040580 / 10^18 = 0.001049104978040580 + +and reject the next 10^-18 grid point. With the unchanged bit parameter +c=0.001057833103534317, three bootstrap steps and all 47 strict outer +conditions give the prospective finite-assembly value + + kappa = 1048005508028206 / 10^18 + = 0.001048005508028206, approximately 2^-9.898137985359. + +The finite statement is conditional on the same all-size weighted compiler, +common fine grid, restored-row/base allowance, tape/prime/precision and +analytic transfer interfaces as the retained nine-stage result. The new +scalar-interface lemma above and its serialized program are additional +reviewable material, not an appeal to gx accepting a program outside its +grammar. No unconditional integer-multiplication theorem is claimed. +The result is approximately +4.97% over the locally verified retimed bound, +and remains well short of 2^-9. A fresh extracted-package replay is required +by this research workflow before publication or final promotion. + +Attribution + +The root table and the motivation to use Hamming coordinates come from the +already pinned PR370 bit package (Dylan Crow, with Anthropic Claude assistance). +The E8 complex label family, original scalar word and gx interfaces are due +to Jacob Sussman. The retained complex admission, pricing and global analytic +interfaces are credited in the original package notices and PROOF.txt. +The mutable-basis packet word, transported geometry, expanded scalar proof, +new finite program and the present checks were developed in this local +research session by Zhihao Chen with OpenAI Codex assistance. diff --git a/research/r740-block-retimed-kernel/proofs/PR426.md b/research/r740-block-retimed-kernel/proofs/PR426.md new file mode 100644 index 0000000000..e589cfbf50 --- /dev/null +++ b/research/r740-block-retimed-kernel/proofs/PR426.md @@ -0,0 +1,108 @@ +# Construction, dependencies and sufficient argument + +The fixed complex witness starts from Chafik Boukhalfa's far-retimed E8 word +and applecrusher's two equal-helper substitutions and two frame refinements. +It additionally replaces helper 556 by -2 times helpers 354 and 461, then +helper 576 by -2 times helpers 402 and 478 after compaction. Exact clean +linear forms agree at every substituted read. The backward upper-frame and +forward nested repairs retain copied-total pins and final address caps. +R is 779. The actual new dirty response and cleanup are regenerated: equality +on clean values alone is not the arbitrary-dirt proof. + +The signed prefix restoration is the PR390/395 bracket. For 25 disjoint +targets, subtract lambda times the donor before the prefix, emit the exact +source/write-version/frame difference, and restore lambda times that donor +at the common recovery frame. Lambda is +1 or -1. The full rational main +operator and all retained totals agree with the explicit same-width R779 +baseline on all 1,019 independent columns. Source/helper subwords agree +exactly, so the new baseline's explicit dirty response and cleanup remain +valid. The changed compiler permits a main Y read only when its target is Y; +helper-to-X remains forbidden. Both signed orientations and private lifetimes +are freshly admitted, with all actual Clifford phases and physical incidences. + +The shared entrance construction follows PR401/404. Each pivot p satisfies +K_p + sum_d a_pd K_d = 0 in the explicit baseline response. Four re-pivots +from PR412 replace the basis of these same relations, including the +half-valued donor that otherwise fails the original sixths-denominator +condition. PR410 enlarges eight entrance subspaces. Removed original helpers +556 and 577 are mapped explicitly onto our R779 word. The shared layer has +192 pivots, rank mass 350, and 496 literal unit shears. Its pivots and donors +are disjoint, so this layer alone has (S-I)^2=0. + +PR409's four ordered groups, with PR412's two additional re-pivots, prepend +55 more shears and admit ten further pivots. The combined word has 202 +gauges of rank mass 360 and 551 entrance shears. The complete chronological +prefix need not have (S-I)^2=0. We check its actual product M S, all retained +totals, and that every gauged target-response column is zero. Every entrance +source is read before any earlier entrance operation writes it. + +Every one of the 551 omission controls is recomputed from the suffix +response. If shear t += q s is removed, its suffix response is multiplied +by -q times the original independent s column: earlier operations leave s +unchanged by the read-before-write condition. A nonzero response is required +for each omission; the entire changed scalar schedule is also replayed for +sampled omissions. No global donor/pivot disjointness is assumed here. Both +unchanged original gx.check1 and gxcore.mirror checkers pass, including the +native denominator conditions. Every actual nested transition is charged. + +PR376's additional target201/helper491 frame change from rank eight to seven +is checked for full operator equality and nested paid paths before gauging. +PR404's target125/124 overlapping-prefix recovery requires a different +chronological input and is not imported. Its numerical gain is not included. + +Each entrance chart is normalized explicitly. Even and degenerate E_p use +the full two-sided exact Clifford factorization of F T_E inverse. The right +inverse adapter precedes the entire old-response invocation; the left inverse +adapter follows all main and helper cleanup. Both orientations retain every +unitary address operator in the inverse-adjoint chronology. Rank-zero adapters +are costed. All old/new/reflected Gaussian child pairs are recomputed, +including Pauli signs and global phase. Newly assigned mixed-bank coordinate +permutations and inverse owners are emitted and independently decoded. +Padding is an exact fixed integer witness, not a claim of solver optimality. + +The new bit operation differs from the preceding all-dirt reset: a retired +helper only needs its clean X-content zeroed before a new logical helper is +placed in the same slot. An arbitrary residual helper value is allowed. The +new helper basis determines a newly computed initial D compensation. C is +the reversed helper subword, restoring every physical helper, including its +original independent dirt. Each reset is checked exactly before reuse; the +retired slot has no later original use, the new helper has no earlier use, +and copied totals are protected. The combined word is checked over every +independent binary column. It uses 55 fewer helpers (822 to 767). The initial 27 reuses and 26 frame +moves are followed by two fixed rounds of 14 reuses and 14 frame moves. +The later resets use exact two- or three-parent clean forms; every parent +and all rebuilt dirty compensation are charged and independently checked. Integer signed-prefix bounds, lifting, +copied-center controls, routes and whole-bank packing are recomputed rather +than inferred from the clean calculation. + +The complex assembly has dimension 73, 14,286 live and +15,075 physical families, 734 banks per stage, deficit 2,496, +maximum child rank 48 and halving degree two. The bit assembly has dimension +56, 10,409 live families, deficit 1,512 and halving degree two. Actual row +coefficients fit the common 20,161 reserve. Both finite invoices and both +exact rational moment engines retain the positive 10^-16 fallback. Adjacent +10^-24 complex coarse grid points are rejected; the unchanged bit coarse +grid remains 10^-18. The exact outer assembly uses positive eta=10^-24, +beta=10^-18, eight finite bootstrap continuations and a 10^-27 grid; it +checks 47 strict constraints and invalid eta/beta/adjacent-point controls. + +The complex coefficient is 254951444354246755323/250000000000000000000000. The bit coefficient is +104575879789097/100000000000000000. The resulting conditional kappa is 40750673324589432209923/40000000000000000000000000. +Using the preceding unchanged bit supplier with this same complex coefficient +gives 203354853562950029967497/200000000000000000000000000, where the bit side +binds. The new clean-reuse bit supplier removes that bottleneck. Its exact +additional kappa contribution is recorded as the difference from this fair +control; the combined witness is limited by the new complex coefficient. + +All original files are manifest-bound and immutable. A copied supplier tree +is changed only through asserted literal edits. DERIVATION.json records every +old/new digest, changed pin and textual difference. Both full predecessor +supplier suites run before the changed admission. Expected records are checked +after recomputation, rather than used to obtain a PASS. + +This is a sufficient finite conditional construction. The inherited all-size +recursive suppliers, canonical/rank-zero compiler, compressed Clifford windows, +dirty banking/cover, routing, restored-row, fixed tape, common-grid, Gaussian +precision/recovery and analytic interfaces remain assumptions. No new full +Lean theorem or unconditional integer-multiplication exponent is asserted. +The target kappa > 0.002 is not attained by this witness. diff --git a/research/r740-block-retimed-kernel/proofs/PR438-PROOF.md b/research/r740-block-retimed-kernel/proofs/PR438-PROOF.md new file mode 100644 index 0000000000..9f0346913c --- /dev/null +++ b/research/r740-block-retimed-kernel/proofs/PR438-PROOF.md @@ -0,0 +1,198 @@ +# Split centres and a joint conditional exponent + +The finite construction gives + +$$ +T(n)=O\!\left(n(\log n)^{1-\kappa}\right), +\qquad \kappa=0.001120864952258278, +$$ + +conditional on the retained all-size compiler, compressed-window, correlated +bank-dirt, restored-work, fixed-tape/common-grid, precision and analytic +interfaces. The changes below concern both finite suppliers. Original source +proofs and notices are retained; they do not replace the changed checks. + +## 1. Cancel coordinate terms before lifting the complex decoder + +Partition the 120 Hamming E8 root lines into the 112 code lines C and the eight +coordinate lines F, represented by 2e_i. Write r_s for a root representative and +G_ts = r_t · r_s / 2. The parent decoder is the rank-eight centre factorization +G/2 together with its negative off-diagonal entries. + +For each code target t, the coordinate-source centre contribution is +r_ti x_(2e_i)/2. Its side contribution is its negative. Cancel this pair before +constructing the lifted program. For code targets retain only + +$$ +Z_i=\sum_{s\in C}r_{si}x_s, +\qquad +\sum_i\frac{r_{ti}}4Z_i +-\sum_{\substack{s\in C\\s\ne t}}\frac{G_{ts}}2x_s=x_t. +$$ + +For coordinate targets, implement the identity x_(2e_i) directly. Thus the +entire 120-by-120 clean decoder is still the identity, including both cross +blocks between C and F. + +In the parent's binary address realization, + +$$ +p_s\cdot p_t=1+G_{st}\pmod2. +$$ + +Every code source contributing to Z_i is orthogonal to p_(2e_i), because its +ith root coordinate is ±1. The already constructed global sum Z_i lies in that +rank-eight hyperplane. Copy it there, lower the private copy to frame zero with +one rank-eight child, and scatter into the code targets. The eight coordinate +identities copy their source lines with one rank-one child each. Each private +copy has a sequential lifetime, and is erased before the next episode. + +The total copied rank is unchanged: + +$$ +8\cdot8+8\cdot1=72. +$$ + +The 112 coordinate-source helpers and eight dedicated full-centre helpers are +removed. Own-block corrections use their original source-copy rows directly; +all remaining signed packets and selected target butterflies are retained. +The actual helper count is 560. No rank-four recovered row is substituted for +a rank-three input. + +## 2. Arbitrary dirt and heterogeneous copy frames + +The explicit main word has block form z' = Uz and y' = Vy + x + Ks, where +z=(x,s), and U,V are invertible. No target feeds z. At the common initial frame, +apply V^-1 to the target basis and the literal correction -V^-1 Ks. Recompute K +from the new word. After all main gates and final climbs, apply the literal +inverse of the source/helper subword at the common full frame. This restores +all sources and arbitrary helpers while adding x to y. + +The parent common-frame proof applies to each copy separately. A private copy +created at label L(F) is lowered by the exact operator L(0)L(F)^-1, whether F +has rank one or eight. Scalar operations occur only at equal labels. Adding +the common exterior window to both labels cancels it exactly. The proof +therefore does not require a full-frame centre, or infer an operator from rank +alone. The inverse-transpose negates/transposes each scalar shear in the same +order and reverses each private gather/child/scatter operation as emitted. + +Both scalar orientations and the serialized private-work programs replay all +800 input columns. Both restore arbitrary source/helper inputs and erase private +work. The changed exact Gaussian recipes include the heterogeneous centre +transitions and their global phases. Of 2,918 selected directed pairs, 248 were +newly computed; 2,670 were unchanged source-bound exact pairs already checked in +the local phase run. The release optionally replays all selected pairs. + +The local paid profile is + +$$ +\{1:1912,\ 2:784,\ 3:168,\ 4:224,\ 5:392,\ 8:24\}. +$$ + +The compressed complex geometry uses m=73, eight replicas and nine stages. +There are 560 banks per stage, each holding eight whole rank-nine residuals and +one paid rank-one pad. Live width is 12,720; physical stock is 13,298, including +16 centre slots, the conservative 560-row tableau reserve and two coefficient +streams. The global rank deficit is 2,496. Explicit owner tables, padding, +terminal translations and the cover correction are independently decoded. +The largest child is 48; 73² > 2·48² gives two-level halving. + +The fresh invoice fits the retained 2^30000 router, 2^100000 literal and 2^210000 +precision reserves. Two exact rational engines certify + +$$ +b=0.001183986549206329. +$$ + +## 3. Source-centre bit composition + +Start with the exact R767 word from PR426. Its nine retained rows are written +only by original sources at the full frame and are not read by ordinary A/B +gates. Their nine independent binary forms have an invertible minor in source +columns 0,1,2,4,8,9,16,32,64. + +Replace those rows of the 120-dimensional identity by the nine retained forms. +Exact elimination produces an invertible source basis T, emitted as 559 XOR +additions. Delete the nine retained helper rows and their old-dirt columns. +After A apply T, perform the same nine sequential copies using the designated +source rows, and immediately apply T^-1 before B. The copies have unchanged +rank eight. All scalar operations of T and its inverse use the full frame. + +All 998 columns, arbitrary dirt, frame incidences and restoration pass. Omitting +T^-1 or the remaining old-dirt correction fails. The actual exported record +stream is reflected in reverse order with complementary frames. A reflected +ERASE becomes a fresh COPY at that chronological point; the original source +row remains unchanged within each copy episode. Both reflected programs and +all nine composed invocations are replayed, rather than assuming that mutable +source rows meet an old immutability restriction. + +Use the unchanged compressed bit windows in dimension 64: a local eight-space +and eight exterior seven-spaces. The root data, rational frame family, form, +port isometries and bank slots are source-bound to PR386. Every changed nested +pair is checked by exact rational spans; positive definiteness gives the +projector identity and its reflected version. There are 758 banks per stage, +each filled by eight rank-eight residuals, with no padding. Live width is 14,502 +and physical stock is 14,511. All 54,576 owner assignments are checked. The +unbanked global replay restores all 7,782 independent columns. + +The bit local profile is + +$$ +\{1:2367,\ 2:875,\ 3:475,\ 4:321,\ 5:164,\ 7:14,\ 8:9\}. +$$ + +Its global deficit is again 2,496. The maximum child is 42 and 64² > 2·42². +The actual cancellation-free prefix bound needs 223 bits; the new charge is +256 bits, replacing the parent's 192-bit allowance. The finite two-level +coefficient needs 483 bits and fits the retained 2^512 allowance. The row +coefficient is 18,355 < 20,161. These costs, including the basis operations, +are recomputed from the emitted word. Two exact rational moment engines give + +$$ +c=0.001122122700265139220566. +$$ + +## 4. Joint strict assembly + +Both moments include the inherited 10^-16 bad-branch allowance. The bit supplier +binds because c < b. Let eta=beta=10^-18 and + +$$ +s=\min\{c,(1-\beta)b\}-10^{-24}. +$$ + +Starting at a_0=384599/10^10, use six fixed ordinary bootstrap levels + +$$ +a_{j+1}=(1-s)s+sa_j. +$$ + +All bootstrap cutoff inequalities are checked with the actual charged finite +coefficient. With q=a_6(1-2eta), choose the greatest 10^-18 grid point strictly +below (1-eta)q/(1+q). It is + +$$ +\kappa=\frac{560432476129139}{500000000000000000} + =0.001120864952258278. +$$ + +All 47 retained strict outer inequalities pass. The next grid point, zero eta, +zero beta and unit beta are rejected. The candidate is computed from both +actual new templates; no independently reported savings are added together. + +The source-bound finite claims above do not discharge the inherited all-size +interfaces or establish unconditional integer-multiplication complexity. + + +## Addendum: shared-donor kernel entrances in the compressed bit geometry + +The kernel stage changes only helper chains: a pivot p starts at its entrance E (a root-closed frame inside the first frame +of p and of every donor) instead of the zero frame and drops its frame-0 completion reads; every donor d of E adds p at E +before the first A gate and again at FULL after the last C gate. Over F2 the completion responses satisfy +resp(p) = XOR resp(D), so every target column is unchanged and every helper column is restored (checked by the exact replay +on all 998 local columns, with arbitrary dirt, and by the global scalar replay). Frame nesting and the integer source-span +rule are rechecked. In the compressed nine-stage construction a helper's residual is its endpoint dimension minus its +entrance dimension; a helper of entrance rank e occupies a width-(8 − e) coordinate block of a 64-dimensional bank. The +tiling places 8 × 758 slots per stage into 733 banks with every coordinate used exactly once, so the injective-owner and +arbitrary-dirty-bank arguments apply with block isometries in place of whole rank-eight slots. The live stock drops by +9·(200/8) = 225 families while the paid mass drops by 72·200, keeping the rank deficit 64·W − mass = 2,496. diff --git a/research/r740-block-retimed-kernel/proofs/PR438-README.md b/research/r740-block-retimed-kernel/proofs/PR438-README.md new file mode 100644 index 0000000000..872109a08e --- /dev/null +++ b/research/r740-block-retimed-kernel/proofs/PR438-README.md @@ -0,0 +1,75 @@ +# Kernel + early resets on #433's bit word: conditional κ = 0.001133508328719775 + +κ = 1133508328719775/10¹⁸ = 0.001133508328719775: **+0.414 % over #435** (0.001128832830332521, kernel on R758), +**+0.465 % over #434** (0.001128250848293019, resets), +1.13 % over #433. The bit supplier binds; #433's split-centre complex +supplier (b = 0.001183986549206329) is unchanged. + +Bit word: #433's R758 source-centre word → #434's eleven chronological clean resets (R747; #434's own reconstruction, +`vendor/pr434/`, `code/bit_reset.py`) → #417's shared-donor response kernel re-derived on the R747 word (118 entries, +total entrance rank 160, 119 donor slots, no new frames; `code/bit_kernel.py`, `stages/kernel-selection.json`) → #386's +compressed nine-stage geometry with exact mixed-width bank tiling (727 banks per stage; live stock 14,223; deficit 2,496). +Bit lower 0.001134794627881866 (R747 alone: 0.001129525236; R758 + kernel: 0.001130108534). + +Verify: `python3 -B research/split-centres-kernel-r747/verify.py /tmp/out` (~30 s) → `PASS conditional kappa 0.001133508328719775`. + +Credits: icekylinx (#433), rohanarun / OpenAI Codex (#434 resets), chafreaky (#417 kernel, vendored), ai-nanachi (#426), +Zhihao Chen / jacklightChen (#425, #386), Dylan Crow (#370), J. Sussman (E8); this composition rohanarun with Anthropic Claude. + +--- + +# Conditional κ = 0.001120864952258278 + +This package combines a split-centre Hamming complex construction with a +source-centre bit construction in compressed nine-stage windows. The resulting +conditional exponent saving is + +$$ +\kappa=\frac{560432476129139}{500000000000000000} + =0.001120864952258278. +$$ + +This is approximately **6.9522% above PR425**. Both components change: + +| Component | Helpers | Ambient width | Certified saving | +|---|---:|---:|---:| +| Complex | 560 | 73 | 0.001183986549206329 | +| Bit | 758 | 64 | 0.001122122700265139220566 | + +The bit component limits the final assembly. The complex construction removes +coordinate contributions that cancel in the decoder, replacing eight full +centres with eight rank-eight and eight rank-one copies. The bit construction +starts from PR426's R767 word, computes its nine retained forms reversibly in +source rows, and uses PR386's compressed windows. + +## Verification + +Python 3.11+ and its standard library suffice. Use a new output directory: + +```sh +python3 -B research/split-centres-global/verify.py /tmp/split-centres-check +``` + +The default replays both changed words, reflected/inverse-transpose programs, +bank ownership, costs, two rational moment engines and 47 strict outer +inequalities. Exact complex phase evidence is reused only when the regenerated +canonical word and complete recipe hashes match. To regenerate every selected +Gaussian phase pair as well: + +```sh +python3 -B research/split-centres-global/verify.py /tmp/split-centres-full-phases --replay-phases +``` + +The unchanged historical repository suite and PDF build are not required by +this package. `EXPECTED.json` binds the result to both emitted global templates; +`MANIFEST.json` binds the package files; `SOURCES.json` pins imported sources. + +## Scope + +[PROOF.md](PROOF.md) supplies the changed finite construction. The all-size +compressed-window and correlated dirty-bank semantics, recursive compiler, +restored-work/tape/common-grid precision, and analytic transfer interfaces remain +conditional. This does not claim unchanged legacy gx/gxcore acceptance, a new +Lean proof, or an unconditional multiplication theorem. + +Contributor history and AI assistance are recorded in [NOTICE.md](NOTICE.md). +Original notices and the inherited proofs are retained separately. diff --git a/research/r740-block-retimed-kernel/stages/final-word.json b/research/r740-block-retimed-kernel/stages/final-word.json new file mode 100644 index 0000000000..38c454f38b --- /dev/null +++ b/research/r740-block-retimed-kernel/stages/final-word.json @@ -0,0 +1 @@ +{"A":[[2,241,[787]],[2,241,[802]],[2,241,[816]],[2,241,[833]],[2,242,[746]],[2,242,[760]],[2,242,[773]],[2,244,[744]],[3,248,[743]],[3,248,[768]],[3,248,[860]],[3,248,[889]],[3,249,[754]],[3,249,[771]],[3,249,[846]],[3,249,[872]],[3,249,[887]],[3,251,[842]],[3,251,[857]],[4,256,[739]],[4,256,[798]],[4,256,[855]],[4,256,[908]],[4,257,[782]],[4,257,[797]],[4,257,[839]],[4,257,[852]],[5,261,[871]],[5,261,[897]],[5,261,[911]],[5,263,[738]],[5,263,[811]],[5,263,[825]],[5,263,[867]],[5,263,[881]],[5,263,[895]],[6,266,[757]],[6,266,[808]],[6,266,[875]],[6,266,[903]],[6,266,[931]],[6,268,[752]],[6,268,[785]],[6,268,[813]],[6,268,[841]],[6,268,[869]],[6,268,[923]],[6,269,[753]],[6,269,[781]],[6,269,[809]],[6,269,[837]],[6,269,[865]],[6,269,[893]],[8,278,[822]],[8,278,[915]],[8,278,[928]],[8,280,[921]],[8,281,[767]],[8,281,[821]],[8,281,[849]],[8,281,[907]],[9,283,[836]],[9,285,[794]],[9,285,[924]],[9,286,[766]],[9,287,[795]],[9,287,[879]],[5,736,[738]],[5,736,[866]],[5,736,[867]],[5,736,[880]],[5,736,[881]],[4,737,[739]],[4,737,[854]],[4,737,[855]],[3,742,[743]],[3,742,[768]],[3,742,[769]],[2,745,[744]],[2,747,[746]],[2,748,[788]],[2,748,[801]],[2,748,[818]],[2,748,[831]],[2,749,[789]],[2,749,[800]],[2,749,[818]],[2,749,[831]],[3,755,[754]],[3,755,[770]],[3,755,[771]],[6,756,[757]],[6,756,[902]],[6,756,[903]],[6,756,[930]],[6,756,[931]],[2,761,[760]],[2,763,[762]],[2,763,[790]],[2,763,[791]],[2,763,[814]],[2,763,[815]],[9,764,[766]],[8,765,[767]],[8,765,[821]],[8,765,[823]],[2,772,[773]],[2,776,[762]],[2,776,[790]],[2,776,[804]],[2,776,[815]],[2,776,[829]],[2,777,[762]],[2,777,[791]],[2,777,[804]],[2,777,[815]],[2,777,[828]],[6,778,[845]],[6,778,[899]],[6,778,[927]],[6,779,[751]],[6,779,[753]],[6,779,[781]],[6,779,[863]],[6,779,[865]],[6,779,[891]],[6,779,[893]],[6,780,[845]],[6,780,[899]],[6,780,[927]],[4,783,[782]],[4,783,[796]],[4,783,[797]],[6,784,[785]],[6,784,[868]],[6,784,[869]],[6,784,[922]],[6,784,[923]],[9,792,[794]],[9,793,[795]],[4,799,[798]],[4,799,[854]],[4,799,[855]],[2,803,[786]],[2,803,[787]],[2,803,[802]],[2,805,[790]],[2,805,[791]],[2,805,[804]],[2,805,[814]],[2,805,[815]],[2,805,[828]],[2,805,[829]],[6,806,[808]],[6,806,[902]],[6,806,[903]],[6,806,[930]],[6,806,[931]],[6,807,[809]],[6,807,[863]],[6,807,[865]],[6,807,[891]],[6,807,[893]],[5,810,[811]],[5,810,[866]],[5,810,[867]],[5,810,[894]],[5,810,[895]],[6,812,[750]],[6,812,[752]],[6,812,[813]],[6,812,[868]],[6,812,[869]],[6,812,[922]],[6,812,[923]],[2,817,[786]],[2,817,[787]],[2,817,[816]],[2,819,[800]],[2,819,[801]],[2,819,[818]],[8,820,[822]],[5,824,[825]],[5,824,[880]],[5,824,[881]],[5,824,[894]],[5,824,[895]],[2,830,[788]],[2,830,[789]],[2,830,[831]],[2,832,[786]],[2,832,[787]],[2,832,[833]],[9,834,[836]],[6,835,[751]],[6,835,[753]],[6,835,[837]],[6,835,[863]],[6,835,[865]],[4,838,[796]],[4,838,[797]],[4,838,[839]],[6,840,[750]],[6,840,[752]],[6,840,[841]],[6,840,[868]],[6,840,[869]],[3,843,[842]],[6,844,[845]],[6,844,[926]],[6,844,[927]],[8,851,[821]],[8,851,[823]],[8,851,[849]],[4,853,[796]],[4,853,[797]],[4,853,[852]],[3,856,[857]],[3,861,[768]],[3,861,[769]],[3,861,[860]],[5,870,[871]],[5,870,[896]],[5,870,[897]],[3,873,[770]],[3,873,[771]],[3,873,[846]],[3,873,[847]],[3,873,[872]],[6,874,[875]],[6,874,[930]],[6,874,[931]],[9,877,[879]],[3,886,[770]],[3,886,[771]],[3,886,[846]],[3,886,[847]],[3,886,[887]],[3,888,[768]],[3,888,[769]],[3,888,[889]],[6,898,[899]],[6,898,[926]],[6,898,[927]],[8,905,[821]],[8,905,[823]],[8,905,[907]],[4,909,[854]],[4,909,[855]],[4,909,[908]],[5,910,[896]],[5,910,[897]],[5,910,[911]],[8,914,[915]],[8,919,[921]],[9,925,[924]],[8,929,[928]],[463,933,[938]],[463,934,[938]],[463,937,[938]],[458,939,[946]],[458,940,[945]],[461,944,[943]],[461,951,[943]],[461,953,[943]],[469,958,[957]],[468,959,[960]],[469,964,[957]],[469,965,[957]],[468,966,[960]],[468,967,[960]],[466,972,[976]],[466,973,[976]],[465,974,[975]],[466,977,[976]],[465,978,[975]],[465,979,[975]],[2,240,[0]],[2,241,[0]],[2,242,[0]],[2,243,[0]],[2,244,[0]],[2,245,[0]],[3,246,[1]],[3,247,[1]],[3,248,[1]],[3,249,[1]],[3,250,[1]],[3,251,[1]],[4,252,[2]],[4,253,[2]],[4,254,[2]],[4,255,[2]],[4,256,[2]],[4,257,[2]],[5,258,[3]],[5,259,[3]],[5,260,[3]],[5,261,[3]],[5,262,[3]],[5,263,[3]],[6,264,[4]],[6,265,[4]],[6,266,[4]],[6,267,[4]],[6,268,[4]],[6,269,[4]],[7,270,[5]],[7,271,[5]],[7,272,[5]],[7,273,[5]],[7,274,[5]],[7,275,[5]],[8,276,[6]],[8,277,[6]],[8,278,[6]],[8,279,[6]],[8,280,[6]],[8,281,[6]],[9,282,[7]],[9,283,[7]],[9,284,[7]],[9,285,[7]],[9,286,[7]],[9,287,[7]],[10,288,[8]],[10,289,[8]],[11,290,[9]],[11,291,[9]],[12,292,[10]],[12,293,[10]],[13,294,[11]],[13,295,[11]],[14,296,[12]],[14,297,[12]],[15,298,[13]],[15,299,[13]],[16,300,[14]],[16,301,[14]],[17,302,[15]],[17,303,[15]],[18,304,[16]],[18,305,[16]],[19,306,[17]],[19,307,[17]],[20,308,[18]],[20,309,[18]],[21,310,[19]],[21,311,[19]],[22,312,[20]],[22,313,[20]],[23,314,[21]],[23,315,[21]],[24,316,[22]],[24,317,[22]],[25,318,[23]],[25,319,[23]],[26,320,[24]],[26,321,[24]],[27,322,[25]],[27,323,[25]],[28,324,[26]],[28,325,[26]],[29,326,[27]],[29,327,[27]],[30,328,[28]],[30,329,[28]],[31,330,[29]],[31,331,[29]],[32,332,[30]],[32,333,[30]],[33,334,[31]],[33,335,[31]],[34,336,[32]],[34,337,[32]],[35,338,[33]],[35,339,[33]],[36,340,[34]],[36,341,[34]],[37,342,[35]],[37,343,[35]],[38,344,[36]],[38,345,[36]],[39,346,[37]],[39,347,[37]],[40,348,[38]],[40,349,[38]],[41,350,[39]],[41,351,[39]],[42,352,[40]],[42,353,[40]],[43,354,[41]],[43,355,[41]],[44,356,[42]],[44,357,[42]],[45,358,[43]],[45,359,[43]],[46,360,[44]],[46,361,[44]],[47,362,[45]],[47,363,[45]],[48,364,[46]],[48,365,[46]],[49,366,[47]],[49,367,[47]],[50,368,[48]],[50,369,[48]],[51,370,[49]],[51,371,[49]],[52,372,[50]],[52,373,[50]],[53,374,[51]],[53,375,[51]],[54,376,[52]],[54,377,[52]],[55,378,[53]],[55,379,[53]],[56,380,[54]],[56,381,[54]],[57,382,[55]],[57,383,[55]],[58,384,[56]],[58,385,[56]],[59,386,[57]],[59,387,[57]],[60,388,[58]],[60,389,[58]],[61,390,[59]],[61,391,[59]],[62,392,[60]],[62,393,[60]],[63,394,[61]],[63,395,[61]],[64,396,[62]],[64,397,[62]],[65,398,[63]],[65,399,[63]],[66,400,[64]],[66,401,[64]],[67,402,[65]],[67,403,[65]],[68,404,[66]],[68,405,[66]],[69,406,[67]],[69,407,[67]],[70,408,[68]],[70,409,[68]],[71,410,[69]],[71,411,[69]],[72,412,[70]],[72,413,[70]],[73,414,[71]],[73,415,[71]],[74,416,[72]],[74,417,[72]],[75,418,[73]],[75,419,[73]],[76,420,[74]],[76,421,[74]],[77,422,[75]],[77,423,[75]],[78,424,[76]],[78,425,[76]],[79,426,[77]],[79,427,[77]],[80,428,[78]],[80,429,[78]],[81,430,[79]],[81,431,[79]],[82,432,[80]],[82,433,[80]],[83,434,[81]],[83,435,[81]],[84,436,[82]],[84,437,[82]],[85,438,[83]],[85,439,[83]],[86,440,[84]],[86,441,[84]],[87,442,[85]],[87,443,[85]],[88,444,[86]],[88,445,[86]],[89,446,[87]],[89,447,[87]],[90,448,[88]],[90,449,[88]],[91,450,[89]],[91,451,[89]],[92,452,[90]],[92,453,[90]],[93,454,[91]],[93,455,[91]],[94,456,[92]],[94,457,[92]],[95,458,[93]],[95,459,[93]],[96,460,[94]],[96,461,[94]],[97,462,[95]],[97,463,[95]],[98,464,[96]],[98,465,[96]],[99,466,[97]],[99,467,[97]],[100,468,[98]],[100,469,[98]],[101,470,[99]],[101,471,[99]],[102,472,[100]],[102,473,[100]],[103,474,[101]],[103,475,[101]],[104,476,[102]],[104,477,[102]],[105,478,[103]],[105,479,[103]],[106,480,[104]],[106,481,[104]],[107,482,[105]],[107,483,[105]],[108,484,[106]],[108,485,[106]],[109,486,[107]],[109,487,[107]],[110,488,[108]],[110,489,[108]],[111,490,[109]],[111,491,[109]],[112,492,[110]],[112,493,[110]],[113,494,[111]],[113,495,[111]],[114,496,[112]],[114,497,[112]],[115,498,[113]],[115,499,[113]],[116,500,[114]],[116,501,[114]],[117,502,[115]],[117,503,[115]],[118,504,[116]],[118,505,[116]],[119,506,[117]],[119,507,[117]],[120,508,[118]],[120,509,[118]],[121,510,[119]],[121,511,[119]],[66,512,[64]],[122,512,[67]],[122,513,[512]],[67,514,[65]],[123,514,[66]],[123,515,[514]],[70,516,[68]],[124,516,[71]],[124,517,[516]],[71,518,[69]],[125,518,[70]],[125,519,[518]],[126,400,[410]],[126,520,[400]],[127,402,[408]],[127,521,[402]],[128,404,[414]],[128,522,[404]],[129,406,[412]],[129,523,[406]],[130,413,[401]],[130,524,[413]],[131,409,[405]],[131,525,[409]],[132,415,[403]],[132,526,[415]],[133,411,[407]],[133,527,[411]],[34,528,[32]],[134,528,[35]],[134,529,[528]],[35,530,[33]],[135,530,[34]],[135,531,[530]],[38,532,[36]],[136,532,[39]],[136,533,[532]],[39,534,[37]],[137,534,[38]],[137,535,[534]],[138,346,[336]],[138,536,[346]],[139,344,[338]],[139,537,[344]],[140,350,[340]],[140,538,[350]],[141,348,[342]],[141,539,[348]],[142,337,[349]],[142,540,[337]],[143,341,[345]],[143,541,[341]],[144,339,[351]],[144,542,[339]],[145,343,[347]],[145,543,[343]],[26,544,[24]],[146,544,[27]],[146,545,[544]],[27,546,[25]],[147,546,[26]],[147,547,[546]],[30,548,[28]],[148,548,[31]],[148,549,[548]],[31,550,[29]],[149,550,[30]],[149,551,[550]],[150,320,[330]],[150,552,[320]],[151,328,[322]],[151,553,[328]],[152,334,[324]],[152,554,[334]],[153,326,[332]],[153,555,[326]],[154,333,[321]],[154,556,[333]],[155,325,[329]],[155,557,[325]],[156,323,[335]],[156,558,[323]],[157,331,[327]],[157,559,[331]],[18,560,[16]],[158,560,[19]],[158,561,[560]],[19,562,[17]],[159,562,[18]],[159,563,[562]],[22,564,[20]],[160,564,[23]],[160,565,[564]],[23,566,[21]],[161,566,[22]],[161,567,[566]],[162,304,[314]],[162,568,[304]],[163,312,[306]],[163,569,[312]],[164,318,[308]],[164,570,[318]],[165,310,[316]],[165,571,[310]],[166,317,[305]],[166,572,[317]],[167,309,[313]],[167,573,[309]],[168,307,[319]],[168,574,[307]],[169,315,[311]],[169,575,[315]],[42,576,[40]],[170,576,[43]],[170,577,[576]],[43,578,[41]],[171,578,[42]],[171,579,[578]],[46,580,[44]],[172,580,[47]],[172,581,[580]],[47,582,[45]],[173,582,[46]],[173,583,[582]],[174,352,[362]],[174,584,[352]],[175,354,[360]],[175,585,[354]],[176,356,[366]],[176,586,[356]],[177,358,[364]],[177,587,[358]],[178,365,[353]],[178,588,[365]],[179,361,[357]],[179,589,[361]],[180,367,[355]],[180,590,[367]],[181,363,[359]],[181,591,[363]],[74,592,[72]],[182,592,[75]],[182,593,[592]],[75,594,[73]],[183,594,[74]],[183,595,[594]],[78,596,[76]],[184,596,[79]],[184,597,[596]],[79,598,[77]],[185,598,[78]],[185,599,[598]],[186,416,[426]],[186,600,[416]],[187,424,[418]],[187,601,[424]],[188,430,[420]],[188,602,[430]],[189,422,[428]],[189,603,[422]],[190,429,[417]],[190,604,[429]],[191,421,[425]],[191,605,[421]],[192,419,[431]],[192,606,[419]],[193,427,[423]],[193,607,[427]],[114,608,[112]],[194,608,[115]],[194,609,[608]],[115,610,[113]],[195,610,[114]],[195,611,[610]],[118,612,[116]],[196,612,[119]],[196,613,[612]],[119,614,[117]],[197,614,[118]],[197,615,[614]],[198,506,[496]],[198,616,[506]],[199,504,[498]],[199,617,[504]],[200,510,[500]],[200,618,[510]],[201,508,[502]],[201,619,[508]],[202,497,[509]],[202,620,[497]],[203,501,[505]],[203,621,[501]],[204,499,[511]],[204,622,[499]],[205,503,[507]],[205,623,[503]],[10,624,[8]],[206,624,[11]],[206,625,[624]],[11,626,[9]],[207,626,[10]],[207,627,[626]],[14,628,[12]],[208,628,[15]],[208,629,[628]],[15,630,[13]],[209,630,[14]],[209,631,[630]],[210,288,[298]],[210,632,[288]],[211,290,[296]],[211,633,[290]],[212,292,[302]],[212,634,[292]],[213,294,[300]],[213,635,[294]],[214,301,[289]],[214,636,[301]],[215,297,[293]],[215,637,[297]],[216,303,[291]],[216,638,[303]],[217,299,[295]],[217,639,[299]],[50,640,[48]],[218,640,[51]],[218,641,[640]],[51,642,[49]],[219,642,[50]],[219,643,[642]],[54,644,[52]],[220,644,[55]],[220,645,[644]],[55,646,[53]],[221,646,[54]],[221,647,[646]],[222,368,[378]],[222,648,[368]],[223,376,[370]],[223,649,[376]],[224,382,[372]],[224,650,[382]],[225,374,[380]],[225,651,[374]],[226,381,[369]],[226,652,[381]],[227,373,[377]],[227,653,[373]],[228,371,[383]],[228,654,[371]],[229,379,[375]],[229,655,[379]],[82,656,[80]],[230,656,[83]],[230,657,[656]],[83,658,[81]],[231,658,[82]],[231,659,[658]],[86,660,[84]],[232,660,[87]],[232,661,[660]],[87,662,[85]],[233,662,[86]],[233,663,[662]],[234,442,[432]],[234,664,[442]],[235,434,[440]],[235,665,[434]],[236,436,[446]],[236,666,[436]],[237,444,[438]],[237,667,[444]],[238,433,[445]],[238,668,[433]],[239,441,[437]],[239,669,[441]],[240,447,[435]],[240,670,[447]],[241,439,[443]],[241,671,[439]],[106,672,[104]],[242,672,[107]],[242,673,[672]],[107,674,[105]],[243,674,[106]],[243,675,[674]],[110,676,[108]],[244,676,[111]],[244,677,[676]],[111,678,[109]],[245,678,[110]],[245,679,[678]],[246,490,[480]],[246,680,[490]],[247,482,[488]],[247,681,[482]],[248,484,[494]],[248,682,[484]],[249,492,[486]],[249,683,[492]],[250,481,[493]],[250,684,[481]],[251,489,[485]],[251,685,[489]],[252,495,[483]],[252,686,[495]],[253,487,[491]],[253,687,[487]],[98,688,[96]],[254,688,[99]],[254,689,[688]],[99,690,[97]],[255,690,[98]],[255,691,[690]],[102,692,[100]],[256,692,[103]],[256,693,[692]],[103,694,[101]],[257,694,[102]],[257,695,[694]],[258,474,[464]],[258,696,[474]],[259,466,[472]],[259,697,[466]],[260,468,[478]],[260,698,[468]],[261,476,[470]],[261,699,[476]],[262,465,[477]],[262,700,[465]],[263,473,[469]],[263,701,[473]],[264,479,[467]],[264,702,[479]],[265,471,[475]],[265,703,[471]],[90,704,[88]],[266,704,[91]],[266,705,[704]],[91,706,[89]],[267,706,[90]],[267,707,[706]],[94,708,[92]],[268,708,[95]],[268,709,[708]],[95,710,[93]],[269,710,[94]],[269,711,[710]],[270,458,[448]],[270,712,[458]],[271,450,[456]],[271,713,[450]],[272,452,[462]],[272,714,[452]],[273,460,[454]],[273,715,[460]],[274,449,[461]],[274,716,[449]],[275,457,[453]],[275,717,[457]],[276,463,[451]],[276,718,[463]],[277,455,[459]],[277,719,[455]],[58,720,[56]],[278,720,[59]],[278,721,[720]],[59,722,[57]],[279,722,[58]],[279,723,[722]],[62,724,[60]],[280,724,[63]],[280,725,[724]],[63,726,[61]],[281,726,[62]],[281,727,[726]],[282,384,[394]],[282,728,[384]],[283,386,[392]],[283,729,[386]],[284,388,[398]],[284,730,[388]],[285,390,[396]],[285,731,[390]],[286,397,[385]],[286,732,[397]],[287,393,[389]],[287,733,[393]],[288,399,[387]],[288,734,[399]],[289,395,[391]],[289,735,[395]],[290,512,[514]],[290,736,[512]],[290,737,[512]],[291,516,[518]],[291,738,[516]],[291,739,[516]],[292,400,[402]],[292,740,[400]],[293,404,[406]],[293,741,[404]],[294,413,[409]],[294,742,[413]],[295,415,[411]],[295,743,[415]],[296,524,[526]],[296,744,[524]],[297,525,[527]],[297,745,[525]],[298,520,[522]],[298,746,[520]],[299,521,[523]],[299,747,[521]],[300,513,[517]],[300,748,[513]],[301,515,[519]],[301,749,[515]],[302,528,[530]],[302,750,[528]],[302,751,[528]],[303,532,[534]],[303,752,[532]],[303,753,[532]],[304,346,[344]],[304,754,[346]],[305,350,[348]],[305,755,[350]],[306,337,[341]],[306,756,[337]],[307,339,[343]],[307,757,[339]],[308,540,[542]],[308,758,[540]],[309,541,[543]],[309,759,[541]],[310,536,[538]],[310,760,[536]],[311,537,[539]],[311,761,[537]],[312,529,[533]],[312,762,[529]],[313,531,[535]],[313,763,[531]],[314,544,[546]],[314,764,[544]],[314,765,[544]],[315,548,[550]],[315,766,[548]],[315,767,[548]],[316,320,[328]],[316,768,[320]],[317,334,[326]],[317,769,[334]],[318,333,[325]],[318,770,[333]],[319,323,[331]],[319,771,[323]],[320,552,[554]],[320,772,[552]],[321,553,[555]],[321,773,[553]],[322,556,[558]],[322,774,[556]],[323,557,[559]],[323,775,[557]],[324,545,[549]],[324,776,[545]],[325,547,[551]],[325,777,[547]],[326,560,[562]],[326,778,[560]],[326,779,[560]],[327,564,[566]],[327,780,[564]],[327,781,[564]],[328,304,[312]],[328,782,[304]],[329,318,[310]],[329,783,[318]],[330,317,[309]],[330,784,[317]],[331,307,[315]],[331,785,[307]],[332,572,[574]],[332,786,[572]],[333,573,[575]],[333,787,[573]],[334,568,[570]],[334,788,[568]],[335,569,[571]],[335,789,[569]],[336,561,[565]],[336,790,[561]],[337,563,[567]],[337,791,[563]],[338,576,[578]],[338,792,[576]],[338,793,[576]],[339,580,[582]],[339,794,[580]],[339,795,[580]],[340,352,[354]],[340,796,[352]],[341,356,[358]],[341,797,[356]],[342,365,[361]],[342,798,[365]],[343,367,[363]],[343,799,[367]],[344,584,[586]],[344,800,[584]],[345,585,[587]],[345,801,[585]],[346,588,[590]],[346,802,[588]],[347,589,[591]],[347,803,[589]],[348,577,[581]],[348,804,[577]],[349,579,[583]],[349,805,[579]],[350,592,[594]],[350,806,[592]],[350,807,[592]],[351,596,[598]],[351,808,[596]],[351,809,[596]],[352,416,[424]],[352,810,[416]],[353,430,[422]],[353,811,[430]],[354,429,[421]],[354,812,[429]],[355,419,[427]],[355,813,[419]],[356,593,[597]],[356,814,[593]],[357,595,[599]],[357,815,[595]],[358,604,[606]],[358,816,[604]],[359,605,[607]],[359,817,[605]],[360,600,[602]],[360,818,[600]],[361,601,[603]],[361,819,[601]],[362,608,[610]],[362,820,[608]],[362,821,[608]],[363,612,[614]],[363,822,[612]],[363,823,[612]],[364,506,[504]],[364,824,[506]],[365,510,[508]],[365,825,[510]],[366,497,[501]],[366,826,[497]],[367,499,[503]],[367,827,[499]],[368,609,[613]],[368,828,[609]],[369,611,[615]],[369,829,[611]],[370,616,[618]],[370,830,[616]],[371,617,[619]],[371,831,[617]],[372,620,[622]],[372,832,[620]],[373,621,[623]],[373,833,[621]],[374,624,[626]],[374,834,[624]],[374,835,[624]],[375,628,[630]],[375,836,[628]],[375,837,[628]],[376,288,[290]],[376,838,[288]],[377,292,[294]],[377,839,[292]],[378,301,[297]],[378,840,[301]],[379,303,[299]],[379,841,[303]],[380,636,[638]],[380,842,[636]],[381,637,[639]],[381,843,[637]],[382,632,[634]],[382,844,[632]],[383,633,[635]],[383,845,[633]],[384,625,[629]],[384,846,[625]],[385,627,[631]],[385,847,[627]],[386,640,[642]],[386,848,[640]],[386,849,[640]],[387,644,[646]],[387,850,[644]],[387,851,[644]],[388,368,[376]],[388,852,[368]],[389,382,[374]],[389,853,[382]],[390,381,[373]],[390,854,[381]],[391,371,[379]],[391,855,[371]],[392,648,[650]],[392,856,[648]],[393,649,[651]],[393,857,[649]],[394,652,[654]],[394,858,[652]],[395,653,[655]],[395,859,[653]],[396,641,[645]],[396,860,[641]],[397,643,[647]],[397,861,[643]],[398,656,[658]],[398,862,[656]],[398,863,[656]],[399,660,[662]],[399,864,[660]],[399,865,[660]],[400,442,[434]],[400,866,[442]],[401,436,[444]],[401,867,[436]],[402,433,[441]],[402,868,[433]],[403,447,[439]],[403,869,[447]],[404,657,[661]],[404,870,[657]],[405,659,[663]],[405,871,[659]],[406,668,[670]],[406,872,[668]],[407,669,[671]],[407,873,[669]],[408,664,[666]],[408,874,[664]],[409,665,[667]],[409,875,[665]],[410,672,[674]],[410,876,[672]],[410,877,[672]],[411,676,[678]],[411,878,[676]],[411,879,[676]],[412,490,[482]],[412,880,[490]],[413,484,[492]],[413,881,[484]],[414,481,[489]],[414,882,[481]],[415,495,[487]],[415,883,[495]],[416,673,[677]],[416,884,[673]],[417,675,[679]],[417,885,[675]],[418,680,[682]],[418,886,[680]],[419,681,[683]],[419,887,[681]],[420,684,[686]],[420,888,[684]],[421,685,[687]],[421,889,[685]],[422,688,[690]],[422,890,[688]],[422,891,[688]],[423,692,[694]],[423,892,[692]],[423,893,[692]],[424,689,[693]],[424,894,[689]],[425,691,[695]],[425,895,[691]],[426,474,[466]],[426,896,[474]],[427,468,[476]],[427,897,[468]],[428,465,[473]],[428,898,[465]],[429,479,[471]],[429,899,[479]],[430,700,[702]],[430,900,[700]],[431,701,[703]],[431,901,[701]],[432,696,[698]],[432,902,[696]],[433,697,[699]],[433,903,[697]],[434,704,[706]],[434,904,[704]],[434,905,[704]],[435,708,[710]],[435,906,[708]],[435,907,[708]],[436,705,[709]],[436,908,[705]],[437,707,[711]],[437,909,[707]],[438,458,[450]],[438,910,[458]],[439,452,[460]],[439,911,[452]],[440,449,[457]],[440,912,[449]],[441,463,[455]],[441,913,[463]],[442,712,[714]],[442,914,[712]],[443,713,[715]],[443,915,[713]],[444,716,[718]],[444,916,[716]],[445,717,[719]],[445,917,[717]],[446,720,[722]],[446,918,[720]],[446,919,[720]],[447,724,[726]],[447,920,[724]],[447,921,[724]],[448,721,[725]],[448,922,[721]],[449,723,[727]],[449,923,[723]],[450,384,[386]],[450,924,[384]],[451,388,[390]],[451,925,[388]],[452,728,[730]],[452,926,[728]],[453,729,[731]],[453,927,[729]],[454,397,[393]],[454,928,[397]],[455,399,[395]],[455,929,[399]],[456,732,[734]],[456,930,[732]],[457,733,[735]],[457,931,[733]],[458,512,[516]],[458,406,[523]],[458,406,[512]],[458,411,[527]],[458,411,[512]],[458,411,[0]],[458,411,[1]],[458,411,[252]],[458,411,[258]],[459,528,[532]],[459,240,[528]],[459,240,[246]],[459,240,[4]],[459,240,[5]],[460,544,[548]],[460,326,[555]],[460,326,[544]],[460,241,[544]],[460,241,[247]],[460,241,[6]],[460,241,[7]],[461,560,[564]],[461,310,[571]],[461,310,[560]],[461,315,[575]],[461,315,[560]],[461,242,[560]],[461,242,[2]],[461,242,[264]],[461,242,[276]],[462,576,[580]],[462,358,[587]],[462,358,[576]],[462,243,[576]],[462,243,[253]],[462,243,[270]],[462,243,[282]],[463,592,[596]],[463,422,[603]],[463,422,[592]],[463,427,[607]],[463,427,[592]],[463,244,[592]],[463,244,[3]],[463,244,[265]],[463,244,[283]],[464,608,[612]],[464,503,[623]],[464,503,[608]],[464,245,[608]],[464,245,[259]],[464,245,[271]],[464,245,[277]],[465,624,[628]],[465,294,[635]],[465,294,[624]],[465,299,[639]],[465,299,[624]],[465,248,[624]],[465,248,[254]],[465,248,[266]],[465,248,[284]],[466,640,[644]],[466,374,[651]],[466,374,[640]],[466,379,[655]],[466,379,[640]],[466,249,[640]],[466,249,[255]],[466,249,[272]],[466,249,[278]],[467,656,[660]],[467,439,[671]],[467,439,[656]],[467,250,[656]],[467,250,[260]],[467,250,[267]],[467,250,[279]],[468,672,[676]],[468,487,[687]],[468,487,[672]],[468,492,[683]],[468,492,[672]],[468,251,[672]],[468,251,[261]],[468,251,[273]],[468,251,[285]],[469,688,[692]],[469,471,[703]],[469,471,[688]],[469,476,[699]],[469,476,[688]],[469,256,[688]],[469,256,[262]],[469,256,[268]],[469,256,[274]],[470,704,[708]],[470,455,[719]],[470,455,[704]],[470,257,[704]],[470,257,[263]],[470,257,[280]],[470,257,[286]],[471,720,[724]],[471,390,[731]],[471,390,[720]],[471,269,[720]],[471,269,[275]],[471,269,[281]],[471,269,[287]],[472,736,[764]],[470,460,[715]],[472,460,[736]],[473,737,[750]],[469,693,[692]],[469,693,[699]],[469,693,[703]],[473,693,[737]],[474,738,[766]],[470,709,[708]],[470,709,[715]],[470,709,[719]],[474,709,[738]],[475,739,[752]],[469,694,[699]],[469,694,[703]],[475,694,[739]],[476,400,[792]],[468,677,[676]],[468,677,[683]],[468,677,[687]],[476,677,[400]],[477,740,[778]],[467,444,[667]],[477,444,[740]],[478,404,[794]],[468,678,[683]],[468,678,[687]],[478,678,[404]],[479,741,[780]],[467,661,[660]],[467,661,[667]],[467,661,[671]],[479,661,[741]],[480,413,[820]],[466,645,[644]],[466,645,[651]],[466,645,[655]],[480,645,[413]],[481,742,[806]],[465,629,[628]],[465,629,[635]],[465,629,[639]],[481,629,[742]],[482,415,[822]],[466,646,[651]],[466,646,[655]],[482,646,[415]],[483,743,[808]],[465,630,[635]],[465,630,[639]],[483,630,[743]],[484,524,[848]],[464,508,[619]],[484,508,[524]],[485,744,[834]],[463,597,[596]],[463,597,[603]],[463,597,[607]],[485,597,[744]],[486,525,[850]],[464,613,[612]],[464,613,[619]],[464,613,[623]],[486,613,[525]],[487,745,[836]],[463,598,[603]],[463,598,[607]],[487,598,[745]],[488,520,[876]],[462,363,[591]],[488,363,[520]],[489,746,[862]],[461,565,[564]],[461,565,[571]],[461,565,[575]],[489,565,[746]],[490,521,[878]],[462,581,[580]],[462,581,[587]],[462,581,[591]],[490,581,[521]],[491,747,[864]],[461,566,[571]],[461,566,[575]],[491,566,[747]],[492,513,[904]],[460,331,[559]],[492,331,[513]],[493,748,[890]],[459,343,[543]],[493,343,[748]],[494,515,[906]],[460,549,[548]],[460,549,[555]],[460,549,[559]],[494,549,[515]],[495,749,[892]],[459,348,[539]],[495,348,[749]],[496,751,[765]],[471,395,[735]],[496,395,[751]],[497,753,[767]],[471,725,[724]],[471,725,[731]],[471,725,[735]],[497,725,[753]],[498,346,[416]],[468,679,[683]],[468,679,[687]],[498,679,[346]],[499,754,[304]],[466,647,[651]],[466,647,[655]],[499,647,[754]],[500,350,[430]],[468,482,[489]],[468,482,[674]],[500,482,[350]],[501,755,[318]],[466,373,[376]],[466,373,[642]],[501,373,[755]],[502,337,[506]],[467,662,[667]],[467,662,[671]],[502,662,[337]],[503,756,[352]],[465,631,[635]],[465,631,[639]],[503,631,[756]],[504,339,[510]],[467,663,[667]],[467,663,[671]],[504,663,[339]],[505,757,[356]],[465,290,[297]],[465,290,[626]],[505,290,[757]],[506,540,[442]],[464,614,[619]],[464,614,[623]],[506,614,[540]],[507,758,[288]],[462,582,[587]],[462,582,[591]],[507,582,[758]],[508,541,[436]],[464,615,[619]],[464,615,[623]],[508,615,[541]],[509,759,[292]],[462,583,[587]],[462,583,[591]],[509,583,[759]],[510,536,[490]],[463,599,[603]],[463,599,[607]],[510,599,[536]],[511,760,[368]],[461,567,[571]],[461,567,[575]],[511,567,[760]],[512,537,[484]],[463,421,[424]],[463,421,[594]],[512,421,[537]],[513,761,[382]],[461,309,[312]],[461,309,[562]],[513,309,[761]],[514,529,[918]],[515,762,[689]],[458,517,[516]],[458,517,[523]],[458,517,[527]],[515,517,[762]],[516,531,[920]],[517,763,[691]],[458,518,[523]],[458,518,[527]],[517,518,[763]],[518,320,[497]],[468,682,[686]],[468,682,[674]],[518,682,[320]],[519,768,[317]],[465,634,[638]],[465,634,[626]],[519,634,[768]],[520,334,[499]],[468,687,[489]],[468,687,[674]],[468,687,[676]],[468,687,[683]],[468,687,[686]],[520,687,[334]],[521,769,[307]],[465,639,[297]],[465,639,[626]],[465,639,[628]],[465,639,[635]],[465,639,[638]],[521,639,[769]],[522,333,[429]],[467,434,[441]],[467,434,[658]],[522,434,[333]],[523,770,[365]],[466,650,[654]],[466,650,[642]],[523,650,[770]],[524,323,[419]],[467,666,[670]],[467,666,[658]],[524,666,[323]],[525,771,[367]],[466,655,[376]],[466,655,[644]],[466,655,[651]],[466,655,[654]],[525,655,[771]],[526,552,[481]],[464,501,[504]],[464,501,[610]],[526,501,[552]],[527,772,[301]],[461,570,[574]],[461,570,[562]],[527,570,[772]],[528,553,[495]],[464,618,[622]],[464,618,[610]],[528,618,[553]],[529,773,[303]],[461,575,[312]],[461,575,[564]],[461,575,[571]],[461,575,[574]],[529,575,[773]],[530,556,[433]],[463,602,[606]],[463,602,[594]],[530,602,[556]],[531,774,[381]],[462,354,[361]],[462,354,[578]],[531,354,[774]],[532,557,[447]],[463,607,[424]],[463,607,[596]],[463,607,[603]],[463,607,[606]],[532,607,[557]],[533,775,[371]],[462,586,[590]],[462,586,[578]],[533,586,[775]],[534,545,[721]],[535,776,[705]],[536,547,[723]],[537,777,[707]],[538,779,[793]],[471,726,[731]],[471,726,[735]],[538,726,[779]],[539,781,[795]],[471,727,[731]],[471,727,[735]],[539,727,[781]],[540,782,[810]],[470,710,[715]],[470,710,[719]],[540,710,[782]],[541,783,[811]],[470,711,[715]],[470,711,[719]],[541,711,[783]],[542,784,[826]],[469,695,[699]],[469,695,[703]],[542,695,[784]],[543,785,[827]],[469,466,[473]],[469,466,[690]],[543,466,[785]],[544,572,[474]],[464,623,[504]],[464,623,[612]],[464,623,[619]],[464,623,[622]],[544,623,[572]],[545,786,[636]],[460,550,[555]],[460,550,[559]],[545,550,[786]],[546,573,[468]],[546,932,[573]],[547,787,[637]],[460,551,[555]],[460,551,[559]],[547,551,[787]],[548,568,[458]],[548,933,[568]],[549,788,[648]],[459,533,[532]],[459,533,[539]],[459,533,[543]],[549,533,[788]],[550,569,[452]],[550,934,[569]],[551,789,[649]],[459,534,[539]],[459,534,[543]],[551,534,[789]],[552,561,[384]],[553,790,[657]],[458,519,[523]],[458,519,[527]],[553,519,[790]],[554,563,[388]],[555,791,[659]],[458,402,[409]],[458,402,[514]],[555,402,[791]],[556,796,[824]],[470,450,[457]],[470,450,[706]],[556,450,[796]],[557,797,[825]],[470,714,[718]],[470,714,[706]],[557,714,[797]],[558,798,[812]],[469,698,[702]],[469,698,[690]],[558,698,[798]],[559,799,[813]],[469,703,[473]],[469,703,[690]],[469,703,[692]],[469,703,[699]],[469,703,[702]],[559,703,[799]],[560,584,[449]],[560,935,[584]],[561,800,[632]],[459,535,[539]],[459,535,[543]],[561,535,[800]],[562,585,[463]],[562,936,[585]],[563,801,[633]],[459,341,[344]],[459,341,[530]],[563,341,[801]],[564,588,[465]],[564,937,[588]],[565,802,[652]],[460,325,[328]],[460,325,[546]],[565,325,[802]],[566,589,[479]],[566,938,[589]],[567,803,[653]],[460,554,[558]],[460,554,[546]],[567,554,[803]],[568,577,[728]],[569,804,[673]],[458,522,[526]],[458,522,[514]],[569,522,[804]],[570,579,[729]],[571,805,[675]],[458,527,[409]],[458,527,[514]],[458,527,[516]],[458,527,[523]],[458,527,[526]],[571,527,[805]],[572,807,[821]],[471,386,[393]],[471,386,[722]],[572,386,[807]],[573,809,[823]],[471,730,[734]],[471,730,[722]],[573,730,[809]],[574,593,[397]],[575,814,[625]],[575,939,[814]],[576,595,[399]],[577,815,[627]],[577,940,[815]],[578,604,[700]],[462,591,[361]],[462,591,[578]],[462,591,[580]],[462,591,[587]],[462,591,[590]],[578,591,[604]],[579,816,[668]],[460,559,[328]],[460,559,[548]],[460,559,[555]],[460,559,[558]],[579,559,[816]],[580,605,[701]],[580,941,[605]],[581,817,[669]],[581,942,[817]],[582,600,[712]],[582,943,[600]],[583,818,[680]],[459,538,[542]],[459,538,[530]],[583,538,[818]],[584,601,[713]],[584,944,[601]],[585,819,[681]],[459,543,[344]],[459,543,[532]],[459,543,[539]],[459,543,[542]],[585,543,[819]],[586,609,[732]],[587,828,[641]],[587,945,[828]],[588,611,[733]],[589,829,[643]],[589,946,[829]],[590,616,[716]],[590,947,[616]],[591,830,[664]],[591,948,[830]],[592,617,[717]],[592,949,[617]],[593,831,[665]],[593,950,[831]],[594,620,[696]],[594,951,[620]],[595,832,[684]],[595,952,[832]],[596,621,[697]],[596,953,[621]],[597,833,[685]],[597,954,[833]],[598,835,[849]],[471,735,[393]],[471,735,[722]],[471,735,[724]],[471,735,[731]],[471,735,[734]],[598,735,[835]],[599,837,[851]],[599,955,[837]],[600,838,[866]],[470,719,[457]],[470,719,[706]],[470,719,[708]],[470,719,[715]],[470,719,[718]],[600,719,[838]],[601,839,[867]],[601,956,[839]],[602,840,[882]],[602,957,[840]],[603,841,[883]],[603,958,[841]],[604,842,[896]],[604,959,[842]],[605,843,[897]],[605,960,[843]],[606,844,[912]],[467,671,[441]],[467,671,[658]],[467,671,[660]],[467,671,[667]],[467,671,[670]],[606,671,[844]],[607,845,[913]],[607,961,[845]],[608,846,[928]],[609,847,[929]],[610,852,[880]],[610,962,[852]],[611,853,[881]],[611,963,[853]],[612,854,[868]],[612,964,[854]],[613,855,[869]],[613,965,[855]],[614,856,[910]],[614,966,[856]],[615,857,[911]],[615,967,[857]],[616,858,[898]],[616,968,[858]],[617,859,[899]],[617,969,[859]],[618,860,[930]],[619,861,[931]],[620,863,[877]],[620,970,[863]],[621,865,[879]],[621,971,[865]],[622,870,[924]],[623,871,[925]],[624,872,[900]],[624,972,[872]],[625,873,[901]],[625,973,[873]],[626,874,[916]],[626,974,[874]],[627,875,[917]],[627,975,[875]],[628,884,[926]],[629,885,[927]],[630,886,[914]],[630,976,[886]],[631,887,[915]],[631,977,[887]],[632,888,[902]],[632,978,[888]],[633,889,[903]],[633,979,[889]],[634,891,[905]],[635,893,[907]],[636,894,[919]],[637,895,[921]],[638,908,[922]],[639,909,[923]],[640,753,[69]],[640,753,[70]],[641,837,[809]],[641,407,[837]],[642,865,[781]],[643,863,[779]],[644,835,[807]],[644,401,[835]],[645,751,[64]],[645,751,[67]],[642,412,[865]],[643,410,[863]],[646,725,[68]],[646,725,[71]],[647,955,[386]],[647,405,[955]],[648,970,[727]],[649,971,[726]],[650,735,[730]],[650,403,[735]],[651,395,[65]],[651,395,[66]],[648,414,[970]],[649,408,[971]],[652,738,[37]],[652,738,[38]],[653,839,[797]],[654,853,[783]],[654,342,[853]],[655,852,[782]],[655,336,[852]],[656,838,[796]],[657,736,[32]],[657,736,[35]],[656,349,[838]],[653,347,[839]],[658,709,[36]],[658,709,[39]],[659,956,[450]],[660,962,[711]],[660,340,[962]],[661,963,[710]],[661,338,[963]],[662,719,[714]],[663,460,[33]],[663,460,[34]],[662,351,[719]],[659,345,[956]],[664,739,[29]],[664,739,[30]],[665,855,[799]],[665,327,[855]],[666,841,[785]],[667,840,[784]],[668,854,[798]],[668,321,[854]],[669,737,[24]],[669,737,[27]],[666,332,[841]],[667,330,[840]],[670,694,[28]],[670,694,[31]],[671,965,[698]],[672,957,[466]],[672,324,[957]],[673,958,[695]],[673,322,[958]],[674,964,[703]],[675,693,[25]],[675,693,[26]],[674,335,[964]],[671,329,[965]],[676,404,[21]],[676,404,[22]],[677,843,[334]],[677,311,[843]],[678,857,[350]],[679,856,[346]],[680,842,[320]],[680,305,[842]],[681,400,[16]],[681,400,[19]],[678,316,[857]],[679,314,[856]],[682,678,[20]],[682,678,[23]],[683,960,[682]],[684,966,[482]],[684,308,[966]],[685,967,[679]],[685,306,[967]],[686,959,[687]],[687,677,[17]],[687,677,[18]],[686,319,[959]],[683,313,[960]],[688,741,[45]],[688,741,[46]],[689,859,[323]],[689,359,[859]],[690,845,[339]],[691,844,[337]],[692,858,[333]],[692,353,[858]],[693,740,[40]],[693,740,[43]],[690,364,[845]],[691,362,[844]],[694,661,[44]],[694,661,[47]],[695,969,[434]],[695,357,[969]],[696,671,[663]],[697,961,[662]],[698,968,[666]],[698,355,[968]],[699,444,[41]],[699,444,[42]],[696,366,[671]],[697,360,[961]],[700,415,[77]],[700,415,[78]],[701,873,[771]],[701,423,[873]],[702,887,[755]],[703,886,[754]],[704,872,[770]],[704,417,[872]],[705,413,[72]],[705,413,[75]],[702,428,[887]],[703,426,[886]],[706,646,[76]],[706,646,[79]],[707,973,[650]],[708,976,[373]],[708,420,[976]],[709,977,[647]],[709,418,[977]],[710,972,[655]],[711,645,[73]],[711,645,[74]],[710,431,[972]],[707,425,[973]],[712,743,[117]],[712,743,[118]],[713,889,[769]],[714,875,[757]],[714,502,[875]],[715,874,[756]],[715,496,[874]],[716,888,[768]],[717,742,[112]],[717,742,[115]],[716,509,[888]],[713,507,[889]],[718,630,[116]],[718,630,[119]],[719,979,[634]],[720,974,[290]],[720,500,[974]],[721,975,[631]],[721,498,[975]],[722,978,[639]],[723,629,[113]],[723,629,[114]],[722,511,[978]],[719,505,[979]],[724,525,[13]],[724,525,[14]],[725,573,[553]],[725,295,[573]],[726,585,[541]],[727,584,[540]],[728,572,[552]],[728,289,[572]],[729,524,[8]],[729,524,[11]],[726,300,[585]],[727,298,[584]],[730,613,[12]],[730,613,[15]],[731,932,[501]],[731,293,[932]],[732,935,[615]],[733,936,[614]],[734,623,[618]],[734,291,[623]],[735,508,[9]],[735,508,[10]],[732,302,[935]],[733,296,[936]],[736,745,[53]],[736,745,[54]],[737,589,[557]],[737,375,[589]],[738,569,[537]],[739,568,[536]],[740,588,[556]],[740,369,[588]],[741,744,[48]],[741,744,[51]],[738,380,[569]],[739,378,[568]],[742,598,[52]],[742,598,[55]],[743,938,[602]],[744,933,[421]],[744,372,[933]],[745,934,[599]],[745,370,[934]],[746,937,[607]],[747,597,[49]],[747,597,[50]],[746,383,[937]],[743,377,[938]],[748,521,[85]],[748,521,[86]],[749,605,[775]],[750,617,[759]],[750,438,[617]],[751,616,[758]],[751,432,[616]],[752,604,[774]],[753,520,[80]],[753,520,[83]],[752,445,[604]],[749,443,[605]],[754,581,[84]],[754,581,[87]],[755,941,[354]],[755,437,[941]],[756,947,[583]],[757,949,[582]],[758,591,[586]],[758,435,[591]],[759,363,[81]],[759,363,[82]],[756,446,[947]],[757,440,[949]],[760,747,[109]],[760,747,[110]],[761,621,[773]],[762,601,[761]],[762,486,[601]],[763,600,[760]],[763,480,[600]],[764,620,[772]],[765,746,[104]],[765,746,[107]],[764,493,[620]],[761,491,[621]],[766,566,[108]],[766,566,[111]],[767,953,[570]],[767,485,[953]],[768,943,[309]],[769,944,[567]],[770,951,[575]],[770,483,[951]],[771,565,[105]],[771,565,[106]],[768,494,[943]],[769,488,[944]],[772,515,[101]],[772,515,[102]],[773,817,[803]],[774,833,[787]],[774,470,[833]],[775,832,[786]],[775,464,[832]],[776,816,[802]],[777,513,[96]],[777,513,[99]],[776,477,[816]],[773,475,[817]],[778,549,[100]],[778,549,[103]],[779,942,[325]],[779,469,[942]],[780,952,[551]],[781,954,[550]],[782,559,[554]],[782,467,[559]],[783,331,[97]],[783,331,[98]],[780,478,[952]],[781,472,[954]],[784,749,[93]],[784,749,[94]],[785,831,[801]],[786,819,[789]],[786,454,[819]],[787,818,[788]],[787,448,[818]],[788,830,[800]],[789,748,[88]],[789,748,[91]],[788,461,[830]],[785,459,[831]],[790,348,[92]],[790,348,[95]],[791,950,[535]],[791,453,[950]],[792,538,[534]],[793,543,[533]],[794,948,[341]],[794,451,[948]],[795,343,[89]],[795,343,[90]],[792,462,[538]],[793,456,[543]],[796,763,[61]],[796,763,[62]],[797,829,[815]],[797,391,[829]],[798,805,[791]],[799,804,[790]],[800,828,[814]],[800,385,[828]],[801,762,[56]],[801,762,[59]],[798,396,[805]],[799,394,[804]],[802,518,[60]],[802,518,[63]],[803,946,[939]],[803,389,[946]],[804,522,[402]],[805,527,[519]],[806,945,[940]],[806,387,[945]],[807,517,[57]],[807,517,[58]],[804,398,[522]],[805,392,[527]],[808,624,[704]],[808,624,[254]],[808,624,[284]],[809,640,[672]],[809,272,[640]],[810,688,[720]],[810,919,[921]],[810,919,[720]],[810,919,[688]],[811,576,[455]],[811,576,[253]],[811,576,[282]],[812,560,[592]],[812,264,[560]],[813,544,[390]],[813,544,[6]],[813,544,[7]],[826,422,[608]],[826,422,[3]],[826,656,[487]],[827,310,[358]],[827,310,[2]],[827,294,[374]],[818,512,[326]],[818,764,[766]],[818,764,[326]],[818,764,[512]],[828,764,[1]],[829,512,[0]],[830,427,[471]],[830,427,[262]],[830,427,[265]],[820,406,[528]],[830,406,[246]],[830,299,[492]],[831,528,[476]],[831,528,[4]],[831,528,[5]],[831,315,[503]],[831,315,[276]],[831,379,[439]],[1,246,[1]],[1,246,[0]],[1,246,[1]],[1,246,[2]],[1,246,[3]],[1,246,[4]],[1,246,[5]],[1,246,[6]],[1,246,[7]],[1,246,[8]],[1,246,[9]],[1,246,[10]],[1,246,[11]],[1,246,[12]],[1,246,[13]],[1,246,[14]],[1,246,[15]],[1,246,[16]],[1,246,[17]],[1,246,[18]],[1,246,[19]],[1,246,[20]],[1,246,[21]],[1,246,[22]],[1,246,[23]],[1,246,[24]],[1,246,[25]],[1,246,[26]],[1,246,[27]],[1,246,[28]],[1,246,[29]],[1,246,[30]],[1,246,[31]],[1,246,[32]],[1,246,[33]],[1,246,[34]],[1,246,[35]],[1,246,[36]],[1,246,[37]],[1,246,[38]],[1,246,[39]],[1,246,[40]],[1,246,[41]],[1,246,[42]],[1,246,[43]],[1,246,[44]],[1,246,[45]],[1,246,[46]],[1,246,[47]],[1,246,[48]],[1,246,[49]],[1,246,[50]],[1,246,[51]],[1,246,[52]],[1,246,[53]],[1,246,[54]],[1,246,[55]],[1,246,[56]],[1,246,[57]],[1,246,[58]],[1,246,[59]],[1,246,[60]],[1,246,[61]],[1,246,[62]],[1,246,[63]],[1,246,[64]],[1,246,[65]],[1,246,[66]],[1,246,[67]],[1,246,[68]],[1,246,[69]],[1,246,[70]],[1,246,[71]],[1,246,[72]],[1,246,[73]],[1,246,[74]],[1,246,[75]],[1,246,[76]],[1,246,[77]],[1,246,[78]],[1,246,[79]],[1,246,[80]],[1,246,[81]],[1,246,[82]],[1,246,[83]],[1,246,[84]],[1,246,[85]],[1,246,[86]],[1,246,[87]],[1,246,[88]],[1,246,[89]],[1,246,[90]],[1,246,[91]],[1,246,[92]],[1,246,[93]],[1,246,[94]],[1,246,[95]],[1,246,[96]],[1,246,[97]],[1,246,[98]],[1,246,[99]],[1,246,[100]],[1,246,[101]],[1,246,[102]],[1,246,[103]],[1,246,[104]],[1,246,[105]],[1,246,[106]],[1,246,[107]],[1,246,[108]],[1,246,[109]],[1,246,[110]],[1,246,[111]],[1,246,[112]],[1,246,[113]],[1,246,[114]],[1,246,[115]],[1,246,[116]],[1,246,[117]],[1,246,[118]],[1,246,[119]],[1,247,[1]],[1,247,[16]],[1,247,[17]],[1,247,[18]],[1,247,[19]],[1,247,[20]],[1,247,[21]],[1,247,[22]],[1,247,[23]],[1,247,[24]],[1,247,[25]],[1,247,[26]],[1,247,[27]],[1,247,[28]],[1,247,[29]],[1,247,[30]],[1,247,[31]],[1,247,[32]],[1,247,[33]],[1,247,[34]],[1,247,[35]],[1,247,[36]],[1,247,[37]],[1,247,[38]],[1,247,[39]],[1,247,[40]],[1,247,[41]],[1,247,[42]],[1,247,[43]],[1,247,[44]],[1,247,[45]],[1,247,[46]],[1,247,[47]],[1,247,[64]],[1,247,[65]],[1,247,[66]],[1,247,[67]],[1,247,[68]],[1,247,[69]],[1,247,[70]],[1,247,[71]],[1,247,[72]],[1,247,[73]],[1,247,[74]],[1,247,[75]],[1,247,[76]],[1,247,[77]],[1,247,[78]],[1,247,[79]],[1,247,[112]],[1,247,[113]],[1,247,[114]],[1,247,[115]],[1,247,[116]],[1,247,[117]],[1,247,[118]],[1,247,[119]],[1,252,[2]],[1,252,[8]],[1,252,[9]],[1,252,[10]],[1,252,[11]],[1,252,[12]],[1,252,[13]],[1,252,[14]],[1,252,[15]],[1,252,[24]],[1,252,[25]],[1,252,[26]],[1,252,[27]],[1,252,[28]],[1,252,[29]],[1,252,[30]],[1,252,[31]],[1,252,[32]],[1,252,[33]],[1,252,[34]],[1,252,[35]],[1,252,[36]],[1,252,[37]],[1,252,[38]],[1,252,[39]],[1,252,[48]],[1,252,[49]],[1,252,[50]],[1,252,[51]],[1,252,[52]],[1,252,[53]],[1,252,[54]],[1,252,[55]],[1,252,[64]],[1,252,[65]],[1,252,[66]],[1,252,[67]],[1,252,[68]],[1,252,[69]],[1,252,[70]],[1,252,[71]],[1,252,[80]],[1,252,[81]],[1,252,[82]],[1,252,[83]],[1,252,[84]],[1,252,[85]],[1,252,[86]],[1,252,[87]],[1,252,[104]],[1,252,[105]],[1,252,[106]],[1,252,[107]],[1,252,[108]],[1,252,[109]],[1,252,[110]],[1,252,[111]],[1,253,[2]],[1,253,[8]],[1,253,[9]],[1,253,[10]],[1,253,[11]],[1,253,[12]],[1,253,[13]],[1,253,[14]],[1,253,[15]],[1,253,[16]],[1,253,[17]],[1,253,[18]],[1,253,[19]],[1,253,[20]],[1,253,[21]],[1,253,[22]],[1,253,[23]],[1,253,[40]],[1,253,[41]],[1,253,[42]],[1,253,[43]],[1,253,[44]],[1,253,[45]],[1,253,[46]],[1,253,[47]],[1,253,[48]],[1,253,[49]],[1,253,[50]],[1,253,[51]],[1,253,[52]],[1,253,[53]],[1,253,[54]],[1,253,[55]],[1,253,[64]],[1,253,[65]],[1,253,[66]],[1,253,[67]],[1,253,[68]],[1,253,[69]],[1,253,[70]],[1,253,[71]],[1,253,[88]],[1,253,[89]],[1,253,[90]],[1,253,[91]],[1,253,[92]],[1,253,[93]],[1,253,[94]],[1,253,[95]],[1,253,[96]],[1,253,[97]],[1,253,[98]],[1,253,[99]],[1,253,[100]],[1,253,[101]],[1,253,[102]],[1,253,[103]],[1,254,[2]],[1,254,[8]],[1,254,[9]],[1,254,[10]],[1,254,[11]],[1,254,[12]],[1,254,[13]],[1,254,[14]],[1,254,[15]],[1,254,[16]],[1,254,[17]],[1,254,[18]],[1,254,[19]],[1,254,[20]],[1,254,[21]],[1,254,[22]],[1,254,[23]],[1,254,[32]],[1,254,[33]],[1,254,[34]],[1,254,[35]],[1,254,[36]],[1,254,[37]],[1,254,[38]],[1,254,[39]],[1,254,[56]],[1,254,[57]],[1,254,[58]],[1,254,[59]],[1,254,[60]],[1,254,[61]],[1,254,[62]],[1,254,[63]],[1,254,[72]],[1,254,[73]],[1,254,[74]],[1,254,[75]],[1,254,[76]],[1,254,[77]],[1,254,[78]],[1,254,[79]],[1,254,[80]],[1,254,[81]],[1,254,[82]],[1,254,[83]],[1,254,[84]],[1,254,[85]],[1,254,[86]],[1,254,[87]],[1,254,[96]],[1,254,[97]],[1,254,[98]],[1,254,[99]],[1,254,[100]],[1,254,[101]],[1,254,[102]],[1,254,[103]],[1,255,[2]],[1,255,[1]],[1,255,[2]],[1,255,[4]],[1,255,[7]],[1,255,[9]],[1,255,[10]],[1,255,[12]],[1,255,[15]],[1,255,[16]],[1,255,[17]],[1,255,[22]],[1,255,[23]],[1,255,[24]],[1,255,[26]],[1,255,[29]],[1,255,[31]],[1,255,[32]],[1,255,[33]],[1,255,[38]],[1,255,[39]],[1,255,[40]],[1,255,[42]],[1,255,[45]],[1,255,[47]],[1,255,[48]],[1,255,[49]],[1,255,[50]],[1,255,[51]],[1,255,[56]],[1,255,[58]],[1,255,[60]],[1,255,[62]],[1,255,[64]],[1,255,[65]],[1,255,[70]],[1,255,[71]],[1,255,[72]],[1,255,[75]],[1,255,[76]],[1,255,[79]],[1,255,[80]],[1,255,[81]],[1,255,[84]],[1,255,[85]],[1,255,[88]],[1,255,[90]],[1,255,[92]],[1,255,[94]],[1,255,[96]],[1,255,[97]],[1,255,[100]],[1,255,[101]],[1,255,[104]],[1,255,[106]],[1,255,[108]],[1,255,[110]],[1,258,[3]],[1,258,[0]],[1,258,[2]],[1,258,[4]],[1,258,[6]],[1,258,[8]],[1,258,[9]],[1,258,[14]],[1,258,[15]],[1,258,[17]],[1,258,[18]],[1,258,[20]],[1,258,[23]],[1,258,[24]],[1,258,[25]],[1,258,[28]],[1,258,[29]],[1,258,[32]],[1,258,[33]],[1,258,[36]],[1,258,[37]],[1,258,[40]],[1,258,[41]],[1,258,[42]],[1,258,[43]],[1,258,[48]],[1,258,[50]],[1,258,[53]],[1,258,[55]],[1,258,[56]],[1,258,[57]],[1,258,[60]],[1,258,[61]],[1,258,[64]],[1,258,[65]],[1,258,[68]],[1,258,[69]],[1,258,[72]],[1,258,[73]],[1,258,[76]],[1,258,[77]],[1,258,[80]],[1,258,[83]],[1,258,[84]],[1,258,[87]],[1,258,[88]],[1,258,[89]],[1,258,[92]],[1,258,[93]],[1,258,[96]],[1,258,[97]],[1,258,[100]],[1,258,[101]],[1,258,[112]],[1,258,[114]],[1,258,[116]],[1,258,[118]],[1,259,[3]],[1,259,[0]],[1,259,[1]],[1,259,[4]],[1,259,[5]],[1,259,[8]],[1,259,[9]],[1,259,[12]],[1,259,[13]],[1,259,[16]],[1,259,[17]],[1,259,[20]],[1,259,[21]],[1,259,[24]],[1,259,[25]],[1,259,[26]],[1,259,[27]],[1,259,[33]],[1,259,[34]],[1,259,[36]],[1,259,[39]],[1,259,[40]],[1,259,[41]],[1,259,[44]],[1,259,[45]],[1,259,[48]],[1,259,[49]],[1,259,[52]],[1,259,[53]],[1,259,[56]],[1,259,[57]],[1,259,[58]],[1,259,[59]],[1,259,[64]],[1,259,[65]],[1,259,[66]],[1,259,[67]],[1,259,[72]],[1,259,[73]],[1,259,[76]],[1,259,[77]],[1,259,[80]],[1,259,[81]],[1,259,[84]],[1,259,[85]],[1,259,[96]],[1,259,[99]],[1,259,[100]],[1,259,[103]],[1,259,[104]],[1,259,[105]],[1,259,[108]],[1,259,[109]],[1,259,[112]],[1,259,[113]],[1,259,[116]],[1,259,[117]],[1,260,[3]],[1,260,[0]],[1,260,[1]],[1,260,[2]],[1,260,[3]],[1,260,[8]],[1,260,[9]],[1,260,[10]],[1,260,[11]],[1,260,[16]],[1,260,[17]],[1,260,[18]],[1,260,[19]],[1,260,[24]],[1,260,[25]],[1,260,[26]],[1,260,[27]],[1,260,[32]],[1,260,[33]],[1,260,[34]],[1,260,[35]],[1,260,[40]],[1,260,[41]],[1,260,[42]],[1,260,[43]],[1,260,[48]],[1,260,[49]],[1,260,[50]],[1,260,[51]],[1,260,[65]],[1,260,[66]],[1,260,[68]],[1,260,[71]],[1,260,[72]],[1,260,[73]],[1,260,[74]],[1,260,[75]],[1,260,[80]],[1,260,[81]],[1,260,[82]],[1,260,[83]],[1,260,[88]],[1,260,[89]],[1,260,[90]],[1,260,[91]],[1,260,[96]],[1,260,[97]],[1,260,[98]],[1,260,[99]],[1,260,[104]],[1,260,[105]],[1,260,[106]],[1,260,[107]],[1,260,[112]],[1,260,[113]],[1,260,[114]],[1,260,[115]]],"B":[[458,127,[411]],[458,176,[411]],[458,177,[411]],[458,178,[411]],[458,179,[411]],[515,180,[411]],[515,181,[411]],[515,182,[411]],[887,183,[411]],[459,122,[240]],[459,123,[240]],[459,208,[240]],[459,209,[240]],[459,210,[240]],[459,211,[240]],[493,212,[240]],[493,213,[240]],[493,214,[240]],[919,215,[240]],[460,216,[241]],[460,217,[241]],[460,218,[241]],[460,219,[241]],[492,220,[241]],[492,221,[241]],[492,222,[241]],[927,223,[241]],[461,224,[242]],[461,225,[242]],[461,226,[242]],[461,227,[242]],[489,228,[242]],[489,229,[242]],[489,230,[242]],[935,231,[242]],[462,126,[243]],[462,200,[243]],[462,201,[243]],[462,202,[243]],[462,203,[243]],[488,204,[243]],[488,205,[243]],[488,206,[243]],[911,207,[243]],[463,168,[244]],[463,169,[244]],[463,170,[244]],[463,171,[244]],[485,172,[244]],[485,173,[244]],[485,174,[244]],[879,175,[244]],[464,121,[245]],[464,124,[245]],[464,128,[245]],[464,129,[245]],[464,130,[245]],[464,131,[245]],[484,132,[245]],[484,133,[245]],[484,134,[245]],[839,135,[245]],[465,232,[248]],[465,233,[248]],[465,234,[248]],[465,235,[248]],[481,236,[248]],[481,237,[248]],[481,238,[248]],[943,239,[248]],[466,192,[249]],[466,193,[249]],[466,194,[249]],[466,195,[249]],[480,196,[249]],[480,197,[249]],[480,198,[249]],[903,199,[249]],[467,120,[250]],[467,125,[250]],[467,160,[250]],[467,161,[250]],[467,162,[250]],[467,163,[250]],[477,164,[250]],[477,165,[250]],[477,166,[250]],[871,167,[250]],[468,136,[251]],[468,137,[251]],[468,138,[251]],[468,139,[251]],[476,140,[251]],[476,141,[251]],[476,142,[251]],[847,143,[251]],[469,144,[256]],[469,145,[256]],[469,146,[256]],[469,147,[256]],[473,148,[256]],[473,149,[256]],[473,150,[256]],[855,151,[256]],[470,152,[257]],[470,153,[257]],[470,154,[257]],[470,155,[257]],[472,156,[257]],[472,157,[257]],[472,158,[257]],[863,159,[257]],[471,184,[269]],[471,185,[269]],[471,186,[269]],[471,187,[269]],[496,188,[269]],[496,189,[269]],[496,190,[269]],[895,191,[269]],[514,217,[529]],[514,218,[529]],[777,221,[529]],[777,222,[529]],[516,216,[531]],[516,219,[531]],[783,220,[531]],[927,223,[531]],[534,209,[545]],[534,210,[545]],[789,213,[545]],[789,214,[545]],[535,177,[776]],[535,178,[776]],[801,181,[776]],[801,182,[776]],[536,208,[547]],[536,211,[547]],[795,212,[547]],[919,215,[547]],[537,176,[777]],[537,179,[777]],[807,180,[777]],[887,183,[777]],[552,201,[561]],[552,202,[561]],[753,205,[561]],[753,206,[561]],[554,200,[563]],[554,203,[563]],[759,204,[563]],[911,207,[563]],[568,225,[577]],[568,226,[577]],[765,229,[577]],[765,230,[577]],[570,224,[579]],[570,227,[579]],[771,228,[579]],[935,231,[579]],[574,129,[593]],[574,130,[593]],[729,133,[593]],[729,134,[593]],[576,128,[595]],[576,131,[595]],[735,132,[595]],[839,135,[595]],[586,169,[609]],[586,170,[609]],[741,173,[609]],[741,174,[609]],[588,168,[611]],[588,171,[611]],[747,172,[611]],[879,175,[611]],[608,193,[846]],[608,194,[846]],[705,197,[846]],[705,198,[846]],[609,192,[847]],[609,195,[847]],[711,196,[847]],[903,199,[847]],[618,233,[860]],[618,234,[860]],[717,237,[860]],[717,238,[860]],[619,232,[861]],[619,235,[861]],[723,236,[861]],[943,239,[861]],[622,137,[870]],[622,138,[870]],[681,141,[870]],[681,142,[870]],[623,136,[871]],[623,139,[871]],[687,140,[871]],[847,143,[871]],[628,161,[884]],[628,162,[884]],[693,165,[884]],[693,166,[884]],[629,160,[885]],[629,163,[885]],[699,164,[885]],[871,167,[885]],[634,185,[891]],[634,186,[891]],[645,189,[891]],[645,190,[891]],[635,184,[893]],[635,187,[893]],[651,188,[893]],[895,191,[893]],[636,153,[894]],[636,154,[894]],[657,157,[894]],[657,158,[894]],[637,152,[895]],[637,155,[895]],[663,156,[895]],[863,159,[895]],[638,145,[908]],[638,146,[908]],[669,149,[908]],[669,150,[908]],[639,144,[909]],[639,147,[909]],[675,148,[909]],[855,151,[909]],[640,184,[753]],[640,187,[753]],[645,189,[751]],[645,190,[751]],[646,185,[725]],[646,186,[725]],[651,188,[395]],[895,191,[395]],[652,152,[738]],[652,155,[738]],[657,157,[736]],[657,158,[736]],[658,153,[709]],[658,154,[709]],[663,156,[460]],[863,159,[460]],[664,144,[739]],[664,147,[739]],[669,149,[737]],[669,150,[737]],[670,145,[694]],[670,146,[694]],[675,148,[693]],[855,151,[693]],[676,136,[404]],[676,139,[404]],[681,141,[400]],[681,142,[400]],[682,137,[678]],[682,138,[678]],[687,140,[677]],[847,143,[677]],[688,160,[741]],[688,163,[741]],[693,165,[740]],[693,166,[740]],[694,161,[661]],[694,162,[661]],[699,164,[444]],[871,167,[444]],[700,192,[415]],[700,195,[415]],[705,197,[413]],[705,198,[413]],[706,193,[646]],[706,194,[646]],[711,196,[645]],[903,199,[645]],[712,232,[743]],[712,235,[743]],[717,237,[742]],[717,238,[742]],[718,233,[630]],[718,234,[630]],[723,236,[629]],[943,239,[629]],[724,128,[525]],[724,131,[525]],[729,133,[524]],[729,134,[524]],[730,129,[613]],[730,130,[613]],[735,132,[508]],[839,135,[508]],[736,168,[745]],[736,171,[745]],[741,173,[744]],[741,174,[744]],[742,169,[598]],[742,170,[598]],[747,172,[597]],[879,175,[597]],[748,200,[521]],[748,203,[521]],[753,205,[520]],[753,206,[520]],[754,201,[581]],[754,202,[581]],[759,204,[363]],[911,207,[363]],[760,224,[747]],[760,227,[747]],[765,229,[746]],[765,230,[746]],[766,225,[566]],[766,226,[566]],[771,228,[565]],[935,231,[565]],[772,216,[515]],[772,219,[515]],[777,221,[513]],[777,222,[513]],[778,217,[549]],[778,218,[549]],[783,220,[331]],[927,223,[331]],[784,208,[749]],[784,211,[749]],[789,213,[748]],[789,214,[748]],[790,209,[348]],[790,210,[348]],[795,212,[343]],[919,215,[343]],[796,176,[763]],[796,179,[763]],[801,181,[762]],[801,182,[762]],[802,177,[518]],[802,178,[518]],[807,180,[517]],[887,183,[517]],[808,120,[624]],[829,125,[624]],[811,121,[576]],[828,124,[576]],[813,122,[544]],[827,123,[544]],[830,126,[427]],[831,127,[528]],[824,120,[272]],[824,120,[688]],[825,121,[264]],[825,121,[919]],[826,122,[422]],[826,122,[656]],[827,123,[310]],[827,123,[294]],[828,124,[640]],[828,124,[764]],[829,125,[512]],[829,125,[560]],[830,126,[406]],[830,126,[299]],[831,127,[379]],[831,127,[315]],[832,128,[295]],[832,128,[585]],[833,129,[293]],[833,129,[935]],[834,130,[936]],[834,130,[291]],[835,131,[584]],[835,131,[289]],[836,132,[623]],[836,132,[302]],[837,133,[300]],[837,133,[572]],[838,134,[298]],[838,134,[573]],[839,135,[932]],[839,135,[296]],[840,136,[311]],[840,136,[857]],[841,137,[960]],[841,137,[308]],[842,138,[306]],[842,138,[959]],[843,139,[856]],[843,139,[305]],[844,140,[966]],[844,140,[319]],[845,141,[316]],[845,141,[842]],[846,142,[314]],[846,142,[843]],[847,143,[967]],[847,143,[313]],[848,144,[327]],[848,144,[841]],[849,145,[965]],[849,145,[324]],[850,146,[322]],[850,146,[964]],[851,147,[840]],[851,147,[321]],[852,148,[957]],[852,148,[335]],[853,149,[854]],[853,149,[332]],[854,150,[855]],[854,150,[330]],[855,151,[958]],[855,151,[329]],[856,152,[839]],[856,152,[342]],[857,153,[956]],[857,153,[340]],[858,154,[338]],[858,154,[719]],[859,155,[336]],[859,155,[838]],[860,156,[962]],[860,156,[351]],[861,157,[853]],[861,157,[349]],[862,158,[852]],[862,158,[347]],[863,159,[963]],[863,159,[345]],[864,160,[359]],[864,160,[845]],[865,161,[357]],[865,161,[671]],[866,162,[355]],[866,162,[961]],[867,163,[844]],[867,163,[353]],[868,164,[968]],[868,164,[366]],[869,165,[858]],[869,165,[364]],[870,166,[859]],[870,166,[362]],[871,167,[360]],[871,167,[969]],[872,168,[375]],[872,168,[569]],[873,169,[938]],[873,169,[372]],[874,170,[370]],[874,170,[937]],[875,171,[568]],[875,171,[369]],[876,172,[383]],[876,172,[933]],[877,173,[588]],[877,173,[380]],[878,174,[589]],[878,174,[378]],[879,175,[377]],[879,175,[934]],[880,176,[805]],[880,176,[391]],[881,177,[389]],[881,177,[522]],[882,178,[527]],[882,178,[387]],[883,179,[804]],[883,179,[385]],[884,180,[945]],[884,180,[398]],[885,181,[828]],[885,181,[396]],[886,182,[829]],[886,182,[394]],[887,183,[946]],[887,183,[392]],[888,184,[407]],[888,184,[865]],[889,185,[405]],[889,185,[970]],[890,186,[403]],[890,186,[971]],[891,187,[863]],[891,187,[401]],[892,188,[735]],[892,188,[414]],[893,189,[835]],[893,189,[412]],[894,190,[837]],[894,190,[410]],[895,191,[408]],[895,191,[955]],[896,192,[423]],[896,192,[887]],[897,193,[973]],[897,193,[420]],[898,194,[418]],[898,194,[972]],[899,195,[886]],[899,195,[417]],[900,196,[976]],[900,196,[431]],[901,197,[872]],[901,197,[428]],[902,198,[873]],[902,198,[426]],[903,199,[977]],[903,199,[425]],[904,200,[605]],[904,200,[438]],[905,201,[437]],[905,201,[947]],[906,202,[949]],[906,202,[435]],[907,203,[432]],[907,203,[604]],[908,204,[591]],[908,204,[446]],[909,205,[617]],[909,205,[445]],[910,206,[616]],[910,206,[443]],[911,207,[941]],[911,207,[440]],[912,208,[831]],[912,208,[454]],[913,209,[453]],[913,209,[538]],[914,210,[451]],[914,210,[543]],[915,211,[448]],[915,211,[830]],[916,212,[948]],[916,212,[462]],[917,213,[819]],[917,213,[461]],[918,214,[818]],[918,214,[459]],[919,215,[456]],[919,215,[950]],[920,216,[817]],[920,216,[470]],[921,217,[469]],[921,217,[952]],[922,218,[954]],[922,218,[467]],[923,219,[464]],[923,219,[816]],[924,220,[559]],[924,220,[478]],[925,221,[477]],[925,221,[833]],[926,222,[475]],[926,222,[832]],[927,223,[942]],[927,223,[472]],[928,224,[621]],[928,224,[486]],[929,225,[485]],[929,225,[943]],[930,226,[944]],[930,226,[483]],[931,227,[480]],[931,227,[620]],[932,228,[951]],[932,228,[494]],[933,229,[601]],[933,229,[493]],[934,230,[600]],[934,230,[491]],[935,231,[953]],[935,231,[488]],[936,232,[889]],[936,232,[502]],[937,233,[979]],[937,233,[500]],[938,234,[498]],[938,234,[978]],[939,235,[496]],[939,235,[888]],[940,236,[974]],[940,236,[511]],[941,237,[875]],[941,237,[509]],[942,238,[874]],[942,238,[507]],[943,239,[975]],[943,239,[505]]],"C":[[1,260,[0]],[1,260,[1]],[1,260,[2]],[1,260,[3]],[1,260,[8]],[1,260,[9]],[1,260,[10]],[1,260,[11]],[1,260,[16]],[1,260,[17]],[1,260,[18]],[1,260,[19]],[1,260,[24]],[1,260,[25]],[1,260,[26]],[1,260,[27]],[1,260,[32]],[1,260,[33]],[1,260,[34]],[1,260,[35]],[1,260,[40]],[1,260,[41]],[1,260,[42]],[1,260,[43]],[1,260,[48]],[1,260,[49]],[1,260,[50]],[1,260,[51]],[1,260,[65]],[1,260,[66]],[1,260,[68]],[1,260,[71]],[1,260,[72]],[1,260,[73]],[1,260,[74]],[1,260,[75]],[1,260,[80]],[1,260,[81]],[1,260,[82]],[1,260,[83]],[1,260,[88]],[1,260,[89]],[1,260,[90]],[1,260,[91]],[1,260,[96]],[1,260,[97]],[1,260,[98]],[1,260,[99]],[1,260,[104]],[1,260,[105]],[1,260,[106]],[1,260,[107]],[1,260,[112]],[1,260,[113]],[1,260,[114]],[1,260,[115]],[1,260,[3]],[1,259,[0]],[1,259,[1]],[1,259,[4]],[1,259,[5]],[1,259,[8]],[1,259,[9]],[1,259,[12]],[1,259,[13]],[1,259,[16]],[1,259,[17]],[1,259,[20]],[1,259,[21]],[1,259,[24]],[1,259,[25]],[1,259,[26]],[1,259,[27]],[1,259,[33]],[1,259,[34]],[1,259,[36]],[1,259,[39]],[1,259,[40]],[1,259,[41]],[1,259,[44]],[1,259,[45]],[1,259,[48]],[1,259,[49]],[1,259,[52]],[1,259,[53]],[1,259,[56]],[1,259,[57]],[1,259,[58]],[1,259,[59]],[1,259,[64]],[1,259,[65]],[1,259,[66]],[1,259,[67]],[1,259,[72]],[1,259,[73]],[1,259,[76]],[1,259,[77]],[1,259,[80]],[1,259,[81]],[1,259,[84]],[1,259,[85]],[1,259,[96]],[1,259,[99]],[1,259,[100]],[1,259,[103]],[1,259,[104]],[1,259,[105]],[1,259,[108]],[1,259,[109]],[1,259,[112]],[1,259,[113]],[1,259,[116]],[1,259,[117]],[1,259,[3]],[1,258,[0]],[1,258,[2]],[1,258,[4]],[1,258,[6]],[1,258,[8]],[1,258,[9]],[1,258,[14]],[1,258,[15]],[1,258,[17]],[1,258,[18]],[1,258,[20]],[1,258,[23]],[1,258,[24]],[1,258,[25]],[1,258,[28]],[1,258,[29]],[1,258,[32]],[1,258,[33]],[1,258,[36]],[1,258,[37]],[1,258,[40]],[1,258,[41]],[1,258,[42]],[1,258,[43]],[1,258,[48]],[1,258,[50]],[1,258,[53]],[1,258,[55]],[1,258,[56]],[1,258,[57]],[1,258,[60]],[1,258,[61]],[1,258,[64]],[1,258,[65]],[1,258,[68]],[1,258,[69]],[1,258,[72]],[1,258,[73]],[1,258,[76]],[1,258,[77]],[1,258,[80]],[1,258,[83]],[1,258,[84]],[1,258,[87]],[1,258,[88]],[1,258,[89]],[1,258,[92]],[1,258,[93]],[1,258,[96]],[1,258,[97]],[1,258,[100]],[1,258,[101]],[1,258,[112]],[1,258,[114]],[1,258,[116]],[1,258,[118]],[1,258,[3]],[1,255,[1]],[1,255,[2]],[1,255,[4]],[1,255,[7]],[1,255,[9]],[1,255,[10]],[1,255,[12]],[1,255,[15]],[1,255,[16]],[1,255,[17]],[1,255,[22]],[1,255,[23]],[1,255,[24]],[1,255,[26]],[1,255,[29]],[1,255,[31]],[1,255,[32]],[1,255,[33]],[1,255,[38]],[1,255,[39]],[1,255,[40]],[1,255,[42]],[1,255,[45]],[1,255,[47]],[1,255,[48]],[1,255,[49]],[1,255,[50]],[1,255,[51]],[1,255,[56]],[1,255,[58]],[1,255,[60]],[1,255,[62]],[1,255,[64]],[1,255,[65]],[1,255,[70]],[1,255,[71]],[1,255,[72]],[1,255,[75]],[1,255,[76]],[1,255,[79]],[1,255,[80]],[1,255,[81]],[1,255,[84]],[1,255,[85]],[1,255,[88]],[1,255,[90]],[1,255,[92]],[1,255,[94]],[1,255,[96]],[1,255,[97]],[1,255,[100]],[1,255,[101]],[1,255,[104]],[1,255,[106]],[1,255,[108]],[1,255,[110]],[1,255,[2]],[1,254,[8]],[1,254,[9]],[1,254,[10]],[1,254,[11]],[1,254,[12]],[1,254,[13]],[1,254,[14]],[1,254,[15]],[1,254,[16]],[1,254,[17]],[1,254,[18]],[1,254,[19]],[1,254,[20]],[1,254,[21]],[1,254,[22]],[1,254,[23]],[1,254,[32]],[1,254,[33]],[1,254,[34]],[1,254,[35]],[1,254,[36]],[1,254,[37]],[1,254,[38]],[1,254,[39]],[1,254,[56]],[1,254,[57]],[1,254,[58]],[1,254,[59]],[1,254,[60]],[1,254,[61]],[1,254,[62]],[1,254,[63]],[1,254,[72]],[1,254,[73]],[1,254,[74]],[1,254,[75]],[1,254,[76]],[1,254,[77]],[1,254,[78]],[1,254,[79]],[1,254,[80]],[1,254,[81]],[1,254,[82]],[1,254,[83]],[1,254,[84]],[1,254,[85]],[1,254,[86]],[1,254,[87]],[1,254,[96]],[1,254,[97]],[1,254,[98]],[1,254,[99]],[1,254,[100]],[1,254,[101]],[1,254,[102]],[1,254,[103]],[1,254,[2]],[1,253,[8]],[1,253,[9]],[1,253,[10]],[1,253,[11]],[1,253,[12]],[1,253,[13]],[1,253,[14]],[1,253,[15]],[1,253,[16]],[1,253,[17]],[1,253,[18]],[1,253,[19]],[1,253,[20]],[1,253,[21]],[1,253,[22]],[1,253,[23]],[1,253,[40]],[1,253,[41]],[1,253,[42]],[1,253,[43]],[1,253,[44]],[1,253,[45]],[1,253,[46]],[1,253,[47]],[1,253,[48]],[1,253,[49]],[1,253,[50]],[1,253,[51]],[1,253,[52]],[1,253,[53]],[1,253,[54]],[1,253,[55]],[1,253,[64]],[1,253,[65]],[1,253,[66]],[1,253,[67]],[1,253,[68]],[1,253,[69]],[1,253,[70]],[1,253,[71]],[1,253,[88]],[1,253,[89]],[1,253,[90]],[1,253,[91]],[1,253,[92]],[1,253,[93]],[1,253,[94]],[1,253,[95]],[1,253,[96]],[1,253,[97]],[1,253,[98]],[1,253,[99]],[1,253,[100]],[1,253,[101]],[1,253,[102]],[1,253,[103]],[1,253,[2]],[1,252,[8]],[1,252,[9]],[1,252,[10]],[1,252,[11]],[1,252,[12]],[1,252,[13]],[1,252,[14]],[1,252,[15]],[1,252,[24]],[1,252,[25]],[1,252,[26]],[1,252,[27]],[1,252,[28]],[1,252,[29]],[1,252,[30]],[1,252,[31]],[1,252,[32]],[1,252,[33]],[1,252,[34]],[1,252,[35]],[1,252,[36]],[1,252,[37]],[1,252,[38]],[1,252,[39]],[1,252,[48]],[1,252,[49]],[1,252,[50]],[1,252,[51]],[1,252,[52]],[1,252,[53]],[1,252,[54]],[1,252,[55]],[1,252,[64]],[1,252,[65]],[1,252,[66]],[1,252,[67]],[1,252,[68]],[1,252,[69]],[1,252,[70]],[1,252,[71]],[1,252,[80]],[1,252,[81]],[1,252,[82]],[1,252,[83]],[1,252,[84]],[1,252,[85]],[1,252,[86]],[1,252,[87]],[1,252,[104]],[1,252,[105]],[1,252,[106]],[1,252,[107]],[1,252,[108]],[1,252,[109]],[1,252,[110]],[1,252,[111]],[1,252,[2]],[1,247,[16]],[1,247,[17]],[1,247,[18]],[1,247,[19]],[1,247,[20]],[1,247,[21]],[1,247,[22]],[1,247,[23]],[1,247,[24]],[1,247,[25]],[1,247,[26]],[1,247,[27]],[1,247,[28]],[1,247,[29]],[1,247,[30]],[1,247,[31]],[1,247,[32]],[1,247,[33]],[1,247,[34]],[1,247,[35]],[1,247,[36]],[1,247,[37]],[1,247,[38]],[1,247,[39]],[1,247,[40]],[1,247,[41]],[1,247,[42]],[1,247,[43]],[1,247,[44]],[1,247,[45]],[1,247,[46]],[1,247,[47]],[1,247,[64]],[1,247,[65]],[1,247,[66]],[1,247,[67]],[1,247,[68]],[1,247,[69]],[1,247,[70]],[1,247,[71]],[1,247,[72]],[1,247,[73]],[1,247,[74]],[1,247,[75]],[1,247,[76]],[1,247,[77]],[1,247,[78]],[1,247,[79]],[1,247,[112]],[1,247,[113]],[1,247,[114]],[1,247,[115]],[1,247,[116]],[1,247,[117]],[1,247,[118]],[1,247,[119]],[1,247,[1]],[1,246,[0]],[1,246,[1]],[1,246,[2]],[1,246,[3]],[1,246,[4]],[1,246,[5]],[1,246,[6]],[1,246,[7]],[1,246,[8]],[1,246,[9]],[1,246,[10]],[1,246,[11]],[1,246,[12]],[1,246,[13]],[1,246,[14]],[1,246,[15]],[1,246,[16]],[1,246,[17]],[1,246,[18]],[1,246,[19]],[1,246,[20]],[1,246,[21]],[1,246,[22]],[1,246,[23]],[1,246,[24]],[1,246,[25]],[1,246,[26]],[1,246,[27]],[1,246,[28]],[1,246,[29]],[1,246,[30]],[1,246,[31]],[1,246,[32]],[1,246,[33]],[1,246,[34]],[1,246,[35]],[1,246,[36]],[1,246,[37]],[1,246,[38]],[1,246,[39]],[1,246,[40]],[1,246,[41]],[1,246,[42]],[1,246,[43]],[1,246,[44]],[1,246,[45]],[1,246,[46]],[1,246,[47]],[1,246,[48]],[1,246,[49]],[1,246,[50]],[1,246,[51]],[1,246,[52]],[1,246,[53]],[1,246,[54]],[1,246,[55]],[1,246,[56]],[1,246,[57]],[1,246,[58]],[1,246,[59]],[1,246,[60]],[1,246,[61]],[1,246,[62]],[1,246,[63]],[1,246,[64]],[1,246,[65]],[1,246,[66]],[1,246,[67]],[1,246,[68]],[1,246,[69]],[1,246,[70]],[1,246,[71]],[1,246,[72]],[1,246,[73]],[1,246,[74]],[1,246,[75]],[1,246,[76]],[1,246,[77]],[1,246,[78]],[1,246,[79]],[1,246,[80]],[1,246,[81]],[1,246,[82]],[1,246,[83]],[1,246,[84]],[1,246,[85]],[1,246,[86]],[1,246,[87]],[1,246,[88]],[1,246,[89]],[1,246,[90]],[1,246,[91]],[1,246,[92]],[1,246,[93]],[1,246,[94]],[1,246,[95]],[1,246,[96]],[1,246,[97]],[1,246,[98]],[1,246,[99]],[1,246,[100]],[1,246,[101]],[1,246,[102]],[1,246,[103]],[1,246,[104]],[1,246,[105]],[1,246,[106]],[1,246,[107]],[1,246,[108]],[1,246,[109]],[1,246,[110]],[1,246,[111]],[1,246,[112]],[1,246,[113]],[1,246,[114]],[1,246,[115]],[1,246,[116]],[1,246,[117]],[1,246,[118]],[1,246,[119]],[1,246,[1]],[1,379,[439]],[1,315,[276]],[1,315,[503]],[1,528,[5]],[1,528,[4]],[1,528,[476]],[1,299,[492]],[1,406,[246]],[1,406,[528]],[1,427,[265]],[1,427,[262]],[1,427,[471]],[1,512,[0]],[1,764,[512]],[1,764,[1]],[1,764,[766]],[1,764,[326]],[1,512,[326]],[1,294,[374]],[1,310,[2]],[1,310,[358]],[1,656,[487]],[1,422,[3]],[1,422,[608]],[1,544,[7]],[1,544,[6]],[1,544,[390]],[1,264,[560]],[1,560,[592]],[1,576,[282]],[1,576,[253]],[1,576,[455]],[1,919,[688]],[1,919,[921]],[1,919,[720]],[1,688,[720]],[1,272,[640]],[1,640,[672]],[1,624,[284]],[1,624,[254]],[1,624,[704]],[1,392,[527]],[1,398,[522]],[1,517,[58]],[1,517,[57]],[1,387,[945]],[1,945,[940]],[1,527,[519]],[1,522,[402]],[1,389,[946]],[1,946,[939]],[1,518,[63]],[1,518,[60]],[1,394,[804]],[1,396,[805]],[1,762,[59]],[1,762,[56]],[1,385,[828]],[1,828,[814]],[1,804,[790]],[1,805,[791]],[1,391,[829]],[1,829,[815]],[1,763,[62]],[1,763,[61]],[1,456,[543]],[1,462,[538]],[1,343,[90]],[1,343,[89]],[1,451,[948]],[1,948,[341]],[1,543,[533]],[1,538,[534]],[1,453,[950]],[1,950,[535]],[1,348,[95]],[1,348,[92]],[1,459,[831]],[1,461,[830]],[1,748,[91]],[1,748,[88]],[1,830,[800]],[1,448,[818]],[1,818,[788]],[1,454,[819]],[1,819,[789]],[1,831,[801]],[1,749,[94]],[1,749,[93]],[1,472,[954]],[1,478,[952]],[1,331,[98]],[1,331,[97]],[1,467,[559]],[1,559,[554]],[1,954,[550]],[1,952,[551]],[1,469,[942]],[1,942,[325]],[1,549,[103]],[1,549,[100]],[1,475,[817]],[1,477,[816]],[1,513,[99]],[1,513,[96]],[1,816,[802]],[1,464,[832]],[1,832,[786]],[1,470,[833]],[1,833,[787]],[1,817,[803]],[1,515,[102]],[1,515,[101]],[1,488,[944]],[1,494,[943]],[1,565,[106]],[1,565,[105]],[1,483,[951]],[1,951,[575]],[1,944,[567]],[1,943,[309]],[1,485,[953]],[1,953,[570]],[1,566,[111]],[1,566,[108]],[1,491,[621]],[1,493,[620]],[1,746,[107]],[1,746,[104]],[1,620,[772]],[1,480,[600]],[1,600,[760]],[1,486,[601]],[1,601,[761]],[1,621,[773]],[1,747,[110]],[1,747,[109]],[1,440,[949]],[1,446,[947]],[1,363,[82]],[1,363,[81]],[1,435,[591]],[1,591,[586]],[1,949,[582]],[1,947,[583]],[1,437,[941]],[1,941,[354]],[1,581,[87]],[1,581,[84]],[1,443,[605]],[1,445,[604]],[1,520,[83]],[1,520,[80]],[1,604,[774]],[1,432,[616]],[1,616,[758]],[1,438,[617]],[1,617,[759]],[1,605,[775]],[1,521,[86]],[1,521,[85]],[1,377,[938]],[1,383,[937]],[1,597,[50]],[1,597,[49]],[1,937,[607]],[1,370,[934]],[1,934,[599]],[1,372,[933]],[1,933,[421]],[1,938,[602]],[1,598,[55]],[1,598,[52]],[1,378,[568]],[1,380,[569]],[1,744,[51]],[1,744,[48]],[1,369,[588]],[1,588,[556]],[1,568,[536]],[1,569,[537]],[1,375,[589]],[1,589,[557]],[1,745,[54]],[1,745,[53]],[1,296,[936]],[1,302,[935]],[1,508,[10]],[1,508,[9]],[1,291,[623]],[1,623,[618]],[1,936,[614]],[1,935,[615]],[1,293,[932]],[1,932,[501]],[1,613,[15]],[1,613,[12]],[1,298,[584]],[1,300,[585]],[1,524,[11]],[1,524,[8]],[1,289,[572]],[1,572,[552]],[1,584,[540]],[1,585,[541]],[1,295,[573]],[1,573,[553]],[1,525,[14]],[1,525,[13]],[1,505,[979]],[1,511,[978]],[1,629,[114]],[1,629,[113]],[1,978,[639]],[1,498,[975]],[1,975,[631]],[1,500,[974]],[1,974,[290]],[1,979,[634]],[1,630,[119]],[1,630,[116]],[1,507,[889]],[1,509,[888]],[1,742,[115]],[1,742,[112]],[1,888,[768]],[1,496,[874]],[1,874,[756]],[1,502,[875]],[1,875,[757]],[1,889,[769]],[1,743,[118]],[1,743,[117]],[1,425,[973]],[1,431,[972]],[1,645,[74]],[1,645,[73]],[1,972,[655]],[1,418,[977]],[1,977,[647]],[1,420,[976]],[1,976,[373]],[1,973,[650]],[1,646,[79]],[1,646,[76]],[1,426,[886]],[1,428,[887]],[1,413,[75]],[1,413,[72]],[1,417,[872]],[1,872,[770]],[1,886,[754]],[1,887,[755]],[1,423,[873]],[1,873,[771]],[1,415,[78]],[1,415,[77]],[1,360,[961]],[1,366,[671]],[1,444,[42]],[1,444,[41]],[1,355,[968]],[1,968,[666]],[1,961,[662]],[1,671,[663]],[1,357,[969]],[1,969,[434]],[1,661,[47]],[1,661,[44]],[1,362,[844]],[1,364,[845]],[1,740,[43]],[1,740,[40]],[1,353,[858]],[1,858,[333]],[1,844,[337]],[1,845,[339]],[1,359,[859]],[1,859,[323]],[1,741,[46]],[1,741,[45]],[1,313,[960]],[1,319,[959]],[1,677,[18]],[1,677,[17]],[1,959,[687]],[1,306,[967]],[1,967,[679]],[1,308,[966]],[1,966,[482]],[1,960,[682]],[1,678,[23]],[1,678,[20]],[1,314,[856]],[1,316,[857]],[1,400,[19]],[1,400,[16]],[1,305,[842]],[1,842,[320]],[1,856,[346]],[1,857,[350]],[1,311,[843]],[1,843,[334]],[1,404,[22]],[1,404,[21]],[1,329,[965]],[1,335,[964]],[1,693,[26]],[1,693,[25]],[1,964,[703]],[1,322,[958]],[1,958,[695]],[1,324,[957]],[1,957,[466]],[1,965,[698]],[1,694,[31]],[1,694,[28]],[1,330,[840]],[1,332,[841]],[1,737,[27]],[1,737,[24]],[1,321,[854]],[1,854,[798]],[1,840,[784]],[1,841,[785]],[1,327,[855]],[1,855,[799]],[1,739,[30]],[1,739,[29]],[1,345,[956]],[1,351,[719]],[1,460,[34]],[1,460,[33]],[1,719,[714]],[1,338,[963]],[1,963,[710]],[1,340,[962]],[1,962,[711]],[1,956,[450]],[1,709,[39]],[1,709,[36]],[1,347,[839]],[1,349,[838]],[1,736,[35]],[1,736,[32]],[1,838,[796]],[1,336,[852]],[1,852,[782]],[1,342,[853]],[1,853,[783]],[1,839,[797]],[1,738,[38]],[1,738,[37]],[1,408,[971]],[1,414,[970]],[1,395,[66]],[1,395,[65]],[1,403,[735]],[1,735,[730]],[1,971,[726]],[1,970,[727]],[1,405,[955]],[1,955,[386]],[1,725,[71]],[1,725,[68]],[1,410,[863]],[1,412,[865]],[1,751,[67]],[1,751,[64]],[1,401,[835]],[1,835,[807]],[1,863,[779]],[1,865,[781]],[1,407,[837]],[1,837,[809]],[1,753,[70]],[1,753,[69]],[1,909,[923]],[1,908,[922]],[1,895,[921]],[1,894,[919]],[1,893,[907]],[1,891,[905]],[1,979,[889]],[1,889,[903]],[1,978,[888]],[1,888,[902]],[1,977,[887]],[1,887,[915]],[1,976,[886]],[1,886,[914]],[1,885,[927]],[1,884,[926]],[1,975,[875]],[1,875,[917]],[1,974,[874]],[1,874,[916]],[1,973,[873]],[1,873,[901]],[1,972,[872]],[1,872,[900]],[1,871,[925]],[1,870,[924]],[1,971,[865]],[1,865,[879]],[1,970,[863]],[1,863,[877]],[1,861,[931]],[1,860,[930]],[1,969,[859]],[1,859,[899]],[1,968,[858]],[1,858,[898]],[1,967,[857]],[1,857,[911]],[1,966,[856]],[1,856,[910]],[1,965,[855]],[1,855,[869]],[1,964,[854]],[1,854,[868]],[1,963,[853]],[1,853,[881]],[1,962,[852]],[1,852,[880]],[1,847,[929]],[1,846,[928]],[1,961,[845]],[1,845,[913]],[1,671,[844]],[1,671,[441]],[1,671,[658]],[1,671,[660]],[1,671,[667]],[1,671,[670]],[1,844,[912]],[1,960,[843]],[1,843,[897]],[1,959,[842]],[1,842,[896]],[1,958,[841]],[1,841,[883]],[1,957,[840]],[1,840,[882]],[1,956,[839]],[1,839,[867]],[1,719,[838]],[1,719,[457]],[1,719,[706]],[1,719,[708]],[1,719,[715]],[1,719,[718]],[1,838,[866]],[1,955,[837]],[1,837,[851]],[1,735,[835]],[1,735,[393]],[1,735,[722]],[1,735,[724]],[1,735,[731]],[1,735,[734]],[1,835,[849]],[1,954,[833]],[1,833,[685]],[1,953,[621]],[1,621,[697]],[1,952,[832]],[1,832,[684]],[1,951,[620]],[1,620,[696]],[1,950,[831]],[1,831,[665]],[1,949,[617]],[1,617,[717]],[1,948,[830]],[1,830,[664]],[1,947,[616]],[1,616,[716]],[1,946,[829]],[1,829,[643]],[1,611,[733]],[1,945,[828]],[1,828,[641]],[1,609,[732]],[1,543,[819]],[1,543,[344]],[1,543,[532]],[1,543,[539]],[1,543,[542]],[1,819,[681]],[1,944,[601]],[1,601,[713]],[1,538,[818]],[1,538,[542]],[1,538,[530]],[1,818,[680]],[1,943,[600]],[1,600,[712]],[1,942,[817]],[1,817,[669]],[1,941,[605]],[1,605,[701]],[1,559,[816]],[1,559,[328]],[1,559,[548]],[1,559,[555]],[1,559,[558]],[1,816,[668]],[1,591,[604]],[1,591,[361]],[1,591,[578]],[1,591,[580]],[1,591,[587]],[1,591,[590]],[1,604,[700]],[1,940,[815]],[1,815,[627]],[1,595,[399]],[1,939,[814]],[1,814,[625]],[1,593,[397]],[1,730,[809]],[1,730,[734]],[1,730,[722]],[1,809,[823]],[1,386,[807]],[1,386,[393]],[1,386,[722]],[1,807,[821]],[1,527,[805]],[1,527,[409]],[1,527,[514]],[1,527,[516]],[1,527,[523]],[1,527,[526]],[1,805,[675]],[1,579,[729]],[1,522,[804]],[1,522,[526]],[1,522,[514]],[1,804,[673]],[1,577,[728]],[1,554,[803]],[1,554,[558]],[1,554,[546]],[1,803,[653]],[1,938,[589]],[1,589,[479]],[1,325,[802]],[1,325,[328]],[1,325,[546]],[1,802,[652]],[1,937,[588]],[1,588,[465]],[1,341,[801]],[1,341,[344]],[1,341,[530]],[1,801,[633]],[1,936,[585]],[1,585,[463]],[1,535,[800]],[1,535,[539]],[1,535,[543]],[1,800,[632]],[1,935,[584]],[1,584,[449]],[1,703,[799]],[1,703,[473]],[1,703,[690]],[1,703,[692]],[1,703,[699]],[1,703,[702]],[1,799,[813]],[1,698,[798]],[1,698,[702]],[1,698,[690]],[1,798,[812]],[1,714,[797]],[1,714,[718]],[1,714,[706]],[1,797,[825]],[1,450,[796]],[1,450,[457]],[1,450,[706]],[1,796,[824]],[1,402,[791]],[1,402,[409]],[1,402,[514]],[1,791,[659]],[1,563,[388]],[1,519,[790]],[1,519,[523]],[1,519,[527]],[1,790,[657]],[1,561,[384]],[1,534,[789]],[1,534,[539]],[1,534,[543]],[1,789,[649]],[1,934,[569]],[1,569,[452]],[1,533,[788]],[1,533,[532]],[1,533,[539]],[1,533,[543]],[1,788,[648]],[1,933,[568]],[1,568,[458]],[1,551,[787]],[1,551,[555]],[1,551,[559]],[1,787,[637]],[1,932,[573]],[1,573,[468]],[1,550,[786]],[1,550,[555]],[1,550,[559]],[1,786,[636]],[1,623,[572]],[1,623,[504]],[1,623,[612]],[1,623,[619]],[1,623,[622]],[1,572,[474]],[1,466,[785]],[1,466,[473]],[1,466,[690]],[1,785,[827]],[1,695,[784]],[1,695,[699]],[1,695,[703]],[1,784,[826]],[1,711,[783]],[1,711,[715]],[1,711,[719]],[1,783,[811]],[1,710,[782]],[1,710,[715]],[1,710,[719]],[1,782,[810]],[1,727,[781]],[1,727,[731]],[1,727,[735]],[1,781,[795]],[1,726,[779]],[1,726,[731]],[1,726,[735]],[1,779,[793]],[1,777,[707]],[1,547,[723]],[1,776,[705]],[1,545,[721]],[1,586,[775]],[1,586,[590]],[1,586,[578]],[1,775,[371]],[1,607,[557]],[1,607,[424]],[1,607,[596]],[1,607,[603]],[1,607,[606]],[1,557,[447]],[1,354,[774]],[1,354,[361]],[1,354,[578]],[1,774,[381]],[1,602,[556]],[1,602,[606]],[1,602,[594]],[1,556,[433]],[1,575,[773]],[1,575,[312]],[1,575,[564]],[1,575,[571]],[1,575,[574]],[1,773,[303]],[1,618,[553]],[1,618,[622]],[1,618,[610]],[1,553,[495]],[1,570,[772]],[1,570,[574]],[1,570,[562]],[1,772,[301]],[1,501,[552]],[1,501,[504]],[1,501,[610]],[1,552,[481]],[1,655,[771]],[1,655,[376]],[1,655,[644]],[1,655,[651]],[1,655,[654]],[1,771,[367]],[1,666,[323]],[1,666,[670]],[1,666,[658]],[1,323,[419]],[1,650,[770]],[1,650,[654]],[1,650,[642]],[1,770,[365]],[1,434,[333]],[1,434,[441]],[1,434,[658]],[1,333,[429]],[1,639,[769]],[1,639,[297]],[1,639,[626]],[1,639,[628]],[1,639,[635]],[1,639,[638]],[1,769,[307]],[1,687,[334]],[1,687,[489]],[1,687,[674]],[1,687,[676]],[1,687,[683]],[1,687,[686]],[1,334,[499]],[1,634,[768]],[1,634,[638]],[1,634,[626]],[1,768,[317]],[1,682,[320]],[1,682,[686]],[1,682,[674]],[1,320,[497]],[1,518,[763]],[1,518,[523]],[1,518,[527]],[1,763,[691]],[1,531,[920]],[1,517,[762]],[1,517,[516]],[1,517,[523]],[1,517,[527]],[1,762,[689]],[1,529,[918]],[1,309,[761]],[1,309,[312]],[1,309,[562]],[1,761,[382]],[1,421,[537]],[1,421,[424]],[1,421,[594]],[1,537,[484]],[1,567,[760]],[1,567,[571]],[1,567,[575]],[1,760,[368]],[1,599,[536]],[1,599,[603]],[1,599,[607]],[1,536,[490]],[1,583,[759]],[1,583,[587]],[1,583,[591]],[1,759,[292]],[1,615,[541]],[1,615,[619]],[1,615,[623]],[1,541,[436]],[1,582,[758]],[1,582,[587]],[1,582,[591]],[1,758,[288]],[1,614,[540]],[1,614,[619]],[1,614,[623]],[1,540,[442]],[1,290,[757]],[1,290,[297]],[1,290,[626]],[1,757,[356]],[1,663,[339]],[1,663,[667]],[1,663,[671]],[1,339,[510]],[1,631,[756]],[1,631,[635]],[1,631,[639]],[1,756,[352]],[1,662,[337]],[1,662,[667]],[1,662,[671]],[1,337,[506]],[1,373,[755]],[1,373,[376]],[1,373,[642]],[1,755,[318]],[1,482,[350]],[1,482,[489]],[1,482,[674]],[1,350,[430]],[1,647,[754]],[1,647,[651]],[1,647,[655]],[1,754,[304]],[1,679,[346]],[1,679,[683]],[1,679,[687]],[1,346,[416]],[1,725,[753]],[1,725,[724]],[1,725,[731]],[1,725,[735]],[1,753,[767]],[1,395,[751]],[1,395,[735]],[1,751,[765]],[1,348,[749]],[1,348,[539]],[1,749,[892]],[1,549,[515]],[1,549,[548]],[1,549,[555]],[1,549,[559]],[1,515,[906]],[1,343,[748]],[1,343,[543]],[1,748,[890]],[1,331,[513]],[1,331,[559]],[1,513,[904]],[1,566,[747]],[1,566,[571]],[1,566,[575]],[1,747,[864]],[1,581,[521]],[1,581,[580]],[1,581,[587]],[1,581,[591]],[1,521,[878]],[1,565,[746]],[1,565,[564]],[1,565,[571]],[1,565,[575]],[1,746,[862]],[1,363,[520]],[1,363,[591]],[1,520,[876]],[1,598,[745]],[1,598,[603]],[1,598,[607]],[1,745,[836]],[1,613,[525]],[1,613,[612]],[1,613,[619]],[1,613,[623]],[1,525,[850]],[1,597,[744]],[1,597,[596]],[1,597,[603]],[1,597,[607]],[1,744,[834]],[1,508,[524]],[1,508,[619]],[1,524,[848]],[1,630,[743]],[1,630,[635]],[1,630,[639]],[1,743,[808]],[1,646,[415]],[1,646,[651]],[1,646,[655]],[1,415,[822]],[1,629,[742]],[1,629,[628]],[1,629,[635]],[1,629,[639]],[1,742,[806]],[1,645,[413]],[1,645,[644]],[1,645,[651]],[1,645,[655]],[1,413,[820]],[1,661,[741]],[1,661,[660]],[1,661,[667]],[1,661,[671]],[1,741,[780]],[1,678,[404]],[1,678,[683]],[1,678,[687]],[1,404,[794]],[1,444,[740]],[1,444,[667]],[1,740,[778]],[1,677,[400]],[1,677,[676]],[1,677,[683]],[1,677,[687]],[1,400,[792]],[1,694,[739]],[1,694,[699]],[1,694,[703]],[1,739,[752]],[1,709,[738]],[1,709,[708]],[1,709,[715]],[1,709,[719]],[1,738,[766]],[1,693,[737]],[1,693,[692]],[1,693,[699]],[1,693,[703]],[1,737,[750]],[1,460,[736]],[1,460,[715]],[1,736,[764]],[1,269,[287]],[1,269,[281]],[1,269,[275]],[1,269,[720]],[1,390,[720]],[1,390,[731]],[1,720,[724]],[1,257,[286]],[1,257,[280]],[1,257,[263]],[1,257,[704]],[1,455,[704]],[1,455,[719]],[1,704,[708]],[1,256,[274]],[1,256,[268]],[1,256,[262]],[1,256,[688]],[1,476,[688]],[1,476,[699]],[1,471,[688]],[1,471,[703]],[1,688,[692]],[1,251,[285]],[1,251,[273]],[1,251,[261]],[1,251,[672]],[1,492,[672]],[1,492,[683]],[1,487,[672]],[1,487,[687]],[1,672,[676]],[1,250,[279]],[1,250,[267]],[1,250,[260]],[1,250,[656]],[1,439,[656]],[1,439,[671]],[1,656,[660]],[1,249,[278]],[1,249,[272]],[1,249,[255]],[1,249,[640]],[1,379,[640]],[1,379,[655]],[1,374,[640]],[1,374,[651]],[1,640,[644]],[1,248,[284]],[1,248,[266]],[1,248,[254]],[1,248,[624]],[1,299,[624]],[1,299,[639]],[1,294,[624]],[1,294,[635]],[1,624,[628]],[1,245,[277]],[1,245,[271]],[1,245,[259]],[1,245,[608]],[1,503,[608]],[1,503,[623]],[1,608,[612]],[1,244,[283]],[1,244,[265]],[1,244,[3]],[1,244,[592]],[1,427,[592]],[1,427,[607]],[1,422,[592]],[1,422,[603]],[1,592,[596]],[1,243,[282]],[1,243,[270]],[1,243,[253]],[1,243,[576]],[1,358,[576]],[1,358,[587]],[1,576,[580]],[1,242,[276]],[1,242,[264]],[1,242,[2]],[1,242,[560]],[1,315,[560]],[1,315,[575]],[1,310,[560]],[1,310,[571]],[1,560,[564]],[1,241,[7]],[1,241,[6]],[1,241,[247]],[1,241,[544]],[1,326,[544]],[1,326,[555]],[1,544,[548]],[1,240,[5]],[1,240,[4]],[1,240,[246]],[1,240,[528]],[1,528,[532]],[1,411,[258]],[1,411,[252]],[1,411,[1]],[1,411,[512]],[1,411,[0]],[1,411,[527]],[1,406,[512]],[1,406,[523]],[1,512,[516]],[1,931,[733]],[1,733,[735]],[1,930,[732]],[1,732,[734]],[1,929,[399]],[1,399,[395]],[1,928,[397]],[1,397,[393]],[1,927,[729]],[1,729,[731]],[1,926,[728]],[1,728,[730]],[1,925,[388]],[1,388,[390]],[1,924,[384]],[1,384,[386]],[1,923,[723]],[1,723,[727]],[1,922,[721]],[1,721,[725]],[1,921,[724]],[1,920,[724]],[1,724,[726]],[1,919,[720]],[1,918,[720]],[1,720,[722]],[1,917,[717]],[1,717,[719]],[1,916,[716]],[1,716,[718]],[1,915,[713]],[1,713,[715]],[1,914,[712]],[1,712,[714]],[1,913,[463]],[1,463,[455]],[1,912,[449]],[1,449,[457]],[1,911,[452]],[1,452,[460]],[1,910,[458]],[1,458,[450]],[1,909,[707]],[1,707,[711]],[1,908,[705]],[1,705,[709]],[1,907,[708]],[1,906,[708]],[1,708,[710]],[1,905,[704]],[1,904,[704]],[1,704,[706]],[1,903,[697]],[1,697,[699]],[1,902,[696]],[1,696,[698]],[1,901,[701]],[1,701,[703]],[1,900,[700]],[1,700,[702]],[1,899,[479]],[1,479,[471]],[1,898,[465]],[1,465,[473]],[1,897,[468]],[1,468,[476]],[1,896,[474]],[1,474,[466]],[1,895,[691]],[1,691,[695]],[1,894,[689]],[1,689,[693]],[1,893,[692]],[1,892,[692]],[1,692,[694]],[1,891,[688]],[1,890,[688]],[1,688,[690]],[1,889,[685]],[1,685,[687]],[1,888,[684]],[1,684,[686]],[1,887,[681]],[1,681,[683]],[1,886,[680]],[1,680,[682]],[1,885,[675]],[1,675,[679]],[1,884,[673]],[1,673,[677]],[1,883,[495]],[1,495,[487]],[1,882,[481]],[1,481,[489]],[1,881,[484]],[1,484,[492]],[1,880,[490]],[1,490,[482]],[1,879,[676]],[1,878,[676]],[1,676,[678]],[1,877,[672]],[1,876,[672]],[1,672,[674]],[1,875,[665]],[1,665,[667]],[1,874,[664]],[1,664,[666]],[1,873,[669]],[1,669,[671]],[1,872,[668]],[1,668,[670]],[1,871,[659]],[1,659,[663]],[1,870,[657]],[1,657,[661]],[1,869,[447]],[1,447,[439]],[1,868,[433]],[1,433,[441]],[1,867,[436]],[1,436,[444]],[1,866,[442]],[1,442,[434]],[1,865,[660]],[1,864,[660]],[1,660,[662]],[1,863,[656]],[1,862,[656]],[1,656,[658]],[1,861,[643]],[1,643,[647]],[1,860,[641]],[1,641,[645]],[1,859,[653]],[1,653,[655]],[1,858,[652]],[1,652,[654]],[1,857,[649]],[1,649,[651]],[1,856,[648]],[1,648,[650]],[1,855,[371]],[1,371,[379]],[1,854,[381]],[1,381,[373]],[1,853,[382]],[1,382,[374]],[1,852,[368]],[1,368,[376]],[1,851,[644]],[1,850,[644]],[1,644,[646]],[1,849,[640]],[1,848,[640]],[1,640,[642]],[1,847,[627]],[1,627,[631]],[1,846,[625]],[1,625,[629]],[1,845,[633]],[1,633,[635]],[1,844,[632]],[1,632,[634]],[1,843,[637]],[1,637,[639]],[1,842,[636]],[1,636,[638]],[1,841,[303]],[1,303,[299]],[1,840,[301]],[1,301,[297]],[1,839,[292]],[1,292,[294]],[1,838,[288]],[1,288,[290]],[1,837,[628]],[1,836,[628]],[1,628,[630]],[1,835,[624]],[1,834,[624]],[1,624,[626]],[1,833,[621]],[1,621,[623]],[1,832,[620]],[1,620,[622]],[1,831,[617]],[1,617,[619]],[1,830,[616]],[1,616,[618]],[1,829,[611]],[1,611,[615]],[1,828,[609]],[1,609,[613]],[1,827,[499]],[1,499,[503]],[1,826,[497]],[1,497,[501]],[1,825,[510]],[1,510,[508]],[1,824,[506]],[1,506,[504]],[1,823,[612]],[1,822,[612]],[1,612,[614]],[1,821,[608]],[1,820,[608]],[1,608,[610]],[1,819,[601]],[1,601,[603]],[1,818,[600]],[1,600,[602]],[1,817,[605]],[1,605,[607]],[1,816,[604]],[1,604,[606]],[1,815,[595]],[1,595,[599]],[1,814,[593]],[1,593,[597]],[1,813,[419]],[1,419,[427]],[1,812,[429]],[1,429,[421]],[1,811,[430]],[1,430,[422]],[1,810,[416]],[1,416,[424]],[1,809,[596]],[1,808,[596]],[1,596,[598]],[1,807,[592]],[1,806,[592]],[1,592,[594]],[1,805,[579]],[1,579,[583]],[1,804,[577]],[1,577,[581]],[1,803,[589]],[1,589,[591]],[1,802,[588]],[1,588,[590]],[1,801,[585]],[1,585,[587]],[1,800,[584]],[1,584,[586]],[1,799,[367]],[1,367,[363]],[1,798,[365]],[1,365,[361]],[1,797,[356]],[1,356,[358]],[1,796,[352]],[1,352,[354]],[1,795,[580]],[1,794,[580]],[1,580,[582]],[1,793,[576]],[1,792,[576]],[1,576,[578]],[1,791,[563]],[1,563,[567]],[1,790,[561]],[1,561,[565]],[1,789,[569]],[1,569,[571]],[1,788,[568]],[1,568,[570]],[1,787,[573]],[1,573,[575]],[1,786,[572]],[1,572,[574]],[1,785,[307]],[1,307,[315]],[1,784,[317]],[1,317,[309]],[1,783,[318]],[1,318,[310]],[1,782,[304]],[1,304,[312]],[1,781,[564]],[1,780,[564]],[1,564,[566]],[1,779,[560]],[1,778,[560]],[1,560,[562]],[1,777,[547]],[1,547,[551]],[1,776,[545]],[1,545,[549]],[1,775,[557]],[1,557,[559]],[1,774,[556]],[1,556,[558]],[1,773,[553]],[1,553,[555]],[1,772,[552]],[1,552,[554]],[1,771,[323]],[1,323,[331]],[1,770,[333]],[1,333,[325]],[1,769,[334]],[1,334,[326]],[1,768,[320]],[1,320,[328]],[1,767,[548]],[1,766,[548]],[1,548,[550]],[1,765,[544]],[1,764,[544]],[1,544,[546]],[1,763,[531]],[1,531,[535]],[1,762,[529]],[1,529,[533]],[1,761,[537]],[1,537,[539]],[1,760,[536]],[1,536,[538]],[1,759,[541]],[1,541,[543]],[1,758,[540]],[1,540,[542]],[1,757,[339]],[1,339,[343]],[1,756,[337]],[1,337,[341]],[1,755,[350]],[1,350,[348]],[1,754,[346]],[1,346,[344]],[1,753,[532]],[1,752,[532]],[1,532,[534]],[1,751,[528]],[1,750,[528]],[1,528,[530]],[1,749,[515]],[1,515,[519]],[1,748,[513]],[1,513,[517]],[1,747,[521]],[1,521,[523]],[1,746,[520]],[1,520,[522]],[1,745,[525]],[1,525,[527]],[1,744,[524]],[1,524,[526]],[1,743,[415]],[1,415,[411]],[1,742,[413]],[1,413,[409]],[1,741,[404]],[1,404,[406]],[1,740,[400]],[1,400,[402]],[1,739,[516]],[1,738,[516]],[1,516,[518]],[1,737,[512]],[1,736,[512]],[1,512,[514]],[1,735,[395]],[1,395,[391]],[1,734,[399]],[1,399,[387]],[1,733,[393]],[1,393,[389]],[1,732,[397]],[1,397,[385]],[1,731,[390]],[1,390,[396]],[1,730,[388]],[1,388,[398]],[1,729,[386]],[1,386,[392]],[1,728,[384]],[1,384,[394]],[1,727,[726]],[1,726,[61]],[1,726,[62]],[1,725,[724]],[1,724,[60]],[1,724,[63]],[1,723,[722]],[1,722,[57]],[1,722,[58]],[1,721,[720]],[1,720,[56]],[1,720,[59]],[1,719,[455]],[1,455,[459]],[1,718,[463]],[1,463,[451]],[1,717,[457]],[1,457,[453]],[1,716,[449]],[1,449,[461]],[1,715,[460]],[1,460,[454]],[1,714,[452]],[1,452,[462]],[1,713,[450]],[1,450,[456]],[1,712,[458]],[1,458,[448]],[1,711,[710]],[1,710,[93]],[1,710,[94]],[1,709,[708]],[1,708,[92]],[1,708,[95]],[1,707,[706]],[1,706,[89]],[1,706,[90]],[1,705,[704]],[1,704,[88]],[1,704,[91]],[1,703,[471]],[1,471,[475]],[1,702,[479]],[1,479,[467]],[1,701,[473]],[1,473,[469]],[1,700,[465]],[1,465,[477]],[1,699,[476]],[1,476,[470]],[1,698,[468]],[1,468,[478]],[1,697,[466]],[1,466,[472]],[1,696,[474]],[1,474,[464]],[1,695,[694]],[1,694,[101]],[1,694,[102]],[1,693,[692]],[1,692,[100]],[1,692,[103]],[1,691,[690]],[1,690,[97]],[1,690,[98]],[1,689,[688]],[1,688,[96]],[1,688,[99]],[1,687,[487]],[1,487,[491]],[1,686,[495]],[1,495,[483]],[1,685,[489]],[1,489,[485]],[1,684,[481]],[1,481,[493]],[1,683,[492]],[1,492,[486]],[1,682,[484]],[1,484,[494]],[1,681,[482]],[1,482,[488]],[1,680,[490]],[1,490,[480]],[1,679,[678]],[1,678,[109]],[1,678,[110]],[1,677,[676]],[1,676,[108]],[1,676,[111]],[1,675,[674]],[1,674,[105]],[1,674,[106]],[1,673,[672]],[1,672,[104]],[1,672,[107]],[1,671,[439]],[1,439,[443]],[1,670,[447]],[1,447,[435]],[1,669,[441]],[1,441,[437]],[1,668,[433]],[1,433,[445]],[1,667,[444]],[1,444,[438]],[1,666,[436]],[1,436,[446]],[1,665,[434]],[1,434,[440]],[1,664,[442]],[1,442,[432]],[1,663,[662]],[1,662,[85]],[1,662,[86]],[1,661,[660]],[1,660,[84]],[1,660,[87]],[1,659,[658]],[1,658,[81]],[1,658,[82]],[1,657,[656]],[1,656,[80]],[1,656,[83]],[1,655,[379]],[1,379,[375]],[1,654,[371]],[1,371,[383]],[1,653,[373]],[1,373,[377]],[1,652,[381]],[1,381,[369]],[1,651,[374]],[1,374,[380]],[1,650,[382]],[1,382,[372]],[1,649,[376]],[1,376,[370]],[1,648,[368]],[1,368,[378]],[1,647,[646]],[1,646,[53]],[1,646,[54]],[1,645,[644]],[1,644,[52]],[1,644,[55]],[1,643,[642]],[1,642,[49]],[1,642,[50]],[1,641,[640]],[1,640,[48]],[1,640,[51]],[1,639,[299]],[1,299,[295]],[1,638,[303]],[1,303,[291]],[1,637,[297]],[1,297,[293]],[1,636,[301]],[1,301,[289]],[1,635,[294]],[1,294,[300]],[1,634,[292]],[1,292,[302]],[1,633,[290]],[1,290,[296]],[1,632,[288]],[1,288,[298]],[1,631,[630]],[1,630,[13]],[1,630,[14]],[1,629,[628]],[1,628,[12]],[1,628,[15]],[1,627,[626]],[1,626,[9]],[1,626,[10]],[1,625,[624]],[1,624,[8]],[1,624,[11]],[1,623,[503]],[1,503,[507]],[1,622,[499]],[1,499,[511]],[1,621,[501]],[1,501,[505]],[1,620,[497]],[1,497,[509]],[1,619,[508]],[1,508,[502]],[1,618,[510]],[1,510,[500]],[1,617,[504]],[1,504,[498]],[1,616,[506]],[1,506,[496]],[1,615,[614]],[1,614,[117]],[1,614,[118]],[1,613,[612]],[1,612,[116]],[1,612,[119]],[1,611,[610]],[1,610,[113]],[1,610,[114]],[1,609,[608]],[1,608,[112]],[1,608,[115]],[1,607,[427]],[1,427,[423]],[1,606,[419]],[1,419,[431]],[1,605,[421]],[1,421,[425]],[1,604,[429]],[1,429,[417]],[1,603,[422]],[1,422,[428]],[1,602,[430]],[1,430,[420]],[1,601,[424]],[1,424,[418]],[1,600,[416]],[1,416,[426]],[1,599,[598]],[1,598,[77]],[1,598,[78]],[1,597,[596]],[1,596,[76]],[1,596,[79]],[1,595,[594]],[1,594,[73]],[1,594,[74]],[1,593,[592]],[1,592,[72]],[1,592,[75]],[1,591,[363]],[1,363,[359]],[1,590,[367]],[1,367,[355]],[1,589,[361]],[1,361,[357]],[1,588,[365]],[1,365,[353]],[1,587,[358]],[1,358,[364]],[1,586,[356]],[1,356,[366]],[1,585,[354]],[1,354,[360]],[1,584,[352]],[1,352,[362]],[1,583,[582]],[1,582,[45]],[1,582,[46]],[1,581,[580]],[1,580,[44]],[1,580,[47]],[1,579,[578]],[1,578,[41]],[1,578,[42]],[1,577,[576]],[1,576,[40]],[1,576,[43]],[1,575,[315]],[1,315,[311]],[1,574,[307]],[1,307,[319]],[1,573,[309]],[1,309,[313]],[1,572,[317]],[1,317,[305]],[1,571,[310]],[1,310,[316]],[1,570,[318]],[1,318,[308]],[1,569,[312]],[1,312,[306]],[1,568,[304]],[1,304,[314]],[1,567,[566]],[1,566,[21]],[1,566,[22]],[1,565,[564]],[1,564,[20]],[1,564,[23]],[1,563,[562]],[1,562,[17]],[1,562,[18]],[1,561,[560]],[1,560,[16]],[1,560,[19]],[1,559,[331]],[1,331,[327]],[1,558,[323]],[1,323,[335]],[1,557,[325]],[1,325,[329]],[1,556,[333]],[1,333,[321]],[1,555,[326]],[1,326,[332]],[1,554,[334]],[1,334,[324]],[1,553,[328]],[1,328,[322]],[1,552,[320]],[1,320,[330]],[1,551,[550]],[1,550,[29]],[1,550,[30]],[1,549,[548]],[1,548,[28]],[1,548,[31]],[1,547,[546]],[1,546,[25]],[1,546,[26]],[1,545,[544]],[1,544,[24]],[1,544,[27]],[1,543,[343]],[1,343,[347]],[1,542,[339]],[1,339,[351]],[1,541,[341]],[1,341,[345]],[1,540,[337]],[1,337,[349]],[1,539,[348]],[1,348,[342]],[1,538,[350]],[1,350,[340]],[1,537,[344]],[1,344,[338]],[1,536,[346]],[1,346,[336]],[1,535,[534]],[1,534,[37]],[1,534,[38]],[1,533,[532]],[1,532,[36]],[1,532,[39]],[1,531,[530]],[1,530,[33]],[1,530,[34]],[1,529,[528]],[1,528,[32]],[1,528,[35]],[1,527,[411]],[1,411,[407]],[1,526,[415]],[1,415,[403]],[1,525,[409]],[1,409,[405]],[1,524,[413]],[1,413,[401]],[1,523,[406]],[1,406,[412]],[1,522,[404]],[1,404,[414]],[1,521,[402]],[1,402,[408]],[1,520,[400]],[1,400,[410]],[1,519,[518]],[1,518,[69]],[1,518,[70]],[1,517,[516]],[1,516,[68]],[1,516,[71]],[1,515,[514]],[1,514,[65]],[1,514,[66]],[1,513,[512]],[1,512,[64]],[1,512,[67]],[1,511,[119]],[1,510,[119]],[1,509,[118]],[1,508,[118]],[1,507,[117]],[1,506,[117]],[1,505,[116]],[1,504,[116]],[1,503,[115]],[1,502,[115]],[1,501,[114]],[1,500,[114]],[1,499,[113]],[1,498,[113]],[1,497,[112]],[1,496,[112]],[1,495,[111]],[1,494,[111]],[1,493,[110]],[1,492,[110]],[1,491,[109]],[1,490,[109]],[1,489,[108]],[1,488,[108]],[1,487,[107]],[1,486,[107]],[1,485,[106]],[1,484,[106]],[1,483,[105]],[1,482,[105]],[1,481,[104]],[1,480,[104]],[1,479,[103]],[1,478,[103]],[1,477,[102]],[1,476,[102]],[1,475,[101]],[1,474,[101]],[1,473,[100]],[1,472,[100]],[1,471,[99]],[1,470,[99]],[1,469,[98]],[1,468,[98]],[1,467,[97]],[1,466,[97]],[1,465,[96]],[1,464,[96]],[1,463,[95]],[1,462,[95]],[1,461,[94]],[1,460,[94]],[1,459,[93]],[1,458,[93]],[1,457,[92]],[1,456,[92]],[1,455,[91]],[1,454,[91]],[1,453,[90]],[1,452,[90]],[1,451,[89]],[1,450,[89]],[1,449,[88]],[1,448,[88]],[1,447,[87]],[1,446,[87]],[1,445,[86]],[1,444,[86]],[1,443,[85]],[1,442,[85]],[1,441,[84]],[1,440,[84]],[1,439,[83]],[1,438,[83]],[1,437,[82]],[1,436,[82]],[1,435,[81]],[1,434,[81]],[1,433,[80]],[1,432,[80]],[1,431,[79]],[1,430,[79]],[1,429,[78]],[1,428,[78]],[1,427,[77]],[1,426,[77]],[1,425,[76]],[1,424,[76]],[1,423,[75]],[1,422,[75]],[1,421,[74]],[1,420,[74]],[1,419,[73]],[1,418,[73]],[1,417,[72]],[1,416,[72]],[1,415,[71]],[1,414,[71]],[1,413,[70]],[1,412,[70]],[1,411,[69]],[1,410,[69]],[1,409,[68]],[1,408,[68]],[1,407,[67]],[1,406,[67]],[1,405,[66]],[1,404,[66]],[1,403,[65]],[1,402,[65]],[1,401,[64]],[1,400,[64]],[1,399,[63]],[1,398,[63]],[1,397,[62]],[1,396,[62]],[1,395,[61]],[1,394,[61]],[1,393,[60]],[1,392,[60]],[1,391,[59]],[1,390,[59]],[1,389,[58]],[1,388,[58]],[1,387,[57]],[1,386,[57]],[1,385,[56]],[1,384,[56]],[1,383,[55]],[1,382,[55]],[1,381,[54]],[1,380,[54]],[1,379,[53]],[1,378,[53]],[1,377,[52]],[1,376,[52]],[1,375,[51]],[1,374,[51]],[1,373,[50]],[1,372,[50]],[1,371,[49]],[1,370,[49]],[1,369,[48]],[1,368,[48]],[1,367,[47]],[1,366,[47]],[1,365,[46]],[1,364,[46]],[1,363,[45]],[1,362,[45]],[1,361,[44]],[1,360,[44]],[1,359,[43]],[1,358,[43]],[1,357,[42]],[1,356,[42]],[1,355,[41]],[1,354,[41]],[1,353,[40]],[1,352,[40]],[1,351,[39]],[1,350,[39]],[1,349,[38]],[1,348,[38]],[1,347,[37]],[1,346,[37]],[1,345,[36]],[1,344,[36]],[1,343,[35]],[1,342,[35]],[1,341,[34]],[1,340,[34]],[1,339,[33]],[1,338,[33]],[1,337,[32]],[1,336,[32]],[1,335,[31]],[1,334,[31]],[1,333,[30]],[1,332,[30]],[1,331,[29]],[1,330,[29]],[1,329,[28]],[1,328,[28]],[1,327,[27]],[1,326,[27]],[1,325,[26]],[1,324,[26]],[1,323,[25]],[1,322,[25]],[1,321,[24]],[1,320,[24]],[1,319,[23]],[1,318,[23]],[1,317,[22]],[1,316,[22]],[1,315,[21]],[1,314,[21]],[1,313,[20]],[1,312,[20]],[1,311,[19]],[1,310,[19]],[1,309,[18]],[1,308,[18]],[1,307,[17]],[1,306,[17]],[1,305,[16]],[1,304,[16]],[1,303,[15]],[1,302,[15]],[1,301,[14]],[1,300,[14]],[1,299,[13]],[1,298,[13]],[1,297,[12]],[1,296,[12]],[1,295,[11]],[1,294,[11]],[1,293,[10]],[1,292,[10]],[1,291,[9]],[1,290,[9]],[1,289,[8]],[1,288,[8]],[1,287,[7]],[1,286,[7]],[1,285,[7]],[1,284,[7]],[1,283,[7]],[1,282,[7]],[1,281,[6]],[1,280,[6]],[1,279,[6]],[1,278,[6]],[1,277,[6]],[1,276,[6]],[1,275,[5]],[1,274,[5]],[1,273,[5]],[1,272,[5]],[1,271,[5]],[1,270,[5]],[1,269,[4]],[1,268,[4]],[1,267,[4]],[1,266,[4]],[1,265,[4]],[1,264,[4]],[1,263,[3]],[1,262,[3]],[1,261,[3]],[1,260,[3]],[1,259,[3]],[1,258,[3]],[1,257,[2]],[1,256,[2]],[1,255,[2]],[1,254,[2]],[1,253,[2]],[1,252,[2]],[1,251,[1]],[1,250,[1]],[1,249,[1]],[1,248,[1]],[1,247,[1]],[1,246,[1]],[1,245,[0]],[1,244,[0]],[1,243,[0]],[1,242,[0]],[1,241,[0]],[1,240,[0]],[1,241,[787]],[1,241,[802]],[1,241,[816]],[1,241,[833]],[1,242,[746]],[1,242,[760]],[1,242,[773]],[1,244,[744]],[1,248,[743]],[1,248,[768]],[1,248,[860]],[1,248,[889]],[1,249,[754]],[1,249,[771]],[1,249,[846]],[1,249,[872]],[1,249,[887]],[1,251,[842]],[1,251,[857]],[1,256,[739]],[1,256,[798]],[1,256,[855]],[1,256,[908]],[1,257,[782]],[1,257,[797]],[1,257,[839]],[1,257,[852]],[1,261,[871]],[1,261,[897]],[1,261,[911]],[1,263,[738]],[1,263,[811]],[1,263,[825]],[1,263,[867]],[1,263,[881]],[1,263,[895]],[1,266,[757]],[1,266,[808]],[1,266,[875]],[1,266,[903]],[1,266,[931]],[1,268,[752]],[1,268,[785]],[1,268,[813]],[1,268,[841]],[1,268,[869]],[1,268,[923]],[1,269,[753]],[1,269,[781]],[1,269,[809]],[1,269,[837]],[1,269,[865]],[1,269,[893]],[1,278,[822]],[1,278,[915]],[1,278,[928]],[1,280,[921]],[1,281,[767]],[1,281,[821]],[1,281,[849]],[1,281,[907]],[1,283,[836]],[1,285,[794]],[1,285,[924]],[1,286,[766]],[1,287,[795]],[1,287,[879]],[1,736,[738]],[1,736,[866]],[1,736,[867]],[1,736,[880]],[1,736,[881]],[1,737,[739]],[1,737,[854]],[1,737,[855]],[1,742,[743]],[1,742,[768]],[1,742,[769]],[1,745,[744]],[1,747,[746]],[1,748,[788]],[1,748,[801]],[1,748,[818]],[1,748,[831]],[1,749,[789]],[1,749,[800]],[1,749,[818]],[1,749,[831]],[1,755,[754]],[1,755,[770]],[1,755,[771]],[1,756,[757]],[1,756,[902]],[1,756,[903]],[1,756,[930]],[1,756,[931]],[1,761,[760]],[1,763,[762]],[1,763,[790]],[1,763,[791]],[1,763,[814]],[1,763,[815]],[1,764,[766]],[1,765,[767]],[1,765,[821]],[1,765,[823]],[1,772,[773]],[1,776,[762]],[1,776,[790]],[1,776,[804]],[1,776,[815]],[1,776,[829]],[1,777,[762]],[1,777,[791]],[1,777,[804]],[1,777,[815]],[1,777,[828]],[1,778,[845]],[1,778,[899]],[1,778,[927]],[1,779,[751]],[1,779,[753]],[1,779,[781]],[1,779,[863]],[1,779,[865]],[1,779,[891]],[1,779,[893]],[1,780,[845]],[1,780,[899]],[1,780,[927]],[1,783,[782]],[1,783,[796]],[1,783,[797]],[1,784,[785]],[1,784,[868]],[1,784,[869]],[1,784,[922]],[1,784,[923]],[1,792,[794]],[1,793,[795]],[1,799,[798]],[1,799,[854]],[1,799,[855]],[1,803,[786]],[1,803,[787]],[1,803,[802]],[1,805,[790]],[1,805,[791]],[1,805,[804]],[1,805,[814]],[1,805,[815]],[1,805,[828]],[1,805,[829]],[1,806,[808]],[1,806,[902]],[1,806,[903]],[1,806,[930]],[1,806,[931]],[1,807,[809]],[1,807,[863]],[1,807,[865]],[1,807,[891]],[1,807,[893]],[1,810,[811]],[1,810,[866]],[1,810,[867]],[1,810,[894]],[1,810,[895]],[1,812,[750]],[1,812,[752]],[1,812,[813]],[1,812,[868]],[1,812,[869]],[1,812,[922]],[1,812,[923]],[1,817,[786]],[1,817,[787]],[1,817,[816]],[1,819,[800]],[1,819,[801]],[1,819,[818]],[1,820,[822]],[1,824,[825]],[1,824,[880]],[1,824,[881]],[1,824,[894]],[1,824,[895]],[1,830,[788]],[1,830,[789]],[1,830,[831]],[1,832,[786]],[1,832,[787]],[1,832,[833]],[1,834,[836]],[1,835,[751]],[1,835,[753]],[1,835,[837]],[1,835,[863]],[1,835,[865]],[1,838,[796]],[1,838,[797]],[1,838,[839]],[1,840,[750]],[1,840,[752]],[1,840,[841]],[1,840,[868]],[1,840,[869]],[1,843,[842]],[1,844,[845]],[1,844,[926]],[1,844,[927]],[1,851,[821]],[1,851,[823]],[1,851,[849]],[1,853,[796]],[1,853,[797]],[1,853,[852]],[1,856,[857]],[1,861,[768]],[1,861,[769]],[1,861,[860]],[1,870,[871]],[1,870,[896]],[1,870,[897]],[1,873,[770]],[1,873,[771]],[1,873,[846]],[1,873,[847]],[1,873,[872]],[1,874,[875]],[1,874,[930]],[1,874,[931]],[1,877,[879]],[1,886,[770]],[1,886,[771]],[1,886,[846]],[1,886,[847]],[1,886,[887]],[1,888,[768]],[1,888,[769]],[1,888,[889]],[1,898,[899]],[1,898,[926]],[1,898,[927]],[1,905,[821]],[1,905,[823]],[1,905,[907]],[1,909,[854]],[1,909,[855]],[1,909,[908]],[1,910,[896]],[1,910,[897]],[1,910,[911]],[1,914,[915]],[1,919,[921]],[1,925,[924]],[1,929,[928]],[1,933,[938]],[1,934,[938]],[1,937,[938]],[1,939,[946]],[1,940,[945]],[1,944,[943]],[1,951,[943]],[1,953,[943]],[1,958,[957]],[1,959,[960]],[1,964,[957]],[1,965,[957]],[1,966,[960]],[1,967,[960]],[1,972,[976]],[1,973,[976]],[1,974,[975]],[1,977,[976]],[1,978,[975]],[1,979,[975]]],"D":[[0,120,[246]],[0,120,[247]],[0,120,[250]],[0,120,[254]],[0,120,[260]],[0,120,[267]],[0,120,[272]],[0,120,[279]],[0,120,[284]],[0,120,[624]],[0,120,[626]],[0,120,[628]],[0,120,[630]],[0,120,[640]],[0,120,[642]],[0,120,[644]],[0,120,[646]],[0,120,[656]],[0,120,[658]],[0,120,[660]],[0,120,[662]],[0,120,[672]],[0,120,[674]],[0,120,[676]],[0,120,[678]],[0,120,[688]],[0,120,[690]],[0,120,[692]],[0,120,[694]],[0,120,[704]],[0,120,[706]],[0,120,[708]],[0,120,[710]],[0,120,[720]],[0,120,[722]],[0,120,[724]],[0,120,[726]],[0,121,[245]],[0,121,[246]],[0,121,[252]],[0,121,[253]],[0,121,[259]],[0,121,[264]],[0,121,[271]],[0,121,[277]],[0,121,[282]],[0,121,[560]],[0,121,[562]],[0,121,[564]],[0,121,[566]],[0,121,[576]],[0,121,[578]],[0,121,[580]],[0,121,[582]],[0,121,[592]],[0,121,[594]],[0,121,[596]],[0,121,[598]],[0,121,[608]],[0,121,[610]],[0,121,[612]],[0,121,[614]],[0,121,[688]],[0,121,[690]],[0,121,[692]],[0,121,[694]],[0,121,[704]],[0,121,[706]],[0,121,[708]],[0,121,[710]],[0,121,[719]],[0,121,[720]],[0,121,[722]],[0,121,[724]],[0,121,[726]],[0,121,[919]],[0,122,[240]],[0,122,[253]],[0,122,[528]],[0,122,[530]],[0,122,[532]],[0,122,[534]],[0,122,[544]],[0,122,[546]],[0,122,[548]],[0,122,[550]],[0,122,[592]],[0,122,[594]],[0,122,[596]],[0,122,[598]],[0,122,[603]],[0,122,[608]],[0,122,[610]],[0,122,[612]],[0,122,[614]],[0,122,[656]],[0,122,[658]],[0,122,[660]],[0,122,[662]],[0,122,[672]],[0,122,[674]],[0,122,[676]],[0,122,[678]],[0,122,[687]],[0,122,[720]],[0,122,[722]],[0,122,[724]],[0,122,[726]],[0,122,[731]],[0,123,[240]],[0,123,[247]],[0,123,[252]],[0,123,[253]],[0,123,[528]],[0,123,[530]],[0,123,[532]],[0,123,[534]],[0,123,[544]],[0,123,[546]],[0,123,[548]],[0,123,[550]],[0,123,[560]],[0,123,[562]],[0,123,[564]],[0,123,[566]],[0,123,[571]],[0,123,[576]],[0,123,[578]],[0,123,[580]],[0,123,[582]],[0,123,[587]],[0,123,[624]],[0,123,[626]],[0,123,[628]],[0,123,[630]],[0,123,[635]],[0,123,[640]],[0,123,[642]],[0,123,[644]],[0,123,[646]],[0,123,[651]],[0,123,[720]],[0,123,[722]],[0,123,[724]],[0,123,[726]],[0,123,[731]],[0,124,[245]],[0,124,[246]],[0,124,[253]],[0,124,[254]],[0,124,[259]],[0,124,[271]],[0,124,[277]],[0,124,[282]],[0,124,[512]],[0,124,[514]],[0,124,[516]],[0,124,[518]],[0,124,[544]],[0,124,[546]],[0,124,[548]],[0,124,[550]],[0,124,[576]],[0,124,[578]],[0,124,[580]],[0,124,[582]],[0,124,[608]],[0,124,[610]],[0,124,[612]],[0,124,[614]],[0,124,[640]],[0,124,[642]],[0,124,[644]],[0,124,[646]],[0,124,[672]],[0,124,[674]],[0,124,[676]],[0,124,[678]],[0,124,[704]],[0,124,[706]],[0,124,[708]],[0,124,[710]],[0,124,[719]],[0,124,[764]],[0,125,[246]],[0,125,[247]],[0,125,[250]],[0,125,[252]],[0,125,[260]],[0,125,[267]],[0,125,[279]],[0,125,[284]],[0,125,[512]],[0,125,[514]],[0,125,[516]],[0,125,[518]],[0,125,[544]],[0,125,[546]],[0,125,[548]],[0,125,[550]],[0,125,[555]],[0,125,[560]],[0,125,[562]],[0,125,[564]],[0,125,[566]],[0,125,[592]],[0,125,[594]],[0,125,[596]],[0,125,[598]],[0,125,[624]],[0,125,[626]],[0,125,[628]],[0,125,[630]],[0,125,[656]],[0,125,[658]],[0,125,[660]],[0,125,[662]],[0,125,[704]],[0,125,[706]],[0,125,[708]],[0,125,[710]],[0,126,[243]],[0,126,[247]],[0,126,[254]],[0,126,[262]],[0,126,[265]],[0,126,[270]],[0,126,[282]],[0,126,[512]],[0,126,[514]],[0,126,[516]],[0,126,[518]],[0,126,[523]],[0,126,[528]],[0,126,[530]],[0,126,[532]],[0,126,[534]],[0,126,[576]],[0,126,[578]],[0,126,[580]],[0,126,[582]],[0,126,[592]],[0,126,[594]],[0,126,[596]],[0,126,[598]],[0,126,[607]],[0,126,[624]],[0,126,[626]],[0,126,[628]],[0,126,[630]],[0,126,[639]],[0,126,[672]],[0,126,[674]],[0,126,[676]],[0,126,[678]],[0,126,[683]],[0,126,[688]],[0,126,[690]],[0,126,[692]],[0,126,[694]],[0,126,[703]],[0,127,[246]],[0,127,[253]],[0,127,[254]],[0,127,[258]],[0,127,[276]],[0,127,[512]],[0,127,[514]],[0,127,[516]],[0,127,[518]],[0,127,[527]],[0,127,[528]],[0,127,[530]],[0,127,[532]],[0,127,[534]],[0,127,[560]],[0,127,[562]],[0,127,[564]],[0,127,[566]],[0,127,[575]],[0,127,[608]],[0,127,[610]],[0,127,[612]],[0,127,[614]],[0,127,[623]],[0,127,[640]],[0,127,[642]],[0,127,[644]],[0,127,[646]],[0,127,[655]],[0,127,[656]],[0,127,[658]],[0,127,[660]],[0,127,[662]],[0,127,[671]],[0,127,[688]],[0,127,[690]],[0,127,[692]],[0,127,[694]],[0,127,[699]],[0,128,[245]],[0,128,[246]],[0,128,[255]],[0,128,[259]],[0,128,[271]],[0,128,[277]],[0,128,[295]],[0,128,[309]],[0,128,[311]],[0,128,[313]],[0,128,[315]],[0,128,[322]],[0,128,[326]],[0,128,[328]],[0,128,[332]],[0,128,[341]],[0,128,[343]],[0,128,[345]],[0,128,[347]],[0,128,[354]],[0,128,[358]],[0,128,[360]],[0,128,[364]],[0,128,[387]],[0,128,[391]],[0,128,[395]],[0,128,[399]],[0,128,[405]],[0,128,[407]],[0,128,[409]],[0,128,[411]],[0,128,[436]],[0,128,[438]],[0,128,[444]],[0,128,[446]],[0,128,[451]],[0,128,[455]],[0,128,[459]],[0,128,[463]],[0,128,[468]],[0,128,[470]],[0,128,[476]],[0,128,[478]],[0,128,[483]],[0,128,[487]],[0,128,[491]],[0,128,[495]],[0,128,[525]],[0,128,[527]],[0,128,[541]],[0,128,[543]],[0,128,[553]],[0,128,[555]],[0,128,[573]],[0,128,[575]],[0,128,[585]],[0,128,[587]],[0,128,[594]],[0,128,[595]],[0,128,[598]],[0,128,[599]],[0,128,[608]],[0,128,[610]],[0,128,[612]],[0,128,[614]],[0,128,[644]],[0,128,[646]],[0,128,[850]],[0,129,[245]],[0,129,[246]],[0,129,[252]],[0,129,[253]],[0,129,[254]],[0,129,[255]],[0,129,[259]],[0,129,[271]],[0,129,[277]],[0,129,[293]],[0,129,[309]],[0,129,[311]],[0,129,[313]],[0,129,[315]],[0,129,[320]],[0,129,[324]],[0,129,[330]],[0,129,[334]],[0,129,[341]],[0,129,[343]],[0,129,[345]],[0,129,[347]],[0,129,[352]],[0,129,[356]],[0,129,[362]],[0,129,[366]],[0,129,[385]],[0,129,[389]],[0,129,[393]],[0,129,[397]],[0,129,[405]],[0,129,[407]],[0,129,[409]],[0,129,[411]],[0,129,[436]],[0,129,[438]],[0,129,[444]],[0,129,[446]],[0,129,[449]],[0,129,[453]],[0,129,[457]],[0,129,[461]],[0,129,[468]],[0,129,[470]],[0,129,[476]],[0,129,[478]],[0,129,[481]],[0,129,[485]],[0,129,[489]],[0,129,[493]],[0,129,[498]],[0,129,[501]],[0,129,[504]],[0,129,[505]],[0,129,[525]],[0,129,[527]],[0,129,[541]],[0,129,[543]],[0,129,[552]],[0,129,[554]],[0,129,[573]],[0,129,[575]],[0,129,[584]],[0,129,[586]],[0,129,[592]],[0,129,[593]],[0,129,[596]],[0,129,[597]],[0,129,[608]],[0,129,[612]],[0,129,[613]],[0,129,[614]],[0,129,[615]],[0,129,[644]],[0,129,[646]],[0,129,[850]],[0,129,[932]],[0,129,[935]],[0,130,[245]],[0,130,[246]],[0,130,[254]],[0,130,[255]],[0,130,[259]],[0,130,[271]],[0,130,[277]],[0,130,[291]],[0,130,[305]],[0,130,[307]],[0,130,[317]],[0,130,[319]],[0,130,[322]],[0,130,[326]],[0,130,[328]],[0,130,[332]],[0,130,[337]],[0,130,[339]],[0,130,[349]],[0,130,[351]],[0,130,[354]],[0,130,[358]],[0,130,[360]],[0,130,[364]],[0,130,[385]],[0,130,[389]],[0,130,[393]],[0,130,[397]],[0,130,[405]],[0,130,[407]],[0,130,[409]],[0,130,[411]],[0,130,[432]],[0,130,[434]],[0,130,[440]],[0,130,[442]],[0,130,[451]],[0,130,[455]],[0,130,[459]],[0,130,[463]],[0,130,[464]],[0,130,[466]],[0,130,[472]],[0,130,[474]],[0,130,[483]],[0,130,[487]],[0,130,[491]],[0,130,[495]],[0,130,[498]],[0,130,[500]],[0,130,[502]],[0,130,[503]],[0,130,[504]],[0,130,[507]],[0,130,[508]],[0,130,[510]],[0,130,[525]],[0,130,[527]],[0,130,[540]],[0,130,[542]],[0,130,[553]],[0,130,[555]],[0,130,[572]],[0,130,[574]],[0,130,[585]],[0,130,[587]],[0,130,[592]],[0,130,[593]],[0,130,[596]],[0,130,[597]],[0,130,[608]],[0,130,[613]],[0,130,[618]],[0,130,[619]],[0,130,[623]],[0,130,[644]],[0,130,[646]],[0,130,[850]],[0,130,[936]],[0,131,[245]],[0,131,[246]],[0,131,[252]],[0,131,[253]],[0,131,[255]],[0,131,[259]],[0,131,[271]],[0,131,[277]],[0,131,[289]],[0,131,[305]],[0,131,[307]],[0,131,[317]],[0,131,[319]],[0,131,[320]],[0,131,[324]],[0,131,[330]],[0,131,[334]],[0,131,[337]],[0,131,[339]],[0,131,[349]],[0,131,[351]],[0,131,[352]],[0,131,[356]],[0,131,[362]],[0,131,[366]],[0,131,[387]],[0,131,[391]],[0,131,[395]],[0,131,[399]],[0,131,[405]],[0,131,[407]],[0,131,[409]],[0,131,[411]],[0,131,[432]],[0,131,[434]],[0,131,[440]],[0,131,[442]],[0,131,[449]],[0,131,[453]],[0,131,[457]],[0,131,[461]],[0,131,[464]],[0,131,[466]],[0,131,[472]],[0,131,[474]],[0,131,[481]],[0,131,[485]],[0,131,[489]],[0,131,[493]],[0,131,[525]],[0,131,[527]],[0,131,[540]],[0,131,[542]],[0,131,[552]],[0,131,[554]],[0,131,[572]],[0,131,[574]],[0,131,[584]],[0,131,[586]],[0,131,[594]],[0,131,[595]],[0,131,[598]],[0,131,[599]],[0,131,[608]],[0,131,[610]],[0,131,[612]],[0,131,[614]],[0,131,[644]],[0,131,[646]],[0,131,[850]],[0,132,[245]],[0,132,[246]],[0,132,[253]],[0,132,[255]],[0,132,[259]],[0,132,[271]],[0,132,[277]],[0,132,[302]],[0,132,[305]],[0,132,[307]],[0,132,[317]],[0,132,[319]],[0,132,[322]],[0,132,[326]],[0,132,[328]],[0,132,[332]],[0,132,[341]],[0,132,[343]],[0,132,[345]],[0,132,[347]],[0,132,[352]],[0,132,[356]],[0,132,[362]],[0,132,[366]],[0,132,[387]],[0,132,[391]],[0,132,[395]],[0,132,[399]],[0,132,[401]],[0,132,[403]],[0,132,[413]],[0,132,[415]],[0,132,[436]],[0,132,[438]],[0,132,[444]],[0,132,[446]],[0,132,[449]],[0,132,[453]],[0,132,[457]],[0,132,[461]],[0,132,[464]],[0,132,[466]],[0,132,[472]],[0,132,[474]],[0,132,[483]],[0,132,[487]],[0,132,[491]],[0,132,[495]],[0,132,[498]],[0,132,[500]],[0,132,[504]],[0,132,[510]],[0,132,[524]],[0,132,[526]],[0,132,[541]],[0,132,[543]],[0,132,[553]],[0,132,[555]],[0,132,[572]],[0,132,[574]],[0,132,[584]],[0,132,[586]],[0,132,[594]],[0,132,[595]],[0,132,[598]],[0,132,[599]],[0,132,[608]],[0,132,[614]],[0,132,[615]],[0,132,[618]],[0,132,[619]],[0,132,[640]],[0,132,[642]],[0,132,[848]],[0,132,[935]],[0,133,[245]],[0,133,[246]],[0,133,[252]],[0,133,[254]],[0,133,[255]],[0,133,[259]],[0,133,[271]],[0,133,[277]],[0,133,[300]],[0,133,[305]],[0,133,[307]],[0,133,[317]],[0,133,[319]],[0,133,[320]],[0,133,[324]],[0,133,[330]],[0,133,[334]],[0,133,[341]],[0,133,[343]],[0,133,[345]],[0,133,[347]],[0,133,[354]],[0,133,[358]],[0,133,[360]],[0,133,[364]],[0,133,[385]],[0,133,[389]],[0,133,[393]],[0,133,[397]],[0,133,[401]],[0,133,[403]],[0,133,[413]],[0,133,[415]],[0,133,[436]],[0,133,[438]],[0,133,[444]],[0,133,[446]],[0,133,[451]],[0,133,[455]],[0,133,[459]],[0,133,[463]],[0,133,[464]],[0,133,[466]],[0,133,[472]],[0,133,[474]],[0,133,[481]],[0,133,[485]],[0,133,[489]],[0,133,[493]],[0,133,[524]],[0,133,[526]],[0,133,[541]],[0,133,[543]],[0,133,[552]],[0,133,[554]],[0,133,[572]],[0,133,[574]],[0,133,[585]],[0,133,[587]],[0,133,[592]],[0,133,[593]],[0,133,[596]],[0,133,[597]],[0,133,[608]],[0,133,[610]],[0,133,[612]],[0,133,[614]],[0,133,[640]],[0,133,[642]],[0,133,[848]],[0,134,[245]],[0,134,[246]],[0,134,[253]],[0,134,[254]],[0,134,[255]],[0,134,[259]],[0,134,[271]],[0,134,[277]],[0,134,[298]],[0,134,[309]],[0,134,[311]],[0,134,[313]],[0,134,[315]],[0,134,[322]],[0,134,[326]],[0,134,[328]],[0,134,[332]],[0,134,[337]],[0,134,[339]],[0,134,[349]],[0,134,[351]],[0,134,[352]],[0,134,[356]],[0,134,[362]],[0,134,[366]],[0,134,[385]],[0,134,[389]],[0,134,[393]],[0,134,[397]],[0,134,[401]],[0,134,[403]],[0,134,[413]],[0,134,[415]],[0,134,[432]],[0,134,[434]],[0,134,[440]],[0,134,[442]],[0,134,[449]],[0,134,[453]],[0,134,[457]],[0,134,[461]],[0,134,[468]],[0,134,[470]],[0,134,[476]],[0,134,[478]],[0,134,[483]],[0,134,[487]],[0,134,[491]],[0,134,[495]],[0,134,[524]],[0,134,[526]],[0,134,[540]],[0,134,[542]],[0,134,[553]],[0,134,[555]],[0,134,[573]],[0,134,[575]],[0,134,[584]],[0,134,[586]],[0,134,[592]],[0,134,[593]],[0,134,[596]],[0,134,[597]],[0,134,[608]],[0,134,[610]],[0,134,[612]],[0,134,[614]],[0,134,[640]],[0,134,[642]],[0,134,[848]],[0,135,[245]],[0,135,[246]],[0,135,[252]],[0,135,[255]],[0,135,[259]],[0,135,[271]],[0,135,[277]],[0,135,[296]],[0,135,[309]],[0,135,[311]],[0,135,[313]],[0,135,[315]],[0,135,[320]],[0,135,[324]],[0,135,[330]],[0,135,[334]],[0,135,[337]],[0,135,[339]],[0,135,[349]],[0,135,[351]],[0,135,[354]],[0,135,[358]],[0,135,[360]],[0,135,[364]],[0,135,[387]],[0,135,[391]],[0,135,[395]],[0,135,[399]],[0,135,[401]],[0,135,[403]],[0,135,[413]],[0,135,[415]],[0,135,[432]],[0,135,[434]],[0,135,[440]],[0,135,[442]],[0,135,[451]],[0,135,[455]],[0,135,[459]],[0,135,[463]],[0,135,[468]],[0,135,[470]],[0,135,[476]],[0,135,[478]],[0,135,[481]],[0,135,[485]],[0,135,[489]],[0,135,[493]],[0,135,[498]],[0,135,[501]],[0,135,[502]],[0,135,[503]],[0,135,[504]],[0,135,[505]],[0,135,[507]],[0,135,[508]],[0,135,[524]],[0,135,[526]],[0,135,[540]],[0,135,[542]],[0,135,[552]],[0,135,[554]],[0,135,[573]],[0,135,[575]],[0,135,[585]],[0,135,[587]],[0,135,[594]],[0,135,[595]],[0,135,[598]],[0,135,[599]],[0,135,[608]],[0,135,[612]],[0,135,[623]],[0,135,[640]],[0,135,[642]],[0,135,[848]],[0,135,[932]],[0,135,[936]],[0,136,[246]],[0,136,[251]],[0,136,[258]],[0,136,[261]],[0,136,[273]],[0,136,[285]],[0,136,[293]],[0,136,[295]],[0,136,[297]],[0,136,[299]],[0,136,[311]],[0,136,[324]],[0,136,[326]],[0,136,[332]],[0,136,[334]],[0,136,[340]],[0,136,[342]],[0,136,[348]],[0,136,[350]],[0,136,[370]],[0,136,[374]],[0,136,[376]],[0,136,[380]],[0,136,[388]],[0,136,[390]],[0,136,[396]],[0,136,[398]],[0,136,[404]],[0,136,[406]],[0,136,[412]],[0,136,[414]],[0,136,[420]],[0,136,[422]],[0,136,[428]],[0,136,[430]],[0,136,[452]],[0,136,[454]],[0,136,[460]],[0,136,[462]],[0,136,[468]],[0,136,[470]],[0,136,[476]],[0,136,[478]],[0,136,[499]],[0,136,[503]],[0,136,[507]],[0,136,[511]],[0,136,[580]],[0,136,[582]],[0,136,[637]],[0,136,[639]],[0,136,[649]],[0,136,[651]],[0,136,[658]],[0,136,[659]],[0,136,[662]],[0,136,[663]],[0,136,[672]],[0,136,[674]],[0,136,[676]],[0,136,[678]],[0,136,[843]],[0,136,[925]],[0,137,[246]],[0,137,[247]],[0,137,[251]],[0,137,[253]],[0,137,[254]],[0,137,[258]],[0,137,[261]],[0,137,[273]],[0,137,[285]],[0,137,[293]],[0,137,[295]],[0,137,[297]],[0,137,[299]],[0,137,[308]],[0,137,[320]],[0,137,[322]],[0,137,[328]],[0,137,[330]],[0,137,[340]],[0,137,[342]],[0,137,[348]],[0,137,[350]],[0,137,[368]],[0,137,[372]],[0,137,[378]],[0,137,[382]],[0,137,[384]],[0,137,[386]],[0,137,[392]],[0,137,[394]],[0,137,[404]],[0,137,[406]],[0,137,[412]],[0,137,[414]],[0,137,[420]],[0,137,[422]],[0,137,[428]],[0,137,[430]],[0,137,[448]],[0,137,[450]],[0,137,[456]],[0,137,[458]],[0,137,[468]],[0,137,[470]],[0,137,[476]],[0,137,[478]],[0,137,[482]],[0,137,[483]],[0,137,[484]],[0,137,[485]],[0,137,[486]],[0,137,[487]],[0,137,[488]],[0,137,[489]],[0,137,[491]],[0,137,[492]],[0,137,[494]],[0,137,[495]],[0,137,[497]],[0,137,[501]],[0,137,[505]],[0,137,[509]],[0,137,[580]],[0,137,[582]],[0,137,[637]],[0,137,[639]],[0,137,[648]],[0,137,[650]],[0,137,[656]],[0,137,[657]],[0,137,[660]],[0,137,[661]],[0,137,[672]],[0,137,[674]],[0,137,[676]],[0,137,[682]],[0,137,[683]],[0,137,[686]],[0,137,[687]],[0,137,[843]],[0,137,[856]],[0,137,[870]],[0,137,[910]],[0,137,[966]],[0,138,[246]],[0,138,[251]],[0,138,[254]],[0,138,[258]],[0,138,[261]],[0,138,[273]],[0,138,[285]],[0,138,[289]],[0,138,[291]],[0,138,[301]],[0,138,[303]],[0,138,[306]],[0,138,[324]],[0,138,[326]],[0,138,[332]],[0,138,[334]],[0,138,[336]],[0,138,[338]],[0,138,[344]],[0,138,[346]],[0,138,[370]],[0,138,[374]],[0,138,[376]],[0,138,[380]],[0,138,[384]],[0,138,[386]],[0,138,[392]],[0,138,[394]],[0,138,[404]],[0,138,[406]],[0,138,[412]],[0,138,[414]],[0,138,[416]],[0,138,[418]],[0,138,[424]],[0,138,[426]],[0,138,[452]],[0,138,[454]],[0,138,[460]],[0,138,[462]],[0,138,[464]],[0,138,[466]],[0,138,[472]],[0,138,[474]],[0,138,[483]],[0,138,[485]],[0,138,[486]],[0,138,[487]],[0,138,[489]],[0,138,[491]],[0,138,[492]],[0,138,[495]],[0,138,[499]],[0,138,[503]],[0,138,[507]],[0,138,[511]],[0,138,[580]],[0,138,[582]],[0,138,[636]],[0,138,[638]],[0,138,[649]],[0,138,[651]],[0,138,[656]],[0,138,[657]],[0,138,[660]],[0,138,[661]],[0,138,[672]],[0,138,[679]],[0,138,[683]],[0,138,[686]],[0,138,[687]],[0,138,[870]],[0,138,[959]],[0,138,[967]],[0,139,[246]],[0,139,[247]],[0,139,[251]],[0,139,[253]],[0,139,[258]],[0,139,[261]],[0,139,[273]],[0,139,[285]],[0,139,[289]],[0,139,[291]],[0,139,[301]],[0,139,[303]],[0,139,[305]],[0,139,[320]],[0,139,[322]],[0,139,[328]],[0,139,[330]],[0,139,[336]],[0,139,[338]],[0,139,[344]],[0,139,[346]],[0,139,[368]],[0,139,[372]],[0,139,[378]],[0,139,[382]],[0,139,[388]],[0,139,[390]],[0,139,[396]],[0,139,[398]],[0,139,[404]],[0,139,[406]],[0,139,[412]],[0,139,[414]],[0,139,[416]],[0,139,[418]],[0,139,[424]],[0,139,[426]],[0,139,[448]],[0,139,[450]],[0,139,[456]],[0,139,[458]],[0,139,[464]],[0,139,[466]],[0,139,[472]],[0,139,[474]],[0,139,[497]],[0,139,[501]],[0,139,[505]],[0,139,[509]],[0,139,[580]],[0,139,[582]],[0,139,[636]],[0,139,[638]],[0,139,[648]],[0,139,[650]],[0,139,[658]],[0,139,[659]],[0,139,[662]],[0,139,[663]],[0,139,[672]],[0,139,[674]],[0,139,[676]],[0,139,[678]],[0,139,[856]],[0,139,[910]],[0,139,[925]],[0,140,[246]],[0,140,[251]],[0,140,[253]],[0,140,[258]],[0,140,[261]],[0,140,[273]],[0,140,[285]],[0,140,[289]],[0,140,[291]],[0,140,[301]],[0,140,[303]],[0,140,[319]],[0,140,[324]],[0,140,[326]],[0,140,[332]],[0,140,[334]],[0,140,[340]],[0,140,[342]],[0,140,[348]],[0,140,[350]],[0,140,[368]],[0,140,[372]],[0,140,[378]],[0,140,[382]],[0,140,[388]],[0,140,[390]],[0,140,[396]],[0,140,[398]],[0,140,[400]],[0,140,[402]],[0,140,[408]],[0,140,[410]],[0,140,[420]],[0,140,[422]],[0,140,[428]],[0,140,[430]],[0,140,[448]],[0,140,[450]],[0,140,[456]],[0,140,[458]],[0,140,[464]],[0,140,[466]],[0,140,[472]],[0,140,[474]],[0,140,[482]],[0,140,[483]],[0,140,[488]],[0,140,[495]],[0,140,[499]],[0,140,[503]],[0,140,[507]],[0,140,[511]],[0,140,[576]],[0,140,[578]],[0,140,[636]],[0,140,[638]],[0,140,[648]],[0,140,[650]],[0,140,[658]],[0,140,[659]],[0,140,[662]],[0,140,[663]],[0,140,[672]],[0,140,[674]],[0,140,[677]],[0,140,[678]],[0,140,[686]],[0,140,[792]],[0,140,[856]],[0,140,[910]],[0,140,[925]],[0,140,[959]],[0,140,[966]],[0,141,[246]],[0,141,[247]],[0,141,[251]],[0,141,[254]],[0,141,[258]],[0,141,[261]],[0,141,[273]],[0,141,[285]],[0,141,[289]],[0,141,[291]],[0,141,[301]],[0,141,[303]],[0,141,[316]],[0,141,[320]],[0,141,[322]],[0,141,[328]],[0,141,[330]],[0,141,[340]],[0,141,[342]],[0,141,[348]],[0,141,[350]],[0,141,[370]],[0,141,[374]],[0,141,[376]],[0,141,[380]],[0,141,[384]],[0,141,[386]],[0,141,[392]],[0,141,[394]],[0,141,[400]],[0,141,[402]],[0,141,[408]],[0,141,[410]],[0,141,[420]],[0,141,[422]],[0,141,[428]],[0,141,[430]],[0,141,[452]],[0,141,[454]],[0,141,[460]],[0,141,[462]],[0,141,[464]],[0,141,[466]],[0,141,[472]],[0,141,[474]],[0,141,[497]],[0,141,[501]],[0,141,[505]],[0,141,[509]],[0,141,[576]],[0,141,[578]],[0,141,[636]],[0,141,[638]],[0,141,[649]],[0,141,[651]],[0,141,[656]],[0,141,[657]],[0,141,[660]],[0,141,[661]],[0,141,[672]],[0,141,[674]],[0,141,[676]],[0,141,[678]],[0,141,[792]],[0,141,[870]],[0,142,[246]],[0,142,[251]],[0,142,[253]],[0,142,[254]],[0,142,[258]],[0,142,[261]],[0,142,[273]],[0,142,[285]],[0,142,[293]],[0,142,[295]],[0,142,[297]],[0,142,[299]],[0,142,[314]],[0,142,[324]],[0,142,[326]],[0,142,[332]],[0,142,[334]],[0,142,[336]],[0,142,[338]],[0,142,[344]],[0,142,[346]],[0,142,[368]],[0,142,[372]],[0,142,[378]],[0,142,[382]],[0,142,[384]],[0,142,[386]],[0,142,[392]],[0,142,[394]],[0,142,[400]],[0,142,[402]],[0,142,[408]],[0,142,[410]],[0,142,[416]],[0,142,[418]],[0,142,[424]],[0,142,[426]],[0,142,[448]],[0,142,[450]],[0,142,[456]],[0,142,[458]],[0,142,[468]],[0,142,[470]],[0,142,[476]],[0,142,[478]],[0,142,[499]],[0,142,[503]],[0,142,[507]],[0,142,[511]],[0,142,[576]],[0,142,[578]],[0,142,[637]],[0,142,[639]],[0,142,[648]],[0,142,[650]],[0,142,[656]],[0,142,[657]],[0,142,[660]],[0,142,[661]],[0,142,[672]],[0,142,[674]],[0,142,[676]],[0,142,[678]],[0,142,[792]],[0,142,[843]],[0,142,[856]],[0,142,[870]],[0,142,[910]],[0,143,[246]],[0,143,[247]],[0,143,[251]],[0,143,[258]],[0,143,[261]],[0,143,[273]],[0,143,[285]],[0,143,[293]],[0,143,[295]],[0,143,[297]],[0,143,[299]],[0,143,[313]],[0,143,[320]],[0,143,[322]],[0,143,[328]],[0,143,[330]],[0,143,[336]],[0,143,[338]],[0,143,[344]],[0,143,[346]],[0,143,[370]],[0,143,[374]],[0,143,[376]],[0,143,[380]],[0,143,[388]],[0,143,[390]],[0,143,[396]],[0,143,[398]],[0,143,[400]],[0,143,[402]],[0,143,[408]],[0,143,[410]],[0,143,[416]],[0,143,[418]],[0,143,[424]],[0,143,[426]],[0,143,[452]],[0,143,[454]],[0,143,[460]],[0,143,[462]],[0,143,[468]],[0,143,[470]],[0,143,[476]],[0,143,[478]],[0,143,[483]],[0,143,[484]],[0,143,[494]],[0,143,[495]],[0,143,[497]],[0,143,[501]],[0,143,[505]],[0,143,[509]],[0,143,[576]],[0,143,[578]],[0,143,[637]],[0,143,[639]],[0,143,[649]],[0,143,[651]],[0,143,[658]],[0,143,[659]],[0,143,[662]],[0,143,[663]],[0,143,[672]],[0,143,[676]],[0,143,[677]],[0,143,[678]],[0,143,[679]],[0,143,[682]],[0,143,[686]],[0,143,[792]],[0,143,[843]],[0,143,[925]],[0,143,[967]],[0,144,[246]],[0,144,[253]],[0,144,[254]],[0,144,[255]],[0,144,[256]],[0,144,[258]],[0,144,[262]],[0,144,[268]],[0,144,[274]],[0,144,[291]],[0,144,[295]],[0,144,[299]],[0,144,[303]],[0,144,[307]],[0,144,[311]],[0,144,[315]],[0,144,[319]],[0,144,[327]],[0,144,[355]],[0,144,[359]],[0,144,[363]],[0,144,[367]],[0,144,[371]],[0,144,[375]],[0,144,[379]],[0,144,[383]],[0,144,[419]],[0,144,[423]],[0,144,[427]],[0,144,[431]],[0,144,[435]],[0,144,[439]],[0,144,[443]],[0,144,[447]],[0,144,[483]],[0,144,[487]],[0,144,[491]],[0,144,[495]],[0,144,[499]],[0,144,[503]],[0,144,[507]],[0,144,[511]],[0,144,[516]],[0,144,[518]],[0,144,[532]],[0,144,[534]],[0,144,[688]],[0,144,[690]],[0,144,[692]],[0,144,[694]],[0,144,[706]],[0,144,[707]],[0,144,[710]],[0,144,[711]],[0,144,[722]],[0,144,[723]],[0,144,[726]],[0,144,[727]],[0,144,[799]],[0,144,[827]],[0,144,[883]],[0,144,[909]],[0,145,[246]],[0,145,[252]],[0,145,[255]],[0,145,[256]],[0,145,[258]],[0,145,[262]],[0,145,[268]],[0,145,[274]],[0,145,[289]],[0,145,[293]],[0,145,[297]],[0,145,[301]],[0,145,[307]],[0,145,[311]],[0,145,[315]],[0,145,[319]],[0,145,[324]],[0,145,[353]],[0,145,[357]],[0,145,[361]],[0,145,[365]],[0,145,[371]],[0,145,[375]],[0,145,[379]],[0,145,[383]],[0,145,[417]],[0,145,[421]],[0,145,[425]],[0,145,[429]],[0,145,[435]],[0,145,[439]],[0,145,[443]],[0,145,[447]],[0,145,[466]],[0,145,[467]],[0,145,[468]],[0,145,[469]],[0,145,[470]],[0,145,[471]],[0,145,[472]],[0,145,[473]],[0,145,[475]],[0,145,[476]],[0,145,[478]],[0,145,[479]],[0,145,[481]],[0,145,[485]],[0,145,[489]],[0,145,[493]],[0,145,[499]],[0,145,[503]],[0,145,[507]],[0,145,[511]],[0,145,[516]],[0,145,[518]],[0,145,[532]],[0,145,[534]],[0,145,[688]],[0,145,[690]],[0,145,[692]],[0,145,[698]],[0,145,[699]],[0,145,[702]],[0,145,[703]],[0,145,[704]],[0,145,[705]],[0,145,[708]],[0,145,[709]],[0,145,[720]],[0,145,[721]],[0,145,[724]],[0,145,[725]],[0,145,[812]],[0,145,[827]],[0,145,[840]],[0,145,[882]],[0,145,[965]],[0,146,[246]],[0,146,[247]],[0,146,[255]],[0,146,[256]],[0,146,[258]],[0,146,[262]],[0,146,[268]],[0,146,[274]],[0,146,[291]],[0,146,[295]],[0,146,[299]],[0,146,[303]],[0,146,[305]],[0,146,[309]],[0,146,[313]],[0,146,[317]],[0,146,[322]],[0,146,[355]],[0,146,[359]],[0,146,[363]],[0,146,[367]],[0,146,[369]],[0,146,[373]],[0,146,[377]],[0,146,[381]],[0,146,[419]],[0,146,[423]],[0,146,[427]],[0,146,[431]],[0,146,[433]],[0,146,[437]],[0,146,[441]],[0,146,[445]],[0,146,[467]],[0,146,[469]],[0,146,[470]],[0,146,[471]],[0,146,[473]],[0,146,[475]],[0,146,[476]],[0,146,[479]],[0,146,[483]],[0,146,[487]],[0,146,[491]],[0,146,[495]],[0,146,[497]],[0,146,[501]],[0,146,[505]],[0,146,[509]],[0,146,[516]],[0,146,[518]],[0,146,[532]],[0,146,[534]],[0,146,[688]],[0,146,[695]],[0,146,[699]],[0,146,[702]],[0,146,[703]],[0,146,[704]],[0,146,[705]],[0,146,[708]],[0,146,[709]],[0,146,[720]],[0,146,[721]],[0,146,[724]],[0,146,[725]],[0,146,[784]],[0,146,[799]],[0,146,[826]],[0,146,[883]],[0,146,[958]],[0,146,[964]],[0,147,[246]],[0,147,[247]],[0,147,[252]],[0,147,[253]],[0,147,[254]],[0,147,[255]],[0,147,[256]],[0,147,[258]],[0,147,[262]],[0,147,[268]],[0,147,[274]],[0,147,[289]],[0,147,[293]],[0,147,[297]],[0,147,[301]],[0,147,[305]],[0,147,[309]],[0,147,[313]],[0,147,[317]],[0,147,[321]],[0,147,[353]],[0,147,[357]],[0,147,[361]],[0,147,[365]],[0,147,[369]],[0,147,[373]],[0,147,[377]],[0,147,[381]],[0,147,[417]],[0,147,[421]],[0,147,[425]],[0,147,[429]],[0,147,[433]],[0,147,[437]],[0,147,[441]],[0,147,[445]],[0,147,[481]],[0,147,[485]],[0,147,[489]],[0,147,[493]],[0,147,[497]],[0,147,[501]],[0,147,[505]],[0,147,[509]],[0,147,[516]],[0,147,[518]],[0,147,[532]],[0,147,[534]],[0,147,[688]],[0,147,[690]],[0,147,[692]],[0,147,[694]],[0,147,[706]],[0,147,[707]],[0,147,[710]],[0,147,[711]],[0,147,[722]],[0,147,[723]],[0,147,[726]],[0,147,[727]],[0,147,[784]],[0,147,[812]],[0,147,[826]],[0,147,[840]],[0,147,[882]],[0,147,[909]],[0,148,[246]],[0,148,[252]],[0,148,[253]],[0,148,[254]],[0,148,[255]],[0,148,[256]],[0,148,[258]],[0,148,[262]],[0,148,[268]],[0,148,[274]],[0,148,[289]],[0,148,[293]],[0,148,[297]],[0,148,[301]],[0,148,[307]],[0,148,[311]],[0,148,[315]],[0,148,[319]],[0,148,[335]],[0,148,[355]],[0,148,[359]],[0,148,[363]],[0,148,[367]],[0,148,[369]],[0,148,[373]],[0,148,[377]],[0,148,[381]],[0,148,[419]],[0,148,[423]],[0,148,[427]],[0,148,[431]],[0,148,[433]],[0,148,[437]],[0,148,[441]],[0,148,[445]],[0,148,[466]],[0,148,[467]],[0,148,[472]],[0,148,[479]],[0,148,[481]],[0,148,[485]],[0,148,[489]],[0,148,[493]],[0,148,[499]],[0,148,[503]],[0,148,[507]],[0,148,[511]],[0,148,[512]],[0,148,[514]],[0,148,[528]],[0,148,[530]],[0,148,[688]],[0,148,[690]],[0,148,[693]],[0,148,[694]],[0,148,[702]],[0,148,[706]],[0,148,[707]],[0,148,[710]],[0,148,[711]],[0,148,[722]],[0,148,[723]],[0,148,[726]],[0,148,[727]],[0,148,[737]],[0,148,[799]],[0,148,[827]],[0,148,[840]],[0,148,[882]],[0,148,[909]],[0,148,[964]],[0,149,[246]],[0,149,[255]],[0,149,[256]],[0,149,[258]],[0,149,[262]],[0,149,[268]],[0,149,[274]],[0,149,[291]],[0,149,[295]],[0,149,[299]],[0,149,[303]],[0,149,[307]],[0,149,[311]],[0,149,[315]],[0,149,[319]],[0,149,[332]],[0,149,[353]],[0,149,[357]],[0,149,[361]],[0,149,[365]],[0,149,[369]],[0,149,[373]],[0,149,[377]],[0,149,[381]],[0,149,[417]],[0,149,[421]],[0,149,[425]],[0,149,[429]],[0,149,[433]],[0,149,[437]],[0,149,[441]],[0,149,[445]],[0,149,[483]],[0,149,[487]],[0,149,[491]],[0,149,[495]],[0,149,[499]],[0,149,[503]],[0,149,[507]],[0,149,[511]],[0,149,[512]],[0,149,[514]],[0,149,[528]],[0,149,[530]],[0,149,[688]],[0,149,[690]],[0,149,[692]],[0,149,[694]],[0,149,[704]],[0,149,[705]],[0,149,[708]],[0,149,[709]],[0,149,[720]],[0,149,[721]],[0,149,[724]],[0,149,[725]],[0,149,[737]],[0,149,[812]],[0,149,[827]],[0,149,[883]],[0,150,[246]],[0,150,[247]],[0,150,[252]],[0,150,[255]],[0,150,[256]],[0,150,[258]],[0,150,[262]],[0,150,[268]],[0,150,[274]],[0,150,[289]],[0,150,[293]],[0,150,[297]],[0,150,[301]],[0,150,[305]],[0,150,[309]],[0,150,[313]],[0,150,[317]],[0,150,[330]],[0,150,[355]],[0,150,[359]],[0,150,[363]],[0,150,[367]],[0,150,[371]],[0,150,[375]],[0,150,[379]],[0,150,[383]],[0,150,[419]],[0,150,[423]],[0,150,[427]],[0,150,[431]],[0,150,[435]],[0,150,[439]],[0,150,[443]],[0,150,[447]],[0,150,[481]],[0,150,[485]],[0,150,[489]],[0,150,[493]],[0,150,[497]],[0,150,[501]],[0,150,[505]],[0,150,[509]],[0,150,[512]],[0,150,[514]],[0,150,[528]],[0,150,[530]],[0,150,[688]],[0,150,[690]],[0,150,[692]],[0,150,[694]],[0,150,[704]],[0,150,[705]],[0,150,[708]],[0,150,[709]],[0,150,[720]],[0,150,[721]],[0,150,[724]],[0,150,[725]],[0,150,[737]],[0,150,[784]],[0,150,[799]],[0,150,[826]],[0,150,[840]],[0,150,[882]],[0,151,[246]],[0,151,[247]],[0,151,[253]],[0,151,[254]],[0,151,[255]],[0,151,[256]],[0,151,[258]],[0,151,[262]],[0,151,[268]],[0,151,[274]],[0,151,[291]],[0,151,[295]],[0,151,[299]],[0,151,[303]],[0,151,[305]],[0,151,[309]],[0,151,[313]],[0,151,[317]],[0,151,[329]],[0,151,[353]],[0,151,[357]],[0,151,[361]],[0,151,[365]],[0,151,[371]],[0,151,[375]],[0,151,[379]],[0,151,[383]],[0,151,[417]],[0,151,[421]],[0,151,[425]],[0,151,[429]],[0,151,[435]],[0,151,[439]],[0,151,[443]],[0,151,[447]],[0,151,[467]],[0,151,[468]],[0,151,[478]],[0,151,[479]],[0,151,[483]],[0,151,[487]],[0,151,[491]],[0,151,[495]],[0,151,[497]],[0,151,[501]],[0,151,[505]],[0,151,[509]],[0,151,[512]],[0,151,[514]],[0,151,[528]],[0,151,[530]],[0,151,[688]],[0,151,[692]],[0,151,[693]],[0,151,[694]],[0,151,[695]],[0,151,[698]],[0,151,[702]],[0,151,[706]],[0,151,[707]],[0,151,[710]],[0,151,[711]],[0,151,[722]],[0,151,[723]],[0,151,[726]],[0,151,[727]],[0,151,[737]],[0,151,[784]],[0,151,[812]],[0,151,[826]],[0,151,[883]],[0,151,[909]],[0,151,[958]],[0,151,[965]],[0,152,[246]],[0,152,[257]],[0,152,[259]],[0,152,[263]],[0,152,[280]],[0,152,[286]],[0,152,[292]],[0,152,[294]],[0,152,[300]],[0,152,[302]],[0,152,[308]],[0,152,[310]],[0,152,[316]],[0,152,[318]],[0,152,[342]],[0,152,[356]],[0,152,[358]],[0,152,[364]],[0,152,[366]],[0,152,[372]],[0,152,[374]],[0,152,[380]],[0,152,[382]],[0,152,[420]],[0,152,[422]],[0,152,[428]],[0,152,[430]],[0,152,[436]],[0,152,[438]],[0,152,[444]],[0,152,[446]],[0,152,[484]],[0,152,[486]],[0,152,[492]],[0,152,[494]],[0,152,[500]],[0,152,[502]],[0,152,[508]],[0,152,[510]],[0,152,[516]],[0,152,[518]],[0,152,[548]],[0,152,[550]],[0,152,[690]],[0,152,[691]],[0,152,[694]],[0,152,[695]],[0,152,[704]],[0,152,[706]],[0,152,[708]],[0,152,[710]],[0,152,[724]],[0,152,[726]],[0,152,[783]],[0,152,[853]],[0,153,[246]],[0,153,[247]],[0,153,[252]],[0,153,[254]],[0,153,[257]],[0,153,[259]],[0,153,[263]],[0,153,[280]],[0,153,[286]],[0,153,[292]],[0,153,[294]],[0,153,[300]],[0,153,[302]],[0,153,[308]],[0,153,[310]],[0,153,[316]],[0,153,[318]],[0,153,[340]],[0,153,[352]],[0,153,[354]],[0,153,[360]],[0,153,[362]],[0,153,[368]],[0,153,[370]],[0,153,[376]],[0,153,[378]],[0,153,[420]],[0,153,[422]],[0,153,[428]],[0,153,[430]],[0,153,[436]],[0,153,[438]],[0,153,[444]],[0,153,[446]],[0,153,[450]],[0,153,[453]],[0,153,[456]],[0,153,[457]],[0,153,[480]],[0,153,[482]],[0,153,[488]],[0,153,[490]],[0,153,[496]],[0,153,[498]],[0,153,[504]],[0,153,[506]],[0,153,[516]],[0,153,[518]],[0,153,[548]],[0,153,[550]],[0,153,[688]],[0,153,[689]],[0,153,[692]],[0,153,[693]],[0,153,[704]],[0,153,[708]],[0,153,[709]],[0,153,[710]],[0,153,[711]],[0,153,[720]],[0,153,[722]],[0,153,[783]],[0,153,[824]],[0,153,[919]],[0,153,[956]],[0,153,[962]],[0,154,[246]],[0,154,[254]],[0,154,[257]],[0,154,[259]],[0,154,[263]],[0,154,[280]],[0,154,[286]],[0,154,[288]],[0,154,[290]],[0,154,[296]],[0,154,[298]],[0,154,[304]],[0,154,[306]],[0,154,[312]],[0,154,[314]],[0,154,[338]],[0,154,[356]],[0,154,[358]],[0,154,[364]],[0,154,[366]],[0,154,[372]],[0,154,[374]],[0,154,[380]],[0,154,[382]],[0,154,[416]],[0,154,[418]],[0,154,[424]],[0,154,[426]],[0,154,[432]],[0,154,[434]],[0,154,[440]],[0,154,[442]],[0,154,[452]],[0,154,[453]],[0,154,[454]],[0,154,[455]],[0,154,[457]],[0,154,[459]],[0,154,[460]],[0,154,[462]],[0,154,[484]],[0,154,[486]],[0,154,[492]],[0,154,[494]],[0,154,[500]],[0,154,[502]],[0,154,[508]],[0,154,[510]],[0,154,[516]],[0,154,[518]],[0,154,[548]],[0,154,[550]],[0,154,[688]],[0,154,[689]],[0,154,[692]],[0,154,[693]],[0,154,[704]],[0,154,[706]],[0,154,[709]],[0,154,[714]],[0,154,[715]],[0,154,[719]],[0,154,[720]],[0,154,[722]],[0,154,[810]],[0,154,[838]],[0,154,[853]],[0,154,[919]],[0,154,[963]],[0,155,[246]],[0,155,[247]],[0,155,[252]],[0,155,[257]],[0,155,[259]],[0,155,[263]],[0,155,[280]],[0,155,[286]],[0,155,[288]],[0,155,[290]],[0,155,[296]],[0,155,[298]],[0,155,[304]],[0,155,[306]],[0,155,[312]],[0,155,[314]],[0,155,[336]],[0,155,[352]],[0,155,[354]],[0,155,[360]],[0,155,[362]],[0,155,[368]],[0,155,[370]],[0,155,[376]],[0,155,[378]],[0,155,[416]],[0,155,[418]],[0,155,[424]],[0,155,[426]],[0,155,[432]],[0,155,[434]],[0,155,[440]],[0,155,[442]],[0,155,[480]],[0,155,[482]],[0,155,[488]],[0,155,[490]],[0,155,[496]],[0,155,[498]],[0,155,[504]],[0,155,[506]],[0,155,[516]],[0,155,[518]],[0,155,[548]],[0,155,[550]],[0,155,[690]],[0,155,[691]],[0,155,[694]],[0,155,[695]],[0,155,[704]],[0,155,[706]],[0,155,[708]],[0,155,[710]],[0,155,[724]],[0,155,[726]],[0,155,[810]],[0,155,[824]],[0,155,[838]],[0,156,[246]],[0,156,[252]],[0,156,[257]],[0,156,[259]],[0,156,[263]],[0,156,[280]],[0,156,[286]],[0,156,[288]],[0,156,[290]],[0,156,[296]],[0,156,[298]],[0,156,[308]],[0,156,[310]],[0,156,[316]],[0,156,[318]],[0,156,[351]],[0,156,[356]],[0,156,[358]],[0,156,[364]],[0,156,[366]],[0,156,[368]],[0,156,[370]],[0,156,[376]],[0,156,[378]],[0,156,[420]],[0,156,[422]],[0,156,[428]],[0,156,[430]],[0,156,[432]],[0,156,[434]],[0,156,[440]],[0,156,[442]],[0,156,[452]],[0,156,[453]],[0,156,[457]],[0,156,[462]],[0,156,[480]],[0,156,[482]],[0,156,[488]],[0,156,[490]],[0,156,[500]],[0,156,[502]],[0,156,[508]],[0,156,[510]],[0,156,[512]],[0,156,[514]],[0,156,[544]],[0,156,[546]],[0,156,[690]],[0,156,[691]],[0,156,[694]],[0,156,[695]],[0,156,[704]],[0,156,[706]],[0,156,[710]],[0,156,[711]],[0,156,[714]],[0,156,[715]],[0,156,[724]],[0,156,[726]],[0,156,[736]],[0,156,[764]],[0,156,[783]],[0,156,[838]],[0,156,[962]],[0,157,[246]],[0,157,[247]],[0,157,[254]],[0,157,[257]],[0,157,[259]],[0,157,[263]],[0,157,[280]],[0,157,[286]],[0,157,[288]],[0,157,[290]],[0,157,[296]],[0,157,[298]],[0,157,[308]],[0,157,[310]],[0,157,[316]],[0,157,[318]],[0,157,[349]],[0,157,[352]],[0,157,[354]],[0,157,[360]],[0,157,[362]],[0,157,[372]],[0,157,[374]],[0,157,[380]],[0,157,[382]],[0,157,[420]],[0,157,[422]],[0,157,[428]],[0,157,[430]],[0,157,[432]],[0,157,[434]],[0,157,[440]],[0,157,[442]],[0,157,[484]],[0,157,[486]],[0,157,[492]],[0,157,[494]],[0,157,[496]],[0,157,[498]],[0,157,[504]],[0,157,[506]],[0,157,[512]],[0,157,[514]],[0,157,[544]],[0,157,[546]],[0,157,[688]],[0,157,[689]],[0,157,[692]],[0,157,[693]],[0,157,[704]],[0,157,[706]],[0,157,[708]],[0,157,[710]],[0,157,[720]],[0,157,[722]],[0,157,[736]],[0,157,[764]],[0,157,[783]],[0,157,[824]],[0,157,[838]],[0,157,[853]],[0,157,[919]],[0,158,[246]],[0,158,[252]],[0,158,[254]],[0,158,[257]],[0,158,[259]],[0,158,[263]],[0,158,[280]],[0,158,[286]],[0,158,[292]],[0,158,[294]],[0,158,[300]],[0,158,[302]],[0,158,[304]],[0,158,[306]],[0,158,[312]],[0,158,[314]],[0,158,[347]],[0,158,[356]],[0,158,[358]],[0,158,[364]],[0,158,[366]],[0,158,[368]],[0,158,[370]],[0,158,[376]],[0,158,[378]],[0,158,[416]],[0,158,[418]],[0,158,[424]],[0,158,[426]],[0,158,[436]],[0,158,[438]],[0,158,[444]],[0,158,[446]],[0,158,[480]],[0,158,[482]],[0,158,[488]],[0,158,[490]],[0,158,[500]],[0,158,[502]],[0,158,[508]],[0,158,[510]],[0,158,[512]],[0,158,[514]],[0,158,[544]],[0,158,[546]],[0,158,[688]],[0,158,[689]],[0,158,[692]],[0,158,[693]],[0,158,[704]],[0,158,[706]],[0,158,[708]],[0,158,[710]],[0,158,[720]],[0,158,[722]],[0,158,[736]],[0,158,[764]],[0,158,[810]],[0,158,[919]],[0,159,[246]],[0,159,[247]],[0,159,[257]],[0,159,[259]],[0,159,[263]],[0,159,[280]],[0,159,[286]],[0,159,[292]],[0,159,[294]],[0,159,[300]],[0,159,[302]],[0,159,[304]],[0,159,[306]],[0,159,[312]],[0,159,[314]],[0,159,[345]],[0,159,[352]],[0,159,[354]],[0,159,[360]],[0,159,[362]],[0,159,[372]],[0,159,[374]],[0,159,[380]],[0,159,[382]],[0,159,[416]],[0,159,[418]],[0,159,[424]],[0,159,[426]],[0,159,[436]],[0,159,[438]],[0,159,[444]],[0,159,[446]],[0,159,[450]],[0,159,[453]],[0,159,[454]],[0,159,[455]],[0,159,[456]],[0,159,[457]],[0,159,[459]],[0,159,[460]],[0,159,[484]],[0,159,[486]],[0,159,[492]],[0,159,[494]],[0,159,[496]],[0,159,[498]],[0,159,[504]],[0,159,[506]],[0,159,[512]],[0,159,[514]],[0,159,[544]],[0,159,[546]],[0,159,[690]],[0,159,[691]],[0,159,[694]],[0,159,[695]],[0,159,[704]],[0,159,[708]],[0,159,[719]],[0,159,[724]],[0,159,[726]],[0,159,[736]],[0,159,[764]],[0,159,[810]],[0,159,[824]],[0,159,[853]],[0,159,[956]],[0,159,[963]],[0,160,[246]],[0,160,[250]],[0,160,[252]],[0,160,[254]],[0,160,[255]],[0,160,[259]],[0,160,[260]],[0,160,[267]],[0,160,[279]],[0,160,[290]],[0,160,[294]],[0,160,[296]],[0,160,[300]],[0,160,[323]],[0,160,[327]],[0,160,[331]],[0,160,[335]],[0,160,[339]],[0,160,[343]],[0,160,[347]],[0,160,[351]],[0,160,[359]],[0,160,[373]],[0,160,[375]],[0,160,[377]],[0,160,[379]],[0,160,[386]],[0,160,[390]],[0,160,[392]],[0,160,[396]],[0,160,[404]],[0,160,[406]],[0,160,[412]],[0,160,[414]],[0,160,[419]],[0,160,[423]],[0,160,[427]],[0,160,[431]],[0,160,[451]],[0,160,[455]],[0,160,[459]],[0,160,[463]],[0,160,[467]],[0,160,[471]],[0,160,[475]],[0,160,[479]],[0,160,[500]],[0,160,[502]],[0,160,[508]],[0,160,[510]],[0,160,[564]],[0,160,[566]],[0,160,[633]],[0,160,[635]],[0,160,[653]],[0,160,[655]],[0,160,[656]],[0,160,[658]],[0,160,[660]],[0,160,[662]],[0,160,[674]],[0,160,[675]],[0,160,[678]],[0,160,[679]],[0,160,[729]],[0,160,[731]],[0,160,[741]],[0,160,[780]],[0,160,[859]],[0,160,[885]],[0,160,[913]],[0,161,[246]],[0,161,[250]],[0,161,[253]],[0,161,[255]],[0,161,[259]],[0,161,[260]],[0,161,[267]],[0,161,[279]],[0,161,[288]],[0,161,[292]],[0,161,[298]],[0,161,[302]],[0,161,[321]],[0,161,[325]],[0,161,[329]],[0,161,[333]],[0,161,[339]],[0,161,[343]],[0,161,[347]],[0,161,[351]],[0,161,[357]],[0,161,[373]],[0,161,[375]],[0,161,[377]],[0,161,[379]],[0,161,[384]],[0,161,[388]],[0,161,[394]],[0,161,[398]],[0,161,[404]],[0,161,[406]],[0,161,[412]],[0,161,[414]],[0,161,[417]],[0,161,[421]],[0,161,[425]],[0,161,[429]],[0,161,[434]],[0,161,[435]],[0,161,[438]],[0,161,[439]],[0,161,[440]],[0,161,[443]],[0,161,[444]],[0,161,[447]],[0,161,[449]],[0,161,[453]],[0,161,[457]],[0,161,[461]],[0,161,[467]],[0,161,[471]],[0,161,[475]],[0,161,[479]],[0,161,[500]],[0,161,[502]],[0,161,[508]],[0,161,[510]],[0,161,[564]],[0,161,[566]],[0,161,[632]],[0,161,[634]],[0,161,[653]],[0,161,[655]],[0,161,[656]],[0,161,[658]],[0,161,[661]],[0,161,[663]],[0,161,[667]],[0,161,[670]],[0,161,[671]],[0,161,[672]],[0,161,[673]],[0,161,[676]],[0,161,[677]],[0,161,[728]],[0,161,[730]],[0,161,[741]],[0,161,[780]],[0,161,[844]],[0,161,[859]],[0,161,[884]],[0,161,[912]],[0,161,[969]],[0,162,[246]],[0,162,[247]],[0,162,[250]],[0,162,[255]],[0,162,[259]],[0,162,[260]],[0,162,[267]],[0,162,[279]],[0,162,[290]],[0,162,[294]],[0,162,[296]],[0,162,[300]],[0,162,[323]],[0,162,[327]],[0,162,[331]],[0,162,[335]],[0,162,[337]],[0,162,[341]],[0,162,[345]],[0,162,[349]],[0,162,[355]],[0,162,[369]],[0,162,[371]],[0,162,[381]],[0,162,[383]],[0,162,[384]],[0,162,[388]],[0,162,[394]],[0,162,[398]],[0,162,[404]],[0,162,[406]],[0,162,[412]],[0,162,[414]],[0,162,[419]],[0,162,[423]],[0,162,[427]],[0,162,[431]],[0,162,[435]],[0,162,[436]],[0,162,[446]],[0,162,[447]],[0,162,[451]],[0,162,[455]],[0,162,[459]],[0,162,[463]],[0,162,[465]],[0,162,[469]],[0,162,[473]],[0,162,[477]],[0,162,[496]],[0,162,[498]],[0,162,[504]],[0,162,[506]],[0,162,[564]],[0,162,[566]],[0,162,[633]],[0,162,[635]],[0,162,[652]],[0,162,[654]],[0,162,[656]],[0,162,[660]],[0,162,[661]],[0,162,[662]],[0,162,[666]],[0,162,[670]],[0,162,[672]],[0,162,[673]],[0,162,[676]],[0,162,[677]],[0,162,[728]],[0,162,[730]],[0,162,[741]],[0,162,[780]],[0,162,[858]],[0,162,[884]],[0,162,[898]],[0,162,[913]],[0,162,[961]],[0,162,[968]],[0,163,[246]],[0,163,[247]],[0,163,[250]],[0,163,[252]],[0,163,[253]],[0,163,[254]],[0,163,[255]],[0,163,[259]],[0,163,[260]],[0,163,[267]],[0,163,[279]],[0,163,[288]],[0,163,[292]],[0,163,[298]],[0,163,[302]],[0,163,[321]],[0,163,[325]],[0,163,[329]],[0,163,[333]],[0,163,[337]],[0,163,[341]],[0,163,[345]],[0,163,[349]],[0,163,[353]],[0,163,[369]],[0,163,[371]],[0,163,[381]],[0,163,[383]],[0,163,[386]],[0,163,[390]],[0,163,[392]],[0,163,[396]],[0,163,[404]],[0,163,[406]],[0,163,[412]],[0,163,[414]],[0,163,[417]],[0,163,[421]],[0,163,[425]],[0,163,[429]],[0,163,[449]],[0,163,[453]],[0,163,[457]],[0,163,[461]],[0,163,[465]],[0,163,[469]],[0,163,[473]],[0,163,[477]],[0,163,[496]],[0,163,[498]],[0,163,[504]],[0,163,[506]],[0,163,[564]],[0,163,[566]],[0,163,[632]],[0,163,[634]],[0,163,[652]],[0,163,[654]],[0,163,[656]],[0,163,[658]],[0,163,[660]],[0,163,[662]],[0,163,[674]],[0,163,[675]],[0,163,[678]],[0,163,[679]],[0,163,[729]],[0,163,[731]],[0,163,[741]],[0,163,[780]],[0,163,[844]],[0,163,[858]],[0,163,[885]],[0,163,[898]],[0,163,[912]],[0,164,[246]],[0,164,[250]],[0,164,[252]],[0,164,[253]],[0,164,[254]],[0,164,[255]],[0,164,[259]],[0,164,[260]],[0,164,[267]],[0,164,[279]],[0,164,[288]],[0,164,[292]],[0,164,[298]],[0,164,[302]],[0,164,[323]],[0,164,[327]],[0,164,[331]],[0,164,[335]],[0,164,[339]],[0,164,[343]],[0,164,[347]],[0,164,[351]],[0,164,[366]],[0,164,[369]],[0,164,[371]],[0,164,[381]],[0,164,[383]],[0,164,[386]],[0,164,[390]],[0,164,[392]],[0,164,[396]],[0,164,[400]],[0,164,[402]],[0,164,[408]],[0,164,[410]],[0,164,[419]],[0,164,[423]],[0,164,[427]],[0,164,[431]],[0,164,[436]],[0,164,[437]],[0,164,[441]],[0,164,[446]],[0,164,[449]],[0,164,[453]],[0,164,[457]],[0,164,[461]],[0,164,[465]],[0,164,[469]],[0,164,[473]],[0,164,[477]],[0,164,[500]],[0,164,[502]],[0,164,[508]],[0,164,[510]],[0,164,[560]],[0,164,[562]],[0,164,[632]],[0,164,[634]],[0,164,[652]],[0,164,[654]],[0,164,[656]],[0,164,[658]],[0,164,[662]],[0,164,[663]],[0,164,[666]],[0,164,[667]],[0,164,[674]],[0,164,[675]],[0,164,[678]],[0,164,[679]],[0,164,[729]],[0,164,[731]],[0,164,[740]],[0,164,[778]],[0,164,[844]],[0,164,[858]],[0,164,[885]],[0,164,[898]],[0,164,[912]],[0,164,[968]],[0,165,[246]],[0,165,[250]],[0,165,[255]],[0,165,[259]],[0,165,[260]],[0,165,[267]],[0,165,[279]],[0,165,[290]],[0,165,[294]],[0,165,[296]],[0,165,[300]],[0,165,[321]],[0,165,[325]],[0,165,[329]],[0,165,[333]],[0,165,[339]],[0,165,[343]],[0,165,[347]],[0,165,[351]],[0,165,[364]],[0,165,[369]],[0,165,[371]],[0,165,[381]],[0,165,[383]],[0,165,[384]],[0,165,[388]],[0,165,[394]],[0,165,[398]],[0,165,[400]],[0,165,[402]],[0,165,[408]],[0,165,[410]],[0,165,[417]],[0,165,[421]],[0,165,[425]],[0,165,[429]],[0,165,[451]],[0,165,[455]],[0,165,[459]],[0,165,[463]],[0,165,[465]],[0,165,[469]],[0,165,[473]],[0,165,[477]],[0,165,[500]],[0,165,[502]],[0,165,[508]],[0,165,[510]],[0,165,[560]],[0,165,[562]],[0,165,[633]],[0,165,[635]],[0,165,[652]],[0,165,[654]],[0,165,[656]],[0,165,[658]],[0,165,[660]],[0,165,[662]],[0,165,[672]],[0,165,[673]],[0,165,[676]],[0,165,[677]],[0,165,[728]],[0,165,[730]],[0,165,[740]],[0,165,[778]],[0,165,[858]],[0,165,[884]],[0,165,[898]],[0,165,[913]],[0,166,[246]],[0,166,[247]],[0,166,[250]],[0,166,[253]],[0,166,[255]],[0,166,[259]],[0,166,[260]],[0,166,[267]],[0,166,[279]],[0,166,[288]],[0,166,[292]],[0,166,[298]],[0,166,[302]],[0,166,[323]],[0,166,[327]],[0,166,[331]],[0,166,[335]],[0,166,[337]],[0,166,[341]],[0,166,[345]],[0,166,[349]],[0,166,[362]],[0,166,[373]],[0,166,[375]],[0,166,[377]],[0,166,[379]],[0,166,[384]],[0,166,[388]],[0,166,[394]],[0,166,[398]],[0,166,[400]],[0,166,[402]],[0,166,[408]],[0,166,[410]],[0,166,[419]],[0,166,[423]],[0,166,[427]],[0,166,[431]],[0,166,[449]],[0,166,[453]],[0,166,[457]],[0,166,[461]],[0,166,[467]],[0,166,[471]],[0,166,[475]],[0,166,[479]],[0,166,[496]],[0,166,[498]],[0,166,[504]],[0,166,[506]],[0,166,[560]],[0,166,[562]],[0,166,[632]],[0,166,[634]],[0,166,[653]],[0,166,[655]],[0,166,[656]],[0,166,[658]],[0,166,[660]],[0,166,[662]],[0,166,[672]],[0,166,[673]],[0,166,[676]],[0,166,[677]],[0,166,[728]],[0,166,[730]],[0,166,[740]],[0,166,[778]],[0,166,[844]],[0,166,[859]],[0,166,[884]],[0,166,[912]],[0,167,[246]],[0,167,[247]],[0,167,[250]],[0,167,[252]],[0,167,[254]],[0,167,[255]],[0,167,[259]],[0,167,[260]],[0,167,[267]],[0,167,[279]],[0,167,[290]],[0,167,[294]],[0,167,[296]],[0,167,[300]],[0,167,[321]],[0,167,[325]],[0,167,[329]],[0,167,[333]],[0,167,[337]],[0,167,[341]],[0,167,[345]],[0,167,[349]],[0,167,[360]],[0,167,[373]],[0,167,[375]],[0,167,[377]],[0,167,[379]],[0,167,[386]],[0,167,[390]],[0,167,[392]],[0,167,[396]],[0,167,[400]],[0,167,[402]],[0,167,[408]],[0,167,[410]],[0,167,[417]],[0,167,[421]],[0,167,[425]],[0,167,[429]],[0,167,[434]],[0,167,[437]],[0,167,[438]],[0,167,[439]],[0,167,[440]],[0,167,[441]],[0,167,[443]],[0,167,[444]],[0,167,[451]],[0,167,[455]],[0,167,[459]],[0,167,[463]],[0,167,[467]],[0,167,[471]],[0,167,[475]],[0,167,[479]],[0,167,[496]],[0,167,[498]],[0,167,[504]],[0,167,[506]],[0,167,[560]],[0,167,[562]],[0,167,[633]],[0,167,[635]],[0,167,[653]],[0,167,[655]],[0,167,[656]],[0,167,[660]],[0,167,[671]],[0,167,[674]],[0,167,[675]],[0,167,[678]],[0,167,[679]],[0,167,[729]],[0,167,[731]],[0,167,[740]],[0,167,[778]],[0,167,[859]],[0,167,[885]],[0,167,[913]],[0,167,[961]],[0,167,[969]],[0,168,[244]],[0,168,[246]],[0,168,[247]],[0,168,[254]],[0,168,[258]],[0,168,[259]],[0,168,[265]],[0,168,[283]],[0,168,[306]],[0,168,[310]],[0,168,[312]],[0,168,[316]],[0,168,[325]],[0,168,[327]],[0,168,[329]],[0,168,[331]],[0,168,[338]],[0,168,[342]],[0,168,[344]],[0,168,[348]],[0,168,[357]],[0,168,[359]],[0,168,[361]],[0,168,[363]],[0,168,[375]],[0,168,[389]],[0,168,[391]],[0,168,[393]],[0,168,[395]],[0,168,[405]],[0,168,[407]],[0,168,[409]],[0,168,[411]],[0,168,[435]],[0,168,[439]],[0,168,[443]],[0,168,[447]],[0,168,[452]],[0,168,[454]],[0,168,[460]],[0,168,[462]],[0,168,[467]],[0,168,[471]],[0,168,[475]],[0,168,[479]],[0,168,[484]],[0,168,[486]],[0,168,[492]],[0,168,[494]],[0,168,[525]],[0,168,[527]],[0,168,[537]],[0,168,[539]],[0,168,[557]],[0,168,[559]],[0,168,[569]],[0,168,[571]],[0,168,[589]],[0,168,[591]],[0,168,[592]],[0,168,[594]],[0,168,[596]],[0,168,[598]],[0,168,[610]],[0,168,[611]],[0,168,[614]],[0,168,[615]],[0,168,[628]],[0,168,[630]],[0,168,[733]],[0,168,[735]],[0,168,[745]],[0,169,[244]],[0,169,[246]],[0,169,[253]],[0,169,[258]],[0,169,[259]],[0,169,[265]],[0,169,[283]],[0,169,[304]],[0,169,[308]],[0,169,[314]],[0,169,[318]],[0,169,[321]],[0,169,[323]],[0,169,[333]],[0,169,[335]],[0,169,[338]],[0,169,[342]],[0,169,[344]],[0,169,[348]],[0,169,[357]],[0,169,[359]],[0,169,[361]],[0,169,[363]],[0,169,[372]],[0,169,[385]],[0,169,[387]],[0,169,[397]],[0,169,[399]],[0,169,[405]],[0,169,[407]],[0,169,[409]],[0,169,[411]],[0,169,[418]],[0,169,[419]],[0,169,[420]],[0,169,[421]],[0,169,[422]],[0,169,[423]],[0,169,[424]],[0,169,[425]],[0,169,[427]],[0,169,[428]],[0,169,[430]],[0,169,[431]],[0,169,[433]],[0,169,[437]],[0,169,[441]],[0,169,[445]],[0,169,[448]],[0,169,[450]],[0,169,[456]],[0,169,[458]],[0,169,[467]],[0,169,[471]],[0,169,[475]],[0,169,[479]],[0,169,[484]],[0,169,[486]],[0,169,[492]],[0,169,[494]],[0,169,[525]],[0,169,[527]],[0,169,[537]],[0,169,[539]],[0,169,[556]],[0,169,[558]],[0,169,[568]],[0,169,[570]],[0,169,[589]],[0,169,[591]],[0,169,[592]],[0,169,[594]],[0,169,[596]],[0,169,[602]],[0,169,[603]],[0,169,[606]],[0,169,[607]],[0,169,[608]],[0,169,[609]],[0,169,[612]],[0,169,[613]],[0,169,[628]],[0,169,[630]],[0,169,[732]],[0,169,[734]],[0,169,[745]],[0,169,[933]],[0,170,[244]],[0,170,[246]],[0,170,[252]],[0,170,[258]],[0,170,[259]],[0,170,[265]],[0,170,[283]],[0,170,[306]],[0,170,[310]],[0,170,[312]],[0,170,[316]],[0,170,[325]],[0,170,[327]],[0,170,[329]],[0,170,[331]],[0,170,[336]],[0,170,[340]],[0,170,[346]],[0,170,[350]],[0,170,[353]],[0,170,[355]],[0,170,[365]],[0,170,[367]],[0,170,[370]],[0,170,[385]],[0,170,[387]],[0,170,[397]],[0,170,[399]],[0,170,[405]],[0,170,[407]],[0,170,[409]],[0,170,[411]],[0,170,[418]],[0,170,[419]],[0,170,[422]],[0,170,[423]],[0,170,[424]],[0,170,[427]],[0,170,[428]],[0,170,[431]],[0,170,[435]],[0,170,[439]],[0,170,[443]],[0,170,[447]],[0,170,[452]],[0,170,[454]],[0,170,[460]],[0,170,[462]],[0,170,[465]],[0,170,[469]],[0,170,[473]],[0,170,[477]],[0,170,[480]],[0,170,[482]],[0,170,[488]],[0,170,[490]],[0,170,[525]],[0,170,[527]],[0,170,[536]],[0,170,[538]],[0,170,[557]],[0,170,[559]],[0,170,[569]],[0,170,[571]],[0,170,[588]],[0,170,[590]],[0,170,[592]],[0,170,[594]],[0,170,[599]],[0,170,[603]],[0,170,[606]],[0,170,[607]],[0,170,[608]],[0,170,[609]],[0,170,[612]],[0,170,[613]],[0,170,[628]],[0,170,[630]],[0,170,[732]],[0,170,[734]],[0,170,[745]],[0,170,[934]],[0,170,[937]],[0,171,[244]],[0,171,[246]],[0,171,[247]],[0,171,[252]],[0,171,[253]],[0,171,[254]],[0,171,[258]],[0,171,[259]],[0,171,[265]],[0,171,[283]],[0,171,[304]],[0,171,[308]],[0,171,[314]],[0,171,[318]],[0,171,[321]],[0,171,[323]],[0,171,[333]],[0,171,[335]],[0,171,[336]],[0,171,[340]],[0,171,[346]],[0,171,[350]],[0,171,[353]],[0,171,[355]],[0,171,[365]],[0,171,[367]],[0,171,[369]],[0,171,[389]],[0,171,[391]],[0,171,[393]],[0,171,[395]],[0,171,[405]],[0,171,[407]],[0,171,[409]],[0,171,[411]],[0,171,[433]],[0,171,[437]],[0,171,[441]],[0,171,[445]],[0,171,[448]],[0,171,[450]],[0,171,[456]],[0,171,[458]],[0,171,[465]],[0,171,[469]],[0,171,[473]],[0,171,[477]],[0,171,[480]],[0,171,[482]],[0,171,[488]],[0,171,[490]],[0,171,[525]],[0,171,[527]],[0,171,[536]],[0,171,[538]],[0,171,[556]],[0,171,[558]],[0,171,[568]],[0,171,[570]],[0,171,[588]],[0,171,[590]],[0,171,[592]],[0,171,[594]],[0,171,[596]],[0,171,[598]],[0,171,[610]],[0,171,[611]],[0,171,[614]],[0,171,[615]],[0,171,[628]],[0,171,[630]],[0,171,[733]],[0,171,[735]],[0,171,[745]],[0,172,[244]],[0,172,[246]],[0,172,[247]],[0,172,[253]],[0,172,[254]],[0,172,[258]],[0,172,[259]],[0,172,[265]],[0,172,[283]],[0,172,[304]],[0,172,[308]],[0,172,[314]],[0,172,[318]],[0,172,[325]],[0,172,[327]],[0,172,[329]],[0,172,[331]],[0,172,[338]],[0,172,[342]],[0,172,[344]],[0,172,[348]],[0,172,[353]],[0,172,[355]],[0,172,[365]],[0,172,[367]],[0,172,[383]],[0,172,[389]],[0,172,[391]],[0,172,[393]],[0,172,[395]],[0,172,[401]],[0,172,[403]],[0,172,[413]],[0,172,[415]],[0,172,[419]],[0,172,[421]],[0,172,[425]],[0,172,[431]],[0,172,[435]],[0,172,[439]],[0,172,[443]],[0,172,[447]],[0,172,[448]],[0,172,[450]],[0,172,[456]],[0,172,[458]],[0,172,[465]],[0,172,[469]],[0,172,[473]],[0,172,[477]],[0,172,[484]],[0,172,[486]],[0,172,[492]],[0,172,[494]],[0,172,[524]],[0,172,[526]],[0,172,[537]],[0,172,[539]],[0,172,[557]],[0,172,[559]],[0,172,[568]],[0,172,[570]],[0,172,[588]],[0,172,[590]],[0,172,[592]],[0,172,[597]],[0,172,[598]],[0,172,[606]],[0,172,[610]],[0,172,[611]],[0,172,[614]],[0,172,[615]],[0,172,[624]],[0,172,[626]],[0,172,[733]],[0,172,[735]],[0,172,[834]],[0,172,[933]],[0,172,[937]],[0,173,[244]],[0,173,[246]],[0,173,[258]],[0,173,[259]],[0,173,[265]],[0,173,[283]],[0,173,[306]],[0,173,[310]],[0,173,[312]],[0,173,[316]],[0,173,[321]],[0,173,[323]],[0,173,[333]],[0,173,[335]],[0,173,[338]],[0,173,[342]],[0,173,[344]],[0,173,[348]],[0,173,[353]],[0,173,[355]],[0,173,[365]],[0,173,[367]],[0,173,[380]],[0,173,[385]],[0,173,[387]],[0,173,[397]],[0,173,[399]],[0,173,[401]],[0,173,[403]],[0,173,[413]],[0,173,[415]],[0,173,[433]],[0,173,[437]],[0,173,[441]],[0,173,[445]],[0,173,[452]],[0,173,[454]],[0,173,[460]],[0,173,[462]],[0,173,[465]],[0,173,[469]],[0,173,[473]],[0,173,[477]],[0,173,[484]],[0,173,[486]],[0,173,[492]],[0,173,[494]],[0,173,[524]],[0,173,[526]],[0,173,[537]],[0,173,[539]],[0,173,[556]],[0,173,[558]],[0,173,[569]],[0,173,[571]],[0,173,[588]],[0,173,[590]],[0,173,[592]],[0,173,[594]],[0,173,[596]],[0,173,[598]],[0,173,[608]],[0,173,[609]],[0,173,[612]],[0,173,[613]],[0,173,[624]],[0,173,[626]],[0,173,[732]],[0,173,[734]],[0,173,[834]],[0,174,[244]],[0,174,[246]],[0,174,[252]],[0,174,[253]],[0,174,[258]],[0,174,[259]],[0,174,[265]],[0,174,[283]],[0,174,[304]],[0,174,[308]],[0,174,[314]],[0,174,[318]],[0,174,[325]],[0,174,[327]],[0,174,[329]],[0,174,[331]],[0,174,[336]],[0,174,[340]],[0,174,[346]],[0,174,[350]],[0,174,[357]],[0,174,[359]],[0,174,[361]],[0,174,[363]],[0,174,[378]],[0,174,[385]],[0,174,[387]],[0,174,[397]],[0,174,[399]],[0,174,[401]],[0,174,[403]],[0,174,[413]],[0,174,[415]],[0,174,[435]],[0,174,[439]],[0,174,[443]],[0,174,[447]],[0,174,[448]],[0,174,[450]],[0,174,[456]],[0,174,[458]],[0,174,[467]],[0,174,[471]],[0,174,[475]],[0,174,[479]],[0,174,[480]],[0,174,[482]],[0,174,[488]],[0,174,[490]],[0,174,[524]],[0,174,[526]],[0,174,[536]],[0,174,[538]],[0,174,[557]],[0,174,[559]],[0,174,[568]],[0,174,[570]],[0,174,[589]],[0,174,[591]],[0,174,[592]],[0,174,[594]],[0,174,[596]],[0,174,[598]],[0,174,[608]],[0,174,[609]],[0,174,[612]],[0,174,[613]],[0,174,[624]],[0,174,[626]],[0,174,[732]],[0,174,[734]],[0,174,[834]],[0,175,[244]],[0,175,[246]],[0,175,[247]],[0,175,[252]],[0,175,[254]],[0,175,[258]],[0,175,[259]],[0,175,[265]],[0,175,[283]],[0,175,[306]],[0,175,[310]],[0,175,[312]],[0,175,[316]],[0,175,[321]],[0,175,[323]],[0,175,[333]],[0,175,[335]],[0,175,[336]],[0,175,[340]],[0,175,[346]],[0,175,[350]],[0,175,[357]],[0,175,[359]],[0,175,[361]],[0,175,[363]],[0,175,[377]],[0,175,[389]],[0,175,[391]],[0,175,[393]],[0,175,[395]],[0,175,[401]],[0,175,[403]],[0,175,[413]],[0,175,[415]],[0,175,[419]],[0,175,[420]],[0,175,[430]],[0,175,[431]],[0,175,[433]],[0,175,[437]],[0,175,[441]],[0,175,[445]],[0,175,[452]],[0,175,[454]],[0,175,[460]],[0,175,[462]],[0,175,[467]],[0,175,[471]],[0,175,[475]],[0,175,[479]],[0,175,[480]],[0,175,[482]],[0,175,[488]],[0,175,[490]],[0,175,[524]],[0,175,[526]],[0,175,[536]],[0,175,[538]],[0,175,[556]],[0,175,[558]],[0,175,[569]],[0,175,[571]],[0,175,[589]],[0,175,[591]],[0,175,[592]],[0,175,[596]],[0,175,[597]],[0,175,[598]],[0,175,[599]],[0,175,[602]],[0,175,[606]],[0,175,[610]],[0,175,[611]],[0,175,[614]],[0,175,[615]],[0,175,[624]],[0,175,[626]],[0,175,[733]],[0,175,[735]],[0,175,[834]],[0,175,[934]],[0,176,[246]],[0,176,[247]],[0,176,[253]],[0,176,[254]],[0,176,[255]],[0,176,[259]],[0,176,[391]],[0,176,[512]],[0,176,[514]],[0,176,[516]],[0,176,[518]],[0,176,[527]],[0,176,[530]],[0,176,[531]],[0,176,[534]],[0,176,[535]],[0,176,[546]],[0,176,[547]],[0,176,[550]],[0,176,[551]],[0,176,[562]],[0,176,[563]],[0,176,[566]],[0,176,[567]],[0,176,[578]],[0,176,[579]],[0,176,[582]],[0,176,[583]],[0,176,[594]],[0,176,[595]],[0,176,[598]],[0,176,[599]],[0,176,[610]],[0,176,[611]],[0,176,[614]],[0,176,[615]],[0,176,[626]],[0,176,[627]],[0,176,[630]],[0,176,[631]],[0,176,[642]],[0,176,[643]],[0,176,[646]],[0,176,[647]],[0,176,[658]],[0,176,[659]],[0,176,[662]],[0,176,[663]],[0,176,[674]],[0,176,[675]],[0,176,[678]],[0,176,[679]],[0,176,[690]],[0,176,[691]],[0,176,[694]],[0,176,[695]],[0,176,[706]],[0,176,[707]],[0,176,[710]],[0,176,[711]],[0,176,[763]],[0,176,[777]],[0,176,[805]],[0,177,[246]],[0,177,[247]],[0,177,[252]],[0,177,[255]],[0,177,[259]],[0,177,[389]],[0,177,[402]],[0,177,[403]],[0,177,[404]],[0,177,[405]],[0,177,[406]],[0,177,[407]],[0,177,[408]],[0,177,[409]],[0,177,[411]],[0,177,[412]],[0,177,[414]],[0,177,[415]],[0,177,[512]],[0,177,[514]],[0,177,[516]],[0,177,[522]],[0,177,[523]],[0,177,[526]],[0,177,[530]],[0,177,[531]],[0,177,[534]],[0,177,[535]],[0,177,[544]],[0,177,[545]],[0,177,[548]],[0,177,[549]],[0,177,[562]],[0,177,[563]],[0,177,[566]],[0,177,[567]],[0,177,[576]],[0,177,[577]],[0,177,[580]],[0,177,[581]],[0,177,[592]],[0,177,[593]],[0,177,[596]],[0,177,[597]],[0,177,[610]],[0,177,[611]],[0,177,[614]],[0,177,[615]],[0,177,[624]],[0,177,[625]],[0,177,[628]],[0,177,[629]],[0,177,[642]],[0,177,[643]],[0,177,[646]],[0,177,[647]],[0,177,[658]],[0,177,[659]],[0,177,[662]],[0,177,[663]],[0,177,[672]],[0,177,[673]],[0,177,[676]],[0,177,[677]],[0,177,[690]],[0,177,[691]],[0,177,[694]],[0,177,[695]],[0,177,[704]],[0,177,[705]],[0,177,[708]],[0,177,[709]],[0,177,[763]],[0,177,[776]],[0,177,[939]],[0,178,[246]],[0,178,[255]],[0,178,[259]],[0,178,[387]],[0,178,[403]],[0,178,[405]],[0,178,[406]],[0,178,[407]],[0,178,[409]],[0,178,[411]],[0,178,[412]],[0,178,[415]],[0,178,[512]],[0,178,[519]],[0,178,[523]],[0,178,[526]],[0,178,[530]],[0,178,[531]],[0,178,[534]],[0,178,[535]],[0,178,[544]],[0,178,[545]],[0,178,[548]],[0,178,[549]],[0,178,[560]],[0,178,[561]],[0,178,[564]],[0,178,[565]],[0,178,[578]],[0,178,[579]],[0,178,[582]],[0,178,[583]],[0,178,[594]],[0,178,[595]],[0,178,[598]],[0,178,[599]],[0,178,[608]],[0,178,[609]],[0,178,[612]],[0,178,[613]],[0,178,[626]],[0,178,[627]],[0,178,[630]],[0,178,[631]],[0,178,[640]],[0,178,[641]],[0,178,[644]],[0,178,[645]],[0,178,[656]],[0,178,[657]],[0,178,[660]],[0,178,[661]],[0,178,[674]],[0,178,[675]],[0,178,[678]],[0,178,[679]],[0,178,[690]],[0,178,[691]],[0,178,[694]],[0,178,[695]],[0,178,[704]],[0,178,[705]],[0,178,[708]],[0,178,[709]],[0,178,[763]],[0,178,[776]],[0,178,[805]],[0,178,[940]],[0,179,[246]],[0,179,[252]],[0,179,[253]],[0,179,[254]],[0,179,[255]],[0,179,[259]],[0,179,[385]],[0,179,[512]],[0,179,[514]],[0,179,[516]],[0,179,[518]],[0,179,[527]],[0,179,[530]],[0,179,[531]],[0,179,[534]],[0,179,[535]],[0,179,[546]],[0,179,[547]],[0,179,[550]],[0,179,[551]],[0,179,[560]],[0,179,[561]],[0,179,[564]],[0,179,[565]],[0,179,[576]],[0,179,[577]],[0,179,[580]],[0,179,[581]],[0,179,[592]],[0,179,[593]],[0,179,[596]],[0,179,[597]],[0,179,[608]],[0,179,[609]],[0,179,[612]],[0,179,[613]],[0,179,[624]],[0,179,[625]],[0,179,[628]],[0,179,[629]],[0,179,[640]],[0,179,[641]],[0,179,[644]],[0,179,[645]],[0,179,[656]],[0,179,[657]],[0,179,[660]],[0,179,[661]],[0,179,[672]],[0,179,[673]],[0,179,[676]],[0,179,[677]],[0,179,[690]],[0,179,[691]],[0,179,[694]],[0,179,[695]],[0,179,[706]],[0,179,[707]],[0,179,[710]],[0,179,[711]],[0,179,[763]],[0,179,[777]],[0,180,[246]],[0,180,[252]],[0,180,[253]],[0,180,[255]],[0,180,[259]],[0,180,[398]],[0,180,[402]],[0,180,[403]],[0,180,[404]],[0,180,[405]],[0,180,[406]],[0,180,[407]],[0,180,[408]],[0,180,[409]],[0,180,[411]],[0,180,[412]],[0,180,[414]],[0,180,[415]],[0,180,[512]],[0,180,[514]],[0,180,[516]],[0,180,[517]],[0,180,[522]],[0,180,[523]],[0,180,[526]],[0,180,[528]],[0,180,[529]],[0,180,[532]],[0,180,[533]],[0,180,[546]],[0,180,[547]],[0,180,[550]],[0,180,[551]],[0,180,[562]],[0,180,[563]],[0,180,[566]],[0,180,[567]],[0,180,[576]],[0,180,[577]],[0,180,[580]],[0,180,[581]],[0,180,[594]],[0,180,[595]],[0,180,[598]],[0,180,[599]],[0,180,[608]],[0,180,[609]],[0,180,[612]],[0,180,[613]],[0,180,[626]],[0,180,[627]],[0,180,[630]],[0,180,[631]],[0,180,[640]],[0,180,[641]],[0,180,[644]],[0,180,[645]],[0,180,[658]],[0,180,[659]],[0,180,[662]],[0,180,[663]],[0,180,[672]],[0,180,[673]],[0,180,[676]],[0,180,[677]],[0,180,[688]],[0,180,[689]],[0,180,[692]],[0,180,[693]],[0,180,[706]],[0,180,[707]],[0,180,[710]],[0,180,[711]],[0,180,[777]],[0,180,[940]],[0,181,[246]],[0,181,[254]],[0,181,[255]],[0,181,[259]],[0,181,[396]],[0,181,[512]],[0,181,[514]],[0,181,[516]],[0,181,[518]],[0,181,[527]],[0,181,[528]],[0,181,[529]],[0,181,[532]],[0,181,[533]],[0,181,[544]],[0,181,[545]],[0,181,[548]],[0,181,[549]],[0,181,[562]],[0,181,[563]],[0,181,[566]],[0,181,[567]],[0,181,[578]],[0,181,[579]],[0,181,[582]],[0,181,[583]],[0,181,[592]],[0,181,[593]],[0,181,[596]],[0,181,[597]],[0,181,[608]],[0,181,[609]],[0,181,[612]],[0,181,[613]],[0,181,[624]],[0,181,[625]],[0,181,[628]],[0,181,[629]],[0,181,[640]],[0,181,[641]],[0,181,[644]],[0,181,[645]],[0,181,[658]],[0,181,[659]],[0,181,[662]],[0,181,[663]],[0,181,[674]],[0,181,[675]],[0,181,[678]],[0,181,[679]],[0,181,[688]],[0,181,[689]],[0,181,[692]],[0,181,[693]],[0,181,[704]],[0,181,[705]],[0,181,[708]],[0,181,[709]],[0,181,[776]],[0,181,[805]],[0,182,[246]],[0,182,[247]],[0,182,[252]],[0,182,[254]],[0,182,[255]],[0,182,[259]],[0,182,[394]],[0,182,[512]],[0,182,[514]],[0,182,[516]],[0,182,[518]],[0,182,[527]],[0,182,[528]],[0,182,[529]],[0,182,[532]],[0,182,[533]],[0,182,[544]],[0,182,[545]],[0,182,[548]],[0,182,[549]],[0,182,[560]],[0,182,[561]],[0,182,[564]],[0,182,[565]],[0,182,[576]],[0,182,[577]],[0,182,[580]],[0,182,[581]],[0,182,[594]],[0,182,[595]],[0,182,[598]],[0,182,[599]],[0,182,[610]],[0,182,[611]],[0,182,[614]],[0,182,[615]],[0,182,[626]],[0,182,[627]],[0,182,[630]],[0,182,[631]],[0,182,[642]],[0,182,[643]],[0,182,[646]],[0,182,[647]],[0,182,[656]],[0,182,[657]],[0,182,[660]],[0,182,[661]],[0,182,[672]],[0,182,[673]],[0,182,[676]],[0,182,[677]],[0,182,[688]],[0,182,[689]],[0,182,[692]],[0,182,[693]],[0,182,[704]],[0,182,[705]],[0,182,[708]],[0,182,[709]],[0,182,[776]],[0,183,[246]],[0,183,[247]],[0,183,[253]],[0,183,[255]],[0,183,[259]],[0,183,[392]],[0,183,[403]],[0,183,[405]],[0,183,[406]],[0,183,[407]],[0,183,[409]],[0,183,[411]],[0,183,[412]],[0,183,[415]],[0,183,[512]],[0,183,[517]],[0,183,[519]],[0,183,[523]],[0,183,[526]],[0,183,[528]],[0,183,[529]],[0,183,[532]],[0,183,[533]],[0,183,[546]],[0,183,[547]],[0,183,[550]],[0,183,[551]],[0,183,[560]],[0,183,[561]],[0,183,[564]],[0,183,[565]],[0,183,[578]],[0,183,[579]],[0,183,[582]],[0,183,[583]],[0,183,[592]],[0,183,[593]],[0,183,[596]],[0,183,[597]],[0,183,[610]],[0,183,[611]],[0,183,[614]],[0,183,[615]],[0,183,[624]],[0,183,[625]],[0,183,[628]],[0,183,[629]],[0,183,[642]],[0,183,[643]],[0,183,[646]],[0,183,[647]],[0,183,[656]],[0,183,[657]],[0,183,[660]],[0,183,[661]],[0,183,[674]],[0,183,[675]],[0,183,[678]],[0,183,[679]],[0,183,[688]],[0,183,[689]],[0,183,[692]],[0,183,[693]],[0,183,[706]],[0,183,[707]],[0,183,[710]],[0,183,[711]],[0,183,[777]],[0,183,[805]],[0,183,[939]],[0,184,[246]],[0,184,[260]],[0,184,[269]],[0,184,[275]],[0,184,[281]],[0,184,[287]],[0,184,[407]],[0,184,[532]],[0,184,[534]],[0,184,[548]],[0,184,[550]],[0,184,[564]],[0,184,[566]],[0,184,[580]],[0,184,[582]],[0,184,[596]],[0,184,[598]],[0,184,[612]],[0,184,[614]],[0,184,[628]],[0,184,[630]],[0,184,[644]],[0,184,[646]],[0,184,[660]],[0,184,[662]],[0,184,[676]],[0,184,[678]],[0,184,[692]],[0,184,[694]],[0,184,[708]],[0,184,[710]],[0,184,[720]],[0,184,[722]],[0,184,[724]],[0,184,[726]],[0,184,[851]],[0,185,[246]],[0,185,[247]],[0,185,[252]],[0,185,[253]],[0,185,[260]],[0,185,[269]],[0,185,[275]],[0,185,[281]],[0,185,[287]],[0,185,[386]],[0,185,[389]],[0,185,[392]],[0,185,[393]],[0,185,[405]],[0,185,[532]],[0,185,[534]],[0,185,[548]],[0,185,[550]],[0,185,[564]],[0,185,[566]],[0,185,[580]],[0,185,[582]],[0,185,[592]],[0,185,[594]],[0,185,[608]],[0,185,[610]],[0,185,[628]],[0,185,[630]],[0,185,[644]],[0,185,[646]],[0,185,[656]],[0,185,[658]],[0,185,[672]],[0,185,[674]],[0,185,[688]],[0,185,[690]],[0,185,[704]],[0,185,[706]],[0,185,[720]],[0,185,[724]],[0,185,[725]],[0,185,[726]],[0,185,[727]],[0,185,[807]],[0,185,[851]],[0,185,[877]],[0,185,[905]],[0,185,[955]],[0,185,[970]],[0,186,[246]],[0,186,[253]],[0,186,[260]],[0,186,[269]],[0,186,[275]],[0,186,[281]],[0,186,[287]],[0,186,[388]],[0,186,[389]],[0,186,[390]],[0,186,[391]],[0,186,[393]],[0,186,[395]],[0,186,[396]],[0,186,[398]],[0,186,[403]],[0,186,[532]],[0,186,[534]],[0,186,[548]],[0,186,[550]],[0,186,[560]],[0,186,[562]],[0,186,[576]],[0,186,[578]],[0,186,[596]],[0,186,[598]],[0,186,[612]],[0,186,[614]],[0,186,[624]],[0,186,[626]],[0,186,[640]],[0,186,[642]],[0,186,[660]],[0,186,[662]],[0,186,[676]],[0,186,[678]],[0,186,[688]],[0,186,[690]],[0,186,[704]],[0,186,[706]],[0,186,[720]],[0,186,[722]],[0,186,[725]],[0,186,[730]],[0,186,[731]],[0,186,[735]],[0,186,[779]],[0,186,[793]],[0,186,[835]],[0,186,[905]],[0,186,[971]],[0,187,[246]],[0,187,[247]],[0,187,[252]],[0,187,[260]],[0,187,[269]],[0,187,[275]],[0,187,[281]],[0,187,[287]],[0,187,[401]],[0,187,[532]],[0,187,[534]],[0,187,[548]],[0,187,[550]],[0,187,[560]],[0,187,[562]],[0,187,[576]],[0,187,[578]],[0,187,[592]],[0,187,[594]],[0,187,[608]],[0,187,[610]],[0,187,[624]],[0,187,[626]],[0,187,[640]],[0,187,[642]],[0,187,[656]],[0,187,[658]],[0,187,[672]],[0,187,[674]],[0,187,[692]],[0,187,[694]],[0,187,[708]],[0,187,[710]],[0,187,[720]],[0,187,[722]],[0,187,[724]],[0,187,[726]],[0,187,[779]],[0,187,[793]],[0,187,[807]],[0,187,[835]],[0,187,[877]],[0,188,[246]],[0,188,[252]],[0,188,[260]],[0,188,[269]],[0,188,[275]],[0,188,[281]],[0,188,[287]],[0,188,[388]],[0,188,[389]],[0,188,[393]],[0,188,[398]],[0,188,[414]],[0,188,[528]],[0,188,[530]],[0,188,[544]],[0,188,[546]],[0,188,[564]],[0,188,[566]],[0,188,[580]],[0,188,[582]],[0,188,[596]],[0,188,[598]],[0,188,[612]],[0,188,[614]],[0,188,[624]],[0,188,[626]],[0,188,[640]],[0,188,[642]],[0,188,[656]],[0,188,[658]],[0,188,[672]],[0,188,[674]],[0,188,[692]],[0,188,[694]],[0,188,[708]],[0,188,[710]],[0,188,[720]],[0,188,[722]],[0,188,[726]],[0,188,[727]],[0,188,[730]],[0,188,[735]],[0,188,[765]],[0,188,[835]],[0,188,[877]],[0,188,[970]],[0,189,[246]],[0,189,[247]],[0,189,[253]],[0,189,[260]],[0,189,[269]],[0,189,[275]],[0,189,[281]],[0,189,[287]],[0,189,[412]],[0,189,[528]],[0,189,[530]],[0,189,[544]],[0,189,[546]],[0,189,[564]],[0,189,[566]],[0,189,[580]],[0,189,[582]],[0,189,[592]],[0,189,[594]],[0,189,[608]],[0,189,[610]],[0,189,[624]],[0,189,[626]],[0,189,[640]],[0,189,[642]],[0,189,[660]],[0,189,[662]],[0,189,[676]],[0,189,[678]],[0,189,[688]],[0,189,[690]],[0,189,[704]],[0,189,[706]],[0,189,[720]],[0,189,[722]],[0,189,[724]],[0,189,[726]],[0,189,[765]],[0,189,[807]],[0,189,[835]],[0,189,[905]],[0,190,[246]],[0,190,[252]],[0,190,[253]],[0,190,[260]],[0,190,[269]],[0,190,[275]],[0,190,[281]],[0,190,[287]],[0,190,[410]],[0,190,[528]],[0,190,[530]],[0,190,[544]],[0,190,[546]],[0,190,[560]],[0,190,[562]],[0,190,[576]],[0,190,[578]],[0,190,[596]],[0,190,[598]],[0,190,[612]],[0,190,[614]],[0,190,[628]],[0,190,[630]],[0,190,[644]],[0,190,[646]],[0,190,[656]],[0,190,[658]],[0,190,[672]],[0,190,[674]],[0,190,[688]],[0,190,[690]],[0,190,[704]],[0,190,[706]],[0,190,[720]],[0,190,[722]],[0,190,[724]],[0,190,[726]],[0,190,[765]],[0,190,[779]],[0,190,[793]],[0,190,[851]],[0,190,[877]],[0,190,[905]],[0,191,[246]],[0,191,[247]],[0,191,[260]],[0,191,[269]],[0,191,[275]],[0,191,[281]],[0,191,[287]],[0,191,[386]],[0,191,[389]],[0,191,[390]],[0,191,[391]],[0,191,[392]],[0,191,[393]],[0,191,[395]],[0,191,[396]],[0,191,[408]],[0,191,[528]],[0,191,[530]],[0,191,[544]],[0,191,[546]],[0,191,[560]],[0,191,[562]],[0,191,[576]],[0,191,[578]],[0,191,[592]],[0,191,[594]],[0,191,[608]],[0,191,[610]],[0,191,[628]],[0,191,[630]],[0,191,[644]],[0,191,[646]],[0,191,[660]],[0,191,[662]],[0,191,[676]],[0,191,[678]],[0,191,[692]],[0,191,[694]],[0,191,[708]],[0,191,[710]],[0,191,[720]],[0,191,[724]],[0,191,[731]],[0,191,[765]],[0,191,[779]],[0,191,[793]],[0,191,[807]],[0,191,[851]],[0,191,[955]],[0,191,[971]],[0,192,[246]],[0,192,[249]],[0,192,[252]],[0,192,[253]],[0,192,[260]],[0,192,[272]],[0,192,[278]],[0,192,[308]],[0,192,[310]],[0,192,[316]],[0,192,[318]],[0,192,[323]],[0,192,[327]],[0,192,[331]],[0,192,[335]],[0,192,[340]],[0,192,[342]],[0,192,[348]],[0,192,[350]],[0,192,[355]],[0,192,[359]],[0,192,[363]],[0,192,[367]],[0,192,[387]],[0,192,[391]],[0,192,[395]],[0,192,[399]],[0,192,[403]],[0,192,[407]],[0,192,[411]],[0,192,[415]],[0,192,[423]],[0,192,[437]],[0,192,[439]],[0,192,[441]],[0,192,[443]],[0,192,[450]],[0,192,[454]],[0,192,[456]],[0,192,[460]],[0,192,[469]],[0,192,[471]],[0,192,[473]],[0,192,[475]],[0,192,[482]],[0,192,[486]],[0,192,[488]],[0,192,[492]],[0,192,[612]],[0,192,[614]],[0,192,[626]],[0,192,[627]],[0,192,[630]],[0,192,[631]],[0,192,[640]],[0,192,[642]],[0,192,[644]],[0,192,[646]],[0,192,[669]],[0,192,[671]],[0,192,[681]],[0,192,[683]],[0,192,[701]],[0,192,[703]],[0,192,[713]],[0,192,[715]],[0,192,[755]],[0,192,[873]],[0,192,[901]],[0,192,[929]],[0,193,[246]],[0,193,[249]],[0,193,[254]],[0,193,[260]],[0,193,[272]],[0,193,[278]],[0,193,[308]],[0,193,[310]],[0,193,[316]],[0,193,[318]],[0,193,[321]],[0,193,[325]],[0,193,[329]],[0,193,[333]],[0,193,[340]],[0,193,[342]],[0,193,[348]],[0,193,[350]],[0,193,[353]],[0,193,[357]],[0,193,[361]],[0,193,[365]],[0,193,[370]],[0,193,[371]],[0,193,[372]],[0,193,[373]],[0,193,[374]],[0,193,[375]],[0,193,[376]],[0,193,[377]],[0,193,[379]],[0,193,[380]],[0,193,[382]],[0,193,[383]],[0,193,[385]],[0,193,[389]],[0,193,[393]],[0,193,[397]],[0,193,[403]],[0,193,[407]],[0,193,[411]],[0,193,[415]],[0,193,[420]],[0,193,[437]],[0,193,[439]],[0,193,[441]],[0,193,[443]],[0,193,[448]],[0,193,[452]],[0,193,[458]],[0,193,[462]],[0,193,[469]],[0,193,[471]],[0,193,[473]],[0,193,[475]],[0,193,[480]],[0,193,[484]],[0,193,[490]],[0,193,[494]],[0,193,[612]],[0,193,[614]],[0,193,[624]],[0,193,[625]],[0,193,[628]],[0,193,[629]],[0,193,[640]],[0,193,[642]],[0,193,[644]],[0,193,[650]],[0,193,[651]],[0,193,[654]],[0,193,[655]],[0,193,[669]],[0,193,[671]],[0,193,[680]],[0,193,[682]],[0,193,[701]],[0,193,[703]],[0,193,[712]],[0,193,[714]],[0,193,[755]],[0,193,[873]],[0,193,[886]],[0,193,[901]],[0,193,[914]],[0,193,[973]],[0,194,[246]],[0,194,[249]],[0,194,[252]],[0,194,[253]],[0,194,[254]],[0,194,[260]],[0,194,[272]],[0,194,[278]],[0,194,[304]],[0,194,[306]],[0,194,[312]],[0,194,[314]],[0,194,[323]],[0,194,[327]],[0,194,[331]],[0,194,[335]],[0,194,[336]],[0,194,[338]],[0,194,[344]],[0,194,[346]],[0,194,[355]],[0,194,[359]],[0,194,[363]],[0,194,[367]],[0,194,[370]],[0,194,[371]],[0,194,[374]],[0,194,[375]],[0,194,[376]],[0,194,[379]],[0,194,[380]],[0,194,[383]],[0,194,[385]],[0,194,[389]],[0,194,[393]],[0,194,[397]],[0,194,[403]],[0,194,[407]],[0,194,[411]],[0,194,[415]],[0,194,[418]],[0,194,[433]],[0,194,[435]],[0,194,[445]],[0,194,[447]],[0,194,[450]],[0,194,[454]],[0,194,[456]],[0,194,[460]],[0,194,[465]],[0,194,[467]],[0,194,[477]],[0,194,[479]],[0,194,[482]],[0,194,[486]],[0,194,[488]],[0,194,[492]],[0,194,[612]],[0,194,[614]],[0,194,[624]],[0,194,[625]],[0,194,[628]],[0,194,[629]],[0,194,[640]],[0,194,[642]],[0,194,[647]],[0,194,[651]],[0,194,[654]],[0,194,[655]],[0,194,[668]],[0,194,[670]],[0,194,[681]],[0,194,[683]],[0,194,[700]],[0,194,[702]],[0,194,[713]],[0,194,[715]],[0,194,[900]],[0,194,[972]],[0,194,[977]],[0,195,[246]],[0,195,[249]],[0,195,[260]],[0,195,[272]],[0,195,[278]],[0,195,[304]],[0,195,[306]],[0,195,[312]],[0,195,[314]],[0,195,[321]],[0,195,[325]],[0,195,[329]],[0,195,[333]],[0,195,[336]],[0,195,[338]],[0,195,[344]],[0,195,[346]],[0,195,[353]],[0,195,[357]],[0,195,[361]],[0,195,[365]],[0,195,[387]],[0,195,[391]],[0,195,[395]],[0,195,[399]],[0,195,[403]],[0,195,[407]],[0,195,[411]],[0,195,[415]],[0,195,[417]],[0,195,[433]],[0,195,[435]],[0,195,[445]],[0,195,[447]],[0,195,[448]],[0,195,[452]],[0,195,[458]],[0,195,[462]],[0,195,[465]],[0,195,[467]],[0,195,[477]],[0,195,[479]],[0,195,[480]],[0,195,[484]],[0,195,[490]],[0,195,[494]],[0,195,[612]],[0,195,[614]],[0,195,[626]],[0,195,[627]],[0,195,[630]],[0,195,[631]],[0,195,[640]],[0,195,[642]],[0,195,[644]],[0,195,[646]],[0,195,[668]],[0,195,[670]],[0,195,[680]],[0,195,[682]],[0,195,[700]],[0,195,[702]],[0,195,[712]],[0,195,[714]],[0,195,[886]],[0,195,[900]],[0,195,[914]],[0,195,[929]],[0,196,[246]],[0,196,[247]],[0,196,[249]],[0,196,[260]],[0,196,[272]],[0,196,[278]],[0,196,[308]],[0,196,[310]],[0,196,[316]],[0,196,[318]],[0,196,[323]],[0,196,[327]],[0,196,[331]],[0,196,[335]],[0,196,[340]],[0,196,[342]],[0,196,[348]],[0,196,[350]],[0,196,[355]],[0,196,[359]],[0,196,[363]],[0,196,[367]],[0,196,[371]],[0,196,[373]],[0,196,[377]],[0,196,[383]],[0,196,[387]],[0,196,[391]],[0,196,[395]],[0,196,[399]],[0,196,[401]],[0,196,[405]],[0,196,[409]],[0,196,[413]],[0,196,[431]],[0,196,[433]],[0,196,[435]],[0,196,[445]],[0,196,[447]],[0,196,[448]],[0,196,[452]],[0,196,[458]],[0,196,[462]],[0,196,[465]],[0,196,[467]],[0,196,[477]],[0,196,[479]],[0,196,[480]],[0,196,[484]],[0,196,[490]],[0,196,[494]],[0,196,[608]],[0,196,[610]],[0,196,[626]],[0,196,[627]],[0,196,[630]],[0,196,[631]],[0,196,[640]],[0,196,[645]],[0,196,[646]],[0,196,[654]],[0,196,[668]],[0,196,[670]],[0,196,[680]],[0,196,[682]],[0,196,[700]],[0,196,[702]],[0,196,[712]],[0,196,[714]],[0,196,[755]],[0,196,[820]],[0,196,[886]],[0,196,[900]],[0,196,[914]],[0,196,[929]],[0,196,[972]],[0,197,[246]],[0,197,[247]],[0,197,[249]],[0,197,[252]],[0,197,[253]],[0,197,[254]],[0,197,[260]],[0,197,[272]],[0,197,[278]],[0,197,[308]],[0,197,[310]],[0,197,[316]],[0,197,[318]],[0,197,[321]],[0,197,[325]],[0,197,[329]],[0,197,[333]],[0,197,[340]],[0,197,[342]],[0,197,[348]],[0,197,[350]],[0,197,[353]],[0,197,[357]],[0,197,[361]],[0,197,[365]],[0,197,[385]],[0,197,[389]],[0,197,[393]],[0,197,[397]],[0,197,[401]],[0,197,[405]],[0,197,[409]],[0,197,[413]],[0,197,[428]],[0,197,[433]],[0,197,[435]],[0,197,[445]],[0,197,[447]],[0,197,[450]],[0,197,[454]],[0,197,[456]],[0,197,[460]],[0,197,[465]],[0,197,[467]],[0,197,[477]],[0,197,[479]],[0,197,[482]],[0,197,[486]],[0,197,[488]],[0,197,[492]],[0,197,[608]],[0,197,[610]],[0,197,[624]],[0,197,[625]],[0,197,[628]],[0,197,[629]],[0,197,[640]],[0,197,[642]],[0,197,[644]],[0,197,[646]],[0,197,[668]],[0,197,[670]],[0,197,[681]],[0,197,[683]],[0,197,[700]],[0,197,[702]],[0,197,[713]],[0,197,[715]],[0,197,[755]],[0,197,[820]],[0,197,[900]],[0,198,[246]],[0,198,[247]],[0,198,[249]],[0,198,[254]],[0,198,[260]],[0,198,[272]],[0,198,[278]],[0,198,[304]],[0,198,[306]],[0,198,[312]],[0,198,[314]],[0,198,[323]],[0,198,[327]],[0,198,[331]],[0,198,[335]],[0,198,[336]],[0,198,[338]],[0,198,[344]],[0,198,[346]],[0,198,[355]],[0,198,[359]],[0,198,[363]],[0,198,[367]],[0,198,[385]],[0,198,[389]],[0,198,[393]],[0,198,[397]],[0,198,[401]],[0,198,[405]],[0,198,[409]],[0,198,[413]],[0,198,[426]],[0,198,[437]],[0,198,[439]],[0,198,[441]],[0,198,[443]],[0,198,[448]],[0,198,[452]],[0,198,[458]],[0,198,[462]],[0,198,[469]],[0,198,[471]],[0,198,[473]],[0,198,[475]],[0,198,[480]],[0,198,[484]],[0,198,[490]],[0,198,[494]],[0,198,[608]],[0,198,[610]],[0,198,[624]],[0,198,[625]],[0,198,[628]],[0,198,[629]],[0,198,[640]],[0,198,[642]],[0,198,[644]],[0,198,[646]],[0,198,[669]],[0,198,[671]],[0,198,[680]],[0,198,[682]],[0,198,[701]],[0,198,[703]],[0,198,[712]],[0,198,[714]],[0,198,[820]],[0,198,[873]],[0,198,[886]],[0,198,[901]],[0,198,[914]],[0,199,[246]],[0,199,[247]],[0,199,[249]],[0,199,[252]],[0,199,[253]],[0,199,[260]],[0,199,[272]],[0,199,[278]],[0,199,[304]],[0,199,[306]],[0,199,[312]],[0,199,[314]],[0,199,[321]],[0,199,[325]],[0,199,[329]],[0,199,[333]],[0,199,[336]],[0,199,[338]],[0,199,[344]],[0,199,[346]],[0,199,[353]],[0,199,[357]],[0,199,[361]],[0,199,[365]],[0,199,[371]],[0,199,[372]],[0,199,[382]],[0,199,[383]],[0,199,[387]],[0,199,[391]],[0,199,[395]],[0,199,[399]],[0,199,[401]],[0,199,[405]],[0,199,[409]],[0,199,[413]],[0,199,[425]],[0,199,[437]],[0,199,[439]],[0,199,[441]],[0,199,[443]],[0,199,[450]],[0,199,[454]],[0,199,[456]],[0,199,[460]],[0,199,[469]],[0,199,[471]],[0,199,[473]],[0,199,[475]],[0,199,[482]],[0,199,[486]],[0,199,[488]],[0,199,[492]],[0,199,[608]],[0,199,[610]],[0,199,[626]],[0,199,[627]],[0,199,[630]],[0,199,[631]],[0,199,[640]],[0,199,[644]],[0,199,[645]],[0,199,[646]],[0,199,[647]],[0,199,[650]],[0,199,[654]],[0,199,[669]],[0,199,[671]],[0,199,[681]],[0,199,[683]],[0,199,[701]],[0,199,[703]],[0,199,[713]],[0,199,[715]],[0,199,[820]],[0,199,[873]],[0,199,[901]],[0,199,[929]],[0,199,[973]],[0,199,[977]],[0,200,[243]],[0,200,[246]],[0,200,[247]],[0,200,[258]],[0,200,[260]],[0,200,[270]],[0,200,[282]],[0,200,[292]],[0,200,[294]],[0,200,[300]],[0,200,[302]],[0,200,[325]],[0,200,[327]],[0,200,[329]],[0,200,[331]],[0,200,[341]],[0,200,[343]],[0,200,[345]],[0,200,[347]],[0,200,[371]],[0,200,[375]],[0,200,[379]],[0,200,[383]],[0,200,[388]],[0,200,[390]],[0,200,[396]],[0,200,[398]],[0,200,[402]],[0,200,[406]],[0,200,[408]],[0,200,[412]],[0,200,[421]],[0,200,[423]],[0,200,[425]],[0,200,[427]],[0,200,[438]],[0,200,[453]],[0,200,[455]],[0,200,[457]],[0,200,[459]],[0,200,[469]],[0,200,[471]],[0,200,[473]],[0,200,[475]],[0,200,[498]],[0,200,[502]],[0,200,[504]],[0,200,[508]],[0,200,[521]],[0,200,[523]],[0,200,[541]],[0,200,[543]],[0,200,[557]],[0,200,[559]],[0,200,[562]],[0,200,[563]],[0,200,[566]],[0,200,[567]],[0,200,[576]],[0,200,[578]],[0,200,[580]],[0,200,[582]],[0,200,[605]],[0,200,[607]],[0,200,[617]],[0,200,[619]],[0,200,[676]],[0,200,[678]],[0,200,[701]],[0,200,[703]],[0,200,[717]],[0,200,[719]],[0,200,[759]],[0,200,[775]],[0,200,[878]],[0,201,[243]],[0,201,[246]],[0,201,[253]],[0,201,[254]],[0,201,[258]],[0,201,[260]],[0,201,[270]],[0,201,[282]],[0,201,[292]],[0,201,[294]],[0,201,[300]],[0,201,[302]],[0,201,[321]],[0,201,[323]],[0,201,[333]],[0,201,[335]],[0,201,[341]],[0,201,[343]],[0,201,[345]],[0,201,[347]],[0,201,[354]],[0,201,[357]],[0,201,[360]],[0,201,[361]],[0,201,[369]],[0,201,[373]],[0,201,[377]],[0,201,[381]],[0,201,[384]],[0,201,[386]],[0,201,[392]],[0,201,[394]],[0,201,[402]],[0,201,[406]],[0,201,[408]],[0,201,[412]],[0,201,[421]],[0,201,[423]],[0,201,[425]],[0,201,[427]],[0,201,[437]],[0,201,[449]],[0,201,[451]],[0,201,[461]],[0,201,[463]],[0,201,[469]],[0,201,[471]],[0,201,[473]],[0,201,[475]],[0,201,[496]],[0,201,[500]],[0,201,[506]],[0,201,[510]],[0,201,[521]],[0,201,[523]],[0,201,[541]],[0,201,[543]],[0,201,[556]],[0,201,[558]],[0,201,[560]],[0,201,[561]],[0,201,[564]],[0,201,[565]],[0,201,[576]],[0,201,[580]],[0,201,[581]],[0,201,[582]],[0,201,[583]],[0,201,[605]],[0,201,[607]],[0,201,[616]],[0,201,[618]],[0,201,[676]],[0,201,[678]],[0,201,[701]],[0,201,[703]],[0,201,[716]],[0,201,[718]],[0,201,[759]],[0,201,[774]],[0,201,[878]],[0,201,[941]],[0,201,[947]],[0,202,[243]],[0,202,[246]],[0,202,[247]],[0,202,[254]],[0,202,[258]],[0,202,[260]],[0,202,[270]],[0,202,[282]],[0,202,[288]],[0,202,[290]],[0,202,[296]],[0,202,[298]],[0,202,[325]],[0,202,[327]],[0,202,[329]],[0,202,[331]],[0,202,[337]],[0,202,[339]],[0,202,[349]],[0,202,[351]],[0,202,[356]],[0,202,[357]],[0,202,[358]],[0,202,[359]],[0,202,[361]],[0,202,[363]],[0,202,[364]],[0,202,[366]],[0,202,[371]],[0,202,[375]],[0,202,[379]],[0,202,[383]],[0,202,[384]],[0,202,[386]],[0,202,[392]],[0,202,[394]],[0,202,[402]],[0,202,[406]],[0,202,[408]],[0,202,[412]],[0,202,[417]],[0,202,[419]],[0,202,[429]],[0,202,[431]],[0,202,[435]],[0,202,[453]],[0,202,[455]],[0,202,[457]],[0,202,[459]],[0,202,[465]],[0,202,[467]],[0,202,[477]],[0,202,[479]],[0,202,[498]],[0,202,[502]],[0,202,[504]],[0,202,[508]],[0,202,[521]],[0,202,[523]],[0,202,[540]],[0,202,[542]],[0,202,[557]],[0,202,[559]],[0,202,[560]],[0,202,[561]],[0,202,[564]],[0,202,[565]],[0,202,[576]],[0,202,[578]],[0,202,[581]],[0,202,[586]],[0,202,[587]],[0,202,[591]],[0,202,[604]],[0,202,[606]],[0,202,[617]],[0,202,[619]],[0,202,[676]],[0,202,[678]],[0,202,[700]],[0,202,[702]],[0,202,[717]],[0,202,[719]],[0,202,[758]],[0,202,[775]],[0,202,[878]],[0,202,[949]],[0,203,[243]],[0,203,[246]],[0,203,[253]],[0,203,[258]],[0,203,[260]],[0,203,[270]],[0,203,[282]],[0,203,[288]],[0,203,[290]],[0,203,[296]],[0,203,[298]],[0,203,[321]],[0,203,[323]],[0,203,[333]],[0,203,[335]],[0,203,[337]],[0,203,[339]],[0,203,[349]],[0,203,[351]],[0,203,[369]],[0,203,[373]],[0,203,[377]],[0,203,[381]],[0,203,[388]],[0,203,[390]],[0,203,[396]],[0,203,[398]],[0,203,[402]],[0,203,[406]],[0,203,[408]],[0,203,[412]],[0,203,[417]],[0,203,[419]],[0,203,[429]],[0,203,[431]],[0,203,[432]],[0,203,[449]],[0,203,[451]],[0,203,[461]],[0,203,[463]],[0,203,[465]],[0,203,[467]],[0,203,[477]],[0,203,[479]],[0,203,[496]],[0,203,[500]],[0,203,[506]],[0,203,[510]],[0,203,[521]],[0,203,[523]],[0,203,[540]],[0,203,[542]],[0,203,[556]],[0,203,[558]],[0,203,[562]],[0,203,[563]],[0,203,[566]],[0,203,[567]],[0,203,[576]],[0,203,[578]],[0,203,[580]],[0,203,[582]],[0,203,[604]],[0,203,[606]],[0,203,[616]],[0,203,[618]],[0,203,[676]],[0,203,[678]],[0,203,[700]],[0,203,[702]],[0,203,[716]],[0,203,[718]],[0,203,[758]],[0,203,[774]],[0,203,[878]],[0,204,[243]],[0,204,[246]],[0,204,[252]],[0,204,[253]],[0,204,[258]],[0,204,[260]],[0,204,[270]],[0,204,[282]],[0,204,[292]],[0,204,[294]],[0,204,[300]],[0,204,[302]],[0,204,[325]],[0,204,[327]],[0,204,[329]],[0,204,[331]],[0,204,[341]],[0,204,[343]],[0,204,[345]],[0,204,[347]],[0,204,[356]],[0,204,[357]],[0,204,[361]],[0,204,[366]],[0,204,[371]],[0,204,[375]],[0,204,[379]],[0,204,[383]],[0,204,[388]],[0,204,[390]],[0,204,[396]],[0,204,[398]],[0,204,[400]],[0,204,[404]],[0,204,[410]],[0,204,[414]],[0,204,[417]],[0,204,[419]],[0,204,[429]],[0,204,[431]],[0,204,[446]],[0,204,[449]],[0,204,[451]],[0,204,[461]],[0,204,[463]],[0,204,[465]],[0,204,[467]],[0,204,[477]],[0,204,[479]],[0,204,[496]],[0,204,[500]],[0,204,[506]],[0,204,[510]],[0,204,[520]],[0,204,[522]],[0,204,[541]],[0,204,[543]],[0,204,[557]],[0,204,[559]],[0,204,[562]],[0,204,[563]],[0,204,[566]],[0,204,[567]],[0,204,[576]],[0,204,[578]],[0,204,[582]],[0,204,[583]],[0,204,[586]],[0,204,[591]],[0,204,[604]],[0,204,[606]],[0,204,[616]],[0,204,[618]],[0,204,[672]],[0,204,[674]],[0,204,[700]],[0,204,[702]],[0,204,[716]],[0,204,[718]],[0,204,[759]],[0,204,[775]],[0,204,[876]],[0,204,[947]],[0,205,[243]],[0,205,[246]],[0,205,[247]],[0,205,[252]],[0,205,[254]],[0,205,[258]],[0,205,[260]],[0,205,[270]],[0,205,[282]],[0,205,[292]],[0,205,[294]],[0,205,[300]],[0,205,[302]],[0,205,[321]],[0,205,[323]],[0,205,[333]],[0,205,[335]],[0,205,[341]],[0,205,[343]],[0,205,[345]],[0,205,[347]],[0,205,[369]],[0,205,[373]],[0,205,[377]],[0,205,[381]],[0,205,[384]],[0,205,[386]],[0,205,[392]],[0,205,[394]],[0,205,[400]],[0,205,[404]],[0,205,[410]],[0,205,[414]],[0,205,[417]],[0,205,[419]],[0,205,[429]],[0,205,[431]],[0,205,[445]],[0,205,[453]],[0,205,[455]],[0,205,[457]],[0,205,[459]],[0,205,[465]],[0,205,[467]],[0,205,[477]],[0,205,[479]],[0,205,[498]],[0,205,[502]],[0,205,[504]],[0,205,[508]],[0,205,[520]],[0,205,[522]],[0,205,[541]],[0,205,[543]],[0,205,[556]],[0,205,[558]],[0,205,[560]],[0,205,[561]],[0,205,[564]],[0,205,[565]],[0,205,[576]],[0,205,[578]],[0,205,[580]],[0,205,[582]],[0,205,[604]],[0,205,[606]],[0,205,[617]],[0,205,[619]],[0,205,[672]],[0,205,[674]],[0,205,[700]],[0,205,[702]],[0,205,[717]],[0,205,[719]],[0,205,[759]],[0,205,[774]],[0,205,[876]],[0,206,[243]],[0,206,[246]],[0,206,[252]],[0,206,[253]],[0,206,[254]],[0,206,[258]],[0,206,[260]],[0,206,[270]],[0,206,[282]],[0,206,[288]],[0,206,[290]],[0,206,[296]],[0,206,[298]],[0,206,[325]],[0,206,[327]],[0,206,[329]],[0,206,[331]],[0,206,[337]],[0,206,[339]],[0,206,[349]],[0,206,[351]],[0,206,[371]],[0,206,[375]],[0,206,[379]],[0,206,[383]],[0,206,[384]],[0,206,[386]],[0,206,[392]],[0,206,[394]],[0,206,[400]],[0,206,[404]],[0,206,[410]],[0,206,[414]],[0,206,[421]],[0,206,[423]],[0,206,[425]],[0,206,[427]],[0,206,[443]],[0,206,[449]],[0,206,[451]],[0,206,[461]],[0,206,[463]],[0,206,[469]],[0,206,[471]],[0,206,[473]],[0,206,[475]],[0,206,[496]],[0,206,[500]],[0,206,[506]],[0,206,[510]],[0,206,[520]],[0,206,[522]],[0,206,[540]],[0,206,[542]],[0,206,[557]],[0,206,[559]],[0,206,[560]],[0,206,[561]],[0,206,[564]],[0,206,[565]],[0,206,[576]],[0,206,[578]],[0,206,[580]],[0,206,[582]],[0,206,[605]],[0,206,[607]],[0,206,[616]],[0,206,[618]],[0,206,[672]],[0,206,[674]],[0,206,[701]],[0,206,[703]],[0,206,[716]],[0,206,[718]],[0,206,[758]],[0,206,[775]],[0,206,[876]],[0,207,[243]],[0,207,[246]],[0,207,[247]],[0,207,[252]],[0,207,[258]],[0,207,[260]],[0,207,[270]],[0,207,[282]],[0,207,[288]],[0,207,[290]],[0,207,[296]],[0,207,[298]],[0,207,[321]],[0,207,[323]],[0,207,[333]],[0,207,[335]],[0,207,[337]],[0,207,[339]],[0,207,[349]],[0,207,[351]],[0,207,[354]],[0,207,[357]],[0,207,[358]],[0,207,[359]],[0,207,[360]],[0,207,[361]],[0,207,[363]],[0,207,[364]],[0,207,[369]],[0,207,[373]],[0,207,[377]],[0,207,[381]],[0,207,[388]],[0,207,[390]],[0,207,[396]],[0,207,[398]],[0,207,[400]],[0,207,[404]],[0,207,[410]],[0,207,[414]],[0,207,[421]],[0,207,[423]],[0,207,[425]],[0,207,[427]],[0,207,[440]],[0,207,[453]],[0,207,[455]],[0,207,[457]],[0,207,[459]],[0,207,[469]],[0,207,[471]],[0,207,[473]],[0,207,[475]],[0,207,[498]],[0,207,[502]],[0,207,[504]],[0,207,[508]],[0,207,[520]],[0,207,[522]],[0,207,[540]],[0,207,[542]],[0,207,[556]],[0,207,[558]],[0,207,[562]],[0,207,[563]],[0,207,[566]],[0,207,[567]],[0,207,[576]],[0,207,[580]],[0,207,[587]],[0,207,[605]],[0,207,[607]],[0,207,[617]],[0,207,[619]],[0,207,[672]],[0,207,[674]],[0,207,[701]],[0,207,[703]],[0,207,[717]],[0,207,[719]],[0,207,[758]],[0,207,[774]],[0,207,[876]],[0,207,[941]],[0,207,[949]],[0,208,[240]],[0,208,[247]],[0,208,[252]],[0,208,[253]],[0,208,[254]],[0,208,[255]],[0,208,[258]],[0,208,[260]],[0,208,[290]],[0,208,[294]],[0,208,[296]],[0,208,[300]],[0,208,[306]],[0,208,[310]],[0,208,[312]],[0,208,[316]],[0,208,[354]],[0,208,[358]],[0,208,[360]],[0,208,[364]],[0,208,[370]],[0,208,[374]],[0,208,[376]],[0,208,[380]],[0,208,[418]],[0,208,[422]],[0,208,[424]],[0,208,[428]],[0,208,[434]],[0,208,[438]],[0,208,[440]],[0,208,[444]],[0,208,[454]],[0,208,[482]],[0,208,[486]],[0,208,[488]],[0,208,[492]],[0,208,[498]],[0,208,[502]],[0,208,[504]],[0,208,[508]],[0,208,[514]],[0,208,[515]],[0,208,[518]],[0,208,[519]],[0,208,[528]],[0,208,[530]],[0,208,[532]],[0,208,[534]],[0,208,[546]],[0,208,[547]],[0,208,[550]],[0,208,[551]],[0,208,[569]],[0,208,[571]],[0,208,[585]],[0,208,[587]],[0,208,[601]],[0,208,[603]],[0,208,[617]],[0,208,[619]],[0,208,[633]],[0,208,[635]],[0,208,[649]],[0,208,[651]],[0,208,[665]],[0,208,[667]],[0,208,[681]],[0,208,[683]],[0,208,[692]],[0,208,[694]],[0,208,[722]],[0,208,[723]],[0,208,[726]],[0,208,[727]],[0,208,[749]],[0,208,[819]],[0,208,[892]],[0,209,[240]],[0,209,[247]],[0,209,[255]],[0,209,[258]],[0,209,[260]],[0,209,[288]],[0,209,[292]],[0,209,[298]],[0,209,[302]],[0,209,[306]],[0,209,[310]],[0,209,[312]],[0,209,[316]],[0,209,[339]],[0,209,[340]],[0,209,[350]],[0,209,[351]],[0,209,[352]],[0,209,[356]],[0,209,[362]],[0,209,[366]],[0,209,[370]],[0,209,[374]],[0,209,[376]],[0,209,[380]],[0,209,[416]],[0,209,[420]],[0,209,[426]],[0,209,[430]],[0,209,[434]],[0,209,[438]],[0,209,[440]],[0,209,[444]],[0,209,[453]],[0,209,[480]],[0,209,[484]],[0,209,[490]],[0,209,[494]],[0,209,[498]],[0,209,[502]],[0,209,[504]],[0,209,[508]],[0,209,[514]],[0,209,[515]],[0,209,[518]],[0,209,[519]],[0,209,[528]],[0,209,[532]],[0,209,[534]],[0,209,[535]],[0,209,[538]],[0,209,[539]],[0,209,[542]],[0,209,[544]],[0,209,[545]],[0,209,[548]],[0,209,[549]],[0,209,[569]],[0,209,[571]],[0,209,[584]],[0,209,[586]],[0,209,[600]],[0,209,[602]],[0,209,[617]],[0,209,[619]],[0,209,[632]],[0,209,[634]],[0,209,[649]],[0,209,[651]],[0,209,[665]],[0,209,[667]],[0,209,[680]],[0,209,[682]],[0,209,[692]],[0,209,[694]],[0,209,[720]],[0,209,[721]],[0,209,[724]],[0,209,[725]],[0,209,[749]],[0,209,[892]],[0,209,[950]],[0,210,[240]],[0,210,[252]],[0,210,[255]],[0,210,[258]],[0,210,[260]],[0,210,[290]],[0,210,[294]],[0,210,[296]],[0,210,[300]],[0,210,[304]],[0,210,[308]],[0,210,[314]],[0,210,[318]],[0,210,[339]],[0,210,[341]],[0,210,[345]],[0,210,[351]],[0,210,[354]],[0,210,[358]],[0,210,[360]],[0,210,[364]],[0,210,[368]],[0,210,[372]],[0,210,[378]],[0,210,[382]],[0,210,[418]],[0,210,[422]],[0,210,[424]],[0,210,[428]],[0,210,[432]],[0,210,[436]],[0,210,[442]],[0,210,[446]],[0,210,[451]],[0,210,[482]],[0,210,[486]],[0,210,[488]],[0,210,[492]],[0,210,[496]],[0,210,[500]],[0,210,[506]],[0,210,[510]],[0,210,[514]],[0,210,[515]],[0,210,[518]],[0,210,[519]],[0,210,[528]],[0,210,[533]],[0,210,[534]],[0,210,[539]],[0,210,[542]],[0,210,[544]],[0,210,[545]],[0,210,[548]],[0,210,[549]],[0,210,[568]],[0,210,[570]],[0,210,[585]],[0,210,[587]],[0,210,[601]],[0,210,[603]],[0,210,[616]],[0,210,[618]],[0,210,[633]],[0,210,[635]],[0,210,[648]],[0,210,[650]],[0,210,[664]],[0,210,[666]],[0,210,[681]],[0,210,[683]],[0,210,[692]],[0,210,[694]],[0,210,[720]],[0,210,[721]],[0,210,[724]],[0,210,[725]],[0,210,[749]],[0,210,[819]],[0,210,[830]],[0,210,[892]],[0,210,[948]],[0,211,[240]],[0,211,[253]],[0,211,[254]],[0,211,[255]],[0,211,[258]],[0,211,[260]],[0,211,[288]],[0,211,[292]],[0,211,[298]],[0,211,[302]],[0,211,[304]],[0,211,[308]],[0,211,[314]],[0,211,[318]],[0,211,[352]],[0,211,[356]],[0,211,[362]],[0,211,[366]],[0,211,[368]],[0,211,[372]],[0,211,[378]],[0,211,[382]],[0,211,[416]],[0,211,[420]],[0,211,[426]],[0,211,[430]],[0,211,[432]],[0,211,[436]],[0,211,[442]],[0,211,[446]],[0,211,[448]],[0,211,[480]],[0,211,[484]],[0,211,[490]],[0,211,[494]],[0,211,[496]],[0,211,[500]],[0,211,[506]],[0,211,[510]],[0,211,[514]],[0,211,[515]],[0,211,[518]],[0,211,[519]],[0,211,[528]],[0,211,[530]],[0,211,[532]],[0,211,[534]],[0,211,[546]],[0,211,[547]],[0,211,[550]],[0,211,[551]],[0,211,[568]],[0,211,[570]],[0,211,[584]],[0,211,[586]],[0,211,[600]],[0,211,[602]],[0,211,[616]],[0,211,[618]],[0,211,[632]],[0,211,[634]],[0,211,[648]],[0,211,[650]],[0,211,[664]],[0,211,[666]],[0,211,[680]],[0,211,[682]],[0,211,[692]],[0,211,[694]],[0,211,[722]],[0,211,[723]],[0,211,[726]],[0,211,[727]],[0,211,[749]],[0,211,[830]],[0,211,[892]],[0,212,[240]],[0,212,[254]],[0,212,[255]],[0,212,[258]],[0,212,[260]],[0,212,[290]],[0,212,[294]],[0,212,[296]],[0,212,[300]],[0,212,[306]],[0,212,[310]],[0,212,[312]],[0,212,[316]],[0,212,[338]],[0,212,[339]],[0,212,[340]],[0,212,[341]],[0,212,[342]],[0,212,[343]],[0,212,[344]],[0,212,[345]],[0,212,[347]],[0,212,[348]],[0,212,[350]],[0,212,[351]],[0,212,[354]],[0,212,[358]],[0,212,[360]],[0,212,[364]],[0,212,[370]],[0,212,[374]],[0,212,[376]],[0,212,[380]],[0,212,[416]],[0,212,[420]],[0,212,[426]],[0,212,[430]],[0,212,[432]],[0,212,[436]],[0,212,[442]],[0,212,[446]],[0,212,[462]],[0,212,[480]],[0,212,[484]],[0,212,[490]],[0,212,[494]],[0,212,[496]],[0,212,[500]],[0,212,[506]],[0,212,[510]],[0,212,[512]],[0,212,[513]],[0,212,[516]],[0,212,[517]],[0,212,[528]],[0,212,[530]],[0,212,[532]],[0,212,[538]],[0,212,[539]],[0,212,[542]],[0,212,[546]],[0,212,[547]],[0,212,[550]],[0,212,[551]],[0,212,[569]],[0,212,[571]],[0,212,[585]],[0,212,[587]],[0,212,[600]],[0,212,[602]],[0,212,[616]],[0,212,[618]],[0,212,[633]],[0,212,[635]],[0,212,[649]],[0,212,[651]],[0,212,[664]],[0,212,[666]],[0,212,[680]],[0,212,[682]],[0,212,[688]],[0,212,[690]],[0,212,[722]],[0,212,[723]],[0,212,[726]],[0,212,[727]],[0,212,[748]],[0,212,[830]],[0,212,[890]],[0,212,[948]],[0,213,[240]],[0,213,[252]],[0,213,[253]],[0,213,[255]],[0,213,[258]],[0,213,[260]],[0,213,[288]],[0,213,[292]],[0,213,[298]],[0,213,[302]],[0,213,[306]],[0,213,[310]],[0,213,[312]],[0,213,[316]],[0,213,[352]],[0,213,[356]],[0,213,[362]],[0,213,[366]],[0,213,[370]],[0,213,[374]],[0,213,[376]],[0,213,[380]],[0,213,[418]],[0,213,[422]],[0,213,[424]],[0,213,[428]],[0,213,[432]],[0,213,[436]],[0,213,[442]],[0,213,[446]],[0,213,[461]],[0,213,[482]],[0,213,[486]],[0,213,[488]],[0,213,[492]],[0,213,[496]],[0,213,[500]],[0,213,[506]],[0,213,[510]],[0,213,[512]],[0,213,[513]],[0,213,[516]],[0,213,[517]],[0,213,[528]],[0,213,[530]],[0,213,[532]],[0,213,[534]],[0,213,[544]],[0,213,[545]],[0,213,[548]],[0,213,[549]],[0,213,[569]],[0,213,[571]],[0,213,[584]],[0,213,[586]],[0,213,[601]],[0,213,[603]],[0,213,[616]],[0,213,[618]],[0,213,[632]],[0,213,[634]],[0,213,[649]],[0,213,[651]],[0,213,[664]],[0,213,[666]],[0,213,[681]],[0,213,[683]],[0,213,[688]],[0,213,[690]],[0,213,[720]],[0,213,[721]],[0,213,[724]],[0,213,[725]],[0,213,[748]],[0,213,[819]],[0,213,[830]],[0,213,[890]],[0,214,[240]],[0,214,[247]],[0,214,[253]],[0,214,[255]],[0,214,[258]],[0,214,[260]],[0,214,[290]],[0,214,[294]],[0,214,[296]],[0,214,[300]],[0,214,[304]],[0,214,[308]],[0,214,[314]],[0,214,[318]],[0,214,[354]],[0,214,[358]],[0,214,[360]],[0,214,[364]],[0,214,[368]],[0,214,[372]],[0,214,[378]],[0,214,[382]],[0,214,[416]],[0,214,[420]],[0,214,[426]],[0,214,[430]],[0,214,[434]],[0,214,[438]],[0,214,[440]],[0,214,[444]],[0,214,[459]],[0,214,[480]],[0,214,[484]],[0,214,[490]],[0,214,[494]],[0,214,[498]],[0,214,[502]],[0,214,[504]],[0,214,[508]],[0,214,[512]],[0,214,[513]],[0,214,[516]],[0,214,[517]],[0,214,[528]],[0,214,[530]],[0,214,[532]],[0,214,[534]],[0,214,[544]],[0,214,[545]],[0,214,[548]],[0,214,[549]],[0,214,[568]],[0,214,[570]],[0,214,[585]],[0,214,[587]],[0,214,[600]],[0,214,[602]],[0,214,[617]],[0,214,[619]],[0,214,[633]],[0,214,[635]],[0,214,[648]],[0,214,[650]],[0,214,[665]],[0,214,[667]],[0,214,[680]],[0,214,[682]],[0,214,[688]],[0,214,[690]],[0,214,[720]],[0,214,[721]],[0,214,[724]],[0,214,[725]],[0,214,[748]],[0,214,[890]],[0,215,[240]],[0,215,[247]],[0,215,[252]],[0,215,[254]],[0,215,[255]],[0,215,[258]],[0,215,[260]],[0,215,[288]],[0,215,[292]],[0,215,[298]],[0,215,[302]],[0,215,[304]],[0,215,[308]],[0,215,[314]],[0,215,[318]],[0,215,[338]],[0,215,[339]],[0,215,[342]],[0,215,[343]],[0,215,[344]],[0,215,[347]],[0,215,[348]],[0,215,[351]],[0,215,[352]],[0,215,[356]],[0,215,[362]],[0,215,[366]],[0,215,[368]],[0,215,[372]],[0,215,[378]],[0,215,[382]],[0,215,[418]],[0,215,[422]],[0,215,[424]],[0,215,[428]],[0,215,[434]],[0,215,[438]],[0,215,[440]],[0,215,[444]],[0,215,[456]],[0,215,[482]],[0,215,[486]],[0,215,[488]],[0,215,[492]],[0,215,[498]],[0,215,[502]],[0,215,[504]],[0,215,[508]],[0,215,[512]],[0,215,[513]],[0,215,[516]],[0,215,[517]],[0,215,[528]],[0,215,[530]],[0,215,[533]],[0,215,[535]],[0,215,[539]],[0,215,[542]],[0,215,[546]],[0,215,[547]],[0,215,[550]],[0,215,[551]],[0,215,[568]],[0,215,[570]],[0,215,[584]],[0,215,[586]],[0,215,[601]],[0,215,[603]],[0,215,[617]],[0,215,[619]],[0,215,[632]],[0,215,[634]],[0,215,[648]],[0,215,[650]],[0,215,[665]],[0,215,[667]],[0,215,[681]],[0,215,[683]],[0,215,[688]],[0,215,[690]],[0,215,[722]],[0,215,[723]],[0,215,[726]],[0,215,[727]],[0,215,[748]],[0,215,[819]],[0,215,[890]],[0,215,[950]],[0,216,[241]],[0,216,[246]],[0,216,[252]],[0,216,[259]],[0,216,[260]],[0,216,[293]],[0,216,[295]],[0,216,[297]],[0,216,[299]],[0,216,[309]],[0,216,[311]],[0,216,[313]],[0,216,[315]],[0,216,[357]],[0,216,[359]],[0,216,[361]],[0,216,[363]],[0,216,[373]],[0,216,[375]],[0,216,[377]],[0,216,[379]],[0,216,[421]],[0,216,[423]],[0,216,[425]],[0,216,[427]],[0,216,[437]],[0,216,[439]],[0,216,[441]],[0,216,[443]],[0,216,[470]],[0,216,[485]],[0,216,[487]],[0,216,[489]],[0,216,[491]],[0,216,[501]],[0,216,[503]],[0,216,[505]],[0,216,[507]],[0,216,[514]],[0,216,[515]],[0,216,[518]],[0,216,[519]],[0,216,[530]],[0,216,[531]],[0,216,[534]],[0,216,[535]],[0,216,[544]],[0,216,[546]],[0,216,[548]],[0,216,[550]],[0,216,[573]],[0,216,[575]],[0,216,[589]],[0,216,[591]],[0,216,[605]],[0,216,[607]],[0,216,[621]],[0,216,[623]],[0,216,[637]],[0,216,[639]],[0,216,[653]],[0,216,[655]],[0,216,[669]],[0,216,[671]],[0,216,[685]],[0,216,[687]],[0,216,[708]],[0,216,[710]],[0,216,[724]],[0,216,[726]],[0,216,[803]],[0,216,[817]],[0,216,[906]],[0,216,[920]],[0,217,[241]],[0,217,[246]],[0,217,[247]],[0,217,[254]],[0,217,[259]],[0,217,[260]],[0,217,[293]],[0,217,[295]],[0,217,[297]],[0,217,[299]],[0,217,[309]],[0,217,[311]],[0,217,[313]],[0,217,[315]],[0,217,[322]],[0,217,[325]],[0,217,[328]],[0,217,[329]],[0,217,[353]],[0,217,[355]],[0,217,[365]],[0,217,[367]],[0,217,[369]],[0,217,[371]],[0,217,[381]],[0,217,[383]],[0,217,[421]],[0,217,[423]],[0,217,[425]],[0,217,[427]],[0,217,[437]],[0,217,[439]],[0,217,[441]],[0,217,[443]],[0,217,[469]],[0,217,[481]],[0,217,[483]],[0,217,[493]],[0,217,[495]],[0,217,[497]],[0,217,[499]],[0,217,[509]],[0,217,[511]],[0,217,[514]],[0,217,[515]],[0,217,[518]],[0,217,[519]],[0,217,[528]],[0,217,[529]],[0,217,[532]],[0,217,[533]],[0,217,[544]],[0,217,[548]],[0,217,[549]],[0,217,[550]],[0,217,[551]],[0,217,[573]],[0,217,[575]],[0,217,[588]],[0,217,[590]],[0,217,[605]],[0,217,[607]],[0,217,[620]],[0,217,[622]],[0,217,[637]],[0,217,[639]],[0,217,[652]],[0,217,[654]],[0,217,[669]],[0,217,[671]],[0,217,[684]],[0,217,[686]],[0,217,[708]],[0,217,[710]],[0,217,[720]],[0,217,[722]],[0,217,[817]],[0,217,[832]],[0,217,[906]],[0,217,[918]],[0,217,[942]],[0,217,[952]],[0,218,[241]],[0,218,[246]],[0,218,[252]],[0,218,[254]],[0,218,[259]],[0,218,[260]],[0,218,[289]],[0,218,[291]],[0,218,[301]],[0,218,[303]],[0,218,[305]],[0,218,[307]],[0,218,[317]],[0,218,[319]],[0,218,[322]],[0,218,[324]],[0,218,[326]],[0,218,[327]],[0,218,[328]],[0,218,[331]],[0,218,[332]],[0,218,[334]],[0,218,[357]],[0,218,[359]],[0,218,[361]],[0,218,[363]],[0,218,[373]],[0,218,[375]],[0,218,[377]],[0,218,[379]],[0,218,[417]],[0,218,[419]],[0,218,[429]],[0,218,[431]],[0,218,[433]],[0,218,[435]],[0,218,[445]],[0,218,[447]],[0,218,[467]],[0,218,[485]],[0,218,[487]],[0,218,[489]],[0,218,[491]],[0,218,[501]],[0,218,[503]],[0,218,[505]],[0,218,[507]],[0,218,[514]],[0,218,[515]],[0,218,[518]],[0,218,[519]],[0,218,[528]],[0,218,[529]],[0,218,[532]],[0,218,[533]],[0,218,[544]],[0,218,[549]],[0,218,[554]],[0,218,[555]],[0,218,[559]],[0,218,[572]],[0,218,[574]],[0,218,[589]],[0,218,[591]],[0,218,[604]],[0,218,[606]],[0,218,[621]],[0,218,[623]],[0,218,[636]],[0,218,[638]],[0,218,[653]],[0,218,[655]],[0,218,[668]],[0,218,[670]],[0,218,[685]],[0,218,[687]],[0,218,[708]],[0,218,[710]],[0,218,[720]],[0,218,[722]],[0,218,[803]],[0,218,[906]],[0,218,[918]],[0,218,[954]],[0,219,[241]],[0,219,[246]],[0,219,[247]],[0,219,[259]],[0,219,[260]],[0,219,[289]],[0,219,[291]],[0,219,[301]],[0,219,[303]],[0,219,[305]],[0,219,[307]],[0,219,[317]],[0,219,[319]],[0,219,[353]],[0,219,[355]],[0,219,[365]],[0,219,[367]],[0,219,[369]],[0,219,[371]],[0,219,[381]],[0,219,[383]],[0,219,[417]],[0,219,[419]],[0,219,[429]],[0,219,[431]],[0,219,[433]],[0,219,[435]],[0,219,[445]],[0,219,[447]],[0,219,[464]],[0,219,[481]],[0,219,[483]],[0,219,[493]],[0,219,[495]],[0,219,[497]],[0,219,[499]],[0,219,[509]],[0,219,[511]],[0,219,[514]],[0,219,[515]],[0,219,[518]],[0,219,[519]],[0,219,[530]],[0,219,[531]],[0,219,[534]],[0,219,[535]],[0,219,[544]],[0,219,[546]],[0,219,[548]],[0,219,[550]],[0,219,[572]],[0,219,[574]],[0,219,[588]],[0,219,[590]],[0,219,[604]],[0,219,[606]],[0,219,[620]],[0,219,[622]],[0,219,[636]],[0,219,[638]],[0,219,[652]],[0,219,[654]],[0,219,[668]],[0,219,[670]],[0,219,[684]],[0,219,[686]],[0,219,[708]],[0,219,[710]],[0,219,[724]],[0,219,[726]],[0,219,[832]],[0,219,[906]],[0,219,[920]],[0,220,[241]],[0,220,[246]],[0,220,[247]],[0,220,[253]],[0,220,[259]],[0,220,[260]],[0,220,[293]],[0,220,[295]],[0,220,[297]],[0,220,[299]],[0,220,[309]],[0,220,[311]],[0,220,[313]],[0,220,[315]],[0,220,[322]],[0,220,[324]],[0,220,[328]],[0,220,[334]],[0,220,[357]],[0,220,[359]],[0,220,[361]],[0,220,[363]],[0,220,[373]],[0,220,[375]],[0,220,[377]],[0,220,[379]],[0,220,[417]],[0,220,[419]],[0,220,[429]],[0,220,[431]],[0,220,[433]],[0,220,[435]],[0,220,[445]],[0,220,[447]],[0,220,[478]],[0,220,[481]],[0,220,[483]],[0,220,[493]],[0,220,[495]],[0,220,[497]],[0,220,[499]],[0,220,[509]],[0,220,[511]],[0,220,[512]],[0,220,[513]],[0,220,[516]],[0,220,[517]],[0,220,[530]],[0,220,[531]],[0,220,[534]],[0,220,[535]],[0,220,[544]],[0,220,[550]],[0,220,[551]],[0,220,[554]],[0,220,[559]],[0,220,[573]],[0,220,[575]],[0,220,[589]],[0,220,[591]],[0,220,[604]],[0,220,[606]],[0,220,[620]],[0,220,[622]],[0,220,[637]],[0,220,[639]],[0,220,[653]],[0,220,[655]],[0,220,[668]],[0,220,[670]],[0,220,[684]],[0,220,[686]],[0,220,[704]],[0,220,[706]],[0,220,[724]],[0,220,[726]],[0,220,[803]],[0,220,[832]],[0,220,[904]],[0,220,[920]],[0,220,[952]],[0,221,[241]],[0,221,[246]],[0,221,[252]],[0,221,[253]],[0,221,[254]],[0,221,[259]],[0,221,[260]],[0,221,[293]],[0,221,[295]],[0,221,[297]],[0,221,[299]],[0,221,[309]],[0,221,[311]],[0,221,[313]],[0,221,[315]],[0,221,[353]],[0,221,[355]],[0,221,[365]],[0,221,[367]],[0,221,[369]],[0,221,[371]],[0,221,[381]],[0,221,[383]],[0,221,[417]],[0,221,[419]],[0,221,[429]],[0,221,[431]],[0,221,[433]],[0,221,[435]],[0,221,[445]],[0,221,[447]],[0,221,[477]],[0,221,[485]],[0,221,[487]],[0,221,[489]],[0,221,[491]],[0,221,[501]],[0,221,[503]],[0,221,[505]],[0,221,[507]],[0,221,[512]],[0,221,[513]],[0,221,[516]],[0,221,[517]],[0,221,[528]],[0,221,[529]],[0,221,[532]],[0,221,[533]],[0,221,[544]],[0,221,[546]],[0,221,[548]],[0,221,[550]],[0,221,[573]],[0,221,[575]],[0,221,[588]],[0,221,[590]],[0,221,[604]],[0,221,[606]],[0,221,[621]],[0,221,[623]],[0,221,[637]],[0,221,[639]],[0,221,[652]],[0,221,[654]],[0,221,[668]],[0,221,[670]],[0,221,[685]],[0,221,[687]],[0,221,[704]],[0,221,[706]],[0,221,[720]],[0,221,[722]],[0,221,[904]],[0,221,[918]],[0,222,[241]],[0,222,[246]],[0,222,[247]],[0,222,[253]],[0,222,[254]],[0,222,[259]],[0,222,[260]],[0,222,[289]],[0,222,[291]],[0,222,[301]],[0,222,[303]],[0,222,[305]],[0,222,[307]],[0,222,[317]],[0,222,[319]],[0,222,[357]],[0,222,[359]],[0,222,[361]],[0,222,[363]],[0,222,[373]],[0,222,[375]],[0,222,[377]],[0,222,[379]],[0,222,[421]],[0,222,[423]],[0,222,[425]],[0,222,[427]],[0,222,[437]],[0,222,[439]],[0,222,[441]],[0,222,[443]],[0,222,[475]],[0,222,[481]],[0,222,[483]],[0,222,[493]],[0,222,[495]],[0,222,[497]],[0,222,[499]],[0,222,[509]],[0,222,[511]],[0,222,[512]],[0,222,[513]],[0,222,[516]],[0,222,[517]],[0,222,[528]],[0,222,[529]],[0,222,[532]],[0,222,[533]],[0,222,[544]],[0,222,[546]],[0,222,[548]],[0,222,[550]],[0,222,[572]],[0,222,[574]],[0,222,[589]],[0,222,[591]],[0,222,[605]],[0,222,[607]],[0,222,[620]],[0,222,[622]],[0,222,[636]],[0,222,[638]],[0,222,[653]],[0,222,[655]],[0,222,[669]],[0,222,[671]],[0,222,[684]],[0,222,[686]],[0,222,[704]],[0,222,[706]],[0,222,[720]],[0,222,[722]],[0,222,[803]],[0,222,[817]],[0,222,[832]],[0,222,[904]],[0,222,[918]],[0,223,[241]],[0,223,[246]],[0,223,[252]],[0,223,[253]],[0,223,[259]],[0,223,[260]],[0,223,[289]],[0,223,[291]],[0,223,[301]],[0,223,[303]],[0,223,[305]],[0,223,[307]],[0,223,[317]],[0,223,[319]],[0,223,[322]],[0,223,[325]],[0,223,[326]],[0,223,[327]],[0,223,[328]],[0,223,[329]],[0,223,[331]],[0,223,[332]],[0,223,[353]],[0,223,[355]],[0,223,[365]],[0,223,[367]],[0,223,[369]],[0,223,[371]],[0,223,[381]],[0,223,[383]],[0,223,[421]],[0,223,[423]],[0,223,[425]],[0,223,[427]],[0,223,[437]],[0,223,[439]],[0,223,[441]],[0,223,[443]],[0,223,[472]],[0,223,[485]],[0,223,[487]],[0,223,[489]],[0,223,[491]],[0,223,[501]],[0,223,[503]],[0,223,[505]],[0,223,[507]],[0,223,[512]],[0,223,[513]],[0,223,[516]],[0,223,[517]],[0,223,[530]],[0,223,[531]],[0,223,[534]],[0,223,[535]],[0,223,[544]],[0,223,[548]],[0,223,[555]],[0,223,[572]],[0,223,[574]],[0,223,[588]],[0,223,[590]],[0,223,[605]],[0,223,[607]],[0,223,[621]],[0,223,[623]],[0,223,[636]],[0,223,[638]],[0,223,[652]],[0,223,[654]],[0,223,[669]],[0,223,[671]],[0,223,[685]],[0,223,[687]],[0,223,[704]],[0,223,[706]],[0,223,[724]],[0,223,[726]],[0,223,[817]],[0,223,[904]],[0,223,[920]],[0,223,[942]],[0,223,[954]],[0,224,[242]],[0,224,[246]],[0,224,[247]],[0,224,[252]],[0,224,[253]],[0,224,[254]],[0,224,[255]],[0,224,[259]],[0,224,[260]],[0,224,[264]],[0,224,[276]],[0,224,[291]],[0,224,[295]],[0,224,[299]],[0,224,[303]],[0,224,[322]],[0,224,[326]],[0,224,[328]],[0,224,[332]],[0,224,[338]],[0,224,[342]],[0,224,[344]],[0,224,[348]],[0,224,[372]],[0,224,[374]],[0,224,[380]],[0,224,[382]],[0,224,[386]],[0,224,[390]],[0,224,[392]],[0,224,[396]],[0,224,[402]],[0,224,[406]],[0,224,[408]],[0,224,[412]],[0,224,[418]],[0,224,[422]],[0,224,[424]],[0,224,[428]],[0,224,[450]],[0,224,[454]],[0,224,[456]],[0,224,[460]],[0,224,[466]],[0,224,[470]],[0,224,[472]],[0,224,[476]],[0,224,[486]],[0,224,[501]],[0,224,[503]],[0,224,[505]],[0,224,[507]],[0,224,[521]],[0,224,[523]],[0,224,[537]],[0,224,[539]],[0,224,[553]],[0,224,[555]],[0,224,[560]],[0,224,[562]],[0,224,[564]],[0,224,[566]],[0,224,[578]],[0,224,[579]],[0,224,[582]],[0,224,[583]],[0,224,[601]],[0,224,[603]],[0,224,[621]],[0,224,[623]],[0,224,[660]],[0,224,[662]],[0,224,[697]],[0,224,[699]],[0,224,[713]],[0,224,[715]],[0,224,[729]],[0,224,[731]],[0,224,[747]],[0,224,[761]],[0,224,[864]],[0,225,[242]],[0,225,[246]],[0,225,[247]],[0,225,[255]],[0,225,[259]],[0,225,[260]],[0,225,[264]],[0,225,[276]],[0,225,[289]],[0,225,[293]],[0,225,[297]],[0,225,[301]],[0,225,[306]],[0,225,[307]],[0,225,[308]],[0,225,[309]],[0,225,[310]],[0,225,[311]],[0,225,[312]],[0,225,[313]],[0,225,[315]],[0,225,[316]],[0,225,[318]],[0,225,[319]],[0,225,[320]],[0,225,[324]],[0,225,[330]],[0,225,[334]],[0,225,[338]],[0,225,[342]],[0,225,[344]],[0,225,[348]],[0,225,[372]],[0,225,[374]],[0,225,[380]],[0,225,[382]],[0,225,[384]],[0,225,[388]],[0,225,[394]],[0,225,[398]],[0,225,[402]],[0,225,[406]],[0,225,[408]],[0,225,[412]],[0,225,[416]],[0,225,[420]],[0,225,[426]],[0,225,[430]],[0,225,[448]],[0,225,[452]],[0,225,[458]],[0,225,[462]],[0,225,[466]],[0,225,[470]],[0,225,[472]],[0,225,[476]],[0,225,[485]],[0,225,[501]],[0,225,[503]],[0,225,[505]],[0,225,[507]],[0,225,[521]],[0,225,[523]],[0,225,[537]],[0,225,[539]],[0,225,[552]],[0,225,[554]],[0,225,[560]],[0,225,[562]],[0,225,[564]],[0,225,[570]],[0,225,[571]],[0,225,[574]],[0,225,[575]],[0,225,[576]],[0,225,[577]],[0,225,[580]],[0,225,[581]],[0,225,[600]],[0,225,[602]],[0,225,[621]],[0,225,[623]],[0,225,[660]],[0,225,[662]],[0,225,[697]],[0,225,[699]],[0,225,[712]],[0,225,[714]],[0,225,[728]],[0,225,[730]],[0,225,[747]],[0,225,[761]],[0,225,[772]],[0,225,[864]],[0,225,[953]],[0,226,[242]],[0,226,[246]],[0,226,[253]],[0,226,[255]],[0,226,[259]],[0,226,[260]],[0,226,[264]],[0,226,[276]],[0,226,[291]],[0,226,[295]],[0,226,[299]],[0,226,[303]],[0,226,[306]],[0,226,[307]],[0,226,[310]],[0,226,[311]],[0,226,[312]],[0,226,[315]],[0,226,[316]],[0,226,[319]],[0,226,[322]],[0,226,[326]],[0,226,[328]],[0,226,[332]],[0,226,[336]],[0,226,[340]],[0,226,[346]],[0,226,[350]],[0,226,[368]],[0,226,[370]],[0,226,[376]],[0,226,[378]],[0,226,[384]],[0,226,[388]],[0,226,[394]],[0,226,[398]],[0,226,[402]],[0,226,[406]],[0,226,[408]],[0,226,[412]],[0,226,[418]],[0,226,[422]],[0,226,[424]],[0,226,[428]],[0,226,[450]],[0,226,[454]],[0,226,[456]],[0,226,[460]],[0,226,[464]],[0,226,[468]],[0,226,[474]],[0,226,[478]],[0,226,[483]],[0,226,[497]],[0,226,[499]],[0,226,[509]],[0,226,[511]],[0,226,[521]],[0,226,[523]],[0,226,[536]],[0,226,[538]],[0,226,[553]],[0,226,[555]],[0,226,[560]],[0,226,[562]],[0,226,[567]],[0,226,[571]],[0,226,[574]],[0,226,[575]],[0,226,[576]],[0,226,[577]],[0,226,[580]],[0,226,[581]],[0,226,[601]],[0,226,[603]],[0,226,[620]],[0,226,[622]],[0,226,[660]],[0,226,[662]],[0,226,[696]],[0,226,[698]],[0,226,[713]],[0,226,[715]],[0,226,[728]],[0,226,[730]],[0,226,[747]],[0,226,[864]],[0,226,[944]],[0,226,[951]],[0,227,[242]],[0,227,[246]],[0,227,[252]],[0,227,[254]],[0,227,[255]],[0,227,[259]],[0,227,[260]],[0,227,[264]],[0,227,[276]],[0,227,[289]],[0,227,[293]],[0,227,[297]],[0,227,[301]],[0,227,[320]],[0,227,[324]],[0,227,[330]],[0,227,[334]],[0,227,[336]],[0,227,[340]],[0,227,[346]],[0,227,[350]],[0,227,[368]],[0,227,[370]],[0,227,[376]],[0,227,[378]],[0,227,[386]],[0,227,[390]],[0,227,[392]],[0,227,[396]],[0,227,[402]],[0,227,[406]],[0,227,[408]],[0,227,[412]],[0,227,[416]],[0,227,[420]],[0,227,[426]],[0,227,[430]],[0,227,[448]],[0,227,[452]],[0,227,[458]],[0,227,[462]],[0,227,[464]],[0,227,[468]],[0,227,[474]],[0,227,[478]],[0,227,[480]],[0,227,[497]],[0,227,[499]],[0,227,[509]],[0,227,[511]],[0,227,[521]],[0,227,[523]],[0,227,[536]],[0,227,[538]],[0,227,[552]],[0,227,[554]],[0,227,[560]],[0,227,[562]],[0,227,[564]],[0,227,[566]],[0,227,[578]],[0,227,[579]],[0,227,[582]],[0,227,[583]],[0,227,[600]],[0,227,[602]],[0,227,[620]],[0,227,[622]],[0,227,[660]],[0,227,[662]],[0,227,[696]],[0,227,[698]],[0,227,[712]],[0,227,[714]],[0,227,[729]],[0,227,[731]],[0,227,[747]],[0,227,[772]],[0,227,[864]],[0,228,[242]],[0,228,[246]],[0,228,[254]],[0,228,[255]],[0,228,[259]],[0,228,[260]],[0,228,[264]],[0,228,[276]],[0,228,[291]],[0,228,[295]],[0,228,[299]],[0,228,[303]],[0,228,[307]],[0,228,[309]],[0,228,[313]],[0,228,[319]],[0,228,[322]],[0,228,[326]],[0,228,[328]],[0,228,[332]],[0,228,[338]],[0,228,[342]],[0,228,[344]],[0,228,[348]],[0,228,[372]],[0,228,[374]],[0,228,[380]],[0,228,[382]],[0,228,[386]],[0,228,[390]],[0,228,[392]],[0,228,[396]],[0,228,[400]],[0,228,[404]],[0,228,[410]],[0,228,[414]],[0,228,[416]],[0,228,[420]],[0,228,[426]],[0,228,[430]],[0,228,[448]],[0,228,[452]],[0,228,[458]],[0,228,[462]],[0,228,[464]],[0,228,[468]],[0,228,[474]],[0,228,[478]],[0,228,[494]],[0,228,[497]],[0,228,[499]],[0,228,[509]],[0,228,[511]],[0,228,[520]],[0,228,[522]],[0,228,[537]],[0,228,[539]],[0,228,[553]],[0,228,[555]],[0,228,[560]],[0,228,[565]],[0,228,[566]],[0,228,[574]],[0,228,[578]],[0,228,[579]],[0,228,[582]],[0,228,[583]],[0,228,[600]],[0,228,[602]],[0,228,[620]],[0,228,[622]],[0,228,[656]],[0,228,[658]],[0,228,[696]],[0,228,[698]],[0,228,[712]],[0,228,[714]],[0,228,[729]],[0,228,[731]],[0,228,[761]],[0,228,[862]],[0,228,[951]],[0,229,[242]],[0,229,[246]],[0,229,[252]],[0,229,[253]],[0,229,[255]],[0,229,[259]],[0,229,[260]],[0,229,[264]],[0,229,[276]],[0,229,[289]],[0,229,[293]],[0,229,[297]],[0,229,[301]],[0,229,[320]],[0,229,[324]],[0,229,[330]],[0,229,[334]],[0,229,[338]],[0,229,[342]],[0,229,[344]],[0,229,[348]],[0,229,[372]],[0,229,[374]],[0,229,[380]],[0,229,[382]],[0,229,[384]],[0,229,[388]],[0,229,[394]],[0,229,[398]],[0,229,[400]],[0,229,[404]],[0,229,[410]],[0,229,[414]],[0,229,[418]],[0,229,[422]],[0,229,[424]],[0,229,[428]],[0,229,[450]],[0,229,[454]],[0,229,[456]],[0,229,[460]],[0,229,[464]],[0,229,[468]],[0,229,[474]],[0,229,[478]],[0,229,[493]],[0,229,[497]],[0,229,[499]],[0,229,[509]],[0,229,[511]],[0,229,[520]],[0,229,[522]],[0,229,[537]],[0,229,[539]],[0,229,[552]],[0,229,[554]],[0,229,[560]],[0,229,[562]],[0,229,[564]],[0,229,[566]],[0,229,[576]],[0,229,[577]],[0,229,[580]],[0,229,[581]],[0,229,[601]],[0,229,[603]],[0,229,[620]],[0,229,[622]],[0,229,[656]],[0,229,[658]],[0,229,[696]],[0,229,[698]],[0,229,[713]],[0,229,[715]],[0,229,[728]],[0,229,[730]],[0,229,[761]],[0,229,[772]],[0,229,[862]],[0,230,[242]],[0,230,[246]],[0,230,[247]],[0,230,[252]],[0,230,[255]],[0,230,[259]],[0,230,[260]],[0,230,[264]],[0,230,[276]],[0,230,[291]],[0,230,[295]],[0,230,[299]],[0,230,[303]],[0,230,[322]],[0,230,[326]],[0,230,[328]],[0,230,[332]],[0,230,[336]],[0,230,[340]],[0,230,[346]],[0,230,[350]],[0,230,[368]],[0,230,[370]],[0,230,[376]],[0,230,[378]],[0,230,[384]],[0,230,[388]],[0,230,[394]],[0,230,[398]],[0,230,[400]],[0,230,[404]],[0,230,[410]],[0,230,[414]],[0,230,[416]],[0,230,[420]],[0,230,[426]],[0,230,[430]],[0,230,[448]],[0,230,[452]],[0,230,[458]],[0,230,[462]],[0,230,[466]],[0,230,[470]],[0,230,[472]],[0,230,[476]],[0,230,[491]],[0,230,[501]],[0,230,[503]],[0,230,[505]],[0,230,[507]],[0,230,[520]],[0,230,[522]],[0,230,[536]],[0,230,[538]],[0,230,[553]],[0,230,[555]],[0,230,[560]],[0,230,[562]],[0,230,[564]],[0,230,[566]],[0,230,[576]],[0,230,[577]],[0,230,[580]],[0,230,[581]],[0,230,[600]],[0,230,[602]],[0,230,[621]],[0,230,[623]],[0,230,[656]],[0,230,[658]],[0,230,[697]],[0,230,[699]],[0,230,[712]],[0,230,[714]],[0,230,[728]],[0,230,[730]],[0,230,[862]],[0,231,[242]],[0,231,[246]],[0,231,[247]],[0,231,[253]],[0,231,[254]],[0,231,[255]],[0,231,[259]],[0,231,[260]],[0,231,[264]],[0,231,[276]],[0,231,[289]],[0,231,[293]],[0,231,[297]],[0,231,[301]],[0,231,[307]],[0,231,[308]],[0,231,[318]],[0,231,[319]],[0,231,[320]],[0,231,[324]],[0,231,[330]],[0,231,[334]],[0,231,[336]],[0,231,[340]],[0,231,[346]],[0,231,[350]],[0,231,[368]],[0,231,[370]],[0,231,[376]],[0,231,[378]],[0,231,[386]],[0,231,[390]],[0,231,[392]],[0,231,[396]],[0,231,[400]],[0,231,[404]],[0,231,[410]],[0,231,[414]],[0,231,[418]],[0,231,[422]],[0,231,[424]],[0,231,[428]],[0,231,[450]],[0,231,[454]],[0,231,[456]],[0,231,[460]],[0,231,[466]],[0,231,[470]],[0,231,[472]],[0,231,[476]],[0,231,[488]],[0,231,[501]],[0,231,[503]],[0,231,[505]],[0,231,[507]],[0,231,[520]],[0,231,[522]],[0,231,[536]],[0,231,[538]],[0,231,[552]],[0,231,[554]],[0,231,[560]],[0,231,[564]],[0,231,[565]],[0,231,[566]],[0,231,[567]],[0,231,[570]],[0,231,[574]],[0,231,[578]],[0,231,[579]],[0,231,[582]],[0,231,[583]],[0,231,[601]],[0,231,[603]],[0,231,[621]],[0,231,[623]],[0,231,[656]],[0,231,[658]],[0,231,[697]],[0,231,[699]],[0,231,[713]],[0,231,[715]],[0,231,[729]],[0,231,[731]],[0,231,[772]],[0,231,[862]],[0,231,[944]],[0,231,[953]],[0,232,[246]],[0,232,[247]],[0,232,[248]],[0,232,[252]],[0,232,[253]],[0,232,[258]],[0,232,[259]],[0,232,[260]],[0,232,[266]],[0,232,[284]],[0,232,[307]],[0,232,[311]],[0,232,[315]],[0,232,[319]],[0,232,[324]],[0,232,[326]],[0,232,[332]],[0,232,[334]],[0,232,[339]],[0,232,[343]],[0,232,[347]],[0,232,[351]],[0,232,[356]],[0,232,[358]],[0,232,[364]],[0,232,[366]],[0,232,[389]],[0,232,[391]],[0,232,[393]],[0,232,[395]],[0,232,[403]],[0,232,[407]],[0,232,[411]],[0,232,[415]],[0,232,[434]],[0,232,[438]],[0,232,[440]],[0,232,[444]],[0,232,[453]],[0,232,[455]],[0,232,[457]],[0,232,[459]],[0,232,[466]],[0,232,[470]],[0,232,[472]],[0,232,[476]],[0,232,[485]],[0,232,[487]],[0,232,[489]],[0,232,[491]],[0,232,[502]],[0,232,[596]],[0,232,[598]],[0,232,[624]],[0,232,[626]],[0,232,[628]],[0,232,[630]],[0,232,[642]],[0,232,[643]],[0,232,[646]],[0,232,[647]],[0,232,[665]],[0,232,[667]],[0,232,[685]],[0,232,[687]],[0,232,[697]],[0,232,[699]],[0,232,[717]],[0,232,[719]],[0,232,[733]],[0,232,[735]],[0,232,[861]],[0,232,[917]],[0,233,[246]],[0,233,[248]],[0,233,[252]],[0,233,[254]],[0,233,[258]],[0,233,[259]],[0,233,[260]],[0,233,[266]],[0,233,[284]],[0,233,[290]],[0,233,[291]],[0,233,[292]],[0,233,[293]],[0,233,[294]],[0,233,[295]],[0,233,[296]],[0,233,[297]],[0,233,[299]],[0,233,[300]],[0,233,[302]],[0,233,[303]],[0,233,[305]],[0,233,[309]],[0,233,[313]],[0,233,[317]],[0,233,[320]],[0,233,[322]],[0,233,[328]],[0,233,[330]],[0,233,[339]],[0,233,[343]],[0,233,[347]],[0,233,[351]],[0,233,[356]],[0,233,[358]],[0,233,[364]],[0,233,[366]],[0,233,[385]],[0,233,[387]],[0,233,[397]],[0,233,[399]],[0,233,[403]],[0,233,[407]],[0,233,[411]],[0,233,[415]],[0,233,[432]],[0,233,[436]],[0,233,[442]],[0,233,[446]],[0,233,[449]],[0,233,[451]],[0,233,[461]],[0,233,[463]],[0,233,[466]],[0,233,[470]],[0,233,[472]],[0,233,[476]],[0,233,[485]],[0,233,[487]],[0,233,[489]],[0,233,[491]],[0,233,[500]],[0,233,[596]],[0,233,[598]],[0,233,[624]],[0,233,[626]],[0,233,[628]],[0,233,[634]],[0,233,[635]],[0,233,[638]],[0,233,[639]],[0,233,[640]],[0,233,[641]],[0,233,[644]],[0,233,[645]],[0,233,[664]],[0,233,[666]],[0,233,[685]],[0,233,[687]],[0,233,[697]],[0,233,[699]],[0,233,[716]],[0,233,[718]],[0,233,[732]],[0,233,[734]],[0,233,[874]],[0,233,[916]],[0,233,[974]],[0,233,[979]],[0,234,[246]],[0,234,[248]],[0,234,[253]],[0,234,[254]],[0,234,[258]],[0,234,[259]],[0,234,[260]],[0,234,[266]],[0,234,[284]],[0,234,[291]],[0,234,[293]],[0,234,[294]],[0,234,[295]],[0,234,[297]],[0,234,[299]],[0,234,[300]],[0,234,[303]],[0,234,[307]],[0,234,[311]],[0,234,[315]],[0,234,[319]],[0,234,[324]],[0,234,[326]],[0,234,[332]],[0,234,[334]],[0,234,[337]],[0,234,[341]],[0,234,[345]],[0,234,[349]],[0,234,[352]],[0,234,[354]],[0,234,[360]],[0,234,[362]],[0,234,[385]],[0,234,[387]],[0,234,[397]],[0,234,[399]],[0,234,[403]],[0,234,[407]],[0,234,[411]],[0,234,[415]],[0,234,[434]],[0,234,[438]],[0,234,[440]],[0,234,[444]],[0,234,[453]],[0,234,[455]],[0,234,[457]],[0,234,[459]],[0,234,[464]],[0,234,[468]],[0,234,[474]],[0,234,[478]],[0,234,[481]],[0,234,[483]],[0,234,[493]],[0,234,[495]],[0,234,[498]],[0,234,[596]],[0,234,[598]],[0,234,[624]],[0,234,[631]],[0,234,[635]],[0,234,[638]],[0,234,[639]],[0,234,[640]],[0,234,[641]],[0,234,[644]],[0,234,[645]],[0,234,[665]],[0,234,[667]],[0,234,[684]],[0,234,[686]],[0,234,[696]],[0,234,[698]],[0,234,[717]],[0,234,[719]],[0,234,[732]],[0,234,[734]],[0,234,[756]],[0,234,[888]],[0,234,[917]],[0,234,[978]],[0,235,[246]],[0,235,[247]],[0,235,[248]],[0,235,[258]],[0,235,[259]],[0,235,[260]],[0,235,[266]],[0,235,[284]],[0,235,[305]],[0,235,[309]],[0,235,[313]],[0,235,[317]],[0,235,[320]],[0,235,[322]],[0,235,[328]],[0,235,[330]],[0,235,[337]],[0,235,[341]],[0,235,[345]],[0,235,[349]],[0,235,[352]],[0,235,[354]],[0,235,[360]],[0,235,[362]],[0,235,[389]],[0,235,[391]],[0,235,[393]],[0,235,[395]],[0,235,[403]],[0,235,[407]],[0,235,[411]],[0,235,[415]],[0,235,[432]],[0,235,[436]],[0,235,[442]],[0,235,[446]],[0,235,[449]],[0,235,[451]],[0,235,[461]],[0,235,[463]],[0,235,[464]],[0,235,[468]],[0,235,[474]],[0,235,[478]],[0,235,[481]],[0,235,[483]],[0,235,[493]],[0,235,[495]],[0,235,[496]],[0,235,[596]],[0,235,[598]],[0,235,[624]],[0,235,[626]],[0,235,[628]],[0,235,[630]],[0,235,[642]],[0,235,[643]],[0,235,[646]],[0,235,[647]],[0,235,[664]],[0,235,[666]],[0,235,[684]],[0,235,[686]],[0,235,[696]],[0,235,[698]],[0,235,[716]],[0,235,[718]],[0,235,[733]],[0,235,[735]],[0,235,[756]],[0,235,[861]],[0,235,[874]],[0,235,[888]],[0,235,[916]],[0,236,[246]],[0,236,[248]],[0,236,[258]],[0,236,[259]],[0,236,[260]],[0,236,[266]],[0,236,[284]],[0,236,[290]],[0,236,[291]],[0,236,[296]],[0,236,[303]],[0,236,[307]],[0,236,[311]],[0,236,[315]],[0,236,[319]],[0,236,[324]],[0,236,[326]],[0,236,[332]],[0,236,[334]],[0,236,[339]],[0,236,[343]],[0,236,[347]],[0,236,[351]],[0,236,[356]],[0,236,[358]],[0,236,[364]],[0,236,[366]],[0,236,[389]],[0,236,[391]],[0,236,[393]],[0,236,[395]],[0,236,[401]],[0,236,[405]],[0,236,[409]],[0,236,[413]],[0,236,[432]],[0,236,[436]],[0,236,[442]],[0,236,[446]],[0,236,[449]],[0,236,[451]],[0,236,[461]],[0,236,[463]],[0,236,[464]],[0,236,[468]],[0,236,[474]],[0,236,[478]],[0,236,[481]],[0,236,[483]],[0,236,[493]],[0,236,[495]],[0,236,[511]],[0,236,[592]],[0,236,[594]],[0,236,[624]],[0,236,[626]],[0,236,[629]],[0,236,[630]],[0,236,[638]],[0,236,[642]],[0,236,[643]],[0,236,[646]],[0,236,[647]],[0,236,[664]],[0,236,[666]],[0,236,[684]],[0,236,[686]],[0,236,[696]],[0,236,[698]],[0,236,[716]],[0,236,[718]],[0,236,[733]],[0,236,[735]],[0,236,[742]],[0,236,[806]],[0,236,[861]],[0,236,[874]],[0,236,[888]],[0,236,[916]],[0,236,[974]],[0,236,[978]],[0,237,[246]],[0,237,[247]],[0,237,[248]],[0,237,[253]],[0,237,[254]],[0,237,[258]],[0,237,[259]],[0,237,[260]],[0,237,[266]],[0,237,[284]],[0,237,[305]],[0,237,[309]],[0,237,[313]],[0,237,[317]],[0,237,[320]],[0,237,[322]],[0,237,[328]],[0,237,[330]],[0,237,[339]],[0,237,[343]],[0,237,[347]],[0,237,[351]],[0,237,[356]],[0,237,[358]],[0,237,[364]],[0,237,[366]],[0,237,[385]],[0,237,[387]],[0,237,[397]],[0,237,[399]],[0,237,[401]],[0,237,[405]],[0,237,[409]],[0,237,[413]],[0,237,[434]],[0,237,[438]],[0,237,[440]],[0,237,[444]],[0,237,[453]],[0,237,[455]],[0,237,[457]],[0,237,[459]],[0,237,[464]],[0,237,[468]],[0,237,[474]],[0,237,[478]],[0,237,[481]],[0,237,[483]],[0,237,[493]],[0,237,[495]],[0,237,[509]],[0,237,[592]],[0,237,[594]],[0,237,[624]],[0,237,[626]],[0,237,[628]],[0,237,[630]],[0,237,[640]],[0,237,[641]],[0,237,[644]],[0,237,[645]],[0,237,[665]],[0,237,[667]],[0,237,[684]],[0,237,[686]],[0,237,[696]],[0,237,[698]],[0,237,[717]],[0,237,[719]],[0,237,[732]],[0,237,[734]],[0,237,[742]],[0,237,[806]],[0,237,[888]],[0,237,[917]],[0,238,[246]],[0,238,[247]],[0,238,[248]],[0,238,[252]],[0,238,[254]],[0,238,[258]],[0,238,[259]],[0,238,[260]],[0,238,[266]],[0,238,[284]],[0,238,[307]],[0,238,[311]],[0,238,[315]],[0,238,[319]],[0,238,[324]],[0,238,[326]],[0,238,[332]],[0,238,[334]],[0,238,[337]],[0,238,[341]],[0,238,[345]],[0,238,[349]],[0,238,[352]],[0,238,[354]],[0,238,[360]],[0,238,[362]],[0,238,[385]],[0,238,[387]],[0,238,[397]],[0,238,[399]],[0,238,[401]],[0,238,[405]],[0,238,[409]],[0,238,[413]],[0,238,[432]],[0,238,[436]],[0,238,[442]],[0,238,[446]],[0,238,[449]],[0,238,[451]],[0,238,[461]],[0,238,[463]],[0,238,[466]],[0,238,[470]],[0,238,[472]],[0,238,[476]],[0,238,[485]],[0,238,[487]],[0,238,[489]],[0,238,[491]],[0,238,[507]],[0,238,[592]],[0,238,[594]],[0,238,[624]],[0,238,[626]],[0,238,[628]],[0,238,[630]],[0,238,[640]],[0,238,[641]],[0,238,[644]],[0,238,[645]],[0,238,[664]],[0,238,[666]],[0,238,[685]],[0,238,[687]],[0,238,[697]],[0,238,[699]],[0,238,[716]],[0,238,[718]],[0,238,[732]],[0,238,[734]],[0,238,[742]],[0,238,[756]],[0,238,[806]],[0,238,[874]],[0,238,[916]],[0,239,[246]],[0,239,[248]],[0,239,[252]],[0,239,[253]],[0,239,[258]],[0,239,[259]],[0,239,[260]],[0,239,[266]],[0,239,[284]],[0,239,[291]],[0,239,[292]],[0,239,[302]],[0,239,[303]],[0,239,[305]],[0,239,[309]],[0,239,[313]],[0,239,[317]],[0,239,[320]],[0,239,[322]],[0,239,[328]],[0,239,[330]],[0,239,[337]],[0,239,[341]],[0,239,[345]],[0,239,[349]],[0,239,[352]],[0,239,[354]],[0,239,[360]],[0,239,[362]],[0,239,[389]],[0,239,[391]],[0,239,[393]],[0,239,[395]],[0,239,[401]],[0,239,[405]],[0,239,[409]],[0,239,[413]],[0,239,[434]],[0,239,[438]],[0,239,[440]],[0,239,[444]],[0,239,[453]],[0,239,[455]],[0,239,[457]],[0,239,[459]],[0,239,[466]],[0,239,[470]],[0,239,[472]],[0,239,[476]],[0,239,[485]],[0,239,[487]],[0,239,[489]],[0,239,[491]],[0,239,[505]],[0,239,[592]],[0,239,[594]],[0,239,[624]],[0,239,[628]],[0,239,[629]],[0,239,[630]],[0,239,[631]],[0,239,[634]],[0,239,[638]],[0,239,[642]],[0,239,[643]],[0,239,[646]],[0,239,[647]],[0,239,[665]],[0,239,[667]],[0,239,[685]],[0,239,[687]],[0,239,[697]],[0,239,[699]],[0,239,[717]],[0,239,[719]],[0,239,[733]],[0,239,[735]],[0,239,[742]],[0,239,[756]],[0,239,[806]],[0,239,[861]],[0,239,[917]],[0,239,[979]]],"R":740,"coords":"ham","final":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"form":"/2","format":"bitE8/1","frames":[[],[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],[0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[111],[112],[113],[114],[115],[116],[117],[118],[119],[64,67],[65,66],[68,71],[69,70],[64,69],[65,68],[66,71],[67,70],[64,70],[66,68],[65,71],[67,69],[32,35],[33,34],[36,39],[37,38],[32,37],[33,36],[34,39],[35,38],[32,38],[34,36],[33,39],[35,37],[24,27],[25,26],[28,31],[29,30],[24,29],[25,28],[26,31],[27,30],[24,30],[26,28],[25,31],[27,29],[16,19],[17,18],[20,23],[21,22],[16,21],[17,20],[18,23],[19,22],[16,22],[18,20],[17,23],[19,21],[40,43],[41,42],[44,47],[45,46],[40,45],[41,44],[42,47],[43,46],[40,46],[42,44],[41,47],[43,45],[72,75],[73,74],[76,79],[77,78],[72,77],[73,76],[74,79],[75,78],[72,78],[74,76],[73,79],[75,77],[112,115],[113,114],[116,119],[117,118],[112,117],[113,116],[114,119],[115,118],[112,118],[114,116],[113,119],[115,117],[8,11],[9,10],[12,15],[13,14],[8,13],[9,12],[10,15],[11,14],[8,14],[10,12],[9,15],[11,13],[48,51],[49,50],[52,55],[53,54],[48,53],[49,52],[50,55],[51,54],[48,54],[50,52],[49,55],[51,53],[80,83],[81,82],[84,87],[85,86],[80,85],[81,84],[82,87],[83,86],[80,86],[82,84],[81,87],[83,85],[104,107],[105,106],[108,111],[109,110],[104,109],[105,108],[106,111],[107,110],[104,110],[106,108],[105,111],[107,109],[96,99],[97,98],[100,103],[101,102],[96,101],[97,100],[98,103],[99,102],[96,102],[98,100],[97,103],[99,101],[88,91],[89,90],[92,95],[93,94],[88,93],[89,92],[90,95],[91,94],[88,94],[90,92],[89,95],[91,93],[56,59],[57,58],[60,63],[61,62],[56,61],[57,60],[58,63],[59,62],[56,62],[58,60],[57,63],[59,61],[2,3,64,65,66,67],[2,3,68,69,70,71],[1,3,64,65,68,69],[1,3,66,67,70,71],[1,2,64,66,68,70],[1,2,65,67,69,71],[0,3,64,65,70,71],[0,3,66,67,68,69],[0,2,64,66,69,71],[0,2,65,67,68,70],[0,1,64,67,68,71],[0,1,65,66,69,70],[4,5,32,33,34,35],[4,5,36,37,38,39],[1,5,32,33,36,37],[1,5,34,35,38,39],[1,4,32,34,36,38],[1,4,33,35,37,39],[0,5,32,33,38,39],[0,5,34,35,36,37],[0,4,32,34,37,39],[0,4,33,35,36,38],[0,1,32,35,36,39],[0,1,33,34,37,38],[6,7,24,25,26,27],[6,7,28,29,30,31],[1,7,24,25,28,29],[1,7,26,27,30,31],[1,6,24,26,28,30],[1,6,25,27,29,31],[0,6,24,26,29,31],[0,6,25,27,28,30],[0,7,24,25,30,31],[0,7,26,27,28,29],[0,1,24,27,28,31],[0,1,25,26,29,30],[4,6,16,17,18,19],[4,6,20,21,22,23],[2,6,16,17,20,21],[2,6,18,19,22,23],[2,4,16,18,20,22],[2,4,17,19,21,23],[0,6,16,17,22,23],[0,6,18,19,20,21],[0,4,16,18,21,23],[0,4,17,19,20,22],[0,2,16,19,20,23],[0,2,17,18,21,22],[5,7,40,41,42,43],[5,7,44,45,46,47],[2,7,40,41,44,45],[2,7,42,43,46,47],[2,5,40,42,44,46],[2,5,41,43,45,47],[0,5,40,42,45,47],[0,5,41,43,44,46],[0,7,40,41,46,47],[0,7,42,43,44,45],[0,2,40,43,44,47],[0,2,41,42,45,46],[4,7,72,73,74,75],[4,7,76,77,78,79],[3,7,72,73,76,77],[3,7,74,75,78,79],[3,4,72,74,76,78],[3,4,73,75,77,79],[0,3,72,75,76,79],[0,3,73,74,77,78],[0,7,72,73,78,79],[0,7,74,75,76,77],[0,4,72,74,77,79],[0,4,73,75,76,78],[5,6,112,113,114,115],[5,6,116,117,118,119],[3,6,112,113,116,117],[3,6,114,115,118,119],[3,5,112,114,116,118],[3,5,113,115,117,119],[0,3,112,115,116,119],[0,3,113,114,117,118],[0,5,112,114,117,119],[0,5,113,115,116,118],[0,6,112,113,118,119],[0,6,114,115,116,117],[4,7,8,9,10,11],[4,7,12,13,14,15],[2,7,8,9,12,13],[2,7,10,11,14,15],[2,4,8,10,12,14],[2,4,9,11,13,15],[1,7,8,9,14,15],[1,7,10,11,12,13],[1,4,8,10,13,15],[1,4,9,11,12,14],[1,2,8,11,12,15],[1,2,9,10,13,14],[5,6,48,49,50,51],[5,6,52,53,54,55],[2,6,48,49,52,53],[2,6,50,51,54,55],[2,5,48,50,52,54],[2,5,49,51,53,55],[1,5,48,50,53,55],[1,5,49,51,52,54],[1,6,48,49,54,55],[1,6,50,51,52,53],[1,2,48,51,52,55],[1,2,49,50,53,54],[4,6,80,81,82,83],[4,6,84,85,86,87],[3,6,80,81,84,85],[3,6,82,83,86,87],[3,4,80,82,84,86],[3,4,81,83,85,87],[1,3,80,83,84,87],[1,3,81,82,85,86],[1,6,80,81,86,87],[1,6,82,83,84,85],[1,4,80,82,85,87],[1,4,81,83,84,86],[5,7,104,105,106,107],[5,7,108,109,110,111],[3,7,104,105,108,109],[3,7,106,107,110,111],[3,5,104,106,108,110],[3,5,105,107,109,111],[1,3,104,107,108,111],[1,3,105,106,109,110],[1,5,104,106,109,111],[1,5,105,107,108,110],[1,7,104,105,110,111],[1,7,106,107,108,109],[4,5,96,97,98,99],[4,5,100,101,102,103],[2,3,96,99,100,103],[2,3,97,98,101,102],[3,5,96,97,100,101],[3,5,98,99,102,103],[3,4,96,98,100,102],[3,4,97,99,101,103],[2,5,96,97,102,103],[2,5,98,99,100,101],[2,4,96,98,101,103],[2,4,97,99,100,102],[6,7,88,89,90,91],[6,7,92,93,94,95],[2,3,88,91,92,95],[2,3,89,90,93,94],[3,7,88,89,92,93],[3,7,90,91,94,95],[3,6,88,90,92,94],[3,6,89,91,93,95],[2,6,88,90,93,95],[2,6,89,91,92,94],[2,7,88,89,94,95],[2,7,90,91,92,93],[6,7,56,57,58,59],[6,7,60,61,62,63],[4,5,56,59,60,63],[4,5,57,58,61,62],[5,7,56,57,60,61],[5,7,58,59,62,63],[4,6,56,58,61,63],[4,6,57,59,60,62],[5,6,56,58,60,62],[5,6,57,59,61,63],[4,7,56,57,62,63],[4,7,58,59,60,61],[0,1,2,3,64,65,66,67,68,69,70,71],[0,1,4,5,32,33,34,35,36,37,38,39],[0,1,6,7,24,25,26,27,28,29,30,31],[0,2,4,6,16,17,18,19,20,21,22,23],[0,2,5,7,40,41,42,43,44,45,46,47],[0,3,4,7,72,73,74,75,76,77,78,79],[0,3,5,6,112,113,114,115,116,117,118,119],[1,2,4,7,8,9,10,11,12,13,14,15],[1,2,5,6,48,49,50,51,52,53,54,55],[1,3,4,6,80,81,82,83,84,85,86,87],[1,3,5,7,104,105,106,107,108,109,110,111],[2,3,4,5,96,97,98,99,100,101,102,103],[2,3,6,7,88,89,90,91,92,93,94,95],[4,5,6,7,56,57,58,59,60,61,62,63],[2,3,6,7,24,25,26,27,64,65,66,67,88,89,90,91,92,93,94,95],[2,3,4,5,32,33,34,35,64,65,66,67,96,97,98,99,100,101,102,103],[2,3,6,7,28,29,30,31,68,69,70,71,88,89,90,91,92,93,94,95],[2,3,4,5,36,37,38,39,68,69,70,71,96,97,98,99,100,101,102,103],[1,3,5,7,40,41,42,43,64,65,68,69,104,105,106,107,108,109,110,111],[1,3,4,6,16,17,18,19,64,65,68,69,80,81,82,83,84,85,86,87],[1,3,5,7,44,45,46,47,66,67,70,71,104,105,106,107,108,109,110,111],[1,3,4,6,20,21,22,23,66,67,70,71,80,81,82,83,84,85,86,87],[1,2,5,6,48,49,50,51,52,53,54,55,64,66,68,70,112,113,114,115],[1,2,4,7,8,9,10,11,12,13,14,15,64,66,68,70,72,73,74,75],[1,2,5,6,48,49,50,51,52,53,54,55,65,67,69,71,116,117,118,119],[1,2,4,7,8,9,10,11,12,13,14,15,65,67,69,71,76,77,78,79],[0,3,5,6,48,49,50,51,64,65,70,71,112,113,114,115,116,117,118,119],[0,3,4,7,8,9,10,11,64,65,70,71,72,73,74,75,76,77,78,79],[0,3,5,6,52,53,54,55,66,67,68,69,112,113,114,115,116,117,118,119],[0,3,4,7,12,13,14,15,66,67,68,69,72,73,74,75,76,77,78,79],[0,2,5,7,40,41,42,43,44,45,46,47,64,66,69,71,104,105,106,107],[0,2,4,6,16,17,18,19,20,21,22,23,64,66,69,71,80,81,82,83],[0,2,5,7,40,41,42,43,44,45,46,47,65,67,68,70,108,109,110,111],[0,2,4,6,16,17,18,19,20,21,22,23,65,67,68,70,84,85,86,87],[0,1,6,7,24,25,26,27,28,29,30,31,64,67,68,71,88,89,90,91],[0,1,4,5,32,33,34,35,36,37,38,39,64,67,68,71,96,97,98,99],[0,1,6,7,24,25,26,27,28,29,30,31,65,66,69,70,92,93,94,95],[0,1,4,5,32,33,34,35,36,37,38,39,65,66,69,70,100,101,102,103],[4,5,6,7,24,25,26,27,32,33,34,35,56,57,58,59,60,61,62,63],[4,5,6,7,28,29,30,31,36,37,38,39,56,57,58,59,60,61,62,63],[1,3,5,7,32,33,36,37,72,73,76,77,104,105,106,107,108,109,110,111],[1,2,5,6,16,17,20,21,32,33,36,37,48,49,50,51,52,53,54,55],[1,3,5,7,34,35,38,39,74,75,78,79,104,105,106,107,108,109,110,111],[1,2,5,6,18,19,22,23,34,35,38,39,48,49,50,51,52,53,54,55],[1,3,4,6,32,34,36,38,80,81,82,83,84,85,86,87,112,113,116,117],[1,2,4,7,8,9,10,11,12,13,14,15,32,34,36,38,40,41,44,45],[1,3,4,6,33,35,37,39,80,81,82,83,84,85,86,87,114,115,118,119],[1,2,4,7,8,9,10,11,12,13,14,15,33,35,37,39,42,43,46,47],[0,3,5,6,32,33,38,39,80,81,84,85,112,113,114,115,116,117,118,119],[0,2,5,7,8,9,12,13,32,33,38,39,40,41,42,43,44,45,46,47],[0,3,5,6,34,35,36,37,82,83,86,87,112,113,114,115,116,117,118,119],[0,2,5,7,10,11,14,15,34,35,36,37,40,41,42,43,44,45,46,47],[0,3,4,7,32,34,37,39,72,73,74,75,76,77,78,79,104,105,108,109],[0,2,4,6,16,17,18,19,20,21,22,23,32,34,37,39,48,49,52,53],[0,3,4,7,33,35,36,38,72,73,74,75,76,77,78,79,106,107,110,111],[0,2,4,6,16,17,18,19,20,21,22,23,33,35,36,38,50,51,54,55],[0,1,6,7,24,25,26,27,28,29,30,31,32,35,36,39,56,57,58,59],[0,1,2,3,32,35,36,39,64,65,66,67,68,69,70,71,96,99,100,103],[0,1,6,7,24,25,26,27,28,29,30,31,33,34,37,38,60,61,62,63],[0,1,2,3,33,34,37,38,64,65,66,67,68,69,70,71,97,98,101,102],[1,3,5,7,24,25,28,29,104,105,106,107,108,109,110,111,112,114,116,118],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29],[1,3,5,7,26,27,30,31,104,105,106,107,108,109,110,111,113,115,117,119],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31],[1,3,4,6,24,26,28,30,72,74,76,78,80,81,82,83,84,85,86,87],[1,2,5,6,24,26,28,30,40,42,44,46,48,49,50,51,52,53,54,55],[1,3,4,6,25,27,29,31,73,75,77,79,80,81,82,83,84,85,86,87],[1,2,5,6,25,27,29,31,41,43,45,47,48,49,50,51,52,53,54,55],[0,3,5,6,24,26,29,31,104,106,108,110,112,113,114,115,116,117,118,119],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31],[0,3,5,6,25,27,28,30,105,107,109,111,112,113,114,115,116,117,118,119],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30],[0,3,4,7,24,25,30,31,72,73,74,75,76,77,78,79,80,82,84,86],[0,2,5,7,24,25,30,31,40,41,42,43,44,45,46,47,48,50,52,54],[0,3,4,7,26,27,28,29,72,73,74,75,76,77,78,79,81,83,85,87],[0,2,5,7,26,27,28,29,40,41,42,43,44,45,46,47,49,51,53,55],[0,1,4,5,24,27,28,31,32,33,34,35,36,37,38,39,56,59,60,63],[0,1,2,3,24,27,28,31,64,65,66,67,68,69,70,71,88,91,92,95],[0,1,4,5,25,26,29,30,32,33,34,35,36,37,38,39,57,58,61,62],[0,1,2,3,25,26,29,30,64,65,66,67,68,69,70,71,89,90,93,94],[4,5,6,7,16,17,18,19,40,41,42,43,56,57,58,59,60,61,62,63],[4,5,6,7,20,21,22,23,44,45,46,47,56,57,58,59,60,61,62,63],[2,3,6,7,16,17,20,21,72,73,76,77,88,89,90,91,92,93,94,95],[2,3,6,7,18,19,22,23,74,75,78,79,88,89,90,91,92,93,94,95],[2,3,4,5,16,18,20,22,96,97,98,99,100,101,102,103,112,114,116,118],[2,3,4,5,17,19,21,23,96,97,98,99,100,101,102,103,113,115,117,119],[0,3,5,6,16,17,22,23,96,97,100,101,112,113,114,115,116,117,118,119],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31],[0,3,5,6,18,19,20,21,98,99,102,103,112,113,114,115,116,117,118,119],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31],[0,3,4,7,16,18,21,23,72,73,74,75,76,77,78,79,88,89,92,93],[0,1,4,5,16,18,21,23,32,33,34,35,36,37,38,39,48,50,53,55],[0,3,4,7,17,19,20,22,72,73,74,75,76,77,78,79,90,91,94,95],[0,1,4,5,17,19,20,22,32,33,34,35,36,37,38,39,49,51,52,54],[0,2,5,7,16,19,20,23,40,41,42,43,44,45,46,47,56,57,60,61],[0,1,2,3,16,19,20,23,64,65,66,67,68,69,70,71,80,83,84,87],[0,2,5,7,17,18,21,22,40,41,42,43,44,45,46,47,58,59,62,63],[0,1,2,3,17,18,21,22,64,65,66,67,68,69,70,71,81,82,85,86],[2,3,6,7,40,41,44,45,88,89,90,91,92,93,94,95,112,113,116,117],[2,3,6,7,42,43,46,47,88,89,90,91,92,93,94,95,114,115,118,119],[2,3,4,5,40,42,44,46,72,74,76,78,96,97,98,99,100,101,102,103],[2,3,4,5,41,43,45,47,73,75,77,79,96,97,98,99,100,101,102,103],[0,3,5,6,40,42,45,47,88,90,92,94,112,113,114,115,116,117,118,119],[0,1,4,5,8,10,13,15,32,33,34,35,36,37,38,39,40,42,45,47],[0,3,5,6,41,43,44,46,89,91,93,95,112,113,114,115,116,117,118,119],[0,1,4,5,9,11,12,14,32,33,34,35,36,37,38,39,41,43,44,46],[0,3,4,7,40,41,46,47,72,73,74,75,76,77,78,79,96,98,100,102],[0,1,6,7,24,25,26,27,28,29,30,31,40,41,46,47,48,49,54,55],[0,3,4,7,42,43,44,45,72,73,74,75,76,77,78,79,97,99,101,103],[0,1,6,7,24,25,26,27,28,29,30,31,42,43,44,45,50,51,52,53],[0,2,4,6,16,17,18,19,20,21,22,23,40,43,44,47,56,58,61,63],[0,1,2,3,40,43,44,47,64,65,66,67,68,69,70,71,104,107,108,111],[0,2,4,6,16,17,18,19,20,21,22,23,41,42,45,46,57,59,60,62],[0,1,2,3,41,42,45,46,64,65,66,67,68,69,70,71,105,106,109,110],[4,5,6,7,56,57,58,59,60,61,62,63,72,73,74,75,112,113,114,115],[4,5,6,7,56,57,58,59,60,61,62,63,76,77,78,79,116,117,118,119],[0,3,5,6,56,58,60,62,72,75,76,79,112,113,114,115,116,117,118,119],[0,1,2,3,8,11,12,15,64,65,66,67,68,69,70,71,72,75,76,79],[0,3,5,6,57,59,61,63,73,74,77,78,112,113,114,115,116,117,118,119],[0,1,2,3,9,10,13,14,64,65,66,67,68,69,70,71,73,74,77,78],[0,2,5,7,40,41,42,43,44,45,46,47,72,73,78,79,96,97,102,103],[0,1,6,7,24,25,26,27,28,29,30,31,72,73,78,79,80,81,86,87],[0,2,5,7,40,41,42,43,44,45,46,47,74,75,76,77,98,99,100,101],[0,1,6,7,24,25,26,27,28,29,30,31,74,75,76,77,82,83,84,85],[0,2,4,6,16,17,18,19,20,21,22,23,72,74,77,79,88,90,93,95],[0,1,4,5,32,33,34,35,36,37,38,39,72,74,77,79,104,106,109,111],[0,2,4,6,16,17,18,19,20,21,22,23,73,75,76,78,89,91,92,94],[0,1,4,5,32,33,34,35,36,37,38,39,73,75,76,78,105,107,108,110],[0,3,4,7,56,57,62,63,72,73,74,75,76,77,78,79,112,115,116,119],[0,1,2,3,48,51,52,55,64,65,66,67,68,69,70,71,112,115,116,119],[0,3,4,7,58,59,60,61,72,73,74,75,76,77,78,79,113,114,117,118],[0,1,2,3,49,50,53,54,64,65,66,67,68,69,70,71,113,114,117,118],[0,2,5,7,40,41,42,43,44,45,46,47,88,89,94,95,112,114,117,119],[0,1,4,5,32,33,34,35,36,37,38,39,80,82,85,87,112,114,117,119],[0,2,5,7,40,41,42,43,44,45,46,47,90,91,92,93,113,115,116,118],[0,1,4,5,32,33,34,35,36,37,38,39,81,83,84,86,113,115,116,118],[0,2,4,6,16,17,18,19,20,21,22,23,96,98,101,103,112,113,118,119],[0,1,6,7,24,25,26,27,28,29,30,31,104,105,110,111,112,113,118,119],[0,2,4,6,16,17,18,19,20,21,22,23,97,99,100,102,114,115,116,117],[0,1,6,7,24,25,26,27,28,29,30,31,106,107,108,109,114,115,116,117],[4,5,6,7,8,9,10,11,48,49,50,51,56,57,58,59,60,61,62,63],[4,5,6,7,12,13,14,15,52,53,54,55,56,57,58,59,60,61,62,63],[2,3,6,7,8,9,12,13,80,81,84,85,88,89,90,91,92,93,94,95],[2,3,6,7,10,11,14,15,82,83,86,87,88,89,90,91,92,93,94,95],[2,3,4,5,8,10,12,14,96,97,98,99,100,101,102,103,104,106,108,110],[2,3,4,5,9,11,13,15,96,97,98,99,100,101,102,103,105,107,109,111],[1,3,5,7,8,9,14,15,96,97,100,101,104,105,106,107,108,109,110,111],[1,3,5,7,10,11,12,13,98,99,102,103,104,105,106,107,108,109,110,111],[1,3,4,6,8,10,13,15,80,81,82,83,84,85,86,87,88,90,92,94],[1,3,4,6,9,11,12,14,80,81,82,83,84,85,86,87,89,91,93,95],[1,2,5,6,8,11,12,15,48,49,50,51,52,53,54,55,56,58,60,62],[1,2,5,6,9,10,13,14,48,49,50,51,52,53,54,55,57,59,61,63],[2,3,6,7,48,49,52,53,88,89,90,91,92,93,94,95,104,105,108,109],[2,3,6,7,50,51,54,55,88,89,90,91,92,93,94,95,106,107,110,111],[2,3,4,5,48,50,52,54,80,82,84,86,96,97,98,99,100,101,102,103],[2,3,4,5,49,51,53,55,81,83,85,87,96,97,98,99,100,101,102,103],[1,3,5,7,48,50,53,55,88,89,92,93,104,105,106,107,108,109,110,111],[1,3,5,7,49,51,52,54,90,91,94,95,104,105,106,107,108,109,110,111],[1,3,4,6,48,49,54,55,80,81,82,83,84,85,86,87,96,98,100,102],[1,3,4,6,50,51,52,53,80,81,82,83,84,85,86,87,97,99,101,103],[1,2,4,7,8,9,10,11,12,13,14,15,48,51,52,55,56,57,62,63],[1,2,4,7,8,9,10,11,12,13,14,15,49,50,53,54,58,59,60,61],[4,5,6,7,56,57,58,59,60,61,62,63,80,81,82,83,104,105,106,107],[4,5,6,7,56,57,58,59,60,61,62,63,84,85,86,87,108,109,110,111],[1,3,5,7,56,57,60,61,80,83,84,87,104,105,106,107,108,109,110,111],[1,3,5,7,58,59,62,63,81,82,85,86,104,105,106,107,108,109,110,111],[1,2,5,6,48,49,50,51,52,53,54,55,80,81,86,87,96,97,102,103],[1,2,5,6,48,49,50,51,52,53,54,55,82,83,84,85,98,99,100,101],[1,2,4,7,8,9,10,11,12,13,14,15,80,82,85,87,88,89,94,95],[1,2,4,7,8,9,10,11,12,13,14,15,81,83,84,86,90,91,92,93],[1,3,4,6,56,58,61,63,80,81,82,83,84,85,86,87,104,107,108,111],[1,3,4,6,57,59,60,62,80,81,82,83,84,85,86,87,105,106,109,110],[1,2,5,6,48,49,50,51,52,53,54,55,88,90,93,95,104,106,109,111],[1,2,5,6,48,49,50,51,52,53,54,55,89,91,92,94,105,107,108,110],[1,2,4,7,8,9,10,11,12,13,14,15,96,98,101,103,104,105,110,111],[1,2,4,7,8,9,10,11,12,13,14,15,97,99,100,102,106,107,108,109],[4,5,6,7,56,57,58,59,60,61,62,63,88,89,90,91,96,97,98,99],[4,5,6,7,56,57,58,59,60,61,62,63,92,93,94,95,100,101,102,103],[2,3,6,7,56,57,58,59,88,89,90,91,92,93,94,95,96,99,100,103],[2,3,6,7,60,61,62,63,88,89,90,91,92,93,94,95,97,98,101,102],[2,3,4,5,56,59,60,63,88,91,92,95,96,97,98,99,100,101,102,103],[2,3,4,5,57,58,61,62,89,90,93,94,96,97,98,99,100,101,102,103],[4,5,6,7,28,29,30,31,36,37,38,39,56,57,58,59,60,61,62,63,69,70,92,93,94,95,100,101,102,103],[4,5,6,7,12,13,14,15,52,53,54,55,56,57,58,59,60,61,62,63,67,69,76,77,78,79,116,117,118,119],[4,5,6,7,20,21,22,23,44,45,46,47,56,57,58,59,60,61,62,63,67,70,84,85,86,87,108,109,110,111],[4,5,6,7,16,17,18,19,40,41,42,43,56,57,58,59,60,61,62,63,64,69,80,81,82,83,104,105,106,107],[4,5,6,7,8,9,10,11,48,49,50,51,56,57,58,59,60,61,62,63,64,70,72,73,74,75,112,113,114,115],[4,5,6,7,24,25,26,27,32,33,34,35,56,57,58,59,60,61,62,63,64,67,88,89,90,91,96,97,98,99],[4,5,6,7,28,29,30,31,36,37,38,39,56,57,58,59,60,61,62,63,68,71,88,89,90,91,96,97,98,99],[4,5,6,7,12,13,14,15,52,53,54,55,56,57,58,59,60,61,62,63,66,68,72,73,74,75,112,113,114,115],[4,5,6,7,20,21,22,23,44,45,46,47,56,57,58,59,60,61,62,63,66,71,80,81,82,83,104,105,106,107],[4,5,6,7,16,17,18,19,40,41,42,43,56,57,58,59,60,61,62,63,65,68,84,85,86,87,108,109,110,111],[4,5,6,7,8,9,10,11,48,49,50,51,56,57,58,59,60,61,62,63,65,71,76,77,78,79,116,117,118,119],[4,5,6,7,24,25,26,27,32,33,34,35,56,57,58,59,60,61,62,63,65,66,92,93,94,95,100,101,102,103],[2,3,6,7,28,29,30,31,37,38,60,61,62,63,68,69,70,71,88,89,90,91,92,93,94,95,97,98,101,102],[2,3,6,7,10,11,14,15,35,37,42,43,46,47,82,83,86,87,88,89,90,91,92,93,94,95,114,115,118,119],[2,3,6,7,18,19,22,23,35,38,50,51,54,55,74,75,78,79,88,89,90,91,92,93,94,95,106,107,110,111],[2,3,6,7,16,17,20,21,32,37,48,49,52,53,72,73,76,77,88,89,90,91,92,93,94,95,104,105,108,109],[2,3,6,7,8,9,12,13,32,38,40,41,44,45,80,81,84,85,88,89,90,91,92,93,94,95,112,113,116,117],[2,3,6,7,24,25,26,27,32,35,56,57,58,59,64,65,66,67,88,89,90,91,92,93,94,95,96,99,100,103],[2,3,6,7,28,29,30,31,36,39,56,57,58,59,68,69,70,71,88,89,90,91,92,93,94,95,96,99,100,103],[2,3,6,7,10,11,14,15,34,36,40,41,44,45,82,83,86,87,88,89,90,91,92,93,94,95,112,113,116,117],[2,3,6,7,18,19,22,23,34,39,48,49,52,53,74,75,78,79,88,89,90,91,92,93,94,95,104,105,108,109],[2,3,6,7,16,17,20,21,33,36,50,51,54,55,72,73,76,77,88,89,90,91,92,93,94,95,106,107,110,111],[2,3,6,7,8,9,12,13,33,39,42,43,46,47,80,81,84,85,88,89,90,91,92,93,94,95,114,115,118,119],[2,3,6,7,24,25,26,27,33,34,60,61,62,63,64,65,66,67,88,89,90,91,92,93,94,95,97,98,101,102],[2,3,4,5,29,30,36,37,38,39,57,58,61,62,68,69,70,71,89,90,93,94,96,97,98,99,100,101,102,103],[2,3,4,5,27,29,41,43,45,47,49,51,53,55,73,75,77,79,81,83,85,87,96,97,98,99,100,101,102,103],[2,3,4,5,9,11,13,15,17,19,21,23,27,30,96,97,98,99,100,101,102,103,105,107,109,111,113,115,117,119],[2,3,4,5,8,10,12,14,16,18,20,22,24,29,96,97,98,99,100,101,102,103,104,106,108,110,112,114,116,118],[2,3,4,5,24,30,40,42,44,46,48,50,52,54,72,74,76,78,80,82,84,86,96,97,98,99,100,101,102,103],[2,3,4,5,24,27,32,33,34,35,56,59,60,63,64,65,66,67,88,91,92,95,96,97,98,99,100,101,102,103],[2,3,4,5,28,31,36,37,38,39,56,59,60,63,68,69,70,71,88,91,92,95,96,97,98,99,100,101,102,103],[2,3,4,5,26,28,40,42,44,46,49,51,53,55,72,74,76,78,81,83,85,87,96,97,98,99,100,101,102,103],[2,3,4,5,8,10,12,14,17,19,21,23,26,31,96,97,98,99,100,101,102,103,104,106,108,110,113,115,117,119],[2,3,4,5,9,11,13,15,16,18,20,22,25,28,96,97,98,99,100,101,102,103,105,107,109,111,112,114,116,118],[2,3,4,5,25,31,41,43,45,47,48,50,52,54,73,75,77,79,80,82,84,86,96,97,98,99,100,101,102,103],[2,3,4,5,25,26,32,33,34,35,57,58,61,62,64,65,66,67,89,90,93,94,96,97,98,99,100,101,102,103],[1,3,5,7,21,22,44,45,46,47,58,59,62,63,66,67,70,71,81,82,85,86,104,105,106,107,108,109,110,111],[1,3,5,7,10,11,12,13,19,21,26,27,30,31,98,99,102,103,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,19,22,34,35,38,39,49,51,52,54,74,75,78,79,90,91,94,95,104,105,106,107,108,109,110,111],[1,3,5,7,16,21,32,33,36,37,48,50,53,55,72,73,76,77,88,89,92,93,104,105,106,107,108,109,110,111],[1,3,5,7,8,9,14,15,16,22,24,25,28,29,96,97,100,101,104,105,106,107,108,109,110,111,112,114,116,118],[1,3,5,7,16,19,40,41,42,43,56,57,60,61,64,65,68,69,80,83,84,87,104,105,106,107,108,109,110,111],[1,3,5,7,20,23,44,45,46,47,56,57,60,61,66,67,70,71,80,83,84,87,104,105,106,107,108,109,110,111],[1,3,5,7,10,11,12,13,18,20,24,25,28,29,98,99,102,103,104,105,106,107,108,109,110,111,112,114,116,118],[1,3,5,7,18,23,34,35,38,39,48,50,53,55,74,75,78,79,88,89,92,93,104,105,106,107,108,109,110,111],[1,3,5,7,17,20,32,33,36,37,49,51,52,54,72,73,76,77,90,91,94,95,104,105,106,107,108,109,110,111],[1,3,5,7,8,9,14,15,17,23,26,27,30,31,96,97,100,101,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,17,18,40,41,42,43,58,59,62,63,64,65,68,69,81,82,85,86,104,105,106,107,108,109,110,111],[1,3,4,6,20,21,22,23,45,46,57,59,60,62,66,67,70,71,80,81,82,83,84,85,86,87,105,106,109,110],[1,3,4,6,25,27,29,31,43,45,50,51,52,53,73,75,77,79,80,81,82,83,84,85,86,87,97,99,101,103],[1,3,4,6,9,11,12,14,33,35,37,39,43,46,80,81,82,83,84,85,86,87,89,91,93,95,114,115,118,119],[1,3,4,6,8,10,13,15,32,34,36,38,40,45,80,81,82,83,84,85,86,87,88,90,92,94,112,113,116,117],[1,3,4,6,24,26,28,30,40,46,48,49,54,55,72,74,76,78,80,81,82,83,84,85,86,87,96,98,100,102],[1,3,4,6,16,17,18,19,40,43,56,58,61,63,64,65,68,69,80,81,82,83,84,85,86,87,104,107,108,111],[1,3,4,6,20,21,22,23,44,47,56,58,61,63,66,67,70,71,80,81,82,83,84,85,86,87,104,107,108,111],[1,3,4,6,24,26,28,30,42,44,50,51,52,53,72,74,76,78,80,81,82,83,84,85,86,87,97,99,101,103],[1,3,4,6,8,10,13,15,33,35,37,39,42,47,80,81,82,83,84,85,86,87,88,90,92,94,114,115,118,119],[1,3,4,6,9,11,12,14,32,34,36,38,41,44,80,81,82,83,84,85,86,87,89,91,93,95,112,113,116,117],[1,3,4,6,25,27,29,31,41,47,48,49,54,55,73,75,77,79,80,81,82,83,84,85,86,87,96,98,100,102],[1,3,4,6,16,17,18,19,41,42,57,59,60,62,64,65,68,69,80,81,82,83,84,85,86,87,105,106,109,110],[1,2,5,6,9,10,13,14,48,49,50,51,52,53,54,55,57,59,61,63,65,67,69,71,77,78,116,117,118,119],[1,2,5,6,25,27,29,31,41,43,45,47,48,49,50,51,52,53,54,55,75,77,82,83,84,85,98,99,100,101],[1,2,5,6,18,19,22,23,34,35,38,39,48,49,50,51,52,53,54,55,75,78,89,91,92,94,105,107,108,110],[1,2,5,6,16,17,20,21,32,33,36,37,48,49,50,51,52,53,54,55,72,77,88,90,93,95,104,106,109,111],[1,2,5,6,24,26,28,30,40,42,44,46,48,49,50,51,52,53,54,55,72,78,80,81,86,87,96,97,102,103],[1,2,5,6,8,11,12,15,48,49,50,51,52,53,54,55,56,58,60,62,64,66,68,70,72,75,112,113,114,115],[1,2,5,6,8,11,12,15,48,49,50,51,52,53,54,55,56,58,60,62,65,67,69,71,76,79,116,117,118,119],[1,2,5,6,24,26,28,30,40,42,44,46,48,49,50,51,52,53,54,55,74,76,82,83,84,85,98,99,100,101],[1,2,5,6,18,19,22,23,34,35,38,39,48,49,50,51,52,53,54,55,74,79,88,90,93,95,104,106,109,111],[1,2,5,6,16,17,20,21,32,33,36,37,48,49,50,51,52,53,54,55,73,76,89,91,92,94,105,107,108,110],[1,2,5,6,25,27,29,31,41,43,45,47,48,49,50,51,52,53,54,55,73,79,80,81,86,87,96,97,102,103],[1,2,5,6,9,10,13,14,48,49,50,51,52,53,54,55,57,59,61,63,64,66,68,70,73,74,112,113,114,115],[1,2,4,7,8,9,10,11,12,13,14,15,49,50,53,54,58,59,60,61,65,67,69,71,76,77,78,79,117,118],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,97,99,100,102,106,107,108,109,115,117],[1,2,4,7,8,9,10,11,12,13,14,15,33,35,37,39,42,43,46,47,81,83,84,86,90,91,92,93,115,118],[1,2,4,7,8,9,10,11,12,13,14,15,32,34,36,38,40,41,44,45,80,82,85,87,88,89,94,95,112,117],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,96,98,101,103,104,105,110,111,112,118],[1,2,4,7,8,9,10,11,12,13,14,15,48,51,52,55,56,57,62,63,64,66,68,70,72,73,74,75,112,115],[1,2,4,7,8,9,10,11,12,13,14,15,48,51,52,55,56,57,62,63,65,67,69,71,76,77,78,79,116,119],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,97,99,100,102,106,107,108,109,114,116],[1,2,4,7,8,9,10,11,12,13,14,15,33,35,37,39,42,43,46,47,80,82,85,87,88,89,94,95,114,119],[1,2,4,7,8,9,10,11,12,13,14,15,32,34,36,38,40,41,44,45,81,83,84,86,90,91,92,93,113,116],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,96,98,101,103,104,105,110,111,113,119],[1,2,4,7,8,9,10,11,12,13,14,15,49,50,53,54,58,59,60,61,64,66,68,70,72,73,74,75,113,114],[0,3,5,6,13,14,52,53,54,55,57,59,61,63,66,67,68,69,73,74,77,78,112,113,114,115,116,117,118,119],[0,3,5,6,11,13,18,19,20,21,25,27,28,30,98,99,102,103,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,11,14,34,35,36,37,41,43,44,46,82,83,86,87,89,91,93,95,112,113,114,115,116,117,118,119],[0,3,5,6,8,13,32,33,38,39,40,42,45,47,80,81,84,85,88,90,92,94,112,113,114,115,116,117,118,119],[0,3,5,6,8,14,16,17,22,23,24,26,29,31,96,97,100,101,104,106,108,110,112,113,114,115,116,117,118,119],[0,3,5,6,8,11,48,49,50,51,56,58,60,62,64,65,70,71,72,75,76,79,112,113,114,115,116,117,118,119],[0,3,5,6,12,15,52,53,54,55,56,58,60,62,66,67,68,69,72,75,76,79,112,113,114,115,116,117,118,119],[0,3,5,6,10,12,18,19,20,21,24,26,29,31,98,99,102,103,104,106,108,110,112,113,114,115,116,117,118,119],[0,3,5,6,10,15,34,35,36,37,40,42,45,47,82,83,86,87,88,90,92,94,112,113,114,115,116,117,118,119],[0,3,5,6,9,12,32,33,38,39,41,43,44,46,80,81,84,85,89,91,93,95,112,113,114,115,116,117,118,119],[0,3,5,6,9,15,16,17,22,23,25,27,28,30,96,97,100,101,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,9,10,48,49,50,51,57,59,61,63,64,65,70,71,73,74,77,78,112,113,114,115,116,117,118,119],[0,3,4,7,12,13,14,15,53,54,58,59,60,61,66,67,68,69,72,73,74,75,76,77,78,79,113,114,117,118],[0,3,4,7,26,27,28,29,42,43,44,45,51,53,72,73,74,75,76,77,78,79,81,83,85,87,97,99,101,103],[0,3,4,7,17,19,20,22,33,35,36,38,51,54,72,73,74,75,76,77,78,79,90,91,94,95,106,107,110,111],[0,3,4,7,16,18,21,23,32,34,37,39,48,53,72,73,74,75,76,77,78,79,88,89,92,93,104,105,108,109],[0,3,4,7,24,25,30,31,40,41,46,47,48,54,72,73,74,75,76,77,78,79,80,82,84,86,96,98,100,102],[0,3,4,7,8,9,10,11,48,51,56,57,62,63,64,65,70,71,72,73,74,75,76,77,78,79,112,115,116,119],[0,3,4,7,12,13,14,15,52,55,56,57,62,63,66,67,68,69,72,73,74,75,76,77,78,79,112,115,116,119],[0,3,4,7,24,25,30,31,42,43,44,45,50,52,72,73,74,75,76,77,78,79,80,82,84,86,97,99,101,103],[0,3,4,7,16,18,21,23,33,35,36,38,50,55,72,73,74,75,76,77,78,79,88,89,92,93,106,107,110,111],[0,3,4,7,17,19,20,22,32,34,37,39,49,52,72,73,74,75,76,77,78,79,90,91,94,95,104,105,108,109],[0,3,4,7,26,27,28,29,40,41,46,47,49,55,72,73,74,75,76,77,78,79,81,83,85,87,96,98,100,102],[0,3,4,7,8,9,10,11,49,50,58,59,60,61,64,65,70,71,72,73,74,75,76,77,78,79,113,114,117,118],[0,2,5,7,17,18,21,22,40,41,42,43,44,45,46,47,58,59,62,63,65,67,68,70,85,86,108,109,110,111],[0,2,5,7,26,27,28,29,40,41,42,43,44,45,46,47,49,51,53,55,74,75,76,77,83,85,98,99,100,101],[0,2,5,7,10,11,14,15,34,35,36,37,40,41,42,43,44,45,46,47,83,86,90,91,92,93,113,115,116,118],[0,2,5,7,8,9,12,13,32,33,38,39,40,41,42,43,44,45,46,47,80,85,88,89,94,95,112,114,117,119],[0,2,5,7,24,25,30,31,40,41,42,43,44,45,46,47,48,50,52,54,72,73,78,79,80,86,96,97,102,103],[0,2,5,7,16,19,20,23,40,41,42,43,44,45,46,47,56,57,60,61,64,66,69,71,80,83,104,105,106,107],[0,2,5,7,16,19,20,23,40,41,42,43,44,45,46,47,56,57,60,61,65,67,68,70,84,87,108,109,110,111],[0,2,5,7,24,25,30,31,40,41,42,43,44,45,46,47,48,50,52,54,74,75,76,77,82,84,98,99,100,101],[0,2,5,7,10,11,14,15,34,35,36,37,40,41,42,43,44,45,46,47,82,87,88,89,94,95,112,114,117,119],[0,2,5,7,8,9,12,13,32,33,38,39,40,41,42,43,44,45,46,47,81,84,90,91,92,93,113,115,116,118],[0,2,5,7,26,27,28,29,40,41,42,43,44,45,46,47,49,51,53,55,72,73,78,79,81,87,96,97,102,103],[0,2,5,7,17,18,21,22,40,41,42,43,44,45,46,47,58,59,62,63,64,66,69,71,81,82,104,105,106,107],[0,2,4,6,16,17,18,19,20,21,22,23,41,42,45,46,57,59,60,62,65,67,68,70,84,85,86,87,109,110],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,97,99,100,102,107,109,114,115,116,117],[0,2,4,6,16,17,18,19,20,21,22,23,33,35,36,38,50,51,54,55,73,75,76,78,89,91,92,94,107,110],[0,2,4,6,16,17,18,19,20,21,22,23,32,34,37,39,48,49,52,53,72,74,77,79,88,90,93,95,104,109],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,96,98,101,103,104,110,112,113,118,119],[0,2,4,6,16,17,18,19,20,21,22,23,40,43,44,47,56,58,61,63,64,66,69,71,80,81,82,83,104,107],[0,2,4,6,16,17,18,19,20,21,22,23,40,43,44,47,56,58,61,63,65,67,68,70,84,85,86,87,108,111],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,97,99,100,102,106,108,114,115,116,117],[0,2,4,6,16,17,18,19,20,21,22,23,33,35,36,38,50,51,54,55,72,74,77,79,88,90,93,95,106,111],[0,2,4,6,16,17,18,19,20,21,22,23,32,34,37,39,48,49,52,53,73,75,76,78,89,91,92,94,105,108],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,96,98,101,103,105,111,112,113,118,119],[0,2,4,6,16,17,18,19,20,21,22,23,41,42,45,46,57,59,60,62,64,66,69,71,80,81,82,83,105,106],[0,1,6,7,24,25,26,27,28,29,30,31,33,34,37,38,60,61,62,63,65,66,69,70,92,93,94,95,101,102],[0,1,6,7,24,25,26,27,28,29,30,31,42,43,44,45,50,51,52,53,74,75,76,77,82,83,84,85,99,101],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,99,102,106,107,108,109,114,115,116,117],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,96,101,104,105,110,111,112,113,118,119],[0,1,6,7,24,25,26,27,28,29,30,31,40,41,46,47,48,49,54,55,72,73,78,79,80,81,86,87,96,102],[0,1,6,7,24,25,26,27,28,29,30,31,32,35,36,39,56,57,58,59,64,67,68,71,88,89,90,91,96,99],[0,1,6,7,24,25,26,27,28,29,30,31,32,35,36,39,56,57,58,59,65,66,69,70,92,93,94,95,100,103],[0,1,6,7,24,25,26,27,28,29,30,31,40,41,46,47,48,49,54,55,74,75,76,77,82,83,84,85,98,100],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,98,103,104,105,110,111,112,113,118,119],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,97,100,106,107,108,109,114,115,116,117],[0,1,6,7,24,25,26,27,28,29,30,31,42,43,44,45,50,51,52,53,72,73,78,79,80,81,86,87,97,103],[0,1,6,7,24,25,26,27,28,29,30,31,33,34,37,38,60,61,62,63,64,67,68,71,88,89,90,91,97,98],[0,1,4,5,25,26,29,30,32,33,34,35,36,37,38,39,57,58,61,62,65,66,69,70,93,94,100,101,102,103],[0,1,4,5,9,11,12,14,32,33,34,35,36,37,38,39,41,43,44,46,81,83,84,86,91,93,113,115,116,118],[0,1,4,5,17,19,20,22,32,33,34,35,36,37,38,39,49,51,52,54,73,75,76,78,91,94,105,107,108,110],[0,1,4,5,16,18,21,23,32,33,34,35,36,37,38,39,48,50,53,55,72,74,77,79,88,93,104,106,109,111],[0,1,4,5,8,10,13,15,32,33,34,35,36,37,38,39,40,42,45,47,80,82,85,87,88,94,112,114,117,119],[0,1,4,5,24,27,28,31,32,33,34,35,36,37,38,39,56,59,60,63,64,67,68,71,88,91,96,97,98,99],[0,1,4,5,24,27,28,31,32,33,34,35,36,37,38,39,56,59,60,63,65,66,69,70,92,95,100,101,102,103],[0,1,4,5,8,10,13,15,32,33,34,35,36,37,38,39,40,42,45,47,81,83,84,86,90,92,113,115,116,118],[0,1,4,5,17,19,20,22,32,33,34,35,36,37,38,39,49,51,52,54,72,74,77,79,90,95,104,106,109,111],[0,1,4,5,16,18,21,23,32,33,34,35,36,37,38,39,48,50,53,55,73,75,76,78,89,92,105,107,108,110],[0,1,4,5,9,11,12,14,32,33,34,35,36,37,38,39,41,43,44,46,80,82,85,87,89,95,112,114,117,119],[0,1,4,5,25,26,29,30,32,33,34,35,36,37,38,39,57,58,61,62,64,67,68,71,89,90,96,97,98,99],[0,1,2,3,25,26,29,30,33,34,37,38,61,62,64,65,66,67,68,69,70,71,89,90,93,94,97,98,101,102],[0,1,2,3,9,10,13,14,49,50,53,54,59,61,64,65,66,67,68,69,70,71,73,74,77,78,113,114,117,118],[0,1,2,3,17,18,21,22,41,42,45,46,59,62,64,65,66,67,68,69,70,71,81,82,85,86,105,106,109,110],[0,1,2,3,16,19,20,23,40,43,44,47,56,61,64,65,66,67,68,69,70,71,80,83,84,87,104,107,108,111],[0,1,2,3,8,11,12,15,48,51,52,55,56,62,64,65,66,67,68,69,70,71,72,75,76,79,112,115,116,119],[0,1,2,3,24,27,28,31,32,35,36,39,56,59,64,65,66,67,68,69,70,71,88,91,92,95,96,99,100,103],[0,1,2,3,24,27,28,31,33,34,37,38,60,63,64,65,66,67,68,69,70,71,88,91,92,95,97,98,101,102],[0,1,2,3,8,11,12,15,49,50,53,54,58,60,64,65,66,67,68,69,70,71,72,75,76,79,113,114,117,118],[0,1,2,3,17,18,21,22,40,43,44,47,58,63,64,65,66,67,68,69,70,71,81,82,85,86,104,107,108,111],[0,1,2,3,16,19,20,23,41,42,45,46,57,60,64,65,66,67,68,69,70,71,80,83,84,87,105,106,109,110],[0,1,2,3,9,10,13,14,48,51,52,55,57,63,64,65,66,67,68,69,70,71,73,74,77,78,112,115,116,119],[0,1,2,3,25,26,29,30,32,35,36,39,57,58,64,65,66,67,68,69,70,71,89,90,93,94,96,99,100,103],[1,2,3,4,6,7,8,9,10,11,12,13,14,15,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],[1,2,3,5,6,7,48,49,50,51,52,53,54,55,88,89,90,91,92,93,94,95,104,105,106,107,108,109,110,111],[2,3,4,5,6,7,56,57,58,59,60,61,62,63,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],[0,2,3,5,6,7,40,41,42,43,44,45,46,47,88,89,90,91,92,93,94,95,112,113,114,115,116,117,118,119],[0,2,3,4,6,7,16,17,18,19,20,21,22,23,72,73,74,75,76,77,78,79,88,89,90,91,92,93,94,95],[0,1,4,5,6,7,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,56,57,58,59,60,61,62,63],[0,3,4,5,6,7,56,57,58,59,60,61,62,63,72,73,74,75,76,77,78,79,112,113,114,115,116,117,118,119],[1,3,4,5,6,7,56,57,58,59,60,61,62,63,80,81,82,83,84,85,86,87,104,105,106,107,108,109,110,111],[0,2,4,5,6,7,16,17,18,19,20,21,22,23,40,41,42,43,44,45,46,47,56,57,58,59,60,61,62,63],[1,2,4,5,6,7,8,9,10,11,12,13,14,15,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],[0,1,2,3,6,7,24,25,26,27,28,29,30,31,64,65,66,67,68,69,70,71,88,89,90,91,92,93,94,95],[0,2,3,4,5,7,40,41,42,43,44,45,46,47,72,73,74,75,76,77,78,79,96,97,98,99,100,101,102,103],[0,1,2,3,4,5,32,33,34,35,36,37,38,39,64,65,66,67,68,69,70,71,96,97,98,99,100,101,102,103],[1,2,3,4,5,7,8,9,10,11,12,13,14,15,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],[0,2,3,4,5,6,16,17,18,19,20,21,22,23,96,97,98,99,100,101,102,103,112,113,114,115,116,117,118,119],[1,2,3,4,5,6,48,49,50,51,52,53,54,55,80,81,82,83,84,85,86,87,96,97,98,99,100,101,102,103],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],[0,2,3,4,5,6,7,16,17,18,19,20,21,22,23,40,41,42,43,44,45,46,47,56,57,58,59,60,61,62,63,72,73,74,75,76,77,78,79,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,112,113,114,115,116,117,118,119],[0,1,3,4,5,6,7,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,56,57,58,59,60,61,62,63,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],[0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],[0,1,2,3,5,6,7,24,25,26,27,28,29,30,31,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,64,65,66,67,68,69,70,71,88,89,90,91,92,93,94,95,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],[0,1,2,3,4,5,6,16,17,18,19,20,21,22,23,32,33,34,35,36,37,38,39,48,49,50,51,52,53,54,55,64,65,66,67,68,69,70,71,80,81,82,83,84,85,86,87,96,97,98,99,100,101,102,103,112,113,114,115,116,117,118,119],[0,3,5,6,11,13,14,18,19,20,21,25,27,28,30,34,35,36,37,41,43,44,46,52,53,54,55,57,59,61,63,66,67,68,69,73,74,77,78,82,83,86,87,89,91,93,95,98,99,102,103,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,10,12,15,18,19,20,21,24,26,29,31,34,35,36,37,40,42,45,47,52,53,54,55,56,58,60,62,66,67,68,69,72,75,76,79,82,83,86,87,88,90,92,94,98,99,102,103,104,106,108,110,112,113,114,115,116,117,118,119],[0,3,5,6,9,12,15,16,17,22,23,25,27,28,30,32,33,38,39,41,43,44,46,52,53,54,55,56,58,60,62,66,67,68,69,72,75,76,79,80,81,84,85,89,91,93,95,96,97,100,101,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,8,13,14,16,17,22,23,24,26,29,31,32,33,38,39,40,42,45,47,52,53,54,55,57,59,61,63,66,67,68,69,73,74,77,78,80,81,84,85,88,90,92,94,96,97,100,101,104,106,108,110,112,113,114,115,116,117,118,119],[0,3,5,6,9,10,15,16,17,22,23,25,27,28,30,34,35,36,37,40,42,45,47,48,49,50,51,57,59,61,63,64,65,70,71,73,74,77,78,82,83,86,87,88,90,92,94,96,97,100,101,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,8,11,14,16,17,22,23,24,26,29,31,34,35,36,37,41,43,44,46,48,49,50,51,56,58,60,62,64,65,70,71,72,75,76,79,82,83,86,87,89,91,93,95,96,97,100,101,104,106,108,110,112,113,114,115,116,117,118,119],[0,3,5,6,8,11,13,18,19,20,21,25,27,28,30,32,33,38,39,40,42,45,47,48,49,50,51,56,58,60,62,64,65,70,71,72,75,76,79,80,81,84,85,88,90,92,94,98,99,102,103,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,9,10,12,18,19,20,21,24,26,29,31,32,33,38,39,41,43,44,46,48,49,50,51,57,59,61,63,64,65,70,71,73,74,77,78,80,81,84,85,89,91,93,95,98,99,102,103,104,106,108,110,112,113,114,115,116,117,118,119],[1,3,5,7,10,11,12,13,19,21,22,26,27,30,31,34,35,38,39,44,45,46,47,49,51,52,54,58,59,62,63,66,67,70,71,74,75,78,79,81,82,85,86,90,91,94,95,98,99,102,103,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,10,11,12,13,18,20,23,24,25,28,29,34,35,38,39,44,45,46,47,48,50,53,55,56,57,60,61,66,67,70,71,74,75,78,79,80,83,84,87,88,89,92,93,98,99,102,103,104,105,106,107,108,109,110,111,112,114,116,118],[1,3,5,7,8,9,14,15,17,20,23,26,27,30,31,32,33,36,37,44,45,46,47,49,51,52,54,56,57,60,61,66,67,70,71,72,73,76,77,80,83,84,87,90,91,94,95,96,97,100,101,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,8,9,14,15,16,21,22,24,25,28,29,32,33,36,37,44,45,46,47,48,50,53,55,58,59,62,63,66,67,70,71,72,73,76,77,81,82,85,86,88,89,92,93,96,97,100,101,104,105,106,107,108,109,110,111,112,114,116,118],[1,3,5,7,8,9,14,15,17,18,23,26,27,30,31,34,35,38,39,40,41,42,43,48,50,53,55,58,59,62,63,64,65,68,69,74,75,78,79,81,82,85,86,88,89,92,93,96,97,100,101,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,8,9,14,15,16,19,22,24,25,28,29,34,35,38,39,40,41,42,43,49,51,52,54,56,57,60,61,64,65,68,69,74,75,78,79,80,83,84,87,90,91,94,95,96,97,100,101,104,105,106,107,108,109,110,111,112,114,116,118],[1,3,5,7,10,11,12,13,16,19,21,26,27,30,31,32,33,36,37,40,41,42,43,48,50,53,55,56,57,60,61,64,65,68,69,72,73,76,77,80,83,84,87,88,89,92,93,98,99,102,103,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,10,11,12,13,17,18,20,24,25,28,29,32,33,36,37,40,41,42,43,49,51,52,54,58,59,62,63,64,65,68,69,72,73,76,77,81,82,85,86,90,91,94,95,98,99,102,103,104,105,106,107,108,109,110,111,112,114,116,118],[2,3,4,5,9,11,13,15,17,19,21,23,27,29,30,36,37,38,39,41,43,45,47,49,51,53,55,57,58,61,62,68,69,70,71,73,75,77,79,81,83,85,87,89,90,93,94,96,97,98,99,100,101,102,103,105,107,109,111,113,115,117,119],[2,3,4,5,8,10,12,14,17,19,21,23,26,28,31,36,37,38,39,40,42,44,46,49,51,53,55,56,59,60,63,68,69,70,71,72,74,76,78,81,83,85,87,88,91,92,95,96,97,98,99,100,101,102,103,104,106,108,110,113,115,117,119],[2,3,4,5,9,11,13,15,16,18,20,22,25,28,31,36,37,38,39,41,43,45,47,48,50,52,54,56,59,60,63,68,69,70,71,73,75,77,79,80,82,84,86,88,91,92,95,96,97,98,99,100,101,102,103,105,107,109,111,112,114,116,118],[2,3,4,5,8,10,12,14,16,18,20,22,24,29,30,36,37,38,39,40,42,44,46,48,50,52,54,57,58,61,62,68,69,70,71,72,74,76,78,80,82,84,86,89,90,93,94,96,97,98,99,100,101,102,103,104,106,108,110,112,114,116,118],[2,3,4,5,8,10,12,14,17,19,21,23,25,26,31,32,33,34,35,41,43,45,47,48,50,52,54,57,58,61,62,64,65,66,67,73,75,77,79,80,82,84,86,89,90,93,94,96,97,98,99,100,101,102,103,104,106,108,110,113,115,117,119],[2,3,4,5,9,11,13,15,17,19,21,23,24,27,30,32,33,34,35,40,42,44,46,48,50,52,54,56,59,60,63,64,65,66,67,72,74,76,78,80,82,84,86,88,91,92,95,96,97,98,99,100,101,102,103,105,107,109,111,113,115,117,119],[2,3,4,5,8,10,12,14,16,18,20,22,24,27,29,32,33,34,35,41,43,45,47,49,51,53,55,56,59,60,63,64,65,66,67,73,75,77,79,81,83,85,87,88,91,92,95,96,97,98,99,100,101,102,103,104,106,108,110,112,114,116,118],[2,3,4,5,9,11,13,15,16,18,20,22,25,26,28,32,33,34,35,40,42,44,46,49,51,53,55,57,58,61,62,64,65,66,67,72,74,76,78,81,83,85,87,89,90,93,94,96,97,98,99,100,101,102,103,105,107,109,111,112,114,116,118],[2,3,6,7,10,11,14,15,18,19,22,23,28,29,30,31,35,37,38,42,43,46,47,50,51,54,55,60,61,62,63,68,69,70,71,74,75,78,79,82,83,86,87,88,89,90,91,92,93,94,95,97,98,101,102,106,107,110,111,114,115,118,119],[2,3,6,7,10,11,14,15,18,19,22,23,28,29,30,31,34,36,39,40,41,44,45,48,49,52,53,56,57,58,59,68,69,70,71,74,75,78,79,82,83,86,87,88,89,90,91,92,93,94,95,96,99,100,103,104,105,108,109,112,113,116,117],[2,3,6,7,8,9,12,13,16,17,20,21,28,29,30,31,33,36,39,42,43,46,47,50,51,54,55,56,57,58,59,68,69,70,71,72,73,76,77,80,81,84,85,88,89,90,91,92,93,94,95,96,99,100,103,106,107,110,111,114,115,118,119],[2,3,6,7,8,9,12,13,16,17,20,21,28,29,30,31,32,37,38,40,41,44,45,48,49,52,53,60,61,62,63,68,69,70,71,72,73,76,77,80,81,84,85,88,89,90,91,92,93,94,95,97,98,101,102,104,105,108,109,112,113,116,117],[2,3,6,7,8,9,12,13,18,19,22,23,24,25,26,27,33,34,39,42,43,46,47,48,49,52,53,60,61,62,63,64,65,66,67,74,75,78,79,80,81,84,85,88,89,90,91,92,93,94,95,97,98,101,102,104,105,108,109,114,115,118,119],[2,3,6,7,8,9,12,13,18,19,22,23,24,25,26,27,32,35,38,40,41,44,45,50,51,54,55,56,57,58,59,64,65,66,67,74,75,78,79,80,81,84,85,88,89,90,91,92,93,94,95,96,99,100,103,106,107,110,111,112,113,116,117],[2,3,6,7,10,11,14,15,16,17,20,21,24,25,26,27,32,35,37,42,43,46,47,48,49,52,53,56,57,58,59,64,65,66,67,72,73,76,77,82,83,86,87,88,89,90,91,92,93,94,95,96,99,100,103,104,105,108,109,114,115,118,119],[2,3,6,7,10,11,14,15,16,17,20,21,24,25,26,27,33,34,36,40,41,44,45,50,51,54,55,60,61,62,63,64,65,66,67,72,73,76,77,82,83,86,87,88,89,90,91,92,93,94,95,97,98,101,102,106,107,110,111,112,113,116,117],[1,3,4,6,9,11,12,14,20,21,22,23,25,27,29,31,33,35,37,39,43,45,46,50,51,52,53,57,59,60,62,66,67,70,71,73,75,77,79,80,81,82,83,84,85,86,87,89,91,93,95,97,99,101,103,105,106,109,110,114,115,118,119],[1,3,4,6,8,10,13,15,20,21,22,23,24,26,28,30,33,35,37,39,42,44,47,50,51,52,53,56,58,61,63,66,67,70,71,72,74,76,78,80,81,82,83,84,85,86,87,88,90,92,94,97,99,101,103,104,107,108,111,114,115,118,119],[1,3,4,6,9,11,12,14,20,21,22,23,25,27,29,31,32,34,36,38,41,44,47,48,49,54,55,56,58,61,63,66,67,70,71,73,75,77,79,80,81,82,83,84,85,86,87,89,91,93,95,96,98,100,102,104,107,108,111,112,113,116,117],[1,3,4,6,8,10,13,15,20,21,22,23,24,26,28,30,32,34,36,38,40,45,46,48,49,54,55,57,59,60,62,66,67,70,71,72,74,76,78,80,81,82,83,84,85,86,87,88,90,92,94,96,98,100,102,105,106,109,110,112,113,116,117],[1,3,4,6,8,10,13,15,16,17,18,19,25,27,29,31,33,35,37,39,41,42,47,48,49,54,55,57,59,60,62,64,65,68,69,73,75,77,79,80,81,82,83,84,85,86,87,88,90,92,94,96,98,100,102,105,106,109,110,114,115,118,119],[1,3,4,6,9,11,12,14,16,17,18,19,24,26,28,30,33,35,37,39,40,43,46,48,49,54,55,56,58,61,63,64,65,68,69,72,74,76,78,80,81,82,83,84,85,86,87,89,91,93,95,96,98,100,102,104,107,108,111,114,115,118,119],[1,3,4,6,8,10,13,15,16,17,18,19,25,27,29,31,32,34,36,38,40,43,45,50,51,52,53,56,58,61,63,64,65,68,69,73,75,77,79,80,81,82,83,84,85,86,87,88,90,92,94,97,99,101,103,104,107,108,111,112,113,116,117],[1,3,4,6,9,11,12,14,16,17,18,19,24,26,28,30,32,34,36,38,41,42,44,50,51,52,53,57,59,60,62,64,65,68,69,72,74,76,78,80,81,82,83,84,85,86,87,89,91,93,95,97,99,101,103,105,106,109,110,112,113,116,117],[0,3,4,7,12,13,14,15,17,19,20,22,26,27,28,29,33,35,36,38,42,43,44,45,51,53,54,58,59,60,61,66,67,68,69,72,73,74,75,76,77,78,79,81,83,85,87,90,91,94,95,97,99,101,103,106,107,110,111,113,114,117,118],[0,3,4,7,12,13,14,15,16,18,21,23,24,25,30,31,33,35,36,38,42,43,44,45,50,52,55,56,57,62,63,66,67,68,69,72,73,74,75,76,77,78,79,80,82,84,86,88,89,92,93,97,99,101,103,106,107,110,111,112,115,116,119],[0,3,4,7,12,13,14,15,17,19,20,22,26,27,28,29,32,34,37,39,40,41,46,47,49,52,55,56,57,62,63,66,67,68,69,72,73,74,75,76,77,78,79,81,83,85,87,90,91,94,95,96,98,100,102,104,105,108,109,112,115,116,119],[0,3,4,7,12,13,14,15,16,18,21,23,24,25,30,31,32,34,37,39,40,41,46,47,48,53,54,58,59,60,61,66,67,68,69,72,73,74,75,76,77,78,79,80,82,84,86,88,89,92,93,96,98,100,102,104,105,108,109,113,114,117,118],[0,3,4,7,8,9,10,11,16,18,21,23,26,27,28,29,33,35,36,38,40,41,46,47,49,50,55,58,59,60,61,64,65,70,71,72,73,74,75,76,77,78,79,81,83,85,87,88,89,92,93,96,98,100,102,106,107,110,111,113,114,117,118],[0,3,4,7,8,9,10,11,17,19,20,22,24,25,30,31,33,35,36,38,40,41,46,47,48,51,54,56,57,62,63,64,65,70,71,72,73,74,75,76,77,78,79,80,82,84,86,90,91,94,95,96,98,100,102,106,107,110,111,112,115,116,119],[0,3,4,7,8,9,10,11,16,18,21,23,26,27,28,29,32,34,37,39,42,43,44,45,48,51,53,56,57,62,63,64,65,70,71,72,73,74,75,76,77,78,79,81,83,85,87,88,89,92,93,97,99,101,103,104,105,108,109,112,115,116,119],[0,3,4,7,8,9,10,11,17,19,20,22,24,25,30,31,32,34,37,39,42,43,44,45,49,50,52,58,59,60,61,64,65,70,71,72,73,74,75,76,77,78,79,80,82,84,86,90,91,94,95,97,99,101,103,104,105,108,109,113,114,117,118],[0,1,2,3,9,10,13,14,17,18,21,22,25,26,29,30,33,34,37,38,41,42,45,46,49,50,53,54,59,61,62,64,65,66,67,68,69,70,71,73,74,77,78,81,82,85,86,89,90,93,94,97,98,101,102,105,106,109,110,113,114,117,118],[0,1,2,3,8,11,12,15,17,18,21,22,24,27,28,31,33,34,37,38,40,43,44,47,49,50,53,54,58,60,63,64,65,66,67,68,69,70,71,72,75,76,79,81,82,85,86,88,91,92,95,97,98,101,102,104,107,108,111,113,114,117,118],[0,1,2,3,9,10,13,14,16,19,20,23,24,27,28,31,33,34,37,38,41,42,45,46,48,51,52,55,57,60,63,64,65,66,67,68,69,70,71,73,74,77,78,80,83,84,87,88,91,92,95,97,98,101,102,105,106,109,110,112,115,116,119],[0,1,2,3,8,11,12,15,16,19,20,23,25,26,29,30,33,34,37,38,40,43,44,47,48,51,52,55,56,61,62,64,65,66,67,68,69,70,71,72,75,76,79,80,83,84,87,89,90,93,94,97,98,101,102,104,107,108,111,112,115,116,119],[0,1,2,3,9,10,13,14,17,18,21,22,25,26,29,30,32,35,36,39,40,43,44,47,48,51,52,55,57,58,63,64,65,66,67,68,69,70,71,73,74,77,78,81,82,85,86,89,90,93,94,96,99,100,103,104,107,108,111,112,115,116,119],[0,1,2,3,8,11,12,15,17,18,21,22,24,27,28,31,32,35,36,39,41,42,45,46,48,51,52,55,56,59,62,64,65,66,67,68,69,70,71,72,75,76,79,81,82,85,86,88,91,92,95,96,99,100,103,105,106,109,110,112,115,116,119],[0,1,2,3,9,10,13,14,16,19,20,23,24,27,28,31,32,35,36,39,40,43,44,47,49,50,53,54,56,59,61,64,65,66,67,68,69,70,71,73,74,77,78,80,83,84,87,88,91,92,95,96,99,100,103,104,107,108,111,113,114,117,118],[0,1,2,3,8,11,12,15,16,19,20,23,25,26,29,30,32,35,36,39,41,42,45,46,49,50,53,54,57,58,60,64,65,66,67,68,69,70,71,72,75,76,79,80,83,84,87,89,90,93,94,96,99,100,103,105,106,109,110,113,114,117,118],[4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31,36,37,38,39,44,45,46,47,52,53,54,55,56,57,58,59,60,61,62,63,67,69,70,76,77,78,79,84,85,86,87,92,93,94,95,100,101,102,103,108,109,110,111,116,117,118,119],[4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31,36,37,38,39,44,45,46,47,52,53,54,55,56,57,58,59,60,61,62,63,66,68,71,72,73,74,75,80,81,82,83,88,89,90,91,96,97,98,99,104,105,106,107,112,113,114,115],[4,5,6,7,8,9,10,11,16,17,18,19,28,29,30,31,36,37,38,39,40,41,42,43,48,49,50,51,56,57,58,59,60,61,62,63,65,68,71,76,77,78,79,84,85,86,87,88,89,90,91,96,97,98,99,108,109,110,111,116,117,118,119],[4,5,6,7,8,9,10,11,16,17,18,19,28,29,30,31,36,37,38,39,40,41,42,43,48,49,50,51,56,57,58,59,60,61,62,63,64,69,70,72,73,74,75,80,81,82,83,92,93,94,95,100,101,102,103,104,105,106,107,112,113,114,115],[4,5,6,7,8,9,10,11,20,21,22,23,24,25,26,27,32,33,34,35,44,45,46,47,48,49,50,51,56,57,58,59,60,61,62,63,65,66,71,76,77,78,79,80,81,82,83,92,93,94,95,100,101,102,103,104,105,106,107,116,117,118,119],[4,5,6,7,8,9,10,11,20,21,22,23,24,25,26,27,32,33,34,35,44,45,46,47,48,49,50,51,56,57,58,59,60,61,62,63,64,67,70,72,73,74,75,84,85,86,87,88,89,90,91,96,97,98,99,108,109,110,111,112,113,114,115],[4,5,6,7,12,13,14,15,16,17,18,19,24,25,26,27,32,33,34,35,40,41,42,43,52,53,54,55,56,57,58,59,60,61,62,63,64,67,69,76,77,78,79,80,81,82,83,88,89,90,91,96,97,98,99,104,105,106,107,116,117,118,119],[4,5,6,7,12,13,14,15,16,17,18,19,24,25,26,27,32,33,34,35,40,41,42,43,52,53,54,55,56,57,58,59,60,61,62,63,65,66,68,72,73,74,75,84,85,86,87,92,93,94,95,100,101,102,103,108,109,110,111,112,113,114,115],[1,2,5,6,9,10,13,14,18,19,22,23,25,27,29,31,34,35,38,39,41,43,45,47,48,49,50,51,52,53,54,55,57,59,61,63,65,67,69,71,75,77,78,82,83,84,85,89,91,92,94,98,99,100,101,105,107,108,110,116,117,118,119],[1,2,5,6,8,11,12,15,18,19,22,23,24,26,28,30,34,35,38,39,40,42,44,46,48,49,50,51,52,53,54,55,56,58,60,62,65,67,69,71,74,76,79,82,83,84,85,88,90,93,95,98,99,100,101,104,106,109,111,116,117,118,119],[1,2,5,6,8,11,12,15,16,17,20,21,25,27,29,31,32,33,36,37,41,43,45,47,48,49,50,51,52,53,54,55,56,58,60,62,65,67,69,71,73,76,79,80,81,86,87,89,91,92,94,96,97,102,103,105,107,108,110,116,117,118,119],[1,2,5,6,9,10,13,14,16,17,20,21,24,26,28,30,32,33,36,37,40,42,44,46,48,49,50,51,52,53,54,55,57,59,61,63,65,67,69,71,72,77,78,80,81,86,87,88,90,93,95,96,97,102,103,104,106,109,111,116,117,118,119],[1,2,5,6,9,10,13,14,18,19,22,23,25,27,29,31,34,35,38,39,41,43,45,47,48,49,50,51,52,53,54,55,57,59,61,63,64,66,68,70,73,74,79,80,81,86,87,88,90,93,95,96,97,102,103,104,106,109,111,112,113,114,115],[1,2,5,6,8,11,12,15,18,19,22,23,24,26,28,30,34,35,38,39,40,42,44,46,48,49,50,51,52,53,54,55,56,58,60,62,64,66,68,70,72,75,78,80,81,86,87,89,91,92,94,96,97,102,103,105,107,108,110,112,113,114,115],[1,2,5,6,8,11,12,15,16,17,20,21,25,27,29,31,32,33,36,37,41,43,45,47,48,49,50,51,52,53,54,55,56,58,60,62,64,66,68,70,72,75,77,82,83,84,85,88,90,93,95,98,99,100,101,104,106,109,111,112,113,114,115],[1,2,5,6,9,10,13,14,16,17,20,21,24,26,28,30,32,33,36,37,40,42,44,46,48,49,50,51,52,53,54,55,57,59,61,63,64,66,68,70,73,74,76,82,83,84,85,89,91,92,94,98,99,100,101,105,107,108,110,112,113,114,115],[0,2,5,7,10,11,14,15,17,18,21,22,26,27,28,29,34,35,36,37,40,41,42,43,44,45,46,47,49,51,53,55,58,59,62,63,65,67,68,70,74,75,76,77,83,85,86,90,91,92,93,98,99,100,101,108,109,110,111,113,115,116,118],[0,2,5,7,10,11,14,15,16,19,20,23,24,25,30,31,34,35,36,37,40,41,42,43,44,45,46,47,48,50,52,54,56,57,60,61,65,67,68,70,74,75,76,77,82,84,87,88,89,94,95,98,99,100,101,108,109,110,111,112,114,117,119],[0,2,5,7,8,9,12,13,16,19,20,23,26,27,28,29,32,33,38,39,40,41,42,43,44,45,46,47,49,51,53,55,56,57,60,61,65,67,68,70,72,73,78,79,81,84,87,90,91,92,93,96,97,102,103,108,109,110,111,113,115,116,118],[0,2,5,7,8,9,12,13,17,18,21,22,24,25,30,31,32,33,38,39,40,41,42,43,44,45,46,47,48,50,52,54,58,59,62,63,65,67,68,70,72,73,78,79,80,85,86,88,89,94,95,96,97,102,103,108,109,110,111,112,114,117,119],[0,2,5,7,10,11,14,15,17,18,21,22,26,27,28,29,34,35,36,37,40,41,42,43,44,45,46,47,49,51,53,55,58,59,62,63,64,66,69,71,72,73,78,79,81,82,87,88,89,94,95,96,97,102,103,104,105,106,107,112,114,117,119],[0,2,5,7,10,11,14,15,16,19,20,23,24,25,30,31,34,35,36,37,40,41,42,43,44,45,46,47,48,50,52,54,56,57,60,61,64,66,69,71,72,73,78,79,80,83,86,90,91,92,93,96,97,102,103,104,105,106,107,113,115,116,118],[0,2,5,7,8,9,12,13,16,19,20,23,26,27,28,29,32,33,38,39,40,41,42,43,44,45,46,47,49,51,53,55,56,57,60,61,64,66,69,71,74,75,76,77,80,83,85,88,89,94,95,98,99,100,101,104,105,106,107,112,114,117,119],[0,2,5,7,8,9,12,13,17,18,21,22,24,25,30,31,32,33,38,39,40,41,42,43,44,45,46,47,48,50,52,54,58,59,62,63,64,66,69,71,74,75,76,77,81,82,84,90,91,92,93,98,99,100,101,104,105,106,107,113,115,116,118],[0,1,4,5,9,11,12,14,17,19,20,22,25,26,29,30,32,33,34,35,36,37,38,39,41,43,44,46,49,51,52,54,57,58,61,62,65,66,69,70,73,75,76,78,81,83,84,86,91,93,94,100,101,102,103,105,107,108,110,113,115,116,118],[0,1,4,5,8,10,13,15,17,19,20,22,24,27,28,31,32,33,34,35,36,37,38,39,40,42,45,47,49,51,52,54,56,59,60,63,65,66,69,70,72,74,77,79,81,83,84,86,90,92,95,100,101,102,103,104,106,109,111,113,115,116,118],[0,1,4,5,9,11,12,14,16,18,21,23,24,27,28,31,32,33,34,35,36,37,38,39,41,43,44,46,48,50,53,55,56,59,60,63,65,66,69,70,73,75,76,78,80,82,85,87,89,92,95,100,101,102,103,105,107,108,110,112,114,117,119],[0,1,4,5,8,10,13,15,16,18,21,23,25,26,29,30,32,33,34,35,36,37,38,39,40,42,45,47,48,50,53,55,57,58,61,62,65,66,69,70,72,74,77,79,80,82,85,87,88,93,94,100,101,102,103,104,106,109,111,112,114,117,119],[0,1,4,5,9,11,12,14,17,19,20,22,25,26,29,30,32,33,34,35,36,37,38,39,41,43,44,46,49,51,52,54,57,58,61,62,64,67,68,71,72,74,77,79,80,82,85,87,89,90,95,96,97,98,99,104,106,109,111,112,114,117,119],[0,1,4,5,8,10,13,15,17,19,20,22,24,27,28,31,32,33,34,35,36,37,38,39,40,42,45,47,49,51,52,54,56,59,60,63,64,67,68,71,73,75,76,78,80,82,85,87,88,91,94,96,97,98,99,105,107,108,110,112,114,117,119],[0,1,4,5,9,11,12,14,16,18,21,23,24,27,28,31,32,33,34,35,36,37,38,39,41,43,44,46,48,50,53,55,56,59,60,63,64,67,68,71,72,74,77,79,81,83,84,86,88,91,93,96,97,98,99,104,106,109,111,113,115,116,118],[0,1,4,5,8,10,13,15,16,18,21,23,25,26,29,30,32,33,34,35,36,37,38,39,40,42,45,47,48,50,53,55,57,58,61,62,64,67,68,71,73,75,76,78,81,83,84,86,89,90,92,96,97,98,99,105,107,108,110,113,115,116,118],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,33,34,37,38,42,43,44,45,50,51,52,53,60,61,62,63,65,66,69,70,74,75,76,77,82,83,84,85,92,93,94,95,99,101,102,106,107,108,109,114,115,116,117],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,32,35,36,39,40,41,46,47,48,49,54,55,56,57,58,59,65,66,69,70,74,75,76,77,82,83,84,85,92,93,94,95,98,100,103,104,105,110,111,112,113,118,119],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,32,35,36,39,42,43,44,45,50,51,52,53,56,57,58,59,65,66,69,70,72,73,78,79,80,81,86,87,92,93,94,95,97,100,103,106,107,108,109,114,115,116,117],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,33,34,37,38,40,41,46,47,48,49,54,55,60,61,62,63,65,66,69,70,72,73,78,79,80,81,86,87,92,93,94,95,96,101,102,104,105,110,111,112,113,118,119],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,33,34,37,38,42,43,44,45,50,51,52,53,60,61,62,63,64,67,68,71,72,73,78,79,80,81,86,87,88,89,90,91,97,98,103,104,105,110,111,112,113,118,119],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,32,35,36,39,40,41,46,47,48,49,54,55,56,57,58,59,64,67,68,71,72,73,78,79,80,81,86,87,88,89,90,91,96,99,102,106,107,108,109,114,115,116,117],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,32,35,36,39,42,43,44,45,50,51,52,53,56,57,58,59,64,67,68,71,74,75,76,77,82,83,84,85,88,89,90,91,96,99,101,104,105,110,111,112,113,118,119],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,33,34,37,38,40,41,46,47,48,49,54,55,60,61,62,63,64,67,68,71,74,75,76,77,82,83,84,85,88,89,90,91,97,98,100,106,107,108,109,114,115,116,117],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,33,35,36,38,41,42,45,46,50,51,54,55,57,59,60,62,65,67,68,70,73,75,76,78,84,85,86,87,89,91,92,94,97,99,100,102,107,109,110,114,115,116,117],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,33,35,36,38,40,43,44,47,50,51,54,55,56,58,61,63,65,67,68,70,72,74,77,79,84,85,86,87,88,90,93,95,97,99,100,102,106,108,111,114,115,116,117],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,32,34,37,39,40,43,44,47,48,49,52,53,56,58,61,63,65,67,68,70,73,75,76,78,84,85,86,87,89,91,92,94,96,98,101,103,105,108,111,112,113,118,119],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,32,34,37,39,41,42,45,46,48,49,52,53,57,59,60,62,65,67,68,70,72,74,77,79,84,85,86,87,88,90,93,95,96,98,101,103,104,109,110,112,113,118,119],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,33,35,36,38,41,42,45,46,50,51,54,55,57,59,60,62,64,66,69,71,72,74,77,79,80,81,82,83,88,90,93,95,96,98,101,103,105,106,111,112,113,118,119],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,33,35,36,38,40,43,44,47,50,51,54,55,56,58,61,63,64,66,69,71,73,75,76,78,80,81,82,83,89,91,92,94,96,98,101,103,104,107,110,112,113,118,119],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,32,34,37,39,40,43,44,47,48,49,52,53,56,58,61,63,64,66,69,71,72,74,77,79,80,81,82,83,88,90,93,95,97,99,100,102,104,107,109,114,115,116,117],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,32,34,37,39,41,42,45,46,48,49,52,53,57,59,60,62,64,66,69,71,73,75,76,78,80,81,82,83,89,91,92,94,97,99,100,102,105,106,108,114,115,116,117],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,33,35,37,39,42,43,46,47,49,50,53,54,58,59,60,61,65,67,69,71,76,77,78,79,81,83,84,86,90,91,92,93,97,99,100,102,106,107,108,109,115,117,118],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,33,35,37,39,42,43,46,47,48,51,52,55,56,57,62,63,65,67,69,71,76,77,78,79,80,82,85,87,88,89,94,95,97,99,100,102,106,107,108,109,114,116,119],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,32,34,36,38,40,41,44,45,48,51,52,55,56,57,62,63,65,67,69,71,76,77,78,79,81,83,84,86,90,91,92,93,96,98,101,103,104,105,110,111,113,116,119],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,32,34,36,38,40,41,44,45,49,50,53,54,58,59,60,61,65,67,69,71,76,77,78,79,80,82,85,87,88,89,94,95,96,98,101,103,104,105,110,111,112,117,118],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,33,35,37,39,42,43,46,47,49,50,53,54,58,59,60,61,64,66,68,70,72,73,74,75,80,82,85,87,88,89,94,95,96,98,101,103,104,105,110,111,113,114,119],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,33,35,37,39,42,43,46,47,48,51,52,55,56,57,62,63,64,66,68,70,72,73,74,75,81,83,84,86,90,91,92,93,96,98,101,103,104,105,110,111,112,115,118],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,32,34,36,38,40,41,44,45,48,51,52,55,56,57,62,63,64,66,68,70,72,73,74,75,80,82,85,87,88,89,94,95,97,99,100,102,106,107,108,109,112,115,117],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,32,34,36,38,40,41,44,45,49,50,53,54,58,59,60,61,64,66,68,70,72,73,74,75,81,83,84,86,90,91,92,93,97,99,100,102,106,107,108,109,113,114,116]],"h":8,"lines":[[2,0,0,0,0,0,0,0],[0,2,0,0,0,0,0,0],[0,0,2,0,0,0,0,0],[0,0,0,2,0,0,0,0],[0,0,0,0,2,0,0,0],[0,0,0,0,0,2,0,0],[0,0,0,0,0,0,2,0],[0,0,0,0,0,0,0,2],[0,1,1,0,1,0,0,1],[0,1,1,0,1,0,0,-1],[0,1,1,0,-1,0,0,1],[0,1,1,0,-1,0,0,-1],[0,1,-1,0,1,0,0,1],[0,1,-1,0,1,0,0,-1],[0,1,-1,0,-1,0,0,1],[0,1,-1,0,-1,0,0,-1],[1,0,1,0,1,0,1,0],[1,0,1,0,1,0,-1,0],[1,0,1,0,-1,0,1,0],[1,0,1,0,-1,0,-1,0],[1,0,-1,0,1,0,1,0],[1,0,-1,0,1,0,-1,0],[1,0,-1,0,-1,0,1,0],[1,0,-1,0,-1,0,-1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,-1],[1,1,0,0,0,0,-1,1],[1,1,0,0,0,0,-1,-1],[1,-1,0,0,0,0,1,1],[1,-1,0,0,0,0,1,-1],[1,-1,0,0,0,0,-1,1],[1,-1,0,0,0,0,-1,-1],[1,1,0,0,1,1,0,0],[1,1,0,0,1,-1,0,0],[1,1,0,0,-1,1,0,0],[1,1,0,0,-1,-1,0,0],[1,-1,0,0,1,1,0,0],[1,-1,0,0,1,-1,0,0],[1,-1,0,0,-1,1,0,0],[1,-1,0,0,-1,-1,0,0],[1,0,1,0,0,1,0,1],[1,0,1,0,0,1,0,-1],[1,0,1,0,0,-1,0,1],[1,0,1,0,0,-1,0,-1],[1,0,-1,0,0,1,0,1],[1,0,-1,0,0,1,0,-1],[1,0,-1,0,0,-1,0,1],[1,0,-1,0,0,-1,0,-1],[0,1,1,0,0,1,1,0],[0,1,1,0,0,1,-1,0],[0,1,1,0,0,-1,1,0],[0,1,1,0,0,-1,-1,0],[0,1,-1,0,0,1,1,0],[0,1,-1,0,0,1,-1,0],[0,1,-1,0,0,-1,1,0],[0,1,-1,0,0,-1,-1,0],[0,0,0,0,1,1,1,1],[0,0,0,0,1,1,1,-1],[0,0,0,0,1,1,-1,1],[0,0,0,0,1,1,-1,-1],[0,0,0,0,1,-1,1,1],[0,0,0,0,1,-1,1,-1],[0,0,0,0,1,-1,-1,1],[0,0,0,0,1,-1,-1,-1],[1,1,1,1,0,0,0,0],[1,1,1,-1,0,0,0,0],[1,1,-1,1,0,0,0,0],[1,1,-1,-1,0,0,0,0],[1,-1,1,1,0,0,0,0],[1,-1,1,-1,0,0,0,0],[1,-1,-1,1,0,0,0,0],[1,-1,-1,-1,0,0,0,0],[1,0,0,1,1,0,0,1],[1,0,0,1,1,0,0,-1],[1,0,0,1,-1,0,0,1],[1,0,0,1,-1,0,0,-1],[1,0,0,-1,1,0,0,1],[1,0,0,-1,1,0,0,-1],[1,0,0,-1,-1,0,0,1],[1,0,0,-1,-1,0,0,-1],[0,1,0,1,1,0,1,0],[0,1,0,1,1,0,-1,0],[0,1,0,1,-1,0,1,0],[0,1,0,1,-1,0,-1,0],[0,1,0,-1,1,0,1,0],[0,1,0,-1,1,0,-1,0],[0,1,0,-1,-1,0,1,0],[0,1,0,-1,-1,0,-1,0],[0,0,1,1,0,0,1,1],[0,0,1,1,0,0,1,-1],[0,0,1,1,0,0,-1,1],[0,0,1,1,0,0,-1,-1],[0,0,1,-1,0,0,1,1],[0,0,1,-1,0,0,1,-1],[0,0,1,-1,0,0,-1,1],[0,0,1,-1,0,0,-1,-1],[0,0,1,1,1,1,0,0],[0,0,1,1,1,-1,0,0],[0,0,1,1,-1,1,0,0],[0,0,1,1,-1,-1,0,0],[0,0,1,-1,1,1,0,0],[0,0,1,-1,1,-1,0,0],[0,0,1,-1,-1,1,0,0],[0,0,1,-1,-1,-1,0,0],[0,1,0,1,0,1,0,1],[0,1,0,1,0,1,0,-1],[0,1,0,1,0,-1,0,1],[0,1,0,1,0,-1,0,-1],[0,1,0,-1,0,1,0,1],[0,1,0,-1,0,1,0,-1],[0,1,0,-1,0,-1,0,1],[0,1,0,-1,0,-1,0,-1],[1,0,0,1,0,1,1,0],[1,0,0,1,0,1,-1,0],[1,0,0,1,0,-1,1,0],[1,0,0,1,0,-1,-1,0],[1,0,0,-1,0,1,1,0],[1,0,0,-1,0,1,-1,0],[1,0,0,-1,0,-1,1,0],[1,0,0,-1,0,-1,-1,0]],"ret":[246,247,252,253,254,255,258,259,260],"scatter":[[0,1],[0,2],[0,3],[0,1,2,3],[0,4],[0,1,2,4],[0,1,3,4],[0,2,3,4],[0,5],[0,2,3,4,5],[0,4,5],[0,2,3,5],[0,3,5],[0,2,4,5],[0,3,4,5],[0,2,5],[0,6],[0,1,3,4,6],[0,4,6],[0,1,3,6],[0,3,6],[0,1,4,6],[0,3,4,6],[0,1,6],[0,3,4,5,6],[0,2,5,6],[0,1,5,6],[0,1,2,3,4,5,6],[0,2,3,4,5,6],[0,5,6],[0,1,2,5,6],[0,1,3,4,5,6],[0,7],[0,1,2,4,7],[0,4,7],[0,1,2,7],[0,2,7],[0,1,4,7],[0,2,4,7],[0,1,7],[0,2,4,5,7],[0,3,5,7],[0,1,5,7],[0,1,2,3,4,5,7],[0,2,3,4,5,7],[0,5,7],[0,1,3,5,7],[0,1,2,4,5,7],[0,1,4,6,7],[0,3,6,7],[0,2,6,7],[0,1,2,3,4,6,7],[0,1,3,4,6,7],[0,6,7],[0,2,3,6,7],[0,1,2,4,6,7],[0,1,2,3,4,5,6,7],[0,1,5,6,7],[0,2,5,6,7],[0,3,4,5,6,7],[0,3,5,6,7],[0,2,4,5,6,7],[0,1,4,5,6,7],[0,1,2,3,5,6,7],[0,8],[0,1,2,3,8],[0,3,8],[0,1,2,8],[0,2,8],[0,1,3,8],[0,2,3,8],[0,1,8],[0,2,3,5,8],[0,4,5,8],[0,2,3,4,5,8],[0,5,8],[0,1,5,8],[0,1,2,3,4,5,8],[0,1,4,5,8],[0,1,2,3,5,8],[0,1,3,6,8],[0,4,6,8],[0,1,3,4,6,8],[0,6,8],[0,2,6,8],[0,1,2,3,4,6,8],[0,2,4,6,8],[0,1,2,3,6,8],[0,1,2,3,4,5,6,8],[0,1,5,6,8],[0,2,5,6,8],[0,3,4,5,6,8],[0,4,5,6,8],[0,2,3,5,6,8],[0,1,3,5,6,8],[0,1,2,4,5,6,8],[0,1,2,7,8],[0,4,7,8],[0,1,2,4,7,8],[0,7,8],[0,3,7,8],[0,1,2,3,4,7,8],[0,3,4,7,8],[0,1,2,3,7,8],[0,1,2,3,4,5,7,8],[0,1,5,7,8],[0,3,5,7,8],[0,2,4,5,7,8],[0,4,5,7,8],[0,2,3,5,7,8],[0,1,2,5,7,8],[0,1,3,4,5,7,8],[0,1,2,3,4,6,7,8],[0,2,6,7,8],[0,3,6,7,8],[0,1,4,6,7,8],[0,4,6,7,8],[0,1,3,6,7,8],[0,1,2,6,7,8],[0,2,3,4,6,7,8]],"start":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,4,0,0,0,3,2,0,2,0,0,0,6,6,6,6,3,0,0,6,0,0,2,0,2,0,0,0,9,8,3,3,3,3,0,2,0,0,0,0,0,0,0,6,4,0,0,6,2,2,2,2,2,2,0,0,9,9,4,4,4,0,2,2,2,0,2,0,0,0,6,6,0,5,0,6,2,2,2,0,2,0,0,8,8,8,0,5,0,0,2,2,0,2,0,2,0,0,9,6,0,4,0,6,3,0,0,6,3,3,0,8,0,0,4,0,4,4,0,3,0,0,3,0,0,6,0,6,5,5,6,6,0,5,3,0,0,6,0,0,0,9,5,5,0,0,0,0,0,3,0,3,0,6,0,6,5,5,5,5,0,6,0,0,6,6,0,0,0,8,4,0,0,5,0,0,0,8,0,0,0,0,0,8,6,6,9,0,6,6,8,0,6,6,0,0,0,0,0,0,463,0,0,0,0,461,0,458,458,0,0,0,0,0,0,0,0,0,0,469,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,465,466,0,0,0],"v":120} \ No newline at end of file diff --git a/research/r740-block-retimed-kernel/stages/kernel-selection.json b/research/r740-block-retimed-kernel/stages/kernel-selection.json new file mode 100644 index 0000000000..ec0712cb53 --- /dev/null +++ b/research/r740-block-retimed-kernel/stages/kernel-selection.json @@ -0,0 +1,1271 @@ +{ + "stage": "kernel", + "input_sha256": "d6ec8811541d6ab59a3bbbaaa15bccc8918b3b43b23d9f593198cfe90826fd20", + "output_sha256": "b5789bffbf7bafe77a222366ea9a125b1d4a6f9d84b96afc4bb3c509d6b89b1a", + "entries_count": 112, + "total_entrance_rank": 136, + "donor_slots": 100, + "entries": [ + [ + [ + 3 + ], + 738, + [ + 263, + 736 + ] + ], + [ + [ + 2 + ], + 739, + [ + 256, + 737 + ] + ], + [ + [ + 1 + ], + 743, + [ + 248, + 742 + ] + ], + [ + [ + 0 + ], + 744, + [ + 244, + 745 + ] + ], + [ + [ + 0 + ], + 746, + [ + 242, + 747 + ] + ], + [ + [ + 4 + ], + 750, + [ + 812, + 840 + ] + ], + [ + [ + 4 + ], + 751, + [ + 779, + 835 + ] + ], + [ + [ + 4 + ], + 752, + [ + 268, + 812, + 840 + ] + ], + [ + [ + 4 + ], + 753, + [ + 269, + 779, + 835 + ] + ], + [ + [ + 1 + ], + 754, + [ + 249, + 755 + ] + ], + [ + [ + 4 + ], + 757, + [ + 266, + 756 + ] + ], + [ + [ + 0 + ], + 760, + [ + 242, + 761 + ] + ], + [ + [ + 0 + ], + 762, + [ + 763, + 776, + 777 + ] + ], + [ + [ + 7 + ], + 766, + [ + 286, + 764 + ] + ], + [ + [ + 6 + ], + 767, + [ + 281, + 765 + ] + ], + [ + [ + 1 + ], + 768, + [ + 248, + 742, + 861, + 888 + ] + ], + [ + [ + 1 + ], + 769, + [ + 742, + 861, + 888 + ] + ], + [ + [ + 1 + ], + 770, + [ + 755, + 873, + 886 + ] + ], + [ + [ + 1 + ], + 771, + [ + 249, + 755, + 873, + 886 + ] + ], + [ + [ + 0 + ], + 773, + [ + 242, + 772 + ] + ], + [ + [ + 4 + ], + 781, + [ + 269, + 779 + ] + ], + [ + [ + 2 + ], + 782, + [ + 257, + 783 + ] + ], + [ + [ + 4 + ], + 785, + [ + 268, + 784 + ] + ], + [ + [ + 0 + ], + 786, + [ + 803, + 817, + 832 + ] + ], + [ + [ + 0 + ], + 787, + [ + 241, + 803, + 817, + 832 + ] + ], + [ + [ + 0 + ], + 788, + [ + 748, + 830 + ] + ], + [ + [ + 0 + ], + 789, + [ + 749, + 830 + ] + ], + [ + [ + 0 + ], + 790, + [ + 763, + 776, + 805 + ] + ], + [ + [ + 0 + ], + 791, + [ + 763, + 777, + 805 + ] + ], + [ + [ + 7 + ], + 794, + [ + 285, + 792 + ] + ], + [ + [ + 7 + ], + 795, + [ + 287, + 793 + ] + ], + [ + [ + 2 + ], + 796, + [ + 783, + 838, + 853 + ] + ], + [ + [ + 2 + ], + 797, + [ + 257, + 783, + 838, + 853 + ] + ], + [ + [ + 2 + ], + 798, + [ + 256, + 799 + ] + ], + [ + [ + 0 + ], + 800, + [ + 749, + 819 + ] + ], + [ + [ + 0 + ], + 801, + [ + 748, + 819 + ] + ], + [ + [ + 0 + ], + 802, + [ + 241, + 803 + ] + ], + [ + [ + 0 + ], + 804, + [ + 776, + 777, + 805 + ] + ], + [ + [ + 4 + ], + 808, + [ + 266, + 806 + ] + ], + [ + [ + 4 + ], + 809, + [ + 269, + 807 + ] + ], + [ + [ + 3 + ], + 811, + [ + 263, + 810 + ] + ], + [ + [ + 4 + ], + 813, + [ + 268, + 812 + ] + ], + [ + [ + 0 + ], + 814, + [ + 763, + 805 + ] + ], + [ + [ + 0 + ], + 815, + [ + 763, + 776, + 777, + 805 + ] + ], + [ + [ + 0 + ], + 816, + [ + 241, + 817 + ] + ], + [ + [ + 0 + ], + 818, + [ + 748, + 749, + 819 + ] + ], + [ + [ + 6 + ], + 821, + [ + 281, + 765, + 851, + 905 + ] + ], + [ + [ + 6 + ], + 822, + [ + 278, + 820 + ] + ], + [ + [ + 6 + ], + 823, + [ + 765, + 851, + 905 + ] + ], + [ + [ + 3 + ], + 825, + [ + 263, + 824 + ] + ], + [ + [ + 0 + ], + 828, + [ + 777, + 805 + ] + ], + [ + [ + 0 + ], + 829, + [ + 776, + 805 + ] + ], + [ + [ + 0 + ], + 831, + [ + 748, + 749, + 830 + ] + ], + [ + [ + 0 + ], + 833, + [ + 241, + 832 + ] + ], + [ + [ + 7 + ], + 836, + [ + 283, + 834 + ] + ], + [ + [ + 4 + ], + 837, + [ + 269, + 835 + ] + ], + [ + [ + 2 + ], + 839, + [ + 257, + 838 + ] + ], + [ + [ + 4 + ], + 841, + [ + 268, + 840 + ] + ], + [ + [ + 1 + ], + 842, + [ + 251, + 843 + ] + ], + [ + [ + 4 + ], + 845, + [ + 778, + 780, + 844 + ] + ], + [ + [ + 1 + ], + 846, + [ + 249, + 873, + 886 + ] + ], + [ + [ + 1 + ], + 847, + [ + 873, + 886 + ] + ], + [ + [ + 6 + ], + 849, + [ + 281, + 851 + ] + ], + [ + [ + 2 + ], + 852, + [ + 257, + 853 + ] + ], + [ + [ + 2 + ], + 854, + [ + 737, + 799, + 909 + ] + ], + [ + [ + 2 + ], + 855, + [ + 256, + 737, + 799, + 909 + ] + ], + [ + [ + 1 + ], + 857, + [ + 251, + 856 + ] + ], + [ + [ + 1 + ], + 860, + [ + 248, + 861 + ] + ], + [ + [ + 4 + ], + 863, + [ + 779, + 807, + 835 + ] + ], + [ + [ + 4 + ], + 865, + [ + 269, + 779, + 807, + 835 + ] + ], + [ + [ + 3 + ], + 866, + [ + 736, + 810 + ] + ], + [ + [ + 3 + ], + 867, + [ + 263, + 736, + 810 + ] + ], + [ + [ + 4 + ], + 868, + [ + 784, + 812, + 840 + ] + ], + [ + [ + 4 + ], + 869, + [ + 268, + 784, + 812, + 840 + ] + ], + [ + [ + 3 + ], + 871, + [ + 261, + 870 + ] + ], + [ + [ + 1 + ], + 872, + [ + 249, + 873 + ] + ], + [ + [ + 4 + ], + 875, + [ + 266, + 874 + ] + ], + [ + [ + 7 + ], + 879, + [ + 287, + 877 + ] + ], + [ + [ + 3 + ], + 880, + [ + 736, + 824 + ] + ], + [ + [ + 3 + ], + 881, + [ + 263, + 736, + 824 + ] + ], + [ + [ + 1 + ], + 887, + [ + 249, + 886 + ] + ], + [ + [ + 1 + ], + 889, + [ + 248, + 888 + ] + ], + [ + [ + 4 + ], + 891, + [ + 779, + 807 + ] + ], + [ + [ + 4 + ], + 893, + [ + 269, + 779, + 807 + ] + ], + [ + [ + 3 + ], + 894, + [ + 810, + 824 + ] + ], + [ + [ + 3 + ], + 895, + [ + 263, + 810, + 824 + ] + ], + [ + [ + 3 + ], + 896, + [ + 870, + 910 + ] + ], + [ + [ + 3 + ], + 897, + [ + 261, + 870, + 910 + ] + ], + [ + [ + 4 + ], + 899, + [ + 778, + 780, + 898 + ] + ], + [ + [ + 4 + ], + 902, + [ + 756, + 806 + ] + ], + [ + [ + 4 + ], + 903, + [ + 266, + 756, + 806 + ] + ], + [ + [ + 6 + ], + 907, + [ + 281, + 905 + ] + ], + [ + [ + 2 + ], + 908, + [ + 256, + 909 + ] + ], + [ + [ + 3 + ], + 911, + [ + 261, + 910 + ] + ], + [ + [ + 6 + ], + 915, + [ + 278, + 914 + ] + ], + [ + [ + 6 + ], + 921, + [ + 280, + 919 + ] + ], + [ + [ + 4 + ], + 922, + [ + 784, + 812 + ] + ], + [ + [ + 4 + ], + 923, + [ + 268, + 784, + 812 + ] + ], + [ + [ + 7 + ], + 924, + [ + 285, + 925 + ] + ], + [ + [ + 4 + ], + 926, + [ + 844, + 898 + ] + ], + [ + [ + 4 + ], + 927, + [ + 778, + 780, + 844, + 898 + ] + ], + [ + [ + 6 + ], + 928, + [ + 278, + 929 + ] + ], + [ + [ + 4 + ], + 930, + [ + 756, + 806, + 874 + ] + ], + [ + [ + 4 + ], + 931, + [ + 266, + 756, + 806, + 874 + ] + ], + [ + [ + 0, + 3, + 4, + 7, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ], + 938, + [ + 933, + 934, + 937 + ] + ], + [ + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ], + 943, + [ + 944, + 951, + 953 + ] + ], + [ + [ + 0, + 1, + 2, + 3, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + 945, + [ + 940 + ] + ], + [ + [ + 0, + 1, + 2, + 3, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + 946, + [ + 939 + ] + ], + [ + [ + 2, + 3, + 4, + 5, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + 957, + [ + 958, + 964, + 965 + ] + ], + [ + [ + 1, + 3, + 5, + 7, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + 960, + [ + 959, + 966, + 967 + ] + ], + [ + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + 975, + [ + 974, + 978, + 979 + ] + ], + [ + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + 976, + [ + 972, + 973, + 977 + ] + ] + ] +} diff --git a/research/r740-block-retimed-kernel/stages/kernel-v2-word.json b/research/r740-block-retimed-kernel/stages/kernel-v2-word.json new file mode 100644 index 0000000000..ce5053efd0 --- /dev/null +++ b/research/r740-block-retimed-kernel/stages/kernel-v2-word.json @@ -0,0 +1 @@ +{"A":[[2,241,[787,802,816,833]],[2,242,[746,760,773]],[2,244,[744]],[3,248,[743,768,860,889]],[3,249,[754,771,846,872,887]],[3,251,[842,857]],[4,256,[739,798,855,908]],[4,257,[782,797,839,852]],[5,261,[871,897,911]],[5,263,[738,811,825,867,881,895]],[6,266,[757,808,875,903,931]],[6,268,[752,785,813,841,869,923]],[6,269,[753,781,809,837,865,893]],[8,278,[822,915,928]],[8,280,[921]],[8,281,[767,821,849,907]],[9,283,[836]],[9,285,[794,924]],[9,286,[766]],[9,287,[795,879]],[5,736,[738,866,867,880,881]],[4,737,[739,854,855]],[3,742,[743,768,769]],[2,745,[744]],[2,747,[746]],[2,748,[788,801,818,831]],[2,749,[789,800,818,831]],[3,755,[754,770,771]],[6,756,[757,902,903,930,931]],[2,761,[760]],[2,763,[762,790,791,814,815]],[9,764,[766]],[8,765,[767,821,823]],[2,772,[773]],[2,776,[762,790,804,815,829]],[2,777,[762,791,804,815,828]],[6,778,[845,899,927]],[6,779,[751,753,781,863,865,891,893]],[6,780,[845,899,927]],[4,783,[782,796,797]],[6,784,[785,868,869,922,923]],[9,792,[794]],[9,793,[795]],[4,799,[798,854,855]],[2,803,[786,787,802]],[2,805,[790,791,804,814,815,828,829]],[6,806,[808,902,903,930,931]],[6,807,[809,863,865,891,893]],[5,810,[811,866,867,894,895]],[6,812,[750,752,813,868,869,922,923]],[2,817,[786,787,816]],[2,819,[800,801,818]],[8,820,[822]],[5,824,[825,880,881,894,895]],[2,830,[788,789,831]],[2,832,[786,787,833]],[9,834,[836]],[6,835,[751,753,837,863,865]],[4,838,[796,797,839]],[6,840,[750,752,841,868,869]],[3,843,[842]],[6,844,[845,926,927]],[8,851,[821,823,849]],[4,853,[796,797,852]],[3,856,[857]],[3,861,[768,769,860]],[5,870,[871,896,897]],[3,873,[770,771,846,847,872]],[6,874,[875,930,931]],[9,877,[879]],[3,886,[770,771,846,847,887]],[3,888,[768,769,889]],[6,898,[899,926,927]],[8,905,[821,823,907]],[4,909,[854,855,908]],[5,910,[896,897,911]],[8,914,[915]],[8,919,[921]],[9,925,[924]],[8,929,[928]],[463,933,[938]],[463,934,[938]],[463,937,[938]],[458,939,[946]],[458,940,[945]],[461,944,[943]],[461,951,[943]],[461,953,[943]],[469,958,[957]],[468,959,[960]],[469,964,[957]],[469,965,[957]],[468,966,[960]],[468,967,[960]],[466,972,[976]],[466,973,[976]],[465,974,[975]],[466,977,[976]],[465,978,[975]],[465,979,[975]],[2,240,[0]],[2,241,[0]],[2,242,[0]],[2,243,[0]],[2,244,[0]],[2,245,[0]],[3,246,[1]],[3,247,[1]],[3,248,[1]],[3,249,[1]],[3,250,[1]],[3,251,[1]],[4,252,[2]],[4,253,[2]],[4,254,[2]],[4,255,[2]],[4,256,[2]],[4,257,[2]],[5,258,[3]],[5,259,[3]],[5,260,[3]],[5,261,[3]],[5,262,[3]],[5,263,[3]],[6,264,[4]],[6,265,[4]],[6,266,[4]],[6,267,[4]],[6,268,[4]],[6,269,[4]],[7,270,[5]],[7,271,[5]],[7,272,[5]],[7,273,[5]],[7,274,[5]],[7,275,[5]],[8,276,[6]],[8,277,[6]],[8,278,[6]],[8,279,[6]],[8,280,[6]],[8,281,[6]],[9,282,[7]],[9,283,[7]],[9,284,[7]],[9,285,[7]],[9,286,[7]],[9,287,[7]],[10,288,[8]],[10,289,[8]],[11,290,[9]],[11,291,[9]],[12,292,[10]],[12,293,[10]],[13,294,[11]],[13,295,[11]],[14,296,[12]],[14,297,[12]],[15,298,[13]],[15,299,[13]],[16,300,[14]],[16,301,[14]],[17,302,[15]],[17,303,[15]],[18,304,[16]],[18,305,[16]],[19,306,[17]],[19,307,[17]],[20,308,[18]],[20,309,[18]],[21,310,[19]],[21,311,[19]],[22,312,[20]],[22,313,[20]],[23,314,[21]],[23,315,[21]],[24,316,[22]],[24,317,[22]],[25,318,[23]],[25,319,[23]],[26,320,[24]],[26,321,[24]],[27,322,[25]],[27,323,[25]],[28,324,[26]],[28,325,[26]],[29,326,[27]],[29,327,[27]],[30,328,[28]],[30,329,[28]],[31,330,[29]],[31,331,[29]],[32,332,[30]],[32,333,[30]],[33,334,[31]],[33,335,[31]],[34,336,[32]],[34,337,[32]],[35,338,[33]],[35,339,[33]],[36,340,[34]],[36,341,[34]],[37,342,[35]],[37,343,[35]],[38,344,[36]],[38,345,[36]],[39,346,[37]],[39,347,[37]],[40,348,[38]],[40,349,[38]],[41,350,[39]],[41,351,[39]],[42,352,[40]],[42,353,[40]],[43,354,[41]],[43,355,[41]],[44,356,[42]],[44,357,[42]],[45,358,[43]],[45,359,[43]],[46,360,[44]],[46,361,[44]],[47,362,[45]],[47,363,[45]],[48,364,[46]],[48,365,[46]],[49,366,[47]],[49,367,[47]],[50,368,[48]],[50,369,[48]],[51,370,[49]],[51,371,[49]],[52,372,[50]],[52,373,[50]],[53,374,[51]],[53,375,[51]],[54,376,[52]],[54,377,[52]],[55,378,[53]],[55,379,[53]],[56,380,[54]],[56,381,[54]],[57,382,[55]],[57,383,[55]],[58,384,[56]],[58,385,[56]],[59,386,[57]],[59,387,[57]],[60,388,[58]],[60,389,[58]],[61,390,[59]],[61,391,[59]],[62,392,[60]],[62,393,[60]],[63,394,[61]],[63,395,[61]],[64,396,[62]],[64,397,[62]],[65,398,[63]],[65,399,[63]],[66,400,[64]],[66,401,[64]],[67,402,[65]],[67,403,[65]],[68,404,[66]],[68,405,[66]],[69,406,[67]],[69,407,[67]],[70,408,[68]],[70,409,[68]],[71,410,[69]],[71,411,[69]],[72,412,[70]],[72,413,[70]],[73,414,[71]],[73,415,[71]],[74,416,[72]],[74,417,[72]],[75,418,[73]],[75,419,[73]],[76,420,[74]],[76,421,[74]],[77,422,[75]],[77,423,[75]],[78,424,[76]],[78,425,[76]],[79,426,[77]],[79,427,[77]],[80,428,[78]],[80,429,[78]],[81,430,[79]],[81,431,[79]],[82,432,[80]],[82,433,[80]],[83,434,[81]],[83,435,[81]],[84,436,[82]],[84,437,[82]],[85,438,[83]],[85,439,[83]],[86,440,[84]],[86,441,[84]],[87,442,[85]],[87,443,[85]],[88,444,[86]],[88,445,[86]],[89,446,[87]],[89,447,[87]],[90,448,[88]],[90,449,[88]],[91,450,[89]],[91,451,[89]],[92,452,[90]],[92,453,[90]],[93,454,[91]],[93,455,[91]],[94,456,[92]],[94,457,[92]],[95,458,[93]],[95,459,[93]],[96,460,[94]],[96,461,[94]],[97,462,[95]],[97,463,[95]],[98,464,[96]],[98,465,[96]],[99,466,[97]],[99,467,[97]],[100,468,[98]],[100,469,[98]],[101,470,[99]],[101,471,[99]],[102,472,[100]],[102,473,[100]],[103,474,[101]],[103,475,[101]],[104,476,[102]],[104,477,[102]],[105,478,[103]],[105,479,[103]],[106,480,[104]],[106,481,[104]],[107,482,[105]],[107,483,[105]],[108,484,[106]],[108,485,[106]],[109,486,[107]],[109,487,[107]],[110,488,[108]],[110,489,[108]],[111,490,[109]],[111,491,[109]],[112,492,[110]],[112,493,[110]],[113,494,[111]],[113,495,[111]],[114,496,[112]],[114,497,[112]],[115,498,[113]],[115,499,[113]],[116,500,[114]],[116,501,[114]],[117,502,[115]],[117,503,[115]],[118,504,[116]],[118,505,[116]],[119,506,[117]],[119,507,[117]],[120,508,[118]],[120,509,[118]],[121,510,[119]],[121,511,[119]],[122,512,[64,67]],[122,513,[512]],[123,514,[65,66]],[123,515,[514]],[124,516,[68,71]],[124,517,[516]],[125,518,[69,70]],[125,519,[518]],[126,400,[410]],[126,520,[400]],[127,402,[408]],[127,521,[402]],[128,404,[414]],[128,522,[404]],[129,406,[412]],[129,523,[406]],[130,413,[401]],[130,524,[413]],[131,409,[405]],[131,525,[409]],[132,415,[403]],[132,526,[415]],[133,411,[407]],[133,527,[411]],[134,528,[32,35]],[134,529,[528]],[135,530,[33,34]],[135,531,[530]],[136,532,[36,39]],[136,533,[532]],[137,534,[37,38]],[137,535,[534]],[138,346,[336]],[138,536,[346]],[139,344,[338]],[139,537,[344]],[140,350,[340]],[140,538,[350]],[141,348,[342]],[141,539,[348]],[142,337,[349]],[142,540,[337]],[143,341,[345]],[143,541,[341]],[144,339,[351]],[144,542,[339]],[145,343,[347]],[145,543,[343]],[146,544,[24,27]],[146,545,[544]],[147,546,[25,26]],[147,547,[546]],[148,548,[28,31]],[148,549,[548]],[149,550,[29,30]],[149,551,[550]],[150,320,[330]],[150,552,[320]],[151,328,[322]],[151,553,[328]],[152,334,[324]],[152,554,[334]],[153,326,[332]],[153,555,[326]],[154,333,[321]],[154,556,[333]],[155,325,[329]],[155,557,[325]],[156,323,[335]],[156,558,[323]],[157,331,[327]],[157,559,[331]],[158,560,[16,19]],[158,561,[560]],[159,562,[17,18]],[159,563,[562]],[160,564,[20,23]],[160,565,[564]],[161,566,[21,22]],[161,567,[566]],[162,304,[314]],[162,568,[304]],[163,312,[306]],[163,569,[312]],[164,318,[308]],[164,570,[318]],[165,310,[316]],[165,571,[310]],[166,317,[305]],[166,572,[317]],[167,309,[313]],[167,573,[309]],[168,307,[319]],[168,574,[307]],[169,315,[311]],[169,575,[315]],[170,576,[40,43]],[170,577,[576]],[171,578,[41,42]],[171,579,[578]],[172,580,[44,47]],[172,581,[580]],[173,582,[45,46]],[173,583,[582]],[174,352,[362]],[174,584,[352]],[175,354,[360]],[175,585,[354]],[176,356,[366]],[176,586,[356]],[177,358,[364]],[177,587,[358]],[178,365,[353]],[178,588,[365]],[179,361,[357]],[179,589,[361]],[180,367,[355]],[180,590,[367]],[181,363,[359]],[181,591,[363]],[182,592,[72,75]],[182,593,[592]],[183,594,[73,74]],[183,595,[594]],[184,596,[76,79]],[184,597,[596]],[185,598,[77,78]],[185,599,[598]],[186,416,[426]],[186,600,[416]],[187,424,[418]],[187,601,[424]],[188,430,[420]],[188,602,[430]],[189,422,[428]],[189,603,[422]],[190,429,[417]],[190,604,[429]],[191,421,[425]],[191,605,[421]],[192,419,[431]],[192,606,[419]],[193,427,[423]],[193,607,[427]],[194,608,[112,115]],[194,609,[608]],[195,610,[113,114]],[195,611,[610]],[196,612,[116,119]],[196,613,[612]],[197,614,[117,118]],[197,615,[614]],[198,506,[496]],[198,616,[506]],[199,504,[498]],[199,617,[504]],[200,510,[500]],[200,618,[510]],[201,508,[502]],[201,619,[508]],[202,497,[509]],[202,620,[497]],[203,501,[505]],[203,621,[501]],[204,499,[511]],[204,622,[499]],[205,503,[507]],[205,623,[503]],[206,624,[8,11]],[206,625,[624]],[207,626,[9,10]],[207,627,[626]],[208,628,[12,15]],[208,629,[628]],[209,630,[13,14]],[209,631,[630]],[210,288,[298]],[210,632,[288]],[211,290,[296]],[211,633,[290]],[212,292,[302]],[212,634,[292]],[213,294,[300]],[213,635,[294]],[214,301,[289]],[214,636,[301]],[215,297,[293]],[215,637,[297]],[216,303,[291]],[216,638,[303]],[217,299,[295]],[217,639,[299]],[218,640,[48,51]],[218,641,[640]],[219,642,[49,50]],[219,643,[642]],[220,644,[52,55]],[220,645,[644]],[221,646,[53,54]],[221,647,[646]],[222,368,[378]],[222,648,[368]],[223,376,[370]],[223,649,[376]],[224,382,[372]],[224,650,[382]],[225,374,[380]],[225,651,[374]],[226,381,[369]],[226,652,[381]],[227,373,[377]],[227,653,[373]],[228,371,[383]],[228,654,[371]],[229,379,[375]],[229,655,[379]],[230,656,[80,83]],[230,657,[656]],[231,658,[81,82]],[231,659,[658]],[232,660,[84,87]],[232,661,[660]],[233,662,[85,86]],[233,663,[662]],[234,442,[432]],[234,664,[442]],[235,434,[440]],[235,665,[434]],[236,436,[446]],[236,666,[436]],[237,444,[438]],[237,667,[444]],[238,433,[445]],[238,668,[433]],[239,441,[437]],[239,669,[441]],[240,447,[435]],[240,670,[447]],[241,439,[443]],[241,671,[439]],[242,672,[104,107]],[242,673,[672]],[243,674,[105,106]],[243,675,[674]],[244,676,[108,111]],[244,677,[676]],[245,678,[109,110]],[245,679,[678]],[246,490,[480]],[246,680,[490]],[247,482,[488]],[247,681,[482]],[248,484,[494]],[248,682,[484]],[249,492,[486]],[249,683,[492]],[250,481,[493]],[250,684,[481]],[251,489,[485]],[251,685,[489]],[252,495,[483]],[252,686,[495]],[253,487,[491]],[253,687,[487]],[254,688,[96,99]],[254,689,[688]],[255,690,[97,98]],[255,691,[690]],[256,692,[100,103]],[256,693,[692]],[257,694,[101,102]],[257,695,[694]],[258,474,[464]],[258,696,[474]],[259,466,[472]],[259,697,[466]],[260,468,[478]],[260,698,[468]],[261,476,[470]],[261,699,[476]],[262,465,[477]],[262,700,[465]],[263,473,[469]],[263,701,[473]],[264,479,[467]],[264,702,[479]],[265,471,[475]],[265,703,[471]],[266,704,[88,91]],[266,705,[704]],[267,706,[89,90]],[267,707,[706]],[268,708,[92,95]],[268,709,[708]],[269,710,[93,94]],[269,711,[710]],[270,458,[448]],[270,712,[458]],[271,450,[456]],[271,713,[450]],[272,452,[462]],[272,714,[452]],[273,460,[454]],[273,715,[460]],[274,449,[461]],[274,716,[449]],[275,457,[453]],[275,717,[457]],[276,463,[451]],[276,718,[463]],[277,455,[459]],[277,719,[455]],[278,720,[56,59]],[278,721,[720]],[279,722,[57,58]],[279,723,[722]],[280,724,[60,63]],[280,725,[724]],[281,726,[61,62]],[281,727,[726]],[282,384,[394]],[282,728,[384]],[283,386,[392]],[283,729,[386]],[284,388,[398]],[284,730,[388]],[285,390,[396]],[285,731,[390]],[286,397,[385]],[286,732,[397]],[287,393,[389]],[287,733,[393]],[288,399,[387]],[288,734,[399]],[289,395,[391]],[289,735,[395]],[290,512,[514]],[290,736,[512]],[290,737,[512]],[291,516,[518]],[291,738,[516]],[291,739,[516]],[292,400,[402]],[292,740,[400]],[293,404,[406]],[293,741,[404]],[294,413,[409]],[294,742,[413]],[295,415,[411]],[295,743,[415]],[296,524,[526]],[296,744,[524]],[297,525,[527]],[297,745,[525]],[298,520,[522]],[298,746,[520]],[299,521,[523]],[299,747,[521]],[300,513,[517]],[300,748,[513]],[301,515,[519]],[301,749,[515]],[302,528,[530]],[302,750,[528]],[302,751,[528]],[303,532,[534]],[303,752,[532]],[303,753,[532]],[304,346,[344]],[304,754,[346]],[305,350,[348]],[305,755,[350]],[306,337,[341]],[306,756,[337]],[307,339,[343]],[307,757,[339]],[308,540,[542]],[308,758,[540]],[309,541,[543]],[309,759,[541]],[310,536,[538]],[310,760,[536]],[311,537,[539]],[311,761,[537]],[312,529,[533]],[312,762,[529]],[313,531,[535]],[313,763,[531]],[314,544,[546]],[314,764,[544]],[314,765,[544]],[315,548,[550]],[315,766,[548]],[315,767,[548]],[316,320,[328]],[316,768,[320]],[317,334,[326]],[317,769,[334]],[318,333,[325]],[318,770,[333]],[319,323,[331]],[319,771,[323]],[320,552,[554]],[320,772,[552]],[321,553,[555]],[321,773,[553]],[322,556,[558]],[322,774,[556]],[323,557,[559]],[323,775,[557]],[324,545,[549]],[324,776,[545]],[325,547,[551]],[325,777,[547]],[326,560,[562]],[326,778,[560]],[326,779,[560]],[327,564,[566]],[327,780,[564]],[327,781,[564]],[328,304,[312]],[328,782,[304]],[329,318,[310]],[329,783,[318]],[330,317,[309]],[330,784,[317]],[331,307,[315]],[331,785,[307]],[332,572,[574]],[332,786,[572]],[333,573,[575]],[333,787,[573]],[334,568,[570]],[334,788,[568]],[335,569,[571]],[335,789,[569]],[336,561,[565]],[336,790,[561]],[337,563,[567]],[337,791,[563]],[338,576,[578]],[338,792,[576]],[338,793,[576]],[339,580,[582]],[339,794,[580]],[339,795,[580]],[340,352,[354]],[340,796,[352]],[341,356,[358]],[341,797,[356]],[342,365,[361]],[342,798,[365]],[343,367,[363]],[343,799,[367]],[344,584,[586]],[344,800,[584]],[345,585,[587]],[345,801,[585]],[346,588,[590]],[346,802,[588]],[347,589,[591]],[347,803,[589]],[348,577,[581]],[348,804,[577]],[349,579,[583]],[349,805,[579]],[350,592,[594]],[350,806,[592]],[350,807,[592]],[351,596,[598]],[351,808,[596]],[351,809,[596]],[352,416,[424]],[352,810,[416]],[353,430,[422]],[353,811,[430]],[354,429,[421]],[354,812,[429]],[355,419,[427]],[355,813,[419]],[356,593,[597]],[356,814,[593]],[357,595,[599]],[357,815,[595]],[358,604,[606]],[358,816,[604]],[359,605,[607]],[359,817,[605]],[360,600,[602]],[360,818,[600]],[361,601,[603]],[361,819,[601]],[362,608,[610]],[362,820,[608]],[362,821,[608]],[363,612,[614]],[363,822,[612]],[363,823,[612]],[364,506,[504]],[364,824,[506]],[365,510,[508]],[365,825,[510]],[366,497,[501]],[366,826,[497]],[367,499,[503]],[367,827,[499]],[368,609,[613]],[368,828,[609]],[369,611,[615]],[369,829,[611]],[370,616,[618]],[370,830,[616]],[371,617,[619]],[371,831,[617]],[372,620,[622]],[372,832,[620]],[373,621,[623]],[373,833,[621]],[374,624,[626]],[374,834,[624]],[374,835,[624]],[375,628,[630]],[375,836,[628]],[375,837,[628]],[376,288,[290]],[376,838,[288]],[377,292,[294]],[377,839,[292]],[378,301,[297]],[378,840,[301]],[379,303,[299]],[379,841,[303]],[380,636,[638]],[380,842,[636]],[381,637,[639]],[381,843,[637]],[382,632,[634]],[382,844,[632]],[383,633,[635]],[383,845,[633]],[384,625,[629]],[384,846,[625]],[385,627,[631]],[385,847,[627]],[386,640,[642]],[386,848,[640]],[386,849,[640]],[387,644,[646]],[387,850,[644]],[387,851,[644]],[388,368,[376]],[388,852,[368]],[389,382,[374]],[389,853,[382]],[390,381,[373]],[390,854,[381]],[391,371,[379]],[391,855,[371]],[392,648,[650]],[392,856,[648]],[393,649,[651]],[393,857,[649]],[394,652,[654]],[394,858,[652]],[395,653,[655]],[395,859,[653]],[396,641,[645]],[396,860,[641]],[397,643,[647]],[397,861,[643]],[398,656,[658]],[398,862,[656]],[398,863,[656]],[399,660,[662]],[399,864,[660]],[399,865,[660]],[400,442,[434]],[400,866,[442]],[401,436,[444]],[401,867,[436]],[402,433,[441]],[402,868,[433]],[403,447,[439]],[403,869,[447]],[404,657,[661]],[404,870,[657]],[405,659,[663]],[405,871,[659]],[406,668,[670]],[406,872,[668]],[407,669,[671]],[407,873,[669]],[408,664,[666]],[408,874,[664]],[409,665,[667]],[409,875,[665]],[410,672,[674]],[410,876,[672]],[410,877,[672]],[411,676,[678]],[411,878,[676]],[411,879,[676]],[412,490,[482]],[412,880,[490]],[413,484,[492]],[413,881,[484]],[414,481,[489]],[414,882,[481]],[415,495,[487]],[415,883,[495]],[416,673,[677]],[416,884,[673]],[417,675,[679]],[417,885,[675]],[418,680,[682]],[418,886,[680]],[419,681,[683]],[419,887,[681]],[420,684,[686]],[420,888,[684]],[421,685,[687]],[421,889,[685]],[422,688,[690]],[422,890,[688]],[422,891,[688]],[423,692,[694]],[423,892,[692]],[423,893,[692]],[424,689,[693]],[424,894,[689]],[425,691,[695]],[425,895,[691]],[426,474,[466]],[426,896,[474]],[427,468,[476]],[427,897,[468]],[428,465,[473]],[428,898,[465]],[429,479,[471]],[429,899,[479]],[430,700,[702]],[430,900,[700]],[431,701,[703]],[431,901,[701]],[432,696,[698]],[432,902,[696]],[433,697,[699]],[433,903,[697]],[434,704,[706]],[434,904,[704]],[434,905,[704]],[435,708,[710]],[435,906,[708]],[435,907,[708]],[436,705,[709]],[436,908,[705]],[437,707,[711]],[437,909,[707]],[438,458,[450]],[438,910,[458]],[439,452,[460]],[439,911,[452]],[440,449,[457]],[440,912,[449]],[441,463,[455]],[441,913,[463]],[442,712,[714]],[442,914,[712]],[443,713,[715]],[443,915,[713]],[444,716,[718]],[444,916,[716]],[445,717,[719]],[445,917,[717]],[446,720,[722]],[446,918,[720]],[446,919,[720]],[447,724,[726]],[447,920,[724]],[447,921,[724]],[448,721,[725]],[448,922,[721]],[449,723,[727]],[449,923,[723]],[450,384,[386]],[450,924,[384]],[451,388,[390]],[451,925,[388]],[452,728,[730]],[452,926,[728]],[453,729,[731]],[453,927,[729]],[454,397,[393]],[454,928,[397]],[455,399,[395]],[455,929,[399]],[456,732,[734]],[456,930,[732]],[457,733,[735]],[457,931,[733]],[458,512,[516]],[458,406,[523]],[458,406,[512]],[458,411,[527]],[458,411,[512,0]],[458,411,[1]],[458,411,[252]],[458,411,[258]],[459,528,[532]],[459,240,[528]],[459,240,[246]],[459,240,[4]],[459,240,[5]],[460,544,[548]],[460,326,[555]],[460,326,[544]],[460,241,[544]],[460,241,[247]],[460,241,[6]],[460,241,[7]],[461,560,[564]],[461,310,[571]],[461,310,[560]],[461,315,[575]],[461,315,[560]],[461,242,[560]],[461,242,[2]],[461,242,[264]],[461,242,[276]],[462,576,[580]],[462,358,[587]],[462,358,[576]],[462,243,[576]],[462,243,[253]],[462,243,[270]],[462,243,[282]],[463,592,[596]],[463,422,[603]],[463,422,[592]],[463,427,[607]],[463,427,[592]],[463,244,[592]],[463,244,[3]],[463,244,[265]],[463,244,[283]],[464,608,[612]],[464,503,[623]],[464,503,[608]],[464,245,[608]],[464,245,[259]],[464,245,[271]],[464,245,[277]],[465,624,[628]],[465,294,[635]],[465,294,[624]],[465,299,[639]],[465,299,[624]],[465,248,[624]],[465,248,[254]],[465,248,[266]],[465,248,[284]],[466,640,[644]],[466,374,[651]],[466,374,[640]],[466,379,[655]],[466,379,[640]],[466,249,[640]],[466,249,[255]],[466,249,[272]],[466,249,[278]],[467,656,[660]],[467,439,[671]],[467,439,[656]],[467,250,[656]],[467,250,[260]],[467,250,[267]],[467,250,[279]],[468,672,[676]],[468,487,[687]],[468,487,[672]],[468,492,[683]],[468,492,[672]],[468,251,[672]],[468,251,[261]],[468,251,[273]],[468,251,[285]],[469,688,[692]],[469,471,[703]],[469,471,[688]],[469,476,[699]],[469,476,[688]],[469,256,[688]],[469,256,[262]],[469,256,[268]],[469,256,[274]],[470,704,[708]],[470,455,[719]],[470,455,[704]],[470,257,[704]],[470,257,[263]],[470,257,[280]],[470,257,[286]],[471,720,[724]],[471,390,[731]],[471,390,[720]],[471,269,[720]],[471,269,[275]],[471,269,[281]],[471,269,[287]],[472,736,[764]],[470,460,[715]],[472,460,[736]],[473,737,[750]],[469,693,[692,699,703]],[473,693,[737]],[474,738,[766]],[470,709,[708,715,719]],[474,709,[738]],[475,739,[752]],[469,694,[699,703]],[475,694,[739]],[476,400,[792]],[468,677,[676,683,687]],[476,677,[400]],[477,740,[778]],[467,444,[667]],[477,444,[740]],[478,404,[794]],[468,678,[683,687]],[478,678,[404]],[479,741,[780]],[467,661,[660,667,671]],[479,661,[741]],[480,413,[820]],[466,645,[644,651,655]],[480,645,[413]],[481,742,[806]],[465,629,[628,635,639]],[481,629,[742]],[482,415,[822]],[466,646,[651,655]],[482,646,[415]],[483,743,[808]],[465,630,[635,639]],[483,630,[743]],[484,524,[848]],[464,508,[619]],[484,508,[524]],[485,744,[834]],[463,597,[596,603,607]],[485,597,[744]],[486,525,[850]],[464,613,[612,619,623]],[486,613,[525]],[487,745,[836]],[463,598,[603,607]],[487,598,[745]],[488,520,[876]],[462,363,[591]],[488,363,[520]],[489,746,[862]],[461,565,[564,571,575]],[489,565,[746]],[490,521,[878]],[462,581,[580,587,591]],[490,581,[521]],[491,747,[864]],[461,566,[571,575]],[491,566,[747]],[492,513,[904]],[460,331,[559]],[492,331,[513]],[493,748,[890]],[459,343,[543]],[493,343,[748]],[494,515,[906]],[460,549,[548,555,559]],[494,549,[515]],[495,749,[892]],[459,348,[539]],[495,348,[749]],[496,751,[765]],[471,395,[735]],[496,395,[751]],[497,753,[767]],[471,725,[724,731,735]],[497,725,[753]],[498,346,[416]],[468,679,[683,687]],[498,679,[346]],[499,754,[304]],[466,647,[651,655]],[499,647,[754]],[500,350,[430]],[468,482,[489,674]],[500,482,[350]],[501,755,[318]],[466,373,[376,642]],[501,373,[755]],[502,337,[506]],[467,662,[667,671]],[502,662,[337]],[503,756,[352]],[465,631,[635,639]],[503,631,[756]],[504,339,[510]],[467,663,[667,671]],[504,663,[339]],[505,757,[356]],[465,290,[297,626]],[505,290,[757]],[506,540,[442]],[464,614,[619,623]],[506,614,[540]],[507,758,[288]],[462,582,[587,591]],[507,582,[758]],[508,541,[436]],[464,615,[619,623]],[508,615,[541]],[509,759,[292]],[462,583,[587,591]],[509,583,[759]],[510,536,[490]],[463,599,[603,607]],[510,599,[536]],[511,760,[368]],[461,567,[571,575]],[511,567,[760]],[512,537,[484]],[463,421,[424,594]],[512,421,[537]],[513,761,[382]],[461,309,[312,562]],[513,309,[761]],[514,529,[918]],[515,762,[689]],[458,517,[516,523,527]],[515,517,[762]],[516,531,[920]],[517,763,[691]],[458,518,[523,527]],[517,518,[763]],[518,320,[497]],[468,682,[686,674]],[518,682,[320]],[519,768,[317]],[465,634,[638,626]],[519,634,[768]],[520,334,[499]],[468,687,[489,674,676,683,686]],[520,687,[334]],[521,769,[307]],[465,639,[297,626,628,635,638]],[521,639,[769]],[522,333,[429]],[467,434,[441,658]],[522,434,[333]],[523,770,[365]],[466,650,[654,642]],[523,650,[770]],[524,323,[419]],[467,666,[670,658]],[524,666,[323]],[525,771,[367]],[466,655,[376,644,651,654]],[525,655,[771]],[526,552,[481]],[464,501,[504,610]],[526,501,[552]],[527,772,[301]],[461,570,[574,562]],[527,570,[772]],[528,553,[495]],[464,618,[622,610]],[528,618,[553]],[529,773,[303]],[461,575,[312,564,571,574]],[529,575,[773]],[530,556,[433]],[463,602,[606,594]],[530,602,[556]],[531,774,[381]],[462,354,[361,578]],[531,354,[774]],[532,557,[447]],[463,607,[424,596,603,606]],[532,607,[557]],[533,775,[371]],[462,586,[590,578]],[533,586,[775]],[534,545,[721]],[535,776,[705]],[536,547,[723]],[537,777,[707]],[538,779,[793]],[471,726,[731,735]],[538,726,[779]],[539,781,[795]],[471,727,[731,735]],[539,727,[781]],[540,782,[810]],[470,710,[715,719]],[540,710,[782]],[541,783,[811]],[470,711,[715,719]],[541,711,[783]],[542,784,[826]],[469,695,[699,703]],[542,695,[784]],[543,785,[827]],[469,466,[473,690]],[543,466,[785]],[544,572,[474]],[464,623,[504,612,619,622]],[544,623,[572]],[545,786,[636]],[460,550,[555,559]],[545,550,[786]],[546,573,[468]],[546,932,[573]],[547,787,[637]],[460,551,[555,559]],[547,551,[787]],[548,568,[458]],[548,933,[568]],[549,788,[648]],[459,533,[532,539,543]],[549,533,[788]],[550,569,[452]],[550,934,[569]],[551,789,[649]],[459,534,[539,543]],[551,534,[789]],[552,561,[384]],[553,790,[657]],[458,519,[523,527]],[553,519,[790]],[554,563,[388]],[555,791,[659]],[458,402,[409,514]],[555,402,[791]],[556,796,[824]],[470,450,[457,706]],[556,450,[796]],[557,797,[825]],[470,714,[718,706]],[557,714,[797]],[558,798,[812]],[469,698,[702,690]],[558,698,[798]],[559,799,[813]],[469,703,[473,690,692,699,702]],[559,703,[799]],[560,584,[449]],[560,935,[584]],[561,800,[632]],[459,535,[539,543]],[561,535,[800]],[562,585,[463]],[562,936,[585]],[563,801,[633]],[459,341,[344,530]],[563,341,[801]],[564,588,[465]],[564,937,[588]],[565,802,[652]],[460,325,[328,546]],[565,325,[802]],[566,589,[479]],[566,938,[589]],[567,803,[653]],[460,554,[558,546]],[567,554,[803]],[568,577,[728]],[569,804,[673]],[458,522,[526,514]],[569,522,[804]],[570,579,[729]],[571,805,[675]],[458,527,[409,514,516,523,526]],[571,527,[805]],[572,807,[821]],[471,386,[393,722]],[572,386,[807]],[573,809,[823]],[471,730,[734,722]],[573,730,[809]],[574,593,[397]],[575,814,[625]],[575,939,[814]],[576,595,[399]],[577,815,[627]],[577,940,[815]],[578,604,[700]],[462,591,[361,578,580,587,590]],[578,591,[604]],[579,816,[668]],[460,559,[328,548,555,558]],[579,559,[816]],[580,605,[701]],[580,941,[605]],[581,817,[669]],[581,942,[817]],[582,600,[712]],[582,943,[600]],[583,818,[680]],[459,538,[542,530]],[583,538,[818]],[584,601,[713]],[584,944,[601]],[585,819,[681]],[459,543,[344,532,539,542]],[585,543,[819]],[586,609,[732]],[587,828,[641]],[587,945,[828]],[588,611,[733]],[589,829,[643]],[589,946,[829]],[590,616,[716]],[590,947,[616]],[591,830,[664]],[591,948,[830]],[592,617,[717]],[592,949,[617]],[593,831,[665]],[593,950,[831]],[594,620,[696]],[594,951,[620]],[595,832,[684]],[595,952,[832]],[596,621,[697]],[596,953,[621]],[597,833,[685]],[597,954,[833]],[598,835,[849]],[471,735,[393,722,724,731,734]],[598,735,[835]],[599,837,[851]],[599,955,[837]],[600,838,[866]],[470,719,[457,706,708,715,718]],[600,719,[838]],[601,839,[867]],[601,956,[839]],[602,840,[882]],[602,957,[840]],[603,841,[883]],[603,958,[841]],[604,842,[896]],[604,959,[842]],[605,843,[897]],[605,960,[843]],[606,844,[912]],[467,671,[441,658,660,667,670]],[606,671,[844]],[607,845,[913]],[607,961,[845]],[608,846,[928]],[609,847,[929]],[610,852,[880]],[610,962,[852]],[611,853,[881]],[611,963,[853]],[612,854,[868]],[612,964,[854]],[613,855,[869]],[613,965,[855]],[614,856,[910]],[614,966,[856]],[615,857,[911]],[615,967,[857]],[616,858,[898]],[616,968,[858]],[617,859,[899]],[617,969,[859]],[618,860,[930]],[619,861,[931]],[620,863,[877]],[620,970,[863]],[621,865,[879]],[621,971,[865]],[622,870,[924]],[623,871,[925]],[624,872,[900]],[624,972,[872]],[625,873,[901]],[625,973,[873]],[626,874,[916]],[626,974,[874]],[627,875,[917]],[627,975,[875]],[628,884,[926]],[629,885,[927]],[630,886,[914]],[630,976,[886]],[631,887,[915]],[631,977,[887]],[632,888,[902]],[632,978,[888]],[633,889,[903]],[633,979,[889]],[634,891,[905]],[635,893,[907]],[636,894,[919]],[637,895,[921]],[638,908,[922]],[639,909,[923]],[640,753,[69]],[640,753,[70]],[641,837,[809]],[641,407,[837]],[642,865,[781]],[643,863,[779]],[644,835,[807]],[644,401,[835]],[645,751,[64]],[645,751,[67]],[642,412,[865]],[643,410,[863]],[646,725,[68]],[646,725,[71]],[647,955,[386]],[647,405,[955]],[648,970,[727]],[649,971,[726]],[650,735,[730]],[650,403,[735]],[651,395,[65]],[651,395,[66]],[648,414,[970]],[649,408,[971]],[652,738,[37]],[652,738,[38]],[653,839,[797]],[654,853,[783]],[654,342,[853]],[655,852,[782]],[655,336,[852]],[656,838,[796]],[657,736,[32]],[657,736,[35]],[656,349,[838]],[653,347,[839]],[658,709,[36]],[658,709,[39]],[659,956,[450]],[660,962,[711]],[660,340,[962]],[661,963,[710]],[661,338,[963]],[662,719,[714]],[663,460,[33]],[663,460,[34]],[662,351,[719]],[659,345,[956]],[664,739,[29]],[664,739,[30]],[665,855,[799]],[665,327,[855]],[666,841,[785]],[667,840,[784]],[668,854,[798]],[668,321,[854]],[669,737,[24]],[669,737,[27]],[666,332,[841]],[667,330,[840]],[670,694,[28]],[670,694,[31]],[671,965,[698]],[672,957,[466]],[672,324,[957]],[673,958,[695]],[673,322,[958]],[674,964,[703]],[675,693,[25]],[675,693,[26]],[674,335,[964]],[671,329,[965]],[676,404,[21]],[676,404,[22]],[677,843,[334]],[677,311,[843]],[678,857,[350]],[679,856,[346]],[680,842,[320]],[680,305,[842]],[681,400,[16]],[681,400,[19]],[678,316,[857]],[679,314,[856]],[682,678,[20]],[682,678,[23]],[683,960,[682]],[684,966,[482]],[684,308,[966]],[685,967,[679]],[685,306,[967]],[686,959,[687]],[687,677,[17]],[687,677,[18]],[686,319,[959]],[683,313,[960]],[688,741,[45]],[688,741,[46]],[689,859,[323]],[689,359,[859]],[690,845,[339]],[691,844,[337]],[692,858,[333]],[692,353,[858]],[693,740,[40]],[693,740,[43]],[690,364,[845]],[691,362,[844]],[694,661,[44]],[694,661,[47]],[695,969,[434]],[695,357,[969]],[696,671,[663]],[697,961,[662]],[698,968,[666]],[698,355,[968]],[699,444,[41]],[699,444,[42]],[696,366,[671]],[697,360,[961]],[700,415,[77]],[700,415,[78]],[701,873,[771]],[701,423,[873]],[702,887,[755]],[703,886,[754]],[704,872,[770]],[704,417,[872]],[705,413,[72]],[705,413,[75]],[702,428,[887]],[703,426,[886]],[706,646,[76]],[706,646,[79]],[707,973,[650]],[708,976,[373]],[708,420,[976]],[709,977,[647]],[709,418,[977]],[710,972,[655]],[711,645,[73]],[711,645,[74]],[710,431,[972]],[707,425,[973]],[712,743,[117]],[712,743,[118]],[713,889,[769]],[714,875,[757]],[714,502,[875]],[715,874,[756]],[715,496,[874]],[716,888,[768]],[717,742,[112]],[717,742,[115]],[716,509,[888]],[713,507,[889]],[718,630,[116]],[718,630,[119]],[719,979,[634]],[720,974,[290]],[720,500,[974]],[721,975,[631]],[721,498,[975]],[722,978,[639]],[723,629,[113]],[723,629,[114]],[722,511,[978]],[719,505,[979]],[724,525,[13]],[724,525,[14]],[725,573,[553]],[725,295,[573]],[726,585,[541]],[727,584,[540]],[728,572,[552]],[728,289,[572]],[729,524,[8]],[729,524,[11]],[726,300,[585]],[727,298,[584]],[730,613,[12]],[730,613,[15]],[731,932,[501]],[731,293,[932]],[732,935,[615]],[733,936,[614]],[734,623,[618]],[734,291,[623]],[735,508,[9]],[735,508,[10]],[732,302,[935]],[733,296,[936]],[736,745,[53]],[736,745,[54]],[737,589,[557]],[737,375,[589]],[738,569,[537]],[739,568,[536]],[740,588,[556]],[740,369,[588]],[741,744,[48]],[741,744,[51]],[738,380,[569]],[739,378,[568]],[742,598,[52]],[742,598,[55]],[743,938,[602]],[744,933,[421]],[744,372,[933]],[745,934,[599]],[745,370,[934]],[746,937,[607]],[747,597,[49]],[747,597,[50]],[746,383,[937]],[743,377,[938]],[748,521,[85]],[748,521,[86]],[749,605,[775]],[750,617,[759]],[750,438,[617]],[751,616,[758]],[751,432,[616]],[752,604,[774]],[753,520,[80]],[753,520,[83]],[752,445,[604]],[749,443,[605]],[754,581,[84]],[754,581,[87]],[755,941,[354]],[755,437,[941]],[756,947,[583]],[757,949,[582]],[758,591,[586]],[758,435,[591]],[759,363,[81]],[759,363,[82]],[756,446,[947]],[757,440,[949]],[760,747,[109]],[760,747,[110]],[761,621,[773]],[762,601,[761]],[762,486,[601]],[763,600,[760]],[763,480,[600]],[764,620,[772]],[765,746,[104]],[765,746,[107]],[764,493,[620]],[761,491,[621]],[766,566,[108]],[766,566,[111]],[767,953,[570]],[767,485,[953]],[768,943,[309]],[769,944,[567]],[770,951,[575]],[770,483,[951]],[771,565,[105]],[771,565,[106]],[768,494,[943]],[769,488,[944]],[772,515,[101]],[772,515,[102]],[773,817,[803]],[774,833,[787]],[774,470,[833]],[775,832,[786]],[775,464,[832]],[776,816,[802]],[777,513,[96]],[777,513,[99]],[776,477,[816]],[773,475,[817]],[778,549,[100]],[778,549,[103]],[779,942,[325]],[779,469,[942]],[780,952,[551]],[781,954,[550]],[782,559,[554]],[782,467,[559]],[783,331,[97]],[783,331,[98]],[780,478,[952]],[781,472,[954]],[784,749,[93]],[784,749,[94]],[785,831,[801]],[786,819,[789]],[786,454,[819]],[787,818,[788]],[787,448,[818]],[788,830,[800]],[789,748,[88]],[789,748,[91]],[788,461,[830]],[785,459,[831]],[790,348,[92]],[790,348,[95]],[791,950,[535]],[791,453,[950]],[792,538,[534]],[793,543,[533]],[794,948,[341]],[794,451,[948]],[795,343,[89]],[795,343,[90]],[792,462,[538]],[793,456,[543]],[796,763,[61]],[796,763,[62]],[797,829,[815]],[797,391,[829]],[798,805,[791]],[799,804,[790]],[800,828,[814]],[800,385,[828]],[801,762,[56]],[801,762,[59]],[798,396,[805]],[799,394,[804]],[802,518,[60]],[802,518,[63]],[803,946,[939]],[803,389,[946]],[804,522,[402]],[805,527,[519]],[806,945,[940]],[806,387,[945]],[807,517,[57]],[807,517,[58]],[804,398,[522]],[805,392,[527]],[808,624,[704]],[808,624,[254]],[808,624,[284]],[809,640,[672]],[809,272,[640]],[810,688,[720]],[810,919,[921,720]],[810,919,[688]],[811,576,[455]],[811,576,[253]],[811,576,[282]],[812,560,[592]],[812,264,[560]],[813,544,[390]],[813,544,[6]],[813,544,[7]],[826,422,[608]],[826,422,[3]],[826,656,[487]],[827,310,[358]],[827,310,[2]],[827,294,[374]],[818,512,[326]],[818,764,[766,326]],[818,764,[512,1]],[829,512,[0]],[830,427,[471]],[830,427,[262]],[830,427,[265]],[820,406,[528]],[830,406,[246]],[830,299,[492]],[831,528,[476]],[831,528,[4]],[831,528,[5]],[831,315,[503]],[831,315,[276]],[831,379,[439]],[1,246,[1]],[1,246,[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119]],[1,247,[1]],[1,247,[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,112,113,114,115,116,117,118,119]],[1,252,[2]],[1,252,[8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,48,49,50,51,52,53,54,55,64,65,66,67,68,69,70,71,80,81,82,83,84,85,86,87,104,105,106,107,108,109,110,111]],[1,253,[2]],[1,253,[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,64,65,66,67,68,69,70,71,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103]],[1,254,[2]],[1,254,[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,32,33,34,35,36,37,38,39,56,57,58,59,60,61,62,63,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,96,97,98,99,100,101,102,103]],[1,255,[2]],[1,255,[1,2,4,7,9,10,12,15,16,17,22,23,24,26,29,31,32,33,38,39,40,42,45,47,48,49,50,51,56,58,60,62,64,65,70,71,72,75,76,79,80,81,84,85,88,90,92,94,96,97,100,101,104,106,108,110]],[1,258,[3]],[1,258,[0,2,4,6,8,9,14,15,17,18,20,23,24,25,28,29,32,33,36,37,40,41,42,43,48,50,53,55,56,57,60,61,64,65,68,69,72,73,76,77,80,83,84,87,88,89,92,93,96,97,100,101,112,114,116,118]],[1,259,[3]],[1,259,[0,1,4,5,8,9,12,13,16,17,20,21,24,25,26,27,33,34,36,39,40,41,44,45,48,49,52,53,56,57,58,59,64,65,66,67,72,73,76,77,80,81,84,85,96,99,100,103,104,105,108,109,112,113,116,117]],[1,260,[3]],[1,260,[0,1,2,3,8,9,10,11,16,17,18,19,24,25,26,27,32,33,34,35,40,41,42,43,48,49,50,51,65,66,68,71,72,73,74,75,80,81,82,83,88,89,90,91,96,97,98,99,104,105,106,107,112,113,114,115]]],"B":[[458,127,[411]],[458,176,[411]],[458,177,[411]],[458,178,[411]],[458,179,[411]],[458,180,[411]],[458,181,[411]],[458,182,[411]],[537,183,[411]],[459,122,[240]],[459,123,[240]],[459,208,[240]],[459,209,[240]],[459,210,[240]],[459,211,[240]],[459,212,[240]],[459,213,[240]],[459,214,[240]],[536,215,[240]],[460,216,[241]],[460,217,[241]],[460,218,[241]],[460,219,[241]],[460,220,[241]],[460,221,[241]],[460,222,[241]],[516,223,[241]],[461,224,[242]],[461,225,[242]],[461,226,[242]],[461,227,[242]],[461,228,[242]],[461,229,[242]],[461,230,[242]],[570,231,[242]],[462,126,[243]],[462,200,[243]],[462,201,[243]],[462,202,[243]],[462,203,[243]],[462,204,[243]],[462,205,[243]],[462,206,[243]],[554,207,[243]],[463,168,[244]],[463,169,[244]],[463,170,[244]],[463,171,[244]],[463,172,[244]],[463,173,[244]],[463,174,[244]],[588,175,[244]],[464,121,[245]],[464,124,[245]],[464,128,[245]],[464,129,[245]],[464,130,[245]],[464,131,[245]],[464,132,[245]],[464,133,[245]],[464,134,[245]],[576,135,[245]],[465,232,[248]],[465,233,[248]],[465,234,[248]],[465,235,[248]],[465,236,[248]],[465,237,[248]],[465,238,[248]],[619,239,[248]],[466,192,[249]],[466,193,[249]],[466,194,[249]],[466,195,[249]],[466,196,[249]],[466,197,[249]],[466,198,[249]],[609,199,[249]],[467,120,[250]],[467,125,[250]],[467,160,[250]],[467,161,[250]],[467,162,[250]],[467,163,[250]],[467,164,[250]],[467,165,[250]],[467,166,[250]],[629,167,[250]],[468,136,[251]],[468,137,[251]],[468,138,[251]],[468,139,[251]],[468,140,[251]],[468,141,[251]],[468,142,[251]],[623,143,[251]],[469,144,[256]],[469,145,[256]],[469,146,[256]],[469,147,[256]],[469,148,[256]],[469,149,[256]],[469,150,[256]],[639,151,[256]],[470,152,[257]],[470,153,[257]],[470,154,[257]],[470,155,[257]],[470,156,[257]],[470,157,[257]],[470,158,[257]],[637,159,[257]],[471,184,[269]],[471,185,[269]],[471,186,[269]],[471,187,[269]],[471,188,[269]],[471,189,[269]],[471,190,[269]],[635,191,[269]],[514,217,[529]],[514,218,[529]],[514,221,[529]],[514,222,[529]],[516,216,[531]],[516,219,[531]],[516,220,[531]],[516,223,[531]],[534,209,[545]],[534,210,[545]],[534,213,[545]],[534,214,[545]],[535,177,[776]],[535,178,[776]],[535,181,[776]],[535,182,[776]],[536,208,[547]],[536,211,[547]],[536,212,[547]],[536,215,[547]],[537,176,[777]],[537,179,[777]],[537,180,[777]],[537,183,[777]],[552,201,[561]],[552,202,[561]],[552,205,[561]],[552,206,[561]],[554,200,[563]],[554,203,[563]],[554,204,[563]],[554,207,[563]],[568,225,[577]],[568,226,[577]],[568,229,[577]],[568,230,[577]],[570,224,[579]],[570,227,[579]],[570,228,[579]],[570,231,[579]],[574,129,[593]],[574,130,[593]],[574,133,[593]],[574,134,[593]],[576,128,[595]],[576,131,[595]],[576,132,[595]],[576,135,[595]],[586,169,[609]],[586,170,[609]],[586,173,[609]],[586,174,[609]],[588,168,[611]],[588,171,[611]],[588,172,[611]],[588,175,[611]],[608,193,[846]],[608,194,[846]],[608,197,[846]],[608,198,[846]],[609,192,[847]],[609,195,[847]],[609,196,[847]],[609,199,[847]],[618,233,[860]],[618,234,[860]],[618,237,[860]],[618,238,[860]],[619,232,[861]],[619,235,[861]],[619,236,[861]],[619,239,[861]],[622,137,[870]],[622,138,[870]],[622,141,[870]],[622,142,[870]],[623,136,[871]],[623,139,[871]],[623,140,[871]],[623,143,[871]],[628,161,[884]],[628,162,[884]],[628,165,[884]],[628,166,[884]],[629,160,[885]],[629,163,[885]],[629,164,[885]],[629,167,[885]],[634,185,[891]],[634,186,[891]],[634,189,[891]],[634,190,[891]],[635,184,[893]],[635,187,[893]],[635,188,[893]],[635,191,[893]],[636,153,[894]],[636,154,[894]],[636,157,[894]],[636,158,[894]],[637,152,[895]],[637,155,[895]],[637,156,[895]],[637,159,[895]],[638,145,[908]],[638,146,[908]],[638,149,[908]],[638,150,[908]],[639,144,[909]],[639,147,[909]],[639,148,[909]],[639,151,[909]],[640,184,[753]],[640,187,[753]],[645,189,[751]],[645,190,[751]],[646,185,[725]],[646,186,[725]],[651,188,[395]],[651,191,[395]],[652,152,[738]],[652,155,[738]],[657,157,[736]],[657,158,[736]],[658,153,[709]],[658,154,[709]],[663,156,[460]],[663,159,[460]],[664,144,[739]],[664,147,[739]],[669,149,[737]],[669,150,[737]],[670,145,[694]],[670,146,[694]],[675,148,[693]],[675,151,[693]],[676,136,[404]],[676,139,[404]],[681,141,[400]],[681,142,[400]],[682,137,[678]],[682,138,[678]],[687,140,[677]],[687,143,[677]],[688,160,[741]],[688,163,[741]],[693,165,[740]],[693,166,[740]],[694,161,[661]],[694,162,[661]],[699,164,[444]],[699,167,[444]],[700,192,[415]],[700,195,[415]],[705,197,[413]],[705,198,[413]],[706,193,[646]],[706,194,[646]],[711,196,[645]],[711,199,[645]],[712,232,[743]],[712,235,[743]],[717,237,[742]],[717,238,[742]],[718,233,[630]],[718,234,[630]],[723,236,[629]],[723,239,[629]],[724,128,[525]],[724,131,[525]],[729,133,[524]],[729,134,[524]],[730,129,[613]],[730,130,[613]],[735,132,[508]],[735,135,[508]],[736,168,[745]],[736,171,[745]],[741,173,[744]],[741,174,[744]],[742,169,[598]],[742,170,[598]],[747,172,[597]],[747,175,[597]],[748,200,[521]],[748,203,[521]],[753,205,[520]],[753,206,[520]],[754,201,[581]],[754,202,[581]],[759,204,[363]],[759,207,[363]],[760,224,[747]],[760,227,[747]],[765,229,[746]],[765,230,[746]],[766,225,[566]],[766,226,[566]],[771,228,[565]],[771,231,[565]],[772,216,[515]],[772,219,[515]],[777,221,[513]],[777,222,[513]],[778,217,[549]],[778,218,[549]],[783,220,[331]],[783,223,[331]],[784,208,[749]],[784,211,[749]],[789,213,[748]],[789,214,[748]],[790,209,[348]],[790,210,[348]],[795,212,[343]],[795,215,[343]],[796,176,[763]],[796,179,[763]],[801,181,[762]],[801,182,[762]],[802,177,[518]],[802,178,[518]],[807,180,[517]],[807,183,[517]],[808,120,[624]],[829,125,[624]],[811,121,[576]],[828,124,[576]],[813,122,[544]],[827,123,[544]],[830,126,[427]],[831,127,[528]],[824,120,[272,688]],[825,121,[264,919]],[826,122,[422,656]],[827,123,[310,294]],[828,124,[640,764]],[829,125,[512,560]],[830,126,[406,299]],[831,127,[379,315]],[832,128,[295,585]],[833,129,[293,935]],[834,130,[936,291]],[835,131,[584,289]],[836,132,[623,302]],[837,133,[300,572]],[838,134,[298,573]],[839,135,[932,296]],[840,136,[311,857]],[841,137,[960,308]],[842,138,[306,959]],[843,139,[856,305]],[844,140,[966,319]],[845,141,[316,842]],[846,142,[314,843]],[847,143,[967,313]],[848,144,[327,841]],[849,145,[965,324]],[850,146,[322,964]],[851,147,[840,321]],[852,148,[957,335]],[853,149,[854,332]],[854,150,[855,330]],[855,151,[958,329]],[856,152,[839,342]],[857,153,[956,340]],[858,154,[338,719]],[859,155,[336,838]],[860,156,[962,351]],[861,157,[853,349]],[862,158,[852,347]],[863,159,[963,345]],[864,160,[359,845]],[865,161,[357,671]],[866,162,[355,961]],[867,163,[844,353]],[868,164,[968,366]],[869,165,[858,364]],[870,166,[859,362]],[871,167,[360,969]],[872,168,[375,569]],[873,169,[938,372]],[874,170,[370,937]],[875,171,[568,369]],[876,172,[383,933]],[877,173,[588,380]],[878,174,[589,378]],[879,175,[377,934]],[880,176,[805,391]],[881,177,[389,522]],[882,178,[527,387]],[883,179,[804,385]],[884,180,[945,398]],[885,181,[828,396]],[886,182,[829,394]],[887,183,[946,392]],[888,184,[407,865]],[889,185,[405,970]],[890,186,[403,971]],[891,187,[863,401]],[892,188,[735,414]],[893,189,[835,412]],[894,190,[837,410]],[895,191,[408,955]],[896,192,[423,887]],[897,193,[973,420]],[898,194,[418,972]],[899,195,[886,417]],[900,196,[976,431]],[901,197,[872,428]],[902,198,[873,426]],[903,199,[977,425]],[904,200,[605,438]],[905,201,[437,947]],[906,202,[949,435]],[907,203,[432,604]],[908,204,[591,446]],[909,205,[617,445]],[910,206,[616,443]],[911,207,[941,440]],[912,208,[831,454]],[913,209,[453,538]],[914,210,[451,543]],[915,211,[448,830]],[916,212,[948,462]],[917,213,[819,461]],[918,214,[818,459]],[919,215,[456,950]],[920,216,[817,470]],[921,217,[469,952]],[922,218,[954,467]],[923,219,[464,816]],[924,220,[559,478]],[925,221,[477,833]],[926,222,[475,832]],[927,223,[942,472]],[928,224,[621,486]],[929,225,[485,943]],[930,226,[944,483]],[931,227,[480,620]],[932,228,[951,494]],[933,229,[601,493]],[934,230,[600,491]],[935,231,[953,488]],[936,232,[889,502]],[937,233,[979,500]],[938,234,[498,978]],[939,235,[496,888]],[940,236,[974,511]],[941,237,[875,509]],[942,238,[874,507]],[943,239,[975,505]]],"C":[[1,260,[0,1,2,3,8,9,10,11,16,17,18,19,24,25,26,27,32,33,34,35,40,41,42,43,48,49,50,51,65,66,68,71,72,73,74,75,80,81,82,83,88,89,90,91,96,97,98,99,104,105,106,107,112,113,114,115]],[1,260,[3]],[1,259,[0,1,4,5,8,9,12,13,16,17,20,21,24,25,26,27,33,34,36,39,40,41,44,45,48,49,52,53,56,57,58,59,64,65,66,67,72,73,76,77,80,81,84,85,96,99,100,103,104,105,108,109,112,113,116,117]],[1,259,[3]],[1,258,[0,2,4,6,8,9,14,15,17,18,20,23,24,25,28,29,32,33,36,37,40,41,42,43,48,50,53,55,56,57,60,61,64,65,68,69,72,73,76,77,80,83,84,87,88,89,92,93,96,97,100,101,112,114,116,118]],[1,258,[3]],[1,255,[1,2,4,7,9,10,12,15,16,17,22,23,24,26,29,31,32,33,38,39,40,42,45,47,48,49,50,51,56,58,60,62,64,65,70,71,72,75,76,79,80,81,84,85,88,90,92,94,96,97,100,101,104,106,108,110]],[1,255,[2]],[1,254,[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,32,33,34,35,36,37,38,39,56,57,58,59,60,61,62,63,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,96,97,98,99,100,101,102,103]],[1,254,[2]],[1,253,[8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,64,65,66,67,68,69,70,71,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103]],[1,253,[2]],[1,252,[8,9,10,11,12,13,14,15,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,48,49,50,51,52,53,54,55,64,65,66,67,68,69,70,71,80,81,82,83,84,85,86,87,104,105,106,107,108,109,110,111]],[1,252,[2]],[1,247,[16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,112,113,114,115,116,117,118,119]],[1,247,[1]],[1,246,[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119]],[1,246,[1]],[1,379,[439]],[1,315,[276]],[1,315,[503]],[1,528,[5]],[1,528,[4]],[1,528,[476]],[1,299,[492]],[1,406,[246]],[1,406,[528]],[1,427,[265]],[1,427,[262]],[1,427,[471]],[1,512,[0]],[1,764,[512,1]],[1,764,[766,326]],[1,512,[326]],[1,294,[374]],[1,310,[2]],[1,310,[358]],[1,656,[487]],[1,422,[3]],[1,422,[608]],[1,544,[7]],[1,544,[6]],[1,544,[390]],[1,264,[560]],[1,560,[592]],[1,576,[282]],[1,576,[253]],[1,576,[455]],[1,919,[688]],[1,919,[921,720]],[1,688,[720]],[1,272,[640]],[1,640,[672]],[1,624,[284]],[1,624,[254]],[1,624,[704]],[1,392,[527]],[1,398,[522]],[1,517,[58]],[1,517,[57]],[1,387,[945]],[1,945,[940]],[1,527,[519]],[1,522,[402]],[1,389,[946]],[1,946,[939]],[1,518,[63]],[1,518,[60]],[1,394,[804]],[1,396,[805]],[1,762,[59]],[1,762,[56]],[1,385,[828]],[1,828,[814]],[1,804,[790]],[1,805,[791]],[1,391,[829]],[1,829,[815]],[1,763,[62]],[1,763,[61]],[1,456,[543]],[1,462,[538]],[1,343,[90]],[1,343,[89]],[1,451,[948]],[1,948,[341]],[1,543,[533]],[1,538,[534]],[1,453,[950]],[1,950,[535]],[1,348,[95]],[1,348,[92]],[1,459,[831]],[1,461,[830]],[1,748,[91]],[1,748,[88]],[1,830,[800]],[1,448,[818]],[1,818,[788]],[1,454,[819]],[1,819,[789]],[1,831,[801]],[1,749,[94]],[1,749,[93]],[1,472,[954]],[1,478,[952]],[1,331,[98]],[1,331,[97]],[1,467,[559]],[1,559,[554]],[1,954,[550]],[1,952,[551]],[1,469,[942]],[1,942,[325]],[1,549,[103]],[1,549,[100]],[1,475,[817]],[1,477,[816]],[1,513,[99]],[1,513,[96]],[1,816,[802]],[1,464,[832]],[1,832,[786]],[1,470,[833]],[1,833,[787]],[1,817,[803]],[1,515,[102]],[1,515,[101]],[1,488,[944]],[1,494,[943]],[1,565,[106]],[1,565,[105]],[1,483,[951]],[1,951,[575]],[1,944,[567]],[1,943,[309]],[1,485,[953]],[1,953,[570]],[1,566,[111]],[1,566,[108]],[1,491,[621]],[1,493,[620]],[1,746,[107]],[1,746,[104]],[1,620,[772]],[1,480,[600]],[1,600,[760]],[1,486,[601]],[1,601,[761]],[1,621,[773]],[1,747,[110]],[1,747,[109]],[1,440,[949]],[1,446,[947]],[1,363,[82]],[1,363,[81]],[1,435,[591]],[1,591,[586]],[1,949,[582]],[1,947,[583]],[1,437,[941]],[1,941,[354]],[1,581,[87]],[1,581,[84]],[1,443,[605]],[1,445,[604]],[1,520,[83]],[1,520,[80]],[1,604,[774]],[1,432,[616]],[1,616,[758]],[1,438,[617]],[1,617,[759]],[1,605,[775]],[1,521,[86]],[1,521,[85]],[1,377,[938]],[1,383,[937]],[1,597,[50]],[1,597,[49]],[1,937,[607]],[1,370,[934]],[1,934,[599]],[1,372,[933]],[1,933,[421]],[1,938,[602]],[1,598,[55]],[1,598,[52]],[1,378,[568]],[1,380,[569]],[1,744,[51]],[1,744,[48]],[1,369,[588]],[1,588,[556]],[1,568,[536]],[1,569,[537]],[1,375,[589]],[1,589,[557]],[1,745,[54]],[1,745,[53]],[1,296,[936]],[1,302,[935]],[1,508,[10]],[1,508,[9]],[1,291,[623]],[1,623,[618]],[1,936,[614]],[1,935,[615]],[1,293,[932]],[1,932,[501]],[1,613,[15]],[1,613,[12]],[1,298,[584]],[1,300,[585]],[1,524,[11]],[1,524,[8]],[1,289,[572]],[1,572,[552]],[1,584,[540]],[1,585,[541]],[1,295,[573]],[1,573,[553]],[1,525,[14]],[1,525,[13]],[1,505,[979]],[1,511,[978]],[1,629,[114]],[1,629,[113]],[1,978,[639]],[1,498,[975]],[1,975,[631]],[1,500,[974]],[1,974,[290]],[1,979,[634]],[1,630,[119]],[1,630,[116]],[1,507,[889]],[1,509,[888]],[1,742,[115]],[1,742,[112]],[1,888,[768]],[1,496,[874]],[1,874,[756]],[1,502,[875]],[1,875,[757]],[1,889,[769]],[1,743,[118]],[1,743,[117]],[1,425,[973]],[1,431,[972]],[1,645,[74]],[1,645,[73]],[1,972,[655]],[1,418,[977]],[1,977,[647]],[1,420,[976]],[1,976,[373]],[1,973,[650]],[1,646,[79]],[1,646,[76]],[1,426,[886]],[1,428,[887]],[1,413,[75]],[1,413,[72]],[1,417,[872]],[1,872,[770]],[1,886,[754]],[1,887,[755]],[1,423,[873]],[1,873,[771]],[1,415,[78]],[1,415,[77]],[1,360,[961]],[1,366,[671]],[1,444,[42]],[1,444,[41]],[1,355,[968]],[1,968,[666]],[1,961,[662]],[1,671,[663]],[1,357,[969]],[1,969,[434]],[1,661,[47]],[1,661,[44]],[1,362,[844]],[1,364,[845]],[1,740,[43]],[1,740,[40]],[1,353,[858]],[1,858,[333]],[1,844,[337]],[1,845,[339]],[1,359,[859]],[1,859,[323]],[1,741,[46]],[1,741,[45]],[1,313,[960]],[1,319,[959]],[1,677,[18]],[1,677,[17]],[1,959,[687]],[1,306,[967]],[1,967,[679]],[1,308,[966]],[1,966,[482]],[1,960,[682]],[1,678,[23]],[1,678,[20]],[1,314,[856]],[1,316,[857]],[1,400,[19]],[1,400,[16]],[1,305,[842]],[1,842,[320]],[1,856,[346]],[1,857,[350]],[1,311,[843]],[1,843,[334]],[1,404,[22]],[1,404,[21]],[1,329,[965]],[1,335,[964]],[1,693,[26]],[1,693,[25]],[1,964,[703]],[1,322,[958]],[1,958,[695]],[1,324,[957]],[1,957,[466]],[1,965,[698]],[1,694,[31]],[1,694,[28]],[1,330,[840]],[1,332,[841]],[1,737,[27]],[1,737,[24]],[1,321,[854]],[1,854,[798]],[1,840,[784]],[1,841,[785]],[1,327,[855]],[1,855,[799]],[1,739,[30]],[1,739,[29]],[1,345,[956]],[1,351,[719]],[1,460,[34]],[1,460,[33]],[1,719,[714]],[1,338,[963]],[1,963,[710]],[1,340,[962]],[1,962,[711]],[1,956,[450]],[1,709,[39]],[1,709,[36]],[1,347,[839]],[1,349,[838]],[1,736,[35]],[1,736,[32]],[1,838,[796]],[1,336,[852]],[1,852,[782]],[1,342,[853]],[1,853,[783]],[1,839,[797]],[1,738,[38]],[1,738,[37]],[1,408,[971]],[1,414,[970]],[1,395,[66]],[1,395,[65]],[1,403,[735]],[1,735,[730]],[1,971,[726]],[1,970,[727]],[1,405,[955]],[1,955,[386]],[1,725,[71]],[1,725,[68]],[1,410,[863]],[1,412,[865]],[1,751,[67]],[1,751,[64]],[1,401,[835]],[1,835,[807]],[1,863,[779]],[1,865,[781]],[1,407,[837]],[1,837,[809]],[1,753,[70]],[1,753,[69]],[1,909,[923]],[1,908,[922]],[1,895,[921]],[1,894,[919]],[1,893,[907]],[1,891,[905]],[1,979,[889]],[1,889,[903]],[1,978,[888]],[1,888,[902]],[1,977,[887]],[1,887,[915]],[1,976,[886]],[1,886,[914]],[1,885,[927]],[1,884,[926]],[1,975,[875]],[1,875,[917]],[1,974,[874]],[1,874,[916]],[1,973,[873]],[1,873,[901]],[1,972,[872]],[1,872,[900]],[1,871,[925]],[1,870,[924]],[1,971,[865]],[1,865,[879]],[1,970,[863]],[1,863,[877]],[1,861,[931]],[1,860,[930]],[1,969,[859]],[1,859,[899]],[1,968,[858]],[1,858,[898]],[1,967,[857]],[1,857,[911]],[1,966,[856]],[1,856,[910]],[1,965,[855]],[1,855,[869]],[1,964,[854]],[1,854,[868]],[1,963,[853]],[1,853,[881]],[1,962,[852]],[1,852,[880]],[1,847,[929]],[1,846,[928]],[1,961,[845]],[1,845,[913]],[1,671,[844]],[1,671,[441,658,660,667,670]],[1,844,[912]],[1,960,[843]],[1,843,[897]],[1,959,[842]],[1,842,[896]],[1,958,[841]],[1,841,[883]],[1,957,[840]],[1,840,[882]],[1,956,[839]],[1,839,[867]],[1,719,[838]],[1,719,[457,706,708,715,718]],[1,838,[866]],[1,955,[837]],[1,837,[851]],[1,735,[835]],[1,735,[393,722,724,731,734]],[1,835,[849]],[1,954,[833]],[1,833,[685]],[1,953,[621]],[1,621,[697]],[1,952,[832]],[1,832,[684]],[1,951,[620]],[1,620,[696]],[1,950,[831]],[1,831,[665]],[1,949,[617]],[1,617,[717]],[1,948,[830]],[1,830,[664]],[1,947,[616]],[1,616,[716]],[1,946,[829]],[1,829,[643]],[1,611,[733]],[1,945,[828]],[1,828,[641]],[1,609,[732]],[1,543,[819]],[1,543,[344,532,539,542]],[1,819,[681]],[1,944,[601]],[1,601,[713]],[1,538,[818]],[1,538,[542,530]],[1,818,[680]],[1,943,[600]],[1,600,[712]],[1,942,[817]],[1,817,[669]],[1,941,[605]],[1,605,[701]],[1,559,[816]],[1,559,[328,548,555,558]],[1,816,[668]],[1,591,[604]],[1,591,[361,578,580,587,590]],[1,604,[700]],[1,940,[815]],[1,815,[627]],[1,595,[399]],[1,939,[814]],[1,814,[625]],[1,593,[397]],[1,730,[809]],[1,730,[734,722]],[1,809,[823]],[1,386,[807]],[1,386,[393,722]],[1,807,[821]],[1,527,[805]],[1,527,[409,514,516,523,526]],[1,805,[675]],[1,579,[729]],[1,522,[804]],[1,522,[526,514]],[1,804,[673]],[1,577,[728]],[1,554,[803]],[1,554,[558,546]],[1,803,[653]],[1,938,[589]],[1,589,[479]],[1,325,[802]],[1,325,[328,546]],[1,802,[652]],[1,937,[588]],[1,588,[465]],[1,341,[801]],[1,341,[344,530]],[1,801,[633]],[1,936,[585]],[1,585,[463]],[1,535,[800]],[1,535,[539,543]],[1,800,[632]],[1,935,[584]],[1,584,[449]],[1,703,[799]],[1,703,[473,690,692,699,702]],[1,799,[813]],[1,698,[798]],[1,698,[702,690]],[1,798,[812]],[1,714,[797]],[1,714,[718,706]],[1,797,[825]],[1,450,[796]],[1,450,[457,706]],[1,796,[824]],[1,402,[791]],[1,402,[409,514]],[1,791,[659]],[1,563,[388]],[1,519,[790]],[1,519,[523,527]],[1,790,[657]],[1,561,[384]],[1,534,[789]],[1,534,[539,543]],[1,789,[649]],[1,934,[569]],[1,569,[452]],[1,533,[788]],[1,533,[532,539,543]],[1,788,[648]],[1,933,[568]],[1,568,[458]],[1,551,[787]],[1,551,[555,559]],[1,787,[637]],[1,932,[573]],[1,573,[468]],[1,550,[786]],[1,550,[555,559]],[1,786,[636]],[1,623,[572]],[1,623,[504,612,619,622]],[1,572,[474]],[1,466,[785]],[1,466,[473,690]],[1,785,[827]],[1,695,[784]],[1,695,[699,703]],[1,784,[826]],[1,711,[783]],[1,711,[715,719]],[1,783,[811]],[1,710,[782]],[1,710,[715,719]],[1,782,[810]],[1,727,[781]],[1,727,[731,735]],[1,781,[795]],[1,726,[779]],[1,726,[731,735]],[1,779,[793]],[1,777,[707]],[1,547,[723]],[1,776,[705]],[1,545,[721]],[1,586,[775]],[1,586,[590,578]],[1,775,[371]],[1,607,[557]],[1,607,[424,596,603,606]],[1,557,[447]],[1,354,[774]],[1,354,[361,578]],[1,774,[381]],[1,602,[556]],[1,602,[606,594]],[1,556,[433]],[1,575,[773]],[1,575,[312,564,571,574]],[1,773,[303]],[1,618,[553]],[1,618,[622,610]],[1,553,[495]],[1,570,[772]],[1,570,[574,562]],[1,772,[301]],[1,501,[552]],[1,501,[504,610]],[1,552,[481]],[1,655,[771]],[1,655,[376,644,651,654]],[1,771,[367]],[1,666,[323]],[1,666,[670,658]],[1,323,[419]],[1,650,[770]],[1,650,[654,642]],[1,770,[365]],[1,434,[333]],[1,434,[441,658]],[1,333,[429]],[1,639,[769]],[1,639,[297,626,628,635,638]],[1,769,[307]],[1,687,[334]],[1,687,[489,674,676,683,686]],[1,334,[499]],[1,634,[768]],[1,634,[638,626]],[1,768,[317]],[1,682,[320]],[1,682,[686,674]],[1,320,[497]],[1,518,[763]],[1,518,[523,527]],[1,763,[691]],[1,531,[920]],[1,517,[762]],[1,517,[516,523,527]],[1,762,[689]],[1,529,[918]],[1,309,[761]],[1,309,[312,562]],[1,761,[382]],[1,421,[537]],[1,421,[424,594]],[1,537,[484]],[1,567,[760]],[1,567,[571,575]],[1,760,[368]],[1,599,[536]],[1,599,[603,607]],[1,536,[490]],[1,583,[759]],[1,583,[587,591]],[1,759,[292]],[1,615,[541]],[1,615,[619,623]],[1,541,[436]],[1,582,[758]],[1,582,[587,591]],[1,758,[288]],[1,614,[540]],[1,614,[619,623]],[1,540,[442]],[1,290,[757]],[1,290,[297,626]],[1,757,[356]],[1,663,[339]],[1,663,[667,671]],[1,339,[510]],[1,631,[756]],[1,631,[635,639]],[1,756,[352]],[1,662,[337]],[1,662,[667,671]],[1,337,[506]],[1,373,[755]],[1,373,[376,642]],[1,755,[318]],[1,482,[350]],[1,482,[489,674]],[1,350,[430]],[1,647,[754]],[1,647,[651,655]],[1,754,[304]],[1,679,[346]],[1,679,[683,687]],[1,346,[416]],[1,725,[753]],[1,725,[724,731,735]],[1,753,[767]],[1,395,[751]],[1,395,[735]],[1,751,[765]],[1,348,[749]],[1,348,[539]],[1,749,[892]],[1,549,[515]],[1,549,[548,555,559]],[1,515,[906]],[1,343,[748]],[1,343,[543]],[1,748,[890]],[1,331,[513]],[1,331,[559]],[1,513,[904]],[1,566,[747]],[1,566,[571,575]],[1,747,[864]],[1,581,[521]],[1,581,[580,587,591]],[1,521,[878]],[1,565,[746]],[1,565,[564,571,575]],[1,746,[862]],[1,363,[520]],[1,363,[591]],[1,520,[876]],[1,598,[745]],[1,598,[603,607]],[1,745,[836]],[1,613,[525]],[1,613,[612,619,623]],[1,525,[850]],[1,597,[744]],[1,597,[596,603,607]],[1,744,[834]],[1,508,[524]],[1,508,[619]],[1,524,[848]],[1,630,[743]],[1,630,[635,639]],[1,743,[808]],[1,646,[415]],[1,646,[651,655]],[1,415,[822]],[1,629,[742]],[1,629,[628,635,639]],[1,742,[806]],[1,645,[413]],[1,645,[644,651,655]],[1,413,[820]],[1,661,[741]],[1,661,[660,667,671]],[1,741,[780]],[1,678,[404]],[1,678,[683,687]],[1,404,[794]],[1,444,[740]],[1,444,[667]],[1,740,[778]],[1,677,[400]],[1,677,[676,683,687]],[1,400,[792]],[1,694,[739]],[1,694,[699,703]],[1,739,[752]],[1,709,[738]],[1,709,[708,715,719]],[1,738,[766]],[1,693,[737]],[1,693,[692,699,703]],[1,737,[750]],[1,460,[736]],[1,460,[715]],[1,736,[764]],[1,269,[287]],[1,269,[281]],[1,269,[275]],[1,269,[720]],[1,390,[720]],[1,390,[731]],[1,720,[724]],[1,257,[286]],[1,257,[280]],[1,257,[263]],[1,257,[704]],[1,455,[704]],[1,455,[719]],[1,704,[708]],[1,256,[274]],[1,256,[268]],[1,256,[262]],[1,256,[688]],[1,476,[688]],[1,476,[699]],[1,471,[688]],[1,471,[703]],[1,688,[692]],[1,251,[285]],[1,251,[273]],[1,251,[261]],[1,251,[672]],[1,492,[672]],[1,492,[683]],[1,487,[672]],[1,487,[687]],[1,672,[676]],[1,250,[279]],[1,250,[267]],[1,250,[260]],[1,250,[656]],[1,439,[656]],[1,439,[671]],[1,656,[660]],[1,249,[278]],[1,249,[272]],[1,249,[255]],[1,249,[640]],[1,379,[640]],[1,379,[655]],[1,374,[640]],[1,374,[651]],[1,640,[644]],[1,248,[284]],[1,248,[266]],[1,248,[254]],[1,248,[624]],[1,299,[624]],[1,299,[639]],[1,294,[624]],[1,294,[635]],[1,624,[628]],[1,245,[277]],[1,245,[271]],[1,245,[259]],[1,245,[608]],[1,503,[608]],[1,503,[623]],[1,608,[612]],[1,244,[283]],[1,244,[265]],[1,244,[3]],[1,244,[592]],[1,427,[592]],[1,427,[607]],[1,422,[592]],[1,422,[603]],[1,592,[596]],[1,243,[282]],[1,243,[270]],[1,243,[253]],[1,243,[576]],[1,358,[576]],[1,358,[587]],[1,576,[580]],[1,242,[276]],[1,242,[264]],[1,242,[2]],[1,242,[560]],[1,315,[560]],[1,315,[575]],[1,310,[560]],[1,310,[571]],[1,560,[564]],[1,241,[7]],[1,241,[6]],[1,241,[247]],[1,241,[544]],[1,326,[544]],[1,326,[555]],[1,544,[548]],[1,240,[5]],[1,240,[4]],[1,240,[246]],[1,240,[528]],[1,528,[532]],[1,411,[258]],[1,411,[252]],[1,411,[1]],[1,411,[512,0]],[1,411,[527]],[1,406,[512]],[1,406,[523]],[1,512,[516]],[1,931,[733]],[1,733,[735]],[1,930,[732]],[1,732,[734]],[1,929,[399]],[1,399,[395]],[1,928,[397]],[1,397,[393]],[1,927,[729]],[1,729,[731]],[1,926,[728]],[1,728,[730]],[1,925,[388]],[1,388,[390]],[1,924,[384]],[1,384,[386]],[1,923,[723]],[1,723,[727]],[1,922,[721]],[1,721,[725]],[1,921,[724]],[1,920,[724]],[1,724,[726]],[1,919,[720]],[1,918,[720]],[1,720,[722]],[1,917,[717]],[1,717,[719]],[1,916,[716]],[1,716,[718]],[1,915,[713]],[1,713,[715]],[1,914,[712]],[1,712,[714]],[1,913,[463]],[1,463,[455]],[1,912,[449]],[1,449,[457]],[1,911,[452]],[1,452,[460]],[1,910,[458]],[1,458,[450]],[1,909,[707]],[1,707,[711]],[1,908,[705]],[1,705,[709]],[1,907,[708]],[1,906,[708]],[1,708,[710]],[1,905,[704]],[1,904,[704]],[1,704,[706]],[1,903,[697]],[1,697,[699]],[1,902,[696]],[1,696,[698]],[1,901,[701]],[1,701,[703]],[1,900,[700]],[1,700,[702]],[1,899,[479]],[1,479,[471]],[1,898,[465]],[1,465,[473]],[1,897,[468]],[1,468,[476]],[1,896,[474]],[1,474,[466]],[1,895,[691]],[1,691,[695]],[1,894,[689]],[1,689,[693]],[1,893,[692]],[1,892,[692]],[1,692,[694]],[1,891,[688]],[1,890,[688]],[1,688,[690]],[1,889,[685]],[1,685,[687]],[1,888,[684]],[1,684,[686]],[1,887,[681]],[1,681,[683]],[1,886,[680]],[1,680,[682]],[1,885,[675]],[1,675,[679]],[1,884,[673]],[1,673,[677]],[1,883,[495]],[1,495,[487]],[1,882,[481]],[1,481,[489]],[1,881,[484]],[1,484,[492]],[1,880,[490]],[1,490,[482]],[1,879,[676]],[1,878,[676]],[1,676,[678]],[1,877,[672]],[1,876,[672]],[1,672,[674]],[1,875,[665]],[1,665,[667]],[1,874,[664]],[1,664,[666]],[1,873,[669]],[1,669,[671]],[1,872,[668]],[1,668,[670]],[1,871,[659]],[1,659,[663]],[1,870,[657]],[1,657,[661]],[1,869,[447]],[1,447,[439]],[1,868,[433]],[1,433,[441]],[1,867,[436]],[1,436,[444]],[1,866,[442]],[1,442,[434]],[1,865,[660]],[1,864,[660]],[1,660,[662]],[1,863,[656]],[1,862,[656]],[1,656,[658]],[1,861,[643]],[1,643,[647]],[1,860,[641]],[1,641,[645]],[1,859,[653]],[1,653,[655]],[1,858,[652]],[1,652,[654]],[1,857,[649]],[1,649,[651]],[1,856,[648]],[1,648,[650]],[1,855,[371]],[1,371,[379]],[1,854,[381]],[1,381,[373]],[1,853,[382]],[1,382,[374]],[1,852,[368]],[1,368,[376]],[1,851,[644]],[1,850,[644]],[1,644,[646]],[1,849,[640]],[1,848,[640]],[1,640,[642]],[1,847,[627]],[1,627,[631]],[1,846,[625]],[1,625,[629]],[1,845,[633]],[1,633,[635]],[1,844,[632]],[1,632,[634]],[1,843,[637]],[1,637,[639]],[1,842,[636]],[1,636,[638]],[1,841,[303]],[1,303,[299]],[1,840,[301]],[1,301,[297]],[1,839,[292]],[1,292,[294]],[1,838,[288]],[1,288,[290]],[1,837,[628]],[1,836,[628]],[1,628,[630]],[1,835,[624]],[1,834,[624]],[1,624,[626]],[1,833,[621]],[1,621,[623]],[1,832,[620]],[1,620,[622]],[1,831,[617]],[1,617,[619]],[1,830,[616]],[1,616,[618]],[1,829,[611]],[1,611,[615]],[1,828,[609]],[1,609,[613]],[1,827,[499]],[1,499,[503]],[1,826,[497]],[1,497,[501]],[1,825,[510]],[1,510,[508]],[1,824,[506]],[1,506,[504]],[1,823,[612]],[1,822,[612]],[1,612,[614]],[1,821,[608]],[1,820,[608]],[1,608,[610]],[1,819,[601]],[1,601,[603]],[1,818,[600]],[1,600,[602]],[1,817,[605]],[1,605,[607]],[1,816,[604]],[1,604,[606]],[1,815,[595]],[1,595,[599]],[1,814,[593]],[1,593,[597]],[1,813,[419]],[1,419,[427]],[1,812,[429]],[1,429,[421]],[1,811,[430]],[1,430,[422]],[1,810,[416]],[1,416,[424]],[1,809,[596]],[1,808,[596]],[1,596,[598]],[1,807,[592]],[1,806,[592]],[1,592,[594]],[1,805,[579]],[1,579,[583]],[1,804,[577]],[1,577,[581]],[1,803,[589]],[1,589,[591]],[1,802,[588]],[1,588,[590]],[1,801,[585]],[1,585,[587]],[1,800,[584]],[1,584,[586]],[1,799,[367]],[1,367,[363]],[1,798,[365]],[1,365,[361]],[1,797,[356]],[1,356,[358]],[1,796,[352]],[1,352,[354]],[1,795,[580]],[1,794,[580]],[1,580,[582]],[1,793,[576]],[1,792,[576]],[1,576,[578]],[1,791,[563]],[1,563,[567]],[1,790,[561]],[1,561,[565]],[1,789,[569]],[1,569,[571]],[1,788,[568]],[1,568,[570]],[1,787,[573]],[1,573,[575]],[1,786,[572]],[1,572,[574]],[1,785,[307]],[1,307,[315]],[1,784,[317]],[1,317,[309]],[1,783,[318]],[1,318,[310]],[1,782,[304]],[1,304,[312]],[1,781,[564]],[1,780,[564]],[1,564,[566]],[1,779,[560]],[1,778,[560]],[1,560,[562]],[1,777,[547]],[1,547,[551]],[1,776,[545]],[1,545,[549]],[1,775,[557]],[1,557,[559]],[1,774,[556]],[1,556,[558]],[1,773,[553]],[1,553,[555]],[1,772,[552]],[1,552,[554]],[1,771,[323]],[1,323,[331]],[1,770,[333]],[1,333,[325]],[1,769,[334]],[1,334,[326]],[1,768,[320]],[1,320,[328]],[1,767,[548]],[1,766,[548]],[1,548,[550]],[1,765,[544]],[1,764,[544]],[1,544,[546]],[1,763,[531]],[1,531,[535]],[1,762,[529]],[1,529,[533]],[1,761,[537]],[1,537,[539]],[1,760,[536]],[1,536,[538]],[1,759,[541]],[1,541,[543]],[1,758,[540]],[1,540,[542]],[1,757,[339]],[1,339,[343]],[1,756,[337]],[1,337,[341]],[1,755,[350]],[1,350,[348]],[1,754,[346]],[1,346,[344]],[1,753,[532]],[1,752,[532]],[1,532,[534]],[1,751,[528]],[1,750,[528]],[1,528,[530]],[1,749,[515]],[1,515,[519]],[1,748,[513]],[1,513,[517]],[1,747,[521]],[1,521,[523]],[1,746,[520]],[1,520,[522]],[1,745,[525]],[1,525,[527]],[1,744,[524]],[1,524,[526]],[1,743,[415]],[1,415,[411]],[1,742,[413]],[1,413,[409]],[1,741,[404]],[1,404,[406]],[1,740,[400]],[1,400,[402]],[1,739,[516]],[1,738,[516]],[1,516,[518]],[1,737,[512]],[1,736,[512]],[1,512,[514]],[1,735,[395]],[1,395,[391]],[1,734,[399]],[1,399,[387]],[1,733,[393]],[1,393,[389]],[1,732,[397]],[1,397,[385]],[1,731,[390]],[1,390,[396]],[1,730,[388]],[1,388,[398]],[1,729,[386]],[1,386,[392]],[1,728,[384]],[1,384,[394]],[1,727,[726]],[1,726,[61,62]],[1,725,[724]],[1,724,[60,63]],[1,723,[722]],[1,722,[57,58]],[1,721,[720]],[1,720,[56,59]],[1,719,[455]],[1,455,[459]],[1,718,[463]],[1,463,[451]],[1,717,[457]],[1,457,[453]],[1,716,[449]],[1,449,[461]],[1,715,[460]],[1,460,[454]],[1,714,[452]],[1,452,[462]],[1,713,[450]],[1,450,[456]],[1,712,[458]],[1,458,[448]],[1,711,[710]],[1,710,[93,94]],[1,709,[708]],[1,708,[92,95]],[1,707,[706]],[1,706,[89,90]],[1,705,[704]],[1,704,[88,91]],[1,703,[471]],[1,471,[475]],[1,702,[479]],[1,479,[467]],[1,701,[473]],[1,473,[469]],[1,700,[465]],[1,465,[477]],[1,699,[476]],[1,476,[470]],[1,698,[468]],[1,468,[478]],[1,697,[466]],[1,466,[472]],[1,696,[474]],[1,474,[464]],[1,695,[694]],[1,694,[101,102]],[1,693,[692]],[1,692,[100,103]],[1,691,[690]],[1,690,[97,98]],[1,689,[688]],[1,688,[96,99]],[1,687,[487]],[1,487,[491]],[1,686,[495]],[1,495,[483]],[1,685,[489]],[1,489,[485]],[1,684,[481]],[1,481,[493]],[1,683,[492]],[1,492,[486]],[1,682,[484]],[1,484,[494]],[1,681,[482]],[1,482,[488]],[1,680,[490]],[1,490,[480]],[1,679,[678]],[1,678,[109,110]],[1,677,[676]],[1,676,[108,111]],[1,675,[674]],[1,674,[105,106]],[1,673,[672]],[1,672,[104,107]],[1,671,[439]],[1,439,[443]],[1,670,[447]],[1,447,[435]],[1,669,[441]],[1,441,[437]],[1,668,[433]],[1,433,[445]],[1,667,[444]],[1,444,[438]],[1,666,[436]],[1,436,[446]],[1,665,[434]],[1,434,[440]],[1,664,[442]],[1,442,[432]],[1,663,[662]],[1,662,[85,86]],[1,661,[660]],[1,660,[84,87]],[1,659,[658]],[1,658,[81,82]],[1,657,[656]],[1,656,[80,83]],[1,655,[379]],[1,379,[375]],[1,654,[371]],[1,371,[383]],[1,653,[373]],[1,373,[377]],[1,652,[381]],[1,381,[369]],[1,651,[374]],[1,374,[380]],[1,650,[382]],[1,382,[372]],[1,649,[376]],[1,376,[370]],[1,648,[368]],[1,368,[378]],[1,647,[646]],[1,646,[53,54]],[1,645,[644]],[1,644,[52,55]],[1,643,[642]],[1,642,[49,50]],[1,641,[640]],[1,640,[48,51]],[1,639,[299]],[1,299,[295]],[1,638,[303]],[1,303,[291]],[1,637,[297]],[1,297,[293]],[1,636,[301]],[1,301,[289]],[1,635,[294]],[1,294,[300]],[1,634,[292]],[1,292,[302]],[1,633,[290]],[1,290,[296]],[1,632,[288]],[1,288,[298]],[1,631,[630]],[1,630,[13,14]],[1,629,[628]],[1,628,[12,15]],[1,627,[626]],[1,626,[9,10]],[1,625,[624]],[1,624,[8,11]],[1,623,[503]],[1,503,[507]],[1,622,[499]],[1,499,[511]],[1,621,[501]],[1,501,[505]],[1,620,[497]],[1,497,[509]],[1,619,[508]],[1,508,[502]],[1,618,[510]],[1,510,[500]],[1,617,[504]],[1,504,[498]],[1,616,[506]],[1,506,[496]],[1,615,[614]],[1,614,[117,118]],[1,613,[612]],[1,612,[116,119]],[1,611,[610]],[1,610,[113,114]],[1,609,[608]],[1,608,[112,115]],[1,607,[427]],[1,427,[423]],[1,606,[419]],[1,419,[431]],[1,605,[421]],[1,421,[425]],[1,604,[429]],[1,429,[417]],[1,603,[422]],[1,422,[428]],[1,602,[430]],[1,430,[420]],[1,601,[424]],[1,424,[418]],[1,600,[416]],[1,416,[426]],[1,599,[598]],[1,598,[77,78]],[1,597,[596]],[1,596,[76,79]],[1,595,[594]],[1,594,[73,74]],[1,593,[592]],[1,592,[72,75]],[1,591,[363]],[1,363,[359]],[1,590,[367]],[1,367,[355]],[1,589,[361]],[1,361,[357]],[1,588,[365]],[1,365,[353]],[1,587,[358]],[1,358,[364]],[1,586,[356]],[1,356,[366]],[1,585,[354]],[1,354,[360]],[1,584,[352]],[1,352,[362]],[1,583,[582]],[1,582,[45,46]],[1,581,[580]],[1,580,[44,47]],[1,579,[578]],[1,578,[41,42]],[1,577,[576]],[1,576,[40,43]],[1,575,[315]],[1,315,[311]],[1,574,[307]],[1,307,[319]],[1,573,[309]],[1,309,[313]],[1,572,[317]],[1,317,[305]],[1,571,[310]],[1,310,[316]],[1,570,[318]],[1,318,[308]],[1,569,[312]],[1,312,[306]],[1,568,[304]],[1,304,[314]],[1,567,[566]],[1,566,[21,22]],[1,565,[564]],[1,564,[20,23]],[1,563,[562]],[1,562,[17,18]],[1,561,[560]],[1,560,[16,19]],[1,559,[331]],[1,331,[327]],[1,558,[323]],[1,323,[335]],[1,557,[325]],[1,325,[329]],[1,556,[333]],[1,333,[321]],[1,555,[326]],[1,326,[332]],[1,554,[334]],[1,334,[324]],[1,553,[328]],[1,328,[322]],[1,552,[320]],[1,320,[330]],[1,551,[550]],[1,550,[29,30]],[1,549,[548]],[1,548,[28,31]],[1,547,[546]],[1,546,[25,26]],[1,545,[544]],[1,544,[24,27]],[1,543,[343]],[1,343,[347]],[1,542,[339]],[1,339,[351]],[1,541,[341]],[1,341,[345]],[1,540,[337]],[1,337,[349]],[1,539,[348]],[1,348,[342]],[1,538,[350]],[1,350,[340]],[1,537,[344]],[1,344,[338]],[1,536,[346]],[1,346,[336]],[1,535,[534]],[1,534,[37,38]],[1,533,[532]],[1,532,[36,39]],[1,531,[530]],[1,530,[33,34]],[1,529,[528]],[1,528,[32,35]],[1,527,[411]],[1,411,[407]],[1,526,[415]],[1,415,[403]],[1,525,[409]],[1,409,[405]],[1,524,[413]],[1,413,[401]],[1,523,[406]],[1,406,[412]],[1,522,[404]],[1,404,[414]],[1,521,[402]],[1,402,[408]],[1,520,[400]],[1,400,[410]],[1,519,[518]],[1,518,[69,70]],[1,517,[516]],[1,516,[68,71]],[1,515,[514]],[1,514,[65,66]],[1,513,[512]],[1,512,[64,67]],[1,511,[119]],[1,510,[119]],[1,509,[118]],[1,508,[118]],[1,507,[117]],[1,506,[117]],[1,505,[116]],[1,504,[116]],[1,503,[115]],[1,502,[115]],[1,501,[114]],[1,500,[114]],[1,499,[113]],[1,498,[113]],[1,497,[112]],[1,496,[112]],[1,495,[111]],[1,494,[111]],[1,493,[110]],[1,492,[110]],[1,491,[109]],[1,490,[109]],[1,489,[108]],[1,488,[108]],[1,487,[107]],[1,486,[107]],[1,485,[106]],[1,484,[106]],[1,483,[105]],[1,482,[105]],[1,481,[104]],[1,480,[104]],[1,479,[103]],[1,478,[103]],[1,477,[102]],[1,476,[102]],[1,475,[101]],[1,474,[101]],[1,473,[100]],[1,472,[100]],[1,471,[99]],[1,470,[99]],[1,469,[98]],[1,468,[98]],[1,467,[97]],[1,466,[97]],[1,465,[96]],[1,464,[96]],[1,463,[95]],[1,462,[95]],[1,461,[94]],[1,460,[94]],[1,459,[93]],[1,458,[93]],[1,457,[92]],[1,456,[92]],[1,455,[91]],[1,454,[91]],[1,453,[90]],[1,452,[90]],[1,451,[89]],[1,450,[89]],[1,449,[88]],[1,448,[88]],[1,447,[87]],[1,446,[87]],[1,445,[86]],[1,444,[86]],[1,443,[85]],[1,442,[85]],[1,441,[84]],[1,440,[84]],[1,439,[83]],[1,438,[83]],[1,437,[82]],[1,436,[82]],[1,435,[81]],[1,434,[81]],[1,433,[80]],[1,432,[80]],[1,431,[79]],[1,430,[79]],[1,429,[78]],[1,428,[78]],[1,427,[77]],[1,426,[77]],[1,425,[76]],[1,424,[76]],[1,423,[75]],[1,422,[75]],[1,421,[74]],[1,420,[74]],[1,419,[73]],[1,418,[73]],[1,417,[72]],[1,416,[72]],[1,415,[71]],[1,414,[71]],[1,413,[70]],[1,412,[70]],[1,411,[69]],[1,410,[69]],[1,409,[68]],[1,408,[68]],[1,407,[67]],[1,406,[67]],[1,405,[66]],[1,404,[66]],[1,403,[65]],[1,402,[65]],[1,401,[64]],[1,400,[64]],[1,399,[63]],[1,398,[63]],[1,397,[62]],[1,396,[62]],[1,395,[61]],[1,394,[61]],[1,393,[60]],[1,392,[60]],[1,391,[59]],[1,390,[59]],[1,389,[58]],[1,388,[58]],[1,387,[57]],[1,386,[57]],[1,385,[56]],[1,384,[56]],[1,383,[55]],[1,382,[55]],[1,381,[54]],[1,380,[54]],[1,379,[53]],[1,378,[53]],[1,377,[52]],[1,376,[52]],[1,375,[51]],[1,374,[51]],[1,373,[50]],[1,372,[50]],[1,371,[49]],[1,370,[49]],[1,369,[48]],[1,368,[48]],[1,367,[47]],[1,366,[47]],[1,365,[46]],[1,364,[46]],[1,363,[45]],[1,362,[45]],[1,361,[44]],[1,360,[44]],[1,359,[43]],[1,358,[43]],[1,357,[42]],[1,356,[42]],[1,355,[41]],[1,354,[41]],[1,353,[40]],[1,352,[40]],[1,351,[39]],[1,350,[39]],[1,349,[38]],[1,348,[38]],[1,347,[37]],[1,346,[37]],[1,345,[36]],[1,344,[36]],[1,343,[35]],[1,342,[35]],[1,341,[34]],[1,340,[34]],[1,339,[33]],[1,338,[33]],[1,337,[32]],[1,336,[32]],[1,335,[31]],[1,334,[31]],[1,333,[30]],[1,332,[30]],[1,331,[29]],[1,330,[29]],[1,329,[28]],[1,328,[28]],[1,327,[27]],[1,326,[27]],[1,325,[26]],[1,324,[26]],[1,323,[25]],[1,322,[25]],[1,321,[24]],[1,320,[24]],[1,319,[23]],[1,318,[23]],[1,317,[22]],[1,316,[22]],[1,315,[21]],[1,314,[21]],[1,313,[20]],[1,312,[20]],[1,311,[19]],[1,310,[19]],[1,309,[18]],[1,308,[18]],[1,307,[17]],[1,306,[17]],[1,305,[16]],[1,304,[16]],[1,303,[15]],[1,302,[15]],[1,301,[14]],[1,300,[14]],[1,299,[13]],[1,298,[13]],[1,297,[12]],[1,296,[12]],[1,295,[11]],[1,294,[11]],[1,293,[10]],[1,292,[10]],[1,291,[9]],[1,290,[9]],[1,289,[8]],[1,288,[8]],[1,287,[7]],[1,286,[7]],[1,285,[7]],[1,284,[7]],[1,283,[7]],[1,282,[7]],[1,281,[6]],[1,280,[6]],[1,279,[6]],[1,278,[6]],[1,277,[6]],[1,276,[6]],[1,275,[5]],[1,274,[5]],[1,273,[5]],[1,272,[5]],[1,271,[5]],[1,270,[5]],[1,269,[4]],[1,268,[4]],[1,267,[4]],[1,266,[4]],[1,265,[4]],[1,264,[4]],[1,263,[3]],[1,262,[3]],[1,261,[3]],[1,260,[3]],[1,259,[3]],[1,258,[3]],[1,257,[2]],[1,256,[2]],[1,255,[2]],[1,254,[2]],[1,253,[2]],[1,252,[2]],[1,251,[1]],[1,250,[1]],[1,249,[1]],[1,248,[1]],[1,247,[1]],[1,246,[1]],[1,245,[0]],[1,244,[0]],[1,243,[0]],[1,242,[0]],[1,241,[0]],[1,240,[0]],[1,241,[787,802,816,833]],[1,242,[746,760,773]],[1,244,[744]],[1,248,[743,768,860,889]],[1,249,[754,771,846,872,887]],[1,251,[842,857]],[1,256,[739,798,855,908]],[1,257,[782,797,839,852]],[1,261,[871,897,911]],[1,263,[738,811,825,867,881,895]],[1,266,[757,808,875,903,931]],[1,268,[752,785,813,841,869,923]],[1,269,[753,781,809,837,865,893]],[1,278,[822,915,928]],[1,280,[921]],[1,281,[767,821,849,907]],[1,283,[836]],[1,285,[794,924]],[1,286,[766]],[1,287,[795,879]],[1,736,[738,866,867,880,881]],[1,737,[739,854,855]],[1,742,[743,768,769]],[1,745,[744]],[1,747,[746]],[1,748,[788,801,818,831]],[1,749,[789,800,818,831]],[1,755,[754,770,771]],[1,756,[757,902,903,930,931]],[1,761,[760]],[1,763,[762,790,791,814,815]],[1,764,[766]],[1,765,[767,821,823]],[1,772,[773]],[1,776,[762,790,804,815,829]],[1,777,[762,791,804,815,828]],[1,778,[845,899,927]],[1,779,[751,753,781,863,865,891,893]],[1,780,[845,899,927]],[1,783,[782,796,797]],[1,784,[785,868,869,922,923]],[1,792,[794]],[1,793,[795]],[1,799,[798,854,855]],[1,803,[786,787,802]],[1,805,[790,791,804,814,815,828,829]],[1,806,[808,902,903,930,931]],[1,807,[809,863,865,891,893]],[1,810,[811,866,867,894,895]],[1,812,[750,752,813,868,869,922,923]],[1,817,[786,787,816]],[1,819,[800,801,818]],[1,820,[822]],[1,824,[825,880,881,894,895]],[1,830,[788,789,831]],[1,832,[786,787,833]],[1,834,[836]],[1,835,[751,753,837,863,865]],[1,838,[796,797,839]],[1,840,[750,752,841,868,869]],[1,843,[842]],[1,844,[845,926,927]],[1,851,[821,823,849]],[1,853,[796,797,852]],[1,856,[857]],[1,861,[768,769,860]],[1,870,[871,896,897]],[1,873,[770,771,846,847,872]],[1,874,[875,930,931]],[1,877,[879]],[1,886,[770,771,846,847,887]],[1,888,[768,769,889]],[1,898,[899,926,927]],[1,905,[821,823,907]],[1,909,[854,855,908]],[1,910,[896,897,911]],[1,914,[915]],[1,919,[921]],[1,925,[924]],[1,929,[928]],[1,933,[938]],[1,934,[938]],[1,937,[938]],[1,939,[946]],[1,940,[945]],[1,944,[943]],[1,951,[943]],[1,953,[943]],[1,958,[957]],[1,959,[960]],[1,964,[957]],[1,965,[957]],[1,966,[960]],[1,967,[960]],[1,972,[976]],[1,973,[976]],[1,974,[975]],[1,977,[976]],[1,978,[975]],[1,979,[975]]],"D":[[0,120,[246,247,250,254,260,267,272,279,284,624,626,628,630,640,642,644,646,656,658,660,662,672,674,676,678,688,690,692,694,704,706,708,710,720,722,724,726]],[0,121,[245,246,252,253,259,264,271,277,282,560,562,564,566,576,578,580,582,592,594,596,598,608,610,612,614,688,690,692,694,704,706,708,710,719,720,722,724,726,919]],[0,122,[240,253,528,530,532,534,544,546,548,550,592,594,596,598,603,608,610,612,614,656,658,660,662,672,674,676,678,687,720,722,724,726,731]],[0,123,[240,247,252,253,528,530,532,534,544,546,548,550,560,562,564,566,571,576,578,580,582,587,624,626,628,630,635,640,642,644,646,651,720,722,724,726,731]],[0,124,[245,246,253,254,259,271,277,282,512,514,516,518,544,546,548,550,576,578,580,582,608,610,612,614,640,642,644,646,672,674,676,678,704,706,708,710,719,764]],[0,125,[246,247,250,252,260,267,279,284,512,514,516,518,544,546,548,550,555,560,562,564,566,592,594,596,598,624,626,628,630,656,658,660,662,704,706,708,710]],[0,126,[243,247,254,262,265,270,282,512,514,516,518,523,528,530,532,534,576,578,580,582,592,594,596,598,607,624,626,628,630,639,672,674,676,678,683,688,690,692,694,703]],[0,127,[246,253,254,258,276,512,514,516,518,527,528,530,532,534,560,562,564,566,575,608,610,612,614,623,640,642,644,646,655,656,658,660,662,671,688,690,692,694,699]],[0,128,[245,246,255,259,271,277,295,309,311,313,315,322,326,328,332,341,343,345,347,354,358,360,364,387,391,395,399,405,407,409,411,436,438,444,446,451,455,459,463,468,470,476,478,483,487,491,495,525,527,541,543,553,555,573,575,585,587,594,595,598,599,608,610,612,614,644,646,850]],[0,129,[245,246,252,253,254,255,259,271,277,293,309,311,313,315,320,324,330,334,341,343,345,347,352,356,362,366,385,389,393,397,405,407,409,411,436,438,444,446,449,453,457,461,468,470,476,478,481,485,489,493,498,501,504,505,525,527,541,543,552,554,573,575,584,586,592,593,596,597,608,612,613,614,615,644,646,850,932,935]],[0,130,[245,246,254,255,259,271,277,291,305,307,317,319,322,326,328,332,337,339,349,351,354,358,360,364,385,389,393,397,405,407,409,411,432,434,440,442,451,455,459,463,464,466,472,474,483,487,491,495,498,500,502,503,504,507,508,510,525,527,540,542,553,555,572,574,585,587,592,593,596,597,608,613,618,619,623,644,646,850,936]],[0,131,[245,246,252,253,255,259,271,277,289,305,307,317,319,320,324,330,334,337,339,349,351,352,356,362,366,387,391,395,399,405,407,409,411,432,434,440,442,449,453,457,461,464,466,472,474,481,485,489,493,525,527,540,542,552,554,572,574,584,586,594,595,598,599,608,610,612,614,644,646,850]],[0,132,[245,246,253,255,259,271,277,302,305,307,317,319,322,326,328,332,341,343,345,347,352,356,362,366,387,391,395,399,401,403,413,415,436,438,444,446,449,453,457,461,464,466,472,474,483,487,491,495,498,500,504,510,524,526,541,543,553,555,572,574,584,586,594,595,598,599,608,614,615,618,619,640,642,848,935]],[0,133,[245,246,252,254,255,259,271,277,300,305,307,317,319,320,324,330,334,341,343,345,347,354,358,360,364,385,389,393,397,401,403,413,415,436,438,444,446,451,455,459,463,464,466,472,474,481,485,489,493,524,526,541,543,552,554,572,574,585,587,592,593,596,597,608,610,612,614,640,642,848]],[0,134,[245,246,253,254,255,259,271,277,298,309,311,313,315,322,326,328,332,337,339,349,351,352,356,362,366,385,389,393,397,401,403,413,415,432,434,440,442,449,453,457,461,468,470,476,478,483,487,491,495,524,526,540,542,553,555,573,575,584,586,592,593,596,597,608,610,612,614,640,642,848]],[0,135,[245,246,252,255,259,271,277,296,309,311,313,315,320,324,330,334,337,339,349,351,354,358,360,364,387,391,395,399,401,403,413,415,432,434,440,442,451,455,459,463,468,470,476,478,481,485,489,493,498,501,502,503,504,505,507,508,524,526,540,542,552,554,573,575,585,587,594,595,598,599,608,612,623,640,642,848,932,936]],[0,136,[246,251,258,261,273,285,293,295,297,299,311,324,326,332,334,340,342,348,350,370,374,376,380,388,390,396,398,404,406,412,414,420,422,428,430,452,454,460,462,468,470,476,478,499,503,507,511,580,582,637,639,649,651,658,659,662,663,672,674,676,678,843,925]],[0,137,[246,247,251,253,254,258,261,273,285,293,295,297,299,308,320,322,328,330,340,342,348,350,368,372,378,382,384,386,392,394,404,406,412,414,420,422,428,430,448,450,456,458,468,470,476,478,482,483,484,485,486,487,488,489,491,492,494,495,497,501,505,509,580,582,637,639,648,650,656,657,660,661,672,674,676,682,683,686,687,843,856,870,910,966]],[0,138,[246,251,254,258,261,273,285,289,291,301,303,306,324,326,332,334,336,338,344,346,370,374,376,380,384,386,392,394,404,406,412,414,416,418,424,426,452,454,460,462,464,466,472,474,483,485,486,487,489,491,492,495,499,503,507,511,580,582,636,638,649,651,656,657,660,661,672,679,683,686,687,870,959,967]],[0,139,[246,247,251,253,258,261,273,285,289,291,301,303,305,320,322,328,330,336,338,344,346,368,372,378,382,388,390,396,398,404,406,412,414,416,418,424,426,448,450,456,458,464,466,472,474,497,501,505,509,580,582,636,638,648,650,658,659,662,663,672,674,676,678,856,910,925]],[0,140,[246,251,253,258,261,273,285,289,291,301,303,319,324,326,332,334,340,342,348,350,368,372,378,382,388,390,396,398,400,402,408,410,420,422,428,430,448,450,456,458,464,466,472,474,482,483,488,495,499,503,507,511,576,578,636,638,648,650,658,659,662,663,672,674,677,678,686,792,856,910,925,959,966]],[0,141,[246,247,251,254,258,261,273,285,289,291,301,303,316,320,322,328,330,340,342,348,350,370,374,376,380,384,386,392,394,400,402,408,410,420,422,428,430,452,454,460,462,464,466,472,474,497,501,505,509,576,578,636,638,649,651,656,657,660,661,672,674,676,678,792,870]],[0,142,[246,251,253,254,258,261,273,285,293,295,297,299,314,324,326,332,334,336,338,344,346,368,372,378,382,384,386,392,394,400,402,408,410,416,418,424,426,448,450,456,458,468,470,476,478,499,503,507,511,576,578,637,639,648,650,656,657,660,661,672,674,676,678,792,843,856,870,910]],[0,143,[246,247,251,258,261,273,285,293,295,297,299,313,320,322,328,330,336,338,344,346,370,374,376,380,388,390,396,398,400,402,408,410,416,418,424,426,452,454,460,462,468,470,476,478,483,484,494,495,497,501,505,509,576,578,637,639,649,651,658,659,662,663,672,676,677,678,679,682,686,792,843,925,967]],[0,144,[246,253,254,255,256,258,262,268,274,291,295,299,303,307,311,315,319,327,355,359,363,367,371,375,379,383,419,423,427,431,435,439,443,447,483,487,491,495,499,503,507,511,516,518,532,534,688,690,692,694,706,707,710,711,722,723,726,727,799,827,883,909]],[0,145,[246,252,255,256,258,262,268,274,289,293,297,301,307,311,315,319,324,353,357,361,365,371,375,379,383,417,421,425,429,435,439,443,447,466,467,468,469,470,471,472,473,475,476,478,479,481,485,489,493,499,503,507,511,516,518,532,534,688,690,692,698,699,702,703,704,705,708,709,720,721,724,725,812,827,840,882,965]],[0,146,[246,247,255,256,258,262,268,274,291,295,299,303,305,309,313,317,322,355,359,363,367,369,373,377,381,419,423,427,431,433,437,441,445,467,469,470,471,473,475,476,479,483,487,491,495,497,501,505,509,516,518,532,534,688,695,699,702,703,704,705,708,709,720,721,724,725,784,799,826,883,958,964]],[0,147,[246,247,252,253,254,255,256,258,262,268,274,289,293,297,301,305,309,313,317,321,353,357,361,365,369,373,377,381,417,421,425,429,433,437,441,445,481,485,489,493,497,501,505,509,516,518,532,534,688,690,692,694,706,707,710,711,722,723,726,727,784,812,826,840,882,909]],[0,148,[246,252,253,254,255,256,258,262,268,274,289,293,297,301,307,311,315,319,335,355,359,363,367,369,373,377,381,419,423,427,431,433,437,441,445,466,467,472,479,481,485,489,493,499,503,507,511,512,514,528,530,688,690,693,694,702,706,707,710,711,722,723,726,727,737,799,827,840,882,909,964]],[0,149,[246,255,256,258,262,268,274,291,295,299,303,307,311,315,319,332,353,357,361,365,369,373,377,381,417,421,425,429,433,437,441,445,483,487,491,495,499,503,507,511,512,514,528,530,688,690,692,694,704,705,708,709,720,721,724,725,737,812,827,883]],[0,150,[246,247,252,255,256,258,262,268,274,289,293,297,301,305,309,313,317,330,355,359,363,367,371,375,379,383,419,423,427,431,435,439,443,447,481,485,489,493,497,501,505,509,512,514,528,530,688,690,692,694,704,705,708,709,720,721,724,725,737,784,799,826,840,882]],[0,151,[246,247,253,254,255,256,258,262,268,274,291,295,299,303,305,309,313,317,329,353,357,361,365,371,375,379,383,417,421,425,429,435,439,443,447,467,468,478,479,483,487,491,495,497,501,505,509,512,514,528,530,688,692,693,694,695,698,702,706,707,710,711,722,723,726,727,737,784,812,826,883,909,958,965]],[0,152,[246,257,259,263,280,286,292,294,300,302,308,310,316,318,342,356,358,364,366,372,374,380,382,420,422,428,430,436,438,444,446,484,486,492,494,500,502,508,510,516,518,548,550,690,691,694,695,704,706,708,710,724,726,783,853]],[0,153,[246,247,252,254,257,259,263,280,286,292,294,300,302,308,310,316,318,340,352,354,360,362,368,370,376,378,420,422,428,430,436,438,444,446,450,453,456,457,480,482,488,490,496,498,504,506,516,518,548,550,688,689,692,693,704,708,709,710,711,720,722,783,824,919,956,962]],[0,154,[246,254,257,259,263,280,286,288,290,296,298,304,306,312,314,338,356,358,364,366,372,374,380,382,416,418,424,426,432,434,440,442,452,453,454,455,457,459,460,462,484,486,492,494,500,502,508,510,516,518,548,550,688,689,692,693,704,706,709,714,715,719,720,722,810,838,853,919,963]],[0,155,[246,247,252,257,259,263,280,286,288,290,296,298,304,306,312,314,336,352,354,360,362,368,370,376,378,416,418,424,426,432,434,440,442,480,482,488,490,496,498,504,506,516,518,548,550,690,691,694,695,704,706,708,710,724,726,810,824,838]],[0,156,[246,252,257,259,263,280,286,288,290,296,298,308,310,316,318,351,356,358,364,366,368,370,376,378,420,422,428,430,432,434,440,442,452,453,457,462,480,482,488,490,500,502,508,510,512,514,544,546,690,691,694,695,704,706,710,711,714,715,724,726,736,764,783,838,962]],[0,157,[246,247,254,257,259,263,280,286,288,290,296,298,308,310,316,318,349,352,354,360,362,372,374,380,382,420,422,428,430,432,434,440,442,484,486,492,494,496,498,504,506,512,514,544,546,688,689,692,693,704,706,708,710,720,722,736,764,783,824,838,853,919]],[0,158,[246,252,254,257,259,263,280,286,292,294,300,302,304,306,312,314,347,356,358,364,366,368,370,376,378,416,418,424,426,436,438,444,446,480,482,488,490,500,502,508,510,512,514,544,546,688,689,692,693,704,706,708,710,720,722,736,764,810,919]],[0,159,[246,247,257,259,263,280,286,292,294,300,302,304,306,312,314,345,352,354,360,362,372,374,380,382,416,418,424,426,436,438,444,446,450,453,454,455,456,457,459,460,484,486,492,494,496,498,504,506,512,514,544,546,690,691,694,695,704,708,719,724,726,736,764,810,824,853,956,963]],[0,160,[246,250,252,254,255,259,260,267,279,290,294,296,300,323,327,331,335,339,343,347,351,359,373,375,377,379,386,390,392,396,404,406,412,414,419,423,427,431,451,455,459,463,467,471,475,479,500,502,508,510,564,566,633,635,653,655,656,658,660,662,674,675,678,679,729,731,741,780,859,885,913]],[0,161,[246,250,253,255,259,260,267,279,288,292,298,302,321,325,329,333,339,343,347,351,357,373,375,377,379,384,388,394,398,404,406,412,414,417,421,425,429,434,435,438,439,440,443,444,447,449,453,457,461,467,471,475,479,500,502,508,510,564,566,632,634,653,655,656,658,661,663,667,670,671,672,673,676,677,728,730,741,780,844,859,884,912,969]],[0,162,[246,247,250,255,259,260,267,279,290,294,296,300,323,327,331,335,337,341,345,349,355,369,371,381,383,384,388,394,398,404,406,412,414,419,423,427,431,435,436,446,447,451,455,459,463,465,469,473,477,496,498,504,506,564,566,633,635,652,654,656,660,661,662,666,670,672,673,676,677,728,730,741,780,858,884,898,913,961,968]],[0,163,[246,247,250,252,253,254,255,259,260,267,279,288,292,298,302,321,325,329,333,337,341,345,349,353,369,371,381,383,386,390,392,396,404,406,412,414,417,421,425,429,449,453,457,461,465,469,473,477,496,498,504,506,564,566,632,634,652,654,656,658,660,662,674,675,678,679,729,731,741,780,844,858,885,898,912]],[0,164,[246,250,252,253,254,255,259,260,267,279,288,292,298,302,323,327,331,335,339,343,347,351,366,369,371,381,383,386,390,392,396,400,402,408,410,419,423,427,431,436,437,441,446,449,453,457,461,465,469,473,477,500,502,508,510,560,562,632,634,652,654,656,658,662,663,666,667,674,675,678,679,729,731,740,778,844,858,885,898,912,968]],[0,165,[246,250,255,259,260,267,279,290,294,296,300,321,325,329,333,339,343,347,351,364,369,371,381,383,384,388,394,398,400,402,408,410,417,421,425,429,451,455,459,463,465,469,473,477,500,502,508,510,560,562,633,635,652,654,656,658,660,662,672,673,676,677,728,730,740,778,858,884,898,913]],[0,166,[246,247,250,253,255,259,260,267,279,288,292,298,302,323,327,331,335,337,341,345,349,362,373,375,377,379,384,388,394,398,400,402,408,410,419,423,427,431,449,453,457,461,467,471,475,479,496,498,504,506,560,562,632,634,653,655,656,658,660,662,672,673,676,677,728,730,740,778,844,859,884,912]],[0,167,[246,247,250,252,254,255,259,260,267,279,290,294,296,300,321,325,329,333,337,341,345,349,360,373,375,377,379,386,390,392,396,400,402,408,410,417,421,425,429,434,437,438,439,440,441,443,444,451,455,459,463,467,471,475,479,496,498,504,506,560,562,633,635,653,655,656,660,671,674,675,678,679,729,731,740,778,859,885,913,961,969]],[0,168,[244,246,247,254,258,259,265,283,306,310,312,316,325,327,329,331,338,342,344,348,357,359,361,363,375,389,391,393,395,405,407,409,411,435,439,443,447,452,454,460,462,467,471,475,479,484,486,492,494,525,527,537,539,557,559,569,571,589,591,592,594,596,598,610,611,614,615,628,630,733,735,745]],[0,169,[244,246,253,258,259,265,283,304,308,314,318,321,323,333,335,338,342,344,348,357,359,361,363,372,385,387,397,399,405,407,409,411,418,419,420,421,422,423,424,425,427,428,430,431,433,437,441,445,448,450,456,458,467,471,475,479,484,486,492,494,525,527,537,539,556,558,568,570,589,591,592,594,596,602,603,606,607,608,609,612,613,628,630,732,734,745,933]],[0,170,[244,246,252,258,259,265,283,306,310,312,316,325,327,329,331,336,340,346,350,353,355,365,367,370,385,387,397,399,405,407,409,411,418,419,422,423,424,427,428,431,435,439,443,447,452,454,460,462,465,469,473,477,480,482,488,490,525,527,536,538,557,559,569,571,588,590,592,594,599,603,606,607,608,609,612,613,628,630,732,734,745,934,937]],[0,171,[244,246,247,252,253,254,258,259,265,283,304,308,314,318,321,323,333,335,336,340,346,350,353,355,365,367,369,389,391,393,395,405,407,409,411,433,437,441,445,448,450,456,458,465,469,473,477,480,482,488,490,525,527,536,538,556,558,568,570,588,590,592,594,596,598,610,611,614,615,628,630,733,735,745]],[0,172,[244,246,247,253,254,258,259,265,283,304,308,314,318,325,327,329,331,338,342,344,348,353,355,365,367,383,389,391,393,395,401,403,413,415,419,421,425,431,435,439,443,447,448,450,456,458,465,469,473,477,484,486,492,494,524,526,537,539,557,559,568,570,588,590,592,597,598,606,610,611,614,615,624,626,733,735,834,933,937]],[0,173,[244,246,258,259,265,283,306,310,312,316,321,323,333,335,338,342,344,348,353,355,365,367,380,385,387,397,399,401,403,413,415,433,437,441,445,452,454,460,462,465,469,473,477,484,486,492,494,524,526,537,539,556,558,569,571,588,590,592,594,596,598,608,609,612,613,624,626,732,734,834]],[0,174,[244,246,252,253,258,259,265,283,304,308,314,318,325,327,329,331,336,340,346,350,357,359,361,363,378,385,387,397,399,401,403,413,415,435,439,443,447,448,450,456,458,467,471,475,479,480,482,488,490,524,526,536,538,557,559,568,570,589,591,592,594,596,598,608,609,612,613,624,626,732,734,834]],[0,175,[244,246,247,252,254,258,259,265,283,306,310,312,316,321,323,333,335,336,340,346,350,357,359,361,363,377,389,391,393,395,401,403,413,415,419,420,430,431,433,437,441,445,452,454,460,462,467,471,475,479,480,482,488,490,524,526,536,538,556,558,569,571,589,591,592,596,597,598,599,602,606,610,611,614,615,624,626,733,735,834,934]],[0,176,[246,247,253,254,255,259,391,512,514,516,518,527,530,531,534,535,546,547,550,551,562,563,566,567,578,579,582,583,594,595,598,599,610,611,614,615,626,627,630,631,642,643,646,647,658,659,662,663,674,675,678,679,690,691,694,695,706,707,710,711,763,777,805]],[0,177,[246,247,252,255,259,389,402,403,404,405,406,407,408,409,411,412,414,415,512,514,516,522,523,526,530,531,534,535,544,545,548,549,562,563,566,567,576,577,580,581,592,593,596,597,610,611,614,615,624,625,628,629,642,643,646,647,658,659,662,663,672,673,676,677,690,691,694,695,704,705,708,709,763,776,939]],[0,178,[246,255,259,387,403,405,406,407,409,411,412,415,512,519,523,526,530,531,534,535,544,545,548,549,560,561,564,565,578,579,582,583,594,595,598,599,608,609,612,613,626,627,630,631,640,641,644,645,656,657,660,661,674,675,678,679,690,691,694,695,704,705,708,709,763,776,805,940]],[0,179,[246,252,253,254,255,259,385,512,514,516,518,527,530,531,534,535,546,547,550,551,560,561,564,565,576,577,580,581,592,593,596,597,608,609,612,613,624,625,628,629,640,641,644,645,656,657,660,661,672,673,676,677,690,691,694,695,706,707,710,711,763,777]],[0,180,[246,252,253,255,259,398,402,403,404,405,406,407,408,409,411,412,414,415,512,514,516,517,522,523,526,528,529,532,533,546,547,550,551,562,563,566,567,576,577,580,581,594,595,598,599,608,609,612,613,626,627,630,631,640,641,644,645,658,659,662,663,672,673,676,677,688,689,692,693,706,707,710,711,777,940]],[0,181,[246,254,255,259,396,512,514,516,518,527,528,529,532,533,544,545,548,549,562,563,566,567,578,579,582,583,592,593,596,597,608,609,612,613,624,625,628,629,640,641,644,645,658,659,662,663,674,675,678,679,688,689,692,693,704,705,708,709,776,805]],[0,182,[246,247,252,254,255,259,394,512,514,516,518,527,528,529,532,533,544,545,548,549,560,561,564,565,576,577,580,581,594,595,598,599,610,611,614,615,626,627,630,631,642,643,646,647,656,657,660,661,672,673,676,677,688,689,692,693,704,705,708,709,776]],[0,183,[246,247,253,255,259,392,403,405,406,407,409,411,412,415,512,517,519,523,526,528,529,532,533,546,547,550,551,560,561,564,565,578,579,582,583,592,593,596,597,610,611,614,615,624,625,628,629,642,643,646,647,656,657,660,661,674,675,678,679,688,689,692,693,706,707,710,711,777,805,939]],[0,184,[246,260,269,275,281,287,407,532,534,548,550,564,566,580,582,596,598,612,614,628,630,644,646,660,662,676,678,692,694,708,710,720,722,724,726,851]],[0,185,[246,247,252,253,260,269,275,281,287,386,389,392,393,405,532,534,548,550,564,566,580,582,592,594,608,610,628,630,644,646,656,658,672,674,688,690,704,706,720,724,725,726,727,807,851,877,905,955,970]],[0,186,[246,253,260,269,275,281,287,388,389,390,391,393,395,396,398,403,532,534,548,550,560,562,576,578,596,598,612,614,624,626,640,642,660,662,676,678,688,690,704,706,720,722,725,730,731,735,779,793,835,905,971]],[0,187,[246,247,252,260,269,275,281,287,401,532,534,548,550,560,562,576,578,592,594,608,610,624,626,640,642,656,658,672,674,692,694,708,710,720,722,724,726,779,793,807,835,877]],[0,188,[246,252,260,269,275,281,287,388,389,393,398,414,528,530,544,546,564,566,580,582,596,598,612,614,624,626,640,642,656,658,672,674,692,694,708,710,720,722,726,727,730,735,765,835,877,970]],[0,189,[246,247,253,260,269,275,281,287,412,528,530,544,546,564,566,580,582,592,594,608,610,624,626,640,642,660,662,676,678,688,690,704,706,720,722,724,726,765,807,835,905]],[0,190,[246,252,253,260,269,275,281,287,410,528,530,544,546,560,562,576,578,596,598,612,614,628,630,644,646,656,658,672,674,688,690,704,706,720,722,724,726,765,779,793,851,877,905]],[0,191,[246,247,260,269,275,281,287,386,389,390,391,392,393,395,396,408,528,530,544,546,560,562,576,578,592,594,608,610,628,630,644,646,660,662,676,678,692,694,708,710,720,724,731,765,779,793,807,851,955,971]],[0,192,[246,249,252,253,260,272,278,308,310,316,318,323,327,331,335,340,342,348,350,355,359,363,367,387,391,395,399,403,407,411,415,423,437,439,441,443,450,454,456,460,469,471,473,475,482,486,488,492,612,614,626,627,630,631,640,642,644,646,669,671,681,683,701,703,713,715,755,873,901,929]],[0,193,[246,249,254,260,272,278,308,310,316,318,321,325,329,333,340,342,348,350,353,357,361,365,370,371,372,373,374,375,376,377,379,380,382,383,385,389,393,397,403,407,411,415,420,437,439,441,443,448,452,458,462,469,471,473,475,480,484,490,494,612,614,624,625,628,629,640,642,644,650,651,654,655,669,671,680,682,701,703,712,714,755,873,886,901,914,973]],[0,194,[246,249,252,253,254,260,272,278,304,306,312,314,323,327,331,335,336,338,344,346,355,359,363,367,370,371,374,375,376,379,380,383,385,389,393,397,403,407,411,415,418,433,435,445,447,450,454,456,460,465,467,477,479,482,486,488,492,612,614,624,625,628,629,640,642,647,651,654,655,668,670,681,683,700,702,713,715,900,972,977]],[0,195,[246,249,260,272,278,304,306,312,314,321,325,329,333,336,338,344,346,353,357,361,365,387,391,395,399,403,407,411,415,417,433,435,445,447,448,452,458,462,465,467,477,479,480,484,490,494,612,614,626,627,630,631,640,642,644,646,668,670,680,682,700,702,712,714,886,900,914,929]],[0,196,[246,247,249,260,272,278,308,310,316,318,323,327,331,335,340,342,348,350,355,359,363,367,371,373,377,383,387,391,395,399,401,405,409,413,431,433,435,445,447,448,452,458,462,465,467,477,479,480,484,490,494,608,610,626,627,630,631,640,645,646,654,668,670,680,682,700,702,712,714,755,820,886,900,914,929,972]],[0,197,[246,247,249,252,253,254,260,272,278,308,310,316,318,321,325,329,333,340,342,348,350,353,357,361,365,385,389,393,397,401,405,409,413,428,433,435,445,447,450,454,456,460,465,467,477,479,482,486,488,492,608,610,624,625,628,629,640,642,644,646,668,670,681,683,700,702,713,715,755,820,900]],[0,198,[246,247,249,254,260,272,278,304,306,312,314,323,327,331,335,336,338,344,346,355,359,363,367,385,389,393,397,401,405,409,413,426,437,439,441,443,448,452,458,462,469,471,473,475,480,484,490,494,608,610,624,625,628,629,640,642,644,646,669,671,680,682,701,703,712,714,820,873,886,901,914]],[0,199,[246,247,249,252,253,260,272,278,304,306,312,314,321,325,329,333,336,338,344,346,353,357,361,365,371,372,382,383,387,391,395,399,401,405,409,413,425,437,439,441,443,450,454,456,460,469,471,473,475,482,486,488,492,608,610,626,627,630,631,640,644,645,646,647,650,654,669,671,681,683,701,703,713,715,820,873,901,929,973,977]],[0,200,[243,246,247,258,260,270,282,292,294,300,302,325,327,329,331,341,343,345,347,371,375,379,383,388,390,396,398,402,406,408,412,421,423,425,427,438,453,455,457,459,469,471,473,475,498,502,504,508,521,523,541,543,557,559,562,563,566,567,576,578,580,582,605,607,617,619,676,678,701,703,717,719,759,775,878]],[0,201,[243,246,253,254,258,260,270,282,292,294,300,302,321,323,333,335,341,343,345,347,354,357,360,361,369,373,377,381,384,386,392,394,402,406,408,412,421,423,425,427,437,449,451,461,463,469,471,473,475,496,500,506,510,521,523,541,543,556,558,560,561,564,565,576,580,581,582,583,605,607,616,618,676,678,701,703,716,718,759,774,878,941,947]],[0,202,[243,246,247,254,258,260,270,282,288,290,296,298,325,327,329,331,337,339,349,351,356,357,358,359,361,363,364,366,371,375,379,383,384,386,392,394,402,406,408,412,417,419,429,431,435,453,455,457,459,465,467,477,479,498,502,504,508,521,523,540,542,557,559,560,561,564,565,576,578,581,586,587,591,604,606,617,619,676,678,700,702,717,719,758,775,878,949]],[0,203,[243,246,253,258,260,270,282,288,290,296,298,321,323,333,335,337,339,349,351,369,373,377,381,388,390,396,398,402,406,408,412,417,419,429,431,432,449,451,461,463,465,467,477,479,496,500,506,510,521,523,540,542,556,558,562,563,566,567,576,578,580,582,604,606,616,618,676,678,700,702,716,718,758,774,878]],[0,204,[243,246,252,253,258,260,270,282,292,294,300,302,325,327,329,331,341,343,345,347,356,357,361,366,371,375,379,383,388,390,396,398,400,404,410,414,417,419,429,431,446,449,451,461,463,465,467,477,479,496,500,506,510,520,522,541,543,557,559,562,563,566,567,576,578,582,583,586,591,604,606,616,618,672,674,700,702,716,718,759,775,876,947]],[0,205,[243,246,247,252,254,258,260,270,282,292,294,300,302,321,323,333,335,341,343,345,347,369,373,377,381,384,386,392,394,400,404,410,414,417,419,429,431,445,453,455,457,459,465,467,477,479,498,502,504,508,520,522,541,543,556,558,560,561,564,565,576,578,580,582,604,606,617,619,672,674,700,702,717,719,759,774,876]],[0,206,[243,246,252,253,254,258,260,270,282,288,290,296,298,325,327,329,331,337,339,349,351,371,375,379,383,384,386,392,394,400,404,410,414,421,423,425,427,443,449,451,461,463,469,471,473,475,496,500,506,510,520,522,540,542,557,559,560,561,564,565,576,578,580,582,605,607,616,618,672,674,701,703,716,718,758,775,876]],[0,207,[243,246,247,252,258,260,270,282,288,290,296,298,321,323,333,335,337,339,349,351,354,357,358,359,360,361,363,364,369,373,377,381,388,390,396,398,400,404,410,414,421,423,425,427,440,453,455,457,459,469,471,473,475,498,502,504,508,520,522,540,542,556,558,562,563,566,567,576,580,587,605,607,617,619,672,674,701,703,717,719,758,774,876,941,949]],[0,208,[240,247,252,253,254,255,258,260,290,294,296,300,306,310,312,316,354,358,360,364,370,374,376,380,418,422,424,428,434,438,440,444,454,482,486,488,492,498,502,504,508,514,515,518,519,528,530,532,534,546,547,550,551,569,571,585,587,601,603,617,619,633,635,649,651,665,667,681,683,692,694,722,723,726,727,749,819,892]],[0,209,[240,247,255,258,260,288,292,298,302,306,310,312,316,339,340,350,351,352,356,362,366,370,374,376,380,416,420,426,430,434,438,440,444,453,480,484,490,494,498,502,504,508,514,515,518,519,528,532,534,535,538,539,542,544,545,548,549,569,571,584,586,600,602,617,619,632,634,649,651,665,667,680,682,692,694,720,721,724,725,749,892,950]],[0,210,[240,252,255,258,260,290,294,296,300,304,308,314,318,339,341,345,351,354,358,360,364,368,372,378,382,418,422,424,428,432,436,442,446,451,482,486,488,492,496,500,506,510,514,515,518,519,528,533,534,539,542,544,545,548,549,568,570,585,587,601,603,616,618,633,635,648,650,664,666,681,683,692,694,720,721,724,725,749,819,830,892,948]],[0,211,[240,253,254,255,258,260,288,292,298,302,304,308,314,318,352,356,362,366,368,372,378,382,416,420,426,430,432,436,442,446,448,480,484,490,494,496,500,506,510,514,515,518,519,528,530,532,534,546,547,550,551,568,570,584,586,600,602,616,618,632,634,648,650,664,666,680,682,692,694,722,723,726,727,749,830,892]],[0,212,[240,254,255,258,260,290,294,296,300,306,310,312,316,338,339,340,341,342,343,344,345,347,348,350,351,354,358,360,364,370,374,376,380,416,420,426,430,432,436,442,446,462,480,484,490,494,496,500,506,510,512,513,516,517,528,530,532,538,539,542,546,547,550,551,569,571,585,587,600,602,616,618,633,635,649,651,664,666,680,682,688,690,722,723,726,727,748,830,890,948]],[0,213,[240,252,253,255,258,260,288,292,298,302,306,310,312,316,352,356,362,366,370,374,376,380,418,422,424,428,432,436,442,446,461,482,486,488,492,496,500,506,510,512,513,516,517,528,530,532,534,544,545,548,549,569,571,584,586,601,603,616,618,632,634,649,651,664,666,681,683,688,690,720,721,724,725,748,819,830,890]],[0,214,[240,247,253,255,258,260,290,294,296,300,304,308,314,318,354,358,360,364,368,372,378,382,416,420,426,430,434,438,440,444,459,480,484,490,494,498,502,504,508,512,513,516,517,528,530,532,534,544,545,548,549,568,570,585,587,600,602,617,619,633,635,648,650,665,667,680,682,688,690,720,721,724,725,748,890]],[0,215,[240,247,252,254,255,258,260,288,292,298,302,304,308,314,318,338,339,342,343,344,347,348,351,352,356,362,366,368,372,378,382,418,422,424,428,434,438,440,444,456,482,486,488,492,498,502,504,508,512,513,516,517,528,530,533,535,539,542,546,547,550,551,568,570,584,586,601,603,617,619,632,634,648,650,665,667,681,683,688,690,722,723,726,727,748,819,890,950]],[0,216,[241,246,252,259,260,293,295,297,299,309,311,313,315,357,359,361,363,373,375,377,379,421,423,425,427,437,439,441,443,470,485,487,489,491,501,503,505,507,514,515,518,519,530,531,534,535,544,546,548,550,573,575,589,591,605,607,621,623,637,639,653,655,669,671,685,687,708,710,724,726,803,817,906,920]],[0,217,[241,246,247,254,259,260,293,295,297,299,309,311,313,315,322,325,328,329,353,355,365,367,369,371,381,383,421,423,425,427,437,439,441,443,469,481,483,493,495,497,499,509,511,514,515,518,519,528,529,532,533,544,548,549,550,551,573,575,588,590,605,607,620,622,637,639,652,654,669,671,684,686,708,710,720,722,817,832,906,918,942,952]],[0,218,[241,246,252,254,259,260,289,291,301,303,305,307,317,319,322,324,326,327,328,331,332,334,357,359,361,363,373,375,377,379,417,419,429,431,433,435,445,447,467,485,487,489,491,501,503,505,507,514,515,518,519,528,529,532,533,544,549,554,555,559,572,574,589,591,604,606,621,623,636,638,653,655,668,670,685,687,708,710,720,722,803,906,918,954]],[0,219,[241,246,247,259,260,289,291,301,303,305,307,317,319,353,355,365,367,369,371,381,383,417,419,429,431,433,435,445,447,464,481,483,493,495,497,499,509,511,514,515,518,519,530,531,534,535,544,546,548,550,572,574,588,590,604,606,620,622,636,638,652,654,668,670,684,686,708,710,724,726,832,906,920]],[0,220,[241,246,247,253,259,260,293,295,297,299,309,311,313,315,322,324,328,334,357,359,361,363,373,375,377,379,417,419,429,431,433,435,445,447,478,481,483,493,495,497,499,509,511,512,513,516,517,530,531,534,535,544,550,551,554,559,573,575,589,591,604,606,620,622,637,639,653,655,668,670,684,686,704,706,724,726,803,832,904,920,952]],[0,221,[241,246,252,253,254,259,260,293,295,297,299,309,311,313,315,353,355,365,367,369,371,381,383,417,419,429,431,433,435,445,447,477,485,487,489,491,501,503,505,507,512,513,516,517,528,529,532,533,544,546,548,550,573,575,588,590,604,606,621,623,637,639,652,654,668,670,685,687,704,706,720,722,904,918]],[0,222,[241,246,247,253,254,259,260,289,291,301,303,305,307,317,319,357,359,361,363,373,375,377,379,421,423,425,427,437,439,441,443,475,481,483,493,495,497,499,509,511,512,513,516,517,528,529,532,533,544,546,548,550,572,574,589,591,605,607,620,622,636,638,653,655,669,671,684,686,704,706,720,722,803,817,832,904,918]],[0,223,[241,246,252,253,259,260,289,291,301,303,305,307,317,319,322,325,326,327,328,329,331,332,353,355,365,367,369,371,381,383,421,423,425,427,437,439,441,443,472,485,487,489,491,501,503,505,507,512,513,516,517,530,531,534,535,544,548,555,572,574,588,590,605,607,621,623,636,638,652,654,669,671,685,687,704,706,724,726,817,904,920,942,954]],[0,224,[242,246,247,252,253,254,255,259,260,264,276,291,295,299,303,322,326,328,332,338,342,344,348,372,374,380,382,386,390,392,396,402,406,408,412,418,422,424,428,450,454,456,460,466,470,472,476,486,501,503,505,507,521,523,537,539,553,555,560,562,564,566,578,579,582,583,601,603,621,623,660,662,697,699,713,715,729,731,747,761,864]],[0,225,[242,246,247,255,259,260,264,276,289,293,297,301,306,307,308,309,310,311,312,313,315,316,318,319,320,324,330,334,338,342,344,348,372,374,380,382,384,388,394,398,402,406,408,412,416,420,426,430,448,452,458,462,466,470,472,476,485,501,503,505,507,521,523,537,539,552,554,560,562,564,570,571,574,575,576,577,580,581,600,602,621,623,660,662,697,699,712,714,728,730,747,761,772,864,953]],[0,226,[242,246,253,255,259,260,264,276,291,295,299,303,306,307,310,311,312,315,316,319,322,326,328,332,336,340,346,350,368,370,376,378,384,388,394,398,402,406,408,412,418,422,424,428,450,454,456,460,464,468,474,478,483,497,499,509,511,521,523,536,538,553,555,560,562,567,571,574,575,576,577,580,581,601,603,620,622,660,662,696,698,713,715,728,730,747,864,944,951]],[0,227,[242,246,252,254,255,259,260,264,276,289,293,297,301,320,324,330,334,336,340,346,350,368,370,376,378,386,390,392,396,402,406,408,412,416,420,426,430,448,452,458,462,464,468,474,478,480,497,499,509,511,521,523,536,538,552,554,560,562,564,566,578,579,582,583,600,602,620,622,660,662,696,698,712,714,729,731,747,772,864]],[0,228,[242,246,254,255,259,260,264,276,291,295,299,303,307,309,313,319,322,326,328,332,338,342,344,348,372,374,380,382,386,390,392,396,400,404,410,414,416,420,426,430,448,452,458,462,464,468,474,478,494,497,499,509,511,520,522,537,539,553,555,560,565,566,574,578,579,582,583,600,602,620,622,656,658,696,698,712,714,729,731,761,862,951]],[0,229,[242,246,252,253,255,259,260,264,276,289,293,297,301,320,324,330,334,338,342,344,348,372,374,380,382,384,388,394,398,400,404,410,414,418,422,424,428,450,454,456,460,464,468,474,478,493,497,499,509,511,520,522,537,539,552,554,560,562,564,566,576,577,580,581,601,603,620,622,656,658,696,698,713,715,728,730,761,772,862]],[0,230,[242,246,247,252,255,259,260,264,276,291,295,299,303,322,326,328,332,336,340,346,350,368,370,376,378,384,388,394,398,400,404,410,414,416,420,426,430,448,452,458,462,466,470,472,476,491,501,503,505,507,520,522,536,538,553,555,560,562,564,566,576,577,580,581,600,602,621,623,656,658,697,699,712,714,728,730,862]],[0,231,[242,246,247,253,254,255,259,260,264,276,289,293,297,301,307,308,318,319,320,324,330,334,336,340,346,350,368,370,376,378,386,390,392,396,400,404,410,414,418,422,424,428,450,454,456,460,466,470,472,476,488,501,503,505,507,520,522,536,538,552,554,560,564,565,566,567,570,574,578,579,582,583,601,603,621,623,656,658,697,699,713,715,729,731,772,862,944,953]],[0,232,[246,247,248,252,253,258,259,260,266,284,307,311,315,319,324,326,332,334,339,343,347,351,356,358,364,366,389,391,393,395,403,407,411,415,434,438,440,444,453,455,457,459,466,470,472,476,485,487,489,491,502,596,598,624,626,628,630,642,643,646,647,665,667,685,687,697,699,717,719,733,735,861,917]],[0,233,[246,248,252,254,258,259,260,266,284,290,291,292,293,294,295,296,297,299,300,302,303,305,309,313,317,320,322,328,330,339,343,347,351,356,358,364,366,385,387,397,399,403,407,411,415,432,436,442,446,449,451,461,463,466,470,472,476,485,487,489,491,500,596,598,624,626,628,634,635,638,639,640,641,644,645,664,666,685,687,697,699,716,718,732,734,874,916,974,979]],[0,234,[246,248,253,254,258,259,260,266,284,291,293,294,295,297,299,300,303,307,311,315,319,324,326,332,334,337,341,345,349,352,354,360,362,385,387,397,399,403,407,411,415,434,438,440,444,453,455,457,459,464,468,474,478,481,483,493,495,498,596,598,624,631,635,638,639,640,641,644,645,665,667,684,686,696,698,717,719,732,734,756,888,917,978]],[0,235,[246,247,248,258,259,260,266,284,305,309,313,317,320,322,328,330,337,341,345,349,352,354,360,362,389,391,393,395,403,407,411,415,432,436,442,446,449,451,461,463,464,468,474,478,481,483,493,495,496,596,598,624,626,628,630,642,643,646,647,664,666,684,686,696,698,716,718,733,735,756,861,874,888,916]],[0,236,[246,248,258,259,260,266,284,290,291,296,303,307,311,315,319,324,326,332,334,339,343,347,351,356,358,364,366,389,391,393,395,401,405,409,413,432,436,442,446,449,451,461,463,464,468,474,478,481,483,493,495,511,592,594,624,626,629,630,638,642,643,646,647,664,666,684,686,696,698,716,718,733,735,742,806,861,874,888,916,974,978]],[0,237,[246,247,248,253,254,258,259,260,266,284,305,309,313,317,320,322,328,330,339,343,347,351,356,358,364,366,385,387,397,399,401,405,409,413,434,438,440,444,453,455,457,459,464,468,474,478,481,483,493,495,509,592,594,624,626,628,630,640,641,644,645,665,667,684,686,696,698,717,719,732,734,742,806,888,917]],[0,238,[246,247,248,252,254,258,259,260,266,284,307,311,315,319,324,326,332,334,337,341,345,349,352,354,360,362,385,387,397,399,401,405,409,413,432,436,442,446,449,451,461,463,466,470,472,476,485,487,489,491,507,592,594,624,626,628,630,640,641,644,645,664,666,685,687,697,699,716,718,732,734,742,756,806,874,916]],[0,239,[246,248,252,253,258,259,260,266,284,291,292,302,303,305,309,313,317,320,322,328,330,337,341,345,349,352,354,360,362,389,391,393,395,401,405,409,413,434,438,440,444,453,455,457,459,466,470,472,476,485,487,489,491,505,592,594,624,628,629,630,631,634,638,642,643,646,647,665,667,685,687,697,699,717,719,733,735,742,756,806,861,917,979]]],"R":740,"coords":"ham","final":[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,824,825,826,827,828,829,830,831,832,833,834,835,836,837,838,839,840,841,842,843,844,845,846,847,848,849,850,851,852,853,854,855,856,857,858,859,860,861,862,863,864,865,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,925,926,927,928,929,930,931,932,933,934,935,936,937,938,939,940,941,942,943,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],"form":"/2","format":"bitE8/1","frames":[[],[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],[0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12],[13],[14],[15],[16],[17],[18],[19],[20],[21],[22],[23],[24],[25],[26],[27],[28],[29],[30],[31],[32],[33],[34],[35],[36],[37],[38],[39],[40],[41],[42],[43],[44],[45],[46],[47],[48],[49],[50],[51],[52],[53],[54],[55],[56],[57],[58],[59],[60],[61],[62],[63],[64],[65],[66],[67],[68],[69],[70],[71],[72],[73],[74],[75],[76],[77],[78],[79],[80],[81],[82],[83],[84],[85],[86],[87],[88],[89],[90],[91],[92],[93],[94],[95],[96],[97],[98],[99],[100],[101],[102],[103],[104],[105],[106],[107],[108],[109],[110],[111],[112],[113],[114],[115],[116],[117],[118],[119],[64,67],[65,66],[68,71],[69,70],[64,69],[65,68],[66,71],[67,70],[64,70],[66,68],[65,71],[67,69],[32,35],[33,34],[36,39],[37,38],[32,37],[33,36],[34,39],[35,38],[32,38],[34,36],[33,39],[35,37],[24,27],[25,26],[28,31],[29,30],[24,29],[25,28],[26,31],[27,30],[24,30],[26,28],[25,31],[27,29],[16,19],[17,18],[20,23],[21,22],[16,21],[17,20],[18,23],[19,22],[16,22],[18,20],[17,23],[19,21],[40,43],[41,42],[44,47],[45,46],[40,45],[41,44],[42,47],[43,46],[40,46],[42,44],[41,47],[43,45],[72,75],[73,74],[76,79],[77,78],[72,77],[73,76],[74,79],[75,78],[72,78],[74,76],[73,79],[75,77],[112,115],[113,114],[116,119],[117,118],[112,117],[113,116],[114,119],[115,118],[112,118],[114,116],[113,119],[115,117],[8,11],[9,10],[12,15],[13,14],[8,13],[9,12],[10,15],[11,14],[8,14],[10,12],[9,15],[11,13],[48,51],[49,50],[52,55],[53,54],[48,53],[49,52],[50,55],[51,54],[48,54],[50,52],[49,55],[51,53],[80,83],[81,82],[84,87],[85,86],[80,85],[81,84],[82,87],[83,86],[80,86],[82,84],[81,87],[83,85],[104,107],[105,106],[108,111],[109,110],[104,109],[105,108],[106,111],[107,110],[104,110],[106,108],[105,111],[107,109],[96,99],[97,98],[100,103],[101,102],[96,101],[97,100],[98,103],[99,102],[96,102],[98,100],[97,103],[99,101],[88,91],[89,90],[92,95],[93,94],[88,93],[89,92],[90,95],[91,94],[88,94],[90,92],[89,95],[91,93],[56,59],[57,58],[60,63],[61,62],[56,61],[57,60],[58,63],[59,62],[56,62],[58,60],[57,63],[59,61],[2,3,64,65,66,67],[2,3,68,69,70,71],[1,3,64,65,68,69],[1,3,66,67,70,71],[1,2,64,66,68,70],[1,2,65,67,69,71],[0,3,64,65,70,71],[0,3,66,67,68,69],[0,2,64,66,69,71],[0,2,65,67,68,70],[0,1,64,67,68,71],[0,1,65,66,69,70],[4,5,32,33,34,35],[4,5,36,37,38,39],[1,5,32,33,36,37],[1,5,34,35,38,39],[1,4,32,34,36,38],[1,4,33,35,37,39],[0,5,32,33,38,39],[0,5,34,35,36,37],[0,4,32,34,37,39],[0,4,33,35,36,38],[0,1,32,35,36,39],[0,1,33,34,37,38],[6,7,24,25,26,27],[6,7,28,29,30,31],[1,7,24,25,28,29],[1,7,26,27,30,31],[1,6,24,26,28,30],[1,6,25,27,29,31],[0,6,24,26,29,31],[0,6,25,27,28,30],[0,7,24,25,30,31],[0,7,26,27,28,29],[0,1,24,27,28,31],[0,1,25,26,29,30],[4,6,16,17,18,19],[4,6,20,21,22,23],[2,6,16,17,20,21],[2,6,18,19,22,23],[2,4,16,18,20,22],[2,4,17,19,21,23],[0,6,16,17,22,23],[0,6,18,19,20,21],[0,4,16,18,21,23],[0,4,17,19,20,22],[0,2,16,19,20,23],[0,2,17,18,21,22],[5,7,40,41,42,43],[5,7,44,45,46,47],[2,7,40,41,44,45],[2,7,42,43,46,47],[2,5,40,42,44,46],[2,5,41,43,45,47],[0,5,40,42,45,47],[0,5,41,43,44,46],[0,7,40,41,46,47],[0,7,42,43,44,45],[0,2,40,43,44,47],[0,2,41,42,45,46],[4,7,72,73,74,75],[4,7,76,77,78,79],[3,7,72,73,76,77],[3,7,74,75,78,79],[3,4,72,74,76,78],[3,4,73,75,77,79],[0,3,72,75,76,79],[0,3,73,74,77,78],[0,7,72,73,78,79],[0,7,74,75,76,77],[0,4,72,74,77,79],[0,4,73,75,76,78],[5,6,112,113,114,115],[5,6,116,117,118,119],[3,6,112,113,116,117],[3,6,114,115,118,119],[3,5,112,114,116,118],[3,5,113,115,117,119],[0,3,112,115,116,119],[0,3,113,114,117,118],[0,5,112,114,117,119],[0,5,113,115,116,118],[0,6,112,113,118,119],[0,6,114,115,116,117],[4,7,8,9,10,11],[4,7,12,13,14,15],[2,7,8,9,12,13],[2,7,10,11,14,15],[2,4,8,10,12,14],[2,4,9,11,13,15],[1,7,8,9,14,15],[1,7,10,11,12,13],[1,4,8,10,13,15],[1,4,9,11,12,14],[1,2,8,11,12,15],[1,2,9,10,13,14],[5,6,48,49,50,51],[5,6,52,53,54,55],[2,6,48,49,52,53],[2,6,50,51,54,55],[2,5,48,50,52,54],[2,5,49,51,53,55],[1,5,48,50,53,55],[1,5,49,51,52,54],[1,6,48,49,54,55],[1,6,50,51,52,53],[1,2,48,51,52,55],[1,2,49,50,53,54],[4,6,80,81,82,83],[4,6,84,85,86,87],[3,6,80,81,84,85],[3,6,82,83,86,87],[3,4,80,82,84,86],[3,4,81,83,85,87],[1,3,80,83,84,87],[1,3,81,82,85,86],[1,6,80,81,86,87],[1,6,82,83,84,85],[1,4,80,82,85,87],[1,4,81,83,84,86],[5,7,104,105,106,107],[5,7,108,109,110,111],[3,7,104,105,108,109],[3,7,106,107,110,111],[3,5,104,106,108,110],[3,5,105,107,109,111],[1,3,104,107,108,111],[1,3,105,106,109,110],[1,5,104,106,109,111],[1,5,105,107,108,110],[1,7,104,105,110,111],[1,7,106,107,108,109],[4,5,96,97,98,99],[4,5,100,101,102,103],[2,3,96,99,100,103],[2,3,97,98,101,102],[3,5,96,97,100,101],[3,5,98,99,102,103],[3,4,96,98,100,102],[3,4,97,99,101,103],[2,5,96,97,102,103],[2,5,98,99,100,101],[2,4,96,98,101,103],[2,4,97,99,100,102],[6,7,88,89,90,91],[6,7,92,93,94,95],[2,3,88,91,92,95],[2,3,89,90,93,94],[3,7,88,89,92,93],[3,7,90,91,94,95],[3,6,88,90,92,94],[3,6,89,91,93,95],[2,6,88,90,93,95],[2,6,89,91,92,94],[2,7,88,89,94,95],[2,7,90,91,92,93],[6,7,56,57,58,59],[6,7,60,61,62,63],[4,5,56,59,60,63],[4,5,57,58,61,62],[5,7,56,57,60,61],[5,7,58,59,62,63],[4,6,56,58,61,63],[4,6,57,59,60,62],[5,6,56,58,60,62],[5,6,57,59,61,63],[4,7,56,57,62,63],[4,7,58,59,60,61],[0,1,2,3,64,65,66,67,68,69,70,71],[0,1,4,5,32,33,34,35,36,37,38,39],[0,1,6,7,24,25,26,27,28,29,30,31],[0,2,4,6,16,17,18,19,20,21,22,23],[0,2,5,7,40,41,42,43,44,45,46,47],[0,3,4,7,72,73,74,75,76,77,78,79],[0,3,5,6,112,113,114,115,116,117,118,119],[1,2,4,7,8,9,10,11,12,13,14,15],[1,2,5,6,48,49,50,51,52,53,54,55],[1,3,4,6,80,81,82,83,84,85,86,87],[1,3,5,7,104,105,106,107,108,109,110,111],[2,3,4,5,96,97,98,99,100,101,102,103],[2,3,6,7,88,89,90,91,92,93,94,95],[4,5,6,7,56,57,58,59,60,61,62,63],[2,3,6,7,24,25,26,27,64,65,66,67,88,89,90,91,92,93,94,95],[2,3,4,5,32,33,34,35,64,65,66,67,96,97,98,99,100,101,102,103],[2,3,6,7,28,29,30,31,68,69,70,71,88,89,90,91,92,93,94,95],[2,3,4,5,36,37,38,39,68,69,70,71,96,97,98,99,100,101,102,103],[1,3,5,7,40,41,42,43,64,65,68,69,104,105,106,107,108,109,110,111],[1,3,4,6,16,17,18,19,64,65,68,69,80,81,82,83,84,85,86,87],[1,3,5,7,44,45,46,47,66,67,70,71,104,105,106,107,108,109,110,111],[1,3,4,6,20,21,22,23,66,67,70,71,80,81,82,83,84,85,86,87],[1,2,5,6,48,49,50,51,52,53,54,55,64,66,68,70,112,113,114,115],[1,2,4,7,8,9,10,11,12,13,14,15,64,66,68,70,72,73,74,75],[1,2,5,6,48,49,50,51,52,53,54,55,65,67,69,71,116,117,118,119],[1,2,4,7,8,9,10,11,12,13,14,15,65,67,69,71,76,77,78,79],[0,3,5,6,48,49,50,51,64,65,70,71,112,113,114,115,116,117,118,119],[0,3,4,7,8,9,10,11,64,65,70,71,72,73,74,75,76,77,78,79],[0,3,5,6,52,53,54,55,66,67,68,69,112,113,114,115,116,117,118,119],[0,3,4,7,12,13,14,15,66,67,68,69,72,73,74,75,76,77,78,79],[0,2,5,7,40,41,42,43,44,45,46,47,64,66,69,71,104,105,106,107],[0,2,4,6,16,17,18,19,20,21,22,23,64,66,69,71,80,81,82,83],[0,2,5,7,40,41,42,43,44,45,46,47,65,67,68,70,108,109,110,111],[0,2,4,6,16,17,18,19,20,21,22,23,65,67,68,70,84,85,86,87],[0,1,6,7,24,25,26,27,28,29,30,31,64,67,68,71,88,89,90,91],[0,1,4,5,32,33,34,35,36,37,38,39,64,67,68,71,96,97,98,99],[0,1,6,7,24,25,26,27,28,29,30,31,65,66,69,70,92,93,94,95],[0,1,4,5,32,33,34,35,36,37,38,39,65,66,69,70,100,101,102,103],[4,5,6,7,24,25,26,27,32,33,34,35,56,57,58,59,60,61,62,63],[4,5,6,7,28,29,30,31,36,37,38,39,56,57,58,59,60,61,62,63],[1,3,5,7,32,33,36,37,72,73,76,77,104,105,106,107,108,109,110,111],[1,2,5,6,16,17,20,21,32,33,36,37,48,49,50,51,52,53,54,55],[1,3,5,7,34,35,38,39,74,75,78,79,104,105,106,107,108,109,110,111],[1,2,5,6,18,19,22,23,34,35,38,39,48,49,50,51,52,53,54,55],[1,3,4,6,32,34,36,38,80,81,82,83,84,85,86,87,112,113,116,117],[1,2,4,7,8,9,10,11,12,13,14,15,32,34,36,38,40,41,44,45],[1,3,4,6,33,35,37,39,80,81,82,83,84,85,86,87,114,115,118,119],[1,2,4,7,8,9,10,11,12,13,14,15,33,35,37,39,42,43,46,47],[0,3,5,6,32,33,38,39,80,81,84,85,112,113,114,115,116,117,118,119],[0,2,5,7,8,9,12,13,32,33,38,39,40,41,42,43,44,45,46,47],[0,3,5,6,34,35,36,37,82,83,86,87,112,113,114,115,116,117,118,119],[0,2,5,7,10,11,14,15,34,35,36,37,40,41,42,43,44,45,46,47],[0,3,4,7,32,34,37,39,72,73,74,75,76,77,78,79,104,105,108,109],[0,2,4,6,16,17,18,19,20,21,22,23,32,34,37,39,48,49,52,53],[0,3,4,7,33,35,36,38,72,73,74,75,76,77,78,79,106,107,110,111],[0,2,4,6,16,17,18,19,20,21,22,23,33,35,36,38,50,51,54,55],[0,1,6,7,24,25,26,27,28,29,30,31,32,35,36,39,56,57,58,59],[0,1,2,3,32,35,36,39,64,65,66,67,68,69,70,71,96,99,100,103],[0,1,6,7,24,25,26,27,28,29,30,31,33,34,37,38,60,61,62,63],[0,1,2,3,33,34,37,38,64,65,66,67,68,69,70,71,97,98,101,102],[1,3,5,7,24,25,28,29,104,105,106,107,108,109,110,111,112,114,116,118],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29],[1,3,5,7,26,27,30,31,104,105,106,107,108,109,110,111,113,115,117,119],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31],[1,3,4,6,24,26,28,30,72,74,76,78,80,81,82,83,84,85,86,87],[1,2,5,6,24,26,28,30,40,42,44,46,48,49,50,51,52,53,54,55],[1,3,4,6,25,27,29,31,73,75,77,79,80,81,82,83,84,85,86,87],[1,2,5,6,25,27,29,31,41,43,45,47,48,49,50,51,52,53,54,55],[0,3,5,6,24,26,29,31,104,106,108,110,112,113,114,115,116,117,118,119],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31],[0,3,5,6,25,27,28,30,105,107,109,111,112,113,114,115,116,117,118,119],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30],[0,3,4,7,24,25,30,31,72,73,74,75,76,77,78,79,80,82,84,86],[0,2,5,7,24,25,30,31,40,41,42,43,44,45,46,47,48,50,52,54],[0,3,4,7,26,27,28,29,72,73,74,75,76,77,78,79,81,83,85,87],[0,2,5,7,26,27,28,29,40,41,42,43,44,45,46,47,49,51,53,55],[0,1,4,5,24,27,28,31,32,33,34,35,36,37,38,39,56,59,60,63],[0,1,2,3,24,27,28,31,64,65,66,67,68,69,70,71,88,91,92,95],[0,1,4,5,25,26,29,30,32,33,34,35,36,37,38,39,57,58,61,62],[0,1,2,3,25,26,29,30,64,65,66,67,68,69,70,71,89,90,93,94],[4,5,6,7,16,17,18,19,40,41,42,43,56,57,58,59,60,61,62,63],[4,5,6,7,20,21,22,23,44,45,46,47,56,57,58,59,60,61,62,63],[2,3,6,7,16,17,20,21,72,73,76,77,88,89,90,91,92,93,94,95],[2,3,6,7,18,19,22,23,74,75,78,79,88,89,90,91,92,93,94,95],[2,3,4,5,16,18,20,22,96,97,98,99,100,101,102,103,112,114,116,118],[2,3,4,5,17,19,21,23,96,97,98,99,100,101,102,103,113,115,117,119],[0,3,5,6,16,17,22,23,96,97,100,101,112,113,114,115,116,117,118,119],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31],[0,3,5,6,18,19,20,21,98,99,102,103,112,113,114,115,116,117,118,119],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31],[0,3,4,7,16,18,21,23,72,73,74,75,76,77,78,79,88,89,92,93],[0,1,4,5,16,18,21,23,32,33,34,35,36,37,38,39,48,50,53,55],[0,3,4,7,17,19,20,22,72,73,74,75,76,77,78,79,90,91,94,95],[0,1,4,5,17,19,20,22,32,33,34,35,36,37,38,39,49,51,52,54],[0,2,5,7,16,19,20,23,40,41,42,43,44,45,46,47,56,57,60,61],[0,1,2,3,16,19,20,23,64,65,66,67,68,69,70,71,80,83,84,87],[0,2,5,7,17,18,21,22,40,41,42,43,44,45,46,47,58,59,62,63],[0,1,2,3,17,18,21,22,64,65,66,67,68,69,70,71,81,82,85,86],[2,3,6,7,40,41,44,45,88,89,90,91,92,93,94,95,112,113,116,117],[2,3,6,7,42,43,46,47,88,89,90,91,92,93,94,95,114,115,118,119],[2,3,4,5,40,42,44,46,72,74,76,78,96,97,98,99,100,101,102,103],[2,3,4,5,41,43,45,47,73,75,77,79,96,97,98,99,100,101,102,103],[0,3,5,6,40,42,45,47,88,90,92,94,112,113,114,115,116,117,118,119],[0,1,4,5,8,10,13,15,32,33,34,35,36,37,38,39,40,42,45,47],[0,3,5,6,41,43,44,46,89,91,93,95,112,113,114,115,116,117,118,119],[0,1,4,5,9,11,12,14,32,33,34,35,36,37,38,39,41,43,44,46],[0,3,4,7,40,41,46,47,72,73,74,75,76,77,78,79,96,98,100,102],[0,1,6,7,24,25,26,27,28,29,30,31,40,41,46,47,48,49,54,55],[0,3,4,7,42,43,44,45,72,73,74,75,76,77,78,79,97,99,101,103],[0,1,6,7,24,25,26,27,28,29,30,31,42,43,44,45,50,51,52,53],[0,2,4,6,16,17,18,19,20,21,22,23,40,43,44,47,56,58,61,63],[0,1,2,3,40,43,44,47,64,65,66,67,68,69,70,71,104,107,108,111],[0,2,4,6,16,17,18,19,20,21,22,23,41,42,45,46,57,59,60,62],[0,1,2,3,41,42,45,46,64,65,66,67,68,69,70,71,105,106,109,110],[4,5,6,7,56,57,58,59,60,61,62,63,72,73,74,75,112,113,114,115],[4,5,6,7,56,57,58,59,60,61,62,63,76,77,78,79,116,117,118,119],[0,3,5,6,56,58,60,62,72,75,76,79,112,113,114,115,116,117,118,119],[0,1,2,3,8,11,12,15,64,65,66,67,68,69,70,71,72,75,76,79],[0,3,5,6,57,59,61,63,73,74,77,78,112,113,114,115,116,117,118,119],[0,1,2,3,9,10,13,14,64,65,66,67,68,69,70,71,73,74,77,78],[0,2,5,7,40,41,42,43,44,45,46,47,72,73,78,79,96,97,102,103],[0,1,6,7,24,25,26,27,28,29,30,31,72,73,78,79,80,81,86,87],[0,2,5,7,40,41,42,43,44,45,46,47,74,75,76,77,98,99,100,101],[0,1,6,7,24,25,26,27,28,29,30,31,74,75,76,77,82,83,84,85],[0,2,4,6,16,17,18,19,20,21,22,23,72,74,77,79,88,90,93,95],[0,1,4,5,32,33,34,35,36,37,38,39,72,74,77,79,104,106,109,111],[0,2,4,6,16,17,18,19,20,21,22,23,73,75,76,78,89,91,92,94],[0,1,4,5,32,33,34,35,36,37,38,39,73,75,76,78,105,107,108,110],[0,3,4,7,56,57,62,63,72,73,74,75,76,77,78,79,112,115,116,119],[0,1,2,3,48,51,52,55,64,65,66,67,68,69,70,71,112,115,116,119],[0,3,4,7,58,59,60,61,72,73,74,75,76,77,78,79,113,114,117,118],[0,1,2,3,49,50,53,54,64,65,66,67,68,69,70,71,113,114,117,118],[0,2,5,7,40,41,42,43,44,45,46,47,88,89,94,95,112,114,117,119],[0,1,4,5,32,33,34,35,36,37,38,39,80,82,85,87,112,114,117,119],[0,2,5,7,40,41,42,43,44,45,46,47,90,91,92,93,113,115,116,118],[0,1,4,5,32,33,34,35,36,37,38,39,81,83,84,86,113,115,116,118],[0,2,4,6,16,17,18,19,20,21,22,23,96,98,101,103,112,113,118,119],[0,1,6,7,24,25,26,27,28,29,30,31,104,105,110,111,112,113,118,119],[0,2,4,6,16,17,18,19,20,21,22,23,97,99,100,102,114,115,116,117],[0,1,6,7,24,25,26,27,28,29,30,31,106,107,108,109,114,115,116,117],[4,5,6,7,8,9,10,11,48,49,50,51,56,57,58,59,60,61,62,63],[4,5,6,7,12,13,14,15,52,53,54,55,56,57,58,59,60,61,62,63],[2,3,6,7,8,9,12,13,80,81,84,85,88,89,90,91,92,93,94,95],[2,3,6,7,10,11,14,15,82,83,86,87,88,89,90,91,92,93,94,95],[2,3,4,5,8,10,12,14,96,97,98,99,100,101,102,103,104,106,108,110],[2,3,4,5,9,11,13,15,96,97,98,99,100,101,102,103,105,107,109,111],[1,3,5,7,8,9,14,15,96,97,100,101,104,105,106,107,108,109,110,111],[1,3,5,7,10,11,12,13,98,99,102,103,104,105,106,107,108,109,110,111],[1,3,4,6,8,10,13,15,80,81,82,83,84,85,86,87,88,90,92,94],[1,3,4,6,9,11,12,14,80,81,82,83,84,85,86,87,89,91,93,95],[1,2,5,6,8,11,12,15,48,49,50,51,52,53,54,55,56,58,60,62],[1,2,5,6,9,10,13,14,48,49,50,51,52,53,54,55,57,59,61,63],[2,3,6,7,48,49,52,53,88,89,90,91,92,93,94,95,104,105,108,109],[2,3,6,7,50,51,54,55,88,89,90,91,92,93,94,95,106,107,110,111],[2,3,4,5,48,50,52,54,80,82,84,86,96,97,98,99,100,101,102,103],[2,3,4,5,49,51,53,55,81,83,85,87,96,97,98,99,100,101,102,103],[1,3,5,7,48,50,53,55,88,89,92,93,104,105,106,107,108,109,110,111],[1,3,5,7,49,51,52,54,90,91,94,95,104,105,106,107,108,109,110,111],[1,3,4,6,48,49,54,55,80,81,82,83,84,85,86,87,96,98,100,102],[1,3,4,6,50,51,52,53,80,81,82,83,84,85,86,87,97,99,101,103],[1,2,4,7,8,9,10,11,12,13,14,15,48,51,52,55,56,57,62,63],[1,2,4,7,8,9,10,11,12,13,14,15,49,50,53,54,58,59,60,61],[4,5,6,7,56,57,58,59,60,61,62,63,80,81,82,83,104,105,106,107],[4,5,6,7,56,57,58,59,60,61,62,63,84,85,86,87,108,109,110,111],[1,3,5,7,56,57,60,61,80,83,84,87,104,105,106,107,108,109,110,111],[1,3,5,7,58,59,62,63,81,82,85,86,104,105,106,107,108,109,110,111],[1,2,5,6,48,49,50,51,52,53,54,55,80,81,86,87,96,97,102,103],[1,2,5,6,48,49,50,51,52,53,54,55,82,83,84,85,98,99,100,101],[1,2,4,7,8,9,10,11,12,13,14,15,80,82,85,87,88,89,94,95],[1,2,4,7,8,9,10,11,12,13,14,15,81,83,84,86,90,91,92,93],[1,3,4,6,56,58,61,63,80,81,82,83,84,85,86,87,104,107,108,111],[1,3,4,6,57,59,60,62,80,81,82,83,84,85,86,87,105,106,109,110],[1,2,5,6,48,49,50,51,52,53,54,55,88,90,93,95,104,106,109,111],[1,2,5,6,48,49,50,51,52,53,54,55,89,91,92,94,105,107,108,110],[1,2,4,7,8,9,10,11,12,13,14,15,96,98,101,103,104,105,110,111],[1,2,4,7,8,9,10,11,12,13,14,15,97,99,100,102,106,107,108,109],[4,5,6,7,56,57,58,59,60,61,62,63,88,89,90,91,96,97,98,99],[4,5,6,7,56,57,58,59,60,61,62,63,92,93,94,95,100,101,102,103],[2,3,6,7,56,57,58,59,88,89,90,91,92,93,94,95,96,99,100,103],[2,3,6,7,60,61,62,63,88,89,90,91,92,93,94,95,97,98,101,102],[2,3,4,5,56,59,60,63,88,91,92,95,96,97,98,99,100,101,102,103],[2,3,4,5,57,58,61,62,89,90,93,94,96,97,98,99,100,101,102,103],[4,5,6,7,28,29,30,31,36,37,38,39,56,57,58,59,60,61,62,63,69,70,92,93,94,95,100,101,102,103],[4,5,6,7,12,13,14,15,52,53,54,55,56,57,58,59,60,61,62,63,67,69,76,77,78,79,116,117,118,119],[4,5,6,7,20,21,22,23,44,45,46,47,56,57,58,59,60,61,62,63,67,70,84,85,86,87,108,109,110,111],[4,5,6,7,16,17,18,19,40,41,42,43,56,57,58,59,60,61,62,63,64,69,80,81,82,83,104,105,106,107],[4,5,6,7,8,9,10,11,48,49,50,51,56,57,58,59,60,61,62,63,64,70,72,73,74,75,112,113,114,115],[4,5,6,7,24,25,26,27,32,33,34,35,56,57,58,59,60,61,62,63,64,67,88,89,90,91,96,97,98,99],[4,5,6,7,28,29,30,31,36,37,38,39,56,57,58,59,60,61,62,63,68,71,88,89,90,91,96,97,98,99],[4,5,6,7,12,13,14,15,52,53,54,55,56,57,58,59,60,61,62,63,66,68,72,73,74,75,112,113,114,115],[4,5,6,7,20,21,22,23,44,45,46,47,56,57,58,59,60,61,62,63,66,71,80,81,82,83,104,105,106,107],[4,5,6,7,16,17,18,19,40,41,42,43,56,57,58,59,60,61,62,63,65,68,84,85,86,87,108,109,110,111],[4,5,6,7,8,9,10,11,48,49,50,51,56,57,58,59,60,61,62,63,65,71,76,77,78,79,116,117,118,119],[4,5,6,7,24,25,26,27,32,33,34,35,56,57,58,59,60,61,62,63,65,66,92,93,94,95,100,101,102,103],[2,3,6,7,28,29,30,31,37,38,60,61,62,63,68,69,70,71,88,89,90,91,92,93,94,95,97,98,101,102],[2,3,6,7,10,11,14,15,35,37,42,43,46,47,82,83,86,87,88,89,90,91,92,93,94,95,114,115,118,119],[2,3,6,7,18,19,22,23,35,38,50,51,54,55,74,75,78,79,88,89,90,91,92,93,94,95,106,107,110,111],[2,3,6,7,16,17,20,21,32,37,48,49,52,53,72,73,76,77,88,89,90,91,92,93,94,95,104,105,108,109],[2,3,6,7,8,9,12,13,32,38,40,41,44,45,80,81,84,85,88,89,90,91,92,93,94,95,112,113,116,117],[2,3,6,7,24,25,26,27,32,35,56,57,58,59,64,65,66,67,88,89,90,91,92,93,94,95,96,99,100,103],[2,3,6,7,28,29,30,31,36,39,56,57,58,59,68,69,70,71,88,89,90,91,92,93,94,95,96,99,100,103],[2,3,6,7,10,11,14,15,34,36,40,41,44,45,82,83,86,87,88,89,90,91,92,93,94,95,112,113,116,117],[2,3,6,7,18,19,22,23,34,39,48,49,52,53,74,75,78,79,88,89,90,91,92,93,94,95,104,105,108,109],[2,3,6,7,16,17,20,21,33,36,50,51,54,55,72,73,76,77,88,89,90,91,92,93,94,95,106,107,110,111],[2,3,6,7,8,9,12,13,33,39,42,43,46,47,80,81,84,85,88,89,90,91,92,93,94,95,114,115,118,119],[2,3,6,7,24,25,26,27,33,34,60,61,62,63,64,65,66,67,88,89,90,91,92,93,94,95,97,98,101,102],[2,3,4,5,29,30,36,37,38,39,57,58,61,62,68,69,70,71,89,90,93,94,96,97,98,99,100,101,102,103],[2,3,4,5,27,29,41,43,45,47,49,51,53,55,73,75,77,79,81,83,85,87,96,97,98,99,100,101,102,103],[2,3,4,5,9,11,13,15,17,19,21,23,27,30,96,97,98,99,100,101,102,103,105,107,109,111,113,115,117,119],[2,3,4,5,8,10,12,14,16,18,20,22,24,29,96,97,98,99,100,101,102,103,104,106,108,110,112,114,116,118],[2,3,4,5,24,30,40,42,44,46,48,50,52,54,72,74,76,78,80,82,84,86,96,97,98,99,100,101,102,103],[2,3,4,5,24,27,32,33,34,35,56,59,60,63,64,65,66,67,88,91,92,95,96,97,98,99,100,101,102,103],[2,3,4,5,28,31,36,37,38,39,56,59,60,63,68,69,70,71,88,91,92,95,96,97,98,99,100,101,102,103],[2,3,4,5,26,28,40,42,44,46,49,51,53,55,72,74,76,78,81,83,85,87,96,97,98,99,100,101,102,103],[2,3,4,5,8,10,12,14,17,19,21,23,26,31,96,97,98,99,100,101,102,103,104,106,108,110,113,115,117,119],[2,3,4,5,9,11,13,15,16,18,20,22,25,28,96,97,98,99,100,101,102,103,105,107,109,111,112,114,116,118],[2,3,4,5,25,31,41,43,45,47,48,50,52,54,73,75,77,79,80,82,84,86,96,97,98,99,100,101,102,103],[2,3,4,5,25,26,32,33,34,35,57,58,61,62,64,65,66,67,89,90,93,94,96,97,98,99,100,101,102,103],[1,3,5,7,21,22,44,45,46,47,58,59,62,63,66,67,70,71,81,82,85,86,104,105,106,107,108,109,110,111],[1,3,5,7,10,11,12,13,19,21,26,27,30,31,98,99,102,103,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,19,22,34,35,38,39,49,51,52,54,74,75,78,79,90,91,94,95,104,105,106,107,108,109,110,111],[1,3,5,7,16,21,32,33,36,37,48,50,53,55,72,73,76,77,88,89,92,93,104,105,106,107,108,109,110,111],[1,3,5,7,8,9,14,15,16,22,24,25,28,29,96,97,100,101,104,105,106,107,108,109,110,111,112,114,116,118],[1,3,5,7,16,19,40,41,42,43,56,57,60,61,64,65,68,69,80,83,84,87,104,105,106,107,108,109,110,111],[1,3,5,7,20,23,44,45,46,47,56,57,60,61,66,67,70,71,80,83,84,87,104,105,106,107,108,109,110,111],[1,3,5,7,10,11,12,13,18,20,24,25,28,29,98,99,102,103,104,105,106,107,108,109,110,111,112,114,116,118],[1,3,5,7,18,23,34,35,38,39,48,50,53,55,74,75,78,79,88,89,92,93,104,105,106,107,108,109,110,111],[1,3,5,7,17,20,32,33,36,37,49,51,52,54,72,73,76,77,90,91,94,95,104,105,106,107,108,109,110,111],[1,3,5,7,8,9,14,15,17,23,26,27,30,31,96,97,100,101,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,17,18,40,41,42,43,58,59,62,63,64,65,68,69,81,82,85,86,104,105,106,107,108,109,110,111],[1,3,4,6,20,21,22,23,45,46,57,59,60,62,66,67,70,71,80,81,82,83,84,85,86,87,105,106,109,110],[1,3,4,6,25,27,29,31,43,45,50,51,52,53,73,75,77,79,80,81,82,83,84,85,86,87,97,99,101,103],[1,3,4,6,9,11,12,14,33,35,37,39,43,46,80,81,82,83,84,85,86,87,89,91,93,95,114,115,118,119],[1,3,4,6,8,10,13,15,32,34,36,38,40,45,80,81,82,83,84,85,86,87,88,90,92,94,112,113,116,117],[1,3,4,6,24,26,28,30,40,46,48,49,54,55,72,74,76,78,80,81,82,83,84,85,86,87,96,98,100,102],[1,3,4,6,16,17,18,19,40,43,56,58,61,63,64,65,68,69,80,81,82,83,84,85,86,87,104,107,108,111],[1,3,4,6,20,21,22,23,44,47,56,58,61,63,66,67,70,71,80,81,82,83,84,85,86,87,104,107,108,111],[1,3,4,6,24,26,28,30,42,44,50,51,52,53,72,74,76,78,80,81,82,83,84,85,86,87,97,99,101,103],[1,3,4,6,8,10,13,15,33,35,37,39,42,47,80,81,82,83,84,85,86,87,88,90,92,94,114,115,118,119],[1,3,4,6,9,11,12,14,32,34,36,38,41,44,80,81,82,83,84,85,86,87,89,91,93,95,112,113,116,117],[1,3,4,6,25,27,29,31,41,47,48,49,54,55,73,75,77,79,80,81,82,83,84,85,86,87,96,98,100,102],[1,3,4,6,16,17,18,19,41,42,57,59,60,62,64,65,68,69,80,81,82,83,84,85,86,87,105,106,109,110],[1,2,5,6,9,10,13,14,48,49,50,51,52,53,54,55,57,59,61,63,65,67,69,71,77,78,116,117,118,119],[1,2,5,6,25,27,29,31,41,43,45,47,48,49,50,51,52,53,54,55,75,77,82,83,84,85,98,99,100,101],[1,2,5,6,18,19,22,23,34,35,38,39,48,49,50,51,52,53,54,55,75,78,89,91,92,94,105,107,108,110],[1,2,5,6,16,17,20,21,32,33,36,37,48,49,50,51,52,53,54,55,72,77,88,90,93,95,104,106,109,111],[1,2,5,6,24,26,28,30,40,42,44,46,48,49,50,51,52,53,54,55,72,78,80,81,86,87,96,97,102,103],[1,2,5,6,8,11,12,15,48,49,50,51,52,53,54,55,56,58,60,62,64,66,68,70,72,75,112,113,114,115],[1,2,5,6,8,11,12,15,48,49,50,51,52,53,54,55,56,58,60,62,65,67,69,71,76,79,116,117,118,119],[1,2,5,6,24,26,28,30,40,42,44,46,48,49,50,51,52,53,54,55,74,76,82,83,84,85,98,99,100,101],[1,2,5,6,18,19,22,23,34,35,38,39,48,49,50,51,52,53,54,55,74,79,88,90,93,95,104,106,109,111],[1,2,5,6,16,17,20,21,32,33,36,37,48,49,50,51,52,53,54,55,73,76,89,91,92,94,105,107,108,110],[1,2,5,6,25,27,29,31,41,43,45,47,48,49,50,51,52,53,54,55,73,79,80,81,86,87,96,97,102,103],[1,2,5,6,9,10,13,14,48,49,50,51,52,53,54,55,57,59,61,63,64,66,68,70,73,74,112,113,114,115],[1,2,4,7,8,9,10,11,12,13,14,15,49,50,53,54,58,59,60,61,65,67,69,71,76,77,78,79,117,118],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,97,99,100,102,106,107,108,109,115,117],[1,2,4,7,8,9,10,11,12,13,14,15,33,35,37,39,42,43,46,47,81,83,84,86,90,91,92,93,115,118],[1,2,4,7,8,9,10,11,12,13,14,15,32,34,36,38,40,41,44,45,80,82,85,87,88,89,94,95,112,117],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,96,98,101,103,104,105,110,111,112,118],[1,2,4,7,8,9,10,11,12,13,14,15,48,51,52,55,56,57,62,63,64,66,68,70,72,73,74,75,112,115],[1,2,4,7,8,9,10,11,12,13,14,15,48,51,52,55,56,57,62,63,65,67,69,71,76,77,78,79,116,119],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,97,99,100,102,106,107,108,109,114,116],[1,2,4,7,8,9,10,11,12,13,14,15,33,35,37,39,42,43,46,47,80,82,85,87,88,89,94,95,114,119],[1,2,4,7,8,9,10,11,12,13,14,15,32,34,36,38,40,41,44,45,81,83,84,86,90,91,92,93,113,116],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,96,98,101,103,104,105,110,111,113,119],[1,2,4,7,8,9,10,11,12,13,14,15,49,50,53,54,58,59,60,61,64,66,68,70,72,73,74,75,113,114],[0,3,5,6,13,14,52,53,54,55,57,59,61,63,66,67,68,69,73,74,77,78,112,113,114,115,116,117,118,119],[0,3,5,6,11,13,18,19,20,21,25,27,28,30,98,99,102,103,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,11,14,34,35,36,37,41,43,44,46,82,83,86,87,89,91,93,95,112,113,114,115,116,117,118,119],[0,3,5,6,8,13,32,33,38,39,40,42,45,47,80,81,84,85,88,90,92,94,112,113,114,115,116,117,118,119],[0,3,5,6,8,14,16,17,22,23,24,26,29,31,96,97,100,101,104,106,108,110,112,113,114,115,116,117,118,119],[0,3,5,6,8,11,48,49,50,51,56,58,60,62,64,65,70,71,72,75,76,79,112,113,114,115,116,117,118,119],[0,3,5,6,12,15,52,53,54,55,56,58,60,62,66,67,68,69,72,75,76,79,112,113,114,115,116,117,118,119],[0,3,5,6,10,12,18,19,20,21,24,26,29,31,98,99,102,103,104,106,108,110,112,113,114,115,116,117,118,119],[0,3,5,6,10,15,34,35,36,37,40,42,45,47,82,83,86,87,88,90,92,94,112,113,114,115,116,117,118,119],[0,3,5,6,9,12,32,33,38,39,41,43,44,46,80,81,84,85,89,91,93,95,112,113,114,115,116,117,118,119],[0,3,5,6,9,15,16,17,22,23,25,27,28,30,96,97,100,101,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,9,10,48,49,50,51,57,59,61,63,64,65,70,71,73,74,77,78,112,113,114,115,116,117,118,119],[0,3,4,7,12,13,14,15,53,54,58,59,60,61,66,67,68,69,72,73,74,75,76,77,78,79,113,114,117,118],[0,3,4,7,26,27,28,29,42,43,44,45,51,53,72,73,74,75,76,77,78,79,81,83,85,87,97,99,101,103],[0,3,4,7,17,19,20,22,33,35,36,38,51,54,72,73,74,75,76,77,78,79,90,91,94,95,106,107,110,111],[0,3,4,7,16,18,21,23,32,34,37,39,48,53,72,73,74,75,76,77,78,79,88,89,92,93,104,105,108,109],[0,3,4,7,24,25,30,31,40,41,46,47,48,54,72,73,74,75,76,77,78,79,80,82,84,86,96,98,100,102],[0,3,4,7,8,9,10,11,48,51,56,57,62,63,64,65,70,71,72,73,74,75,76,77,78,79,112,115,116,119],[0,3,4,7,12,13,14,15,52,55,56,57,62,63,66,67,68,69,72,73,74,75,76,77,78,79,112,115,116,119],[0,3,4,7,24,25,30,31,42,43,44,45,50,52,72,73,74,75,76,77,78,79,80,82,84,86,97,99,101,103],[0,3,4,7,16,18,21,23,33,35,36,38,50,55,72,73,74,75,76,77,78,79,88,89,92,93,106,107,110,111],[0,3,4,7,17,19,20,22,32,34,37,39,49,52,72,73,74,75,76,77,78,79,90,91,94,95,104,105,108,109],[0,3,4,7,26,27,28,29,40,41,46,47,49,55,72,73,74,75,76,77,78,79,81,83,85,87,96,98,100,102],[0,3,4,7,8,9,10,11,49,50,58,59,60,61,64,65,70,71,72,73,74,75,76,77,78,79,113,114,117,118],[0,2,5,7,17,18,21,22,40,41,42,43,44,45,46,47,58,59,62,63,65,67,68,70,85,86,108,109,110,111],[0,2,5,7,26,27,28,29,40,41,42,43,44,45,46,47,49,51,53,55,74,75,76,77,83,85,98,99,100,101],[0,2,5,7,10,11,14,15,34,35,36,37,40,41,42,43,44,45,46,47,83,86,90,91,92,93,113,115,116,118],[0,2,5,7,8,9,12,13,32,33,38,39,40,41,42,43,44,45,46,47,80,85,88,89,94,95,112,114,117,119],[0,2,5,7,24,25,30,31,40,41,42,43,44,45,46,47,48,50,52,54,72,73,78,79,80,86,96,97,102,103],[0,2,5,7,16,19,20,23,40,41,42,43,44,45,46,47,56,57,60,61,64,66,69,71,80,83,104,105,106,107],[0,2,5,7,16,19,20,23,40,41,42,43,44,45,46,47,56,57,60,61,65,67,68,70,84,87,108,109,110,111],[0,2,5,7,24,25,30,31,40,41,42,43,44,45,46,47,48,50,52,54,74,75,76,77,82,84,98,99,100,101],[0,2,5,7,10,11,14,15,34,35,36,37,40,41,42,43,44,45,46,47,82,87,88,89,94,95,112,114,117,119],[0,2,5,7,8,9,12,13,32,33,38,39,40,41,42,43,44,45,46,47,81,84,90,91,92,93,113,115,116,118],[0,2,5,7,26,27,28,29,40,41,42,43,44,45,46,47,49,51,53,55,72,73,78,79,81,87,96,97,102,103],[0,2,5,7,17,18,21,22,40,41,42,43,44,45,46,47,58,59,62,63,64,66,69,71,81,82,104,105,106,107],[0,2,4,6,16,17,18,19,20,21,22,23,41,42,45,46,57,59,60,62,65,67,68,70,84,85,86,87,109,110],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,97,99,100,102,107,109,114,115,116,117],[0,2,4,6,16,17,18,19,20,21,22,23,33,35,36,38,50,51,54,55,73,75,76,78,89,91,92,94,107,110],[0,2,4,6,16,17,18,19,20,21,22,23,32,34,37,39,48,49,52,53,72,74,77,79,88,90,93,95,104,109],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,96,98,101,103,104,110,112,113,118,119],[0,2,4,6,16,17,18,19,20,21,22,23,40,43,44,47,56,58,61,63,64,66,69,71,80,81,82,83,104,107],[0,2,4,6,16,17,18,19,20,21,22,23,40,43,44,47,56,58,61,63,65,67,68,70,84,85,86,87,108,111],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,97,99,100,102,106,108,114,115,116,117],[0,2,4,6,16,17,18,19,20,21,22,23,33,35,36,38,50,51,54,55,72,74,77,79,88,90,93,95,106,111],[0,2,4,6,16,17,18,19,20,21,22,23,32,34,37,39,48,49,52,53,73,75,76,78,89,91,92,94,105,108],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,96,98,101,103,105,111,112,113,118,119],[0,2,4,6,16,17,18,19,20,21,22,23,41,42,45,46,57,59,60,62,64,66,69,71,80,81,82,83,105,106],[0,1,6,7,24,25,26,27,28,29,30,31,33,34,37,38,60,61,62,63,65,66,69,70,92,93,94,95,101,102],[0,1,6,7,24,25,26,27,28,29,30,31,42,43,44,45,50,51,52,53,74,75,76,77,82,83,84,85,99,101],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,99,102,106,107,108,109,114,115,116,117],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,96,101,104,105,110,111,112,113,118,119],[0,1,6,7,24,25,26,27,28,29,30,31,40,41,46,47,48,49,54,55,72,73,78,79,80,81,86,87,96,102],[0,1,6,7,24,25,26,27,28,29,30,31,32,35,36,39,56,57,58,59,64,67,68,71,88,89,90,91,96,99],[0,1,6,7,24,25,26,27,28,29,30,31,32,35,36,39,56,57,58,59,65,66,69,70,92,93,94,95,100,103],[0,1,6,7,24,25,26,27,28,29,30,31,40,41,46,47,48,49,54,55,74,75,76,77,82,83,84,85,98,100],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,98,103,104,105,110,111,112,113,118,119],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,97,100,106,107,108,109,114,115,116,117],[0,1,6,7,24,25,26,27,28,29,30,31,42,43,44,45,50,51,52,53,72,73,78,79,80,81,86,87,97,103],[0,1,6,7,24,25,26,27,28,29,30,31,33,34,37,38,60,61,62,63,64,67,68,71,88,89,90,91,97,98],[0,1,4,5,25,26,29,30,32,33,34,35,36,37,38,39,57,58,61,62,65,66,69,70,93,94,100,101,102,103],[0,1,4,5,9,11,12,14,32,33,34,35,36,37,38,39,41,43,44,46,81,83,84,86,91,93,113,115,116,118],[0,1,4,5,17,19,20,22,32,33,34,35,36,37,38,39,49,51,52,54,73,75,76,78,91,94,105,107,108,110],[0,1,4,5,16,18,21,23,32,33,34,35,36,37,38,39,48,50,53,55,72,74,77,79,88,93,104,106,109,111],[0,1,4,5,8,10,13,15,32,33,34,35,36,37,38,39,40,42,45,47,80,82,85,87,88,94,112,114,117,119],[0,1,4,5,24,27,28,31,32,33,34,35,36,37,38,39,56,59,60,63,64,67,68,71,88,91,96,97,98,99],[0,1,4,5,24,27,28,31,32,33,34,35,36,37,38,39,56,59,60,63,65,66,69,70,92,95,100,101,102,103],[0,1,4,5,8,10,13,15,32,33,34,35,36,37,38,39,40,42,45,47,81,83,84,86,90,92,113,115,116,118],[0,1,4,5,17,19,20,22,32,33,34,35,36,37,38,39,49,51,52,54,72,74,77,79,90,95,104,106,109,111],[0,1,4,5,16,18,21,23,32,33,34,35,36,37,38,39,48,50,53,55,73,75,76,78,89,92,105,107,108,110],[0,1,4,5,9,11,12,14,32,33,34,35,36,37,38,39,41,43,44,46,80,82,85,87,89,95,112,114,117,119],[0,1,4,5,25,26,29,30,32,33,34,35,36,37,38,39,57,58,61,62,64,67,68,71,89,90,96,97,98,99],[0,1,2,3,25,26,29,30,33,34,37,38,61,62,64,65,66,67,68,69,70,71,89,90,93,94,97,98,101,102],[0,1,2,3,9,10,13,14,49,50,53,54,59,61,64,65,66,67,68,69,70,71,73,74,77,78,113,114,117,118],[0,1,2,3,17,18,21,22,41,42,45,46,59,62,64,65,66,67,68,69,70,71,81,82,85,86,105,106,109,110],[0,1,2,3,16,19,20,23,40,43,44,47,56,61,64,65,66,67,68,69,70,71,80,83,84,87,104,107,108,111],[0,1,2,3,8,11,12,15,48,51,52,55,56,62,64,65,66,67,68,69,70,71,72,75,76,79,112,115,116,119],[0,1,2,3,24,27,28,31,32,35,36,39,56,59,64,65,66,67,68,69,70,71,88,91,92,95,96,99,100,103],[0,1,2,3,24,27,28,31,33,34,37,38,60,63,64,65,66,67,68,69,70,71,88,91,92,95,97,98,101,102],[0,1,2,3,8,11,12,15,49,50,53,54,58,60,64,65,66,67,68,69,70,71,72,75,76,79,113,114,117,118],[0,1,2,3,17,18,21,22,40,43,44,47,58,63,64,65,66,67,68,69,70,71,81,82,85,86,104,107,108,111],[0,1,2,3,16,19,20,23,41,42,45,46,57,60,64,65,66,67,68,69,70,71,80,83,84,87,105,106,109,110],[0,1,2,3,9,10,13,14,48,51,52,55,57,63,64,65,66,67,68,69,70,71,73,74,77,78,112,115,116,119],[0,1,2,3,25,26,29,30,32,35,36,39,57,58,64,65,66,67,68,69,70,71,89,90,93,94,96,99,100,103],[1,2,3,4,6,7,8,9,10,11,12,13,14,15,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],[1,2,3,5,6,7,48,49,50,51,52,53,54,55,88,89,90,91,92,93,94,95,104,105,106,107,108,109,110,111],[2,3,4,5,6,7,56,57,58,59,60,61,62,63,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],[0,2,3,5,6,7,40,41,42,43,44,45,46,47,88,89,90,91,92,93,94,95,112,113,114,115,116,117,118,119],[0,2,3,4,6,7,16,17,18,19,20,21,22,23,72,73,74,75,76,77,78,79,88,89,90,91,92,93,94,95],[0,1,4,5,6,7,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,56,57,58,59,60,61,62,63],[0,3,4,5,6,7,56,57,58,59,60,61,62,63,72,73,74,75,76,77,78,79,112,113,114,115,116,117,118,119],[1,3,4,5,6,7,56,57,58,59,60,61,62,63,80,81,82,83,84,85,86,87,104,105,106,107,108,109,110,111],[0,2,4,5,6,7,16,17,18,19,20,21,22,23,40,41,42,43,44,45,46,47,56,57,58,59,60,61,62,63],[1,2,4,5,6,7,8,9,10,11,12,13,14,15,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],[0,1,2,3,6,7,24,25,26,27,28,29,30,31,64,65,66,67,68,69,70,71,88,89,90,91,92,93,94,95],[0,2,3,4,5,7,40,41,42,43,44,45,46,47,72,73,74,75,76,77,78,79,96,97,98,99,100,101,102,103],[0,1,2,3,4,5,32,33,34,35,36,37,38,39,64,65,66,67,68,69,70,71,96,97,98,99,100,101,102,103],[1,2,3,4,5,7,8,9,10,11,12,13,14,15,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],[0,2,3,4,5,6,16,17,18,19,20,21,22,23,96,97,98,99,100,101,102,103,112,113,114,115,116,117,118,119],[1,2,3,4,5,6,48,49,50,51,52,53,54,55,80,81,82,83,84,85,86,87,96,97,98,99,100,101,102,103],[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],[0,2,3,4,5,6,7,16,17,18,19,20,21,22,23,40,41,42,43,44,45,46,47,56,57,58,59,60,61,62,63,72,73,74,75,76,77,78,79,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,112,113,114,115,116,117,118,119],[0,1,3,4,5,6,7,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,56,57,58,59,60,61,62,63,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],[0,1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63],[0,1,2,3,5,6,7,24,25,26,27,28,29,30,31,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,64,65,66,67,68,69,70,71,88,89,90,91,92,93,94,95,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119],[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95],[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111],[0,1,2,3,4,5,6,16,17,18,19,20,21,22,23,32,33,34,35,36,37,38,39,48,49,50,51,52,53,54,55,64,65,66,67,68,69,70,71,80,81,82,83,84,85,86,87,96,97,98,99,100,101,102,103,112,113,114,115,116,117,118,119],[0,3,5,6,11,13,14,18,19,20,21,25,27,28,30,34,35,36,37,41,43,44,46,52,53,54,55,57,59,61,63,66,67,68,69,73,74,77,78,82,83,86,87,89,91,93,95,98,99,102,103,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,10,12,15,18,19,20,21,24,26,29,31,34,35,36,37,40,42,45,47,52,53,54,55,56,58,60,62,66,67,68,69,72,75,76,79,82,83,86,87,88,90,92,94,98,99,102,103,104,106,108,110,112,113,114,115,116,117,118,119],[0,3,5,6,9,12,15,16,17,22,23,25,27,28,30,32,33,38,39,41,43,44,46,52,53,54,55,56,58,60,62,66,67,68,69,72,75,76,79,80,81,84,85,89,91,93,95,96,97,100,101,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,8,13,14,16,17,22,23,24,26,29,31,32,33,38,39,40,42,45,47,52,53,54,55,57,59,61,63,66,67,68,69,73,74,77,78,80,81,84,85,88,90,92,94,96,97,100,101,104,106,108,110,112,113,114,115,116,117,118,119],[0,3,5,6,9,10,15,16,17,22,23,25,27,28,30,34,35,36,37,40,42,45,47,48,49,50,51,57,59,61,63,64,65,70,71,73,74,77,78,82,83,86,87,88,90,92,94,96,97,100,101,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,8,11,14,16,17,22,23,24,26,29,31,34,35,36,37,41,43,44,46,48,49,50,51,56,58,60,62,64,65,70,71,72,75,76,79,82,83,86,87,89,91,93,95,96,97,100,101,104,106,108,110,112,113,114,115,116,117,118,119],[0,3,5,6,8,11,13,18,19,20,21,25,27,28,30,32,33,38,39,40,42,45,47,48,49,50,51,56,58,60,62,64,65,70,71,72,75,76,79,80,81,84,85,88,90,92,94,98,99,102,103,105,107,109,111,112,113,114,115,116,117,118,119],[0,3,5,6,9,10,12,18,19,20,21,24,26,29,31,32,33,38,39,41,43,44,46,48,49,50,51,57,59,61,63,64,65,70,71,73,74,77,78,80,81,84,85,89,91,93,95,98,99,102,103,104,106,108,110,112,113,114,115,116,117,118,119],[1,3,5,7,10,11,12,13,19,21,22,26,27,30,31,34,35,38,39,44,45,46,47,49,51,52,54,58,59,62,63,66,67,70,71,74,75,78,79,81,82,85,86,90,91,94,95,98,99,102,103,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,10,11,12,13,18,20,23,24,25,28,29,34,35,38,39,44,45,46,47,48,50,53,55,56,57,60,61,66,67,70,71,74,75,78,79,80,83,84,87,88,89,92,93,98,99,102,103,104,105,106,107,108,109,110,111,112,114,116,118],[1,3,5,7,8,9,14,15,17,20,23,26,27,30,31,32,33,36,37,44,45,46,47,49,51,52,54,56,57,60,61,66,67,70,71,72,73,76,77,80,83,84,87,90,91,94,95,96,97,100,101,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,8,9,14,15,16,21,22,24,25,28,29,32,33,36,37,44,45,46,47,48,50,53,55,58,59,62,63,66,67,70,71,72,73,76,77,81,82,85,86,88,89,92,93,96,97,100,101,104,105,106,107,108,109,110,111,112,114,116,118],[1,3,5,7,8,9,14,15,17,18,23,26,27,30,31,34,35,38,39,40,41,42,43,48,50,53,55,58,59,62,63,64,65,68,69,74,75,78,79,81,82,85,86,88,89,92,93,96,97,100,101,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,8,9,14,15,16,19,22,24,25,28,29,34,35,38,39,40,41,42,43,49,51,52,54,56,57,60,61,64,65,68,69,74,75,78,79,80,83,84,87,90,91,94,95,96,97,100,101,104,105,106,107,108,109,110,111,112,114,116,118],[1,3,5,7,10,11,12,13,16,19,21,26,27,30,31,32,33,36,37,40,41,42,43,48,50,53,55,56,57,60,61,64,65,68,69,72,73,76,77,80,83,84,87,88,89,92,93,98,99,102,103,104,105,106,107,108,109,110,111,113,115,117,119],[1,3,5,7,10,11,12,13,17,18,20,24,25,28,29,32,33,36,37,40,41,42,43,49,51,52,54,58,59,62,63,64,65,68,69,72,73,76,77,81,82,85,86,90,91,94,95,98,99,102,103,104,105,106,107,108,109,110,111,112,114,116,118],[2,3,4,5,9,11,13,15,17,19,21,23,27,29,30,36,37,38,39,41,43,45,47,49,51,53,55,57,58,61,62,68,69,70,71,73,75,77,79,81,83,85,87,89,90,93,94,96,97,98,99,100,101,102,103,105,107,109,111,113,115,117,119],[2,3,4,5,8,10,12,14,17,19,21,23,26,28,31,36,37,38,39,40,42,44,46,49,51,53,55,56,59,60,63,68,69,70,71,72,74,76,78,81,83,85,87,88,91,92,95,96,97,98,99,100,101,102,103,104,106,108,110,113,115,117,119],[2,3,4,5,9,11,13,15,16,18,20,22,25,28,31,36,37,38,39,41,43,45,47,48,50,52,54,56,59,60,63,68,69,70,71,73,75,77,79,80,82,84,86,88,91,92,95,96,97,98,99,100,101,102,103,105,107,109,111,112,114,116,118],[2,3,4,5,8,10,12,14,16,18,20,22,24,29,30,36,37,38,39,40,42,44,46,48,50,52,54,57,58,61,62,68,69,70,71,72,74,76,78,80,82,84,86,89,90,93,94,96,97,98,99,100,101,102,103,104,106,108,110,112,114,116,118],[2,3,4,5,8,10,12,14,17,19,21,23,25,26,31,32,33,34,35,41,43,45,47,48,50,52,54,57,58,61,62,64,65,66,67,73,75,77,79,80,82,84,86,89,90,93,94,96,97,98,99,100,101,102,103,104,106,108,110,113,115,117,119],[2,3,4,5,9,11,13,15,17,19,21,23,24,27,30,32,33,34,35,40,42,44,46,48,50,52,54,56,59,60,63,64,65,66,67,72,74,76,78,80,82,84,86,88,91,92,95,96,97,98,99,100,101,102,103,105,107,109,111,113,115,117,119],[2,3,4,5,8,10,12,14,16,18,20,22,24,27,29,32,33,34,35,41,43,45,47,49,51,53,55,56,59,60,63,64,65,66,67,73,75,77,79,81,83,85,87,88,91,92,95,96,97,98,99,100,101,102,103,104,106,108,110,112,114,116,118],[2,3,4,5,9,11,13,15,16,18,20,22,25,26,28,32,33,34,35,40,42,44,46,49,51,53,55,57,58,61,62,64,65,66,67,72,74,76,78,81,83,85,87,89,90,93,94,96,97,98,99,100,101,102,103,105,107,109,111,112,114,116,118],[2,3,6,7,10,11,14,15,18,19,22,23,28,29,30,31,35,37,38,42,43,46,47,50,51,54,55,60,61,62,63,68,69,70,71,74,75,78,79,82,83,86,87,88,89,90,91,92,93,94,95,97,98,101,102,106,107,110,111,114,115,118,119],[2,3,6,7,10,11,14,15,18,19,22,23,28,29,30,31,34,36,39,40,41,44,45,48,49,52,53,56,57,58,59,68,69,70,71,74,75,78,79,82,83,86,87,88,89,90,91,92,93,94,95,96,99,100,103,104,105,108,109,112,113,116,117],[2,3,6,7,8,9,12,13,16,17,20,21,28,29,30,31,33,36,39,42,43,46,47,50,51,54,55,56,57,58,59,68,69,70,71,72,73,76,77,80,81,84,85,88,89,90,91,92,93,94,95,96,99,100,103,106,107,110,111,114,115,118,119],[2,3,6,7,8,9,12,13,16,17,20,21,28,29,30,31,32,37,38,40,41,44,45,48,49,52,53,60,61,62,63,68,69,70,71,72,73,76,77,80,81,84,85,88,89,90,91,92,93,94,95,97,98,101,102,104,105,108,109,112,113,116,117],[2,3,6,7,8,9,12,13,18,19,22,23,24,25,26,27,33,34,39,42,43,46,47,48,49,52,53,60,61,62,63,64,65,66,67,74,75,78,79,80,81,84,85,88,89,90,91,92,93,94,95,97,98,101,102,104,105,108,109,114,115,118,119],[2,3,6,7,8,9,12,13,18,19,22,23,24,25,26,27,32,35,38,40,41,44,45,50,51,54,55,56,57,58,59,64,65,66,67,74,75,78,79,80,81,84,85,88,89,90,91,92,93,94,95,96,99,100,103,106,107,110,111,112,113,116,117],[2,3,6,7,10,11,14,15,16,17,20,21,24,25,26,27,32,35,37,42,43,46,47,48,49,52,53,56,57,58,59,64,65,66,67,72,73,76,77,82,83,86,87,88,89,90,91,92,93,94,95,96,99,100,103,104,105,108,109,114,115,118,119],[2,3,6,7,10,11,14,15,16,17,20,21,24,25,26,27,33,34,36,40,41,44,45,50,51,54,55,60,61,62,63,64,65,66,67,72,73,76,77,82,83,86,87,88,89,90,91,92,93,94,95,97,98,101,102,106,107,110,111,112,113,116,117],[1,3,4,6,9,11,12,14,20,21,22,23,25,27,29,31,33,35,37,39,43,45,46,50,51,52,53,57,59,60,62,66,67,70,71,73,75,77,79,80,81,82,83,84,85,86,87,89,91,93,95,97,99,101,103,105,106,109,110,114,115,118,119],[1,3,4,6,8,10,13,15,20,21,22,23,24,26,28,30,33,35,37,39,42,44,47,50,51,52,53,56,58,61,63,66,67,70,71,72,74,76,78,80,81,82,83,84,85,86,87,88,90,92,94,97,99,101,103,104,107,108,111,114,115,118,119],[1,3,4,6,9,11,12,14,20,21,22,23,25,27,29,31,32,34,36,38,41,44,47,48,49,54,55,56,58,61,63,66,67,70,71,73,75,77,79,80,81,82,83,84,85,86,87,89,91,93,95,96,98,100,102,104,107,108,111,112,113,116,117],[1,3,4,6,8,10,13,15,20,21,22,23,24,26,28,30,32,34,36,38,40,45,46,48,49,54,55,57,59,60,62,66,67,70,71,72,74,76,78,80,81,82,83,84,85,86,87,88,90,92,94,96,98,100,102,105,106,109,110,112,113,116,117],[1,3,4,6,8,10,13,15,16,17,18,19,25,27,29,31,33,35,37,39,41,42,47,48,49,54,55,57,59,60,62,64,65,68,69,73,75,77,79,80,81,82,83,84,85,86,87,88,90,92,94,96,98,100,102,105,106,109,110,114,115,118,119],[1,3,4,6,9,11,12,14,16,17,18,19,24,26,28,30,33,35,37,39,40,43,46,48,49,54,55,56,58,61,63,64,65,68,69,72,74,76,78,80,81,82,83,84,85,86,87,89,91,93,95,96,98,100,102,104,107,108,111,114,115,118,119],[1,3,4,6,8,10,13,15,16,17,18,19,25,27,29,31,32,34,36,38,40,43,45,50,51,52,53,56,58,61,63,64,65,68,69,73,75,77,79,80,81,82,83,84,85,86,87,88,90,92,94,97,99,101,103,104,107,108,111,112,113,116,117],[1,3,4,6,9,11,12,14,16,17,18,19,24,26,28,30,32,34,36,38,41,42,44,50,51,52,53,57,59,60,62,64,65,68,69,72,74,76,78,80,81,82,83,84,85,86,87,89,91,93,95,97,99,101,103,105,106,109,110,112,113,116,117],[0,3,4,7,12,13,14,15,17,19,20,22,26,27,28,29,33,35,36,38,42,43,44,45,51,53,54,58,59,60,61,66,67,68,69,72,73,74,75,76,77,78,79,81,83,85,87,90,91,94,95,97,99,101,103,106,107,110,111,113,114,117,118],[0,3,4,7,12,13,14,15,16,18,21,23,24,25,30,31,33,35,36,38,42,43,44,45,50,52,55,56,57,62,63,66,67,68,69,72,73,74,75,76,77,78,79,80,82,84,86,88,89,92,93,97,99,101,103,106,107,110,111,112,115,116,119],[0,3,4,7,12,13,14,15,17,19,20,22,26,27,28,29,32,34,37,39,40,41,46,47,49,52,55,56,57,62,63,66,67,68,69,72,73,74,75,76,77,78,79,81,83,85,87,90,91,94,95,96,98,100,102,104,105,108,109,112,115,116,119],[0,3,4,7,12,13,14,15,16,18,21,23,24,25,30,31,32,34,37,39,40,41,46,47,48,53,54,58,59,60,61,66,67,68,69,72,73,74,75,76,77,78,79,80,82,84,86,88,89,92,93,96,98,100,102,104,105,108,109,113,114,117,118],[0,3,4,7,8,9,10,11,16,18,21,23,26,27,28,29,33,35,36,38,40,41,46,47,49,50,55,58,59,60,61,64,65,70,71,72,73,74,75,76,77,78,79,81,83,85,87,88,89,92,93,96,98,100,102,106,107,110,111,113,114,117,118],[0,3,4,7,8,9,10,11,17,19,20,22,24,25,30,31,33,35,36,38,40,41,46,47,48,51,54,56,57,62,63,64,65,70,71,72,73,74,75,76,77,78,79,80,82,84,86,90,91,94,95,96,98,100,102,106,107,110,111,112,115,116,119],[0,3,4,7,8,9,10,11,16,18,21,23,26,27,28,29,32,34,37,39,42,43,44,45,48,51,53,56,57,62,63,64,65,70,71,72,73,74,75,76,77,78,79,81,83,85,87,88,89,92,93,97,99,101,103,104,105,108,109,112,115,116,119],[0,3,4,7,8,9,10,11,17,19,20,22,24,25,30,31,32,34,37,39,42,43,44,45,49,50,52,58,59,60,61,64,65,70,71,72,73,74,75,76,77,78,79,80,82,84,86,90,91,94,95,97,99,101,103,104,105,108,109,113,114,117,118],[0,1,2,3,9,10,13,14,17,18,21,22,25,26,29,30,33,34,37,38,41,42,45,46,49,50,53,54,59,61,62,64,65,66,67,68,69,70,71,73,74,77,78,81,82,85,86,89,90,93,94,97,98,101,102,105,106,109,110,113,114,117,118],[0,1,2,3,8,11,12,15,17,18,21,22,24,27,28,31,33,34,37,38,40,43,44,47,49,50,53,54,58,60,63,64,65,66,67,68,69,70,71,72,75,76,79,81,82,85,86,88,91,92,95,97,98,101,102,104,107,108,111,113,114,117,118],[0,1,2,3,9,10,13,14,16,19,20,23,24,27,28,31,33,34,37,38,41,42,45,46,48,51,52,55,57,60,63,64,65,66,67,68,69,70,71,73,74,77,78,80,83,84,87,88,91,92,95,97,98,101,102,105,106,109,110,112,115,116,119],[0,1,2,3,8,11,12,15,16,19,20,23,25,26,29,30,33,34,37,38,40,43,44,47,48,51,52,55,56,61,62,64,65,66,67,68,69,70,71,72,75,76,79,80,83,84,87,89,90,93,94,97,98,101,102,104,107,108,111,112,115,116,119],[0,1,2,3,9,10,13,14,17,18,21,22,25,26,29,30,32,35,36,39,40,43,44,47,48,51,52,55,57,58,63,64,65,66,67,68,69,70,71,73,74,77,78,81,82,85,86,89,90,93,94,96,99,100,103,104,107,108,111,112,115,116,119],[0,1,2,3,8,11,12,15,17,18,21,22,24,27,28,31,32,35,36,39,41,42,45,46,48,51,52,55,56,59,62,64,65,66,67,68,69,70,71,72,75,76,79,81,82,85,86,88,91,92,95,96,99,100,103,105,106,109,110,112,115,116,119],[0,1,2,3,9,10,13,14,16,19,20,23,24,27,28,31,32,35,36,39,40,43,44,47,49,50,53,54,56,59,61,64,65,66,67,68,69,70,71,73,74,77,78,80,83,84,87,88,91,92,95,96,99,100,103,104,107,108,111,113,114,117,118],[0,1,2,3,8,11,12,15,16,19,20,23,25,26,29,30,32,35,36,39,41,42,45,46,49,50,53,54,57,58,60,64,65,66,67,68,69,70,71,72,75,76,79,80,83,84,87,89,90,93,94,96,99,100,103,105,106,109,110,113,114,117,118],[4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31,36,37,38,39,44,45,46,47,52,53,54,55,56,57,58,59,60,61,62,63,67,69,70,76,77,78,79,84,85,86,87,92,93,94,95,100,101,102,103,108,109,110,111,116,117,118,119],[4,5,6,7,12,13,14,15,20,21,22,23,28,29,30,31,36,37,38,39,44,45,46,47,52,53,54,55,56,57,58,59,60,61,62,63,66,68,71,72,73,74,75,80,81,82,83,88,89,90,91,96,97,98,99,104,105,106,107,112,113,114,115],[4,5,6,7,8,9,10,11,16,17,18,19,28,29,30,31,36,37,38,39,40,41,42,43,48,49,50,51,56,57,58,59,60,61,62,63,65,68,71,76,77,78,79,84,85,86,87,88,89,90,91,96,97,98,99,108,109,110,111,116,117,118,119],[4,5,6,7,8,9,10,11,16,17,18,19,28,29,30,31,36,37,38,39,40,41,42,43,48,49,50,51,56,57,58,59,60,61,62,63,64,69,70,72,73,74,75,80,81,82,83,92,93,94,95,100,101,102,103,104,105,106,107,112,113,114,115],[4,5,6,7,8,9,10,11,20,21,22,23,24,25,26,27,32,33,34,35,44,45,46,47,48,49,50,51,56,57,58,59,60,61,62,63,65,66,71,76,77,78,79,80,81,82,83,92,93,94,95,100,101,102,103,104,105,106,107,116,117,118,119],[4,5,6,7,8,9,10,11,20,21,22,23,24,25,26,27,32,33,34,35,44,45,46,47,48,49,50,51,56,57,58,59,60,61,62,63,64,67,70,72,73,74,75,84,85,86,87,88,89,90,91,96,97,98,99,108,109,110,111,112,113,114,115],[4,5,6,7,12,13,14,15,16,17,18,19,24,25,26,27,32,33,34,35,40,41,42,43,52,53,54,55,56,57,58,59,60,61,62,63,64,67,69,76,77,78,79,80,81,82,83,88,89,90,91,96,97,98,99,104,105,106,107,116,117,118,119],[4,5,6,7,12,13,14,15,16,17,18,19,24,25,26,27,32,33,34,35,40,41,42,43,52,53,54,55,56,57,58,59,60,61,62,63,65,66,68,72,73,74,75,84,85,86,87,92,93,94,95,100,101,102,103,108,109,110,111,112,113,114,115],[1,2,5,6,9,10,13,14,18,19,22,23,25,27,29,31,34,35,38,39,41,43,45,47,48,49,50,51,52,53,54,55,57,59,61,63,65,67,69,71,75,77,78,82,83,84,85,89,91,92,94,98,99,100,101,105,107,108,110,116,117,118,119],[1,2,5,6,8,11,12,15,18,19,22,23,24,26,28,30,34,35,38,39,40,42,44,46,48,49,50,51,52,53,54,55,56,58,60,62,65,67,69,71,74,76,79,82,83,84,85,88,90,93,95,98,99,100,101,104,106,109,111,116,117,118,119],[1,2,5,6,8,11,12,15,16,17,20,21,25,27,29,31,32,33,36,37,41,43,45,47,48,49,50,51,52,53,54,55,56,58,60,62,65,67,69,71,73,76,79,80,81,86,87,89,91,92,94,96,97,102,103,105,107,108,110,116,117,118,119],[1,2,5,6,9,10,13,14,16,17,20,21,24,26,28,30,32,33,36,37,40,42,44,46,48,49,50,51,52,53,54,55,57,59,61,63,65,67,69,71,72,77,78,80,81,86,87,88,90,93,95,96,97,102,103,104,106,109,111,116,117,118,119],[1,2,5,6,9,10,13,14,18,19,22,23,25,27,29,31,34,35,38,39,41,43,45,47,48,49,50,51,52,53,54,55,57,59,61,63,64,66,68,70,73,74,79,80,81,86,87,88,90,93,95,96,97,102,103,104,106,109,111,112,113,114,115],[1,2,5,6,8,11,12,15,18,19,22,23,24,26,28,30,34,35,38,39,40,42,44,46,48,49,50,51,52,53,54,55,56,58,60,62,64,66,68,70,72,75,78,80,81,86,87,89,91,92,94,96,97,102,103,105,107,108,110,112,113,114,115],[1,2,5,6,8,11,12,15,16,17,20,21,25,27,29,31,32,33,36,37,41,43,45,47,48,49,50,51,52,53,54,55,56,58,60,62,64,66,68,70,72,75,77,82,83,84,85,88,90,93,95,98,99,100,101,104,106,109,111,112,113,114,115],[1,2,5,6,9,10,13,14,16,17,20,21,24,26,28,30,32,33,36,37,40,42,44,46,48,49,50,51,52,53,54,55,57,59,61,63,64,66,68,70,73,74,76,82,83,84,85,89,91,92,94,98,99,100,101,105,107,108,110,112,113,114,115],[0,2,5,7,10,11,14,15,17,18,21,22,26,27,28,29,34,35,36,37,40,41,42,43,44,45,46,47,49,51,53,55,58,59,62,63,65,67,68,70,74,75,76,77,83,85,86,90,91,92,93,98,99,100,101,108,109,110,111,113,115,116,118],[0,2,5,7,10,11,14,15,16,19,20,23,24,25,30,31,34,35,36,37,40,41,42,43,44,45,46,47,48,50,52,54,56,57,60,61,65,67,68,70,74,75,76,77,82,84,87,88,89,94,95,98,99,100,101,108,109,110,111,112,114,117,119],[0,2,5,7,8,9,12,13,16,19,20,23,26,27,28,29,32,33,38,39,40,41,42,43,44,45,46,47,49,51,53,55,56,57,60,61,65,67,68,70,72,73,78,79,81,84,87,90,91,92,93,96,97,102,103,108,109,110,111,113,115,116,118],[0,2,5,7,8,9,12,13,17,18,21,22,24,25,30,31,32,33,38,39,40,41,42,43,44,45,46,47,48,50,52,54,58,59,62,63,65,67,68,70,72,73,78,79,80,85,86,88,89,94,95,96,97,102,103,108,109,110,111,112,114,117,119],[0,2,5,7,10,11,14,15,17,18,21,22,26,27,28,29,34,35,36,37,40,41,42,43,44,45,46,47,49,51,53,55,58,59,62,63,64,66,69,71,72,73,78,79,81,82,87,88,89,94,95,96,97,102,103,104,105,106,107,112,114,117,119],[0,2,5,7,10,11,14,15,16,19,20,23,24,25,30,31,34,35,36,37,40,41,42,43,44,45,46,47,48,50,52,54,56,57,60,61,64,66,69,71,72,73,78,79,80,83,86,90,91,92,93,96,97,102,103,104,105,106,107,113,115,116,118],[0,2,5,7,8,9,12,13,16,19,20,23,26,27,28,29,32,33,38,39,40,41,42,43,44,45,46,47,49,51,53,55,56,57,60,61,64,66,69,71,74,75,76,77,80,83,85,88,89,94,95,98,99,100,101,104,105,106,107,112,114,117,119],[0,2,5,7,8,9,12,13,17,18,21,22,24,25,30,31,32,33,38,39,40,41,42,43,44,45,46,47,48,50,52,54,58,59,62,63,64,66,69,71,74,75,76,77,81,82,84,90,91,92,93,98,99,100,101,104,105,106,107,113,115,116,118],[0,1,4,5,9,11,12,14,17,19,20,22,25,26,29,30,32,33,34,35,36,37,38,39,41,43,44,46,49,51,52,54,57,58,61,62,65,66,69,70,73,75,76,78,81,83,84,86,91,93,94,100,101,102,103,105,107,108,110,113,115,116,118],[0,1,4,5,8,10,13,15,17,19,20,22,24,27,28,31,32,33,34,35,36,37,38,39,40,42,45,47,49,51,52,54,56,59,60,63,65,66,69,70,72,74,77,79,81,83,84,86,90,92,95,100,101,102,103,104,106,109,111,113,115,116,118],[0,1,4,5,9,11,12,14,16,18,21,23,24,27,28,31,32,33,34,35,36,37,38,39,41,43,44,46,48,50,53,55,56,59,60,63,65,66,69,70,73,75,76,78,80,82,85,87,89,92,95,100,101,102,103,105,107,108,110,112,114,117,119],[0,1,4,5,8,10,13,15,16,18,21,23,25,26,29,30,32,33,34,35,36,37,38,39,40,42,45,47,48,50,53,55,57,58,61,62,65,66,69,70,72,74,77,79,80,82,85,87,88,93,94,100,101,102,103,104,106,109,111,112,114,117,119],[0,1,4,5,9,11,12,14,17,19,20,22,25,26,29,30,32,33,34,35,36,37,38,39,41,43,44,46,49,51,52,54,57,58,61,62,64,67,68,71,72,74,77,79,80,82,85,87,89,90,95,96,97,98,99,104,106,109,111,112,114,117,119],[0,1,4,5,8,10,13,15,17,19,20,22,24,27,28,31,32,33,34,35,36,37,38,39,40,42,45,47,49,51,52,54,56,59,60,63,64,67,68,71,73,75,76,78,80,82,85,87,88,91,94,96,97,98,99,105,107,108,110,112,114,117,119],[0,1,4,5,9,11,12,14,16,18,21,23,24,27,28,31,32,33,34,35,36,37,38,39,41,43,44,46,48,50,53,55,56,59,60,63,64,67,68,71,72,74,77,79,81,83,84,86,88,91,93,96,97,98,99,104,106,109,111,113,115,116,118],[0,1,4,5,8,10,13,15,16,18,21,23,25,26,29,30,32,33,34,35,36,37,38,39,40,42,45,47,48,50,53,55,57,58,61,62,64,67,68,71,73,75,76,78,81,83,84,86,89,90,92,96,97,98,99,105,107,108,110,113,115,116,118],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,33,34,37,38,42,43,44,45,50,51,52,53,60,61,62,63,65,66,69,70,74,75,76,77,82,83,84,85,92,93,94,95,99,101,102,106,107,108,109,114,115,116,117],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,32,35,36,39,40,41,46,47,48,49,54,55,56,57,58,59,65,66,69,70,74,75,76,77,82,83,84,85,92,93,94,95,98,100,103,104,105,110,111,112,113,118,119],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,32,35,36,39,42,43,44,45,50,51,52,53,56,57,58,59,65,66,69,70,72,73,78,79,80,81,86,87,92,93,94,95,97,100,103,106,107,108,109,114,115,116,117],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,33,34,37,38,40,41,46,47,48,49,54,55,60,61,62,63,65,66,69,70,72,73,78,79,80,81,86,87,92,93,94,95,96,101,102,104,105,110,111,112,113,118,119],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,33,34,37,38,42,43,44,45,50,51,52,53,60,61,62,63,64,67,68,71,72,73,78,79,80,81,86,87,88,89,90,91,97,98,103,104,105,110,111,112,113,118,119],[0,1,6,7,10,11,12,13,18,19,20,21,24,25,26,27,28,29,30,31,32,35,36,39,40,41,46,47,48,49,54,55,56,57,58,59,64,67,68,71,72,73,78,79,80,81,86,87,88,89,90,91,96,99,102,106,107,108,109,114,115,116,117],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,32,35,36,39,42,43,44,45,50,51,52,53,56,57,58,59,64,67,68,71,74,75,76,77,82,83,84,85,88,89,90,91,96,99,101,104,105,110,111,112,113,118,119],[0,1,6,7,8,9,14,15,16,17,22,23,24,25,26,27,28,29,30,31,33,34,37,38,40,41,46,47,48,49,54,55,60,61,62,63,64,67,68,71,74,75,76,77,82,83,84,85,88,89,90,91,97,98,100,106,107,108,109,114,115,116,117],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,33,35,36,38,41,42,45,46,50,51,54,55,57,59,60,62,65,67,68,70,73,75,76,78,84,85,86,87,89,91,92,94,97,99,100,102,107,109,110,114,115,116,117],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,33,35,36,38,40,43,44,47,50,51,54,55,56,58,61,63,65,67,68,70,72,74,77,79,84,85,86,87,88,90,93,95,97,99,100,102,106,108,111,114,115,116,117],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,32,34,37,39,40,43,44,47,48,49,52,53,56,58,61,63,65,67,68,70,73,75,76,78,84,85,86,87,89,91,92,94,96,98,101,103,105,108,111,112,113,118,119],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,32,34,37,39,41,42,45,46,48,49,52,53,57,59,60,62,65,67,68,70,72,74,77,79,84,85,86,87,88,90,93,95,96,98,101,103,104,109,110,112,113,118,119],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,33,35,36,38,41,42,45,46,50,51,54,55,57,59,60,62,64,66,69,71,72,74,77,79,80,81,82,83,88,90,93,95,96,98,101,103,105,106,111,112,113,118,119],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,33,35,36,38,40,43,44,47,50,51,54,55,56,58,61,63,64,66,69,71,73,75,76,78,80,81,82,83,89,91,92,94,96,98,101,103,104,107,110,112,113,118,119],[0,2,4,6,9,11,13,15,16,17,18,19,20,21,22,23,25,27,28,30,32,34,37,39,40,43,44,47,48,49,52,53,56,58,61,63,64,66,69,71,72,74,77,79,80,81,82,83,88,90,93,95,97,99,100,102,104,107,109,114,115,116,117],[0,2,4,6,8,10,12,14,16,17,18,19,20,21,22,23,24,26,29,31,32,34,37,39,41,42,45,46,48,49,52,53,57,59,60,62,64,66,69,71,73,75,76,78,80,81,82,83,89,91,92,94,97,99,100,102,105,106,108,114,115,116,117],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,33,35,37,39,42,43,46,47,49,50,53,54,58,59,60,61,65,67,69,71,76,77,78,79,81,83,84,86,90,91,92,93,97,99,100,102,106,107,108,109,115,117,118],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,33,35,37,39,42,43,46,47,48,51,52,55,56,57,62,63,65,67,69,71,76,77,78,79,80,82,85,87,88,89,94,95,97,99,100,102,106,107,108,109,114,116,119],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,32,34,36,38,40,41,44,45,48,51,52,55,56,57,62,63,65,67,69,71,76,77,78,79,81,83,84,86,90,91,92,93,96,98,101,103,104,105,110,111,113,116,119],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,32,34,36,38,40,41,44,45,49,50,53,54,58,59,60,61,65,67,69,71,76,77,78,79,80,82,85,87,88,89,94,95,96,98,101,103,104,105,110,111,112,117,118],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,33,35,37,39,42,43,46,47,49,50,53,54,58,59,60,61,64,66,68,70,72,73,74,75,80,82,85,87,88,89,94,95,96,98,101,103,104,105,110,111,113,114,119],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,33,35,37,39,42,43,46,47,48,51,52,55,56,57,62,63,64,66,68,70,72,73,74,75,81,83,84,86,90,91,92,93,96,98,101,103,104,105,110,111,112,115,118],[1,2,4,7,8,9,10,11,12,13,14,15,17,19,21,23,26,27,30,31,32,34,36,38,40,41,44,45,48,51,52,55,56,57,62,63,64,66,68,70,72,73,74,75,80,82,85,87,88,89,94,95,97,99,100,102,106,107,108,109,112,115,117],[1,2,4,7,8,9,10,11,12,13,14,15,16,18,20,22,24,25,28,29,32,34,36,38,40,41,44,45,49,50,53,54,58,59,60,61,64,66,68,70,72,73,74,75,81,83,84,86,90,91,92,93,97,99,100,102,106,107,108,109,113,114,116]],"h":8,"lines":[[2,0,0,0,0,0,0,0],[0,2,0,0,0,0,0,0],[0,0,2,0,0,0,0,0],[0,0,0,2,0,0,0,0],[0,0,0,0,2,0,0,0],[0,0,0,0,0,2,0,0],[0,0,0,0,0,0,2,0],[0,0,0,0,0,0,0,2],[0,1,1,0,1,0,0,1],[0,1,1,0,1,0,0,-1],[0,1,1,0,-1,0,0,1],[0,1,1,0,-1,0,0,-1],[0,1,-1,0,1,0,0,1],[0,1,-1,0,1,0,0,-1],[0,1,-1,0,-1,0,0,1],[0,1,-1,0,-1,0,0,-1],[1,0,1,0,1,0,1,0],[1,0,1,0,1,0,-1,0],[1,0,1,0,-1,0,1,0],[1,0,1,0,-1,0,-1,0],[1,0,-1,0,1,0,1,0],[1,0,-1,0,1,0,-1,0],[1,0,-1,0,-1,0,1,0],[1,0,-1,0,-1,0,-1,0],[1,1,0,0,0,0,1,1],[1,1,0,0,0,0,1,-1],[1,1,0,0,0,0,-1,1],[1,1,0,0,0,0,-1,-1],[1,-1,0,0,0,0,1,1],[1,-1,0,0,0,0,1,-1],[1,-1,0,0,0,0,-1,1],[1,-1,0,0,0,0,-1,-1],[1,1,0,0,1,1,0,0],[1,1,0,0,1,-1,0,0],[1,1,0,0,-1,1,0,0],[1,1,0,0,-1,-1,0,0],[1,-1,0,0,1,1,0,0],[1,-1,0,0,1,-1,0,0],[1,-1,0,0,-1,1,0,0],[1,-1,0,0,-1,-1,0,0],[1,0,1,0,0,1,0,1],[1,0,1,0,0,1,0,-1],[1,0,1,0,0,-1,0,1],[1,0,1,0,0,-1,0,-1],[1,0,-1,0,0,1,0,1],[1,0,-1,0,0,1,0,-1],[1,0,-1,0,0,-1,0,1],[1,0,-1,0,0,-1,0,-1],[0,1,1,0,0,1,1,0],[0,1,1,0,0,1,-1,0],[0,1,1,0,0,-1,1,0],[0,1,1,0,0,-1,-1,0],[0,1,-1,0,0,1,1,0],[0,1,-1,0,0,1,-1,0],[0,1,-1,0,0,-1,1,0],[0,1,-1,0,0,-1,-1,0],[0,0,0,0,1,1,1,1],[0,0,0,0,1,1,1,-1],[0,0,0,0,1,1,-1,1],[0,0,0,0,1,1,-1,-1],[0,0,0,0,1,-1,1,1],[0,0,0,0,1,-1,1,-1],[0,0,0,0,1,-1,-1,1],[0,0,0,0,1,-1,-1,-1],[1,1,1,1,0,0,0,0],[1,1,1,-1,0,0,0,0],[1,1,-1,1,0,0,0,0],[1,1,-1,-1,0,0,0,0],[1,-1,1,1,0,0,0,0],[1,-1,1,-1,0,0,0,0],[1,-1,-1,1,0,0,0,0],[1,-1,-1,-1,0,0,0,0],[1,0,0,1,1,0,0,1],[1,0,0,1,1,0,0,-1],[1,0,0,1,-1,0,0,1],[1,0,0,1,-1,0,0,-1],[1,0,0,-1,1,0,0,1],[1,0,0,-1,1,0,0,-1],[1,0,0,-1,-1,0,0,1],[1,0,0,-1,-1,0,0,-1],[0,1,0,1,1,0,1,0],[0,1,0,1,1,0,-1,0],[0,1,0,1,-1,0,1,0],[0,1,0,1,-1,0,-1,0],[0,1,0,-1,1,0,1,0],[0,1,0,-1,1,0,-1,0],[0,1,0,-1,-1,0,1,0],[0,1,0,-1,-1,0,-1,0],[0,0,1,1,0,0,1,1],[0,0,1,1,0,0,1,-1],[0,0,1,1,0,0,-1,1],[0,0,1,1,0,0,-1,-1],[0,0,1,-1,0,0,1,1],[0,0,1,-1,0,0,1,-1],[0,0,1,-1,0,0,-1,1],[0,0,1,-1,0,0,-1,-1],[0,0,1,1,1,1,0,0],[0,0,1,1,1,-1,0,0],[0,0,1,1,-1,1,0,0],[0,0,1,1,-1,-1,0,0],[0,0,1,-1,1,1,0,0],[0,0,1,-1,1,-1,0,0],[0,0,1,-1,-1,1,0,0],[0,0,1,-1,-1,-1,0,0],[0,1,0,1,0,1,0,1],[0,1,0,1,0,1,0,-1],[0,1,0,1,0,-1,0,1],[0,1,0,1,0,-1,0,-1],[0,1,0,-1,0,1,0,1],[0,1,0,-1,0,1,0,-1],[0,1,0,-1,0,-1,0,1],[0,1,0,-1,0,-1,0,-1],[1,0,0,1,0,1,1,0],[1,0,0,1,0,1,-1,0],[1,0,0,1,0,-1,1,0],[1,0,0,1,0,-1,-1,0],[1,0,0,-1,0,1,1,0],[1,0,0,-1,0,1,-1,0],[1,0,0,-1,0,-1,1,0],[1,0,0,-1,0,-1,-1,0]],"ret":[246,247,252,253,254,255,258,259,260],"scatter":[[0,1],[0,2],[0,3],[0,1,2,3],[0,4],[0,1,2,4],[0,1,3,4],[0,2,3,4],[0,5],[0,2,3,4,5],[0,4,5],[0,2,3,5],[0,3,5],[0,2,4,5],[0,3,4,5],[0,2,5],[0,6],[0,1,3,4,6],[0,4,6],[0,1,3,6],[0,3,6],[0,1,4,6],[0,3,4,6],[0,1,6],[0,3,4,5,6],[0,2,5,6],[0,1,5,6],[0,1,2,3,4,5,6],[0,2,3,4,5,6],[0,5,6],[0,1,2,5,6],[0,1,3,4,5,6],[0,7],[0,1,2,4,7],[0,4,7],[0,1,2,7],[0,2,7],[0,1,4,7],[0,2,4,7],[0,1,7],[0,2,4,5,7],[0,3,5,7],[0,1,5,7],[0,1,2,3,4,5,7],[0,2,3,4,5,7],[0,5,7],[0,1,3,5,7],[0,1,2,4,5,7],[0,1,4,6,7],[0,3,6,7],[0,2,6,7],[0,1,2,3,4,6,7],[0,1,3,4,6,7],[0,6,7],[0,2,3,6,7],[0,1,2,4,6,7],[0,1,2,3,4,5,6,7],[0,1,5,6,7],[0,2,5,6,7],[0,3,4,5,6,7],[0,3,5,6,7],[0,2,4,5,6,7],[0,1,4,5,6,7],[0,1,2,3,5,6,7],[0,8],[0,1,2,3,8],[0,3,8],[0,1,2,8],[0,2,8],[0,1,3,8],[0,2,3,8],[0,1,8],[0,2,3,5,8],[0,4,5,8],[0,2,3,4,5,8],[0,5,8],[0,1,5,8],[0,1,2,3,4,5,8],[0,1,4,5,8],[0,1,2,3,5,8],[0,1,3,6,8],[0,4,6,8],[0,1,3,4,6,8],[0,6,8],[0,2,6,8],[0,1,2,3,4,6,8],[0,2,4,6,8],[0,1,2,3,6,8],[0,1,2,3,4,5,6,8],[0,1,5,6,8],[0,2,5,6,8],[0,3,4,5,6,8],[0,4,5,6,8],[0,2,3,5,6,8],[0,1,3,5,6,8],[0,1,2,4,5,6,8],[0,1,2,7,8],[0,4,7,8],[0,1,2,4,7,8],[0,7,8],[0,3,7,8],[0,1,2,3,4,7,8],[0,3,4,7,8],[0,1,2,3,7,8],[0,1,2,3,4,5,7,8],[0,1,5,7,8],[0,3,5,7,8],[0,2,4,5,7,8],[0,4,5,7,8],[0,2,3,5,7,8],[0,1,2,5,7,8],[0,1,3,4,5,7,8],[0,1,2,3,4,6,7,8],[0,2,6,7,8],[0,3,6,7,8],[0,1,4,6,7,8],[0,4,6,7,8],[0,1,3,6,7,8],[0,1,2,6,7,8],[0,2,3,4,6,7,8]],"start":[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,4,0,0,0,3,2,0,2,0,0,0,6,6,6,6,3,0,0,6,0,0,2,0,2,0,0,0,9,8,3,3,3,3,0,2,0,0,0,0,0,0,0,6,4,0,0,6,2,2,2,2,2,2,0,0,9,9,4,4,4,0,2,2,2,0,2,0,0,0,6,6,0,5,0,6,2,2,2,0,2,0,0,8,8,8,0,5,0,0,2,2,0,2,0,2,0,0,9,6,0,4,0,6,3,0,0,6,3,3,0,8,0,0,4,0,4,4,0,3,0,0,3,0,0,6,0,6,5,5,6,6,0,5,3,0,0,6,0,0,0,9,5,5,0,0,0,0,0,3,0,3,0,6,0,6,5,5,5,5,0,6,0,0,6,6,0,0,0,8,4,0,0,5,0,0,0,8,0,0,0,0,0,8,6,6,9,0,6,6,8,0,6,6,0,0,0,0,0,0,463,0,0,0,0,461,0,458,458,0,0,0,0,0,0,0,0,0,0,469,0,0,468,0,0,0,0,0,0,0,0,0,0,0,0,0,0,465,466,0,0,0],"v":120} \ No newline at end of file diff --git a/research/r740-block-retimed-kernel/stages/pair-retime-selection.json b/research/r740-block-retimed-kernel/stages/pair-retime-selection.json new file mode 100644 index 0000000000..1b7b7f33ff --- /dev/null +++ b/research/r740-block-retimed-kernel/stages/pair-retime-selection.json @@ -0,0 +1,6278 @@ +{ + "input_sha256": "bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e", + "output_sha256": "fc4d045fd68ba47e21d69b840a51128ff52739dca3c0f7b9255bd757e31737e7", + "moves": [ + { + "iteration": 0, + "gates": [ + 11473, + 11474 + ], + "old": 1080864571977105603, + "new": 717695740599131922222305771715, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11462, + 11574 + ], + "old": 8160191253976699249635404808396, + "new": 8160191254253400410767069544652, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11561, + 11562 + ], + "old": 1193064712879659926413702594800, + "new": 1193064713045680623141764727024, + "gain": 0.0009870240319838075 + }, + { + "iteration": 0, + "gates": [ + 11513, + 11514 + ], + "old": 1324035698927103573472051112892694633, + "new": 1324035698927107170591367610905921897, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11420, + 11542 + ], + "old": 4352166089900228502, + "new": 31153781151281373593838377865641878, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11470, + 11566 + ], + "old": 19089035405798938525424167158000, + "new": 19089035405909618989931100635376, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11428, + 11534 + ], + "old": 12321567105508992614, + "new": 77884452878052328921668033630463590, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11394, + 11502 + ], + "old": 14700029559209066661, + "new": 304236151311388386848705102610597, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11537, + 11538 + ], + "old": 14094296508832743318, + "new": 46730671726885866221560285785816982, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11359, + 11494 + ], + "old": 31567475705696935807574605839, + "new": 12153476340388572933841156571151, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11369, + 11490 + ], + "old": 7349875688796586035, + "new": 1190279350602594853281865924659, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11565, + 11589 + ], + "old": 19089035405798938525424167158000, + "new": 19089035405909618989931100635376, + "gain": 0.0015840426696875909 + }, + { + "iteration": 0, + "gates": [ + 11377, + 11478 + ], + "old": 17293823011467559107, + "new": 480011253072551867881164374211, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11446, + 11550 + ], + "old": 5172014572241624258547908635263146, + "new": 5172014572242565042512160497205418, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11541, + 11637 + ], + "old": 4352166089900228502, + "new": 31153781151281373593838377865641878, + "gain": 0.0015840426696875909 + }, + { + "iteration": 0, + "gates": [ + 11533, + 11629 + ], + "old": 12321567105508992614, + "new": 77884452878052328921668033630463590, + "gain": 0.0015840426696875909 + }, + { + "iteration": 0, + "gates": [ + 11545, + 11546 + ], + "old": 5172014633896830034082108742303914, + "new": 5172014633897770818046360604442794, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11412, + 11518 + ], + "old": 1324035698926862738906320254210670697, + "new": 1324035698926866336025636752223897193, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11468, + 11469 + ], + "old": 18374686479671623920, + "new": 18374686544347791600, + "gain": 0.0009611102648907632 + }, + { + "iteration": 0, + "gates": [ + 11577, + 11578 + ], + "old": 20250532647651096693756401811516, + "new": 20250532647927797854926620590140, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11489, + 11490 + ], + "old": 7349875688796586035, + "new": 1190279350602594853281865924659, + "gain": 0.001584042669688479 + }, + { + "iteration": 0, + "gates": [ + 11410, + 11411 + ], + "old": 1324035698926381045275276563951124585, + "new": 1324035698926384642394593061964349545, + "gain": 0.0009611102648907632 + }, + { + "iteration": 0, + "gates": [ + 11375, + 11376 + ], + "old": 4278190275, + "new": 4642277969672019312711303363, + "gain": 0.0009611102648907632 + }, + { + "iteration": 0, + "gates": [ + 11438, + 11558 + ], + "old": 2068806087848560870156522594762842, + "new": 2068806087849501654110878852644954, + "gain": 0.00030802761665604805 + }, + { + "iteration": 0, + "gates": [ + 11418, + 11419 + ], + "old": 65430, + "new": 72403470489309990158230, + "gain": 0.0009611102648907632 + }, + { + "iteration": 0, + "gates": [ + 11385, + 11510 + ], + "old": 6485295613616259157, + "new": 121694475758847514830896820584533, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11485, + 11486 + ], + "old": 47351211206585534313394077711, + "new": 12169260075889677705129089826831, + "gain": 0.0009870240319838075 + }, + { + "iteration": 0, + "gates": [ + 11509, + 11669 + ], + "old": 6485295613616259157, + "new": 121694475758847514830896820584533, + "gain": 0.0015840426696875909 + }, + { + "iteration": 0, + "gates": [ + 11493, + 11494 + ], + "old": 31567475705696935807574605839, + "new": 12153476340388572933841156571151, + "gain": 0.001584042669688479 + }, + { + "iteration": 0, + "gates": [ + 11521, + 11522 + ], + "old": 794421419357032844669528535296114841, + "new": 794421419357036441787156183449079705, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11505, + 11506 + ], + "old": 11889671241553870933, + "new": 182541704569807930478366512054357, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11529, + 11530 + ], + "old": 6196671612285131110, + "new": 77884452878066489896221149342243174, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11467, + 11468 + ], + "old": 18374686479671623920, + "new": 18374686544347791600, + "gain": 0.0012725764672882889 + }, + { + "iteration": 0, + "gates": [ + 11454, + 11582 + ], + "old": 20234748912146533157955503652924, + "new": 20234748912423234319125672099900, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11444, + 11445 + ], + "old": 5172014448931175958106549077934250, + "new": 5172014448932116742070800939483306, + "gain": 0.0009611102648907632 + }, + { + "iteration": 0, + "gates": [ + 11357, + 11358 + ], + "old": 4703919738795935662095, + "new": 12121908869386363391265290059791, + "gain": 0.0009611102648907632 + }, + { + "iteration": 0, + "gates": [ + 11569, + 11570 + ], + "old": 12200827542187967508247612489932, + "new": 12200827542464668669392162128076, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11426, + 11427 + ], + "old": 71776119061217382, + "new": 77884452878023982472979829311406182, + "gain": 0.0009611102648907632 + }, + { + "iteration": 0, + "gates": [ + 11402, + 11526 + ], + "old": 529614279571756625886698027385618585, + "new": 529614279571760223003481250608451481, + "gain": 0.0003080276166542717 + }, + { + "iteration": 0, + "gates": [ + 11481, + 11482 + ], + "old": 11024812985586548787, + "new": 1191207805635733825784830230579, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11549, + 11550 + ], + "old": 5172014572241624258547908635263146, + "new": 5172014572242565042512160497205418, + "gain": 0.0015840426696875909 + }, + { + "iteration": 0, + "gates": [ + 11501, + 11502 + ], + "old": 14700029559209066661, + "new": 304236151311388386848705102610597, + "gain": 0.001584042669688479 + }, + { + "iteration": 0, + "gates": [ + 11497, + 11498 + ], + "old": 3675217671409434789, + "new": 304236154938154820880704827097253, + "gain": 0.0009870240319846957 + }, + { + "iteration": 0, + "gates": [ + 11400, + 11401 + ], + "old": 1204203453131759529492633, + "new": 1207800568226132892061593, + "gain": 0.0009611102648907632 + }, + { + "iteration": 0, + "gates": [ + 11553, + 11554 + ], + "old": 3103208977634801466097385254944858, + "new": 3103208977635742250055040047710298, + "gain": 0.0009870240319846957 + }, + { + "iteration": 1, + "gates": [ + 11460, + 11461 + ], + "old": 78918677504442992524819169484, + "new": 78918677781144153630714101964, + "gain": 0.0009611102648907632 + }, + { + "iteration": 1, + "gates": [ + 11367, + 11368 + ], + "old": 1095216660531, + "new": 1188422440536316908275937312819, + "gain": 0.0009611102648907632 + }, + { + "iteration": 1, + "gates": [ + 11452, + 11453 + ], + "old": 20203181441137406086353707335740, + "new": 20203181441414107247523775119420, + "gain": 0.0009611102648907632 + }, + { + "iteration": 1, + "gates": [ + 11436, + 11437 + ], + "old": 308276084001730439550074970, + "new": 308277024785678198738190426, + "gain": 0.0009611102648907632 + }, + { + "iteration": 1, + "gates": [ + 11451, + 11452 + ], + "old": 20203181441137406086353707335740, + "new": 20203181441414107247523775119420, + "gain": 0.0012725764672882889 + }, + { + "iteration": 1, + "gates": [ + 11459, + 11460 + ], + "old": 78918677504442992524819169484, + "new": 78918677781144153630714101964, + "gain": 0.0012725764672900652 + }, + { + "iteration": 1, + "gates": [ + 11392, + 11393 + ], + "old": 280375465083045, + "new": 304236144057818769411746310389925, + "gain": 0.0009611102648907632 + }, + { + "iteration": 1, + "gates": [ + 11383, + 11384 + ], + "old": 16711765, + "new": 18136931006991599713321045, + "gain": 0.0009611102648907632 + } + ], + "gates": [ + [ + "B", + 5, + [ + 0, + 1, + 2, + 3, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + [ + 0, + 1, + 2, + 3, + 32, + 35, + 36, + 39, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 96, + 99, + 100, + 103 + ] + ], + [ + "B", + 6, + [ + 0, + 1, + 2, + 3, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + [ + 0, + 1, + 2, + 3, + 32, + 35, + 36, + 39, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 96, + 99, + 100, + 103 + ] + ], + [ + "B", + 7, + [ + 0, + 1, + 2, + 3, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + [ + 0, + 1, + 2, + 3, + 32, + 35, + 36, + 39, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 96, + 99, + 100, + 103 + ] + ], + [ + "B", + 8, + [ + 0, + 1, + 2, + 3, + 25, + 26, + 29, + 30, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 89, + 90, + 93, + 94 + ], + [ + 0, + 1, + 2, + 3, + 25, + 26, + 29, + 30, + 32, + 35, + 36, + 39, + 57, + 58, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 89, + 90, + 93, + 94, + 96, + 99, + 100, + 103 + ] + ], + [ + "B", + 15, + [ + 0, + 1, + 4, + 5, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ], + [ + 0, + 1, + 4, + 5, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 64, + 67, + 68, + 71, + 96, + 97, + 98, + 99 + ] + ], + [ + "B", + 16, + [ + 0, + 1, + 4, + 5, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ], + [ + 0, + 1, + 4, + 5, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 64, + 67, + 68, + 71, + 96, + 97, + 98, + 99 + ] + ], + [ + "B", + 17, + [ + 0, + 1, + 4, + 5, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39 + ], + [ + 0, + 1, + 4, + 5, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 64, + 67, + 68, + 71, + 96, + 97, + 98, + 99 + ] + ], + [ + "B", + 18, + [ + 0, + 1, + 4, + 5, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 57, + 58, + 61, + 62 + ], + [ + 0, + 1, + 4, + 5, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 57, + 58, + 61, + 62, + 64, + 67, + 68, + 71, + 89, + 90, + 96, + 97, + 98, + 99 + ] + ], + [ + "B", + 23, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31 + ], + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91 + ] + ], + [ + "B", + 24, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31 + ], + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91 + ] + ], + [ + "B", + 25, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31 + ], + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91 + ] + ], + [ + "B", + 26, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 60, + 61, + 62, + 63 + ], + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 60, + 61, + 62, + 63, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91, + 97, + 98 + ] + ], + [ + "B", + 31, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ], + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83 + ] + ], + [ + "B", + 32, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ], + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83 + ] + ], + [ + "B", + 33, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ], + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83 + ] + ], + [ + "B", + 34, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 41, + 42, + 45, + 46, + 57, + 59, + 60, + 62 + ], + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 41, + 42, + 45, + 46, + 57, + 59, + 60, + 62, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83, + 105, + 106 + ] + ], + [ + "B", + 40, + [ + 0, + 2, + 5, + 7, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + [ + 0, + 2, + 5, + 7, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 64, + 66, + 69, + 71, + 104, + 105, + 106, + 107 + ] + ], + [ + "B", + 41, + [ + 0, + 2, + 5, + 7, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + [ + 0, + 2, + 5, + 7, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 64, + 66, + 69, + 71, + 104, + 105, + 106, + 107 + ] + ], + [ + "B", + 42, + [ + 0, + 2, + 5, + 7, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + [ + 0, + 2, + 5, + 7, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 64, + 66, + 69, + 71, + 104, + 105, + 106, + 107 + ] + ], + [ + "B", + 43, + [ + 0, + 2, + 5, + 7, + 17, + 18, + 21, + 22, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 58, + 59, + 62, + 63 + ], + [ + 0, + 2, + 5, + 7, + 17, + 18, + 21, + 22, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 58, + 59, + 62, + 63, + 64, + 66, + 69, + 71, + 81, + 82, + 104, + 105, + 106, + 107 + ] + ], + [ + "B", + 48, + [ + 0, + 3, + 4, + 7, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + ], + [ + "B", + 49, + [ + 0, + 3, + 4, + 7, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + ], + [ + "B", + 50, + [ + 0, + 3, + 4, + 7, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ] + ], + [ + "B", + 51, + [ + 0, + 3, + 4, + 7, + 58, + 59, + 60, + 61, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 113, + 114, + 117, + 118 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 49, + 50, + 58, + 59, + 60, + 61, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 113, + 114, + 117, + 118 + ] + ], + [ + "B", + 58, + [ + 0, + 3, + 5, + 6, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 48, + 49, + 50, + 51, + 64, + 65, + 70, + 71, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 59, + [ + 0, + 3, + 5, + 6, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 48, + 49, + 50, + 51, + 64, + 65, + 70, + 71, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 60, + [ + 0, + 3, + 5, + 6, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 48, + 49, + 50, + 51, + 64, + 65, + 70, + 71, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 61, + [ + 0, + 3, + 5, + 6, + 57, + 59, + 61, + 63, + 73, + 74, + 77, + 78, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 9, + 10, + 48, + 49, + 50, + 51, + 57, + 59, + 61, + 63, + 64, + 65, + 70, + 71, + 73, + 74, + 77, + 78, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 66, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75 + ] + ], + [ + "B", + 67, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75 + ] + ], + [ + "B", + 68, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75 + ] + ], + [ + "B", + 69, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 113, + 114 + ] + ], + [ + "B", + 74, + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 64, + 66, + 68, + 70, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 75, + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 64, + 66, + 68, + 70, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 76, + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 64, + 66, + 68, + 70, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 77, + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63 + ], + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63, + 64, + 66, + 68, + 70, + 73, + 74, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 84, + [ + 1, + 3, + 4, + 6, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87 + ], + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87 + ] + ], + [ + "B", + 85, + [ + 1, + 3, + 4, + 6, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87 + ], + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87 + ] + ], + [ + "B", + 86, + [ + 1, + 3, + 4, + 6, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87 + ], + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87 + ] + ], + [ + "B", + 87, + [ + 1, + 3, + 4, + 6, + 57, + 59, + 60, + 62, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 105, + 106, + 109, + 110 + ], + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 41, + 42, + 57, + 59, + 60, + 62, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 105, + 106, + 109, + 110 + ] + ], + [ + "B", + 92, + [ + 1, + 3, + 5, + 7, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 40, + 41, + 42, + 43, + 64, + 65, + 68, + 69, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ] + ], + [ + "B", + 93, + [ + 1, + 3, + 5, + 7, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 40, + 41, + 42, + 43, + 64, + 65, + 68, + 69, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ] + ], + [ + "B", + 94, + [ + 1, + 3, + 5, + 7, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 40, + 41, + 42, + 43, + 64, + 65, + 68, + 69, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ] + ], + [ + "B", + 95, + [ + 1, + 3, + 5, + 7, + 58, + 59, + 62, + 63, + 81, + 82, + 85, + 86, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 17, + 18, + 40, + 41, + 42, + 43, + 58, + 59, + 62, + 63, + 64, + 65, + 68, + 69, + 81, + 82, + 85, + 86, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ] + ], + [ + "B", + 100, + [ + 2, + 3, + 4, + 5, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 32, + 33, + 34, + 35, + 64, + 65, + 66, + 67, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ] + ], + [ + "B", + 101, + [ + 2, + 3, + 4, + 5, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 32, + 33, + 34, + 35, + 64, + 65, + 66, + 67, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ] + ], + [ + "B", + 102, + [ + 2, + 3, + 4, + 5, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 32, + 33, + 34, + 35, + 64, + 65, + 66, + 67, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ] + ], + [ + "B", + 103, + [ + 2, + 3, + 4, + 5, + 57, + 58, + 61, + 62, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 25, + 26, + 32, + 33, + 34, + 35, + 57, + 58, + 61, + 62, + 64, + 65, + 66, + 67, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ] + ], + [ + "B", + 108, + [ + 2, + 3, + 6, + 7, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ] + ], + [ + "B", + 109, + [ + 2, + 3, + 6, + 7, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ] + ], + [ + "B", + 110, + [ + 2, + 3, + 6, + 7, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ] + ], + [ + "B", + 111, + [ + 2, + 3, + 6, + 7, + 60, + 61, + 62, + 63, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102 + ], + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 33, + 34, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102 + ] + ], + [ + "B", + 116, + [ + 4, + 5, + 6, + 7, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ] + ], + [ + "B", + 117, + [ + 4, + 5, + 6, + 7, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ] + ], + [ + "B", + 118, + [ + 4, + 5, + 6, + 7, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ] + ], + [ + "B", + 119, + [ + 4, + 5, + 6, + 7, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103 + ], + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 65, + 66, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103 + ] + ], + [ + "B", + 122, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 35, + 36, + 39, + 56, + 57, + 58, + 59 + ], + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 35, + 36, + 39, + 56, + 57, + 58, + 59, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91, + 96, + 99 + ] + ], + [ + "B", + 123, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 35, + 36, + 39, + 56, + 57, + 58, + 59 + ], + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 32, + 35, + 36, + 39, + 56, + 57, + 58, + 59, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91, + 96, + 99 + ] + ], + [ + "B", + 126, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 60, + 61, + 62, + 63 + ], + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 60, + 61, + 62, + 63, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91, + 97, + 98 + ] + ], + [ + "B", + 127, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 60, + 61, + 62, + 63 + ], + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 60, + 61, + 62, + 63, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91, + 97, + 98 + ] + ], + [ + "B", + 130, + [ + 0, + 1, + 4, + 5, + 24, + 27, + 28, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 56, + 59, + 60, + 63 + ], + [ + 0, + 1, + 4, + 5, + 24, + 27, + 28, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 56, + 59, + 60, + 63, + 64, + 67, + 68, + 71, + 88, + 91, + 96, + 97, + 98, + 99 + ] + ], + [ + "B", + 131, + [ + 0, + 1, + 4, + 5, + 24, + 27, + 28, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 56, + 59, + 60, + 63 + ], + [ + 0, + 1, + 4, + 5, + 24, + 27, + 28, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 56, + 59, + 60, + 63, + 64, + 67, + 68, + 71, + 88, + 91, + 96, + 97, + 98, + 99 + ] + ], + [ + "B", + 134, + [ + 0, + 1, + 2, + 3, + 24, + 27, + 28, + 31, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 88, + 91, + 92, + 95 + ], + [ + 0, + 1, + 2, + 3, + 24, + 27, + 28, + 31, + 32, + 35, + 36, + 39, + 56, + 59, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 88, + 91, + 92, + 95, + 96, + 99, + 100, + 103 + ] + ], + [ + "B", + 135, + [ + 0, + 1, + 2, + 3, + 24, + 27, + 28, + 31, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 88, + 91, + 92, + 95 + ], + [ + 0, + 1, + 2, + 3, + 24, + 27, + 28, + 31, + 32, + 35, + 36, + 39, + 56, + 59, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 88, + 91, + 92, + 95, + 96, + 99, + 100, + 103 + ] + ], + [ + "B", + 138, + [ + 0, + 1, + 4, + 5, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 57, + 58, + 61, + 62 + ], + [ + 0, + 1, + 4, + 5, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 57, + 58, + 61, + 62, + 64, + 67, + 68, + 71, + 89, + 90, + 96, + 97, + 98, + 99 + ] + ], + [ + "B", + 139, + [ + 0, + 1, + 4, + 5, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 57, + 58, + 61, + 62 + ], + [ + 0, + 1, + 4, + 5, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 57, + 58, + 61, + 62, + 64, + 67, + 68, + 71, + 89, + 90, + 96, + 97, + 98, + 99 + ] + ], + [ + "B", + 142, + [ + 0, + 1, + 2, + 3, + 25, + 26, + 29, + 30, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 89, + 90, + 93, + 94 + ], + [ + 0, + 1, + 2, + 3, + 25, + 26, + 29, + 30, + 32, + 35, + 36, + 39, + 57, + 58, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 89, + 90, + 93, + 94, + 96, + 99, + 100, + 103 + ] + ], + [ + "B", + 143, + [ + 0, + 1, + 2, + 3, + 25, + 26, + 29, + 30, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 89, + 90, + 93, + 94 + ], + [ + 0, + 1, + 2, + 3, + 25, + 26, + 29, + 30, + 32, + 35, + 36, + 39, + 57, + 58, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 89, + 90, + 93, + 94, + 96, + 99, + 100, + 103 + ] + ], + [ + "B", + 146, + [ + 0, + 2, + 5, + 7, + 16, + 19, + 20, + 23, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 56, + 57, + 60, + 61 + ], + [ + 0, + 2, + 5, + 7, + 16, + 19, + 20, + 23, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 56, + 57, + 60, + 61, + 64, + 66, + 69, + 71, + 80, + 83, + 104, + 105, + 106, + 107 + ] + ], + [ + "B", + 147, + [ + 0, + 2, + 5, + 7, + 16, + 19, + 20, + 23, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 56, + 57, + 60, + 61 + ], + [ + 0, + 2, + 5, + 7, + 16, + 19, + 20, + 23, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 56, + 57, + 60, + 61, + 64, + 66, + 69, + 71, + 80, + 83, + 104, + 105, + 106, + 107 + ] + ], + [ + "B", + 150, + [ + 0, + 2, + 5, + 7, + 17, + 18, + 21, + 22, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 58, + 59, + 62, + 63 + ], + [ + 0, + 2, + 5, + 7, + 17, + 18, + 21, + 22, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 58, + 59, + 62, + 63, + 64, + 66, + 69, + 71, + 81, + 82, + 104, + 105, + 106, + 107 + ] + ], + [ + "B", + 151, + [ + 0, + 2, + 5, + 7, + 17, + 18, + 21, + 22, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 58, + 59, + 62, + 63 + ], + [ + 0, + 2, + 5, + 7, + 17, + 18, + 21, + 22, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 58, + 59, + 62, + 63, + 64, + 66, + 69, + 71, + 81, + 82, + 104, + 105, + 106, + 107 + ] + ], + [ + "B", + 154, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 40, + 43, + 44, + 47, + 56, + 58, + 61, + 63 + ], + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 40, + 43, + 44, + 47, + 56, + 58, + 61, + 63, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83, + 104, + 107 + ] + ], + [ + "B", + 155, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 40, + 43, + 44, + 47, + 56, + 58, + 61, + 63 + ], + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 40, + 43, + 44, + 47, + 56, + 58, + 61, + 63, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83, + 104, + 107 + ] + ], + [ + "B", + 158, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 41, + 42, + 45, + 46, + 57, + 59, + 60, + 62 + ], + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 41, + 42, + 45, + 46, + 57, + 59, + 60, + 62, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83, + 105, + 106 + ] + ], + [ + "B", + 159, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 41, + 42, + 45, + 46, + 57, + 59, + 60, + 62 + ], + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 41, + 42, + 45, + 46, + 57, + 59, + 60, + 62, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83, + 105, + 106 + ] + ], + [ + "B", + 162, + [ + 0, + 3, + 5, + 6, + 56, + 58, + 60, + 62, + 72, + 75, + 76, + 79, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 8, + 11, + 48, + 49, + 50, + 51, + 56, + 58, + 60, + 62, + 64, + 65, + 70, + 71, + 72, + 75, + 76, + 79, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 163, + [ + 0, + 3, + 5, + 6, + 56, + 58, + 60, + 62, + 72, + 75, + 76, + 79, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 8, + 11, + 48, + 49, + 50, + 51, + 56, + 58, + 60, + 62, + 64, + 65, + 70, + 71, + 72, + 75, + 76, + 79, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 166, + [ + 0, + 3, + 5, + 6, + 57, + 59, + 61, + 63, + 73, + 74, + 77, + 78, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 9, + 10, + 48, + 49, + 50, + 51, + 57, + 59, + 61, + 63, + 64, + 65, + 70, + 71, + 73, + 74, + 77, + 78, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 167, + [ + 0, + 3, + 5, + 6, + 57, + 59, + 61, + 63, + 73, + 74, + 77, + 78, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 9, + 10, + 48, + 49, + 50, + 51, + 57, + 59, + 61, + 63, + 64, + 65, + 70, + 71, + 73, + 74, + 77, + 78, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 170, + [ + 0, + 3, + 4, + 7, + 56, + 57, + 62, + 63, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 112, + 115, + 116, + 119 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 48, + 51, + 56, + 57, + 62, + 63, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 112, + 115, + 116, + 119 + ] + ], + [ + "B", + 171, + [ + 0, + 3, + 4, + 7, + 56, + 57, + 62, + 63, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 112, + 115, + 116, + 119 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 48, + 51, + 56, + 57, + 62, + 63, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 112, + 115, + 116, + 119 + ] + ], + [ + "B", + 174, + [ + 0, + 3, + 4, + 7, + 58, + 59, + 60, + 61, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 113, + 114, + 117, + 118 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 49, + 50, + 58, + 59, + 60, + 61, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 113, + 114, + 117, + 118 + ] + ], + [ + "B", + 175, + [ + 0, + 3, + 4, + 7, + 58, + 59, + 60, + 61, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 113, + 114, + 117, + 118 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 49, + 50, + 58, + 59, + 60, + 61, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 113, + 114, + 117, + 118 + ] + ], + [ + "B", + 178, + [ + 1, + 2, + 5, + 6, + 8, + 11, + 12, + 15, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 58, + 60, + 62 + ], + [ + 1, + 2, + 5, + 6, + 8, + 11, + 12, + 15, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 75, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 179, + [ + 1, + 2, + 5, + 6, + 8, + 11, + 12, + 15, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 58, + 60, + 62 + ], + [ + 1, + 2, + 5, + 6, + 8, + 11, + 12, + 15, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 58, + 60, + 62, + 64, + 66, + 68, + 70, + 72, + 75, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 182, + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63 + ], + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63, + 64, + 66, + 68, + 70, + 73, + 74, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 183, + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63 + ], + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63, + 64, + 66, + 68, + 70, + 73, + 74, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 186, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 48, + 51, + 52, + 55, + 56, + 57, + 62, + 63 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 48, + 51, + 52, + 55, + 56, + 57, + 62, + 63, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 112, + 115 + ] + ], + [ + "B", + 187, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 48, + 51, + 52, + 55, + 56, + 57, + 62, + 63 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 48, + 51, + 52, + 55, + 56, + 57, + 62, + 63, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 112, + 115 + ] + ], + [ + "B", + 190, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 113, + 114 + ] + ], + [ + "B", + 191, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 113, + 114 + ] + ], + [ + "B", + 194, + [ + 1, + 3, + 5, + 7, + 56, + 57, + 60, + 61, + 80, + 83, + 84, + 87, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 16, + 19, + 40, + 41, + 42, + 43, + 56, + 57, + 60, + 61, + 64, + 65, + 68, + 69, + 80, + 83, + 84, + 87, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ] + ], + [ + "B", + 195, + [ + 1, + 3, + 5, + 7, + 56, + 57, + 60, + 61, + 80, + 83, + 84, + 87, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 16, + 19, + 40, + 41, + 42, + 43, + 56, + 57, + 60, + 61, + 64, + 65, + 68, + 69, + 80, + 83, + 84, + 87, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ] + ], + [ + "B", + 198, + [ + 1, + 3, + 5, + 7, + 58, + 59, + 62, + 63, + 81, + 82, + 85, + 86, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 17, + 18, + 40, + 41, + 42, + 43, + 58, + 59, + 62, + 63, + 64, + 65, + 68, + 69, + 81, + 82, + 85, + 86, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ] + ], + [ + "B", + 199, + [ + 1, + 3, + 5, + 7, + 58, + 59, + 62, + 63, + 81, + 82, + 85, + 86, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 17, + 18, + 40, + 41, + 42, + 43, + 58, + 59, + 62, + 63, + 64, + 65, + 68, + 69, + 81, + 82, + 85, + 86, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ] + ], + [ + "B", + 202, + [ + 1, + 3, + 4, + 6, + 56, + 58, + 61, + 63, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 104, + 107, + 108, + 111 + ], + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 40, + 43, + 56, + 58, + 61, + 63, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 104, + 107, + 108, + 111 + ] + ], + [ + "B", + 203, + [ + 1, + 3, + 4, + 6, + 56, + 58, + 61, + 63, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 104, + 107, + 108, + 111 + ], + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 40, + 43, + 56, + 58, + 61, + 63, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 104, + 107, + 108, + 111 + ] + ], + [ + "B", + 206, + [ + 1, + 3, + 4, + 6, + 57, + 59, + 60, + 62, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 105, + 106, + 109, + 110 + ], + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 41, + 42, + 57, + 59, + 60, + 62, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 105, + 106, + 109, + 110 + ] + ], + [ + "B", + 207, + [ + 1, + 3, + 4, + 6, + 57, + 59, + 60, + 62, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 105, + 106, + 109, + 110 + ], + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 41, + 42, + 57, + 59, + 60, + 62, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 105, + 106, + 109, + 110 + ] + ], + [ + "B", + 210, + [ + 4, + 5, + 6, + 7, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 88, + 89, + 90, + 91, + 96, + 97, + 98, + 99 + ], + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 67, + 88, + 89, + 90, + 91, + 96, + 97, + 98, + 99 + ] + ], + [ + "B", + 211, + [ + 4, + 5, + 6, + 7, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 88, + 89, + 90, + 91, + 96, + 97, + 98, + 99 + ], + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 64, + 67, + 88, + 89, + 90, + 91, + 96, + 97, + 98, + 99 + ] + ], + [ + "B", + 214, + [ + 4, + 5, + 6, + 7, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103 + ], + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 65, + 66, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103 + ] + ], + [ + "B", + 215, + [ + 4, + 5, + 6, + 7, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103 + ], + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 65, + 66, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103 + ] + ], + [ + "B", + 218, + [ + 2, + 3, + 6, + 7, + 56, + 57, + 58, + 59, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 99, + 100, + 103 + ], + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 35, + 56, + 57, + 58, + 59, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 99, + 100, + 103 + ] + ], + [ + "B", + 219, + [ + 2, + 3, + 6, + 7, + 56, + 57, + 58, + 59, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 99, + 100, + 103 + ], + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 35, + 56, + 57, + 58, + 59, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 96, + 99, + 100, + 103 + ] + ], + [ + "B", + 222, + [ + 2, + 3, + 6, + 7, + 60, + 61, + 62, + 63, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102 + ], + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 33, + 34, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102 + ] + ], + [ + "B", + 223, + [ + 2, + 3, + 6, + 7, + 60, + 61, + 62, + 63, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102 + ], + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 33, + 34, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102 + ] + ], + [ + "B", + 226, + [ + 2, + 3, + 4, + 5, + 56, + 59, + 60, + 63, + 88, + 91, + 92, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 24, + 27, + 32, + 33, + 34, + 35, + 56, + 59, + 60, + 63, + 64, + 65, + 66, + 67, + 88, + 91, + 92, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ] + ], + [ + "B", + 227, + [ + 2, + 3, + 4, + 5, + 56, + 59, + 60, + 63, + 88, + 91, + 92, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 24, + 27, + 32, + 33, + 34, + 35, + 56, + 59, + 60, + 63, + 64, + 65, + 66, + 67, + 88, + 91, + 92, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ] + ], + [ + "B", + 230, + [ + 2, + 3, + 4, + 5, + 57, + 58, + 61, + 62, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 25, + 26, + 32, + 33, + 34, + 35, + 57, + 58, + 61, + 62, + 64, + 65, + 66, + 67, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ] + ], + [ + "B", + 231, + [ + 2, + 3, + 4, + 5, + 57, + 58, + 61, + 62, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 25, + 26, + 32, + 33, + 34, + 35, + 57, + 58, + 61, + 62, + 64, + 65, + 66, + 67, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ] + ] + ] +} \ No newline at end of file diff --git a/research/r740-block-retimed-kernel/stages/retime-selection.json b/research/r740-block-retimed-kernel/stages/retime-selection.json new file mode 100644 index 0000000000..42a29f7d9a --- /dev/null +++ b/research/r740-block-retimed-kernel/stages/retime-selection.json @@ -0,0 +1,726 @@ +{ + "stage": "retime", + "input_sha256": "b5789bffbf7bafe77a222366ea9a125b1d4a6f9d84b96afc4bb3c509d6b89b1a", + "output_sha256": "bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e", + "gates": [ + [ + "A", + 549, + [ + 64, + 67 + ], + [ + 64 + ] + ], + [ + "A", + 552, + [ + 65, + 66 + ], + [ + 65 + ] + ], + [ + "A", + 555, + [ + 68, + 71 + ], + [ + 68 + ] + ], + [ + "A", + 558, + [ + 69, + 70 + ], + [ + 69 + ] + ], + [ + "A", + 577, + [ + 32, + 35 + ], + [ + 32 + ] + ], + [ + "A", + 580, + [ + 33, + 34 + ], + [ + 33 + ] + ], + [ + "A", + 583, + [ + 36, + 39 + ], + [ + 36 + ] + ], + [ + "A", + 586, + [ + 37, + 38 + ], + [ + 37 + ] + ], + [ + "A", + 605, + [ + 24, + 27 + ], + [ + 24 + ] + ], + [ + "A", + 608, + [ + 25, + 26 + ], + [ + 25 + ] + ], + [ + "A", + 611, + [ + 28, + 31 + ], + [ + 28 + ] + ], + [ + "A", + 614, + [ + 29, + 30 + ], + [ + 29 + ] + ], + [ + "A", + 633, + [ + 16, + 19 + ], + [ + 16 + ] + ], + [ + "A", + 636, + [ + 17, + 18 + ], + [ + 17 + ] + ], + [ + "A", + 639, + [ + 20, + 23 + ], + [ + 20 + ] + ], + [ + "A", + 642, + [ + 21, + 22 + ], + [ + 21 + ] + ], + [ + "A", + 661, + [ + 40, + 43 + ], + [ + 40 + ] + ], + [ + "A", + 664, + [ + 41, + 42 + ], + [ + 41 + ] + ], + [ + "A", + 667, + [ + 44, + 47 + ], + [ + 44 + ] + ], + [ + "A", + 670, + [ + 45, + 46 + ], + [ + 45 + ] + ], + [ + "A", + 689, + [ + 72, + 75 + ], + [ + 72 + ] + ], + [ + "A", + 692, + [ + 73, + 74 + ], + [ + 73 + ] + ], + [ + "A", + 695, + [ + 76, + 79 + ], + [ + 76 + ] + ], + [ + "A", + 698, + [ + 77, + 78 + ], + [ + 77 + ] + ], + [ + "A", + 717, + [ + 112, + 115 + ], + [ + 112 + ] + ], + [ + "A", + 720, + [ + 113, + 114 + ], + [ + 113 + ] + ], + [ + "A", + 723, + [ + 116, + 119 + ], + [ + 116 + ] + ], + [ + "A", + 726, + [ + 117, + 118 + ], + [ + 117 + ] + ], + [ + "A", + 745, + [ + 8, + 11 + ], + [ + 8 + ] + ], + [ + "A", + 748, + [ + 9, + 10 + ], + [ + 9 + ] + ], + [ + "A", + 751, + [ + 12, + 15 + ], + [ + 12 + ] + ], + [ + "A", + 754, + [ + 13, + 14 + ], + [ + 13 + ] + ], + [ + "A", + 773, + [ + 48, + 51 + ], + [ + 48 + ] + ], + [ + "A", + 776, + [ + 49, + 50 + ], + [ + 49 + ] + ], + [ + "A", + 779, + [ + 52, + 55 + ], + [ + 52 + ] + ], + [ + "A", + 782, + [ + 53, + 54 + ], + [ + 53 + ] + ], + [ + "A", + 801, + [ + 80, + 83 + ], + [ + 80 + ] + ], + [ + "A", + 804, + [ + 81, + 82 + ], + [ + 81 + ] + ], + [ + "A", + 807, + [ + 84, + 87 + ], + [ + 84 + ] + ], + [ + "A", + 810, + [ + 85, + 86 + ], + [ + 85 + ] + ], + [ + "A", + 829, + [ + 104, + 107 + ], + [ + 104 + ] + ], + [ + "A", + 832, + [ + 105, + 106 + ], + [ + 105 + ] + ], + [ + "A", + 835, + [ + 108, + 111 + ], + [ + 108 + ] + ], + [ + "A", + 838, + [ + 109, + 110 + ], + [ + 109 + ] + ], + [ + "A", + 857, + [ + 96, + 99 + ], + [ + 96 + ] + ], + [ + "A", + 860, + [ + 97, + 98 + ], + [ + 97 + ] + ], + [ + "A", + 863, + [ + 100, + 103 + ], + [ + 100 + ] + ], + [ + "A", + 866, + [ + 101, + 102 + ], + [ + 101 + ] + ], + [ + "A", + 885, + [ + 88, + 91 + ], + [ + 88 + ] + ], + [ + "A", + 888, + [ + 89, + 90 + ], + [ + 89 + ] + ], + [ + "A", + 891, + [ + 92, + 95 + ], + [ + 92 + ] + ], + [ + "A", + 894, + [ + 93, + 94 + ], + [ + 93 + ] + ], + [ + "A", + 913, + [ + 56, + 59 + ], + [ + 56 + ] + ], + [ + "A", + 916, + [ + 57, + 58 + ], + [ + 57 + ] + ], + [ + "A", + 919, + [ + 60, + 63 + ], + [ + 60 + ] + ], + [ + "A", + 922, + [ + 61, + 62 + ], + [ + 61 + ] + ], + [ + "A", + 2312, + [ + 0, + 1, + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + [ + 0, + 1, + 2, + 3, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ] + ], + "primitive_input_sha256": "cb2afa377baeb8578e867ecda0f81caa68b2dac9cca805f41247754cfe91deb5", + "preparation": "Expand every D/A/B/C [frame,destination,sources] into [frame,destination,[source]] in original source order before applying gate-index changes." +} diff --git a/research/r740-block-retimed-kernel/stages/window-retime-selection.json b/research/r740-block-retimed-kernel/stages/window-retime-selection.json new file mode 100644 index 0000000000..d816fc0da6 --- /dev/null +++ b/research/r740-block-retimed-kernel/stages/window-retime-selection.json @@ -0,0 +1,4409 @@ +{ + "input_sha256": "fc4d045fd68ba47e21d69b840a51128ff52739dca3c0f7b9255bd757e31737e7", + "output_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "moves": [ + { + "iteration": 0, + "gates": [ + 11394, + 11502, + 11662 + ], + "old": 304236151311388386848705102610597, + "new": 467615725697923475222285570175021989, + "gain": 0.00010882458330208067 + }, + { + "iteration": 0, + "gates": [ + 11446, + 11550, + 11614, + 11749 + ], + "old": 5172014572242565042512160497205418, + "new": 446533473228038667662826771012009130, + "gain": 0.00010882458330740974 + }, + { + "iteration": 0, + "gates": [ + 11402, + 11526, + 11654 + ], + "old": 529614279571760223003481250608451481, + "new": 530662214486874581358701244873052057, + "gain": 0.00010882458330563338 + }, + { + "iteration": 0, + "gates": [ + 11470, + 11566, + 11590, + 11845 + ], + "old": 19089035405909618989931100635376, + "new": 82771320508518052368924429394112752, + "gain": 0.00010882458330740974 + }, + { + "iteration": 0, + "gates": [ + 11412, + 11518, + 11646 + ], + "old": 1324035698926866336025636752223897193, + "new": 1325775918962436524365648919009171049, + "gain": 0.00010882458330563338 + }, + { + "iteration": 0, + "gates": [ + 11462, + 11574, + 11598, + 11781 + ], + "old": 8160191254253400410767069544652, + "new": 268952911782537111171439061732936908, + "gain": 0.00010882458330385703 + }, + { + "iteration": 0, + "gates": [ + 11454, + 11582, + 11606 + ], + "old": 20234748912423234319125672099900, + "new": 444813477562912346164957430720866876, + "gain": 0.00010882458330563338 + }, + { + "iteration": 0, + "gates": [ + 11359, + 11494, + 11694 + ], + "old": 12153476340388572933841156571151, + "new": 531695239012153450720948508243368207, + "gain": 0.00010882458330563338 + }, + { + "iteration": 0, + "gates": [ + 11438, + 11558, + 11622 + ], + "old": 2068806087849501654110878852644954, + "new": 266889467273606206443169154457360986, + "gain": 0.00010882458330563338 + }, + { + "iteration": 0, + "gates": [ + 11428, + 11534, + 11630 + ], + "old": 77884452878052328921668033630463590, + "new": 79714651358393826081832427880408678, + "gain": 0.00010882458330563338 + }, + { + "iteration": 0, + "gates": [ + 11420, + 11542, + 11638 + ], + "old": 31153781151281373593838377865641878, + "new": 115454624676587912712223763402719126, + "gain": 0.00010882458330208067 + }, + { + "iteration": 0, + "gates": [ + 11369, + 11490, + 11686 + ], + "old": 1190279350602594853281865924659, + "new": 469133329472802233437673988087457075, + "gain": 0.00010882458330563338 + }, + { + "iteration": 0, + "gates": [ + 11385, + 11510, + 11670, + 11925 + ], + "old": 121694475758847514830896820584533, + "new": 311991182930209112662697640099534165, + "gain": 0.00010882458330385703 + }, + { + "iteration": 0, + "gates": [ + 11377, + 11478, + 11678, + 11909 + ], + "old": 480011253072551867881164374211, + "new": 312756503822980949939487947131962307, + "gain": 0.00010882458330385703 + } + ], + "gates": [ + [ + "B", + 8, + [ + 0, + 1, + 2, + 3, + 25, + 26, + 29, + 30, + 32, + 35, + 36, + 39, + 57, + 58, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 89, + 90, + 93, + 94, + 96, + 99, + 100, + 103 + ], + [ + 0, + 1, + 2, + 3, + 8, + 11, + 12, + 15, + 16, + 19, + 20, + 23, + 25, + 26, + 29, + 30, + 32, + 35, + 36, + 39, + 41, + 42, + 45, + 46, + 49, + 50, + 53, + 54, + 57, + 58, + 60, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 75, + 76, + 79, + 80, + 83, + 84, + 87, + 89, + 90, + 93, + 94, + 96, + 99, + 100, + 103, + 105, + 106, + 109, + 110, + 113, + 114, + 117, + 118 + ] + ], + [ + "B", + 18, + [ + 0, + 1, + 4, + 5, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 57, + 58, + 61, + 62, + 64, + 67, + 68, + 71, + 89, + 90, + 96, + 97, + 98, + 99 + ], + [ + 0, + 1, + 4, + 5, + 8, + 10, + 13, + 15, + 16, + 18, + 21, + 23, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 42, + 45, + 47, + 48, + 50, + 53, + 55, + 57, + 58, + 61, + 62, + 64, + 67, + 68, + 71, + 73, + 75, + 76, + 78, + 81, + 83, + 84, + 86, + 89, + 90, + 92, + 96, + 97, + 98, + 99, + 105, + 107, + 108, + 110, + 113, + 115, + 116, + 118 + ] + ], + [ + "B", + 26, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 60, + 61, + 62, + 63, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91, + 97, + 98 + ], + [ + 0, + 1, + 6, + 7, + 8, + 9, + 14, + 15, + 16, + 17, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 40, + 41, + 46, + 47, + 48, + 49, + 54, + 55, + 60, + 61, + 62, + 63, + 64, + 67, + 68, + 71, + 74, + 75, + 76, + 77, + 82, + 83, + 84, + 85, + 88, + 89, + 90, + 91, + 97, + 98, + 100, + 106, + 107, + 108, + 109, + 114, + 115, + 116, + 117 + ] + ], + [ + "B", + 34, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 41, + 42, + 45, + 46, + 57, + 59, + 60, + 62, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83, + 105, + 106 + ], + [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 26, + 29, + 31, + 32, + 34, + 37, + 39, + 41, + 42, + 45, + 46, + 48, + 49, + 52, + 53, + 57, + 59, + 60, + 62, + 64, + 66, + 69, + 71, + 73, + 75, + 76, + 78, + 80, + 81, + 82, + 83, + 89, + 91, + 92, + 94, + 97, + 99, + 100, + 102, + 105, + 106, + 108, + 114, + 115, + 116, + 117 + ] + ], + [ + "B", + 43, + [ + 0, + 2, + 5, + 7, + 17, + 18, + 21, + 22, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 58, + 59, + 62, + 63, + 64, + 66, + 69, + 71, + 81, + 82, + 104, + 105, + 106, + 107 + ], + [ + 0, + 2, + 5, + 7, + 8, + 9, + 12, + 13, + 17, + 18, + 21, + 22, + 24, + 25, + 30, + 31, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 50, + 52, + 54, + 58, + 59, + 62, + 63, + 64, + 66, + 69, + 71, + 74, + 75, + 76, + 77, + 81, + 82, + 84, + 90, + 91, + 92, + 93, + 98, + 99, + 100, + 101, + 104, + 105, + 106, + 107, + 113, + 115, + 116, + 118 + ] + ], + [ + "B", + 51, + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 49, + 50, + 58, + 59, + 60, + 61, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 113, + 114, + 117, + 118 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 17, + 19, + 20, + 22, + 24, + 25, + 30, + 31, + 32, + 34, + 37, + 39, + 42, + 43, + 44, + 45, + 49, + 50, + 52, + 58, + 59, + 60, + 61, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 82, + 84, + 86, + 90, + 91, + 94, + 95, + 97, + 99, + 101, + 103, + 104, + 105, + 108, + 109, + 113, + 114, + 117, + 118 + ] + ], + [ + "B", + 61, + [ + 0, + 3, + 5, + 6, + 9, + 10, + 48, + 49, + 50, + 51, + 57, + 59, + 61, + 63, + 64, + 65, + 70, + 71, + 73, + 74, + 77, + 78, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 9, + 10, + 12, + 18, + 19, + 20, + 21, + 24, + 26, + 29, + 31, + 32, + 33, + 38, + 39, + 41, + 43, + 44, + 46, + 48, + 49, + 50, + 51, + 57, + 59, + 61, + 63, + 64, + 65, + 70, + 71, + 73, + 74, + 77, + 78, + 80, + 81, + 84, + 85, + 89, + 91, + 93, + 95, + 98, + 99, + 102, + 103, + 104, + 106, + 108, + 110, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 69, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 113, + 114 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 18, + 20, + 22, + 24, + 25, + 28, + 29, + 32, + 34, + 36, + 38, + 40, + 41, + 44, + 45, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 81, + 83, + 84, + 86, + 90, + 91, + 92, + 93, + 97, + 99, + 100, + 102, + 106, + 107, + 108, + 109, + 113, + 114, + 116 + ] + ], + [ + "B", + 77, + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63, + 64, + 66, + 68, + 70, + 73, + 74, + 112, + 113, + 114, + 115 + ], + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 16, + 17, + 20, + 21, + 24, + 26, + 28, + 30, + 32, + 33, + 36, + 37, + 40, + 42, + 44, + 46, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63, + 64, + 66, + 68, + 70, + 73, + 74, + 76, + 82, + 83, + 84, + 85, + 89, + 91, + 92, + 94, + 98, + 99, + 100, + 101, + 105, + 107, + 108, + 110, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 87, + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 41, + 42, + 57, + 59, + 60, + 62, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 105, + 106, + 109, + 110 + ], + [ + 1, + 3, + 4, + 6, + 9, + 11, + 12, + 14, + 16, + 17, + 18, + 19, + 24, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 41, + 42, + 44, + 50, + 51, + 52, + 53, + 57, + 59, + 60, + 62, + 64, + 65, + 68, + 69, + 72, + 74, + 76, + 78, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 105, + 106, + 109, + 110, + 112, + 113, + 116, + 117 + ] + ], + [ + "B", + 95, + [ + 1, + 3, + 5, + 7, + 17, + 18, + 40, + 41, + 42, + 43, + 58, + 59, + 62, + 63, + 64, + 65, + 68, + 69, + 81, + 82, + 85, + 86, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 10, + 11, + 12, + 13, + 17, + 18, + 20, + 24, + 25, + 28, + 29, + 32, + 33, + 36, + 37, + 40, + 41, + 42, + 43, + 49, + 51, + 52, + 54, + 58, + 59, + 62, + 63, + 64, + 65, + 68, + 69, + 72, + 73, + 76, + 77, + 81, + 82, + 85, + 86, + 90, + 91, + 94, + 95, + 98, + 99, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 114, + 116, + 118 + ] + ], + [ + "B", + 103, + [ + 2, + 3, + 4, + 5, + 25, + 26, + 32, + 33, + 34, + 35, + 57, + 58, + 61, + 62, + 64, + 65, + 66, + 67, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 9, + 11, + 13, + 15, + 16, + 18, + 20, + 22, + 25, + 26, + 28, + 32, + 33, + 34, + 35, + 40, + 42, + 44, + 46, + 49, + 51, + 53, + 55, + 57, + 58, + 61, + 62, + 64, + 65, + 66, + 67, + 72, + 74, + 76, + 78, + 81, + 83, + 85, + 87, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 105, + 107, + 109, + 111, + 112, + 114, + 116, + 118 + ] + ], + [ + "B", + 111, + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 33, + 34, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102 + ], + [ + 2, + 3, + 6, + 7, + 10, + 11, + 14, + 15, + 16, + 17, + 20, + 21, + 24, + 25, + 26, + 27, + 33, + 34, + 36, + 40, + 41, + 44, + 45, + 50, + 51, + 54, + 55, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 72, + 73, + 76, + 77, + 82, + 83, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102, + 106, + 107, + 110, + 111, + 112, + 113, + 116, + 117 + ] + ], + [ + "B", + 119, + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 65, + 66, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103 + ], + [ + 4, + 5, + 6, + 7, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 40, + 41, + 42, + 43, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 65, + 66, + 68, + 72, + 73, + 74, + 75, + 84, + 85, + 86, + 87, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 127, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 60, + 61, + 62, + 63, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91, + 97, + 98 + ], + [ + 0, + 1, + 6, + 7, + 8, + 9, + 14, + 15, + 16, + 17, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 40, + 41, + 46, + 47, + 48, + 49, + 54, + 55, + 60, + 61, + 62, + 63, + 64, + 67, + 68, + 71, + 74, + 75, + 76, + 77, + 82, + 83, + 84, + 85, + 88, + 89, + 90, + 91, + 97, + 98, + 100, + 106, + 107, + 108, + 109, + 114, + 115, + 116, + 117 + ] + ], + [ + "B", + 139, + [ + 0, + 1, + 4, + 5, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 57, + 58, + 61, + 62, + 64, + 67, + 68, + 71, + 89, + 90, + 96, + 97, + 98, + 99 + ], + [ + 0, + 1, + 4, + 5, + 8, + 10, + 13, + 15, + 16, + 18, + 21, + 23, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 42, + 45, + 47, + 48, + 50, + 53, + 55, + 57, + 58, + 61, + 62, + 64, + 67, + 68, + 71, + 73, + 75, + 76, + 78, + 81, + 83, + 84, + 86, + 89, + 90, + 92, + 96, + 97, + 98, + 99, + 105, + 107, + 108, + 110, + 113, + 115, + 116, + 118 + ] + ], + [ + "B", + 143, + [ + 0, + 1, + 2, + 3, + 25, + 26, + 29, + 30, + 32, + 35, + 36, + 39, + 57, + 58, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 89, + 90, + 93, + 94, + 96, + 99, + 100, + 103 + ], + [ + 0, + 1, + 2, + 3, + 8, + 11, + 12, + 15, + 16, + 19, + 20, + 23, + 25, + 26, + 29, + 30, + 32, + 35, + 36, + 39, + 41, + 42, + 45, + 46, + 49, + 50, + 53, + 54, + 57, + 58, + 60, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 75, + 76, + 79, + 80, + 83, + 84, + 87, + 89, + 90, + 93, + 94, + 96, + 99, + 100, + 103, + 105, + 106, + 109, + 110, + 113, + 114, + 117, + 118 + ] + ], + [ + "B", + 151, + [ + 0, + 2, + 5, + 7, + 17, + 18, + 21, + 22, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 58, + 59, + 62, + 63, + 64, + 66, + 69, + 71, + 81, + 82, + 104, + 105, + 106, + 107 + ], + [ + 0, + 2, + 5, + 7, + 8, + 9, + 12, + 13, + 17, + 18, + 21, + 22, + 24, + 25, + 30, + 31, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 50, + 52, + 54, + 58, + 59, + 62, + 63, + 64, + 66, + 69, + 71, + 74, + 75, + 76, + 77, + 81, + 82, + 84, + 90, + 91, + 92, + 93, + 98, + 99, + 100, + 101, + 104, + 105, + 106, + 107, + 113, + 115, + 116, + 118 + ] + ], + [ + "B", + 159, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 41, + 42, + 45, + 46, + 57, + 59, + 60, + 62, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83, + 105, + 106 + ], + [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 26, + 29, + 31, + 32, + 34, + 37, + 39, + 41, + 42, + 45, + 46, + 48, + 49, + 52, + 53, + 57, + 59, + 60, + 62, + 64, + 66, + 69, + 71, + 73, + 75, + 76, + 78, + 80, + 81, + 82, + 83, + 89, + 91, + 92, + 94, + 97, + 99, + 100, + 102, + 105, + 106, + 108, + 114, + 115, + 116, + 117 + ] + ], + [ + "B", + 167, + [ + 0, + 3, + 5, + 6, + 9, + 10, + 48, + 49, + 50, + 51, + 57, + 59, + 61, + 63, + 64, + 65, + 70, + 71, + 73, + 74, + 77, + 78, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 9, + 10, + 12, + 18, + 19, + 20, + 21, + 24, + 26, + 29, + 31, + 32, + 33, + 38, + 39, + 41, + 43, + 44, + 46, + 48, + 49, + 50, + 51, + 57, + 59, + 61, + 63, + 64, + 65, + 70, + 71, + 73, + 74, + 77, + 78, + 80, + 81, + 84, + 85, + 89, + 91, + 93, + 95, + 98, + 99, + 102, + 103, + 104, + 106, + 108, + 110, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 175, + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 49, + 50, + 58, + 59, + 60, + 61, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 113, + 114, + 117, + 118 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 17, + 19, + 20, + 22, + 24, + 25, + 30, + 31, + 32, + 34, + 37, + 39, + 42, + 43, + 44, + 45, + 49, + 50, + 52, + 58, + 59, + 60, + 61, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 82, + 84, + 86, + 90, + 91, + 94, + 95, + 97, + 99, + 101, + 103, + 104, + 105, + 108, + 109, + 113, + 114, + 117, + 118 + ] + ], + [ + "B", + 183, + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63, + 64, + 66, + 68, + 70, + 73, + 74, + 112, + 113, + 114, + 115 + ], + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 16, + 17, + 20, + 21, + 24, + 26, + 28, + 30, + 32, + 33, + 36, + 37, + 40, + 42, + 44, + 46, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63, + 64, + 66, + 68, + 70, + 73, + 74, + 76, + 82, + 83, + 84, + 85, + 89, + 91, + 92, + 94, + 98, + 99, + 100, + 101, + 105, + 107, + 108, + 110, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 191, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 113, + 114 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 18, + 20, + 22, + 24, + 25, + 28, + 29, + 32, + 34, + 36, + 38, + 40, + 41, + 44, + 45, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 81, + 83, + 84, + 86, + 90, + 91, + 92, + 93, + 97, + 99, + 100, + 102, + 106, + 107, + 108, + 109, + 113, + 114, + 116 + ] + ], + [ + "B", + 199, + [ + 1, + 3, + 5, + 7, + 17, + 18, + 40, + 41, + 42, + 43, + 58, + 59, + 62, + 63, + 64, + 65, + 68, + 69, + 81, + 82, + 85, + 86, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 10, + 11, + 12, + 13, + 17, + 18, + 20, + 24, + 25, + 28, + 29, + 32, + 33, + 36, + 37, + 40, + 41, + 42, + 43, + 49, + 51, + 52, + 54, + 58, + 59, + 62, + 63, + 64, + 65, + 68, + 69, + 72, + 73, + 76, + 77, + 81, + 82, + 85, + 86, + 90, + 91, + 94, + 95, + 98, + 99, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 114, + 116, + 118 + ] + ], + [ + "B", + 207, + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 41, + 42, + 57, + 59, + 60, + 62, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 105, + 106, + 109, + 110 + ], + [ + 1, + 3, + 4, + 6, + 9, + 11, + 12, + 14, + 16, + 17, + 18, + 19, + 24, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 41, + 42, + 44, + 50, + 51, + 52, + 53, + 57, + 59, + 60, + 62, + 64, + 65, + 68, + 69, + 72, + 74, + 76, + 78, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 105, + 106, + 109, + 110, + 112, + 113, + 116, + 117 + ] + ], + [ + "B", + 215, + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 65, + 66, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103 + ], + [ + 4, + 5, + 6, + 7, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 40, + 41, + 42, + 43, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 65, + 66, + 68, + 72, + 73, + 74, + 75, + 84, + 85, + 86, + 87, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 223, + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 33, + 34, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102 + ], + [ + 2, + 3, + 6, + 7, + 10, + 11, + 14, + 15, + 16, + 17, + 20, + 21, + 24, + 25, + 26, + 27, + 33, + 34, + 36, + 40, + 41, + 44, + 45, + 50, + 51, + 54, + 55, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 72, + 73, + 76, + 77, + 82, + 83, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102, + 106, + 107, + 110, + 111, + 112, + 113, + 116, + 117 + ] + ], + [ + "B", + 231, + [ + 2, + 3, + 4, + 5, + 25, + 26, + 32, + 33, + 34, + 35, + 57, + 58, + 61, + 62, + 64, + 65, + 66, + 67, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 9, + 11, + 13, + 15, + 16, + 18, + 20, + 22, + 25, + 26, + 28, + 32, + 33, + 34, + 35, + 40, + 42, + 44, + 46, + 49, + 51, + 53, + 55, + 57, + 58, + 61, + 62, + 64, + 65, + 66, + 67, + 72, + 74, + 76, + 78, + 81, + 83, + 85, + 87, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 105, + 107, + 109, + 111, + 112, + 114, + 116, + 118 + ] + ], + [ + "B", + 239, + [ + 4, + 5, + 6, + 7, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 65, + 66, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103 + ], + [ + 4, + 5, + 6, + 7, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 24, + 25, + 26, + 27, + 32, + 33, + 34, + 35, + 40, + 41, + 42, + 43, + 52, + 53, + 54, + 55, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63, + 65, + 66, + 68, + 72, + 73, + 74, + 75, + 84, + 85, + 86, + 87, + 92, + 93, + 94, + 95, + 100, + 101, + 102, + 103, + 108, + 109, + 110, + 111, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 247, + [ + 2, + 3, + 6, + 7, + 24, + 25, + 26, + 27, + 33, + 34, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102 + ], + [ + 2, + 3, + 6, + 7, + 10, + 11, + 14, + 15, + 16, + 17, + 20, + 21, + 24, + 25, + 26, + 27, + 33, + 34, + 36, + 40, + 41, + 44, + 45, + 50, + 51, + 54, + 55, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 72, + 73, + 76, + 77, + 82, + 83, + 86, + 87, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95, + 97, + 98, + 101, + 102, + 106, + 107, + 110, + 111, + 112, + 113, + 116, + 117 + ] + ], + [ + "B", + 255, + [ + 2, + 3, + 4, + 5, + 25, + 26, + 32, + 33, + 34, + 35, + 57, + 58, + 61, + 62, + 64, + 65, + 66, + 67, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + [ + 2, + 3, + 4, + 5, + 9, + 11, + 13, + 15, + 16, + 18, + 20, + 22, + 25, + 26, + 28, + 32, + 33, + 34, + 35, + 40, + 42, + 44, + 46, + 49, + 51, + 53, + 55, + 57, + 58, + 61, + 62, + 64, + 65, + 66, + 67, + 72, + 74, + 76, + 78, + 81, + 83, + 85, + 87, + 89, + 90, + 93, + 94, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 105, + 107, + 109, + 111, + 112, + 114, + 116, + 118 + ] + ], + [ + "B", + 263, + [ + 1, + 3, + 5, + 7, + 17, + 18, + 40, + 41, + 42, + 43, + 58, + 59, + 62, + 63, + 64, + 65, + 68, + 69, + 81, + 82, + 85, + 86, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + [ + 1, + 3, + 5, + 7, + 10, + 11, + 12, + 13, + 17, + 18, + 20, + 24, + 25, + 28, + 29, + 32, + 33, + 36, + 37, + 40, + 41, + 42, + 43, + 49, + 51, + 52, + 54, + 58, + 59, + 62, + 63, + 64, + 65, + 68, + 69, + 72, + 73, + 76, + 77, + 81, + 82, + 85, + 86, + 90, + 91, + 94, + 95, + 98, + 99, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111, + 112, + 114, + 116, + 118 + ] + ], + [ + "B", + 271, + [ + 1, + 3, + 4, + 6, + 16, + 17, + 18, + 19, + 41, + 42, + 57, + 59, + 60, + 62, + 64, + 65, + 68, + 69, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 105, + 106, + 109, + 110 + ], + [ + 1, + 3, + 4, + 6, + 9, + 11, + 12, + 14, + 16, + 17, + 18, + 19, + 24, + 26, + 28, + 30, + 32, + 34, + 36, + 38, + 41, + 42, + 44, + 50, + 51, + 52, + 53, + 57, + 59, + 60, + 62, + 64, + 65, + 68, + 69, + 72, + 74, + 76, + 78, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 89, + 91, + 93, + 95, + 97, + 99, + 101, + 103, + 105, + 106, + 109, + 110, + 112, + 113, + 116, + 117 + ] + ], + [ + "B", + 279, + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63, + 64, + 66, + 68, + 70, + 73, + 74, + 112, + 113, + 114, + 115 + ], + [ + 1, + 2, + 5, + 6, + 9, + 10, + 13, + 14, + 16, + 17, + 20, + 21, + 24, + 26, + 28, + 30, + 32, + 33, + 36, + 37, + 40, + 42, + 44, + 46, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 57, + 59, + 61, + 63, + 64, + 66, + 68, + 70, + 73, + 74, + 76, + 82, + 83, + 84, + 85, + 89, + 91, + 92, + 94, + 98, + 99, + 100, + 101, + 105, + 107, + 108, + 110, + 112, + 113, + 114, + 115 + ] + ], + [ + "B", + 287, + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 113, + 114 + ], + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 18, + 20, + 22, + 24, + 25, + 28, + 29, + 32, + 34, + 36, + 38, + 40, + 41, + 44, + 45, + 49, + 50, + 53, + 54, + 58, + 59, + 60, + 61, + 64, + 66, + 68, + 70, + 72, + 73, + 74, + 75, + 81, + 83, + 84, + 86, + 90, + 91, + 92, + 93, + 97, + 99, + 100, + 102, + 106, + 107, + 108, + 109, + 113, + 114, + 116 + ] + ], + [ + "B", + 295, + [ + 0, + 3, + 5, + 6, + 9, + 10, + 48, + 49, + 50, + 51, + 57, + 59, + 61, + 63, + 64, + 65, + 70, + 71, + 73, + 74, + 77, + 78, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + [ + 0, + 3, + 5, + 6, + 9, + 10, + 12, + 18, + 19, + 20, + 21, + 24, + 26, + 29, + 31, + 32, + 33, + 38, + 39, + 41, + 43, + 44, + 46, + 48, + 49, + 50, + 51, + 57, + 59, + 61, + 63, + 64, + 65, + 70, + 71, + 73, + 74, + 77, + 78, + 80, + 81, + 84, + 85, + 89, + 91, + 93, + 95, + 98, + 99, + 102, + 103, + 104, + 106, + 108, + 110, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ] + ], + [ + "B", + 303, + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 49, + 50, + 58, + 59, + 60, + 61, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 113, + 114, + 117, + 118 + ], + [ + 0, + 3, + 4, + 7, + 8, + 9, + 10, + 11, + 17, + 19, + 20, + 22, + 24, + 25, + 30, + 31, + 32, + 34, + 37, + 39, + 42, + 43, + 44, + 45, + 49, + 50, + 52, + 58, + 59, + 60, + 61, + 64, + 65, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79, + 80, + 82, + 84, + 86, + 90, + 91, + 94, + 95, + 97, + 99, + 101, + 103, + 104, + 105, + 108, + 109, + 113, + 114, + 117, + 118 + ] + ], + [ + "B", + 311, + [ + 0, + 2, + 5, + 7, + 17, + 18, + 21, + 22, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 58, + 59, + 62, + 63, + 64, + 66, + 69, + 71, + 81, + 82, + 104, + 105, + 106, + 107 + ], + [ + 0, + 2, + 5, + 7, + 8, + 9, + 12, + 13, + 17, + 18, + 21, + 22, + 24, + 25, + 30, + 31, + 32, + 33, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47, + 48, + 50, + 52, + 54, + 58, + 59, + 62, + 63, + 64, + 66, + 69, + 71, + 74, + 75, + 76, + 77, + 81, + 82, + 84, + 90, + 91, + 92, + 93, + 98, + 99, + 100, + 101, + 104, + 105, + 106, + 107, + 113, + 115, + 116, + 118 + ] + ], + [ + "B", + 319, + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 41, + 42, + 45, + 46, + 57, + 59, + 60, + 62, + 64, + 66, + 69, + 71, + 80, + 81, + 82, + 83, + 105, + 106 + ], + [ + 0, + 2, + 4, + 6, + 8, + 10, + 12, + 14, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 26, + 29, + 31, + 32, + 34, + 37, + 39, + 41, + 42, + 45, + 46, + 48, + 49, + 52, + 53, + 57, + 59, + 60, + 62, + 64, + 66, + 69, + 71, + 73, + 75, + 76, + 78, + 80, + 81, + 82, + 83, + 89, + 91, + 92, + 94, + 97, + 99, + 100, + 102, + 105, + 106, + 108, + 114, + 115, + 116, + 117 + ] + ], + [ + "B", + 327, + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 60, + 61, + 62, + 63, + 64, + 67, + 68, + 71, + 88, + 89, + 90, + 91, + 97, + 98 + ], + [ + 0, + 1, + 6, + 7, + 8, + 9, + 14, + 15, + 16, + 17, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 33, + 34, + 37, + 38, + 40, + 41, + 46, + 47, + 48, + 49, + 54, + 55, + 60, + 61, + 62, + 63, + 64, + 67, + 68, + 71, + 74, + 75, + 76, + 77, + 82, + 83, + 84, + 85, + 88, + 89, + 90, + 91, + 97, + 98, + 100, + 106, + 107, + 108, + 109, + 114, + 115, + 116, + 117 + ] + ], + [ + "B", + 335, + [ + 0, + 1, + 4, + 5, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 57, + 58, + 61, + 62, + 64, + 67, + 68, + 71, + 89, + 90, + 96, + 97, + 98, + 99 + ], + [ + 0, + 1, + 4, + 5, + 8, + 10, + 13, + 15, + 16, + 18, + 21, + 23, + 25, + 26, + 29, + 30, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 42, + 45, + 47, + 48, + 50, + 53, + 55, + 57, + 58, + 61, + 62, + 64, + 67, + 68, + 71, + 73, + 75, + 76, + 78, + 81, + 83, + 84, + 86, + 89, + 90, + 92, + 96, + 97, + 98, + 99, + 105, + 107, + 108, + 110, + 113, + 115, + 116, + 118 + ] + ], + [ + "B", + 343, + [ + 0, + 1, + 2, + 3, + 25, + 26, + 29, + 30, + 32, + 35, + 36, + 39, + 57, + 58, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 89, + 90, + 93, + 94, + 96, + 99, + 100, + 103 + ], + [ + 0, + 1, + 2, + 3, + 8, + 11, + 12, + 15, + 16, + 19, + 20, + 23, + 25, + 26, + 29, + 30, + 32, + 35, + 36, + 39, + 41, + 42, + 45, + 46, + 49, + 50, + 53, + 54, + 57, + 58, + 60, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 75, + 76, + 79, + 80, + 83, + 84, + 87, + 89, + 90, + 93, + 94, + 96, + 99, + 100, + 103, + 105, + 106, + 109, + 110, + 113, + 114, + 117, + 118 + ] + ] + ] +} \ No newline at end of file diff --git a/research/r740-block-retimed-kernel/vendor/clifford_exact.py b/research/r740-block-retimed-kernel/vendor/clifford_exact.py new file mode 100644 index 0000000000..166841a037 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/clifford_exact.py @@ -0,0 +1,149 @@ +"""Small exact Gaussian-dyadic Clifford compiler, independent of gx internals. +Paulis use i^p X^x Z^z. State vectors use integer Gaussian numerators / 2^d. +The tableau is supplemented by a literal circuit, so global phases are kept. +""" +from dataclasses import dataclass + +def parity(x):return x.bit_count()&1 +def rank(rows): + p={} + for x in rows: + while x: + b=x.bit_length()-1 + if b not in p:p[b]=x;break + x^=p[b] + return len(p) +def transpose(rows,n):return tuple(sum(((rows[j]>>i)&1)<>j&1);a[j],a[k]=a[k],a[j] + for i in range(n): + if i!=j and a[i]>>j&1:a[i]^=a[j] + assert [r&((1<>n for r in a) +def basis_extend(cols,n): + out=[] + for x in list(cols)+[1<len(out):out.append(x) + assert len(out)==n + return tuple(out) +def nullspace(rows,n): + a=list(rows);p=[];k=0 + for j in range(n): + t=next((i for i in range(k,len(a)) if a[i]>>j&1),None) + if t is None:continue + a[t],a[k]=a[k],a[t] + for i in range(len(a)): + if i!=k and a[i]>>j&1:a[i]^=a[k] + p.append(j);k+=1 + return tuple((1<>j)&1)<>i&1:out=pmul(out,T[i]) + for i in range(n): + if z>>i&1:out=pmul(out,T[n+i]) + return out +def compose(A,B):return tuple(apply(A,p) for p in B) +def inverse(T): + n=len(T)//2;cols=[x|(z<>n;u,v,p=apply(T,(x,z,0));assert (u,v)==identity(n)[j][:2];out.append((x,z,(-p)%4)) + return tuple(out) +def qvalue(Q,alpha,x,n): + return (sum(alpha[i] for i in range(n) if x>>i&1)+2*sum(parity((Q[i]>>(i+1))&(x>>(i+1))) for i in range(n) if x>>i&1))%4 +def mul_i(a,p): + x,y=a;p%=4 + return [(x,y),(-y,x),(-x,-y),(y,-x)][p] +@dataclass +class Op: + n:int + tab:tuple + circuit:list + def then(self,b): + assert self.n==b.n + return Op(self.n,compose(b.tab,self.tab),self.circuit+b.circuit) + def adjoint(self): + circ=[] + for e in reversed(self.circuit): + if e[0]=='P':circ.append(('P',inv(e[1],self.n))) + elif e[0]=='D':circ.append(('D',e[1],tuple((-x)%4 for x in e[2]))) + elif e[0]=='C':circ.append(('C',e[1],-e[2])) + elif e[0]=='phase':circ.append(('phase',(-e[1])%4)) + else:circ.append(e) + return Op(self.n,inverse(self.tab),circ) + def zero_state(self,basis=0): + N=1<>i)&1 for i in range(n)) + assert all(alpha[i]%2==(Q[i]>>i)&1 for i in range(n)) + return Op(n,tuple([(1<>i&1 else 0,1<>i&1 else 0) for i in range(n)]),[('C',q,sgn)]) +def xgate(n,b):return Op(n,tuple([(1<>i)&1)) for i in range(n)]),[('X',b)]) +def fourier(n,axes=None): + out=ident(n) + for i in range(n) if axes is None else axes:out=out.then(cgate(n,1<len(selected):picks.append(j);selected.append(x) + assert len(picks)==r and all(x>>r==0 for x in Bcols) + Br=transpose(selected,r);Bi=inv(Br,r);Dr=transpose([Dcols[j]&((1< 2: + x /= 2 + k += 1 + lo, hi = log_unit(x) + l2, u2 = log_unit(Q(2)) + lo, hi = lo+k*l2, hi+k*u2 + # Outward rational rounding keeps later certificates compact. + return Q((lo*GRID).__floor__(), GRID), Q((hi*GRID).__ceil__(), GRID) + + +def exp_bounds(x): + require(0 <= x < 1, "exponential range") + term = total = Q(1) + for j in range(1, 13): + term *= x/j + total += term + tail = term*x/13/(1-x/14) + return total, total+tail + + +def moment(m, W, entries, saving): + lo = hi = Q(0) + for t, count in entries: + t, count = int(t), int(count) + require(0 < t < m and count > 0, "improper child") + l, u = log_bounds(Q(m, t)) + lower = exp_bounds(saving*l)[0] + upper = exp_bounds(saving*u)[1] + lo += Q(t*count, m*W)*lower + hi += Q(t*count, m*W)*upper + return Q((lo*GRID).__floor__(), GRID), Q((hi*GRID).__ceil__(), GRID) + diff --git a/research/r740-block-retimed-kernel/vendor/engines/moment.py b/research/r740-block-retimed-kernel/vendor/engines/moment.py new file mode 100644 index 0000000000..7d697cb452 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/engines/moment.py @@ -0,0 +1,113 @@ +"""Independent prospective ordinary five-stage cost, never supplier admission. + +Consumes a raw one-invocation ledger made from the actual source/internal/target +paths. No packed profile is used as an input. Missing physical/finite/compiler +obligations must remain explicit in the accompanying report. +""" +from collections import Counter +from decimal import Decimal, localcontext, ROUND_FLOOR +from fractions import Fraction as F +from functools import lru_cache +from math import factorial +import hashlib, json, sys +from pathlib import Path + +DYAD = 1 << 224 + +def floor(x): return F(x.numerator*DYAD//x.denominator, DYAD) +def ceil(x): return -floor(-x) + +@lru_cache(None) +def logarithm(x): + """Mercator bounds after binary reduction; ln(2) via two Mercator sums. + + For 1 <= y < 2, log(y) is an alternating series in z=y-1. + We instead reduce to 1 <= y < 3/2, and bound log(3/2) and + log(2) by the same alternating series at z=1/2 and z=1/3, + using log(2)=log(3/2)+log(4/3). All sums are exact rationals. + """ + assert x >= 1 + k = 0 + while x >= 2: x /= 2; k += 1 + j = int(x >= F(3, 2)) + if j: x /= F(3, 2) + def mercator(y): + z=y-1 + assert 0 <= z <= F(1,2) + # An even partial sum is below log; the next term bounds its tail. + t=z; s=F(0) + for n in range(1, 225): + s += (t if n & 1 else -t)/n + t *= z + return s, s+t/225 + a,b=mercator(x); c,d=mercator(F(3,2)); e,f=mercator(F(4,3)) + return floor(a+(k+j)*c+k*e), ceil(b+(k+j)*d+k*f) + +def exponential(l,u): + assert 0 <= l <= u < F(1,10) + def poly(x): + s=t=F(1) + for j in range(1,25): t=t*x/j; s+=t + return s,t + lo,_=poly(l);hi,last=poly(u) + return floor(lo),ceil(hi+last*u/25/(1-u/26)) + +def moment(H,m,W,a,bad=False): + lo=hi=F(0) + for r,n in H.items(): + assert 0 < r < m and n > 0 + l,u=logarithm(F(m,r)); e,f=exponential(a*l,a*u) + p=F(r*n,m*W);lo+=p*e;hi+=p*f + if bad: + # Existing envelope shape, only conditionally portable to the new cover. + l,u=logarithm(F(m));e,f=exponential(a*l,a*u) + p=F(32*m*sum(H.values()),10**16*W) + lo+=p*e;hi+=p*f + return floor(lo),ceil(hi) + +def decimal(x): + with localcontext() as c: + c.prec=70 + return str(Decimal(x.numerator)/Decimal(x.denominator)) + +def certify(H,m,W,bad=False): + with localcontext() as c: + c.prec=70 + terms=[(Decimal(r*n)/Decimal(m*W),(Decimal(m)/Decimal(r)).ln()) for r,n in H.items()] + fallback=Decimal(32*m*sum(H.values()))/Decimal(10**16*W) if bad else Decimal(0) + lm=Decimal(m).ln();lo=Decimal(0);hi=Decimal('.003') + for _ in range(210): + a=(lo+hi)/2 + if sum(p*(a*l).exp() for p,l in terms)+fallback*(a*lm).exp()<1:lo=a + else:hi=a + q=int(((lo+hi)/2*10**24).to_integral_value(rounding=ROUND_FLOOR)) + lo=F(q,10**24);hi=lo+F(1,10**24) + lv=moment(H,m,W,lo,bad);hv=moment(H,m,W,hi,bad) + assert lv[1]<10 for v in slacks.values()),{k:str(v) for k,v in slacks.items() if v<=0} + assert min(margins.values())==minimum + assert margins['balanced_prefix']-minimum==eta and 1-eps-r==eta/2 + assert 1-eps*(1+c)==eta-eps*eta/4 + return dict(parameters=dict(a_bit=a,a_complex=b,tau=tau,sigma=sigma, + eta=eta,beta=beta,q=q,c=c,epsilon=eps,lambda_=lam, + lambda_prime=lp,alpha_squared_power=r,delta=delta, + C0=bridge['semantic']['C0'],C1=1,kappa=kappa), + strict_constraints=slacks,margins=margins,minimum_margin=minimum, + absorption_gap=minimum-kappa, + recurrence=dict(internal=internal,leaf=leaf,reservations=1-c)) diff --git a/research/r740-block-retimed-kernel/vendor/export_records.py b/research/r740-block-retimed-kernel/vendor/export_records.py new file mode 100644 index 0000000000..3632d37048 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/export_records.py @@ -0,0 +1,72 @@ +"""Export a bitE8/1 word to the PR249 record format read by PR #266's official cohort checkers and PR #315's engines. +usage: python3 export_records.py word.json[.gz] OUTDIR -> OUTDIR/{249-records.bin,249-states.json,frames.json} +Records are int32 six-tuples: MOVE(0,role,old,new,rank,0), ADD(1,dst,src,1,frame,phase), COPY(2,centre,temp,frame,ZERO,rank), +ERASE(3,centre,temp,frame,ZERO,0). A multi-source gate becomes one ADD per source, preceded by the MOVEs of every +register of the gate to the gate frame. Frames: integer basis rows B (label vectors of the frame's root lines in the +word's coordinates, a rational basis) and integer annihilator rows A (standard dot product), as PR #266 expects. +Dylan Crow, with Anthropic Claude assistance; Apache-2.0.""" +import sys, json, gzip, struct, os +from fractions import Fraction as Fr +from math import gcd +def load(p): + with (gzip.open(p,'rt') if p.endswith('.gz') else open(p)) as f: return json.load(f) +c=load(sys.argv[1]); out=sys.argv[2]; os.makedirs(out,exist_ok=True) +v,R,h=c['v'],c['R'],c['h']; n=2*v+R; lines=c['lines'] +def basis(idx): + rows=[]; piv=[]; B=[] + for i in idx: + x=[Fr(a) for a in lines[i]] + for p,r in zip(piv,rows): + if x[p]: f=x[p]/r[p]; x=[a-f*b for a,b in zip(x,r)] + nz=[k for k in range(h) if x[k]] + if nz: rows.append(x); piv.append(nz[0]); B.append(list(lines[i])) + return B,rows,piv +def annihilator(rows,piv): + # rows in echelon (pivot columns piv); free columns give the null space of the row space under the dot product + # reduce to RREF + R_=[r[:] for r in rows] + for i,(p,r) in enumerate(zip(piv,R_)): + R_[i]=[a/r[p] for a in r] + for i,p in enumerate(piv): + for j in range(len(R_)): + if j!=i and R_[j][p]: f=R_[j][p]; R_[j]=[a-f*b for a,b in zip(R_[j],R_[i])] + free=[k for k in range(h) if k not in piv]; A=[] + for f in free: + a=[Fr(0)]*h; a[f]=Fr(1) + for i,p in enumerate(piv): a[p]=-R_[i][f] + L=1 + for x in a: L=L*x.denominator//gcd(L,x.denominator) + ai=[int(x*L) for x in a]; g=0 + for x in ai: g=gcd(g,abs(x)) + A.append([x//g for x in ai]) + return A +frames={} +for k,idx in enumerate(c['frames']): + B,rows,piv=basis(idx); A=annihilator(rows,piv) if B else [[int(i==j) for j in range(h)] for i in range(h)] + assert all(sum(a*b for a,b in zip(x,y))==0 for x in A for y in B) and len(A)+len(B)==h + frames[str(k)]=dict(dim=len(B),B=B,A=A) +dim=[frames[str(k)]['dim'] for k in range(len(c['frames']))] +ZERO=[k for k in range(len(dim)) if dim[k]==0]; assert len(ZERO)==1; ZERO=ZERO[0] +cur=list(c['start']); rec=[] +def move(r,f): + if cur[r]!=f: rec.append((0,r,cur[r],f,dim[f]-dim[cur[r]],0)); cur[r]=f +def run(gates,ph): + for f,d,srcs in gates: + for r in [d]+srcs: move(r,f) + for s in srcs: rec.append((1,d,s,1,f,ph)) +run(c['D'],1); run(c['A'],2) +temp=n +for k,q in enumerate(c['ret']): + fq=cur[q]; rec.append((2,q,temp,fq,ZERO,dim[fq])) + for t,row in enumerate(c['scatter']): + if k in row: rec.append((1,v+t,temp,1,ZERO,3)) + rec.append((3,q,temp,fq,ZERO,0)) +run(c['B'],4); run(c['C'],5) +for r in range(n): move(r,c['final'][r]) +with open(out+'/249-records.bin','wb') as f: + for e in rec: f.write(struct.pack('<6i',*e)) +st=dict(n=n,v=v,h=h,R=R,ZERO=ZERO,initial={str(r):c['start'][r] for r in range(n)},final={str(r):c['final'][r] for r in range(n)}, + retained_totals=c['ret'],source_owned_roles=[],regs=[]) +json.dump(st,open(out+'/249-states.json','w'),sort_keys=True,separators=(',',':')) +json.dump(dict(frames=frames),open(out+'/frames.json','w'),sort_keys=True,separators=(',',':')) +print('exported',len(rec),'records,',len(frames),'frames, n',n,'ZERO',ZERO) diff --git a/research/r740-block-retimed-kernel/vendor/hamming_packets.py b/research/r740-block-retimed-kernel/vendor/hamming_packets.py new file mode 100644 index 0000000000..c129996656 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/hamming_packets.py @@ -0,0 +1,253 @@ +"""A structural prototype: mutable source bases and simultaneous signed packets. + +Input geometry is the pinned PR370 Hamming E8 root table. The binary realization, +packet construction, two-shear synthesis and arbitrary-dirt replay below are new +local experiments. This does NOT produce a complete improved E8 supplier. +""" +import gzip +import hashlib +import itertools as it +import json +import random +from collections import Counter,defaultdict +from fractions import Fraction as Q +from pathlib import Path + +OUT=Path('work/complex-network/hamming');OUT.mkdir(parents=True,exist_ok=True) +SRC=Path('work/pr370-source/research/e8-bit/data/bit/bitE8-r865.json.gz') +word=json.load(gzip.open(SRC));roots=word['lines'];v=len(roots) +G=[[sum(x*y for x,y in zip(a,b))//2 for b in roots] for a in roots] +C=[sum((1^(G[i][j]&1))<>p&1:x^=b[p] + if x: + p=x.bit_length()-1 + for q in b: + if b[q]>>p&1:b[q]^=x + b[p]=x + return tuple(b[p] for p in sorted(b,reverse=True)) + +def inside(a,b):return basis(a+b)==b + +indices=[] +for i,row in enumerate(C): + if len(basis([C[j] for j in indices]+[row]))>len(indices):indices.append(i) +assert len(indices)==9 +gram=[sum(((C[i]>>j)&1)<>i)&1)*((gram[i]&b).bit_count()&1) for i in range(9))&1 +orth=[] +for step in range(9): + choices=[x for x in range(1,512) if ip(x,x) and all(not ip(x,y) for y in orth)] + chosen=next(x for x in choices if step==8 or any(y!=x and not ip(x,y) for y in choices)) + orth.append(chosen) +assert all(ip(x,y)==int(i==j) for i,x in enumerate(orth) for j,y in enumerate(orth)) +ports=[] +for i in range(v): + row=sum(((C[i]>>j)&1)<>j)&1) for i in range(v) for j in range(v)) + +blocks=defaultdict(list);frame_lines={} +for i,r in enumerate(roots): + support=tuple(k for k,x in enumerate(r) if x) + if len(support)==4:blocks[support].append(i) + else:assert len(support)==1;frame_lines[support[0]]=i +assert len(blocks)==14 and all(len(xs)==8 for xs in blocks.values()) + +def sparse_add(rows,t,s,q): + for j,x in list(rows[s].items()): + z=rows[t].get(j,Q(0))+q*x + if z:rows[t][j]=z + else:rows[t].pop(j,None) + +def simulate(n,events): + rows=[{r:Q(1)} for r in range(n)] + for t,s,q in events:sparse_add(rows,t,s,q) + return rows + +def serialize(events):return [[t,s,q.numerator,q.denominator] for t,s,q in events] + +packet_table={};module_receipts=[];all_programs=[] +for block,ids in sorted(blocks.items()): + ids=sorted(ids);pos={s:i for i,s in enumerate(ids)} + tetrads=[sorted(s for s in ids if sum(roots[s][k]<0 for k in block)%2==p) for p in (0,1)] + assert all(len(t)==4 for t in tetrads) + faces=[] + for i,j in it.combinations(block,2): + for epsilon in (-1,1): + support=[s for s in ids if roots[s][i]*roots[s][j]==epsilon] + content={s:Q(roots[s][i]) for s in support} + frame=basis([ports[s] for s in support]);assert len(frame)==3 + key=(block,(i,j),epsilon);packet_table[key]=(content,frame) + faces.append((key,content,frame)) + pair_uses=defaultdict(list) + for f,(_,content,frame) in enumerate(faces): + for tet in tetrads: + pair=tuple(s for s in tet if s in content) + assert len(pair)==2 + pair_uses[pair].append(f) + assert len(pair_uses)==12 and all(len(fs)==2 for fs in pair_uses.values()) + bysource=defaultdict(list) + for pair in sorted(pair_uses): + for s in pair:bysource[s].append(pair) + # One of the three pair branches is carried by x itself, two by helpers. + regs={};nextreg=8;events=[];event_frames=[];cur=[basis([ports[s]]) for s in ids] + start=list(cur);dead=[] + def add(t,s,q,F): + assert t!=s and inside(cur[t],F) and inside(cur[s],F) + cur[t]=cur[s]=F;events.append((t,s,Q(q)));event_frames.append(F) + for s in ids: + for j,pair in enumerate(sorted(bysource[s])): + if j==0:reg=pos[s] + else: + reg=nextreg;nextreg+=1;cur.append(());start.append(()) + add(reg,pos[s],1,basis([ports[s]])) + regs[pair,s]=reg + assert nextreg==24 + partial={} + for pair,fs in sorted(pair_uses.items()): + s,t=pair;a,b=regs[pair,s],regs[pair,t];f,g=fs + alpha,beta=faces[f][1][s],faces[f][1][t] + gamma,delta=faces[g][1][s],faces[g][1][t] + assert alpha*delta-beta*gamma in (-2,2) + F=basis([ports[s],ports[t]]);assert len(F)==2 + add(a,b,beta/alpha,F) + k=gamma/(delta-gamma*beta/alpha) + add(b,a,k,F) + partial[f,pair]=(a,alpha) + partial[g,pair]=(b,delta-gamma*beta/alpha) + pre_packets=simulate(24,events) + def clean_rank(registers): + piv={} + for reg in registers: + row=[pre_packets[reg].get(i,Q(0)) for i in range(8)] + for j in sorted(piv): + q=row[j] + if q:row=[a-q*b for a,b in zip(row,piv[j])] + j=next((i for i,q in enumerate(row) if q),None) + if j is not None: + q=row[j];piv[j]=[a/q for a in row] + return len(piv) + choices=[[value for (ff,pair),value in partial.items() if ff==f] for f in range(12)] + rng=random.Random(38639);orientation=None + for trial in range(4096): + bits=rng.randrange(1<<12) + if clean_rank([pieces[1-((bits>>f)&1)][0] for f,pieces in enumerate(choices)])==8: + orientation=bits;break + assert orientation is not None + outputs=[] + for f,(key,content,F) in enumerate(faces): + pieces=[value for (ff,pair),value in partial.items() if ff==f] + assert len(pieces)==2 + if orientation>>f&1:pieces.reverse() + (a,alpha),(b,beta)=pieces + add(a,b,beta/alpha,F) + outputs.append((a,alpha));dead.append(b) + assert len(set(r for r,a in outputs))==12 and len(set(dead))==12 + assert not set(dead)&{r for r,a in outputs} + core=simulate(24,events) + for f,(reg,scale) in enumerate(outputs): + clean={ids[j]:scale*x for j,x in core[reg].items() if j<8 and x} + assert clean==faces[f][1] + + # Probe complete borrowing: output each packet, cancel its old dirt at label + # zero, then undo every source/helper operation at the full frame. + # Actual supplier consumers and their remaining chronology are NOT inferred. + n=36;main=events.copy();dirt=[];chosen_targets=[] + for f,(reg,scale) in enumerate(outputs): + main.append((24+f,reg,scale)) + for j,q in core[reg].items(): + if j>=8:dirt.append((24+f,j,-scale*q)) + valid=[t for t in range(v) if all((ports[t]&x).bit_count()%2==0 for x in faces[f][2])] + assert valid;chosen_targets.append(valid[0]) + cleanup=[(t,s,-q) for t,s,q in reversed(events)] + actual=simulate(n,dirt+main+cleanup) + for r in range(24):assert actual[r]=={r:Q(1)} + for f in range(12): + expected={24+f:Q(1)} + expected.update({pos[s]:q for s,q in faces[f][1].items()}) + assert actual[24+f]==expected + # A mutation of the compensator must corrupt at least one arbitrary dirt column. + wrong=simulate(n,main+cleanup) + assert any(wrong[r]!=actual[r] for r in range(24,36)) + # Inverse-transpose: transpose and negate each elementary shear in the SAME + # event order. Reversing as well would generally compute the wrong map. + dual=simulate(n,[(s,t,-q) for t,s,q in dirt+main+cleanup]) + for r in range(n): + expected={r:Q(1)} + if r<8: + expected.update({24+f:-content[ids[r]] for f,(_,content,F) in enumerate(faces) if ids[r] in content}) + assert dual[r]==expected + receipt={'block':block,'source_lines':ids,'packets':12,'pair_butterflies':12, + 'packet_additions':len(events),'live_source_registers_borrowed':8, + 'helper_registers':16,'total_source_and_helper_registers':24, + 'retired_register_clean_rank':8, + 'independent_pair_branch_comparison_helpers':48, + 'comparison_scope':'48 is a specified independent two-input-form implementation, not the helper count of the current r783 supplier.', + 'frame_rank_counts':dict(Counter(map(len,event_frames))), + 'all_dirty_columns_forward_and_inverse_transpose':n, + 'compensator_omission_rejected':True, + 'scope':'A 12-output packet factory and probe sinks. Not a complete 120-port supplier or global frame schedule.'} + module_receipts.append(receipt) + all_programs.append({'receipt':receipt,'start_frames':start,'events':serialize(events), + 'event_frames':event_frames,'outputs':[[r,str(q)] for r,q in outputs], + 'dead_registers':dead, + 'dirt':serialize(dirt),'cleanup':serialize(cleanup), + 'probe_target_ports':[ports[t] for t in chosen_targets]}) + +# Reconstruct the entire signed E8 neighbour correction from the packet family. +# This proves all 120 rational source columns of the abstract decomposition. +decomposition=[] +for target,r in enumerate(roots): + row=defaultdict(Q);terms=[];support=[i for i,x in enumerate(r) if x] + if len(support)==4: + c=tuple(support) + for d in blocks: + inter=tuple(sorted(set(c)&set(d))) + if len(inter)!=2:continue + i,j=inter;epsilon=r[i]*r[j];content,F=packet_table[d,inter,epsilon] + coefficient=-Q(r[i],2) + assert all((ports[target]&p).bit_count()%2==0 for p in F) + for s,a in content.items():row[s]+=coefficient*a + terms.append({'source_block':d,'pair':inter,'epsilon':epsilon,'coefficient':str(coefficient)}) + for s in blocks[c]+list(frame_lines.values()): + if s!=target and G[target][s]:row[s]-=Q(G[target][s],2) + else: + i=support[0] + for d in blocks: + if i in d: + for s in blocks[d]:row[s]-=Q(roots[s][i],2) + expected={s:-Q(G[target][s],2) for s in range(v) if s!=target and G[target][s]} + assert {s:a for s,a in row.items() if a}==expected + # Eight coordinate centers recover the diagonal after side corrections. + for s in range(v): + center=sum(Q(r[i]*roots[s][i],4) for i in range(8)) + assert center+row.get(s,Q(0))==int(s==target) + decomposition.append({'target':target,'cross_block_packets':terms,'side_support':len(expected)}) + +program_path=OUT/'PACKET-PROGRAMS.json.gz' +program_path.write_bytes(gzip.compress(json.dumps(all_programs,sort_keys=True,separators=(',',':')).encode(),mtime=0)) +report={'status':'PASS_STRUCTURAL_PACKET_PROTOTYPE_NOT_A_NEW_SUPPLIER', + 'source_sha256':hashlib.sha256(SRC.read_bytes()).hexdigest(), + 'binary_address_dimension':9,'binary_gram_rank':len(indices), + 'binary_ports':ports,'root_lines':roots, + 'binary_gram_identity':'p_s dot p_t = 1 + (root_s dot root_t / 2) mod 2', + 'modules':module_receipts,'signed_packets':len(packet_table), + 'full_target_decomposition_columns':120,'full_target_decomposition_entries':120*120, + 'program_sha256':hashlib.sha256(program_path.read_bytes()).hexdigest(), + 'decomposition':decomposition, + 'remaining':['Joint scheduling and charging of all packet fan-outs and target accumulations', + 'Forming all eight centers from the available mixed source basis without an uncharged restore', + 'Full 120-port arbitrary-dirt forward/backward program and restored work stocks', + 'Exact complex adapters and global phases; finite invoice; two independent prices and outer assembly'], + 'no_new_coarse_b_or_kappa_claim':True} +(OUT/'PROTOTYPE.json').write_text(json.dumps(report,indent=2)+'\n') +print('PASS: 14 factories, 168 signed packets; each factory uses 8 source + 16 helper registers') +print('PASS: exact dirty forward and inverse-transpose columns, omission controls, all 14400 decoder entries') +print('NOT A SUPPLIER: global scheduling, mixed-basis centers, phase and full price remain open') diff --git a/research/r740-block-retimed-kernel/vendor/kernel417/LICENSE b/research/r740-block-retimed-kernel/vendor/kernel417/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/kernel417/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/r740-block-retimed-kernel/vendor/kernel417/e8core.py b/research/r740-block-retimed-kernel/vendor/kernel417/e8core.py new file mode 100644 index 0000000000..f2874bae8e --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/kernel417/e8core.py @@ -0,0 +1,203 @@ +"""Our own engine for bitE8/1 words (E8 root-line labels, h = 8): frame algebra over Q via root-line masks, +legality/F2 replay, five-stage histogram, exact bit coarse saving and PR #315 outer assembly (our engine copies). +Chafik Boukhalfa (chafreaky) with Anthropic Claude assistance; Apache-2.0.""" +import gzip, json, os, importlib.util +from fractions import Fraction as Q +from collections import Counter + +HERE = os.path.dirname(os.path.abspath(__file__)) +def _load(n): + s = importlib.util.spec_from_file_location('e8_' + n, os.path.join(HERE, "engines", n + ".py")) + m = importlib.util.module_from_spec(s); s.loader.exec_module(m); return m +moment = _load('moment'); other = _load('base_two_moment'); outer = _load('outer') + +B2 = Q(876248285600677, 10**18) # Sussman E8 five-stage (PR #352) +B3 = Q(932783231884153, 10**18) # DaysSky seven-stage B_3 (PR #363; no Lean proof) + + +def load_word(p): + with (gzip.open(p, 'rt') if p.endswith('.gz') else open(p)) as f: + return json.load(f) + + +def save_word(c, p): + with gzip.open(p, 'wt') as f: + json.dump(c, f, separators=(',', ':')) + + +def rank(vecs): + rows = [[Q(x) for x in r] for r in vecs]; rk = 0 + n = len(rows[0]) if rows else 0 + for col in range(n): + p = next((i for i in range(rk, len(rows)) if rows[i][col] != 0), None) + if p is None: continue + rows[rk], rows[p] = rows[p], rows[rk] + for i in range(len(rows)): + if i != rk and rows[i][col] != 0: + f = rows[i][col] / rows[rk][col]; rows[i] = [a - f * b for a, b in zip(rows[i], rows[rk])] + rk += 1 + return rk + + +class Lat: + """Root-spanned subspaces of Q^8 represented by the mask of root lines they contain.""" + def __init__(self, lines): + self.lines = [tuple(x) for x in lines]; self.v = len(lines) + self._dim = {0: 0}; self._close = {} + # Gram (form /2) for orthogonality + self.ip = [[sum(a * b for a, b in zip(x, y)) // 2 for y in self.lines] for x in self.lines] + + def close(self, mask): + """mask of all root lines in span(roots of mask)""" + if mask in self._close: return self._close[mask] + idx = [i for i in range(self.v) if mask >> i & 1] + basis = [] + for i in idx: + if rank([self.lines[j] for j in basis] + [self.lines[i]]) > len(basis): basis.append(i) + d = len(basis); out = 0 + if d == 8: out = (1 << self.v) - 1 + elif d: + B = [self.lines[j] for j in basis] + for i in range(self.v): + if rank(B + [self.lines[i]]) == d: out |= 1 << i + self._close[mask] = out; self._close[out] = out; self._dim[out] = d + return out + + def dim(self, mask): + if mask not in self._dim: self.close(mask) + return self._dim[mask] + + def basis(self, mask): + b = [] + for i in range(self.v): + if mask >> i & 1 and rank([self.lines[j] for j in b] + [self.lines[i]]) > len(b): b.append(i) + return b + + def perp(self, t): + return self.close(sum(1 << j for j in range(self.v) if self.ip[t][j] == 0)) + + +def to_masks(c, L): + return [L.close(sum(1 << i for i in fr)) for fr in c['frames']] + + +PHASES = ('D', 'A', 'B', 'C') + + +def replay(c, L=None, masks=None, check_f2=True, span=True, span_mode='z'): + """Exact legality + F2 replay + histogram of a bitE8/1 word. Returns dict(H_local, steps, ...). + Legality: each register's frames nested (mask inclusion = exact Q-subspace inclusion for root-spanned frames) and + strictly increasing at each move; every gate at one common frame; D compensation at frame 0; y at frame 0 at the + scatter; COPY of retained totals; final frames (x, helpers FULL; y_t at its cap t-perp). + Source-span: every non-target operand's x-support lies in the gate frame.""" + L = L or Lat(c['lines']); masks = masks or to_masks(c, L) + v, R, h = c['v'], c['R'], c['h']; n = 2 * v + R; FULL = (1 << v) - 1 + cur = [masks[f] for f in c['start']] + for r in range(v): assert cur[r] == L.close(1 << r), 'x start' + for r in range(v, 2 * v): assert cur[r] == 0, 'y start at 0' + sig = [L.dim(cur[r]) for r in range(n)] + H = Counter(); steps = 0; viol = [] + val = [1 << i for i in range(n)] + zsupp = [{i: 1} if i < v else {} for i in range(n)] # integer support of each register over the x columns (all ADDs are +1) + def climb(r, m): + nonlocal steps + if cur[r] == m: return + assert cur[r] & ~m == 0 and cur[r] != m, ('not nested', r) + H[L.dim(m) - L.dim(cur[r])] += 1; steps += 1; cur[r] = m + def run(gates, ph): + for k, (f, d, srcs) in enumerate(gates): + m = masks[f] + assert d not in srcs and len(set(srcs)) == len(srcs), (ph, k) # rohanarun: source destinations allowed (#433 source-basis gates); spans checked below + for x in [d] + srcs: climb(x, m) + for s in srcs: + val[d] ^= val[s] + if span: + if s < v or s >= 2 * v: + ms = sum(1 << i for i in zsupp[s]) + if ms & ~m: viol.append((ph, k, s)) + zd = zsupp[d] + for i, a in zsupp[s].items(): + w = zd.get(i, 0) + a + if w: zd[i] = w + else: zd.pop(i, None) + if span_mode == 'f2': + zsupp[d] = {i: 1 for i in range(v) if val[d] >> i & 1} + if span and (d >= 2 * v or d < v): + md = sum(1 << i for i in zsupp[d]) + if md & ~m: viol.append((ph, k, d)) + run(c['D'], 'D') + for r in range(v, n): assert cur[r] == masks[c['start'][r]], 'D compensation at frame 0 (helpers untouched otherwise)' + run(c['A'], 'A') + for t in range(v): assert cur[v + t] == 0, 'y at frame 0 at the scatter' + copies = [val[q] for q in c['ret']] + for q in c['ret']: + assert q >= 2 * v or q < v; H[L.dim(cur[q])] += 1 # rohanarun: #433 retains totals in source rows + for t, row in enumerate(c['scatter']): + for k in row: val[v + t] ^= copies[k] + run(c['B'], 'B'); run(c['C'], 'C') + for r in range(n): climb(r, masks[c['final'][r]]) + for r in range(v): assert cur[r] == FULL + for r in range(2 * v, n): assert cur[r] == FULL + for t in range(v): assert cur[v + t] == L.perp(t), 'y final at cap' + if check_f2: + for s in range(v): assert val[s] == 1 << s + for t in range(v): assert val[v + t] == (1 << (v + t)) | (1 << t), ('target', t) + for r in range(2 * v, n): assert val[r] == 1 << r, ('helper', r) + return dict(sig=sig, viol=viol, H=H, steps=steps, n=n, v=v, R=R, h=h, L=L, masks=masks, ncopy=len(c['ret'])) + + +def profile(H_local, v, h=8): + prof = Counter({j: 5 * c for j, c in H_local.items()}) + for j in (2 * h - 2, h - 1, 2 * h + 2, 4): prof[j] += 2 * v + return prof + + +def coarse(H, m, W): + grid = Q(1, 10**18) + root = moment.certify(dict(H), m, W, True); c = Q(int(Q(root['lower']) * 10**18), 10**18) + assert moment.moment(H, m, W, c, True)[1] < 1 < moment.moment(H, m, W, c + grid, True)[0] + fb = 32 * m * m * sum(H.values()) + _, up = other.moment(m, W, list(H.items()), c); _, bad = other.moment(m, W, [(1, fb)], c) + lo, _ = other.moment(m, W, list(H.items()), c + grid); blo, _ = other.moment(m, W, [(1, fb)], c + grid) + assert up + Q(1, 10**16) * bad < 1 < lo + Q(1, 10**16) * blo + return c + + +def kappa(c, b): + grid = Q(1, 10**18); eta = Q(1, 10**12); beta = Q(1, 10**9); cap = (1 - beta) * b + sv = min(c, Q(((cap - grid) * 10**18).__floor__(), 10**18)); binding = 'bit' if sv == c else 'complex' + chain = [Q(384599, 10**10)] + for _ in range(3): + a = (1 - sv) * sv + sv * chain[-1]; assert chain[-1] < a < sv < 1 - a; chain.append(a) + bit = chain[-1] + bridge = dict(proof='PROOF.md', representation='Exact powers with source-bound finite overcharges', + semantic=dict(G=dict(base=2, exponent=30000), E=dict(base=2, exponent=100000), B_upper=dict(base=2, exponent=100001), + C0=dict(base=2, exponent=210000), C1=1, strict_literal_gap=1, induction_gap_lower=1), + rows=dict(coefficient=20161, degree=10**6, suffix_slope=4 * 10**6, degree_gap=Q(10**6) - Q(51 * 20161, 25))) + q = bit * (1 - 2 * eta); mn = (1 - eta) * q / (1 + q); t = mn * 10**18; k = Q((t.numerator - 1) // t.denominator, 10**18) + asm = outer.assembly(bit, b, bridge, k, eta=eta, beta=beta) + assert len(asm['strict_constraints']) == 47 and min(asm['strict_constraints'].values()) > 0 + try: + outer.assembly(bit, b, bridge, k + grid, eta=eta, beta=beta); raise SystemExit('ADJACENT ADMITTED') + except AssertionError: pass + return k, binding + + +def price_word(c, **kw): + r = replay(c, **kw) + v, h, R = r['v'], r['h'], r['R']; m = 5 * h + resid = sum(h - r['sig'][x] for x in range(2 * v, 2 * v + R)) + T = 1 if resid % h == 0 else h + W = (4 * v * h + resid) * T // h; assert (4 * v * h + resid) * T % h == 0 + prof = Counter({j: T * k for j, k in profile(r['H'], v, h).items()}); mass = sum(a * b for a, b in prof.items()) + L_copy = h * r['ncopy'] + assert m * W - mass == T * (4 * v - 5 * L_copy), ('deficit', m * W - mass) + assert 2 * max(prof) < m + cc = coarse(prof, m, W) + return dict(c=cc, H=r['H'], prof=prof, W=W, T=T, resid=resid, m=m, deficit=m * W - mass, replay=r) + + +def phi_fn(m, W, a): + """linearized moment term per child of rank r (float), for search scoring""" + import math + return lambda r: r / (m * W) * math.exp(a * math.log(m / r)) diff --git a/research/r740-block-retimed-kernel/vendor/kernel417/engines/base_two_moment.py b/research/r740-block-retimed-kernel/vendor/kernel417/engines/base_two_moment.py new file mode 100644 index 0000000000..14a90fa0e7 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/kernel417/engines/base_two_moment.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +"""Maintainer arithmetic cross-check of the pinned PR39 certificate. + +Uses no producer/checker imports. Counts are inputs, not proved by this script. +80-term rational logarithms and 12-term exponentials independently enclose +the two moments. The accompanying written review addresses their realization. +""" +import argparse +from fractions import Fraction as Q +from hashlib import sha256 +import json +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +GRID = 10**30 + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def log_unit(x): + require(1 <= x <= 2, "logarithm range") + z = (x-1)/(x+1) + lo = 2*sum((z**(2*j+1)/(2*j+1) for j in range(80)), Q(0)) + return lo, lo+2*z**161/(161*(1-z*z)) + + +def log_bounds(x): + k = 0 + while x > 2: + x /= 2 + k += 1 + lo, hi = log_unit(x) + l2, u2 = log_unit(Q(2)) + lo, hi = lo+k*l2, hi+k*u2 + # Outward rational rounding keeps later certificates compact. + return Q((lo*GRID).__floor__(), GRID), Q((hi*GRID).__ceil__(), GRID) + + +def exp_bounds(x): + require(0 <= x < 1, "exponential range") + term = total = Q(1) + for j in range(1, 13): + term *= x/j + total += term + tail = term*x/13/(1-x/14) + return total, total+tail + + +def moment(m, W, entries, saving): + lo = hi = Q(0) + for t, count in entries: + t, count = int(t), int(count) + require(0 < t < m and count > 0, "improper child") + l, u = log_bounds(Q(m, t)) + lower = exp_bounds(saving*l)[0] + upper = exp_bounds(saving*u)[1] + lo += Q(t*count, m*W)*lower + hi += Q(t*count, m*W)*upper + return Q((lo*GRID).__floor__(), GRID), Q((hi*GRID).__ceil__(), GRID) + diff --git a/research/r740-block-retimed-kernel/vendor/kernel417/engines/moment.py b/research/r740-block-retimed-kernel/vendor/kernel417/engines/moment.py new file mode 100644 index 0000000000..7d697cb452 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/kernel417/engines/moment.py @@ -0,0 +1,113 @@ +"""Independent prospective ordinary five-stage cost, never supplier admission. + +Consumes a raw one-invocation ledger made from the actual source/internal/target +paths. No packed profile is used as an input. Missing physical/finite/compiler +obligations must remain explicit in the accompanying report. +""" +from collections import Counter +from decimal import Decimal, localcontext, ROUND_FLOOR +from fractions import Fraction as F +from functools import lru_cache +from math import factorial +import hashlib, json, sys +from pathlib import Path + +DYAD = 1 << 224 + +def floor(x): return F(x.numerator*DYAD//x.denominator, DYAD) +def ceil(x): return -floor(-x) + +@lru_cache(None) +def logarithm(x): + """Mercator bounds after binary reduction; ln(2) via two Mercator sums. + + For 1 <= y < 2, log(y) is an alternating series in z=y-1. + We instead reduce to 1 <= y < 3/2, and bound log(3/2) and + log(2) by the same alternating series at z=1/2 and z=1/3, + using log(2)=log(3/2)+log(4/3). All sums are exact rationals. + """ + assert x >= 1 + k = 0 + while x >= 2: x /= 2; k += 1 + j = int(x >= F(3, 2)) + if j: x /= F(3, 2) + def mercator(y): + z=y-1 + assert 0 <= z <= F(1,2) + # An even partial sum is below log; the next term bounds its tail. + t=z; s=F(0) + for n in range(1, 225): + s += (t if n & 1 else -t)/n + t *= z + return s, s+t/225 + a,b=mercator(x); c,d=mercator(F(3,2)); e,f=mercator(F(4,3)) + return floor(a+(k+j)*c+k*e), ceil(b+(k+j)*d+k*f) + +def exponential(l,u): + assert 0 <= l <= u < F(1,10) + def poly(x): + s=t=F(1) + for j in range(1,25): t=t*x/j; s+=t + return s,t + lo,_=poly(l);hi,last=poly(u) + return floor(lo),ceil(hi+last*u/25/(1-u/26)) + +def moment(H,m,W,a,bad=False): + lo=hi=F(0) + for r,n in H.items(): + assert 0 < r < m and n > 0 + l,u=logarithm(F(m,r)); e,f=exponential(a*l,a*u) + p=F(r*n,m*W);lo+=p*e;hi+=p*f + if bad: + # Existing envelope shape, only conditionally portable to the new cover. + l,u=logarithm(F(m));e,f=exponential(a*l,a*u) + p=F(32*m*sum(H.values()),10**16*W) + lo+=p*e;hi+=p*f + return floor(lo),ceil(hi) + +def decimal(x): + with localcontext() as c: + c.prec=70 + return str(Decimal(x.numerator)/Decimal(x.denominator)) + +def certify(H,m,W,bad=False): + with localcontext() as c: + c.prec=70 + terms=[(Decimal(r*n)/Decimal(m*W),(Decimal(m)/Decimal(r)).ln()) for r,n in H.items()] + fallback=Decimal(32*m*sum(H.values()))/Decimal(10**16*W) if bad else Decimal(0) + lm=Decimal(m).ln();lo=Decimal(0);hi=Decimal('.003') + for _ in range(210): + a=(lo+hi)/2 + if sum(p*(a*l).exp() for p,l in terms)+fallback*(a*lm).exp()<1:lo=a + else:hi=a + q=int(((lo+hi)/2*10**24).to_integral_value(rounding=ROUND_FLOOR)) + lo=F(q,10**24);hi=lo+F(1,10**24) + lv=moment(H,m,W,lo,bad);hv=moment(H,m,W,hi,bad) + assert lv[1]<10 for v in slacks.values()),{k:str(v) for k,v in slacks.items() if v<=0} + assert min(margins.values())==minimum + assert margins['balanced_prefix']-minimum==eta and 1-eps-r==eta/2 + assert 1-eps*(1+c)==eta-eps*eta/4 + return dict(parameters=dict(a_bit=a,a_complex=b,tau=tau,sigma=sigma, + eta=eta,beta=beta,q=q,c=c,epsilon=eps,lambda_=lam, + lambda_prime=lp,alpha_squared_power=r,delta=delta, + C0=bridge['semantic']['C0'],C1=1,kappa=kappa), + strict_constraints=slacks,margins=margins,minimum_margin=minimum, + absorption_gap=minimum-kappa, + recurrence=dict(internal=internal,leaf=leaf,reservations=1-c)) diff --git a/research/r740-block-retimed-kernel/vendor/kernel417/stages.py b/research/r740-block-retimed-kernel/vendor/kernel417/stages.py new file mode 100644 index 0000000000..9ef95d52f4 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/kernel417/stages.py @@ -0,0 +1,143 @@ +"""Transcript stages on the E8 bit word (bitE8/1), applied from frozen selections, each bound to the exact input word. + +retime (our #329 descent2 / #287 concave retiming, ported to E8 frames): every selected gate g gets a new frame F with + close(LB_g + prev frames of its participants) <= F <= rootspan(AND of their next frames), where LB_g is the + x-support of the non-target operands (source-span rule); pinned: D gates (frame 0), y at frame 0 at the scatter, + retained totals at FULL at COPY, start and final frames. Checked on the joint retimed configuration. +kernel (our #320/#329 shared-donor response kernel; #272/#299/#319 lineage): entry = pivot p, entrance E, donors D with + resp(p) = XOR resp(D) over F2, where resp(h) = the targets whose frame-0 completion (D) gates read h; E inside the + first frame of p and of every donor. p starts at E and leaves the D gates; each donor climbs to E at the start of + A and pays d += (its pivots) at E; after C it pays d += (its pivots) again at FULL (F2: d -= p). + Exclusivity: pivots are never donors, a donor serves one entrance. Total entrance rank = 0 mod 8 (integral + B_4 width W; the residuals then tile width-72 banks with 9 replicas, checked separately). + +usage: stages.py retime|kernel IN.json.gz OUT.json.gz SELECTION.json +After applying, the full exact replay of e8core (legality, F2 on all columns, source spans) must pass and the output +must equal the frozen output content hash. (This package uses the kernel stage only: on PR #376's word our retiming +descent finds no move, before or after the kernel.) +Chafik Boukhalfa (chafreaky) with Anthropic Claude assistance; Apache-2.0.""" +import sys, os, json, hashlib +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from e8core import * + + +def content_sha(c): + return hashlib.sha256(json.dumps(c, sort_keys=True, separators=(',', ':')).encode()).hexdigest() + + +class Framer: + def __init__(self, c): + self.fl = c['frames']; self.key = {}; self.v = c['v'] + for k, fr in enumerate(self.fl): self.key.setdefault(sum(1 << i for i in fr), k) + def fid(self, m): + if m not in self.key: self.key[m] = len(self.fl); self.fl.append([i for i in range(self.v) if m >> i & 1]) + return self.key[m] + + +def mask_of(lines): return sum(1 << i for i in lines) + + +def occurrences(c, masks): + """per register: list of (kind, ref) with pins ('p', mask) and gates ('g', (phase, k)) in time order""" + v = c['v']; n = 2 * v + c['R']; FULL = (1 << v) - 1 + occ = [[('p', masks[c['start'][r]])] for r in range(n)] + for ph in ('D', 'A'): + for k, (f, d, s) in enumerate(c[ph]): + for x in [d] + s: occ[x].append(('g', (ph, k))) + for t in range(v): occ[v + t].append(('p', 0)) + for q in c['ret']: occ[q].append(('p', FULL)) + for ph in ('B', 'C'): + for k, (f, d, s) in enumerate(c[ph]): + for x in [d] + s: occ[x].append(('g', (ph, k))) + for r in range(n): occ[r].append(('p', masks[c['final'][r]])) + return occ + + +def lower_bounds(c, L): + v = c['v']; n = 2 * v + c['R']; sup = [1 << i if i < v else 0 for i in range(n)]; lb = {} + for ph in ('D', 'A', 'B', 'C'): + for k, (f, d, srcs) in enumerate(c[ph]): + need = 0 + for s in srcs: + sup[d] |= sup[s] + if s < v or s >= 2 * v: need |= sup[s] + if d >= 2 * v: need |= sup[d] + lb[(ph, k)] = L.close(need) if need else 0 + return lb + + +def retime(c, sel): + L = Lat(c['lines']); masks = to_masks(c, L); occ = occurrences(c, masks); lb = lower_bounds(c, L) + gm = {(ph, k): masks[g[0]] for ph in ('D', 'A', 'B', 'C') for k, g in enumerate(c[ph])} + pos = {} + for r, o in enumerate(occ): + for i, (kind, x) in enumerate(o): + if kind == 'g': pos.setdefault(x, []).append((r, i)) + def fr(r, i): + kind, x = occ[r][i]; return x if kind == 'p' else gm[x] + seen = set() + for ph, k, old_lines, new_lines in sel: + g = (ph, k); assert ph != 'D' and g not in seen; seen.add(g) + assert gm[g] == L.close(mask_of(old_lines)), ('selection not bound to this word', g) + F = L.close(mask_of(new_lines)); assert F == mask_of(new_lines), 'frame given as all its root lines' + gm[g] = F + for g in seen: # the joint retimed configuration: every moved gate inside its feasible interval + F = gm[g]; lo = lb[g]; hi = (1 << c['v']) - 1 + for r, i in pos[g]: lo |= fr(r, i - 1); hi &= fr(r, i + 1) + assert lo & ~F == 0 and F & ~hi == 0, ('outside the feasible interval', g) + out = json.loads(json.dumps(c)); fm = Framer(out) + for ph in ('D', 'A', 'B', 'C'): + out[ph] = [[fm.fid(gm[(ph, k)]), d, list(s)] for k, (f, d, s) in enumerate(c[ph])] + return out + + +def kernel(c, sel): + L = Lat(c['lines']); masks = to_masks(c, L); v = c['v']; n = 2 * v + c['R']; FULL = (1 << v) - 1 + occ = occurrences(c, masks) + gm = {(ph, k): masks[g[0]] for ph in ('D', 'A', 'B', 'C') for k, g in enumerate(c[ph])} + first = {} + for h in range(2 * v, n): + assert masks[c['start'][h]] == 0 + first[h] = next(x if kind == 'p' else gm[x] for kind, x in occ[h][1:] if (x if kind == 'p' else gm[x]) != 0) + resp = {} + for f, t, srcs in c['D']: + assert masks[f] == 0 + for s in srcs: resp[s] = resp.get(s, 0) ^ (1 << (t - v)) + ret = set(c['ret']); pivots = {}; donor_at = {}; tot = 0 + for E_lines, p, D in sel: + E = L.close(mask_of(E_lines)); assert E == mask_of(E_lines) and E != 0 + assert p not in ret and p not in pivots and p not in donor_at and 2 * v <= p < n + x = resp.get(p, 0) + for d in D: + assert d not in ret and d not in pivots and 2 * v <= d < n + assert donor_at.setdefault(d, E) == E, 'donor serves one entrance' + x ^= resp.get(d, 0) + assert x == 0, ('response relation fails', p) + for h in [p] + D: assert E & ~first[h] == 0, ('entrance not inside first frame', h) + pivots[p] = E; tot += L.dim(E) + assert not set(pivots) & set(donor_at) + assert tot % 8 == 0, 'total entrance rank 0 mod 8' + out = json.loads(json.dumps(c)); fm = Framer(out) + for p, E in pivots.items(): out['start'][p] = fm.fid(E) + out['D'] = [[f, t, [s for s in srcs if s not in pivots]] for f, t, srcs in c['D']] + byd = {} + for E_lines, p, D in sel: + for d in D: byd.setdefault((d, mask_of(E_lines)), []).append(p) + out['A'] = [[fm.fid(E), d, sorted(ps)] for (d, E), ps in sorted(byd.items())] + out['A'] + out['C'] = out['C'] + [[fm.fid(FULL), d, sorted(ps)] for (d, E), ps in sorted(byd.items())] + return out, len(sel), tot, len(byd) + + +if __name__ == '__main__': + st, inp, outp, selp = sys.argv[1:5] + c = load_word(inp); sel = json.load(open(selp)) + assert sel['input_sha256'] == content_sha(c), 'selection bound to a different input word' + if st == 'retime': + w = retime(c, sel['gates']); info = '%d gates retimed' % len(sel['gates']) + else: + w, ne, tot, nd = kernel(c, sel['entries']); info = '%d entries, total entrance rank %d, %d donor slots' % (ne, tot, nd) + r = replay(w, span_mode='z'); assert not r['viol'], r['viol'][:5] + assert content_sha(w) == sel['output_sha256'], 'output differs from the frozen stage output' + save_word(w, outp) + print(' stage %s: %s | exact replay PASS (legality, F2 on %d columns, source spans) | local histogram %s | output sha %s' + % (st, info, r['n'], dict(sorted(r['H'].items())), sel['output_sha256'][:16])) diff --git a/research/r740-block-retimed-kernel/vendor/pr436/LICENSE b/research/r740-block-retimed-kernel/vendor/pr436/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/r740-block-retimed-kernel/vendor/pr436/NOTICE.md b/research/r740-block-retimed-kernel/vendor/pr436/NOTICE.md new file mode 100644 index 0000000000..2c01026b8b --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/NOTICE.md @@ -0,0 +1,51 @@ +# Notice + +Apache-2.0 (`LICENSE`). Prepared by eumemic with substantial Anthropic Claude assistance. + +## New in this package + +- `code/reuse/`: the elimination-reuse stage (`reuse.py`), the frame retiming (`retime.py`), their integer cost tables (`ecost.py`), the regeneration driver (`regen.py`) and the elimination-reuse negative controls (`controls.py`). +- `data/params/params-r740.json`: our parameters for PR #370's producer. `discovery/` holds the search that nominated them. +- `data/bit/bitE8-r740.json.gz` (the word) and `data/bit/reuse-ledger.json` (its inserted elimination gates). +- `code/nine/global_word_g.py`, `audit_g.py`, `certify_g.py`: generalisations of PR #386's `global_word.py`, `audit.py` and `certify.py` to any bitE8/1 word whose helpers start at frame 0 and end at the full frame. `regress386.py` checks them against PR #386's own receipts. `cited.py` binds the cited complex savings to the PRs' receipts. `compose433.py` ports PR #433's bit pricing, finite invoice and tail. +- `code/b4/kappa_b4.py`, `code/provenance.py`, `verify.sh`, `EXPECTED.json`, `data/complex-b-*.json`, `.github/workflows/e8-bit-elimination-reuse.yml`. + +## Vendored, byte-identical (git blob ids in `SOURCE-pr*.json`, checked by `code/provenance.py`) + +- **PR #370 (Dylan Crow / utcorvusvolat-dotcom, with Anthropic Claude assistance), commit b7fe9cd:** + - the producer `code/bit/producer/`; + - the independent checker and its controls `code/bit/independent/`; + - the record exporter and the record-level controls; + - PR #266's official cohort checkers as generalised there (`legality_h.cpp`, `columns_h.cpp`, NCOPY); + - `gram_frames.py`, `stage_cohort.py`; + - PR #315's engines (`code/pricing/`, DreamingOfClouds); + - nlohmann/json (`json.hpp`, MIT licence in its header); + - the E8 bit word `data/bit/bitE8-r865.json.gz`; + - `LICENSE`. +- **PR #381 (DaysSky, assisted with Claude), commit 00765b2:** the B_K checkers `columns_k.cpp`, `geometry_k.py`, `tile_k.py`, `certify_bit_k.py`, `finite_k.py`, `cost.py`, `receipts_k.py`, and PR #363's `bridged.py` (DaysSky). +- **PR #386 (Zhihao Chen / jacklightChen, with OpenAI Codex assistance), commit dd11cf8:** + - `geometry.py` (compressed nine-stage bit geometry, unchanged); + - the portable `bits/stdc++.h`; + - the validation receipts `GLOBAL.json`, `AUDIT.json` and `COMBINED.json`, used only as regression references. +- **PR #417 (Chafik Boukhalfa / chafreaky, with Anthropic Claude assistance), commit 3f681fb:** + - `bootstrap.py` (their reimplementation of rohanarun's PR #392 refined pricing tail), `e8core.py` and its copies of PR #315's engines; + - `apply376.py`; + - the final kernel word, used as a B_4 control. +- **PR #376 (applecrusher, with OpenAI Codex assistance), commit 92328da:** `frame-selection.json`, `reuse-selection.json` and `LICENSE-pr376`, as vendored in PR #417. +- **PR #426 (ai-nanachi, with OpenAI Codex assistance), commit 88d5525:** the R767 bit word, used only as a priced comparison and B_3 control, and `LICENSE-pr426`. +- **PR #425 (Zhihao Chen / jacklightChen, with OpenAI Codex assistance), commit e11ccea:** the validation receipt `FINAL.json`, which states the cited b and κ. +- **PR #431 (Rohan Arun / rohanarun, with OpenAI Codex assistance; draft), commit db4f465:** the validation receipt `VALIDATION-LOCAL.json`, which states the cited b and κ. +- **PR #433 (icekylinx, with OpenAI Codex assistance), commit 6d92445:** `CERTIFICATE.json`, which states the cited complex b, the R758 bit c and κ. `code/nine/compose433.py` is our port of #433's `code/bit_price.py` and `code/combined.py` arithmetic. No #433 code is vendored or run. + +## Cited, not rebuilt + +Complex coarse savings in `data/complex-b-nine.json` and `data/complex-b-b4.json`, each with its PR, commit and receipt (git blob): + +- compressed nine-stage layout: + - PR #433 (icekylinx; `data/complex-b-433.json`, bound to its certificate by `compose433.py`); + - PR #386 (#377's component), PR #425 (jacklightChen) and PR #431 (rohanarun, draft), bound to their receipts by `code/nine/cited.py`. +- B_4: PR #424, #407 (chafreaky), #410 (eumemic) and #409 (rohanarun). + +No complex construction is rebuilt here. + +The E8 label family follows Jacob Sussman's introduction of E8 for the complex supplier. diff --git a/research/r740-block-retimed-kernel/vendor/pr436/README.md b/research/r740-block-retimed-kernel/vendor/pr436/README.md new file mode 100644 index 0000000000..5ddb576f02 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/README.md @@ -0,0 +1,182 @@ +κ = 1128983115440183/10¹⁸ (conditional; bit-bound) with PR #433's complex supplier + +# An E8 bit word with 740 helpers: dead helper slots reused through F₂ relations + +This package is a bit-side supplier: an E8 bit word in PR #370's format (h = 8, v = 120, 9 retained totals) with **R = 740 helpers**. For comparison, #370 has 865, #376 has 822, #426 has 767 and #433 has 758. In the compressed nine-stage layout of PR #386 (m = 64), which #425, #431 and #433 use, its coarse saving is + +**c = 282564789736676592463/(2.5·10²³) ≈ 1.130259158946706·10⁻³** + +on PR #433's 10⁻²⁴ grid. On #386's 10⁻¹⁸ grid it is 565129579473353/(5·10¹⁷). + +PR #433 (icekylinx) pairs its split-centre complex supplier, b = 1183986549206329/10¹⁸ ≈ 1.183987·10⁻³, with a 758-helper bit word, c = 1.122122700265139·10⁻³. #433's bit side binds, at κ = 1.120864952258278·10⁻³. With this word in place of R758, through #433's own bit engine, finite invoice and six-level tail: + +**κ = 1128983115440183/10¹⁸ ≈ 1.128983115440183·10⁻³**, bit-bound, **+0.7243 % over #433**. + +The bit c is +0.7251 % over #433's R758. As controls, the same code reproduces #433's bit c from #433's stated R758 profile, and #433's κ from #433's (c, b), exactly. The complex side still has 4.75 % of headroom over this c. + +## Bit coarse savings + +| bit word | R | compressed nine-stage (#386 layout, m = 64) | B₄ unsplit (#381 layout, m = 72) | B₃ unsplit (m = 56) | +| --- | ---: | ---: | ---: | ---: | +| PR #370 (`bitE8-r865`) | 865 | **1057833103534317/10¹⁸** (= #386, #425, #431) | **249162322049641/(2.5·10¹⁷)** (= #381) | 9.912261·10⁻⁴ | +| PR #376 (R822) | 822 | 1084538480613107/10¹⁸ | **255384852701747/(2.5·10¹⁷)** (= #390 … #424) | **8128527708459/(8·10¹⁵)** (= #376, #389 baseline) | +| PR #417 (R822 + shared-donor kernel) | 822 | — (entrance residuals do not fill #386's rank-8 slots) | **1044063934627389/10¹⁸** (= #417) | 1.037508·10⁻³ | +| PR #426 (R767, clean-reset reuse) | 767 | 1116714040089377/10¹⁸ | 1.051689·10⁻³ | **104575879789097/10¹⁷** (= #426) | +| PR #433 (R758: #426 + source-basis totals) | 758 | **561061350132569610283/(5·10²³)** (= #433, 10⁻²⁴ grid) | — | — | +| **this word** | **740** | **282564789736676592463/(2.5·10²³) ≈ 1.130259·10⁻³** | **1064525457834209/10¹⁸ ≈ 1.064525·10⁻³** | **1058066102700151/10¹⁸ ≈ 1.058066·10⁻³** | + +Compressed nine-stage values are on #386's 10⁻¹⁸ grid, except #433's and this word's, which are on #433's 10⁻²⁴ grid. On the 10⁻¹⁸ grid this word is 565129579473353/(5·10¹⁷). + +Bold entries in the control rows are the values the cited PRs publish. `verify.sh` reproduces each exactly with the same code that prices this word. Most come from the PR's own word. #433's R758 value comes from the R758 profile stated in #433, because the package does not ship that word. The other entries are computed here and are not published by those PRs. + +This word compared with the best published bit c in each layout: + +| layout | best published bit c | this word | +| --- | --- | ---: | +| compressed nine-stage | #433's R758 | +0.725 % | +| B₄ | #417 | +1.960 % | +| B₃ | #426 | +1.177 % | + +Against #426's R767 word priced in the same layouts, this word is +1.213 % (compressed nine-stage) and +1.221 % (B₄). The five-stage saving (PR #370's independent checker) is 9.63227·10⁻⁴. + +## κ with cited complex suppliers + +| complex supplier (cited, not rebuilt) | layout and tail | b | κ with this word | κ as published | +| --- | --- | ---: | ---: | ---: | +| **PR #433 (icekylinx)** | compressed nine-stage; #433's tail | 1183986549206329/10¹⁸ | **1128983115440183/10¹⁸** (bit-bound) | 560432476129139/(5·10¹⁷) (bit-bound, R758) | +| PR #431 (rohanarun, draft) | compressed nine-stage; #386's tail | 529046848168159/(5·10¹⁷) | 1056975315151441/10¹⁸ (complex-bound) | 1056715272872389/10¹⁸ at db4f465 (bit-bound, #370 word); 1056975315151441/10¹⁸ at 71c5988 (with #376's retimed bit word) | +| PR #425 (jacklightChen) | compressed nine-stage; #386's tail | 52455248902029/(5·10¹⁶) | 524002754014103/(5·10¹⁷) | same | +| PR #386 (#377's component) | compressed nine-stage; #386's tail | 999240641319551/10¹⁸ | 998243154231047/10¹⁸ | same | +| PR #424 (chafreaky) | B₄; #392's refined tail | 254887067002137341481/(2.5·10²³) | 1018509848057013/10¹⁸ | same | +| PR #410, #409, #407 | B₄; #392's refined tail | as cited by #417 | as published | same | + +All κ values are on the 10⁻¹⁸ grid and satisfy PR #315's 47 strict outer inequalities. The next grid point is rejected. The three tails: + +- **#433's tail** (`compose433.py`, ported from #433's `bit_price.py` and `combined.py`): + - c is the 10⁻²⁴-grid lower endpoint of PR #315's `certify`, with the 10⁻¹⁶ bad-branch allowance, and is checked by the second engine; + - η = β = 10⁻¹⁸, seed min(c, (1 − β)b) − 10⁻²⁴, six bootstrap levels; + - zero η, zero β and unit β are rejected as well; + - the finite invoice charges the prefix at the next multiple of 64 bits: here 123 bits, charged 128. +- **#386's tail** (#386, #425, #431): three bootstrap steps, η = 10⁻¹², β = 10⁻⁹. The seed is strictly below (1 − β) times both suppliers (#431's policy). +- **B₄:** #392's refined tail, as reimplemented in PR #417's `bootstrap.refine`. + +With #431's complex supplier the complex side binds. Every bit word above #431's b gives that κ, including #376's and #426's words in this layout. #431's later head uses #376's retimed word. The PR #370 word reproduces #431's κ at db4f465, and #425's and #386's κ, exactly. + +## The word + +1. **PR #370's producer, unchanged, with new parameters.** `data/params/params-r740.json` differs from #370's `params-r865.json` in 67 of 520 entries. It was found by a local search with the reuse pass in the objective (`discovery/`). The producer gives a word with R = 863. +2. **Elimination reuse** (`code/reuse/reuse.py`). + - A helper is dead after its last gate in phases A and B. It still holds a leftover x-content: an F₂ sum of source lines, at its last frame. + - Before a later helper is born at frame F, the pass looks for an F₂ relation content(r₀) = Σ_{q∈S} content(q) among dead slots whose frames lie inside F. It emits r₀ += S at the join G of their frames (G ⊆ F). r₀ then holds no x-content and hosts the new helper. + - The relation is found by Gaussian elimination over F₂. The cheapest relation with |S| ≤ 3 replaces it when one exists, scored by the extra climbing of r₀ and of the eliminators. + - The 9 retained totals take dead slots too. The slot's leftover x-lines are read from the sources at the full frame. + - The dirt compensation D and the cleanup C are rebuilt as in #370's `fullword.py`. + - **114 helper slots and 9 totals are reused: R 863 → 740.** + - **Prior and concurrent work.** + - #376 reused helper lifetimes by aliasing: 43 reuses. + - #426 (ai-nanachi, posted first) uses the same mechanism as this pass. It zeroes a retired helper's x-content with exact two- or three-parent "clean resets" before reusing the slot, rebuilds D and C, and keeps the totals protected. It makes 55 resets on #376's R822 word (R767). + - This pass was developed independently. It differs in four ways: it searches every dead slot inside the birth frame by elimination, uses cost-scored relations with up to three eliminators, puts the totals on dead slots as well, and starts from a re-parameterised #370 producer word (R863). + - **#433's source-basis trick does not apply here.** The trick computes the nine retained sums in source rows, which removes #426's nine dedicated total helpers (R767 → 758). In this word the totals already sit on slots of earlier helpers, and no helper is born after them, so the trick would remove no register. +3. **Retiming** (`code/reuse/retime.py`, the idea of #389). Each gate moves to its lowest or highest legal frame when that lowers Σ r ln(64/r) over its registers' adjacent steps: 37 gate moves. + +All search choices use integer costs computed with Python's correctly rounded `decimal` logarithm, so the word is the same on every platform. One invocation's local histogram is {1: 2355, 2: 884, 3: 489, 4: 425, 5: 62, 8: 9}: 4,224 blocks, of which 9 are copies. Gates D/A/B/C: 120/1873/472/1873; 944 frames. + +## Verify + + BOOST_INCLUDE=/usr/include bash research/e8-bit-elimination-reuse/verify.sh /fresh/output/dir + bash research/e8-bit-elimination-reuse/verify.sh --quick /fresh/output/dir + +Requirements: Python 3.11+ with numpy, mpmath and sympy (`requirements.txt`); a C++17 compiler (`CXX`); Boost headers (`BOOST_INCLUDE`). `--quick` skips the regressions on #370's word, the comparison words in the compressed nine-stage layout, and the B₃ rows. The workflow `.github/workflows/e8-bit-elimination-reuse.yml` runs both modes on Python 3.12 and 3.14. + +0. **Manifest and provenance.** `MANIFEST.sha256`. The git blob id of all 52 vendored files is checked against `SOURCE-pr*.json`: #370, #376, #381, #386, #417, #425, #426, #431 and #433. +1. **The word from pinned inputs.** + - Control: #370's producer regenerates #370's word from its own parameters. + - `regen.py` rebuilds this word from our parameters (producer → reuse → retiming). It must equal the shipped word, and the reuse ledger must match. + - #376's R822 word is rebuilt from #370's word and #376's two witnesses with #417's `apply376.py`, as a control word. +2. **One invocation, exact.** + - #370's independent checker: the 120 E8 root lines; nested frames; common gate frames; F₂ on all 980 columns, dirty helpers included; Gram determinants on 935 used frames (prime 2 only); the five-stage root. + - #370's 6 word-level controls, rejected. + - 6 elimination-reuse controls, rejected by the same checker: drop an elimination gate, drop one eliminator, drop one x-line read of a total's undo, lower an elimination below an eliminator's frame, remove all 123 elimination gates, move a total's undo gate to frame 0. +3. **Official checkers.** + - PR #266's cohort legality, as generalised in #370 (NCOPY = 9): 19,527 records, 15,294 common-frame ADDs. + - Five-stage formal columns: 1,220 columns, prefix payload 64 bits < 104. + - #381's B₄ formal columns: all 1,700 physical columns over F₂ through 9 invocations, 18 twin bridges and the terminal exchange. All 18 omitted-bridge controls are rejected. + - #370's 6 record-level controls are rejected, including the unmodified copy count NCOPY = 8. +4. **Nondegeneracy.** `gram_frames.py`: all 944 frames positive definite under the E8 form. Prime witnesses are valid; the only prime is 2. +5. **Retained totals.** 9 COPY/ERASE episodes at the full frame (rank 8). +6. **Compressed nine-stage layout (#386).** + - #386's `geometry.py`, unchanged: 120 port routes, 1,080 route checks, at most 77 route factors with denominators {1, 2, 4}, and the bank slots. It is bound to this word by the equality of the 120 label vectors. + - `global_word_g.py`, our generalisation of #386's `global_word.py`: + - both reflected local streams replay all 980 columns; + - the scalar replay over 9 stages covers 7,620 independent columns; + - 72 local invocations, 1,405,944 emitted events and 53,280 bank assignments (6,660 banks of 8 whole rank-8 slots, no padding); + - live stock 64v + 9R = 14,340; + - deficit 2,496 = 8(8v − 9·72); + - max child 42 of 64, so two-level halving; + - prefix bound 2¹⁸·776⁵·17,724⁴ of 123 bits, under #386's 192-bit allowance. + - `audit_g.py`: 944 exact rational projectors and 3,263 nested pairs. #386's 8 template mutations are rejected. + - `cited.py`: each cited complex b, and that PR's own κ, must equal the fields of the PR's receipt. The receipts are #386's `COMBINED.json`, #425's `FINAL.json` and #431's `VALIDATION-LOCAL.json`, vendored and pinned by blob id. + - `certify_g.py`: both PR #315 engines with the 10⁻¹⁶ fallback admit c and reject c + 10⁻¹⁸. The finite coefficient has 123 bits; the two-level coefficient has 282 bits, below 2⁵¹²; the row coefficient is 18,355 < 20,161. κ is then computed with each cited complex b. + - `compose433.py`: PR #433's bit engine, finite invoice and six-level tail, ported from #433's `bit_price.py` and `combined.py`. + - Controls: #433's stated R758 profile prices to #433's bit c, and #433's (c, b) gives #433's κ. Both are bound to #433's `CERTIFICATE.json`, which is vendored and pinned. + - Then this word's c, invoice and κ with #433's complex b: next grid point, zero η, zero β and unit β are rejected. + - **Regression:** on #370's word the same three scripts reproduce #386's `GLOBAL.json`, `AUDIT.json` and the bit, finite and κ fields of `COMBINED.json`, field for field. They also reproduce #425's and #431's κ. + - **Comparison:** the same chain prices #376's word (rebuilt in step 1) and #426's word in this layout. Each gives the same κ with #431, since each has c > b. +7. **B₄ (#381's layout, unsplit).** + - #381's `geometry_k.py` on this word: PR234 routes on 9 blocks, idle gap ranks equal to `bridged.py`, the 9-window entrance completion, max child 50 (halving degree 2). + - `tile_k.py`: 740 banks of 9 rank-8 residuals with T = 9 replicas. + - `certify_bit_k.py` prices this word and the #370, #376 and #417 controls. + - `receipts_k.py` and `finite_k.py`: the finite bill at m = 72. The coefficient has 48 bits, below 2⁸⁰; the payload prefix is 64 bits; the internal row coefficient is 10,370. + - `kappa_b4.py` computes κ with the cited B₄ suppliers. + - **Regression:** `columns_k` at K = 2 gives the five-stage `columns_h` receipt. +8. **B₃ (informational).** Formal columns at K = 3 (1,460 columns), banks with T = 7, and prices with the #376 and #426 controls. +9. **Summary** against `EXPECTED.json`. + +Locally, the C++ checkers were built against a 128-bit, overflow-checked stand-in for `boost::multiprecision::cpp_int`, because the preparing machine has no Boost. CI compiles them against libboost-dev. + +## Retained assumptions and open obligations + +- **Everything PR #370 admits:** + - 9 retained totals at h = 8; + - PR234's banks for a non-paired-cube family; + - the inherited all-size weighted bit compiler, prime/tape/precision and analytic interfaces. +- **The compressed nine-stage layout is PR #386's:** + - its window, bank and route arguments (PROOF.txt there); + - two-level halving (max child 42 of 64); + - its finite charges. + Our scripts check this word against those arguments' finite conditions; they add no new argument. +- **B₄ is PR #381's:** halving degree two on the bit side (#375, #381); no Lean proof of B_K. +- **The complex suppliers are cited by pinned reference and not rebuilt:** + - the headline κ depends on #433's split-centre complex supplier (its PROOF.md), which builds on #425's written scalar-interface extension; + - #433's complex b, its six-level tail (#392's refined form, η = β = 10⁻¹⁸) and all its obligations remain #433's. + - #431 (a draft) and the other cited suppliers are listed only for comparison. +- **#433's bit finite charge is adopted for the headline:** the prefix is charged at the next multiple of 64 bits (here 123 bits, charged 128, inside #386's 192-bit allowance), and the two-level coefficient is below 2⁵¹² (here 282 bits). +- This is a conditional finite construction, not a formal verification of the multiplication theorem. No Lean proof is claimed. +- **Not measured:** stacking #417's shared-donor kernel on this word. It applies to B_K banks. It does not apply to #386's whole-block banks, whose slots need rank-8 residuals. + +## Credits + +- **Dylan Crow (utcorvusvolat-dotcom), PR #370:** the E8 bit word format, the producer whose output we reuse, the independent checker and the generalised official checkers. +- **applecrusher, PR #376:** helper-lifetime reuse, which the elimination reuse generalises. +- **ai-nanachi:** + - PR #389: the frame-retiming idea; + - PR #426: clean-reset reuse, the same slot-reuse mechanism, published first (developed independently here), and its R767 word as a comparison. +- **icekylinx, PR #433:** + - the split-centre complex supplier that the headline κ uses; + - its bit engine, finite invoice and six-level tail, ported here; + - the R758 comparison. +- **DaysSky:** + - PR #381: the B₄ layout and checkers; + - PR #375: halving degree two; + - PR #363: B_K and `bridged.py`. +- **Zhihao Chen (jacklightChen):** + - PR #386: the compressed nine-stage bit layout and its checkers, generalised here; + - PR #425: the mutable-basis complex word. +- **Chafik Boukhalfa (chafreaky), PR #417:** the B₄ pricing tail port, the #376 rebuild and the kernel-word control. +- **Rohan Arun (rohanarun):** + - PR #431: a cited complex supplier and the two-supplier seed policy; + - PR #392: the refined pricing tail. +- **Jacob Sussman:** the E8 family and the bridged word. +- **PR #266 and PR #315 (DreamingOfClouds) lineage:** the official checkers, the moment engines and the outer assembly. + +Prepared by eumemic with substantial Anthropic Claude assistance. Apache-2.0 (`LICENSE`); see `NOTICE.md`. diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/compile.py b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/compile.py new file mode 100644 index 0000000000..86b12507ef --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/compile.py @@ -0,0 +1,201 @@ +"""Dylan Crow, with Anthropic Claude assistance; Apache-2.0. Compile a Re-Pair hierarchy into an explicit bit word (frames = root masks) and price it. +Registers: x 0..119, y 120..239, helpers 240.. . Gate: (phase, frame, dst, [srcs]) dst += sum(srcs) over F2.""" +import e8lib as E, frames as Fm, price as P +from collections import defaultdict, Counter +V=E.V +class Word: + def __init__(self): + self.nh=0; self.A=[]; self.B=[]; self.ret=[] + def helper(self): + r=2*V+self.nh; self.nh+=1; return r +def X(s): return s +def Y(t): return V+t +def compile_h(h, low=True, drop=frozenset(), centres=None): + need=h.need + needed=set(); todo=[u for t in range(V) for u in need[t]] + while todo: + u=todo.pop() + if u in needed: continue + needed.add(u) + if h.kids[u]: todo.extend(h.kids[u]) + rules=sorted((u for u in needed if h.kids[u]), key=lambda u:(h.dim[u],u)) + # low reads: longest nested chain of needed symbols per target + lowset=set() + if low: + for t in range(V): + it=sorted(need[t], key=lambda u:(h.dim[u],u)); best={} + for j,u in enumerate(it): + b=[u] + for i in range(j): + v=it[i] + if (h.dim[v]len(b): b=best[v]+[u] + best[u]=b + ch=max(best.values(),key=len) if best else [] + for u in ch: + if h.dim[u]<7 and (t,u) not in drop: lowset.add((t,u)) + uses=defaultdict(list) + for w in rules: + for c in h.kids[w]: uses[c].append((0,h.dim[w],h.frame[w],w)) + for t in range(V): + for u in need[t]: + if (t,u) in lowset: uses[u].append((1,h.dim[u],h.frame[u],t)) + else: uses[u].append((1,7,Fm.HYP[t],t)) + chains={}; chain_of={} + for u in needed: + ev=sorted(uses[u]); cl=[] + for e in ev: + best=None + for i,ch in enumerate(cl): + last=ch[-1] + if last[0]==1 and last[1]==7 and last[2]!=e[2]: continue + if last[2]==e[2] or (last[1]=2*V: host=(c,i); break + if host: + q=reg.pop(host); srcs=[reg[(c,i)] for c,i,_ in info if (c,i)!=host] + W.A.append((F,q,srcs,None)); inplace+=1 + else: + q=W.helper(); W.A.append((F,q,[reg[(c,i)] for c,i,_ in info],None)) + reg[(w,0)]=q + n=len(chains[w]) + if n>1: + qs=[W.helper() for _ in range(n-1)] + W.A.append((F,q,None,qs)) + for i,qq in enumerate(qs): reg[(w,i+1)]=qq + # totals + cent=centres or default_centres() + for sup in cent: + q=W.helper(); W.A.append((Fm.FULL,q,[X(s) for s in range(V) if sup>>s&1],None)); W.ret.append(q) + # phase B: deliveries sorted by frame dim + ev=[] + for t in range(V): + hyp=[] + for u in need[t]: + r=reg[(u,chain_of[(u,1,t)])] + if (t,u) in lowset: ev.append((h.dim[u],h.frame[u],Y(t),[r])) + else: hyp.append(r) + if hyp: ev.append((7,Fm.HYP[t],Y(t),hyp)) + ev.sort(key=lambda e:(e[0],e[2])) + for d,F,yt,srcs in ev: W.B.append((F,yt,srcs,None)) + W.stats=dict(R=W.nh,rules=len(rules),inplace=inplace,low=len(lowset),chains=sum(len(c) for c in chains.values())) + return W +_DC=None +def default_centres(): + """T0 = all lines; T_i = {S : B(a_i,S)=1} for a basis a_i of E8/2E8 given by 8 lines spanning it mod 2.""" + global _DC + if _DC: return _DC + # pick 8 lines whose images are independent mod 2 : use B-matrix rank + B=[[E.G[a][b]&1 for b in range(V)] for a in range(V)] + rows=[]; basis=[]; piv={} + for a in range(V): + m=sum(B[a][b]<=V: get(u) + return ph +def choose_low(h, needed, ph, drop=frozenset(), mode='longest'): + lowset=set() + for t in range(V): + it=sorted(h.need[t], key=lambda u:(h.dim[u],u)); best={} + for j,u in enumerate(it): + b=[u] + for i in range(j): + v=it[i] + if h.dim[v]len(b): b=best[v]+[u] + best[u]=b + ch=max(best.values(),key=len) if best else [] + for u in ch: + if h.dim[u]<7 and (t,u) not in drop: lowset.add((t,u)) + return lowset +def compile2(h, lowset=None, drop=frozenset(), centres=None): + needed=needed_symbols(h); ph=phases(h,needed) + if lowset is None: lowset=choose_low(h,needed,ph,drop) + # uses: (phaseorder, dim, kind, frame, who) phaseorder 0=A 1=B ; kind 0 rule-child 1 delivery + uses=defaultdict(list) + for w in needed: + if w=2*V) + inplace=[0]; ncopy=[0] + def form(w,lst): + F=h.frame[w]; info=[] + for c in h.kids[w]: + i=chain_of[(c,0,w)]; ch=chains[c][i] + info.append((c,i,ch[-1][2]==0 and ch[-1][4]==w)) + host=None + for c,i,end in info: + if end and reg[(c,i)]>=2*V: host=(c,i); break + if host: + q=reg.pop(host); lst.append((F,q,[reg[(c,i)] for c,i,_ in info if (c,i)!=host],None)); inplace[0]+=1 + else: + q=W.helper(); lst.append((F,q,[reg[(c,i)] for c,i,_ in info],None)) + reg[(w,0)]=q; n=len(chains[w]) + if n>1: + qs=[W.helper() for _ in range(n-1)]; ncopy[0]+=n-1 + lst.append((F,q,None,qs)) + for i,qq in enumerate(qs): reg[(w,i+1)]=qq + Arules=sorted((w for w in needed if w>=V and ph[w]=='A'),key=lambda w:(h.dim[w],w)) + for w in Arules: form(w,W.A) + cent=centres or C.default_centres() + for sup in cent: + q=W.helper(); W.A.append((Fm.FULL,q,[C.X(s) for s in range(V) if sup>>s&1],None)); W.ret.append(q) + # phase B events + ev=[] + for w in needed: + if w>=V and ph[w]=='B': ev.append((h.dim[w],0,w)) + lowby=defaultdict(list) + for (t,u) in lowset: lowby[u].append(t) + for u in lowby: ev.append((h.dim[u],1,u)) + for t in range(V): ev.append((7,2,t)) + ev.sort() + for d,k,a in ev: + if k==0: form(a,W.B) + elif k==1: + u=a + for t in sorted(lowby[u]): + W.B.append((h.frame[u],C.Y(t),[reg[(u,chain_of[(u,1,t)])]],None)) + else: + t=a; srcs=[reg[(u,chain_of[(u,1,t)])] for u in h.need[t] if (t,u) not in lowset] + if srcs: W.B.append((Fm.HYP[t],C.Y(t),srcs,None)) + W.stats=dict(R=W.nh,carriers=W.ncarrier,Arules=len(Arules),Brules=sum(1 for w in needed if w>=V and ph[w]=='B'), + inplace=inplace[0],copies=ncopy[0],low=len(lowset),chains=sum(len(c) for c in chains.values())) + return W +if __name__=='__main__': + import pickle,sys + from repair import Hier + import __main__; __main__.Hier=Hier + try: + import ham1; __main__.SH=ham1.SH + except Exception: pass + h=pickle.load(open(sys.argv[1],'rb')) + if len(sys.argv)>2: PHASEMODE[0]=sys.argv[2] + W=compile2(h) + print(W.stats) + print('f2 check bad targets/x:',[len(z) for z in C.f2_check(W)]) + s,deficit,D,steps=C.evaluate(W) + print('R',W.nh,'saving %.6e'%s,'deficit',deficit,'D %.0f'%D,sorted(steps.items())) + import diag; diag.diag(W) diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/e8lib.py b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/e8lib.py new file mode 100644 index 0000000000..8464b956f6 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/e8lib.py @@ -0,0 +1,79 @@ +"""Dylan Crow, with Anthropic Claude assistance; Apache-2.0. E8 root lines in Q^8 (standard coordinates, doubled to integers), F2 images, basic linear algebra.""" +import itertools +from fractions import Fraction as Fr + +def roots2(): + """E8 roots times 2 (integer vectors): 2(±e_i±e_j) and (±1)^8 with even number of minus signs.""" + R=[] + for i,j in itertools.combinations(range(8),2): + for a in (2,-2): + for b in (2,-2): + v=[0]*8; v[i]=a; v[j]=b; R.append(tuple(v)) + for signs in itertools.product((1,-1),repeat=8): + if signs.count(-1)%2==0: R.append(tuple(signs)) + return R + +def ip(u,v): # true inner product of roots given doubled coordinates + return sum(a*b for a,b in zip(u,v))//4 + +import os +def roots_hamming(): + """E8 via Construction A from the [8,4,4] extended Hamming code: x in Z^8, x mod 2 in H8, |x|^2=4. + Inner product of roots = /2. Returned scaled so that ip() (which divides by 4) works: multiply by sqrt2? no: + we return 2*x/sqrt... -> use integer vectors y=x and a separate scale.""" + H=[] + for a in itertools.product((0,1),repeat=4): + g=[(1,1,1,1,0,0,0,0),(1,1,0,0,1,1,0,0),(1,0,1,0,1,0,1,0),(0,1,1,0,1,0,0,1)] + w=[sum(a[k]*g[k][i] for k in range(4))%2 for i in range(8)] + H.append(tuple(w)) + R=[] + for i in range(8): + for sg in (2,-2): + v=[0]*8; v[i]=sg; R.append(tuple(v)) + for w in H: + if sum(w)==4: + idx=[i for i in range(8) if w[i]] + for sg in itertools.product((1,-1),repeat=4): + v=[0]*8 + for i,s_ in zip(idx,sg): v[i]=s_ + R.append(tuple(v)) + return R +COORD=os.environ.get('E8COORD','std') +if COORD=='ham': + ALL=[tuple(a for a in r) for r in roots_hamming()] + def ip(u,v): return sum(a*b for a,b in zip(u,v))//2 +else: + ALL=roots2() +assert len(ALL)==240 +LINES=[] +seen=set() +for r in ALL: + if r in seen: continue + neg=tuple(-a for a in r); seen.add(r); seen.add(neg) + # canonical: first nonzero coordinate positive + LINES.append(r if [a for a in r if a][0]>0 else neg) +V=len(LINES); assert V==120 +G=[[ip(LINES[a],LINES[b]) for b in range(V)] for a in range(V)] +ORTH=[[b for b in range(V) if G[a][b]==0] for a in range(V)] +NEIGH=[[b for b in range(V) if abs(G[a][b])==1] for a in range(V)] +assert all(len(o)==63 and len(n)==56 for o,n in zip(ORTH,NEIGH)) + +def rank_q(vecs): + """rank over Q of integer vectors""" + rows=[list(map(Fr,v)) for v in vecs] + r=0; n=len(rows[0]) if rows else 0 + for c in range(n): + p=None + for i in range(r,len(rows)): + if rows[i][c]!=0: p=i;break + if p is None: continue + rows[r],rows[p]=rows[p],rows[r] + for i in range(len(rows)): + if i!=r and rows[i][c]!=0: + f=rows[i][c]/rows[r][c] + rows[i]=[x-f*y for x,y in zip(rows[i],rows[r])] + r+=1 + return r + +def span_dim(idx): + return rank_q([LINES[i] for i in idx]) if idx else 0 diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/frames.py b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/frames.py new file mode 100644 index 0000000000..b28c3b2413 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/frames.py @@ -0,0 +1,45 @@ +"""Dylan Crow, with Anthropic Claude assistance; Apache-2.0. Root-spanned rational subspaces of Q^8, represented by the bitmask of E8 root lines they contain.""" +import e8lib as E +from fractions import Fraction as Fr +V=E.V +L=E.LINES +_cache={} +def _basis(idx): + rows=[] + piv=[] + for i in idx: + v=[Fr(a) for a in L[i]] + for (p,b) in zip(piv,rows): + if v[p]!=0: + f=v[p]/b[p]; v=[x-f*y for x,y in zip(v,b)] + nz=[k for k in range(8) if v[k]!=0] + if nz: + rows.append(v); piv.append(nz[0]) + return rows,piv +def _inspan(v,rows,piv): + v=[Fr(a) for a in v] + for (p,b) in zip(piv,rows): + if v[p]!=0: + f=v[p]/b[p]; v=[x-f*y for x,y in zip(v,b)] + return all(x==0 for x in v) +def closure(mask): + """mask of all root lines in the rational span of the lines in mask; returns (closed_mask, dim)""" + r=_cache.get(mask) + if r is not None: return r + idx=[i for i in range(V) if mask>>i&1] + rows,piv=_basis(idx) + cm=0 + for i in range(V): + if mask>>i&1 or _inspan(L[i],rows,piv): cm|=1<=2*V: Cl.append([fid(Fm.FULL),d,srcs]) + fr=[None]*len(frames) + for mk,i in frames.items(): fr[i]=[s for s in range(V) if mk>>s&1] + start=[fid(Fm.LINE[s]) for s in range(V)]+[fid(0)]*V+[fid(0)]*W.nh + final=[fid(Fm.FULL)]*V+[fid(Fm.HYP[t]) for t in range(V)]+[fid(Fm.FULL)]*W.nh + return dict(format='bitE8/1',coords=E.COORD,h=8,v=V,R=W.nh,lines=[list(r) for r in E.LINES], + form='/2' if E.COORD=='ham' else '/4',frames=fr,start=start,final=final, + ret=list(W.ret),scatter=scat,D=D,A=A,B=B,C=Cl) +def save(cert,path): + data=json.dumps(cert,separators=(',',':'),sort_keys=True).encode() + if path.endswith('.gz'): + with open(path,'wb') as fh: + with gzip.GzipFile(filename='',mode='wb',fileobj=fh,mtime=0) as gz: gz.write(data) + else: open(path,'wb').write(data) +if __name__=='__main__': + import ast, ham2, compile2 as C2 + Pd={ast.literal_eval(k):v for k,v in json.load(open(sys.argv[1]))} if sys.argv[1]!='-' else {} + ham2.P.clear(); ham2.P.update(Pd) + h=ham2.build(0,True); W=C2.compile2(h) + cert=build(W); save(cert,sys.argv[2]) + print('R',W.nh,'gates D/A/B/C',len(cert['D']),len(cert['A']),len(cert['B']),len(cert['C']),'frames',len(cert['frames'])) diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/ham1.py b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/ham1.py new file mode 100644 index 0000000000..8086649a5f --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/ham1.py @@ -0,0 +1,81 @@ +"""Dylan Crow, with Anthropic Claude assistance; Apache-2.0. Hand-structured bit-E8 hierarchy in Hamming coordinates (E8COORD=ham).""" +import os, sys, itertools, pickle +assert os.environ.get('E8COORD')=='ham' +import e8lib as E, frames as Fm +from collections import defaultdict +V=E.V +L=E.LINES +idx={} +for i,r in enumerate(L): idx[r]=i; idx[tuple(-a for a in r)]=i +frame_line=[idx[tuple(2 if k==i else 0 for k in range(8))] for i in range(8)] +blocks=sorted(set(tuple(k for k in range(8) if r[k]) for r in L if sum(1 for a in r if a)==4)) +assert len(blocks)==14 +def cw_lines(c): return [i for i,r in enumerate(L) if tuple(k for k in range(8) if r[k])==c] +class SH: + """hierarchy with XOR semantics""" + def __init__(self): + self.content=[1<0 else -1 + Lsym={}; Psym={} + for c in blocks: + ls=cw_lines(c) + for (i,j) in itertools.combinations(c,2): + for rho in (1,-1): + mem=[s for s in ls if rel(L[s],i,j)==rho] + assert len(mem)==4 + # split into two pairs: pair lines that agree on the remaining pair (k,l) relative sign + k,l=[q for q in c if q not in (i,j)] + a=[s for s in mem if rel(L[s],k,l)==1]; b=[s for s in mem if rel(L[s],k,l)==-1] + pa=h.sym(sorted(a)); pb=h.sym(sorted(b)) + Lsym[(c,i,j,rho)]=h.sym([pa,pb]) + Dsym={} + for c in blocks: + i,j=c[0],c[1] + Dsym[c]=h.sym([Lsym[(c,i,j,1)],Lsym[(c,i,j,-1)]]+[frame_line[q] for q in c]) + Msym={} + for c in blocks: + for (i,j) in itertools.combinations(c,2): + others=[c2 for c2 in blocks if c2!=c and i in c2 and j in c2] + assert len(others)==2 + for rho in (1,-1): + Msym[(c,i,j,rho)]=h.sym([Lsym[(others[0],i,j,rho)],Lsym[(others[1],i,j,rho)]]) + comp={c:[c2 for c2 in blocks if not set(c)&set(c2)][0] for c in blocks} + for c in blocks: + cb=comp[c] + for t in cw_lines(c): + r=L[t] + def rho(i,j): return -rel(r,i,j) + i,j,k,l=c # level-5 pair (i,j), level-6 triangle (i,j,k) + need=[Dsym[cb], Msym[(c,i,j,rho(i,j))], h.sym([Msym[(c,i,k,rho(i,k))],Msym[(c,j,k,rho(j,k))]]), + Msym[(c,i,l,rho(i,l))],Msym[(c,j,l,rho(j,l))],Msym[(c,k,l,rho(k,l))]] + need+=[s for s in cw_lines(c) if E.G[t][s]==0] + h.need[t]=set(need) + for m in range(8): + t=frame_line[m] + need=[Dsym[c] for c in blocks if m not in c]+[frame_line[q] for q in range(8) if q!=m] + h.need[t]=set(need) + # verify XOR + for t in range(V): + x=0 + for u in h.need[t]: x^=h.content[u] + assert x==Fm.HYP[t],(t,bin(x^Fm.HYP[t]).count('1')) + return h +if __name__=='__main__': + h=build() + pickle.dump(h,open('hier_ham1.pkl','wb')) + print('symbols',len(h.content)-V,'reads',sum(len(n) for n in h.need)) diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/ham2.py b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/ham2.py new file mode 100644 index 0000000000..842f76b245 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/ham2.py @@ -0,0 +1,131 @@ +"""Dylan Crow, with Anthropic Claude assistance; Apache-2.0. Hamming-coordinate bit-E8 design with pi-coset pairing (E8COORD=ham).""" +import os, sys, itertools, pickle +assert os.environ.get('E8COORD')=='ham' +import e8lib as E, frames as Fm +from ham1 import SH, blocks, cw_lines, frame_line, idx +V=E.V; L=E.LINES +def proj_dir(S,c): + """projection of line S onto C_c as a normalized tuple (sign-canonical) or None if zero""" + v=[L[S][k] if k in c else 0 for k in range(8)] + if not any(v): return None + f=[a for a in v if a][0] + return tuple(a if f>0 else -a for a in v) +FRAMEOPT=[True,0,0] +P={} +LSKEYS=set() +def par(k,n): + return P.get(k,0)%n +def build(pairing=0, fold=True): + h=SH() + comp={c:[c2 for c2 in blocks if not set(c)&set(c2)][0] for c in blocks} + # L sets: lines of block c2 with projection onto C_c (c != c2, |c&c2|=2) along b-line p + Lsets={} + for c2 in blocks: + for c in blocks: + if len(set(c)&set(c2))!=2: continue + for S in cw_lines(c2): + p=proj_dir(S,c) + Lsets.setdefault((c2,p),set()).add(S) + Lsets={k:sorted(v) for k,v in Lsets.items()} + for k,v in Lsets.items(): assert len(v)==4,(k,v) + Lsym={} + for (c2,p),mem in Lsets.items(): + # split into two pairs by the relative sign on the other two coordinates of c2 + oth=[q for q in c2 if p[q]==0] + sp=par(('ls',c2,p),3); LSKEYS.add(('ls',c2,p)) + if sp==0: + a=[s for s in mem if L[s][oth[0]]*L[s][oth[1]]>0]; b=[s for s in mem if L[s][oth[0]]*L[s][oth[1]]<0] + else: + q0=[q for q in c2 if p[q]!=0][0] + a=[s for s in mem if L[s][q0]*L[s][oth[sp-1]]>0]; b=[s for s in mem if L[s][q0]*L[s][oth[sp-1]]<0] + Lsym[(c2,p)]=h.sym([h.sym(sorted(a)),h.sym(sorted(b))]) + Msym={} + for c in blocks: + for (c2,p),s in Lsets.items(): + pass + for (c2,p) in Lsets: + # p is a b-line of the block c for which p's support pair lies: find blocks c containing supp(p) other than c2 + supp=tuple(q for q in range(8) if p[q]) + for c in blocks: + if c!=c2 and set(supp)<=set(c): + Msym.setdefault((c,p),[]).append(Lsym[(c2,p)]) + for k in list(Msym): + assert len(Msym[k])==2 + Msym[k]=h.sym(sorted(Msym[k])) + Dsym={}; Bcw={} + for c in blocks: + ls=cw_lines(c) + # E(D4(c)) = all 8 codeword lines of c + 4 frame lines + p=None + for (c2,pp),s in Lsym.items(): + pass + # use two complementary L-like halves: split by relative sign on (c0,c1) + i,j=c[0],c[1] + A=[s for s in ls if L[s][i]*L[s][j]>0]; B=[s for s in ls if L[s][i]*L[s][j]<0] + Bcw[c]=h.sym([h.sym(sorted(A[:2])+sorted(A[2:])), h.sym(sorted(B)) ]) + Dsym[c]=h.sym([Bcw[c]]+[frame_line[q] for q in c]) + def bdir(u,w): + """the two b-line directions in the plane span(L[u],L[w]) (vectors a+-b normalized)""" + out=[] + for sg in (1,-1): + v=tuple(x+sg*y for x,y in zip(L[u],L[w])) + f=[a for a in v if a][0] + v=tuple(a//2 if f>0 else -a//2 for a in v) + out.append(v) + return out + for c in blocks: + cb=comp[c] + ls=cw_lines(c) + # pi-cosets: 4 mutually orthogonal lines + cos=[] + rem=set(ls) + while rem: + t=min(rem); Q=[t]+[s for s in rem if s!=t and E.G[t][s]==0] + assert len(Q)==4 and all(E.G[a][b]==0 for a in Q for b in Q if a!=b) + cos.append(Q); rem-=set(Q) + for Q in cos: + pr_=(pairing+par(('pair',c,min(Q)),3))%3 + pairs=[(Q[0],Q[1+pr_]),tuple(q for q in Q[1:] if q!=Q[1+pr_])] + partner={} + for x,y in pairs: partner[x]=y; partner[y]=x + for t in Q: + d=partner[t]; a,b=[q for q in Q if q not in (t,d)] + p5,p6=sorted(bdir(a,b)) + if par(('l5',min(t,d)),2): p5,p6=p6,p5 + M=lambda p: Msym[(c,p)] + need=[Dsym[cb], M(p5), h.sym([M(p6),a,b])] + q1,q2=sorted(bdir(a,d)); r1,r2=sorted(bdir(b,d)) + fo=par(('fold',t),2) if fold else 2 + if fo==0: + need+=[h.sym([M(q1),M(q2),d]), h.sym([M(r1),M(r2)])] + elif fo==1: + need+=[h.sym([M(q1),M(q2)]), h.sym([M(r1),M(r2),d])] + else: + need+=[h.sym([M(q1),M(q2)]), h.sym([M(r1),M(r2)]), d] + h.need[t]=set(need) + for m in range(8): + t=frame_line[m] + if not FRAMEOPT[0]: + h.need[t]=set([Dsym[c] for c in blocks if m not in c]+[frame_line[q] for q in range(8) if q!=m]); continue + avoid=[c for c in blocks if m not in c] + c0=avoid[(FRAMEOPT[1]+par(('fc0',m),7))%len(avoid)] + ns=[q for q in range(8) if q!=m and q not in c0] + n=ns[(FRAMEOPT[2]+par(('fn',m),3))%len(ns)] + A6=[q for q in range(8) if q not in (m,n)] + in6=[c for c in avoid if set(c)<=set(A6) and c!=c0]; assert len(in6)==2 + top=[c for c in avoid if n in c]; assert len(top)==4 + # pair top blocks so each pair spans a 6-dim coordinate space (always true) + need=[Dsym[c0], h.sym([Bcw[in6[0]],Bcw[in6[1]]]+[frame_line[q] for q in A6 if q not in c0]), + h.sym([Bcw[top[0]],Bcw[top[1]],frame_line[n]]), h.sym([Bcw[top[2]],Bcw[top[3]]])] + h.need[t]=set(need) + for t in range(V): + x=0 + for u in h.need[t]: x^=h.content[u] + assert x==Fm.HYP[t],(t,bin(x^Fm.HYP[t]).count('1')) + return h +if __name__=='__main__': + pr=int(sys.argv[1]) if len(sys.argv)>1 else 0 + fold=(sys.argv[2]!='nofold') if len(sys.argv)>2 else True + h=build(pr,fold) + pickle.dump(h,open('hier_ham2_%d_%s.pkl'%(pr,fold),'wb')) + print('symbols',len(h.content)-V,'reads',sum(len(n) for n in h.need)) diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/params-r865.json b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/params-r865.json new file mode 100644 index 0000000000..110b4d94d8 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/params-r865.json @@ -0,0 +1,2082 @@ +[ +[ +"('fc0', 0)", +3 +], +[ +"('fc0', 1)", +3 +], +[ +"('fc0', 2)", +0 +], +[ +"('fc0', 3)", +0 +], +[ +"('fc0', 4)", +3 +], +[ +"('fc0', 5)", +0 +], +[ +"('fc0', 6)", +2 +], +[ +"('fc0', 7)", +0 +], +[ +"('fn', 0)", +1 +], +[ +"('fn', 1)", +1 +], +[ +"('fn', 2)", +0 +], +[ +"('fn', 3)", +0 +], +[ +"('fn', 4)", +0 +], +[ +"('fn', 5)", +0 +], +[ +"('fn', 6)", +0 +], +[ +"('fn', 7)", +2 +], +[ +"('fold', 10)", +1 +], +[ +"('fold', 100)", +1 +], +[ +"('fold', 101)", +0 +], +[ +"('fold', 102)", +1 +], +[ +"('fold', 103)", +0 +], +[ +"('fold', 104)", +1 +], +[ +"('fold', 105)", +0 +], +[ +"('fold', 106)", +1 +], +[ +"('fold', 107)", +0 +], +[ +"('fold', 108)", +1 +], +[ +"('fold', 109)", +0 +], +[ +"('fold', 11)", +1 +], +[ +"('fold', 110)", +1 +], +[ +"('fold', 111)", +0 +], +[ +"('fold', 112)", +1 +], +[ +"('fold', 113)", +1 +], +[ +"('fold', 114)", +0 +], +[ +"('fold', 115)", +0 +], +[ +"('fold', 116)", +0 +], +[ +"('fold', 117)", +0 +], +[ +"('fold', 118)", +1 +], +[ +"('fold', 119)", +1 +], +[ +"('fold', 12)", +1 +], +[ +"('fold', 13)", +1 +], +[ +"('fold', 14)", +0 +], +[ +"('fold', 15)", +0 +], +[ +"('fold', 16)", +0 +], +[ +"('fold', 17)", +1 +], +[ +"('fold', 18)", +0 +], +[ +"('fold', 19)", +1 +], +[ +"('fold', 20)", +0 +], +[ +"('fold', 21)", +1 +], +[ +"('fold', 22)", +0 +], +[ +"('fold', 23)", +1 +], +[ +"('fold', 24)", +0 +], +[ +"('fold', 25)", +1 +], +[ +"('fold', 26)", +0 +], +[ +"('fold', 27)", +1 +], +[ +"('fold', 28)", +0 +], +[ +"('fold', 29)", +1 +], +[ +"('fold', 30)", +0 +], +[ +"('fold', 31)", +1 +], +[ +"('fold', 32)", +1 +], +[ +"('fold', 33)", +1 +], +[ +"('fold', 34)", +0 +], +[ +"('fold', 35)", +0 +], +[ +"('fold', 36)", +0 +], +[ +"('fold', 37)", +0 +], +[ +"('fold', 38)", +1 +], +[ +"('fold', 39)", +1 +], +[ +"('fold', 40)", +0 +], +[ +"('fold', 41)", +0 +], +[ +"('fold', 42)", +1 +], +[ +"('fold', 43)", +1 +], +[ +"('fold', 44)", +1 +], +[ +"('fold', 45)", +1 +], +[ +"('fold', 46)", +0 +], +[ +"('fold', 47)", +0 +], +[ +"('fold', 48)", +0 +], +[ +"('fold', 49)", +1 +], +[ +"('fold', 50)", +0 +], +[ +"('fold', 51)", +1 +], +[ +"('fold', 52)", +0 +], +[ +"('fold', 53)", +1 +], +[ +"('fold', 54)", +0 +], +[ +"('fold', 55)", +1 +], +[ +"('fold', 56)", +0 +], +[ +"('fold', 57)", +0 +], +[ +"('fold', 58)", +1 +], +[ +"('fold', 59)", +1 +], +[ +"('fold', 60)", +1 +], +[ +"('fold', 61)", +1 +], +[ +"('fold', 62)", +0 +], +[ +"('fold', 63)", +0 +], +[ +"('fold', 64)", +0 +], +[ +"('fold', 65)", +0 +], +[ +"('fold', 66)", +1 +], +[ +"('fold', 67)", +1 +], +[ +"('fold', 68)", +1 +], +[ +"('fold', 69)", +1 +], +[ +"('fold', 70)", +0 +], +[ +"('fold', 71)", +0 +], +[ +"('fold', 72)", +0 +], +[ +"('fold', 73)", +1 +], +[ +"('fold', 74)", +0 +], +[ +"('fold', 75)", +1 +], +[ +"('fold', 76)", +0 +], +[ +"('fold', 77)", +1 +], +[ +"('fold', 78)", +0 +], +[ +"('fold', 79)", +1 +], +[ +"('fold', 8)", +0 +], +[ +"('fold', 80)", +1 +], +[ +"('fold', 81)", +0 +], +[ +"('fold', 82)", +1 +], +[ +"('fold', 83)", +0 +], +[ +"('fold', 84)", +1 +], +[ +"('fold', 85)", +0 +], +[ +"('fold', 86)", +1 +], +[ +"('fold', 87)", +0 +], +[ +"('fold', 88)", +1 +], +[ +"('fold', 89)", +0 +], +[ +"('fold', 9)", +0 +], +[ +"('fold', 90)", +1 +], +[ +"('fold', 91)", +0 +], +[ +"('fold', 92)", +1 +], +[ +"('fold', 93)", +0 +], +[ +"('fold', 94)", +1 +], +[ +"('fold', 95)", +0 +], +[ +"('fold', 96)", +1 +], +[ +"('fold', 97)", +0 +], +[ +"('fold', 98)", +1 +], +[ +"('fold', 99)", +0 +], +[ +"('l5', 10)", +0 +], +[ +"('l5', 100)", +0 +], +[ +"('l5', 101)", +0 +], +[ +"('l5', 102)", +1 +], +[ +"('l5', 103)", +0 +], +[ +"('l5', 104)", +0 +], +[ +"('l5', 105)", +0 +], +[ +"('l5', 106)", +1 +], +[ +"('l5', 107)", +0 +], +[ +"('l5', 108)", +0 +], +[ +"('l5', 109)", +0 +], +[ +"('l5', 11)", +1 +], +[ +"('l5', 110)", +0 +], +[ +"('l5', 111)", +1 +], +[ +"('l5', 112)", +0 +], +[ +"('l5', 113)", +0 +], +[ +"('l5', 114)", +1 +], +[ +"('l5', 115)", +0 +], +[ +"('l5', 116)", +0 +], +[ +"('l5', 117)", +0 +], +[ +"('l5', 118)", +1 +], +[ +"('l5', 119)", +1 +], +[ +"('l5', 12)", +0 +], +[ +"('l5', 13)", +0 +], +[ +"('l5', 14)", +0 +], +[ +"('l5', 15)", +0 +], +[ +"('l5', 16)", +0 +], +[ +"('l5', 17)", +0 +], +[ +"('l5', 18)", +0 +], +[ +"('l5', 19)", +0 +], +[ +"('l5', 20)", +0 +], +[ +"('l5', 21)", +0 +], +[ +"('l5', 22)", +1 +], +[ +"('l5', 23)", +1 +], +[ +"('l5', 24)", +0 +], +[ +"('l5', 25)", +0 +], +[ +"('l5', 26)", +1 +], +[ +"('l5', 27)", +0 +], +[ +"('l5', 28)", +0 +], +[ +"('l5', 29)", +0 +], +[ +"('l5', 30)", +0 +], +[ +"('l5', 31)", +0 +], +[ +"('l5', 32)", +0 +], +[ +"('l5', 33)", +0 +], +[ +"('l5', 34)", +0 +], +[ +"('l5', 35)", +0 +], +[ +"('l5', 36)", +0 +], +[ +"('l5', 37)", +0 +], +[ +"('l5', 38)", +0 +], +[ +"('l5', 39)", +0 +], +[ +"('l5', 40)", +0 +], +[ +"('l5', 41)", +0 +], +[ +"('l5', 42)", +1 +], +[ +"('l5', 43)", +0 +], +[ +"('l5', 44)", +0 +], +[ +"('l5', 45)", +0 +], +[ +"('l5', 46)", +1 +], +[ +"('l5', 47)", +0 +], +[ +"('l5', 48)", +0 +], +[ +"('l5', 49)", +0 +], +[ +"('l5', 50)", +1 +], +[ +"('l5', 51)", +1 +], +[ +"('l5', 52)", +0 +], +[ +"('l5', 53)", +0 +], +[ +"('l5', 54)", +1 +], +[ +"('l5', 55)", +1 +], +[ +"('l5', 56)", +0 +], +[ +"('l5', 57)", +0 +], +[ +"('l5', 58)", +1 +], +[ +"('l5', 59)", +0 +], +[ +"('l5', 60)", +0 +], +[ +"('l5', 61)", +0 +], +[ +"('l5', 62)", +0 +], +[ +"('l5', 63)", +0 +], +[ +"('l5', 64)", +0 +], +[ +"('l5', 65)", +0 +], +[ +"('l5', 66)", +1 +], +[ +"('l5', 67)", +0 +], +[ +"('l5', 68)", +0 +], +[ +"('l5', 69)", +0 +], +[ +"('l5', 70)", +0 +], +[ +"('l5', 71)", +0 +], +[ +"('l5', 72)", +0 +], +[ +"('l5', 73)", +0 +], +[ +"('l5', 74)", +1 +], +[ +"('l5', 75)", +1 +], +[ +"('l5', 76)", +0 +], +[ +"('l5', 77)", +0 +], +[ +"('l5', 78)", +0 +], +[ +"('l5', 79)", +0 +], +[ +"('l5', 8)", +0 +], +[ +"('l5', 80)", +0 +], +[ +"('l5', 81)", +0 +], +[ +"('l5', 82)", +0 +], +[ +"('l5', 83)", +1 +], +[ +"('l5', 84)", +0 +], +[ +"('l5', 85)", +0 +], +[ +"('l5', 86)", +0 +], +[ +"('l5', 87)", +1 +], +[ +"('l5', 88)", +0 +], +[ +"('l5', 89)", +0 +], +[ +"('l5', 9)", +0 +], +[ +"('l5', 90)", +0 +], +[ +"('l5', 91)", +1 +], +[ +"('l5', 92)", +0 +], +[ +"('l5', 93)", +0 +], +[ +"('l5', 94)", +1 +], +[ +"('l5', 95)", +0 +], +[ +"('l5', 96)", +0 +], +[ +"('l5', 97)", +0 +], +[ +"('l5', 98)", +0 +], +[ +"('l5', 99)", +0 +], +[ +"('ls', (0, 1, 2, 3), (0, 0, 1, -1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (0, 0, 1, 1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (0, 1, -1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (0, 1, 0, -1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (0, 1, 0, 1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (0, 1, 1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (1, -1, 0, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (1, 0, -1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (1, 0, 0, -1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (1, 0, 0, 1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (1, 0, 1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 2, 3), (1, 1, 0, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (0, 0, 0, 0, 1, -1, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (0, 0, 0, 0, 1, 1, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (0, 1, 0, 0, -1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (0, 1, 0, 0, 0, -1, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (0, 1, 0, 0, 0, 1, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (0, 1, 0, 0, 1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (1, -1, 0, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (1, 0, 0, 0, -1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (1, 0, 0, 0, 0, -1, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (1, 0, 0, 0, 0, 1, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (1, 0, 0, 0, 1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 4, 5), (1, 1, 0, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 6, 7), (0, 0, 0, 0, 0, 0, 1, -1))", +0 +], +[ +"('ls', (0, 1, 6, 7), (0, 0, 0, 0, 0, 0, 1, 1))", +0 +], +[ +"('ls', (0, 1, 6, 7), (0, 1, 0, 0, 0, 0, -1, 0))", +0 +], +[ +"('ls', (0, 1, 6, 7), (0, 1, 0, 0, 0, 0, 0, -1))", +0 +], +[ +"('ls', (0, 1, 6, 7), (0, 1, 0, 0, 0, 0, 0, 1))", +0 +], +[ +"('ls', (0, 1, 6, 7), (0, 1, 0, 0, 0, 0, 1, 0))", +0 +], +[ +"('ls', (0, 1, 6, 7), (1, -1, 0, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 1, 6, 7), (1, 0, 0, 0, 0, 0, -1, 0))", +0 +], +[ +"('ls', (0, 1, 6, 7), (1, 0, 0, 0, 0, 0, 0, -1))", +0 +], +[ +"('ls', (0, 1, 6, 7), (1, 0, 0, 0, 0, 0, 0, 1))", +0 +], +[ +"('ls', (0, 1, 6, 7), (1, 0, 0, 0, 0, 0, 1, 0))", +0 +], +[ +"('ls', (0, 1, 6, 7), (1, 1, 0, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (0, 0, 0, 0, 1, 0, -1, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (0, 0, 0, 0, 1, 0, 1, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (0, 0, 1, 0, -1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (0, 0, 1, 0, 0, 0, -1, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (0, 0, 1, 0, 0, 0, 1, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (0, 0, 1, 0, 1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (1, 0, -1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (1, 0, 0, 0, -1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (1, 0, 0, 0, 0, 0, -1, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (1, 0, 0, 0, 0, 0, 1, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (1, 0, 0, 0, 1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 2, 4, 6), (1, 0, 1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 2, 5, 7), (0, 0, 0, 0, 0, 1, 0, -1))", +0 +], +[ +"('ls', (0, 2, 5, 7), (0, 0, 0, 0, 0, 1, 0, 1))", +0 +], +[ +"('ls', (0, 2, 5, 7), (0, 0, 1, 0, 0, -1, 0, 0))", +0 +], +[ +"('ls', (0, 2, 5, 7), (0, 0, 1, 0, 0, 0, 0, -1))", +0 +], +[ +"('ls', (0, 2, 5, 7), (0, 0, 1, 0, 0, 0, 0, 1))", +0 +], +[ +"('ls', (0, 2, 5, 7), (0, 0, 1, 0, 0, 1, 0, 0))", +0 +], +[ +"('ls', (0, 2, 5, 7), (1, 0, -1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 2, 5, 7), (1, 0, 0, 0, 0, -1, 0, 0))", +0 +], +[ +"('ls', (0, 2, 5, 7), (1, 0, 0, 0, 0, 0, 0, -1))", +0 +], +[ +"('ls', (0, 2, 5, 7), (1, 0, 0, 0, 0, 0, 0, 1))", +0 +], +[ +"('ls', (0, 2, 5, 7), (1, 0, 0, 0, 0, 1, 0, 0))", +0 +], +[ +"('ls', (0, 2, 5, 7), (1, 0, 1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 3, 4, 7), (0, 0, 0, 0, 1, 0, 0, -1))", +0 +], +[ +"('ls', (0, 3, 4, 7), (0, 0, 0, 0, 1, 0, 0, 1))", +0 +], +[ +"('ls', (0, 3, 4, 7), (0, 0, 0, 1, -1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 3, 4, 7), (0, 0, 0, 1, 0, 0, 0, -1))", +0 +], +[ +"('ls', (0, 3, 4, 7), (0, 0, 0, 1, 0, 0, 0, 1))", +0 +], +[ +"('ls', (0, 3, 4, 7), (0, 0, 0, 1, 1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 3, 4, 7), (1, 0, 0, -1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 3, 4, 7), (1, 0, 0, 0, -1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 3, 4, 7), (1, 0, 0, 0, 0, 0, 0, -1))", +0 +], +[ +"('ls', (0, 3, 4, 7), (1, 0, 0, 0, 0, 0, 0, 1))", +0 +], +[ +"('ls', (0, 3, 4, 7), (1, 0, 0, 0, 1, 0, 0, 0))", +0 +], +[ +"('ls', (0, 3, 4, 7), (1, 0, 0, 1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (0, 0, 0, 0, 0, 1, -1, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (0, 0, 0, 0, 0, 1, 1, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (0, 0, 0, 1, 0, -1, 0, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (0, 0, 0, 1, 0, 0, -1, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (0, 0, 0, 1, 0, 0, 1, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (0, 0, 0, 1, 0, 1, 0, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (1, 0, 0, -1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (1, 0, 0, 0, 0, -1, 0, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (1, 0, 0, 0, 0, 0, -1, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (1, 0, 0, 0, 0, 0, 1, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (1, 0, 0, 0, 0, 1, 0, 0))", +0 +], +[ +"('ls', (0, 3, 5, 6), (1, 0, 0, 1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 0, 0, 0, 1, 0, 0, -1))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 0, 0, 0, 1, 0, 0, 1))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 0, 1, 0, -1, 0, 0, 0))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 0, 1, 0, 0, 0, 0, -1))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 0, 1, 0, 0, 0, 0, 1))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 0, 1, 0, 1, 0, 0, 0))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 1, -1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 1, 0, 0, -1, 0, 0, 0))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 1, 0, 0, 0, 0, 0, -1))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 1, 0, 0, 0, 0, 0, 1))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 1, 0, 0, 1, 0, 0, 0))", +0 +], +[ +"('ls', (1, 2, 4, 7), (0, 1, 1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 0, 0, 0, 0, 1, -1, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 0, 0, 0, 0, 1, 1, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 0, 1, 0, 0, -1, 0, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 0, 1, 0, 0, 0, -1, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 0, 1, 0, 0, 0, 1, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 0, 1, 0, 0, 1, 0, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 1, -1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 1, 0, 0, 0, -1, 0, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 1, 0, 0, 0, 0, -1, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 1, 0, 0, 0, 0, 1, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 1, 0, 0, 0, 1, 0, 0))", +0 +], +[ +"('ls', (1, 2, 5, 6), (0, 1, 1, 0, 0, 0, 0, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 0, 0, 0, 1, 0, -1, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 0, 0, 0, 1, 0, 1, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 0, 0, 1, -1, 0, 0, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 0, 0, 1, 0, 0, -1, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 0, 0, 1, 0, 0, 1, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 0, 0, 1, 1, 0, 0, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 1, 0, -1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 1, 0, 0, -1, 0, 0, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 1, 0, 0, 0, 0, -1, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 1, 0, 0, 0, 0, 1, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 1, 0, 0, 1, 0, 0, 0))", +0 +], +[ +"('ls', (1, 3, 4, 6), (0, 1, 0, 1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 0, 0, 0, 0, 1, 0, -1))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 0, 0, 0, 0, 1, 0, 1))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 0, 0, 1, 0, -1, 0, 0))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 0, 0, 1, 0, 0, 0, -1))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 0, 0, 1, 0, 0, 0, 1))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 0, 0, 1, 0, 1, 0, 0))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 1, 0, -1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 1, 0, 0, 0, -1, 0, 0))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 1, 0, 0, 0, 0, 0, -1))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 1, 0, 0, 0, 0, 0, 1))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 1, 0, 0, 0, 1, 0, 0))", +0 +], +[ +"('ls', (1, 3, 5, 7), (0, 1, 0, 1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 0, 0, 1, -1, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 0, 0, 1, 1, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 0, 1, -1, 0, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 0, 1, 0, -1, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 0, 1, 0, 1, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 0, 1, 1, 0, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 1, -1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 1, 0, -1, 0, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 1, 0, 0, -1, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 1, 0, 0, 1, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 1, 0, 1, 0, 0, 0))", +0 +], +[ +"('ls', (2, 3, 4, 5), (0, 0, 1, 1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 0, 0, 0, 0, 1, -1))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 0, 0, 0, 0, 1, 1))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 0, 1, 0, 0, -1, 0))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 0, 1, 0, 0, 0, -1))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 0, 1, 0, 0, 0, 1))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 0, 1, 0, 0, 1, 0))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 1, -1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 1, 0, 0, 0, -1, 0))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 1, 0, 0, 0, 0, -1))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 1, 0, 0, 0, 0, 1))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 1, 0, 0, 0, 1, 0))", +0 +], +[ +"('ls', (2, 3, 6, 7), (0, 0, 1, 1, 0, 0, 0, 0))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 0, 1, -1))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 0, 1, 1))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 1, -1, 0))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 1, 0, -1))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 1, 0, 1))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 1, 1, 0))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, -1, 0, 0))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, 0, -1, 0))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, 0, 0, -1))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, 0, 0, 1))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, 0, 1, 0))", +0 +], +[ +"('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, 1, 0, 0))", +0 +], +[ +"('pair', (0, 1, 2, 3), 64)", +0 +], +[ +"('pair', (0, 1, 2, 3), 65)", +0 +], +[ +"('pair', (0, 1, 2, 3), 66)", +0 +], +[ +"('pair', (0, 1, 2, 3), 67)", +1 +], +[ +"('pair', (0, 1, 2, 3), 68)", +0 +], +[ +"('pair', (0, 1, 2, 3), 69)", +0 +], +[ +"('pair', (0, 1, 2, 3), 70)", +2 +], +[ +"('pair', (0, 1, 2, 3), 71)", +1 +], +[ +"('pair', (0, 1, 4, 5), 32)", +0 +], +[ +"('pair', (0, 1, 4, 5), 33)", +0 +], +[ +"('pair', (0, 1, 4, 5), 34)", +1 +], +[ +"('pair', (0, 1, 4, 5), 35)", +1 +], +[ +"('pair', (0, 1, 4, 5), 36)", +1 +], +[ +"('pair', (0, 1, 4, 5), 37)", +1 +], +[ +"('pair', (0, 1, 4, 5), 38)", +1 +], +[ +"('pair', (0, 1, 4, 5), 39)", +1 +], +[ +"('pair', (0, 1, 6, 7), 24)", +0 +], +[ +"('pair', (0, 1, 6, 7), 25)", +0 +], +[ +"('pair', (0, 1, 6, 7), 26)", +2 +], +[ +"('pair', (0, 1, 6, 7), 27)", +0 +], +[ +"('pair', (0, 1, 6, 7), 28)", +2 +], +[ +"('pair', (0, 1, 6, 7), 29)", +2 +], +[ +"('pair', (0, 1, 6, 7), 30)", +2 +], +[ +"('pair', (0, 1, 6, 7), 31)", +2 +], +[ +"('pair', (0, 2, 4, 6), 16)", +0 +], +[ +"('pair', (0, 2, 4, 6), 17)", +0 +], +[ +"('pair', (0, 2, 4, 6), 18)", +2 +], +[ +"('pair', (0, 2, 4, 6), 19)", +0 +], +[ +"('pair', (0, 2, 4, 6), 20)", +2 +], +[ +"('pair', (0, 2, 4, 6), 21)", +0 +], +[ +"('pair', (0, 2, 4, 6), 22)", +0 +], +[ +"('pair', (0, 2, 4, 6), 23)", +1 +], +[ +"('pair', (0, 2, 5, 7), 40)", +0 +], +[ +"('pair', (0, 2, 5, 7), 41)", +0 +], +[ +"('pair', (0, 2, 5, 7), 42)", +0 +], +[ +"('pair', (0, 2, 5, 7), 43)", +2 +], +[ +"('pair', (0, 2, 5, 7), 44)", +1 +], +[ +"('pair', (0, 2, 5, 7), 45)", +1 +], +[ +"('pair', (0, 2, 5, 7), 46)", +0 +], +[ +"('pair', (0, 2, 5, 7), 47)", +2 +], +[ +"('pair', (0, 3, 4, 7), 72)", +0 +], +[ +"('pair', (0, 3, 4, 7), 73)", +0 +], +[ +"('pair', (0, 3, 4, 7), 74)", +0 +], +[ +"('pair', (0, 3, 4, 7), 75)", +0 +], +[ +"('pair', (0, 3, 4, 7), 76)", +0 +], +[ +"('pair', (0, 3, 4, 7), 77)", +2 +], +[ +"('pair', (0, 3, 4, 7), 78)", +1 +], +[ +"('pair', (0, 3, 4, 7), 79)", +2 +], +[ +"('pair', (0, 3, 5, 6), 112)", +0 +], +[ +"('pair', (0, 3, 5, 6), 113)", +0 +], +[ +"('pair', (0, 3, 5, 6), 114)", +2 +], +[ +"('pair', (0, 3, 5, 6), 115)", +0 +], +[ +"('pair', (0, 3, 5, 6), 116)", +0 +], +[ +"('pair', (0, 3, 5, 6), 117)", +1 +], +[ +"('pair', (0, 3, 5, 6), 118)", +0 +], +[ +"('pair', (0, 3, 5, 6), 119)", +2 +], +[ +"('pair', (1, 2, 4, 7), 10)", +2 +], +[ +"('pair', (1, 2, 4, 7), 11)", +0 +], +[ +"('pair', (1, 2, 4, 7), 12)", +2 +], +[ +"('pair', (1, 2, 4, 7), 13)", +0 +], +[ +"('pair', (1, 2, 4, 7), 14)", +1 +], +[ +"('pair', (1, 2, 4, 7), 15)", +1 +], +[ +"('pair', (1, 2, 4, 7), 8)", +0 +], +[ +"('pair', (1, 2, 4, 7), 9)", +0 +], +[ +"('pair', (1, 2, 5, 6), 48)", +0 +], +[ +"('pair', (1, 2, 5, 6), 49)", +0 +], +[ +"('pair', (1, 2, 5, 6), 50)", +2 +], +[ +"('pair', (1, 2, 5, 6), 51)", +1 +], +[ +"('pair', (1, 2, 5, 6), 52)", +2 +], +[ +"('pair', (1, 2, 5, 6), 53)", +0 +], +[ +"('pair', (1, 2, 5, 6), 54)", +1 +], +[ +"('pair', (1, 2, 5, 6), 55)", +2 +], +[ +"('pair', (1, 3, 4, 6), 80)", +0 +], +[ +"('pair', (1, 3, 4, 6), 81)", +0 +], +[ +"('pair', (1, 3, 4, 6), 82)", +1 +], +[ +"('pair', (1, 3, 4, 6), 83)", +2 +], +[ +"('pair', (1, 3, 4, 6), 84)", +1 +], +[ +"('pair', (1, 3, 4, 6), 85)", +1 +], +[ +"('pair', (1, 3, 4, 6), 86)", +1 +], +[ +"('pair', (1, 3, 4, 6), 87)", +2 +], +[ +"('pair', (1, 3, 5, 7), 104)", +0 +], +[ +"('pair', (1, 3, 5, 7), 105)", +0 +], +[ +"('pair', (1, 3, 5, 7), 106)", +0 +], +[ +"('pair', (1, 3, 5, 7), 107)", +2 +], +[ +"('pair', (1, 3, 5, 7), 108)", +2 +], +[ +"('pair', (1, 3, 5, 7), 109)", +1 +], +[ +"('pair', (1, 3, 5, 7), 110)", +2 +], +[ +"('pair', (1, 3, 5, 7), 111)", +1 +], +[ +"('pair', (2, 3, 4, 5), 100)", +0 +], +[ +"('pair', (2, 3, 4, 5), 101)", +2 +], +[ +"('pair', (2, 3, 4, 5), 102)", +1 +], +[ +"('pair', (2, 3, 4, 5), 103)", +2 +], +[ +"('pair', (2, 3, 4, 5), 96)", +0 +], +[ +"('pair', (2, 3, 4, 5), 97)", +0 +], +[ +"('pair', (2, 3, 4, 5), 98)", +2 +], +[ +"('pair', (2, 3, 4, 5), 99)", +1 +], +[ +"('pair', (2, 3, 6, 7), 88)", +0 +], +[ +"('pair', (2, 3, 6, 7), 89)", +0 +], +[ +"('pair', (2, 3, 6, 7), 90)", +0 +], +[ +"('pair', (2, 3, 6, 7), 91)", +0 +], +[ +"('pair', (2, 3, 6, 7), 92)", +1 +], +[ +"('pair', (2, 3, 6, 7), 93)", +2 +], +[ +"('pair', (2, 3, 6, 7), 94)", +0 +], +[ +"('pair', (2, 3, 6, 7), 95)", +1 +], +[ +"('pair', (4, 5, 6, 7), 56)", +0 +], +[ +"('pair', (4, 5, 6, 7), 57)", +0 +], +[ +"('pair', (4, 5, 6, 7), 58)", +0 +], +[ +"('pair', (4, 5, 6, 7), 59)", +2 +], +[ +"('pair', (4, 5, 6, 7), 60)", +0 +], +[ +"('pair', (4, 5, 6, 7), 61)", +1 +], +[ +"('pair', (4, 5, 6, 7), 62)", +0 +], +[ +"('pair', (4, 5, 6, 7), 63)", +0 +] +] \ No newline at end of file diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/price.py b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/price.py new file mode 100644 index 0000000000..9014d97d51 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/bit/producer/price.py @@ -0,0 +1,23 @@ +# Dylan Crow, with Anthropic Claude assistance; Apache-2.0. +import math +from collections import Counter +def price(steps, R, v=120, h=8, L=72, ncent=9, exact=True): + """steps: Counter of step ranks over x, y, helpers for ONE invocation (centres added here). + Five-stage: H5 = 5*(steps + centres) + 2v*(2h-2,h-1,2h+2,4); W = 4v+R; m=5h.""" + m=5*h + H=Counter() + for r,n in steps.items(): H[r]+=5*n + H[h]+=5*ncent # centres at full frame (rank = frame dim = h) + for r in (2*h-2,h-1,2*h+2,4): H[r]+=2*v + W=4*v+R + mass=sum(r*n for r,n in H.items()) + g=lambda r:r*math.log(m/r) + D=sum(n*g(r) for r,n in H.items()) + s1=(W*m-mass)/D + if not exact: return s1,W*m-mass,D + lo,hi=0.0,0.01 + for _ in range(80): + s=(lo+hi)/2 + if sum(n*(r/m)**(1-s) for r,n in H.items())>W: hi=s + else: lo=s + return lo,W*m-mass,D diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/controls.py b/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/controls.py new file mode 100644 index 0000000000..ceb15852b7 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/controls.py @@ -0,0 +1,71 @@ +"""Negative controls for the elimination reuse: every mutant of the final word must be rejected by PR #370's +independent all-column checker (code/bit/independent/checkword.py, run unchanged in a subprocess, as PR #370's +mutate.py does). The mutated gates are the inserted elimination gates listed in the reuse ledger written by regen.py. +usage: controls.py WORD.json.gz LEDGER.json PRICING_DIR +Prepared by eumemic with Anthropic Claude assistance; Apache-2.0.""" +import copy +import gzip +import json +import os +import subprocess +import sys +import tempfile + +HERE = os.path.dirname(os.path.abspath(__file__)) +CHECK = os.path.join(HERE, "..", "bit", "independent", "checkword.py") +word, ledger, pricing = sys.argv[1:4] +w = json.load(gzip.open(word, "rt")) +led = json.load(open(ledger)) +v = w["v"] +elim = [(ph, i) for ph, i, kind in led["eliminations"] if kind == "helper"] +undo = [(ph, i) for ph, i, kind in led["eliminations"] if kind == "total"] +assert len(elim) == led["helpers"] and len(undo) == led["totals"] +for ph, i in elim + undo: # each ledger entry is an elimination into a helper slot + assert w[ph][i][1] >= 2 * v and w[ph][i][2] +lines = [frozenset(f) for f in w["frames"]] # frames are closed: frame a lies inside frame b iff lines[a] <= lines[b] + + +def prev_frame(c, ph, i, r): + """frame id of register r just before gate (ph, i) (its last earlier gate in D, A, ... or its start frame)""" + f = c["start"][r] + for p in ("D", "A", "B", "C"): + for k, g in enumerate(c[p]): + if (p, k) == (ph, i): + return f + if r == g[1] or r in g[2]: + f = g[0] + raise AssertionError("gate not found") + + +muts = [] +c = copy.deepcopy(w); ph, i = elim[0]; del c[ph][i] +muts.append(("omit the first helper elimination gate (the reused slot keeps a leftover x-content)", c)) +c = copy.deepcopy(w); ph, i = next((p, k) for p, k in elim if len(w[p][k][2]) >= 2); c[ph][i][2].pop() +muts.append(("omit one eliminator of a helper elimination with two or more eliminators", c)) +c = copy.deepcopy(w); ph, i = undo[0]; c[ph][i][2].pop() +muts.append(("omit one x-line read of a retained-total undo gate", c)) +c = copy.deepcopy(w) +for ph, i in elim: + f, d, srcs = c[ph][i] + low = prev_frame(c, ph, i, d) + if lines[low] < lines[f] and any(not lines[prev_frame(c, ph, i, s)] <= lines[low] for s in srcs): + c[ph][i][0] = low + break +else: + raise AssertionError("no elimination gate above its slot's own frame") +muts.append(("an elimination gate lowered to the reused slot's own frame (below an eliminator's frame)", c)) +c = copy.deepcopy(w) +for ph, i in sorted(elim + undo, key=lambda z: (z[0], -z[1])): + del c[ph][i] +muts.append(("reuse without elimination: all %d elimination and undo gates removed" % (len(elim) + len(undo)), c)) +c = copy.deepcopy(w); ph, i = undo[0]; c[ph][i][0] = w["start"][v] +muts.append(("a retained-total undo gate moved from the full frame to frame 0", c)) +tmpd = tempfile.mkdtemp() +for k, (name, c) in enumerate(muts): + p = os.path.join(tmpd, "mut%d.json.gz" % k) + with gzip.open(p, "wt") as fh: + json.dump(c, fh) + r = subprocess.run([sys.executable, "-I", "-B", CHECK, p, pricing], capture_output=True, text=True) + assert r.returncode != 0, "mutant accepted: " + name + print(" REJECTED %s :: %s" % (name, (r.stderr.strip().splitlines() or ["?"])[-1][:90])) +print("PASS all %d elimination-reuse negative controls rejected by PR #370's independent checker" % len(muts)) diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/ecost.py b/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/ecost.py new file mode 100644 index 0000000000..4ec2a959b1 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/ecost.py @@ -0,0 +1,20 @@ +"""Integer step-cost tables for the search heuristics of reuse.py and retime.py. + +cost(r) = r ln(m / r) (the per-child term of the linearised moment equation), scaled by 10^12 and rounded half-even +with Python's decimal module (correctly rounded natural logarithm), so every comparison made by the two stages is an +integer comparison and gives the same word on every platform. The tables only steer the deterministic choices of the +stages; the word they produce is checked and priced exactly elsewhere. +Prepared by eumemic with Anthropic Claude assistance; Apache-2.0.""" +from decimal import Decimal, localcontext, ROUND_HALF_EVEN + +SCALE = 10 ** 12 + + +def table(m, rmax): + out = [0] * (rmax + 1) + with localcontext() as ctx: + ctx.prec = 60 + for r in range(1, rmax + 1): + x = Decimal(r) * (Decimal(m) / Decimal(r)).ln() * SCALE + out[r] = int(x.to_integral_value(rounding=ROUND_HALF_EVEN)) + return out diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/regen.py b/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/regen.py new file mode 100644 index 0000000000..529de1b8b3 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/regen.py @@ -0,0 +1,49 @@ +"""Regenerate the word from pinned inputs. + + 1. PR #370's producer, unchanged (ham2.build -> compile2 -> fullword.build), with our producer parameters + (data/params/params-r740.json, found by discovery/search_params.py) -> raw word (R = 863) + 2. reuse.reuse: helper-slot reuse by elimination of dead registers -> reused word + 3. retime.retime: single-gate frame retiming (6 sweeps, M = 64) -> final word +Each word is written as PR #370's fullword.save does (sorted keys, compact JSON, gzip mtime 0). +usage: regen.py PARAMS.json OUT_RAW.json.gz OUT_REUSED.json.gz OUT_FINAL.json.gz OUT_LEDGER.json +OUT_LEDGER lists the inserted elimination gates (phase, index, kind) of the final word, for the negative controls. +Prepared by eumemic with Anthropic Claude assistance; Apache-2.0.""" +import ast +import json +import os +import sys + +HERE = os.path.dirname(os.path.abspath(__file__)) +os.environ["E8COORD"] = "ham" +sys.path.insert(0, os.path.join(HERE, "..", "bit", "producer")) +sys.path.insert(0, HERE) +import compile2 as C2 # noqa: E402 (PR #370 producer) +import fullword # noqa: E402 (PR #370 producer) +import ham2 # noqa: E402 (PR #370 producer) +import reuse as RU # noqa: E402 +import retime as RT # noqa: E402 + +params, out_raw, out_reused, out_final, out_ledger = sys.argv[1:6] +Pd = {ast.literal_eval(k): v for k, v in json.load(open(params))} +ham2.P.clear() +ham2.P.update(Pd) +h = ham2.build(0, True) +W = C2.compile2(h) +raw = fullword.build(W) +fullword.save(raw, out_raw) +print(" 1. PR #370 producer with our parameters: R %d, gates D/A/B/C %d/%d/%d/%d, frames %d" + % (raw["R"], len(raw["D"]), len(raw["A"]), len(raw["B"]), len(raw["C"]), len(raw["frames"])), flush=True) +reused, nre = RU.reuse(raw) +fullword.save(reused, out_reused) +print(" 2. elimination reuse: %d dead slots reused by later helpers, %d by the retained totals: R %d -> %d" + % (nre["helpers"], nre["totals"], raw["R"], reused["R"]), flush=True) +final, moved = RT.retime(reused, sweeps=6, M=64) +fullword.save(final, out_final) +for ph, i, kind in nre["eliminations"]: # retiming moves frames only: the ledger positions are unchanged + assert final[ph][i][1:] == reused[ph][i][1:] +with open(out_ledger, "w") as fh: + json.dump(dict(helpers=nre["helpers"], totals=nre["totals"], eliminations=nre["eliminations"]), fh) + fh.write("\n") +print(" 3. retiming: %d gate moves; final R %d, gates D/A/B/C %d/%d/%d/%d, frames %d" + % (moved, final["R"], len(final["D"]), len(final["A"]), len(final["B"]), len(final["C"]), len(final["frames"])), + flush=True) diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/retime.py b/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/retime.py new file mode 100644 index 0000000000..9c3e94b800 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/retime.py @@ -0,0 +1,112 @@ +"""Single-gate frame retiming of a bitE8/1 word (our implementation of the idea of PR #389, ai-nanachi). + +Every A, B and C gate may move to the join of its registers' previous frames (the lowest legal frame) or to the +root-spanned meet of their next frames (the highest legal frame), whichever lowers the integer step cost +sum over its registers of cost(rank in) + cost(rank out), cost(r) = r ln(M/r) (ecost.py; M = 64 by default, the +width of the compressed nine-stage layout). Sweeps alternate direction until no gate moves. D gates (frame 0), the +targets at frame 0 at the scatter, the retained totals at the full frame, start and final frames are pinned. +Requires the PR #370 producer modules on sys.path with E8COORD=ham (see regen.py). +Prepared by eumemic with Anthropic Claude assistance; Apache-2.0.""" +import os +from collections import defaultdict + +assert os.environ.get("E8COORD") == "ham", "set E8COORD=ham before importing (see regen.py)" +import frames as Fm # noqa: E402 (PR #370 producer: exact root-spanned closure over Q) +from ecost import table # noqa: E402 + + +def _bits(mask): + out = [] + while mask: + b = mask & -mask + out.append(b.bit_length() - 1) + mask ^= b + return out + + +def retime(w, sweeps=6, M=64): + v = w["v"] + rc = table(M, M) + frames = [sum(1 << s for s in f) for f in w["frames"]] + FULL = (1 << v) - 1 + dcache = {} + + def dim(mask): + if mask not in dcache: + dcache[mask] = Fm.closure(mask)[1] if mask else 0 + return dcache[mask] + + nodes = [] # dict(mask, regs, fixed, phase, gate) + for ph in ("D", "A"): + for g in w[ph]: + nodes.append(dict(mask=frames[g[0]], regs=[g[1]] + g[2], fixed=(ph == "D"), phase=ph, gate=g)) + for q in w["ret"]: + nodes.append(dict(mask=FULL, regs=[q], fixed=True, phase="pin", gate=None)) + for t in range(v): + nodes.append(dict(mask=0, regs=[v + t], fixed=True, phase="pin", gate=None)) + for ph in ("B", "C"): + for g in w[ph]: + nodes.append(dict(mask=frames[g[0]], regs=[g[1]] + g[2], fixed=False, phase=ph, gate=g)) + byreg = defaultdict(list) + for i, n in enumerate(nodes): + for r in n["regs"]: + byreg[r].append(i) + prev, nxt = {}, {} + for r, ids in byreg.items(): + for p, i in enumerate(ids): + prev[i, r] = ids[p - 1] if p else ("start", r) + nxt[i, r] = ids[p + 1] if p + 1 < len(ids) else ("final", r) + + def frame_of(key): + if isinstance(key, int): + return nodes[key]["mask"] + kind, r = key + return frames[w[kind][r]] + + def node_cost(i, mask): + c = 0 + dm = dim(mask) + for r in nodes[i]["regs"]: + c += rc[dm - dim(frame_of(prev[i, r]))] + rc[dim(frame_of(nxt[i, r])) - dm] + return c + + moved_total = 0 + for sweep in range(sweeps): + moved = 0 + order = [i for i, n in enumerate(nodes) if not n["fixed"]] + if sweep % 2: + order.reverse() + for i in order: + lo, hi = 0, FULL + for r in nodes[i]["regs"]: + lo |= frame_of(prev[i, r]) + hi &= frame_of(nxt[i, r]) + lo = Fm.closure(lo)[0] if lo else 0 + hi = Fm.closure(hi)[0] if hi else 0 + if lo & ~hi: + continue + old = nodes[i]["mask"] + best = min([old, lo, hi], key=lambda m_: node_cost(i, m_)) # ties keep the old frame + if node_cost(i, best) < node_cost(i, old): + nodes[i]["mask"] = best + moved += 1 + moved_total += moved + if not moved: + break + fid = {m: i for i, m in enumerate(frames)} + + def frame_id(mask): + if mask not in fid: + fid[mask] = len(frames) + frames.append(mask) + return fid[mask] + + out = {ph: [] for ph in "DABC"} + for n in nodes: + if n["phase"] == "pin": + continue + g = n["gate"] + out[n["phase"]].append([frame_id(n["mask"]), g[1], list(g[2])]) + cert = dict(w) + cert.update(frames=[_bits(m) for m in frames], D=out["D"], A=out["A"], B=out["B"], C=out["C"]) + return cert, moved_total diff --git a/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/reuse.py b/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/reuse.py new file mode 100644 index 0000000000..df455a0b37 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/code/reuse/reuse.py @@ -0,0 +1,258 @@ +"""Helper-slot reuse by elimination of dead registers (bitE8/1 words). + +A helper is dead after its last phase-A/B gate. It still holds a leftover x-content (an F2 combination of source +lines) at its death frame. Before the birth gate of a later helper whose first frame is fb, look among the dead slots +whose current frame lies inside fb for a linear relation of their x-contents over F2: + content(r0) = XOR_{q in S} content(q). +Emit the gate r0 += S at G = the join of the current frames of r0 and S (G lies inside fb). Afterwards r0 holds no +x-content (only helper dirt, which the rebuilt compensation D and cleanup C account for), so r0 hosts the new helper. +The eliminators S move to G and stay dead there. The relation is chosen by Gaussian elimination over F2 on the +candidates sorted by frame dimension, then replaced by the cheapest relation with |S| <= 3 under the integer step costs +of ecost.py (extra climbing of r0 and of the eliminators), when one exists. +The 9 retained totals (born at the full frame) also take dead slots: the leftover x-lines of the chosen slot are read +from the sources at the full frame, which zeroes its x-content. +D (dirt compensation at frame 0) and C (cleanup at the full frame) are rebuilt exactly as PR #370's fullword.py does. +Same idea as PR #376's helper-lifetime reuse (applecrusher), generalised from aliasing to linear relations. +Requires the PR #370 producer modules on sys.path with E8COORD=ham (see regen.py). +Prepared by eumemic with Anthropic Claude assistance; Apache-2.0.""" +import os + +assert os.environ.get("E8COORD") == "ham", "set E8COORD=ham before importing (see regen.py)" +import e8lib as E # noqa: E402 (PR #370 producer, unchanged) +import frames as Fm # noqa: E402 (PR #370 producer: exact root-spanned closure over Q) +from ecost import table # noqa: E402 + +RC = table(40, 8) # step cost r ln(40/r) of the five-stage ledger, as integers +MAXS_PAIRS = 60 # pair/triple relations are searched when at most this many dead slots fit + + +def _step(a, b): + return RC[b - a] if b > a else 0 + + +def _dim(mask): + return Fm.closure(mask)[1] if mask else 0 + + +def _bits(mask): + out = [] + while mask: + b = mask & -mask + out.append(b.bit_length() - 1) + mask ^= b + return out + + +def sparse_relation(cands, dead, fb): + """cheapest (r0, S) with content(r0) = XOR content(S), |S| <= 3, scored by the extra climbing of the + eliminators (death frame -> G -> full instead of death frame -> full) and of r0 (death frame -> G -> birth + frame instead of 0 -> birth frame and death frame -> full); None if no such relation fits inside fb""" + best = None + single = {} + for q in cands: + single.setdefault(dead[q][0], []).append(q) + pairs = {} + if len(cands) <= MAXS_PAIRS: + for i, a in enumerate(cands): + for b in cands[i + 1:]: + pairs.setdefault(dead[a][0] ^ dead[b][0], []).append((a, b)) + dfb = _dim(fb) + + def score(r0, S): + G = dead[r0][1] + for q in S: + G |= dead[q][1] + G, dg = Fm.closure(G) if G else (0, 0) + if G & ~fb: + return None + d0 = _dim(dead[r0][1]) + c = _step(d0, dg) + _step(dg, dfb) - _step(d0, 8) - _step(0, dfb) + for q in S: + if dead[q][1] != G: + dq = _dim(dead[q][1]) + c += _step(dq, dg) + _step(dg, 8) - _step(dq, 8) + return c + + for r0 in cands: + x = dead[r0][0] + opts = [] + if x == 0: + opts.append([]) + for q in single.get(x, []): + if q != r0: + opts.append([q]) + for a, b in pairs.get(x, []): + if r0 not in (a, b): + opts.append([a, b]) + if len(cands) <= MAXS_PAIRS: + for a in cands: + if a == r0: + continue + for b, c_ in pairs.get(x ^ dead[a][0], []): + if r0 not in (b, c_) and a not in (b, c_): + opts.append([a, b, c_]) + break + for S in opts: + sc = score(r0, S) + if sc is not None and (best is None or sc < best[0]): + best = (sc, r0, S) + return None if best is None else (best[1], best[2]) + + +def reuse(w, maxr=10 ** 9): + """returns (new word, dict(helpers=..., totals=...) reuse counts); w is a bitE8/1 word from PR #370's fullword.build (helpers start at + frame 0 and end at the full frame)""" + v, R = w["v"], w["R"] + assert w["format"] == "bitE8/1" and w["coords"] == "ham" and w["lines"] == [list(r) for r in E.LINES] + assert all(not w["frames"][w["start"][r]] for r in range(2 * v, 2 * v + R)) + frames = [sum(1 << s for s in f) for f in w["frames"]] + fid = {m: i for i, m in enumerate(frames)} + XM = (1 << v) - 1 + + def frame_id(mask): + if mask not in fid: + fid[mask] = len(frames) + frames.append(mask) + return fid[mask] + + nA = len(w["A"]) + gates = [list(g) for g in w["A"]] + [list(g) for g in w["B"]] + first, last = {}, {} + for k, (f, d, srcs) in enumerate(gates): + for r in [d] + srcs: + if r >= 2 * v: + first.setdefault(r, k) + last[r] = k + ret = set(w["ret"]) + val = [1 << s for s in range(v)] + [0] * (v + R) # x-content only (helpers never read targets) + cont_at = {} + for k, (f, d, srcs) in enumerate(gates): + for s in srcs: + val[d] ^= val[s] + for r in [d] + srcs: + if r >= 2 * v and last.get(r) == k: + cont_at[r] = (val[r] & XM, frames[f]) + births = sorted((first[r], r) for r in range(2 * v, 2 * v + R) if r in first and r not in ret) + deaths = sorted((last[r], r) for r in cont_at if r not in ret) + dead = {} # physical slot -> [x-content, current frame mask, death gate index] + rename = {} # logical register born later -> physical slot it reuses + insert_before = {} + di = 0 + nre = 0 + + def bury(upto): + nonlocal di + while di < len(deaths) and deaths[di][0] < upto: + k, r = deaths[di] + di += 1 + x, f = cont_at[r] + dead[rename.get(r, r)] = [x, f, k] + + for kb, rb in births: + bury(kb) + if nre >= maxr: + continue + fb = frames[gates[kb][0]] + cands = sorted((_dim(fm), p) for p, (x, fm, k) in dead.items() if (fm & ~fb) == 0) + if not cands: + continue + basis = [] # (vector, set of slots) with distinct leading bits + found = None + for dm, p in cands: + y, comb = dead[p][0], {p} + for bv, bs in basis: + if y >> (bv.bit_length() - 1) & 1: + y ^= bv + comb ^= bs + if y == 0: + found = (p, sorted(q for q in comb if q != p)) + break + basis.append((y, comb)) + basis.sort(key=lambda z: -z[0]) + if found is None: + continue + found = sparse_relation([p for _, p in cands], dead, fb) or found + r0, S = found + G = dead[r0][1] + for q in S: + G |= dead[q][1] + G = Fm.closure(G)[0] if G else 0 + assert G & ~fb == 0 + x = dead[r0][0] + for q in S: + x ^= dead[q][0] + assert x == 0, "not a relation" + if S: + insert_before.setdefault(kb, []).append([frame_id(G), r0, list(S), "helper"]) + for q in S: + dead[q][1] = G + assert dead[r0][2] < kb + del dead[r0] + rename[rb] = r0 + nre += 1 + # retained totals (born at the full frame) reuse dead slots: undo by reading the slot's x-lines at the full frame + FULLM = (1 << v) - 1 + ntot = 0 + for q in w["ret"]: + kq = first[q] + bury(kq) + free = [p for p in dead if dead[p][2] < kq] # only slots already dead at the total's birth + if not free: + continue + r0 = min(free, key=lambda p: (bin(dead[p][0]).count("1"), p)) + xs = _bits(dead[r0][0]) + if xs: + insert_before.setdefault(kq, []).append([frame_id(FULLM), r0, xs, "total"]) + del dead[r0] + rename[q] = r0 + ntot += 1 + out, kinds = [], [] + for k, g in enumerate(gates): + for f, d, srcs, kind in insert_before.get(k, []): + out.append([f, d, srcs]) + kinds.append(kind) + f, d, srcs = g + out.append([f, rename.get(d, d), [rename.get(s, s) for s in srcs]]) + kinds.append(None) + nA2 = nA + sum(len(insert_before.get(k, [])) for k in range(nA)) + A2, B2 = out[:nA2], out[nA2:] + # ledger of the inserted elimination gates: (phase, index in that phase, kind); retime.py keeps gate positions + ledger = [["A", i, kd] if i < nA2 else ["B", i - nA2, kd] for i, kd in enumerate(kinds) if kd] + alive = sorted(set(range(2 * v, 2 * v + R)) - set(rename)) + newid = {r: 2 * v + i for i, r in enumerate(alive)} + for i in range(2 * v): + newid[i] = i + R2 = len(alive) + + def ren(gl): + return [[f, newid[d], [newid[s] for s in srcs]] for f, d, srcs in gl] + + A2, B2 = ren(A2), ren(B2) + ret2 = [newid[rename.get(q, q)] for q in w["ret"]] + # dirt compensation and cleanup, rebuilt as in PR #370's fullword.build + nreg = 2 * v + R2 + dv = [0] * nreg + for r in range(2 * v, nreg): + dv[r] = 1 << (r - 2 * v) + for f, d, srcs in A2: + for s in srcs: + dv[d] ^= dv[s] + cdirt = [dv[q] for q in ret2] + for t in range(v): + for k in w["scatter"][t]: + dv[v + t] ^= cdirt[k] + for f, d, srcs in B2: + for s in srcs: + dv[d] ^= dv[s] + zero, full = frame_id(0), frame_id(FULLM) + D = [] + for t in range(v): + srcs = [2 * v + b for b in _bits(dv[v + t])] + if srcs: + D.append([zero, v + t, srcs]) + Cl = [[full, d, srcs] for f, d, srcs in reversed(A2 + B2) if d >= 2 * v] + start = w["start"][:2 * v] + [w["start"][2 * v]] * R2 + final = w["final"][:2 * v] + [w["final"][2 * v]] * R2 + cert = dict(w) + cert.update(R=R2, frames=[_bits(m) for m in frames], start=start, final=final, ret=ret2, D=D, A=A2, B=B2, C=Cl) + return cert, dict(helpers=nre, totals=ntot, eliminations=ledger) diff --git a/research/r740-block-retimed-kernel/vendor/pr436/data/bit/bitE8-r740.json.gz b/research/r740-block-retimed-kernel/vendor/pr436/data/bit/bitE8-r740.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..8a8ce996b890c7d11b2f8c7fbbd8148747627f46 GIT binary patch literal 35456 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 literal 0 HcmV?d00001 diff --git a/research/r740-block-retimed-kernel/vendor/pr436/data/bit/reuse-ledger.json b/research/r740-block-retimed-kernel/vendor/pr436/data/bit/reuse-ledger.json new file mode 100644 index 0000000000..51eb63c7d8 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/data/bit/reuse-ledger.json @@ -0,0 +1 @@ +{"helpers": 114, "totals": 9, "eliminations": [["A", 973, "helper"], ["A", 975, "helper"], ["A", 986, "helper"], ["A", 993, "helper"], ["A", 995, "helper"], ["A", 1002, "helper"], ["A", 1009, "helper"], ["A", 1011, "helper"], ["A", 1018, "helper"], ["A", 1025, "helper"], ["A", 1027, "helper"], ["A", 1034, "helper"], ["A", 1036, "helper"], ["A", 1043, "helper"], ["A", 1050, "helper"], ["A", 1052, "helper"], ["A", 1059, "helper"], ["A", 1061, "helper"], ["A", 1068, "helper"], ["A", 1075, "helper"], ["A", 1082, "helper"], ["A", 1085, "helper"], ["A", 1088, "helper"], ["A", 1091, "helper"], ["A", 1094, "helper"], ["A", 1097, "helper"], ["A", 1100, "helper"], ["A", 1103, "helper"], ["A", 1106, "helper"], ["A", 1109, "helper"], ["A", 1112, "helper"], ["A", 1115, "helper"], ["A", 1118, "helper"], ["A", 1121, "helper"], ["A", 1124, "helper"], ["A", 1127, "helper"], ["A", 1130, "helper"], ["A", 1133, "helper"], ["A", 1136, "helper"], ["A", 1139, "helper"], ["A", 1142, "helper"], ["A", 1145, "helper"], ["A", 1148, "helper"], ["A", 1151, "helper"], ["A", 1154, "helper"], ["A", 1157, "helper"], ["A", 1160, "helper"], ["A", 1163, "helper"], ["A", 1166, "helper"], ["A", 1169, "helper"], ["A", 1172, "helper"], ["A", 1175, "helper"], ["A", 1178, "helper"], ["A", 1181, "helper"], ["A", 1184, "helper"], ["A", 1187, "helper"], ["A", 1190, "helper"], ["A", 1193, "helper"], ["A", 1196, "helper"], ["A", 1199, "helper"], ["A", 1202, "helper"], ["A", 1205, "helper"], ["A", 1209, "helper"], ["A", 1213, "helper"], ["A", 1216, "helper"], ["A", 1219, "helper"], ["A", 1222, "helper"], ["A", 1225, "helper"], ["A", 1228, "helper"], ["A", 1231, "helper"], ["A", 1234, "helper"], ["A", 1237, "helper"], ["A", 1240, "helper"], ["A", 1243, "helper"], ["A", 1246, "helper"], ["A", 1249, "helper"], ["A", 1252, "helper"], ["A", 1255, "helper"], ["A", 1258, "helper"], ["A", 1261, "helper"], ["A", 1268, "helper"], ["A", 1271, "helper"], ["A", 1274, "helper"], ["A", 1277, "helper"], ["A", 1280, "helper"], ["A", 1283, "helper"], ["A", 1286, "helper"], ["A", 1289, "helper"], ["A", 1294, "helper"], ["A", 1299, "helper"], ["A", 1304, "helper"], ["A", 1308, "helper"], ["A", 1312, "helper"], ["A", 1315, "helper"], ["A", 1318, "helper"], ["A", 1321, "helper"], ["A", 1324, "helper"], ["A", 1329, "helper"], ["A", 1334, "helper"], ["A", 1339, "helper"], ["A", 1344, "helper"], ["A", 1348, "helper"], ["A", 1352, "helper"], ["A", 1355, "helper"], ["A", 1358, "helper"], ["A", 1367, "helper"], ["A", 1370, "helper"], ["A", 1379, "helper"], ["A", 1384, "helper"], ["A", 1409, "helper"], ["A", 1414, "helper"], ["A", 1427, "helper"], ["A", 1823, "helper"], ["A", 1840, "helper"], ["A", 1855, "total"], ["A", 1857, "total"], ["A", 1859, "total"], ["A", 1861, "total"], ["A", 1863, "total"], ["A", 1865, "total"], ["A", 1867, "total"], ["A", 1869, "total"], ["A", 1871, "total"]]} diff --git a/research/r740-block-retimed-kernel/vendor/pr436/data/params/params-r740.json b/research/r740-block-retimed-kernel/vendor/pr436/data/params/params-r740.json new file mode 100644 index 0000000000..d9bc74d95b --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr436/data/params/params-r740.json @@ -0,0 +1 @@ +[["('fc0', 0)", 2], ["('fc0', 1)", 3], ["('fc0', 2)", 0], ["('fc0', 3)", 0], ["('fc0', 4)", 3], ["('fc0', 5)", 5], ["('fc0', 6)", 2], ["('fc0', 7)", 0], ["('fn', 0)", 1], ["('fn', 1)", 1], ["('fn', 2)", 0], ["('fn', 3)", 0], ["('fn', 4)", 0], ["('fn', 5)", 0], ["('fn', 6)", 0], ["('fn', 7)", 2], ["('fold', 10)", 1], ["('fold', 100)", 1], ["('fold', 101)", 0], ["('fold', 102)", 1], ["('fold', 103)", 0], ["('fold', 104)", 1], ["('fold', 105)", 0], ["('fold', 106)", 1], ["('fold', 107)", 0], ["('fold', 108)", 1], ["('fold', 109)", 0], ["('fold', 11)", 1], ["('fold', 110)", 1], ["('fold', 111)", 0], ["('fold', 112)", 1], ["('fold', 113)", 1], ["('fold', 114)", 0], ["('fold', 115)", 0], ["('fold', 116)", 0], ["('fold', 117)", 0], ["('fold', 118)", 1], ["('fold', 119)", 1], ["('fold', 12)", 1], ["('fold', 13)", 1], ["('fold', 14)", 0], ["('fold', 15)", 0], ["('fold', 16)", 0], ["('fold', 17)", 1], ["('fold', 18)", 0], ["('fold', 19)", 1], ["('fold', 20)", 0], ["('fold', 21)", 1], ["('fold', 22)", 0], ["('fold', 23)", 1], ["('fold', 24)", 0], ["('fold', 25)", 1], ["('fold', 26)", 0], ["('fold', 27)", 1], ["('fold', 28)", 0], ["('fold', 29)", 1], ["('fold', 30)", 0], ["('fold', 31)", 1], ["('fold', 32)", 1], ["('fold', 33)", 1], ["('fold', 34)", 0], ["('fold', 35)", 0], ["('fold', 36)", 0], ["('fold', 37)", 0], ["('fold', 38)", 1], ["('fold', 39)", 1], ["('fold', 40)", 0], ["('fold', 41)", 0], ["('fold', 42)", 1], ["('fold', 43)", 1], ["('fold', 44)", 1], ["('fold', 45)", 1], ["('fold', 46)", 0], ["('fold', 47)", 0], ["('fold', 48)", 0], ["('fold', 49)", 1], ["('fold', 50)", 0], ["('fold', 51)", 1], ["('fold', 52)", 0], ["('fold', 53)", 1], ["('fold', 54)", 0], ["('fold', 55)", 1], ["('fold', 56)", 0], ["('fold', 57)", 0], ["('fold', 58)", 1], ["('fold', 59)", 1], ["('fold', 60)", 1], ["('fold', 61)", 1], ["('fold', 62)", 0], ["('fold', 63)", 0], ["('fold', 64)", 0], ["('fold', 65)", 0], ["('fold', 66)", 1], ["('fold', 67)", 1], ["('fold', 68)", 1], ["('fold', 69)", 1], ["('fold', 70)", 0], ["('fold', 71)", 0], ["('fold', 72)", 0], ["('fold', 73)", 1], ["('fold', 74)", 0], ["('fold', 75)", 1], ["('fold', 76)", 0], ["('fold', 77)", 1], ["('fold', 78)", 0], ["('fold', 79)", 1], ["('fold', 8)", 0], ["('fold', 80)", 1], ["('fold', 81)", 0], ["('fold', 82)", 1], ["('fold', 83)", 0], ["('fold', 84)", 1], ["('fold', 85)", 0], ["('fold', 86)", 1], ["('fold', 87)", 0], ["('fold', 88)", 1], ["('fold', 89)", 0], ["('fold', 9)", 0], ["('fold', 90)", 1], ["('fold', 91)", 0], ["('fold', 92)", 1], ["('fold', 93)", 0], ["('fold', 94)", 1], ["('fold', 95)", 0], ["('fold', 96)", 1], ["('fold', 97)", 0], ["('fold', 98)", 1], ["('fold', 99)", 0], ["('l5', 10)", 1], ["('l5', 100)", 0], ["('l5', 101)", 0], ["('l5', 102)", 1], ["('l5', 103)", 0], ["('l5', 104)", 0], ["('l5', 105)", 0], ["('l5', 106)", 1], ["('l5', 107)", 0], ["('l5', 108)", 0], ["('l5', 109)", 0], ["('l5', 11)", 1], ["('l5', 110)", 0], ["('l5', 111)", 1], ["('l5', 112)", 0], ["('l5', 113)", 0], ["('l5', 114)", 1], ["('l5', 115)", 1], ["('l5', 116)", 0], ["('l5', 117)", 0], ["('l5', 118)", 0], ["('l5', 119)", 0], ["('l5', 12)", 0], ["('l5', 13)", 0], ["('l5', 14)", 0], ["('l5', 15)", 0], ["('l5', 16)", 0], ["('l5', 17)", 0], ["('l5', 18)", 0], ["('l5', 19)", 1], ["('l5', 20)", 0], ["('l5', 21)", 0], ["('l5', 22)", 0], ["('l5', 23)", 1], ["('l5', 24)", 0], ["('l5', 25)", 0], ["('l5', 26)", 1], ["('l5', 27)", 1], ["('l5', 28)", 0], ["('l5', 29)", 0], ["('l5', 30)", 1], ["('l5', 31)", 0], ["('l5', 32)", 0], ["('l5', 33)", 0], ["('l5', 34)", 0], ["('l5', 35)", 0], ["('l5', 36)", 0], ["('l5', 37)", 0], ["('l5', 38)", 1], ["('l5', 39)", 1], ["('l5', 40)", 0], ["('l5', 41)", 0], ["('l5', 42)", 0], ["('l5', 43)", 0], ["('l5', 44)", 0], ["('l5', 45)", 0], ["('l5', 46)", 0], ["('l5', 47)", 0], ["('l5', 48)", 0], ["('l5', 49)", 0], ["('l5', 50)", 1], ["('l5', 51)", 1], ["('l5', 52)", 0], ["('l5', 53)", 0], ["('l5', 54)", 0], ["('l5', 55)", 0], ["('l5', 56)", 0], ["('l5', 57)", 0], ["('l5', 58)", 0], ["('l5', 59)", 1], ["('l5', 60)", 0], ["('l5', 61)", 0], ["('l5', 62)", 1], ["('l5', 63)", 0], ["('l5', 64)", 0], ["('l5', 65)", 0], ["('l5', 66)", 1], ["('l5', 67)", 1], ["('l5', 68)", 0], ["('l5', 69)", 0], ["('l5', 70)", 0], ["('l5', 71)", 1], ["('l5', 72)", 0], ["('l5', 73)", 0], ["('l5', 74)", 0], ["('l5', 75)", 1], ["('l5', 76)", 0], ["('l5', 77)", 0], ["('l5', 78)", 1], ["('l5', 79)", 0], ["('l5', 8)", 0], ["('l5', 80)", 0], ["('l5', 81)", 0], ["('l5', 82)", 0], ["('l5', 83)", 0], ["('l5', 84)", 0], ["('l5', 85)", 0], ["('l5', 86)", 0], ["('l5', 87)", 0], ["('l5', 88)", 0], ["('l5', 89)", 0], ["('l5', 9)", 0], ["('l5', 90)", 0], ["('l5', 91)", 0], ["('l5', 92)", 0], ["('l5', 93)", 0], ["('l5', 94)", 1], ["('l5', 95)", 0], ["('l5', 96)", 0], ["('l5', 97)", 0], ["('l5', 98)", 0], ["('l5', 99)", 0], ["('ls', (0, 1, 2, 3), (0, 0, 1, -1, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (0, 0, 1, 1, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (0, 1, -1, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (0, 1, 0, -1, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (0, 1, 0, 1, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (0, 1, 1, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (1, -1, 0, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (1, 0, -1, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (1, 0, 0, -1, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (1, 0, 0, 1, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (1, 0, 1, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 2, 3), (1, 1, 0, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (0, 0, 0, 0, 1, -1, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (0, 0, 0, 0, 1, 1, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (0, 1, 0, 0, -1, 0, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (0, 1, 0, 0, 0, -1, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (0, 1, 0, 0, 0, 1, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (0, 1, 0, 0, 1, 0, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (1, -1, 0, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (1, 0, 0, 0, -1, 0, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (1, 0, 0, 0, 0, -1, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (1, 0, 0, 0, 0, 1, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (1, 0, 0, 0, 1, 0, 0, 0))", 0], ["('ls', (0, 1, 4, 5), (1, 1, 0, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 6, 7), (0, 0, 0, 0, 0, 0, 1, -1))", 0], ["('ls', (0, 1, 6, 7), (0, 0, 0, 0, 0, 0, 1, 1))", 0], ["('ls', (0, 1, 6, 7), (0, 1, 0, 0, 0, 0, -1, 0))", 0], ["('ls', (0, 1, 6, 7), (0, 1, 0, 0, 0, 0, 0, -1))", 0], ["('ls', (0, 1, 6, 7), (0, 1, 0, 0, 0, 0, 0, 1))", 0], ["('ls', (0, 1, 6, 7), (0, 1, 0, 0, 0, 0, 1, 0))", 0], ["('ls', (0, 1, 6, 7), (1, -1, 0, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 1, 6, 7), (1, 0, 0, 0, 0, 0, -1, 0))", 0], ["('ls', (0, 1, 6, 7), (1, 0, 0, 0, 0, 0, 0, -1))", 0], ["('ls', (0, 1, 6, 7), (1, 0, 0, 0, 0, 0, 0, 1))", 0], ["('ls', (0, 1, 6, 7), (1, 0, 0, 0, 0, 0, 1, 0))", 0], ["('ls', (0, 1, 6, 7), (1, 1, 0, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 2, 4, 6), (0, 0, 0, 0, 1, 0, -1, 0))", 0], ["('ls', (0, 2, 4, 6), (0, 0, 0, 0, 1, 0, 1, 0))", 0], ["('ls', (0, 2, 4, 6), (0, 0, 1, 0, -1, 0, 0, 0))", 0], ["('ls', (0, 2, 4, 6), (0, 0, 1, 0, 0, 0, -1, 0))", 0], ["('ls', (0, 2, 4, 6), (0, 0, 1, 0, 0, 0, 1, 0))", 0], ["('ls', (0, 2, 4, 6), (0, 0, 1, 0, 1, 0, 0, 0))", 0], ["('ls', (0, 2, 4, 6), (1, 0, -1, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 2, 4, 6), (1, 0, 0, 0, -1, 0, 0, 0))", 0], ["('ls', (0, 2, 4, 6), (1, 0, 0, 0, 0, 0, -1, 0))", 0], ["('ls', (0, 2, 4, 6), (1, 0, 0, 0, 0, 0, 1, 0))", 0], ["('ls', (0, 2, 4, 6), (1, 0, 0, 0, 1, 0, 0, 0))", 0], ["('ls', (0, 2, 4, 6), (1, 0, 1, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 2, 5, 7), (0, 0, 0, 0, 0, 1, 0, -1))", 0], ["('ls', (0, 2, 5, 7), (0, 0, 0, 0, 0, 1, 0, 1))", 0], ["('ls', (0, 2, 5, 7), (0, 0, 1, 0, 0, -1, 0, 0))", 0], ["('ls', (0, 2, 5, 7), (0, 0, 1, 0, 0, 0, 0, -1))", 0], ["('ls', (0, 2, 5, 7), (0, 0, 1, 0, 0, 0, 0, 1))", 0], ["('ls', (0, 2, 5, 7), (0, 0, 1, 0, 0, 1, 0, 0))", 0], ["('ls', (0, 2, 5, 7), (1, 0, -1, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 2, 5, 7), (1, 0, 0, 0, 0, -1, 0, 0))", 0], ["('ls', (0, 2, 5, 7), (1, 0, 0, 0, 0, 0, 0, -1))", 0], ["('ls', (0, 2, 5, 7), (1, 0, 0, 0, 0, 0, 0, 1))", 0], ["('ls', (0, 2, 5, 7), (1, 0, 0, 0, 0, 1, 0, 0))", 0], ["('ls', (0, 2, 5, 7), (1, 0, 1, 0, 0, 0, 0, 0))", 0], ["('ls', (0, 3, 4, 7), (0, 0, 0, 0, 1, 0, 0, -1))", 0], ["('ls', (0, 3, 4, 7), (0, 0, 0, 0, 1, 0, 0, 1))", 0], ["('ls', (0, 3, 4, 7), (0, 0, 0, 1, -1, 0, 0, 0))", 0], ["('ls', (0, 3, 4, 7), (0, 0, 0, 1, 0, 0, 0, -1))", 0], ["('ls', (0, 3, 4, 7), (0, 0, 0, 1, 0, 0, 0, 1))", 0], ["('ls', (0, 3, 4, 7), (0, 0, 0, 1, 1, 0, 0, 0))", 0], ["('ls', (0, 3, 4, 7), (1, 0, 0, -1, 0, 0, 0, 0))", 0], ["('ls', (0, 3, 4, 7), (1, 0, 0, 0, -1, 0, 0, 0))", 0], ["('ls', (0, 3, 4, 7), (1, 0, 0, 0, 0, 0, 0, -1))", 0], ["('ls', (0, 3, 4, 7), (1, 0, 0, 0, 0, 0, 0, 1))", 0], ["('ls', (0, 3, 4, 7), (1, 0, 0, 0, 1, 0, 0, 0))", 0], ["('ls', (0, 3, 4, 7), (1, 0, 0, 1, 0, 0, 0, 0))", 0], ["('ls', (0, 3, 5, 6), (0, 0, 0, 0, 0, 1, -1, 0))", 0], ["('ls', (0, 3, 5, 6), (0, 0, 0, 0, 0, 1, 1, 0))", 0], ["('ls', (0, 3, 5, 6), (0, 0, 0, 1, 0, -1, 0, 0))", 0], ["('ls', (0, 3, 5, 6), (0, 0, 0, 1, 0, 0, -1, 0))", 0], ["('ls', (0, 3, 5, 6), (0, 0, 0, 1, 0, 0, 1, 0))", 0], ["('ls', (0, 3, 5, 6), (0, 0, 0, 1, 0, 1, 0, 0))", 0], ["('ls', (0, 3, 5, 6), (1, 0, 0, -1, 0, 0, 0, 0))", 0], ["('ls', (0, 3, 5, 6), (1, 0, 0, 0, 0, -1, 0, 0))", 0], ["('ls', (0, 3, 5, 6), (1, 0, 0, 0, 0, 0, -1, 0))", 0], ["('ls', (0, 3, 5, 6), (1, 0, 0, 0, 0, 0, 1, 0))", 0], ["('ls', (0, 3, 5, 6), (1, 0, 0, 0, 0, 1, 0, 0))", 0], ["('ls', (0, 3, 5, 6), (1, 0, 0, 1, 0, 0, 0, 0))", 0], ["('ls', (1, 2, 4, 7), (0, 0, 0, 0, 1, 0, 0, -1))", 0], ["('ls', (1, 2, 4, 7), (0, 0, 0, 0, 1, 0, 0, 1))", 0], ["('ls', (1, 2, 4, 7), (0, 0, 1, 0, -1, 0, 0, 0))", 0], ["('ls', (1, 2, 4, 7), (0, 0, 1, 0, 0, 0, 0, -1))", 0], ["('ls', (1, 2, 4, 7), (0, 0, 1, 0, 0, 0, 0, 1))", 0], ["('ls', (1, 2, 4, 7), (0, 0, 1, 0, 1, 0, 0, 0))", 0], ["('ls', (1, 2, 4, 7), (0, 1, -1, 0, 0, 0, 0, 0))", 0], ["('ls', (1, 2, 4, 7), (0, 1, 0, 0, -1, 0, 0, 0))", 0], ["('ls', (1, 2, 4, 7), (0, 1, 0, 0, 0, 0, 0, -1))", 0], ["('ls', (1, 2, 4, 7), (0, 1, 0, 0, 0, 0, 0, 1))", 0], ["('ls', (1, 2, 4, 7), (0, 1, 0, 0, 1, 0, 0, 0))", 0], ["('ls', (1, 2, 4, 7), (0, 1, 1, 0, 0, 0, 0, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 0, 0, 0, 0, 1, -1, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 0, 0, 0, 0, 1, 1, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 0, 1, 0, 0, -1, 0, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 0, 1, 0, 0, 0, -1, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 0, 1, 0, 0, 0, 1, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 0, 1, 0, 0, 1, 0, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 1, -1, 0, 0, 0, 0, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 1, 0, 0, 0, -1, 0, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 1, 0, 0, 0, 0, -1, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 1, 0, 0, 0, 0, 1, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 1, 0, 0, 0, 1, 0, 0))", 0], ["('ls', (1, 2, 5, 6), (0, 1, 1, 0, 0, 0, 0, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 0, 0, 0, 1, 0, -1, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 0, 0, 0, 1, 0, 1, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 0, 0, 1, -1, 0, 0, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 0, 0, 1, 0, 0, -1, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 0, 0, 1, 0, 0, 1, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 0, 0, 1, 1, 0, 0, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 1, 0, -1, 0, 0, 0, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 1, 0, 0, -1, 0, 0, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 1, 0, 0, 0, 0, -1, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 1, 0, 0, 0, 0, 1, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 1, 0, 0, 1, 0, 0, 0))", 0], ["('ls', (1, 3, 4, 6), (0, 1, 0, 1, 0, 0, 0, 0))", 0], ["('ls', (1, 3, 5, 7), (0, 0, 0, 0, 0, 1, 0, -1))", 0], ["('ls', (1, 3, 5, 7), (0, 0, 0, 0, 0, 1, 0, 1))", 0], ["('ls', (1, 3, 5, 7), (0, 0, 0, 1, 0, -1, 0, 0))", 0], ["('ls', (1, 3, 5, 7), (0, 0, 0, 1, 0, 0, 0, -1))", 0], ["('ls', (1, 3, 5, 7), (0, 0, 0, 1, 0, 0, 0, 1))", 0], ["('ls', (1, 3, 5, 7), (0, 0, 0, 1, 0, 1, 0, 0))", 0], ["('ls', (1, 3, 5, 7), (0, 1, 0, -1, 0, 0, 0, 0))", 0], ["('ls', (1, 3, 5, 7), (0, 1, 0, 0, 0, -1, 0, 0))", 0], ["('ls', (1, 3, 5, 7), (0, 1, 0, 0, 0, 0, 0, -1))", 0], ["('ls', (1, 3, 5, 7), (0, 1, 0, 0, 0, 0, 0, 1))", 0], ["('ls', (1, 3, 5, 7), (0, 1, 0, 0, 0, 1, 0, 0))", 0], ["('ls', (1, 3, 5, 7), (0, 1, 0, 1, 0, 0, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 0, 0, 1, -1, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 0, 0, 1, 1, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 0, 1, -1, 0, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 0, 1, 0, -1, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 0, 1, 0, 1, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 0, 1, 1, 0, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 1, -1, 0, 0, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 1, 0, -1, 0, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 1, 0, 0, -1, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 1, 0, 0, 1, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 1, 0, 1, 0, 0, 0))", 0], ["('ls', (2, 3, 4, 5), (0, 0, 1, 1, 0, 0, 0, 0))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 0, 0, 0, 0, 1, -1))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 0, 0, 0, 0, 1, 1))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 0, 1, 0, 0, -1, 0))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 0, 1, 0, 0, 0, -1))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 0, 1, 0, 0, 0, 1))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 0, 1, 0, 0, 1, 0))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 1, -1, 0, 0, 0, 0))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 1, 0, 0, 0, -1, 0))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 1, 0, 0, 0, 0, -1))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 1, 0, 0, 0, 0, 1))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 1, 0, 0, 0, 1, 0))", 0], ["('ls', (2, 3, 6, 7), (0, 0, 1, 1, 0, 0, 0, 0))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 0, 1, -1))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 0, 1, 1))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 1, -1, 0))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 1, 0, -1))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 1, 0, 1))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 0, 1, 1, 0))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, -1, 0, 0))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, 0, -1, 0))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, 0, 0, -1))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, 0, 0, 1))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, 0, 1, 0))", 0], ["('ls', (4, 5, 6, 7), (0, 0, 0, 0, 1, 1, 0, 0))", 0], ["('pair', (0, 1, 2, 3), 64)", 0], ["('pair', (0, 1, 2, 3), 65)", 0], ["('pair', (0, 1, 2, 3), 66)", 1], ["('pair', (0, 1, 2, 3), 67)", 1], ["('pair', (0, 1, 2, 3), 68)", 0], ["('pair', (0, 1, 2, 3), 69)", 0], ["('pair', (0, 1, 2, 3), 70)", 1], ["('pair', (0, 1, 2, 3), 71)", 1], ["('pair', (0, 1, 4, 5), 32)", 0], ["('pair', (0, 1, 4, 5), 33)", 0], ["('pair', (0, 1, 4, 5), 34)", 2], ["('pair', (0, 1, 4, 5), 35)", 1], ["('pair', (0, 1, 4, 5), 36)", 1], ["('pair', (0, 1, 4, 5), 37)", 0], ["('pair', (0, 1, 4, 5), 38)", 2], ["('pair', (0, 1, 4, 5), 39)", 1], ["('pair', (0, 1, 6, 7), 24)", 0], ["('pair', (0, 1, 6, 7), 25)", 0], ["('pair', (0, 1, 6, 7), 26)", 2], ["('pair', (0, 1, 6, 7), 27)", 2], ["('pair', (0, 1, 6, 7), 28)", 2], ["('pair', (0, 1, 6, 7), 29)", 2], ["('pair', (0, 1, 6, 7), 30)", 0], ["('pair', (0, 1, 6, 7), 31)", 2], ["('pair', (0, 2, 4, 6), 16)", 0], ["('pair', (0, 2, 4, 6), 17)", 0], ["('pair', (0, 2, 4, 6), 18)", 1], ["('pair', (0, 2, 4, 6), 19)", 0], ["('pair', (0, 2, 4, 6), 20)", 1], ["('pair', (0, 2, 4, 6), 21)", 0], ["('pair', (0, 2, 4, 6), 22)", 1], ["('pair', (0, 2, 4, 6), 23)", 1], ["('pair', (0, 2, 5, 7), 40)", 0], ["('pair', (0, 2, 5, 7), 41)", 0], ["('pair', (0, 2, 5, 7), 42)", 1], ["('pair', (0, 2, 5, 7), 43)", 2], ["('pair', (0, 2, 5, 7), 44)", 1], ["('pair', (0, 2, 5, 7), 45)", 1], ["('pair', (0, 2, 5, 7), 46)", 0], ["('pair', (0, 2, 5, 7), 47)", 2], ["('pair', (0, 3, 4, 7), 72)", 0], ["('pair', (0, 3, 4, 7), 73)", 0], ["('pair', (0, 3, 4, 7), 74)", 2], ["('pair', (0, 3, 4, 7), 75)", 0], ["('pair', (0, 3, 4, 7), 76)", 1], ["('pair', (0, 3, 4, 7), 77)", 1], ["('pair', (0, 3, 4, 7), 78)", 0], ["('pair', (0, 3, 4, 7), 79)", 0], ["('pair', (0, 3, 5, 6), 112)", 0], ["('pair', (0, 3, 5, 6), 113)", 0], ["('pair', (0, 3, 5, 6), 114)", 0], ["('pair', (0, 3, 5, 6), 115)", 2], ["('pair', (0, 3, 5, 6), 116)", 0], ["('pair', (0, 3, 5, 6), 117)", 2], ["('pair', (0, 3, 5, 6), 118)", 1], ["('pair', (0, 3, 5, 6), 119)", 1], ["('pair', (1, 2, 4, 7), 10)", 2], ["('pair', (1, 2, 4, 7), 11)", 0], ["('pair', (1, 2, 4, 7), 12)", 0], ["('pair', (1, 2, 4, 7), 13)", 0], ["('pair', (1, 2, 4, 7), 14)", 1], ["('pair', (1, 2, 4, 7), 15)", 1], ["('pair', (1, 2, 4, 7), 8)", 0], ["('pair', (1, 2, 4, 7), 9)", 0], ["('pair', (1, 2, 5, 6), 48)", 0], ["('pair', (1, 2, 5, 6), 49)", 0], ["('pair', (1, 2, 5, 6), 50)", 2], ["('pair', (1, 2, 5, 6), 51)", 0], ["('pair', (1, 2, 5, 6), 52)", 0], ["('pair', (1, 2, 5, 6), 53)", 0], ["('pair', (1, 2, 5, 6), 54)", 1], ["('pair', (1, 2, 5, 6), 55)", 0], ["('pair', (1, 3, 4, 6), 80)", 0], ["('pair', (1, 3, 4, 6), 81)", 0], ["('pair', (1, 3, 4, 6), 82)", 2], ["('pair', (1, 3, 4, 6), 83)", 2], ["('pair', (1, 3, 4, 6), 84)", 1], ["('pair', (1, 3, 4, 6), 85)", 0], ["('pair', (1, 3, 4, 6), 86)", 0], ["('pair', (1, 3, 4, 6), 87)", 1], ["('pair', (1, 3, 5, 7), 104)", 0], ["('pair', (1, 3, 5, 7), 105)", 0], ["('pair', (1, 3, 5, 7), 106)", 0], ["('pair', (1, 3, 5, 7), 107)", 0], ["('pair', (1, 3, 5, 7), 108)", 2], ["('pair', (1, 3, 5, 7), 109)", 1], ["('pair', (1, 3, 5, 7), 110)", 0], ["('pair', (1, 3, 5, 7), 111)", 1], ["('pair', (2, 3, 4, 5), 100)", 0], ["('pair', (2, 3, 4, 5), 101)", 0], ["('pair', (2, 3, 4, 5), 102)", 2], ["('pair', (2, 3, 4, 5), 103)", 2], ["('pair', (2, 3, 4, 5), 96)", 0], ["('pair', (2, 3, 4, 5), 97)", 0], ["('pair', (2, 3, 4, 5), 98)", 2], ["('pair', (2, 3, 4, 5), 99)", 0], ["('pair', (2, 3, 6, 7), 88)", 0], ["('pair', (2, 3, 6, 7), 89)", 0], ["('pair', (2, 3, 6, 7), 90)", 0], ["('pair', (2, 3, 6, 7), 91)", 2], ["('pair', (2, 3, 6, 7), 92)", 2], ["('pair', (2, 3, 6, 7), 93)", 2], ["('pair', (2, 3, 6, 7), 94)", 1], ["('pair', (2, 3, 6, 7), 95)", 0], ["('pair', (4, 5, 6, 7), 56)", 0], ["('pair', (4, 5, 6, 7), 57)", 0], ["('pair', (4, 5, 6, 7), 58)", 0], ["('pair', (4, 5, 6, 7), 59)", 2], ["('pair', (4, 5, 6, 7), 60)", 1], ["('pair', (4, 5, 6, 7), 61)", 0], ["('pair', (4, 5, 6, 7), 62)", 0], ["('pair', (4, 5, 6, 7), 63)", 2]] \ No newline at end of file diff --git a/research/r740-block-retimed-kernel/vendor/pr438/complex_phases.py b/research/r740-block-retimed-kernel/vendor/pr438/complex_phases.py new file mode 100644 index 0000000000..6f199bc139 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr438/complex_phases.py @@ -0,0 +1,22 @@ +"""Bind unchanged exact phase evidence, or regenerate all selected phase pairs.""" +import gzip,hashlib,json,os,subprocess,sys +from pathlib import Path +P=Path(__file__).resolve().parent.parent;O=Path('split-centres') +def sha(p):return hashlib.sha256(p.read_bytes()).hexdigest() +c=json.load(gzip.open(O/'CANONICAL-WORD.json.gz')) +r=json.loads((P/'inputs/complex-phase-receipt.json').read_text()) +raw=gzip.decompress((P/'inputs/complex-phase-recipes.json.gz').read_bytes());recipes=json.loads(raw) +assert sha(O/'CANONICAL-WORD.json.gz')==r['canonical_word_sha256'] +assert hashlib.sha256(raw).hexdigest()==r['recipe_sha256'] +edges=set(map(tuple,c['edges']))|{(a,b) for f in c['center_frames'] for a,b in ((f,0),(0,f))} +assert {(z['old'],z['new']) for z in recipes['children']}==edges +assert len(recipes['children'])==len(edges) and len(recipes['endpoint_adapters'])==240 +for z in recipes['children']:assert z['rank']==abs(len(c['frames'][z['old']])-len(c['frames'][z['new']])) +if os.environ.get('E8_REPLAY_PHASES')=='1': + subprocess.run([sys.executable,'-B',str(P/'code/complex_phases_full.py')],check=True) + assert (O/'CLIFFORD-RECIPES.json').read_bytes()==raw +else: + (O/'CLIFFORD-RECIPES.json').write_bytes(raw) + r['validation_mode']='Reuse exact phase evidence bound to the unchanged canonical word and recipe hashes' + (O/'CLIFFORD-REVIEW.json').write_text(json.dumps(r,indent=2)+'\n') +print('PASS source-bound phase recipes',len(edges)) diff --git a/research/r740-block-retimed-kernel/vendor/pr439/LICENSE b/research/r740-block-retimed-kernel/vendor/pr439/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr439/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/research/r740-block-retimed-kernel/vendor/pr439/NOTICE.md b/research/r740-block-retimed-kernel/vendor/pr439/NOTICE.md new file mode 100644 index 0000000000..3dfad2ad57 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr439/NOTICE.md @@ -0,0 +1,26 @@ +# Attribution and scope + +New kernel selection, explicit residual route witnesses, integration and audits: +chafreaky, with substantial OpenAI Codex assistance. Apache-2.0. + +- eumemic, PR #436 (`da8ca2025472553ac9b36f4400138ed48a6a0e3b`): R740 bit word, + reconstruction, elimination/reuse, independent checkers and #433 composition. + The entire parent package is byte-identical, including its notices, licenses, + source pins and Anthropic Claude disclosure. +- chafreaky, PR #417: shared-donor kernel, exact local replay and tiling code; + the earlier implementation had substantial Anthropic Claude assistance. +- rohanarun, PR #435 (`2c9c833ac8709402c37fc88a6a23393fb0d397fb`): prior mixed-width + residual-bank composition on #433. The new implementation derives from the + pinned #436 global/audit code and adds explicit residual isometries and controls. +- icekylinx, PR #433: split-centre complex supplier, bit finite invoice and tail, + with OpenAI Codex assistance; the complex result is cited, not rebuilt here. +- jacklightChen, PRs #386 and #425: compressed nine-stage geometry and the + mutable-basis complex interface, with OpenAI Codex assistance. +- utcorvusvolat-dotcom / Dylan Crow, PR #370: E8 bit format, producer and + independent checker lineage, with Anthropic Claude assistance. +- applecrusher (#376), ai-nanachi (#389/#426), DaysSky (#363/#375/#381), + DreamingOfClouds (#315), Jacob Sussman, and all earlier credited contributors: + see the unchanged `parent436/NOTICE.md` and source-specific notices. + +Do not infer an unconditional theorem or a new Lean proof from the finite +certificates. No inherited author or AI-assistance disclosure has been removed. diff --git a/research/r740-block-retimed-kernel/vendor/pr439/bank_routes.py b/research/r740-block-retimed-kernel/vendor/pr439/bank_routes.py new file mode 100644 index 0000000000..919fe32f7e --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr439/bank_routes.py @@ -0,0 +1,64 @@ +"""Exact residual bank routes for the kernel word; chafreaky with OpenAI Codex. + +The stored integer rows divided by two are an orthonormal basis. Entrance +rows span E; the remaining rows span E-perp. A coordinate permutation sends +the latter to the assigned contiguous block in a width-64 bank. This gives +an explicit rational isometry, with only powers of two in denominators. +""" +from collections import Counter, deque +from tile_m import tile + + +def placement(widths): + by_width = {} + for rep in range(8): + for helper, width in enumerate(widths): + assert 0 < width <= 8 + by_width.setdefault(width, deque()).append((rep, helper)) + patterns = tile({w: len(q) for w, q in by_width.items()}, 64) + result = {} + bank = 0 + for widths_in_bank, count in patterns: + for _ in range(count): + offset = 0 + for width in widths_in_bank: + key = by_width[width].popleft() + result[key] = (bank, offset, width) + offset += width + assert offset == 64 + bank += 1 + assert all(not q for q in by_width.values()) + assert len(result) == 8 * len(widths) + return result, bank + + +def validate_isometries(rows, frames, roots, dimensions): + seen = set() + dot = lambda a, b: sum(x*y for x, y in zip(a, b)) + for record in rows: + f = record['frame'] + assert f not in seen + seen.add(f) + e = record['entrance_rank'] + assert e == dimensions[f] and record['denominator'] == 2 + basis = record['entrance_basis'] + record['residual_basis'] + matrix = record['orthogonal_rows_numerator'] + assert len(basis) == len(matrix) == 8 + assert matrix == [roots[i] for i in basis] + assert all(len(r) == 8 and all(type(x) is int for x in r) for r in matrix) + assert all(dot(a,b) == 4*(i==j) for i,a in enumerate(matrix) for j,b in enumerate(matrix)) + # The first e rows span precisely the frame, not only its dimension. + for i in frames[f]: + assert sum(dot(roots[i], q)**2 for q in matrix[:e]) == 4*dot(roots[i], roots[i]) + assert len(record['entrance_basis']) == e + # This selected family needs coordinate permutations only. Checking the + # elementary reduction also bounds the literal route cost and primes. + reduced = [[x // 2 for x in row] for row in matrix] + assert all(x % 2 == 0 for row in matrix for x in row) + operations = record['gaussian_reduction'] + assert len(operations) <= 7 + for kind, i, j, scalar in operations: + assert kind == 'swap' and scalar is None and 0 <= i < 8 and 0 <= j < 8 + reduced[i], reduced[j] = reduced[j], reduced[i] + assert reduced == [[int(i == j) for j in range(8)] for i in range(8)] + return seen diff --git a/research/r740-block-retimed-kernel/vendor/pr439/e8core.py b/research/r740-block-retimed-kernel/vendor/pr439/e8core.py new file mode 100644 index 0000000000..78983b3687 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr439/e8core.py @@ -0,0 +1,203 @@ +"""Our own engine for bitE8/1 words (E8 root-line labels, h = 8): frame algebra over Q via root-line masks, +legality/F2 replay, five-stage histogram, exact bit coarse saving and PR #315 outer assembly (our engine copies). +Chafik Boukhalfa (chafreaky) with Anthropic Claude assistance; Apache-2.0.""" +import gzip, json, os, importlib.util +from fractions import Fraction as Q +from collections import Counter + +HERE = os.path.dirname(os.path.abspath(__file__)) +def _load(n): + s = importlib.util.spec_from_file_location('e8_' + n, os.path.join(HERE, "engines", n + ".py")) + m = importlib.util.module_from_spec(s); s.loader.exec_module(m); return m +moment = _load('moment'); other = _load('base_two_moment'); outer = _load('outer') + +B2 = Q(876248285600677, 10**18) # Sussman E8 five-stage (PR #352) +B3 = Q(932783231884153, 10**18) # DaysSky seven-stage B_3 (PR #363; no Lean proof) + + +def load_word(p): + with (gzip.open(p, 'rt') if p.endswith('.gz') else open(p)) as f: + return json.load(f) + + +def save_word(c, p): + with gzip.open(p, 'wt') as f: + json.dump(c, f, separators=(',', ':')) + + +def rank(vecs): + rows = [[Q(x) for x in r] for r in vecs]; rk = 0 + n = len(rows[0]) if rows else 0 + for col in range(n): + p = next((i for i in range(rk, len(rows)) if rows[i][col] != 0), None) + if p is None: continue + rows[rk], rows[p] = rows[p], rows[rk] + for i in range(len(rows)): + if i != rk and rows[i][col] != 0: + f = rows[i][col] / rows[rk][col]; rows[i] = [a - f * b for a, b in zip(rows[i], rows[rk])] + rk += 1 + return rk + + +class Lat: + """Root-spanned subspaces of Q^8 represented by the mask of root lines they contain.""" + def __init__(self, lines): + self.lines = [tuple(x) for x in lines]; self.v = len(lines) + self._dim = {0: 0}; self._close = {} + # Gram (form /2) for orthogonality + self.ip = [[sum(a * b for a, b in zip(x, y)) // 2 for y in self.lines] for x in self.lines] + + def close(self, mask): + """mask of all root lines in span(roots of mask)""" + if mask in self._close: return self._close[mask] + idx = [i for i in range(self.v) if mask >> i & 1] + basis = [] + for i in idx: + if rank([self.lines[j] for j in basis] + [self.lines[i]]) > len(basis): basis.append(i) + d = len(basis); out = 0 + if d == 8: out = (1 << self.v) - 1 + elif d: + B = [self.lines[j] for j in basis] + for i in range(self.v): + if rank(B + [self.lines[i]]) == d: out |= 1 << i + self._close[mask] = out; self._close[out] = out; self._dim[out] = d + return out + + def dim(self, mask): + if mask not in self._dim: self.close(mask) + return self._dim[mask] + + def basis(self, mask): + b = [] + for i in range(self.v): + if mask >> i & 1 and rank([self.lines[j] for j in b] + [self.lines[i]]) > len(b): b.append(i) + return b + + def perp(self, t): + return self.close(sum(1 << j for j in range(self.v) if self.ip[t][j] == 0)) + + +def to_masks(c, L): + return [L.close(sum(1 << i for i in fr)) for fr in c['frames']] + + +PHASES = ('D', 'A', 'B', 'C') + + +def replay(c, L=None, masks=None, check_f2=True, span=True, span_mode='z'): + """Exact legality + F2 replay + histogram of a bitE8/1 word. Returns dict(H_local, steps, ...). + Legality: each register's frames nested (mask inclusion = exact Q-subspace inclusion for root-spanned frames) and + strictly increasing at each move; every gate at one common frame; D compensation at frame 0; y at frame 0 at the + scatter; COPY of retained totals; final frames (x, helpers FULL; y_t at its cap t-perp). + Source-span: every non-target operand's x-support lies in the gate frame.""" + L = L or Lat(c['lines']); masks = masks or to_masks(c, L) + v, R, h = c['v'], c['R'], c['h']; n = 2 * v + R; FULL = (1 << v) - 1 + cur = [masks[f] for f in c['start']] + for r in range(v): assert cur[r] == L.close(1 << r), 'x start' + for r in range(v, 2 * v): assert cur[r] == 0, 'y start at 0' + sig = [L.dim(cur[r]) for r in range(n)] + H = Counter(); steps = 0; viol = [] + val = [1 << i for i in range(n)] + zsupp = [{i: 1} if i < v else {} for i in range(n)] # integer support of each register over the x columns (all ADDs are +1) + def climb(r, m): + nonlocal steps + if cur[r] == m: return + assert cur[r] & ~m == 0 and cur[r] != m, ('not nested', r) + H[L.dim(m) - L.dim(cur[r])] += 1; steps += 1; cur[r] = m + def run(gates, ph): + for k, (f, d, srcs) in enumerate(gates): + m = masks[f] + assert d >= v and d not in srcs and len(set(srcs)) == len(srcs), (ph, k) + for x in [d] + srcs: climb(x, m) + for s in srcs: + val[d] ^= val[s] + if span: + if s < v or s >= 2 * v: + ms = sum(1 << i for i in zsupp[s]) + if ms & ~m: viol.append((ph, k, s)) + zd = zsupp[d] + for i, a in zsupp[s].items(): + w = zd.get(i, 0) + a + if w: zd[i] = w + else: zd.pop(i, None) + if span_mode == 'f2': + zsupp[d] = {i: 1 for i in range(v) if val[d] >> i & 1} + if span and d >= 2 * v: + md = sum(1 << i for i in zsupp[d]) + if md & ~m: viol.append((ph, k, d)) + run(c['D'], 'D') + for r in range(v, n): assert cur[r] == masks[c['start'][r]], 'D compensation at frame 0 (helpers untouched otherwise)' + run(c['A'], 'A') + for t in range(v): assert cur[v + t] == 0, 'y at frame 0 at the scatter' + copies = [val[q] for q in c['ret']] + for q in c['ret']: + assert q >= 2 * v; H[L.dim(cur[q])] += 1 + for t, row in enumerate(c['scatter']): + for k in row: val[v + t] ^= copies[k] + run(c['B'], 'B'); run(c['C'], 'C') + for r in range(n): climb(r, masks[c['final'][r]]) + for r in range(v): assert cur[r] == FULL + for r in range(2 * v, n): assert cur[r] == FULL + for t in range(v): assert cur[v + t] == L.perp(t), 'y final at cap' + if check_f2: + for s in range(v): assert val[s] == 1 << s + for t in range(v): assert val[v + t] == (1 << (v + t)) | (1 << t), ('target', t) + for r in range(2 * v, n): assert val[r] == 1 << r, ('helper', r) + return dict(sig=sig, viol=viol, H=H, steps=steps, n=n, v=v, R=R, h=h, L=L, masks=masks, ncopy=len(c['ret'])) + + +def profile(H_local, v, h=8): + prof = Counter({j: 5 * c for j, c in H_local.items()}) + for j in (2 * h - 2, h - 1, 2 * h + 2, 4): prof[j] += 2 * v + return prof + + +def coarse(H, m, W): + grid = Q(1, 10**18) + root = moment.certify(dict(H), m, W, True); c = Q(int(Q(root['lower']) * 10**18), 10**18) + assert moment.moment(H, m, W, c, True)[1] < 1 < moment.moment(H, m, W, c + grid, True)[0] + fb = 32 * m * m * sum(H.values()) + _, up = other.moment(m, W, list(H.items()), c); _, bad = other.moment(m, W, [(1, fb)], c) + lo, _ = other.moment(m, W, list(H.items()), c + grid); blo, _ = other.moment(m, W, [(1, fb)], c + grid) + assert up + Q(1, 10**16) * bad < 1 < lo + Q(1, 10**16) * blo + return c + + +def kappa(c, b): + grid = Q(1, 10**18); eta = Q(1, 10**12); beta = Q(1, 10**9); cap = (1 - beta) * b + sv = min(c, Q(((cap - grid) * 10**18).__floor__(), 10**18)); binding = 'bit' if sv == c else 'complex' + chain = [Q(384599, 10**10)] + for _ in range(3): + a = (1 - sv) * sv + sv * chain[-1]; assert chain[-1] < a < sv < 1 - a; chain.append(a) + bit = chain[-1] + bridge = dict(proof='PROOF.md', representation='Exact powers with source-bound finite overcharges', + semantic=dict(G=dict(base=2, exponent=30000), E=dict(base=2, exponent=100000), B_upper=dict(base=2, exponent=100001), + C0=dict(base=2, exponent=210000), C1=1, strict_literal_gap=1, induction_gap_lower=1), + rows=dict(coefficient=20161, degree=10**6, suffix_slope=4 * 10**6, degree_gap=Q(10**6) - Q(51 * 20161, 25))) + q = bit * (1 - 2 * eta); mn = (1 - eta) * q / (1 + q); t = mn * 10**18; k = Q((t.numerator - 1) // t.denominator, 10**18) + asm = outer.assembly(bit, b, bridge, k, eta=eta, beta=beta) + assert len(asm['strict_constraints']) == 47 and min(asm['strict_constraints'].values()) > 0 + try: + outer.assembly(bit, b, bridge, k + grid, eta=eta, beta=beta); raise SystemExit('ADJACENT ADMITTED') + except AssertionError: pass + return k, binding + + +def price_word(c, **kw): + r = replay(c, **kw) + v, h, R = r['v'], r['h'], r['R']; m = 5 * h + resid = sum(h - r['sig'][x] for x in range(2 * v, 2 * v + R)) + T = 1 if resid % h == 0 else h + W = (4 * v * h + resid) * T // h; assert (4 * v * h + resid) * T % h == 0 + prof = Counter({j: T * k for j, k in profile(r['H'], v, h).items()}); mass = sum(a * b for a, b in prof.items()) + L_copy = h * r['ncopy'] + assert m * W - mass == T * (4 * v - 5 * L_copy), ('deficit', m * W - mass) + assert 2 * max(prof) < m + cc = coarse(prof, m, W) + return dict(c=cc, H=r['H'], prof=prof, W=W, T=T, resid=resid, m=m, deficit=m * W - mass, replay=r) + + +def phi_fn(m, W, a): + """linearized moment term per child of rank r (float), for search scoring""" + import math + return lambda r: r / (m * W) * math.exp(a * math.log(m / r)) diff --git a/research/r740-block-retimed-kernel/vendor/pr439/engines/base_two_moment.py b/research/r740-block-retimed-kernel/vendor/pr439/engines/base_two_moment.py new file mode 100644 index 0000000000..14a90fa0e7 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr439/engines/base_two_moment.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +"""Maintainer arithmetic cross-check of the pinned PR39 certificate. + +Uses no producer/checker imports. Counts are inputs, not proved by this script. +80-term rational logarithms and 12-term exponentials independently enclose +the two moments. The accompanying written review addresses their realization. +""" +import argparse +from fractions import Fraction as Q +from hashlib import sha256 +import json +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[1] +GRID = 10**30 + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def log_unit(x): + require(1 <= x <= 2, "logarithm range") + z = (x-1)/(x+1) + lo = 2*sum((z**(2*j+1)/(2*j+1) for j in range(80)), Q(0)) + return lo, lo+2*z**161/(161*(1-z*z)) + + +def log_bounds(x): + k = 0 + while x > 2: + x /= 2 + k += 1 + lo, hi = log_unit(x) + l2, u2 = log_unit(Q(2)) + lo, hi = lo+k*l2, hi+k*u2 + # Outward rational rounding keeps later certificates compact. + return Q((lo*GRID).__floor__(), GRID), Q((hi*GRID).__ceil__(), GRID) + + +def exp_bounds(x): + require(0 <= x < 1, "exponential range") + term = total = Q(1) + for j in range(1, 13): + term *= x/j + total += term + tail = term*x/13/(1-x/14) + return total, total+tail + + +def moment(m, W, entries, saving): + lo = hi = Q(0) + for t, count in entries: + t, count = int(t), int(count) + require(0 < t < m and count > 0, "improper child") + l, u = log_bounds(Q(m, t)) + lower = exp_bounds(saving*l)[0] + upper = exp_bounds(saving*u)[1] + lo += Q(t*count, m*W)*lower + hi += Q(t*count, m*W)*upper + return Q((lo*GRID).__floor__(), GRID), Q((hi*GRID).__ceil__(), GRID) + diff --git a/research/r740-block-retimed-kernel/vendor/pr439/engines/moment.py b/research/r740-block-retimed-kernel/vendor/pr439/engines/moment.py new file mode 100644 index 0000000000..7d697cb452 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr439/engines/moment.py @@ -0,0 +1,113 @@ +"""Independent prospective ordinary five-stage cost, never supplier admission. + +Consumes a raw one-invocation ledger made from the actual source/internal/target +paths. No packed profile is used as an input. Missing physical/finite/compiler +obligations must remain explicit in the accompanying report. +""" +from collections import Counter +from decimal import Decimal, localcontext, ROUND_FLOOR +from fractions import Fraction as F +from functools import lru_cache +from math import factorial +import hashlib, json, sys +from pathlib import Path + +DYAD = 1 << 224 + +def floor(x): return F(x.numerator*DYAD//x.denominator, DYAD) +def ceil(x): return -floor(-x) + +@lru_cache(None) +def logarithm(x): + """Mercator bounds after binary reduction; ln(2) via two Mercator sums. + + For 1 <= y < 2, log(y) is an alternating series in z=y-1. + We instead reduce to 1 <= y < 3/2, and bound log(3/2) and + log(2) by the same alternating series at z=1/2 and z=1/3, + using log(2)=log(3/2)+log(4/3). All sums are exact rationals. + """ + assert x >= 1 + k = 0 + while x >= 2: x /= 2; k += 1 + j = int(x >= F(3, 2)) + if j: x /= F(3, 2) + def mercator(y): + z=y-1 + assert 0 <= z <= F(1,2) + # An even partial sum is below log; the next term bounds its tail. + t=z; s=F(0) + for n in range(1, 225): + s += (t if n & 1 else -t)/n + t *= z + return s, s+t/225 + a,b=mercator(x); c,d=mercator(F(3,2)); e,f=mercator(F(4,3)) + return floor(a+(k+j)*c+k*e), ceil(b+(k+j)*d+k*f) + +def exponential(l,u): + assert 0 <= l <= u < F(1,10) + def poly(x): + s=t=F(1) + for j in range(1,25): t=t*x/j; s+=t + return s,t + lo,_=poly(l);hi,last=poly(u) + return floor(lo),ceil(hi+last*u/25/(1-u/26)) + +def moment(H,m,W,a,bad=False): + lo=hi=F(0) + for r,n in H.items(): + assert 0 < r < m and n > 0 + l,u=logarithm(F(m,r)); e,f=exponential(a*l,a*u) + p=F(r*n,m*W);lo+=p*e;hi+=p*f + if bad: + # Existing envelope shape, only conditionally portable to the new cover. + l,u=logarithm(F(m));e,f=exponential(a*l,a*u) + p=F(32*m*sum(H.values()),10**16*W) + lo+=p*e;hi+=p*f + return floor(lo),ceil(hi) + +def decimal(x): + with localcontext() as c: + c.prec=70 + return str(Decimal(x.numerator)/Decimal(x.denominator)) + +def certify(H,m,W,bad=False): + with localcontext() as c: + c.prec=70 + terms=[(Decimal(r*n)/Decimal(m*W),(Decimal(m)/Decimal(r)).ln()) for r,n in H.items()] + fallback=Decimal(32*m*sum(H.values()))/Decimal(10**16*W) if bad else Decimal(0) + lm=Decimal(m).ln();lo=Decimal(0);hi=Decimal('.003') + for _ in range(210): + a=(lo+hi)/2 + if sum(p*(a*l).exp() for p,l in terms)+fallback*(a*lm).exp()<1:lo=a + else:hi=a + q=int(((lo+hi)/2*10**24).to_integral_value(rounding=ROUND_FLOOR)) + lo=F(q,10**24);hi=lo+F(1,10**24) + lv=moment(H,m,W,lo,bad);hv=moment(H,m,W,hi,bad) + assert lv[1]<10 for v in slacks.values()),{k:str(v) for k,v in slacks.items() if v<=0} + assert min(margins.values())==minimum + assert margins['balanced_prefix']-minimum==eta and 1-eps-r==eta/2 + assert 1-eps*(1+c)==eta-eps*eta/4 + return dict(parameters=dict(a_bit=a,a_complex=b,tau=tau,sigma=sigma, + eta=eta,beta=beta,q=q,c=c,epsilon=eps,lambda_=lam, + lambda_prime=lp,alpha_squared_power=r,delta=delta, + C0=bridge['semantic']['C0'],C1=1,kappa=kappa), + strict_constraints=slacks,margins=margins,minimum_margin=minimum, + absorption_gap=minimum-kappa, + recurrence=dict(internal=internal,leaf=leaf,reservations=1-c)) diff --git a/research/r740-block-retimed-kernel/vendor/pr439/tile_m.py b/research/r740-block-retimed-kernel/vendor/pr439/tile_m.py new file mode 100644 index 0000000000..cd5fd9b539 --- /dev/null +++ b/research/r740-block-retimed-kernel/vendor/pr439/tile_m.py @@ -0,0 +1,93 @@ +"""Residual census (8 - sigma per helper) and an exact zero-padding bank tiling of width m = (2K+1)h with T replicas: +tile() and economy_tile() verbatim from our PR #329 bank_template.py (via code/tile.py of our dtst3 package). +usage: tile_m.py WORD.json.gz M [replicas] (replicas default: the least T with T x residual sum = 0 mod M that tiles)""" +import sys,os,collections +from collections import Counter +sys.path.insert(0,os.path.dirname(os.path.abspath(__file__))) +from e8core import * +def economy_tile(blocks, m): + """Exact zero-padding tiling used when the filler search of tile() runs out of filler blocks (the kernel pivots + and early restorations of the stage stack add many residual widths that do not divide m; the PR #299 analogue at + p = 12 was the (r^4, 24, 4^(24-r)) re-tiling). The fillers are the two most numerous widths dividing m (here the + full helper width h and the rank-4 entrance residual). Each other width w, in decreasing order, gets the bank + w^a F^c f^b (w*a + F*c + f*b = m) that spends the fewest narrow fillers f per w block (then the largest a), plus + at most one bank w^r F^c' f^b' for the remainder r = n mod a. The leftover fillers fill pure banks F^(m/F), + f^(m/f) and y residue banks F^j f^k. Every bank sums to m and every block is used exactly once (no padding).""" + from fractions import Fraction + blocks = {w: n for w, n in blocks.items() if n} + div = sorted((w for w in blocks if m % w == 0), key=lambda w: (-blocks[w], w)) + assert len(div) >= 2, ('economy tiling needs two filler widths', blocks) + F, f = sorted(div[:2], reverse=True) + + def fill(rest): + """(c, b) with F*c + f*b = rest, c maximal (fewest narrow fillers); None if impossible.""" + return next(((c, (rest - F*c)//f) for c in range(rest//F, -1, -1) if (rest - F*c) % f == 0), None) + + left = {F: blocks[F], f: blocks[f]}; out = [] + for w in sorted((x for x in blocks if x not in (F, f)), reverse=True): + n = blocks[w] + opts = [(Fraction(cb[1], a), -a, a, cb) for a in range(m//w, 0, -1) for cb in [fill(m - w*a)] if cb] + assert opts, ('no bank for width', w) + _, _, a, (c, b) = min(opts); q, r = divmod(n, a) + if q: out.append(((w,)*a + (F,)*c + (f,)*b, q)); left[F] -= q*c; left[f] -= q*b + if r: + cb = fill(m - w*r); assert cb, ('no remainder bank', w, r) + out.append(((w,)*r + (F,)*cb[0] + (f,)*cb[1], 1)); left[F] -= cb[0]; left[f] -= cb[1] + assert left[F] >= 0 and left[f] >= 0, ('fillers exhausted', left) + pF, pf = m//F, m//f + for y in range((pF*pf) + 1): + for j in range(1 if y else 0, pF if y else 1): + if (m - F*j) % f: continue + k = (m - F*j)//f; aF, af = left[F] - y*j, left[f] - y*k + if aF >= 0 and af >= 0 and aF % pF == 0 and af % pf == 0: + out += ([((F,)*j + (f,)*k, y)] if y else []) + ([((F,)*pF, aF//pF)] if aF else []) + ([((f,)*pf, af//pf)] if af else []) + return out + raise AssertionError(('no exact zero-padding tiling', blocks, m)) + + +def tile(blocks, m): + """Exact tiling of {width: number of blocks} into banks of total width m, as ((widths, banks), ...). + + A width dividing m fills pure banks. A width w not dividing m is mixed with a filler width f dividing m: + banks w^a f^b with a maximal (w*a + f*b = m), then at most one bank w^r f^t for the remainder r. Fillers + are tried in a fixed order (most blocks first) with backtracking until every pure width also divides out. + Fails (AssertionError) unless every block is used and every bank is full; there is no padding.""" + blocks = {w: n for w, n in blocks.items() if n} + assert all(0 < w <= m for w in blocks) + mixed = sorted(x for x in blocks if m % x) + + def search(i, left, out): + if i == len(mixed): + if any(left[w] % (m // w) for w in left): return None + return out + [(tuple([w]*(m // w)), left[w]//(m // w)) for w in sorted(left) if left[w]] + w = mixed[i]; n = blocks[w] + for f in sorted(left, key=lambda x: (-left[x], x)): + a = next((a for a in range(m // w, 0, -1) if (m - w*a) % f == 0), None) + if a is None: continue + b = (m - w*a)//f; q, r = divmod(n, a) + if r and (m - w*r) % f: continue + t = (m - w*r)//f if r else 0 + if q*b + t > left[f]: continue + rest = dict(left); rest[f] -= q*b + t + found = search(i + 1, rest, out + ([(tuple([w]*a + [f]*b), q)] if q else []) + ([(tuple([w]*r + [f]*t), 1)] if r else [])) + if found is not None: return found + return None + out = search(0, {w: n for w, n in blocks.items() if not m % w}, []) + if out is None: out = economy_tile(blocks, m) + assert all(sum(widths) == m and count > 0 for widths, count in out) + used = Counter() + for widths, count in out: + for x in widths: used[x] += count + assert used == Counter(blocks), 'every block used exactly once' + return tuple(out) +if __name__ == '__main__': + c = load_word(sys.argv[1]); m = int(sys.argv[2]) + L = Lat(c['lines']); M = to_masks(c, L); v = c['v']; n = 2 * v + c['R'] + res = Counter(8 - L.dim(M[c['start'][r]]) for r in range(2 * v, n)); tot = sum(k * x for k, x in res.items()) + reps = [int(sys.argv[3])] if len(sys.argv) > 3 else [t for t in range(1, 200) if t * tot % m == 0] + for T in reps: + try: pat = tile({r: T * k for r, k in res.items() if r > 0}, m); break + except AssertionError: pat = None + assert pat, 'no tiling' + print(' residual census', dict(sorted(res.items())), 'sum', tot) + print(' PASS exact width-%d tiling with %d replicas: %d banks' % (m, T, sum(k for _, k in pat)), pat) diff --git a/research/r740-block-retimed-kernel/verify.py b/research/r740-block-retimed-kernel/verify.py new file mode 100644 index 0000000000..36a698beaa --- /dev/null +++ b/research/r740-block-retimed-kernel/verify.py @@ -0,0 +1,50 @@ +"""Verify the selected two-supplier composition using Python's standard library.""" +import argparse,gzip,hashlib,json,os,shutil,subprocess,sys +from pathlib import Path +assert __debug__, 'Assertions must remain enabled' +ROOT=Path(__file__).resolve().parent +ap=argparse.ArgumentParser(description=__doc__) +ap.add_argument('output',type=Path,help='A new output directory outside this package') +ap.add_argument('--replay-phases',action='store_true',help='Recompute all selected Gaussian phase pairs instead of reusing their source-bound evidence') +a=ap.parse_args();out=a.output.resolve() +assert not out.exists() and not out.is_relative_to(ROOT) +def snapshot(): + return {p.relative_to(ROOT).as_posix():hashlib.sha256(p.read_bytes()).hexdigest() for p in ROOT.rglob('*') if p.is_file() and p.name!='MANIFEST.json'} +manifest=json.loads((ROOT/'MANIFEST.json').read_text());assert snapshot()==manifest['files'],'Source manifest mismatch' +sources=json.loads((ROOT/'SOURCES.json').read_text()) +for z in sources['imported_files']: + data=(ROOT/z['path']).read_bytes();assert hashlib.sha256(data).hexdigest()==z['sha256'] + if 'source_sha256' in z:assert hashlib.sha256(gzip.decompress(data)).hexdigest()==z['source_sha256'] +out.mkdir(parents=True) +def copy(src,dst): + p=out/dst;p.parent.mkdir(parents=True,exist_ok=True) + data=(ROOT/src).read_bytes();p.write_bytes(gzip.decompress(data) if src.endswith('.gz') and not dst.endswith('.gz') else data) +for src,dst in [ + ('inputs/e8-r865.json.gz','work/pr370-source/research/e8-bit/data/bit/bitE8-r865.json.gz'), + ('inputs/complex-ports.json.gz','work/higher-stage-e8/verified/gcert1-e8-retimed.json.gz'), + ('inputs/complex-template.json.gz','work/complex-nine-native/GLOBAL-TEMPLATE.json.gz'), + ('inputs/complex-data-phases.json.gz','work/complex-nine-native/DATA-PHASES.json'), + ('inputs/bit-geometry.json.gz','inherited/bit-geometry.json.gz'), + ('vendor/clifford_exact.py','work/odd-stages/clifford_exact.py')]:copy(src,dst) +for name in ('moment','base_two_moment','outer'):copy('vendor/engines/'+name+'.py','work/pr361/code/engines/'+name+'.py') +p=out/'bit426-source-centres';p.mkdir() +env=dict(os.environ,E8_OUTPUT=str(out),E8_REPLAY_PHASES=str(int(a.replay_phases)),PYTHONDONTWRITEBYTECODE='1');env.pop('PYTHONOPTIMIZE',None) +steps=[] +def run(name,file,*args): + with (out/(name+'.log')).open('w') as log: + r=subprocess.run([sys.executable,'-B',str(ROOT/file),*map(str,args)],cwd=out,env=env,stdout=log,stderr=subprocess.STDOUT) + assert r.returncode==0,(name,str(out/(name+'.log'))) + steps.append(name);print('PASS',name,flush=True) +run('hamming_packets','vendor/hamming_packets.py') +for name in ('complex_construct','complex_audit','complex_emit','complex_phases','bit_construct','bit_kernel'):run(name,'code/'+name+'.py') +run('bit_export','vendor/export_records.py',p/'bit-source-centres.json',p/'records') +run('bit_global','code/bit_global.py','--source',p,'--local-check',p,'--out',p/'global') +run('bit_audit','code/bit_audit.py','--local-check',p,'--out',p/'global') +for name in ('bit_price','complex_integrate','complex_replay','combined'):run(name,'code/'+name+'.py') +run('independent_audit','code/independent_audit.py',ROOT,out,out/'INDEPENDENT-AUDIT.json') +assert snapshot()==manifest['files'],'Package modified during verification' +r=json.loads((out/'RESULT.json').read_text());expected=json.loads((ROOT/'EXPECTED.json').read_text()) +for key,value in expected.items():assert r[key]==value,(key,r[key],value) +r['verification_steps']=steps;r['phase_mode']='full replay' if a.replay_phases else 'source-bound unchanged evidence';r['manifest_sha256']=hashlib.sha256((ROOT/'MANIFEST.json').read_bytes()).hexdigest() +(out/'RESULT.json').write_text(json.dumps(r,indent=2)+'\n') +print('PASS conditional kappa',r['kappa_decimal'])