diff --git a/.gitattributes b/.gitattributes index 6825630198..782eb48e2b 100644 --- a/.gitattributes +++ b/.gitattributes @@ -18,3 +18,5 @@ research/coordinated-frames-and-entrance-banks/** -text -whitespace # Frozen PR210 package and round-nine evidence retain their audited bytes. research/five-stage-source527-banks/** -text -whitespace research/community-round9-audit/** -text -whitespace + +research/e8-early-reset-reuse/** -text diff --git a/.github/workflows/early-reset-reuse.yml b/.github/workflows/early-reset-reuse.yml new file mode 100644 index 0000000000..ad7aeacfde --- /dev/null +++ b/.github/workflows/early-reset-reuse.yml @@ -0,0 +1,20 @@ +name: Verify early reset and kernel composition +on: [push, pull_request] +jobs: + verify: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python: ['3.11', '3.14'] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + - run: python -B research/e8-early-reset-kernel/verify.py "$RUNNER_TEMP/early-reset-reuse" + - uses: actions/upload-artifact@v4 + if: always() + with: + name: early-reset-reuse-${{ matrix.python }} + path: ${{ runner.temp }}/early-reset-reuse diff --git a/.github/workflows/eleven-hosting-selected.yml b/.github/workflows/eleven-hosting-selected.yml new file mode 100644 index 0000000000..05c70a08d3 --- /dev/null +++ b/.github/workflows/eleven-hosting-selected.yml @@ -0,0 +1,20 @@ +name: Verify eleven-stage hosting-selected kernel +on: + pull_request: + push: +jobs: + verify: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.11', '3.14'] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - run: python -m pip install sympy + - run: python -B research/e8-eleven-hosting-selected/verify.py "$RUNNER_TEMP/eleven-hosting-selected" + env: + PYTHONINTMAXSTRDIGITS: '0' + PYTHONDONTWRITEBYTECODE: '1' diff --git a/.github/workflows/hosting-selected-kernel.yml b/.github/workflows/hosting-selected-kernel.yml new file mode 100644 index 0000000000..e84e761482 --- /dev/null +++ b/.github/workflows/hosting-selected-kernel.yml @@ -0,0 +1,19 @@ +name: Verify hosting-selected kernel +on: + pull_request: + push: +jobs: + verify: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.11', '3.14'] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - run: python -B research/e8-hosting-selected-kernel/verify.py "$RUNNER_TEMP/hosting-selected-kernel" + env: + PYTHONINTMAXSTRDIGITS: '0' + PYTHONDONTWRITEBYTECODE: '1' diff --git a/.github/workflows/joint-frame-retiming.yml b/.github/workflows/joint-frame-retiming.yml new file mode 100644 index 0000000000..eb5bbd2044 --- /dev/null +++ b/.github/workflows/joint-frame-retiming.yml @@ -0,0 +1,20 @@ +name: Verify joint B-phase frame retiming +on: [push, pull_request] +jobs: + verify: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python: ['3.11', '3.14'] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + - run: python -B research/e8-joint-frame-retiming/verify.py "$RUNNER_TEMP/joint-frame-retiming" --replay-phases + - uses: actions/upload-artifact@v4 + if: always() + with: + name: joint-frame-retiming-${{ matrix.python }} + path: ${{ runner.temp }}/joint-frame-retiming diff --git a/.github/workflows/r740-idle-hosting.yml b/.github/workflows/r740-idle-hosting.yml new file mode 100644 index 0000000000..f70df7106c --- /dev/null +++ b/.github/workflows/r740-idle-hosting.yml @@ -0,0 +1,20 @@ +name: Verify R740 idle-data hosting composition +on: [push, pull_request] +jobs: + verify: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python: ['3.11', '3.14'] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + - run: python -B research/e8-r740-idle-hosting/verify.py "$RUNNER_TEMP/r740-idle-hosting" + - uses: actions/upload-artifact@v4 + if: always() + with: + name: r740-idle-hosting-${{ matrix.python }} + path: ${{ runner.temp }}/r740-idle-hosting diff --git a/.github/workflows/rank138-idle-hosting.yml b/.github/workflows/rank138-idle-hosting.yml new file mode 100644 index 0000000000..1aaa2ddfee --- /dev/null +++ b/.github/workflows/rank138-idle-hosting.yml @@ -0,0 +1,19 @@ +name: Verify rank138 idle-data hosting +on: + pull_request: + push: +jobs: + verify: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.11', '3.14'] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - run: python -B research/e8-rank138-idle-hosting/verify.py "$RUNNER_TEMP/rank138-hosting" + env: + PYTHONINTMAXSTRDIGITS: '0' + PYTHONDONTWRITEBYTECODE: '1' diff --git a/.github/workflows/split-centres-global.yml b/.github/workflows/split-centres-global.yml new file mode 100644 index 0000000000..1adf7dc2ea --- /dev/null +++ b/.github/workflows/split-centres-global.yml @@ -0,0 +1,23 @@ +name: Split-centres global kappa +on: + pull_request: + paths: + - 'research/split-centres-global/**' + - '.github/workflows/split-centres-global.yml' + push: + paths: + - 'research/split-centres-global/**' + - '.github/workflows/split-centres-global.yml' + workflow_dispatch: +jobs: + verify: + runs-on: ubuntu-latest + strategy: + matrix: + python: ['3.11', '3.14'] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python }} + - run: python -B research/split-centres-global/verify.py "$RUNNER_TEMP/split-centres-check" diff --git a/research/e8-early-reset-kernel/EXPECTED.json b/research/e8-early-reset-kernel/EXPECTED.json new file mode 100644 index 0000000000..d469e00f62 --- /dev/null +++ b/research/e8-early-reset-kernel/EXPECTED.json @@ -0,0 +1,10 @@ +{ + "status": "PASS_CONDITIONAL_EARLY_RESET_KERNEL_ASSEMBLY", + "kappa": "226877503533617/200000000000000000", + "kappa_decimal": "0.001134387517668085", + "bit_lower": "227135162827151674463/200000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "bit_template_sha256": "1460e30dd4aec672be972a81b00e244ed4ab396c6b2d5058e761edc447896623", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f" +} diff --git a/research/e8-early-reset-kernel/LICENSE b/research/e8-early-reset-kernel/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-early-reset-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/e8-early-reset-kernel/MANIFEST.json b/research/e8-early-reset-kernel/MANIFEST.json new file mode 100644 index 0000000000..ed5e7bcc7a --- /dev/null +++ b/research/e8-early-reset-kernel/MANIFEST.json @@ -0,0 +1,89 @@ +{ + "files": { + "apply.py": "11eeac4b02521a3286160a87fdac080fefb11c25779d9eaec9f44b18d7b6c1ae", + "bit_audit.py": "f5d81ae080ee55d174feef6de2314113864a7e3e3d29c5559071c306edd2f272", + "bit_global.py": "50c76ed71ced48af2eacb8d8a91ab43dee035a3c818dcf85d0ad7e1ee032e5d9", + "bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "combined.py": "83ba7f8deda264c283176c564d9d93dc8948edae0a8e8ed216b48240b5f74c85", + "EXPECTED.json": "9a55f73c6a3dd2b06377cbca76299b6672071419ebfe901aff9054ccca4b727a", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "268f7fe8538d02bd8cc8f8b895d88035803fee05186ceb469204c7666190fbc7", + "PROOF.md": "4d7198ce615099b48013d23df6b8fa421428a78ce4de79e3757e8962e4d82a95", + "README.md": "cec5afd2670dcd994fb7c1f2b13cc5a6f8279b1843cd4e98180ec928d7018fe4", + "RESET12.json": "a310f1d3a8ec714e6dd12ec5364d16b9fa254527cf684b09dc1846d064e9b41c", + "RETIMING.json": "602d826e7bafd7faae4b0a7fd17be7d3edfd45f11a88f57ccd5b78e3f11c36f1", + "SELECTION.json": "b4b852b6286f5181fe58c3206a94426fae52acd246c0314eb8fca893f012a6f4", + "SOURCE.json": "cadea46917e4c63babc6dc33fe8acf90f8916fbb1599393326e5297fb251bdd3", + "source_span.py": "4772d177f37254c6f854af5ee3871aca193cfb24307a53c143c3bf517e56631e", + "VALIDATION.json": "3a1277872ee120060e3853b86bd4051369e1ddbc91baea993fdcc70643c8337c", + "verify.py": "16c07414bc956744dc93b8e35b642267ea9819be922b0d3e081c543fdbf92a70", + "local-evidence/ASSEMBLY-118.json": "3e610791f14777e6024adfe562175d51cd5dbeb2ce585f59d56d58092277bac1", + "local-evidence/ASSEMBLY.json": "7c3cc4b503e4cf0fd3e050be46ad0da183c5b1c490f4901245df944fd9d6194e", + "local-evidence/AUDIT-118.json": "cd37be4c487f924490c78052a36a8e091b261a7beb60f67f495779078f6ab906", + "local-evidence/AUDIT.json": "76a146a9123d8b653e6e46ff93f153653f9cefd0f5c3fdd264a59f1322110262", + "local-evidence/BIT-PRICE-118.json": "97e29c84202255a6468bb0444f3438910e7ab4e19bbadb89636ede78376a9306", + "local-evidence/BIT-PRICE.json": "9a4a320cab1ce62b0c2329ac1bf3b81f73580fd603a406e4bfaae2962dfdad35", + "local-evidence/fill160-35-subsets.json": "98917ba575fd1200d9b57d0ecf9a4d68bdec15ad29929db52c4f127ef7633dd6", + "local-evidence/fill160-changed-assembly.json": "9a3f1c219d93dc27744a89018722b2bc82f96a3ba58fb8557804d30ba62b051d", + "local-evidence/fill160-initial314-storage-archive.json": "0f55a49b2c3b65865fbc13ff3629096de0c6969e6c230389d90d9d42a9641f43", + "local-evidence/fill160-initial314-storage-failure.json": "d3c7133ac8fbd8acec584f7f04caea693aaa9e2dbb4b0cefb37e9eeaf477752b", + "local-evidence/fill160-packaging-failure.json": "bb0a5af0c10f33271d0ba6b6a731cab960ea5def6ac7208f59b94677ba6644e4", + "local-evidence/fill160-tested-manifest.json": "8fb34d3d7d9819b915a7b734d63b18772c30b1312e89e1e96b8731ce90dd731f", + "local-evidence/fill160-verification-provenance.json": "68e74e0dc8ed940a6a6a3f1bc0df1b4277cbcabd222628004a6a9270a30310e8", + "local-evidence/FULL-PYTHON311.json": "62b37525bf7b60c0d9101ed571681f3bf46ea75df065939864307e4986018332", + "local-evidence/FULL-PYTHON314.json": "85797531db037d06fb597a4c9b6ef6bd71e6a0ab4f220ae70b1b6bf3aeda205f", + "local-evidence/full118-python311.json": "368b3d851919f77e6865b51cec731fc5bd0f16e0bd494fbaa2df5b57b9342d1c", + "local-evidence/full118-python314.json": "2bb62d9bc89834463959ce755f886e58793ded811dba26b038c20626ef90c814", + "local-evidence/GLOBAL-118.json": "a7491dfd2ff51d0574a6e46e3b100531969219dc41d93afbaca38ee3afbfa7e7", + "local-evidence/GLOBAL.json": "16c4e829eea1b2d12b70cec7e6a9c0e33ea0eae98a40894a3b779790fd2efbb3", + "local-evidence/reset12-reconstruction.json": "178f9fef29a4f7e18c9a3abebf455bb7c0545a85e2bdfdda6d6def5afc8f9239", + "local-evidence/reset12-retimed-assembly.json": "a54ca18bca34c7407872dded5402b463be2c76bab271248e519bbd0492b3f575", + "local-evidence/reset12-tested-manifest.json": "ad6b66aba41895ac66bd8e988717ab2e16ca974f93a6fa309c50de0b09f1a28e", + "local-evidence/reset12-verification-provenance.json": "7c56f467e0e6de0549c37f2b37023f10b46209a0c71f03d1da818368882971f2", + "local-evidence/SOURCE-SPANS-118.log": "115ea64de78aaa3ea6edc9684f66f9ec6f88c806608caf85ae32853059c14f37", + "local-evidence/SOURCE-SPANS.log": "bdf95dbce8337be57aab8a3d3b42a711ee276496c40cbb4c5356fc9cc9b2e811", + "local-evidence/VALIDATION-110-ENTRIES.json": "77ad775cf69f5d913568b6276b0dfeb2eaef0306f57b71c0a467bff793807267", + "vendor/kernel417/e8core.py": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29", + "vendor/kernel417/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/kernel417/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "vendor/kernel417/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/kernel417/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/kernel417/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "local-evidence/fill160-python311/export.log": "9e4b041b2e8a963dc2add4c83531030c5984a7fde15384aa773fd88e285fa0a3", + "local-evidence/fill160-python311/finite-assembly.log": "282740a9cfd2570265b59855b5e1f4c5136969f18d075653316d50e8e0a8d6ae", + "local-evidence/fill160-python311/full-early-reuse434.log": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6", + "local-evidence/fill160-python311/global-program.log": "f19c51b1dcbd8c59ba973d0bb4e11453a069f8f15ad7247f99ce0d2dbf88581d", + "local-evidence/fill160-python311/independent-audit.log": "3a92a656a9fbddb0af95935f9b80b16969e92613335a946ddad70fa1d0c64a55", + "local-evidence/fill160-python311/integer-source-spans.log": "9cf4d31f2941a5bbecaca75562bb7d45b2770228d605fbda9f9291d97955bd49", + "local-evidence/fill160-python311/kernel-reconstruction.log": "cd88170488b9ccf42b83160b2c4f906e1168ab0b75a75a6fd5a297d61a7e7f2c", + "local-evidence/fill160-python311/RESULT.json": "897b8a05ef5ec2e1631657f1199d998c6c1eba659cbdd274a552462ca62ba377", + "local-evidence/fill160-python311/two-moments.log": "0bb045a48dfe657d47aec493e632f4c3134b47f5598dd525cb102d21b7b43c2d", + "local-evidence/fill160-python314/export.log": "9e4b041b2e8a963dc2add4c83531030c5984a7fde15384aa773fd88e285fa0a3", + "local-evidence/fill160-python314/finite-assembly.log": "282740a9cfd2570265b59855b5e1f4c5136969f18d075653316d50e8e0a8d6ae", + "local-evidence/fill160-python314/full-early-reuse434.log": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6", + "local-evidence/fill160-python314/global-program.log": "eb30fd19c5707570c1cb33586e513f6a0b03ed2aece03a97ea1b4fcbce9be729", + "local-evidence/fill160-python314/independent-audit.log": "8d5f85d6ddc0c4f662bc4c7aa010eba3f96cd544a5f2f3b2b55c22cf116f0596", + "local-evidence/fill160-python314/integer-source-spans.log": "9cf4d31f2941a5bbecaca75562bb7d45b2770228d605fbda9f9291d97955bd49", + "local-evidence/fill160-python314/kernel-reconstruction.log": "cd88170488b9ccf42b83160b2c4f906e1168ab0b75a75a6fd5a297d61a7e7f2c", + "local-evidence/fill160-python314/RESULT.json": "ae1afa02667b3986bb72bdff4bc6f5fc7b891a27af90ec6c61e1c43f862e8c0a", + "local-evidence/fill160-python314/two-moments.log": "0bb045a48dfe657d47aec493e632f4c3134b47f5598dd525cb102d21b7b43c2d", + "local-evidence/reset12-python311/export.log": "d4ea7999a985f7287ace0551ca025d99c304cb78cbc30eee6223585ed9af109f", + "local-evidence/reset12-python311/finite-assembly.log": "8b5598ec4d2b0dfadde4ae6f3dbe913b6e213937db89b485234c4d323fa38db8", + "local-evidence/reset12-python311/full-early-reuse434.log": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6", + "local-evidence/reset12-python311/global-program.log": "bea6486730cae31b0e9de7b4c20de1786a4aa2ff54831f3e6f3c4b5347a0e608", + "local-evidence/reset12-python311/independent-audit.log": "a1443ac2d80c54dc2f3fb6e500a05e4e2598624314a665581d1ca059e4d14e53", + "local-evidence/reset12-python311/integer-source-spans.log": "7e45fe477c18d80a06f9cbd2655394950953ad8c9cc12e7d512bd1d39c890126", + "local-evidence/reset12-python311/kernel-reconstruction.log": "14e8624214481449cc954f2490f8873de6e033f990b1e945acf466ff92077616", + "local-evidence/reset12-python311/RESULT.json": "8cb22e90ae44fcb3977187f132ffcc08a1c426a6bb43a97ecfa37cedfc931e7d", + "local-evidence/reset12-python311/two-moments.log": "c866854ad55093f6feb992efced66f2cd2a1076cb7c9374fdb22565f3d2eaf82", + "local-evidence/reset12-python314/export.log": "d4ea7999a985f7287ace0551ca025d99c304cb78cbc30eee6223585ed9af109f", + "local-evidence/reset12-python314/finite-assembly.log": "8b5598ec4d2b0dfadde4ae6f3dbe913b6e213937db89b485234c4d323fa38db8", + "local-evidence/reset12-python314/full-early-reuse434.log": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6", + "local-evidence/reset12-python314/global-program.log": "52fd486807379dc18d48e24cc0ebdc21a03c57847a4f1be478463caa41d05ecf", + "local-evidence/reset12-python314/independent-audit.log": "9851de62a8b18ef2e34ef94aa1d31d1c69748b59c44e5909cc7ae26b83091d43", + "local-evidence/reset12-python314/integer-source-spans.log": "7e45fe477c18d80a06f9cbd2655394950953ad8c9cc12e7d512bd1d39c890126", + "local-evidence/reset12-python314/kernel-reconstruction.log": "14e8624214481449cc954f2490f8873de6e033f990b1e945acf466ff92077616", + "local-evidence/reset12-python314/RESULT.json": "db6f8600d45da3dc50780c3e8ac1d86be4ae047ef32b03fc8619eddb0d660e5d", + "local-evidence/reset12-python314/two-moments.log": "c866854ad55093f6feb992efced66f2cd2a1076cb7c9374fdb22565f3d2eaf82" + } +} diff --git a/research/e8-early-reset-kernel/NOTICE.md b/research/e8-early-reset-kernel/NOTICE.md new file mode 100644 index 0000000000..a10bce204c --- /dev/null +++ b/research/e8-early-reset-kernel/NOTICE.md @@ -0,0 +1,3 @@ +Rohan Arun with substantial OpenAI Codex assistance. Apache-2.0. + +New contribution: composition of twelve early bit resets, 121 revalidated response-kernel relations and ten exact frame retimings. Earlier revisions combined eleven resets with 110 and then 118 relations. Chafik Boukhalfa/chafreaky #417 supplied the kernel principle and independent replay; #435 supplied the source selection and mixed-width bank implementation. icekylinx #433 supplied split centres and source-basis reuse; ai-nanachi #426 supplied clean-reset reuse; Zhihao Chen #425/#386, Dylan Crow #370 and Jacob Sussman supplied the inherited construction. All vendored notices and parent sources remain preserved. diff --git a/research/e8-early-reset-kernel/PROOF.md b/research/e8-early-reset-kernel/PROOF.md new file mode 100644 index 0000000000..0b1bc9e65e --- /dev/null +++ b/research/e8-early-reset-kernel/PROOF.md @@ -0,0 +1,15 @@ +# Composed response cancellation after early helper reuse + +First reconstruct the eleven early clean resets using the pinned earlier-reset package, including fresh compensation and cleanup. Apply the twelfth reset at position 1141: helper 460 is cleared using parents 455, 708 and 709 at frame 470 before aliasing logical helper 962 onto it. Recompute compensation and cleanup, with R746. Its exact all-column target response determines which remapped kernel relations remain valid. Retain a pivot p with entrance E and donors D only if response(p) equals the XOR of donor responses, E lies inside each participant's first frame, pivots and donors are disjoint, and each shared donor serves a single entrance. Omit entries invalidated by physical aliases, changed responses, or changed first frames. Choose total entrance rank divisible by eight for exact bank packing. + +Remove pivot columns from the initial zero-frame target compensation. Start each pivot at E, emit donor += pivot at E before the main word, and emit the inverse at the full frame after cleanup. The exact response relation cancels the omitted compensation. The entire composed program is replayed on all independent columns; the PR417/435 auditor additionally checks integer source-span legality. All unchanged rational frames and every nested/reflected transition are independently checked by the emitted-template audit. + +Residual helper width is 8 minus its entrance rank. With eight replicas, width-seven slots are packed eight at a time with one width-eight slot; width-four slots pack sixteen at a time; remaining width-eight slots pack eight at a time. Every bank is full, every owner disjoint, every helper slot is accounted for, and all 72 emitted local invocations are checked. The emitted histogram, physical stock, coefficient growth, finite cost invoice, two exact moment engines, six bootstrap levels and 47 outer inequalities are recomputed after all transformations. + +No separately reported numerical gains are added. The complex supplier is unchanged and all its phases are freshly replayed by the full wrapper. All-size compiler, dirty-bank, compressed-window, restored-work, tape/common-grid, precision and analytic interfaces remain conditional assumptions. No new Lean theorem or unconditional multiplication bound is claimed. + +## Frame retiming + +After response cancellation, flatten gates into the identical ordered primitive ADD sequence. Apply only the ten source-bound frame substitutions in RETIMING.json. Require the old frame at each unique phase/index, preserve every target/source pair and all other word fields, and bind the resulting byte hash. Independent integer source-span and global rational frame checks prove legality of the final word; the exact scalar replay proves its identity. Recompute transition histograms and all costs after retiming, rather than adding isolated gains. + +A remaining half-bank of width-four slots is completed with width-eight slots. Every slot keeps its exact residual width; the independent auditor checks full coverage and disjoint ownership, rather than relying on the packing algorithm. diff --git a/research/e8-early-reset-kernel/README.md b/research/e8-early-reset-kernel/README.md new file mode 100644 index 0000000000..2cd902e920 --- /dev/null +++ b/research/e8-early-reset-kernel/README.md @@ -0,0 +1,9 @@ +# Twelve early resets, response cancellation and frame retiming + +Conditional kappa = 0.001134387517668085. Twelve early resets reduce R758 to R746. Revalidating the response kernel after physical reuse leaves 121 entries with entrance rank 160 and 122 donor slots. Ten exact frame changes preserve the primitive ADD sequence. The 726 complete width-64 helper banks per stage give 14,214 live and 14,223 physical families. The final emitted program is repriced from scratch. + +Run `python -B research/e8-early-reset-kernel/verify.py /absolute/new/output` using the Python standard library. This freshly replays every upstream phase and the pinned eleven-reset construction, applies RESET12.json, SELECTION.json and RETIMING.json, and independently audits the complete result. + +Before this draft update, all changed scalar/frame/source-span checks, both global programs, independent bank audits, two moments and finite assembly passed. Packaged reconstruction reproduces the exact tested word and rejects eight mutated witnesses. The complete 121-entry construction passed full Python 3.11 and 3.14 replays at code commit f5e0af60ae91e39528d63782ac06f4c6f0e956e3. Both terminal receipts and their eight top-level logs are under local-evidence/fill160-python311 and fill160-python314. The initial 3.14 attempt failed on storage capacity; its failure and verified archive receipt are retained. GitHub CI remains pending. The previous 116-entry version passed both full wrappers at code commit 6a1c6a308429ea11f64b679df6abdf2bf40436b0, with receipts retained under local-evidence/reset12-python311 and reset12-python314. Historical 110-entry and 118-entry full Python 3.11/3.14 receipts remain explicitly bound to earlier source hashes. + +All-size interfaces remain conditional assumptions; no unconditional multiplication theorem or new Lean proof is claimed. diff --git a/research/e8-early-reset-kernel/RESET12.json b/research/e8-early-reset-kernel/RESET12.json new file mode 100644 index 0000000000..acee5ef6d3 --- /dev/null +++ b/research/e8-early-reset-kernel/RESET12.json @@ -0,0 +1,18 @@ +{ + "source_sha256": "98ffef9246c8bf6c537ab5e134321abea05cf0b7830c9e3fd92cbe4e88d8c308", + "word_sha256": "33fba385c1c69d6cbbe6c76e4d2eca9f69453a910f3c9e5e62f3e7b189510ded", + "entries": [ + { + "position": 1141, + "new_helper": 962, + "retired_helper": 460, + "parents": [ + 455, + 708, + 709 + ], + "frame": 470 + } + ], + "R": 746 +} diff --git a/research/e8-early-reset-kernel/RETIMING.json b/research/e8-early-reset-kernel/RETIMING.json new file mode 100644 index 0000000000..e1ba4641a4 --- /dev/null +++ b/research/e8-early-reset-kernel/RETIMING.json @@ -0,0 +1,139 @@ +{ + "status": "NOMINATION_NEEDS_EXACT_REPLAY", + "source_sha256": "23cb3f6f84283aec61f2c82d9a43884932edc133bdd3fcbb7ee8deee7d7b2d60", + "output_sha256": "5391ede2abb1db54715beb12b687572d8c2822dd46f461a4baf240c6c4412aee", + "tested_gates": 14163, + "candidate_evaluations": 448, + "changes": [ + { + "phase": "A", + "index": 1471, + "old_frame": 472, + "new_frame": 470, + "delta": { + "2": -1, + "1": 1, + "3": -1, + "4": 1 + }, + "score": -0.0009710109447872662 + }, + { + "phase": "A", + "index": 1474, + "old_frame": 473, + "new_frame": 469, + "delta": { + "2": -1, + "1": 1, + "3": -1, + "4": 1 + }, + "score": -0.0009710109447872662 + }, + { + "phase": "A", + "index": 1485, + "old_frame": 476, + "new_frame": 468, + "delta": { + "2": -1, + "1": 1, + "3": -1, + "4": 1 + }, + "score": -0.0009710109447872662 + }, + { + "phase": "A", + "index": 1488, + "old_frame": 477, + "new_frame": 467, + "delta": { + "2": -1, + "1": 1, + "3": -1, + "4": 1 + }, + "score": -0.0009710109447872662 + }, + { + "phase": "A", + "index": 1499, + "old_frame": 480, + "new_frame": 466, + "delta": { + "2": -1, + "1": 1, + "3": -1, + "4": 1 + }, + "score": -0.0009710109447872662 + }, + { + "phase": "A", + "index": 1502, + "old_frame": 481, + "new_frame": 465, + "delta": { + "2": -1, + "1": 1, + "3": -1, + "4": 1 + }, + "score": -0.0009710109447872662 + }, + { + "phase": "A", + "index": 1516, + "old_frame": 485, + "new_frame": 463, + "delta": { + "2": -1, + "1": 1, + "3": -1, + "4": 1 + }, + "score": -0.0009710109447872662 + }, + { + "phase": "A", + "index": 1529, + "old_frame": 489, + "new_frame": 461, + "delta": { + "2": -1, + "1": 1, + "3": -1, + "4": 1 + }, + "score": -0.0009710109447872662 + }, + { + "phase": "A", + "index": 1542, + "old_frame": 493, + "new_frame": 459, + "delta": { + "2": -1, + "1": 1, + "3": -1, + "4": 1 + }, + "score": -0.0009710109447872662 + }, + { + "phase": "A", + "index": 1622, + "old_frame": 515, + "new_frame": 458, + "delta": { + "2": -1, + "1": 1, + "3": -1, + "4": 1 + }, + "score": -0.0009710109447872662 + } + ] +} diff --git a/research/e8-early-reset-kernel/SELECTION.json b/research/e8-early-reset-kernel/SELECTION.json new file mode 100644 index 0000000000..18af4900ce --- /dev/null +++ b/research/e8-early-reset-kernel/SELECTION.json @@ -0,0 +1,1461 @@ +{ + "status": "PASS_LOCAL_RESPONSE_KERNEL_AND_FIRST_MOMENT", + "input_sha256": "33fba385c1c69d6cbbe6c76e4d2eca9f69453a910f3c9e5e62f3e7b189510ded", + "output_sha256": "23cb3f6f84283aec61f2c82d9a43884932edc133bdd3fcbb7ee8deee7d7b2d60", + "entries": [ + [ + [ + 2 + ], + 738, + [ + 257, + 736 + ] + ], + [ + [ + 2 + ], + 739, + [ + 256, + 737 + ] + ], + [ + [ + 1 + ], + 741, + [ + 250, + 740 + ] + ], + [ + [ + 1 + ], + 743, + [ + 248, + 742 + ] + ], + [ + [ + 0 + ], + 745, + [ + 244, + 744 + ] + ], + [ + [ + 0 + ], + 747, + [ + 242, + 746 + ] + ], + [ + [ + 4 + ], + 751, + [ + 779, + 835 + ] + ], + [ + [ + 4 + ], + 752, + [ + 268, + 750 + ] + ], + [ + [ + 4 + ], + 753, + [ + 269, + 779, + 835 + ] + ], + [ + [ + 5 + ], + 754, + [ + 820, + 900 + ] + ], + [ + [ + 5 + ], + 755, + [ + 272, + 820, + 900 + ] + ], + [ + [ + 1 + ], + 757, + [ + 248, + 756 + ] + ], + [ + [ + 0 + ], + 761, + [ + 242, + 760 + ] + ], + [ + [ + 7 + ], + 767, + [ + 287, + 765 + ] + ], + [ + [ + 1 + ], + 769, + [ + 248, + 768 + ] + ], + [ + [ + 1 + ], + 771, + [ + 249, + 770 + ] + ], + [ + [ + 0 + ], + 773, + [ + 242, + 772 + ] + ], + [ + [ + 0 + ], + 777, + [ + 762, + 763, + 776 + ] + ], + [ + [ + 4 + ], + 781, + [ + 269, + 779 + ] + ], + [ + [ + 2 + ], + 783, + [ + 257, + 782 + ] + ], + [ + [ + 4 + ], + 784, + [ + 750, + 868 + ] + ], + [ + [ + 4 + ], + 785, + [ + 268, + 750, + 868 + ] + ], + [ + [ + 0 + ], + 787, + [ + 241, + 786 + ] + ], + [ + [ + 0 + ], + 789, + [ + 748, + 749, + 788 + ] + ], + [ + [ + 0 + ], + 791, + [ + 762, + 763, + 790 + ] + ], + [ + [ + 5 + ], + 795, + [ + 275, + 793 + ] + ], + [ + [ + 2 + ], + 797, + [ + 257, + 796 + ] + ], + [ + [ + 2 + ], + 799, + [ + 256, + 798 + ] + ], + [ + [ + 0 + ], + 801, + [ + 748, + 749, + 800 + ] + ], + [ + [ + 0 + ], + 803, + [ + 241, + 802 + ] + ], + [ + [ + 0 + ], + 804, + [ + 762, + 776, + 790 + ] + ], + [ + [ + 0 + ], + 805, + [ + 763, + 776, + 790 + ] + ], + [ + [ + 7 + ], + 808, + [ + 284, + 806 + ] + ], + [ + [ + 4 + ], + 809, + [ + 269, + 807 + ] + ], + [ + [ + 7 + ], + 811, + [ + 764, + 766, + 810 + ] + ], + [ + [ + 4 + ], + 813, + [ + 268, + 812 + ] + ], + [ + [ + 0 + ], + 814, + [ + 776, + 790 + ] + ], + [ + [ + 0 + ], + 815, + [ + 762, + 763, + 776, + 790 + ] + ], + [ + [ + 0 + ], + 817, + [ + 241, + 816 + ] + ], + [ + [ + 0 + ], + 818, + [ + 748, + 800 + ] + ], + [ + [ + 0 + ], + 819, + [ + 749, + 800 + ] + ], + [ + [ + 5 + ], + 822, + [ + 272, + 820 + ] + ], + [ + [ + 5 + ], + 823, + [ + 275, + 821 + ] + ], + [ + [ + 3 + ], + 825, + [ + 263, + 824 + ] + ], + [ + [ + 5 + ], + 827, + [ + 274, + 826 + ] + ], + [ + [ + 0 + ], + 828, + [ + 762, + 790 + ] + ], + [ + [ + 0 + ], + 829, + [ + 763, + 790 + ] + ], + [ + [ + 0 + ], + 830, + [ + 748, + 788 + ] + ], + [ + [ + 0 + ], + 831, + [ + 749, + 788 + ] + ], + [ + [ + 0 + ], + 832, + [ + 786, + 802, + 816 + ] + ], + [ + [ + 0 + ], + 833, + [ + 241, + 786, + 802, + 816 + ] + ], + [ + [ + 7 + ], + 836, + [ + 283, + 834 + ] + ], + [ + [ + 4 + ], + 837, + [ + 269, + 835 + ] + ], + [ + [ + 2 + ], + 838, + [ + 736, + 782 + ] + ], + [ + [ + 2 + ], + 839, + [ + 257, + 736, + 782 + ] + ], + [ + [ + 4 + ], + 840, + [ + 750, + 812 + ] + ], + [ + [ + 4 + ], + 841, + [ + 268, + 750, + 812 + ] + ], + [ + [ + 1 + ], + 845, + [ + 250, + 844 + ] + ], + [ + [ + 1 + ], + 847, + [ + 249, + 846 + ] + ], + [ + [ + 5 + ], + 851, + [ + 275, + 849 + ] + ], + [ + [ + 2 + ], + 852, + [ + 736, + 796 + ] + ], + [ + [ + 2 + ], + 853, + [ + 257, + 736, + 796 + ] + ], + [ + [ + 2 + ], + 855, + [ + 256, + 854 + ] + ], + [ + [ + 5 + ], + 856, + [ + 896, + 924 + ] + ], + [ + [ + 5 + ], + 857, + [ + 792, + 794, + 896, + 924 + ] + ], + [ + [ + 1 + ], + 859, + [ + 250, + 858 + ] + ], + [ + [ + 1 + ], + 860, + [ + 756, + 768 + ] + ], + [ + [ + 1 + ], + 861, + [ + 248, + 756, + 768 + ] + ], + [ + [ + 4 + ], + 863, + [ + 779, + 807, + 835 + ] + ], + [ + [ + 4 + ], + 865, + [ + 269, + 779, + 807, + 835 + ] + ], + [ + [ + 3 + ], + 867, + [ + 263, + 866 + ] + ], + [ + [ + 4 + ], + 869, + [ + 268, + 868 + ] + ], + [ + [ + 1 + ], + 873, + [ + 249, + 872 + ] + ], + [ + [ + 1 + ], + 874, + [ + 742, + 768 + ] + ], + [ + [ + 1 + ], + 875, + [ + 248, + 742, + 768 + ] + ], + [ + [ + 5 + ], + 877, + [ + 793, + 821, + 849 + ] + ], + [ + [ + 5 + ], + 879, + [ + 275, + 793, + 821, + 849 + ] + ], + [ + [ + 7 + ], + 881, + [ + 764, + 766, + 880 + ] + ], + [ + [ + 5 + ], + 883, + [ + 274, + 882 + ] + ], + [ + [ + 1 + ], + 884, + [ + 844, + 858 + ] + ], + [ + [ + 1 + ], + 885, + [ + 250, + 844, + 858 + ] + ], + [ + [ + 5 + ], + 886, + [ + 900, + 928 + ] + ], + [ + [ + 5 + ], + 887, + [ + 272, + 900, + 928 + ] + ], + [ + [ + 1 + ], + 888, + [ + 742, + 756 + ] + ], + [ + [ + 1 + ], + 889, + [ + 248, + 742, + 756 + ] + ], + [ + [ + 4 + ], + 891, + [ + 779, + 807 + ] + ], + [ + [ + 4 + ], + 893, + [ + 269, + 779, + 807 + ] + ], + [ + [ + 2 + ], + 894, + [ + 782, + 796 + ] + ], + [ + [ + 2 + ], + 895, + [ + 257, + 782, + 796 + ] + ], + [ + [ + 5 + ], + 897, + [ + 792, + 794, + 896 + ] + ], + [ + [ + 4 + ], + 899, + [ + 267, + 898 + ] + ], + [ + [ + 5 + ], + 901, + [ + 272, + 900 + ] + ], + [ + [ + 2 + ], + 903, + [ + 254, + 902 + ] + ], + [ + [ + 2 + ], + 908, + [ + 737, + 798, + 854 + ] + ], + [ + [ + 2 + ], + 909, + [ + 256, + 737, + 798, + 854 + ] + ], + [ + [ + 3 + ], + 913, + [ + 260, + 912 + ] + ], + [ + [ + 2 + ], + 917, + [ + 254, + 916 + ] + ], + [ + [ + 7 + ], + 919, + [ + 286, + 766, + 810, + 880 + ] + ], + [ + [ + 7 + ], + 921, + [ + 286, + 764, + 810, + 880 + ] + ], + [ + [ + 4 + ], + 922, + [ + 750, + 812, + 868 + ] + ], + [ + [ + 4 + ], + 923, + [ + 268, + 750, + 812, + 868 + ] + ], + [ + [ + 5 + ], + 925, + [ + 792, + 794, + 924 + ] + ], + [ + [ + 5 + ], + 929, + [ + 272, + 928 + ] + ], + [ + [ + 7 + ], + 931, + [ + 284, + 930 + ] + ], + [ + [ + 0, + 3, + 5, + 6, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + 938, + [ + 932, + 933, + 937 + ] + ], + [ + [ + 0, + 1, + 2, + 3, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + 949, + [ + 941 + ] + ], + [ + [ + 0, + 2, + 5, + 7, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + 953, + [ + 942, + 944, + 951 + ] + ], + [ + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31 + ], + 958, + [ + 943, + 945, + 956 + ] + ], + [ + [ + 2, + 3, + 6, + 7, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + 961, + [ + 936 + ] + ], + [ + [ + 4, + 5, + 6, + 7, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + 977, + [ + 959, + 960, + 976 + ] + ], + [ + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ], + 957, + [ + 946, + 947, + 955 + ] + ], + [ + [ + 0, + 3, + 4, + 7, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ], + 940, + [ + 934, + 935, + 939 + ] + ], + [ + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + 985, + [ + 980, + 981, + 984 + ] + ], + [ + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + 983, + [ + 978, + 979, + 982 + ] + ], + [ + [ + 1, + 3, + 4, + 6, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87 + ], + 975, + [ + 966, + 967, + 974 + ] + ], + [ + [ + 1, + 3, + 5, + 7, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + 973, + [ + 964, + 965, + 972 + ] + ], + [ + [ + 2, + 3, + 4, + 5, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + 971, + [ + 962, + 963, + 970 + ] + ], + [ + [ + 4 + ], + 780, + [ + 267, + 778 + ] + ], + [ + [ + 4 + ], + 927, + [ + 267, + 926 + ] + ], + [ + [ + 0 + ], + 954, + [ + 748, + 788, + 800, + 952 + ] + ], + [ + [ + 2 + ], + 969, + [ + 736, + 782, + 796, + 968 + ] + ] + ], + "total_entrance_rank": 160, + "donor_slots": 122, + "new_frames": 0, + "local_profile": { + "1": 2513, + "4": 348, + "2": 1035, + "3": 305, + "5": 100, + "8": 9, + "7": 14 + }, + "global_profile": { + "1": 180936, + "4": 25056, + "2": 74520, + "3": 21960, + "5": 7200, + "8": 648, + "7": 6768, + "14": 3840, + "28": 3840, + "42": 3840 + }, + "live": 14214, + "banks_per_stage": 726, + "bit_price": { + "lower": "0.001135354535089790771576", + "upper": "0.001135354535089790771577", + "lower_endpoint_residual_upper": "-8.548335694866148998164615415032250912223710886323406059877458070763119E-25", + "upper_endpoint_residual_lower": "1.566226828423638972494652711781560665043879505851579328340343548520701E-24", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.001064731373656100383692181740837707613161887256965862322975023300859955", + "-0.001064731373656100383692181740837707613161887256965862322975023300785771" + ], + "nominal_k_ceiling_interval": [ + "0.001134066967015693979252496289123574698912653776417033406000436672389748", + "0.001134066967015693979253494022275748553200870406330178591441994047627837" + ] + }, + "rejected": [] +} diff --git a/research/e8-early-reset-kernel/SOURCE.json b/research/e8-early-reset-kernel/SOURCE.json new file mode 100644 index 0000000000..5b994b39a1 --- /dev/null +++ b/research/e8-early-reset-kernel/SOURCE.json @@ -0,0 +1,69 @@ +{ + "parent_pr": 434, + "parent_code_head": "50585107b561a170ccd2c6be09dbe90041ea7f6f", + "parent_manifest_sha256": "4d23bafa43634a59e25f875333408b67cbecb1c912929824b5d45dea4de51da7", + "kernel_source_pr": 435, + "kernel_source_head": "2c9c833ac8709402c37fc88a6a23393fb0d397fb", + "kernel_provenance": { + "head": "2c9c833ac8709402c37fc88a6a23393fb0d397fb", + "files": [ + { + "path": "research/split-centres-kernel/code/bit_audit.py", + "git_blob": "ce13906fe7473999b0ffc721f60fbf853645e371", + "sha256": "c94a1dd1c078deddbde088dc6291190977266009073c4cb4108f9e2faf898381" + }, + { + "path": "research/split-centres-kernel/code/bit_global.py", + "git_blob": "c8f37eb96eb13847fa157c574d7ab445edaae61c", + "sha256": "6d0eea0aaafbe90f1cdb43d7719ceb7b472fbbb6e6a7cb58bcfe82c31ac801c0" + }, + { + "path": "research/split-centres-kernel/code/bit_kernel.py", + "git_blob": "c0b7445f769713d0cd647c1e01f8befc39fffbd1", + "sha256": "14f164fcc0674f73163808a9d9762eb439ea130895f593cb78a6cafaed2dfb11" + }, + { + "path": "research/split-centres-kernel/code/combined.py", + "git_blob": "cead756a2c8fb52d6ba4cc7fe27200950d9a6b2c", + "sha256": "4f1f280b050e9aca659f10ad8996164e47f4e42fe4fd8631c822227413c427ae" + }, + { + "path": "research/split-centres-kernel/stages/kernel-selection.json", + "git_blob": "6426b40cde286df8894a4c7740e8cd5b520130d1", + "sha256": "87994a173608a930c83bfb35a05994f9681031f1b79df148cc2e2579fec9ef1f" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/LICENSE", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/e8core.py", + "git_blob": "f2874bae8ef044240211fd892afb457d13759c74", + "sha256": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/engines/base_two_moment.py", + "git_blob": "14a90fa0e788217856f070382c9e61bd7c603c61", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/engines/moment.py", + "git_blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/engines/outer.py", + "git_blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/stages.py", + "git_blob": "9ef95d52f4b2ba0389bb2edb15228da698dd75f4", + "sha256": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668" + } + ] + }, + "scope": "Twelve early resets, 121 revalidated response relations and ten frame retimings, all repriced on the final emitted word.", + "composition_update": "The previous 118-entry R747 word is historical. An additional chronological reset gives R746; filter/remap response relations to entrance rank 160, then apply ten frame changes with unchanged primitive ADD order." +} diff --git a/research/e8-early-reset-kernel/VALIDATION.json b/research/e8-early-reset-kernel/VALIDATION.json new file mode 100644 index 0000000000..7c2b61679a --- /dev/null +++ b/research/e8-early-reset-kernel/VALIDATION.json @@ -0,0 +1,10 @@ +{ + "status": "PASS_FULL_WRAPPER_PYTHON311_AND_314", + "kappa": "0.001134387517668085", + "entries": 121, + "total_entrance_rank": 160, + "R": 746, + "scope": "Fresh full parent phases and complete 121-entry composed program passed on both Python versions. Initial Python 3.14 attempt failed on SSD capacity; preserved and retried after verified lossless archival. GitHub CI pending.", + "tested_code_commit": "f5e0af60ae91e39528d63782ac06f4c6f0e956e3", + "tested_manifest_sha256": "8fb34d3d7d9819b915a7b734d63b18772c30b1312e89e1e96b8731ce90dd731f" +} diff --git a/research/e8-early-reset-kernel/apply.py b/research/e8-early-reset-kernel/apply.py new file mode 100644 index 0000000000..68e7669351 --- /dev/null +++ b/research/e8-early-reset-kernel/apply.py @@ -0,0 +1,77 @@ +"""Apply a source-bound subset of PR435/417 response relations after PR434 resets.""" +from pathlib import Path +import copy,hashlib,json,sys +from collections import defaultdict,Counter +ROOT=Path(__file__).resolve().parent + +def reconstruct(raw,s): + assert hashlib.sha256(raw).hexdigest()==s['input_sha256'];c=json.loads(raw);w=copy.deepcopy(c);v=c['v'];n=2*v+c['R'];frames=[sum(1<=2*v and f:first.setdefault(x,frames[f]) + pivots={};donors={};by=defaultdict(list) + for lines,p,ds in s['entries']: + E=sum(1<=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 x0 + cutoff=max(ceil(36/gap**2),ceil(2*(4+charged_two)/gap)) + assert cutoff*gap**2>=36 and cutoff*gap>=2*(4+charged_two) + 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_EARLY_RESET_KERNEL_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,coefficient_bits=coefficient.bit_length(),two_level_coefficient_bits=two.bit_length(),charged_two_level_coefficient_bits=charged_two,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/e8-early-reset-kernel/local-evidence/ASSEMBLY-118.json b/research/e8-early-reset-kernel/local-evidence/ASSEMBLY-118.json new file mode 100644 index 0000000000..83bb28f6ee --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/ASSEMBLY-118.json @@ -0,0 +1,103 @@ +{ + "status": "PASS_CONDITIONAL_EARLY_RESET_KERNEL_ASSEMBLY", + "kappa": "45340333148791/40000000000000000", + "kappa_decimal": "0.001133508328719775", + "bit_lower": "1134794627881866057683/1000000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.158623216822614, + "bit_invoice": { + "prefix_bits": 226, + "charged_prefix_bits": 256, + "coefficient_bits": 226, + "two_level_coefficient_bits": 488, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14223, + "physical": 14232 + }, + "strict_outer_constraints": { + "bit_positive": "8865583030327078557349651159791103195758253628551574089325712854609428298691641374628468365814082531330986606348062624284395896648229682097440238805152128233500519/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "384311885347366755150348840208896804241746371448425910674287145390571701308358625371531634185917468669013393651937375715604103351770317902559761194847871766499481/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "384311885347366745900453924534451491741746371448425910674287145390571701308358625371531634185917468669013393651937375715604103351770317902559761194847871766499481/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "4432791515163539269809242549568473040529475654484683848904602798753140060020107832704805884215399891037024937359948780811211341976052216764324222754346382019310020694847871766499481/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "8865583030327078557349651159791103195758253628551574089325712854609428298691641374628468365814082531330986606348062624284395896648229682097440238805152128233500519/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "192155942673683381815809992594304303220524345515316151095397201246859939979892167295194115784600108962975062640051219188788658023947783235675777245653617980689979305152128233500519/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "4432791515163540246371742549568473040529475654484683848904602798753140060020107832704805884215399891037024937359948780811211341976052216764324222754346382019310020694847871766499481/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "3901817208484836459753628257450431526959470524345515316151095397201246859939979892167295194115784600108962975062640051219188788658023947783235675777245653617980689979305152128233500519/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "8865583030327078557349651159791103195758253628551574089325712854609428298691641374628468365814082531330986606348062624284395896648229682097440238805152128233500519/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "384311885347366764015931870535975361591397531239529106432540773942145790634071479980959932877558843297481759466019907046590709699832942186955657843077553863939719805152128233500519/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "8865583030327078557349651159791103195758253628551574089325712854609428298691641374628468365814082531330986606348062624284395896648229682097440238805152128233500519/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "8865583030327078557349651159791103195758253628551574089325712854609428298691641374628468365814082531330986606348062624284395896648229682097440238805152128233500519/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "192155942673683381815809992594304303220524345515316151095397201246859939979892167295194115784600108962975062640051219188788658023947783235675777245653617980689979305152128233500519/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "4432791515163539269809242549568473040529475654484683848904602798753140060020107832704805884215399891037024937359948780811211341976052216764324222754346382019310020694847871766499481/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "355113636363636363281250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/355516617410469412660891749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771", + "epsilon_below_one": "402981046833049379641749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771/355516617410469412660891749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771", + "guard_width": "402981046833049379641749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771/355516617410469412660891749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771", + "K_geometry": "266738208319560321840579249322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771/355516617410469412660891749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771000000000000000000", + "K_dominates_log": "402981046833049112903541003127721163105248464083291891670466104024405110101409548541060529472299278030201732104049899070380582237827585086646625525299469568635072540045589977017223664104738930318229/355516617410469412660891749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771000000000000000000", + "record_suffix": "402981046833049379641749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771/355516617410469412660891749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771", + "phase_local": "3223848374664394681617377171034931368584232971482636159155213339594585148296023623898664273973008299599217601333108214132060527131678995754852949096247167217286903891312417464789620664104738930318229/2844132939283755301287133994581504344029475982294170679162839711126365920043650987514694404279429381738936018136261780931499062794164401612192235798366797368741316378687162088557454168000000000000000000", + "phase_boundary": "644769674932878651910181505831456145003447136146092828883444438501849113375233612143140850429502908450403092323683468932810291800157706001064310402809272224233800941582746618826286264104738930318229/568826587856751060257426798916300868805895196458834135832567942225273184008730197502938880855885876347787203627252356186299812558832880322438447159673359473748263275737432417711490833600000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "710227272727272726206983382589530587339108250677311956996315502213228665104645036109204259994543626560663199465071327282632997732967277383562617150729449798475970525204150328907335452664104738930318229/1422066469641877650643566997290752172014737991147085339581419855563182960021825493757347202139714690869468009068130890465749531397082200806096117899183398684370658189343581044278727084000000000000000000", + "prime_interval_packing": "402981046833049379641749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771/355516617410469412660891749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771", + "alpha_positive": "805962093666098403766881234906673346477246250854626787025429994820145115557782987877861064400971995397203999136772515507763431508377786610676100321149140661299619875940851046698994664104738930318229/711033234820938825321783498645376086007368995573542669790709927781591480010912746878673601069857345434734004534065445232874765698541100403048058949591699342185329094671790522139363542000000000000000000", + "alpha_below_one": "710227272727272726918016617410469412660891749322688043003684497786771334895354963890795740005456373439336800534928672717367002267032722616437382849270550201524029474795849671092664547335895261069681771/711033234820938825321783498645376086007368995573542669790709927781591480010912746878673601069857345434734004534065445232874765698541100403048058949591699342185329094671790522139363542000000000000000000", + "alpha_below_one_fourth": "176952346611568607926678993426437348155365002642531040660652051950577724887170403731790539203063364363286297134379588792710927993126897314151338637076775694885032653792006779488141890835895261069681771/711033234820938825321783498645376086007368995573542669790709927781591480010912746878673601069857345434734004534065445232874765698541100403048058949591699342185329094671790522139363542000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "2771173422000595546103208711752749420347211437138388838018150441781359129178471327911867090932340961067640169312105276045581796571198663834089805966737149197805801095439427860593899818808646675389924503362603243533467855086265069092315348010863068484426549504253450903048952132682568542442937400552978342902022226838001982518297057007130123306660851/2777473573519292286413216791583500335966285138959151053869960655396841718792627917494818754179130255604429705211193145440917053509926173449406480271842575555411441776061681727106888835937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "19912154423360951505113621808883442990218483106321429562313771182371241365035272791789942454251804174229498546694880265604093509154413380746850034934746029554502619453884845721737626986007685783209045313/2844132939283755301287133994581504344029475982294170679162839711126365920043650987514694404279429381738936018136261780931499062794164401612192235798366797368741316378687162088557454168000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "21308189570537051775549002459507702200384997147725403185299150734833608276301326302654034083773020132457855345927965257876205047952909966043016950740590758038134594340509011236611139/14220664696418776506435669972907521720147379911470853395814198555631829600218254937573472021397146908694680090681308904657495313970822008060961178991833986843706581893435810442787270840000000000000000", + "coordinate_movement_above_kappa": "10049212203836369849651159791103195758253628551574089325712854609428298691641374628468365814082531330986606348062624284395896648229682097440238805152128233500519/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "5537128807904902553994791005156391000185638465823867023035118890001389590689899503969189111231150956064980668161450275952116979673506217173481071678716227495646884724275938120174897/11109894294077169145652867166334001343865140555836604215479842621587366875170511669979275016716521022417718820844772581763668214039704693797625921087370302221645767104246726908427555343750000000000000", + "bulk_exposure_above_kappa": "10049212203836369849651159791103195758253628551574089325712854609428298691641374628468365814082531330986606348062624284395896648229682097440238805152128233500519/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "496810965411012658361068349057620045011715388122244792516611065502548591046596678666824562815992132580947211570085887698610819068845848440196648554827780650432719226284465188394763789/568826587856751060257426798916300868805895196458834135832567942225273184008730197502938880855885876347787203627252356186299812558832880322438447159673359473748263275737432417711490833600000000000000000", + "scalar_work_above_kappa": "3906121296696940942448908742578852397073314931758309302164475183075925915254808887091470016219675353774204066918560328958803626741311443007079360673322301936534254320765906986252546029/2844132939283755301287133994581504344029475982294170679162839711126365920043650987514694404279429381738936018136261780931499062794164401612192235798366797368741316378687162088557454168000000000000000000", + "dimension_above_kappa": "14188426212672132577372519597629530055401622548036848804570798592093573585080895797260136254904179393959353993091711227800360031957143249815243868961075979199310368847154947595347323500509011236611139/14220664696418776506435669972907521720147379911470853395814198555631829600218254937573472021397146908694680090681308904657495313970822008060961178991833986843706581893435810442787270840000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "311028689890167269342063785279898137803281/250000000000000000000000000000000000000000000000", + "cutoff_log2": "23258495367173" + }, + { + "gap": "176476843202248340980037474008573475072517387739149793557427321/125000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "18061219624214167953" + }, + { + "gap": "100132486805730914825370822411185931455788699450649335533024385614378430420254364961/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "14025312005974269864668078" + }, + { + "gap": "56814904051797638168445127708173037173760987567566086543273171248346895922860032630302261929404752840201/31250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10891256568366140784866212834449" + }, + { + "gap": "32236623950801812469290761682204491197401407068500415897931958536896041275283759584483110190700851765527304390064324197237041/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "8457528045540166960139779444257111869" + }, + { + "gap": "18290973840208896804241746371448425910674287145390571701308358625371531634185917468669013393651937375715604103351770317902559761194847871766499481/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6567633421551932537151148347375228016730435" + } + ], + "bit_template_sha256": "344198ec3d0838ce37c081ecce0a876739d2a6e7d3625ce0e3d1b93b621bc9f7", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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." +} diff --git a/research/e8-early-reset-kernel/local-evidence/ASSEMBLY.json b/research/e8-early-reset-kernel/local-evidence/ASSEMBLY.json new file mode 100644 index 0000000000..2d9275b4b3 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/ASSEMBLY.json @@ -0,0 +1,103 @@ +{ + "status": "PASS_CONDITIONAL_EARLY_RESET_KERNEL_ASSEMBLY", + "kappa": "566550276142217/500000000000000000", + "kappa_decimal": "0.001133100552284434", + "bit_lower": "1134385925603239057397/1000000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.119713456118378, + "bit_invoice": { + "prefix_bits": 226, + "charged_prefix_bits": 256, + "coefficient_bits": 226, + "two_level_coefficient_bits": 488, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14259, + "physical": 14268 + }, + "strict_outer_constraints": { + "bit_positive": "69237422216994571231731016394278971659481331432859237066649424129667134808630398853391912761178763207537908109793203831464837997733885657643609588447593436647051/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "3027381811712032772175233605721028340518668567140762933350575870332865191369601146608087238821236792462091890206796168535162002266114342356390411552406563352949/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "3027381811712032699910429577014424336612418567140762933350575870332865191369601146608087238821236792462091890206796168535162002266114342356390411552406563352949/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "34618711108497285546628085980144914598009649322150646873843380631974330337665775297028821571958982750377041293717838708194510889073738997356966796489911060679915911552406563352949/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "69237422216994571231731016394278971659481331432859237066649424129667134808630398853391912761178763207537908109793203831464837997733885657643609588447593436647051/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "1513690905856016419192637005501783400037225677849353126156619368025669662334224702971178428041017249622958706282161291805489110926261002643033203510088939320084088447593436647051/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "34618711108497293176022617230144914598009649322150646873843380631974330337665775297028821571958982750377041293717838708194510889073738997356966796489911060679915911552406563352949/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "30482959413891502706823977382769855085401990350677849353126156619368025669662334224702971178428041017249622958706282161291805489110926261002643033203510088939320084088447593436647051/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "69237422216994571231731016394278971659481331432859237066649424129667134808630398853391912761178763207537908109793203831464837997733885657643609588447593436647051/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "3027381811712032841412655822715599572249684961419734592831907303192102258019025276275222047451635645854004651385559376073070112059318173821228409286292220996558588447593436647051/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "69237422216994571231731016394278971659481331432859237066649424129667134808630398853391912761178763207537908109793203831464837997733885657643609588447593436647051/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "69237422216994571231731016394278971659481331432859237066649424129667134808630398853391912761178763207537908109793203831464837997733885657643609588447593436647051/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "1513690905856016419192637005501783400037225677849353126156619368025669662334224702971178428041017249622958706282161291805489110926261002643033203510088939320084088447593436647051/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "34618711108497285546628085980144914598009649322150646873843380631974330337665775297028821571958982750377041293717838708194510889073738997356966796489911060679915911552406563352949/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "824799408783783782958984375000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/825735049624553980690449407729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377", + "epsilon_below_one": "935640840770197731465032729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377/825735049624553980690449407729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377", + "guard_width": "935640840770197731465032729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377/825735049624553980690449407729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377", + "K_geometry": "619535197428608034950703313979193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377/825735049624553980690449407729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377000000000000000000", + "K_dominates_log": "30181962605490229417091461309195833846544927717528973213455737846402513917892235976507838913943511293241691126206500399143391103187358578171278036108258119723582489156491283934640879204527843633/26636614504017870344853206700941713090320845378659242063534301116505644577452193352482152416366136863775394107492343364174537498595530722752708776631638980872432359120795472156367000000000000000000", + "record_suffix": "935640840770197731465032729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377/825735049624553980690449407729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377", + "phase_local": "7485126726161581025985212208990865709120246178298925956560470154963351238580616803898817357783948289351013750750911538248082319428974953261114148185014851029252986376468687733612867255340363152623/6605880396996431845523595261833544846399569653907492031756506676893399855208143951415573799258801942216297738658101154315285299651691619242671776604646467256363225061957277094779016000000000000000000", + "phase_boundary": "1497025345232315544609002742154988589464523052305300551355128640243467072065455671439777950742394516312822824269988086019842598075679559123692864467841045938672936810647011910400067255340363152623/1321176079399286369104719052366708969279913930781498406351301335378679971041628790283114759851760388443259547731620230863057059930338323848534355320929293451272645012391455418955803200000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "1649598817567567565092233700375446019309550592270806894200053793261563496030436665388325018098982006073053275092649757222962782667737355710589337543538547594666027924419191592954596867255340363152623/3302940198498215922761797630916772423199784826953746015878253338446699927604071975707786899629400971108148869329050577157642649825845809621335888302323233628181612530978638547389508000000000000000000", + "prime_interval_packing": "935640840770197731465032729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377/825735049624553980690449407729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377", + "alpha_positive": "1871281681540394637195015833832230909443005747679902139180462484913459832472653242218467913682491627127709757175045801784107580660260521257281694700164408756834189908510866649350867255340363152623/1651470099249107961380898815458386211599892413476873007939126669223349963802035987853893449814700485554074434664525288578821324912922904810667944151161616814090806265489319273694754000000000000000000", + "alpha_below_one": "1649598817567567566743703799624553980690449407729193105799946206738436503969563334611674981901017993926946724907350242777037217332262644289410662456461452405333972075580808407045403132744659636847377/1651470099249107961380898815458386211599892413476873007939126669223349963802035987853893449814700485554074434664525288578821324912922904810667944151161616814090806265489319273694754000000000000000000", + "alpha_below_one_fourth": "410996243130736595708029688030764321990530097621538349845601204820924031118036343721254894539992629761390898908956276342921223647570465681409704343090239794765867376463818951774337632744659636847377/1651470099249107961380898815458386211599892413476873007939126669223349963802035987853893449814700485554074434664525288578821324912922904810667944151161616814090806265489319273694754000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "50284589023755639450550561947992852913465435982210087302859165385722658942883811531989641634516383968749221857814449882621435887501656295301706001999427642810130314654325274095462490292340911783154748095539039217711968081469021320817854289360191881492365590119398439280952169129815427826165501507629212226183536366779259610196729558300895864773/50398867774936156048001062483471258898922497969875274900486043372294615594544555293392744440145888841371900471939858660242350003446133569661497319066211450625329781051309792288047912597656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "46248647905701184502994092243542020713267905454447515571451892035362508353573841615159615339773469519511222083986859962853394049210320886809606200206556095266907716722400641979368337398233978910542131/6605880396996431845523595261833544846399569653907492031756506676893399855208143951415573799258801942216297738658101154315285299651691619242671776604646467256363225061957277094779016000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "550042988388611688369205823989077886773965515878728726747932211633432067386799257451668462594712434857941333397055768012640812633662078222152713997053717290771577011531200424585191/412867524812276990345224703864596552899973103369218251984781667305837490950508996963473362453675121388518608666131322144705331228230726202666986037790404203522701566372329818423688500000000000000000", + "coordinate_movement_above_kappa": "78452961352847598918516394278971659481331432859237066649424129667134808630398853391912761178763207537908109793203831464837997733885657643609588447593436647051/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "54870185430533879209592448049792533549596965003804189905260217731037830574516104195278040056414925387769089892369778347174192562172540807794291183705325234899550178063548242464601/165147009924910796138089881545838621159989241347687300793912666922334996380203598785389344981470048555407443466452528857882132491292290481066794415116161681409080626548931927369475400000000000000000", + "bulk_exposure_above_kappa": "78452961352847598918516394278971659481331432859237066649424129667134808630398853391912761178763207537908109793203831464837997733885657643609588447593436647051/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "4672012566095017110455046145179280659383717220367477108119098713076538168683698149591961776978647743841875247691579066755199689856285989527773563574955434617118216520775908609126171/6605880396996431845523595261833544846399569653907492031756506676893399855208143951415573799258801942216297738658101154315285299651691619242671776604646467256363225061957277094779016000000000000000000", + "scalar_work_above_kappa": "7974952764593233033216843776096053082583502047321223123997352051523238096287770125299748676608048714950024117020629643912842339682131799149109451877278668245299829051754547156515679/6605880396996431845523595261833544846399569653907492031756506676893399855208143951415573799258801942216297738658101154315285299651691619242671776604646467256363225061957277094779016000000000000000000", + "dimension_above_kappa": "411931883971506793163802659524015135469232720619859634789183848572891235797423214669958704933124136063149853928581112713236002168825041809973826595871674018630012430681387472347888511531200424585191/412867524812276990345224703864596552899973103369218251984781667305837490950508996963473362453675121388518608666131322144705331228230726202666986037790404203522701566372329818423688500000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "77700191184163087736308252660500911393801/62500000000000000000000000000000000000000000000", + "cutoff_log2": "23292621022833" + }, + { + "gap": "22035500823998869930507930842150868768654091410330107949400549/15625000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "18100755477578231773" + }, + { + "gap": "6249190499590723752847946110114538620601182257691815838869237387367034660501227601/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "14066143459678166113736944" + }, + { + "gap": "1772248437287297768063758813231463857764748822643053531819635241254009676979099435670084333982024596749/976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10930836123019037656056314603016" + }, + { + "gap": "502603420982761311539041506293808216479242223973462530201407562553643345749374692386480249099696279705752331693888441501401/244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "8494380758365423758936869721476641843" + }, + { + "gap": "142536561730721028340518668567140762933350575870332865191369601146608087238821236792462091890206796168535162002266114342356390411552406563352949/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6601005051767263055251893981415233874399241" + } + ], + "bit_template_sha256": "f9ce9ac945d9e8ea737dc5e456e366a7e2a21d8b989d24b742d7f124d26fb32f", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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." +} diff --git a/research/e8-early-reset-kernel/local-evidence/AUDIT-118.json b/research/e8-early-reset-kernel/local-evidence/AUDIT-118.json new file mode 100644 index 0000000000..908c0f3d62 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/AUDIT-118.json @@ -0,0 +1,34 @@ +{ + "status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", + "template_sha256": "344198ec3d0838ce37c081ecce0a876739d2a6e7d3625ce0e3d1b93b621bc9f7", + "source_frames": 944, + "exact_nested_frame_pairs": 3357, + "exact_reflected_pairs": 3357, + "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", + "exact_bank_families": 6543, + "mixed_width_slots": true, + "entrance_rank_total": 160, + "mutations_rejected": [ + "omit an idle child", + "omit a bridge", + "omit terminal exchange", + "remove a local invocation", + "re-use a helper bank slot", + "understate live stock", + "omit a local paid move", + "wrong reflected copy charge" + ], + "profile": { + "1": 180792, + "2": 74232, + "3": 22248, + "4": 24984, + "5": 7344, + "7": 6768, + "8": 648, + "14": 3840, + "28": 3840, + "42": 3840 + }, + "seconds": 1.9027871249709278 +} diff --git a/research/e8-early-reset-kernel/local-evidence/AUDIT.json b/research/e8-early-reset-kernel/local-evidence/AUDIT.json new file mode 100644 index 0000000000..643c814b0b --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/AUDIT.json @@ -0,0 +1,34 @@ +{ + "status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", + "template_sha256": "f9ce9ac945d9e8ea737dc5e456e366a7e2a21d8b989d24b742d7f124d26fb32f", + "source_frames": 944, + "exact_nested_frame_pairs": 3357, + "exact_reflected_pairs": 3357, + "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", + "exact_bank_families": 6579, + "mixed_width_slots": true, + "entrance_rank_total": 128, + "mutations_rejected": [ + "omit an idle child", + "omit a bridge", + "omit terminal exchange", + "remove a local invocation", + "re-use a helper bank slot", + "understate live stock", + "omit a local paid move", + "wrong reflected copy charge" + ], + "profile": { + "1": 178560, + "2": 74232, + "3": 22248, + "4": 23328, + "5": 9576, + "7": 6768, + "8": 648, + "14": 3840, + "28": 3840, + "42": 3840 + }, + "seconds": 1.8856884160777554 +} diff --git a/research/e8-early-reset-kernel/local-evidence/BIT-PRICE-118.json b/research/e8-early-reset-kernel/local-evidence/BIT-PRICE-118.json new file mode 100644 index 0000000000..e4a325dd65 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/BIT-PRICE-118.json @@ -0,0 +1,17 @@ +{ + "lower": "0.001134794627881866057683", + "upper": "0.001134794627881866057684", + "lower_endpoint_residual_upper": "-1.343918196056376078771778731691543898160655071315154189250671754099554E-24", + "upper_endpoint_residual_lower": "1.076800379181734670169810983466150698103728072864083678312213207210986E-24", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.001063227823926555687096637542514053639827738488766209042433080298056951", + "-0.001063227823926555687096637542514053639827738488766209042433080297982767" + ], + "nominal_k_ceiling_interval": [ + "0.001133508328719775504131066894514059012214188544625274545121151098487753", + "0.001133508328719775504132064628782242703940278922458884422182968591698260" + ], + "source_template_sha256": "344198ec3d0838ce37c081ecce0a876739d2a6e7d3625ce0e3d1b93b621bc9f7", + "two_exact_engines": true +} diff --git a/research/e8-early-reset-kernel/local-evidence/BIT-PRICE.json b/research/e8-early-reset-kernel/local-evidence/BIT-PRICE.json new file mode 100644 index 0000000000..0339fa04e3 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/BIT-PRICE.json @@ -0,0 +1,17 @@ +{ + "lower": "0.001134385925603239057397", + "upper": "0.001134385925603239057398", + "lower_endpoint_residual_upper": "-1.208815110554072546890868962118806453466727141708111658528148771609217E-24", + "upper_endpoint_residual_lower": "1.206647999073094385830833942650340983281407775833257592984711501729879E-24", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.001059935772403113935979679141367753634160753707351085784521072950941911", + "-0.001059935772403113935979679141367753634160753707351085784521072950867727" + ], + "nominal_k_ceiling_interval": [ + "0.001133100552284434337978314624649498572528216136568917723800228264595422", + "0.001133100552284434337979312359732310865246830293765932499225360045604731" + ], + "source_template_sha256": "f9ce9ac945d9e8ea737dc5e456e366a7e2a21d8b989d24b742d7f124d26fb32f", + "two_exact_engines": true +} diff --git a/research/e8-early-reset-kernel/local-evidence/FULL-PYTHON311.json b/research/e8-early-reset-kernel/local-evidence/FULL-PYTHON311.json new file mode 100644 index 0000000000..e78af127aa --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/FULL-PYTHON311.json @@ -0,0 +1,49 @@ +{ + "status": "PASS_FULL_EARLY_RESET_KERNEL_COMPOSITION", + "kappa": "566550276142217/500000000000000000", + "kappa_decimal": "0.001133100552284434", + "source_manifest_sha256": "fcc4de6a0a0bc14011be74ce43402c20490c0441a8688534be23f0f86aa5bfea", + "checks": [ + { + "name": "full-early-reuse434", + "seconds": 120.78334466693923, + "log_sha256": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6" + }, + { + "name": "kernel-reconstruction", + "seconds": 0.07485416706185788, + "log_sha256": "3f693dcbe49585d9ce689315e42a81cc7e4a4e45f0990c938217fb43c5150f28" + }, + { + "name": "export", + "seconds": 0.5898666669381782, + "log_sha256": "6c647e3d28cf94ce9f8b9fdcfc5c10797c18d488d74fe09b8de8671dfd7ae107" + }, + { + "name": "integer-source-spans", + "seconds": 0.06577295798342675, + "log_sha256": "bdf95dbce8337be57aab8a3d3b42a711ee276496c40cbb4c5356fc9cc9b2e811" + }, + { + "name": "global-program", + "seconds": 2.7857714579440653, + "log_sha256": "7e97172f5d1a084d7e5b043f4cb772d5d42389a151211c114e5a4632638cc826" + }, + { + "name": "independent-audit", + "seconds": 3.3599830419989303, + "log_sha256": "4ea14031d43b401b0349f6ec33ff189f633e00cc89d1e10017b1df4438e17cf4" + }, + { + "name": "two-moments", + "seconds": 0.13630245893727988, + "log_sha256": "59229b1eb12d77f6e25381ed1715fb134898e731fb30ba564789d62a44253478" + }, + { + "name": "finite-assembly", + "seconds": 0.15192366705741733, + "log_sha256": "e9af1d9589b520a86e59f494ff0a0f18609be39722dc55dc28ed91951b7b2134" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-kernel/local-evidence/FULL-PYTHON314.json b/research/e8-early-reset-kernel/local-evidence/FULL-PYTHON314.json new file mode 100644 index 0000000000..37155858c0 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/FULL-PYTHON314.json @@ -0,0 +1,49 @@ +{ + "status": "PASS_FULL_EARLY_RESET_KERNEL_COMPOSITION", + "kappa": "566550276142217/500000000000000000", + "kappa_decimal": "0.001133100552284434", + "source_manifest_sha256": "fcc4de6a0a0bc14011be74ce43402c20490c0441a8688534be23f0f86aa5bfea", + "checks": [ + { + "name": "full-early-reuse434", + "seconds": 111.79458600003272, + "log_sha256": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6" + }, + { + "name": "kernel-reconstruction", + "seconds": 0.06413062498904765, + "log_sha256": "3f693dcbe49585d9ce689315e42a81cc7e4a4e45f0990c938217fb43c5150f28" + }, + { + "name": "export", + "seconds": 0.37764429196249694, + "log_sha256": "6c647e3d28cf94ce9f8b9fdcfc5c10797c18d488d74fe09b8de8671dfd7ae107" + }, + { + "name": "integer-source-spans", + "seconds": 0.08005450002383441, + "log_sha256": "bdf95dbce8337be57aab8a3d3b42a711ee276496c40cbb4c5356fc9cc9b2e811" + }, + { + "name": "global-program", + "seconds": 2.7084261670242995, + "log_sha256": "8dd0f6c14d141094a7f0432bd7c2e065c7af228d161121e5355b7f6009a4f117" + }, + { + "name": "independent-audit", + "seconds": 1.9340536249801517, + "log_sha256": "e37173420f400387484e79ce9fa0309ea399ef891e44cbe28731b86c603f37a0" + }, + { + "name": "two-moments", + "seconds": 0.14735429198481143, + "log_sha256": "59229b1eb12d77f6e25381ed1715fb134898e731fb30ba564789d62a44253478" + }, + { + "name": "finite-assembly", + "seconds": 0.16268512490205467, + "log_sha256": "e9af1d9589b520a86e59f494ff0a0f18609be39722dc55dc28ed91951b7b2134" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-kernel/local-evidence/GLOBAL-118.json b/research/e8-early-reset-kernel/local-evidence/GLOBAL-118.json new file mode 100644 index 0000000000..cc2c83ad04 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/GLOBAL-118.json @@ -0,0 +1,165 @@ +{ + "status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", + "h": 8, + "m": 64, + "v": 120, + "R": 747, + "replicas": 8, + "live": 14223, + "physical": 14232, + "word_sha256": "6c9b754954605773e82f305ebf2259891b776f01d8b9af4a8e237c30c3501542", + "source_records_sha256": "f2dc4a1a694f18175b58b6ecd7bbce8066204ad746dcd0cdc93c3496bd4ec9f5", + "local_checks": { + "forward": { + "copies": 9, + "adds": 14725, + "records": 19057, + "all_columns": 987, + "cancellation_free_row_l1": 4749881, + "profile": { + "1": 2511, + "2": 1031, + "3": 309, + "4": 347, + "5": 102, + "7": 14, + "8": 9 + }, + "sha256": "afbada1fe8cf961fec08d805213c43ae8196e9d08392c51b979a6a010d3a9977" + }, + "reverse": { + "copies": 9, + "adds": 14725, + "records": 19057, + "all_columns": 987, + "cancellation_free_row_l1": 18976538, + "profile": { + "1": 2511, + "2": 1031, + "3": 309, + "4": 347, + "5": 102, + "7": 14, + "8": 9 + }, + "sha256": "6893350777b2fd45b493a6db87ef1d08013c1903535627eb91bcb78a5d142bb2" + } + }, + "scalar_stages": [ + { + "stage": 0, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 1, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 2, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 3, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 4, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 5, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 6, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 7, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 8, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + } + ], + "independent_unbanked_scalar_columns": 7683, + "all_scalar_columns_restored": true, + "geometry_sha256": "fc955d8c1ed4d82acfc46730b4e0095e443ae6b18657df12c016b5ee7537526b", + "template_sha256": "344198ec3d0838ce37c081ecce0a876739d2a6e7d3625ce0e3d1b93b621bc9f7", + "emitted_program_sha256": "a2a2b30ecb4f1452227d0a0f294a6416f2fb2693b176e4ec958d3eb0807c08be", + "emitted_events": 1372104, + "local_invocations": 72, + "bank_assignments": 53784, + "banks_per_stage": 727, + "entrance_rank_total": 160, + "mixed_width_slots": true, + "padding_calls": 0, + "profile": { + "1": 180792, + "2": 74232, + "3": 22248, + "4": 24984, + "5": 7344, + "7": 6768, + "8": 648, + "14": 3840, + "28": 3840, + "42": 3840 + }, + "paid_calls": 328536, + "rank_mass": 907776, + "deficit": 2496, + "maxchild": 42, + "halving_depth": 2, + "halving_integer_inequality": [ + 4096, + 3528 + ], + "local_additions": 14725, + "bridge_additions": 17280, + "copy_erase_episodes": 648, + "global_prefix_bound": "82190477982065642452487517803207630132518570465344629418738197725184", + "global_prefix_bits": 226, + "charged_prefix_bits": 256, + "omitted_bridge_shears_rejected": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ], + "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", + "seconds": 2.8644982089754194 +} diff --git a/research/e8-early-reset-kernel/local-evidence/GLOBAL.json b/research/e8-early-reset-kernel/local-evidence/GLOBAL.json new file mode 100644 index 0000000000..9d69b480fb --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/GLOBAL.json @@ -0,0 +1,165 @@ +{ + "status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", + "h": 8, + "m": 64, + "v": 120, + "R": 747, + "replicas": 8, + "live": 14259, + "physical": 14268, + "word_sha256": "da4aa797d6dad909fd1faaa90abea749b026299ac8cad3ad0a4a248e16bdb5f5", + "source_records_sha256": "99cb283793818ad03f8f16f95a8eb23d0b18769d0657d58043fb7a427471c35d", + "local_checks": { + "forward": { + "copies": 9, + "adds": 14693, + "records": 19002, + "all_columns": 987, + "cancellation_free_row_l1": 4749881, + "profile": { + "1": 2480, + "2": 1031, + "3": 309, + "4": 324, + "5": 133, + "7": 14, + "8": 9 + }, + "sha256": "4ed9ed1f7756ea6ff2c299b61ed1dc3fe0fa5bbbb91b5170133596b452c8085e" + }, + "reverse": { + "copies": 9, + "adds": 14693, + "records": 19002, + "all_columns": 987, + "cancellation_free_row_l1": 18976518, + "profile": { + "1": 2480, + "2": 1031, + "3": 309, + "4": 324, + "5": 133, + "7": 14, + "8": 9 + }, + "sha256": "ceedc55929da7f5279c330cd9714e78a7c4e294f0cb8e446ace5707369440bd8" + } + }, + "scalar_stages": [ + { + "stage": 0, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 1, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 2, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 3, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 4, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 5, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 6, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 7, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 8, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + } + ], + "independent_unbanked_scalar_columns": 7683, + "all_scalar_columns_restored": true, + "geometry_sha256": "fc7b29b16ee754ca9717973b745d6322bbf8351a5e35e3fc9e0fbf7a88dc0317", + "template_sha256": "f9ce9ac945d9e8ea737dc5e456e366a7e2a21d8b989d24b742d7f124d26fb32f", + "emitted_program_sha256": "3c56fb306442103076c77a04ed28c2786c456ce3266808b1eeacf36b78a48475", + "emitted_events": 1368144, + "local_invocations": 72, + "bank_assignments": 53784, + "banks_per_stage": 731, + "entrance_rank_total": 128, + "mixed_width_slots": true, + "padding_calls": 0, + "profile": { + "1": 178560, + "2": 74232, + "3": 22248, + "4": 23328, + "5": 9576, + "7": 6768, + "8": 648, + "14": 3840, + "28": 3840, + "42": 3840 + }, + "paid_calls": 326880, + "rank_mass": 910080, + "deficit": 2496, + "maxchild": 42, + "halving_depth": 2, + "halving_integer_inequality": [ + 4096, + 3528 + ], + "local_additions": 14693, + "bridge_additions": 17280, + "copy_erase_episodes": 648, + "global_prefix_bound": "82190131489578773587585573345852919919075549029526266900008239366144", + "global_prefix_bits": 226, + "charged_prefix_bits": 256, + "omitted_bridge_shears_rejected": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ], + "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", + "seconds": 2.6007981669390574 +} diff --git a/research/e8-early-reset-kernel/local-evidence/SOURCE-SPANS-118.log b/research/e8-early-reset-kernel/local-evidence/SOURCE-SPANS-118.log new file mode 100644 index 0000000000..4ac149a702 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/SOURCE-SPANS-118.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_F2_AND_INTEGER_SOURCE_SPANS", "columns": 987, "profile": {"1": 2511, "4": 347, "2": 1031, "3": 309, "5": 102, "8": 9, "7": 14}, "word_sha256": "6c9b754954605773e82f305ebf2259891b776f01d8b9af4a8e237c30c3501542"} diff --git a/research/e8-early-reset-kernel/local-evidence/SOURCE-SPANS.log b/research/e8-early-reset-kernel/local-evidence/SOURCE-SPANS.log new file mode 100644 index 0000000000..d612f8c813 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/SOURCE-SPANS.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_F2_AND_INTEGER_SOURCE_SPANS", "columns": 987, "profile": {"1": 2480, "4": 324, "2": 1031, "3": 309, "5": 133, "8": 9, "7": 14}, "word_sha256": "da4aa797d6dad909fd1faaa90abea749b026299ac8cad3ad0a4a248e16bdb5f5"} diff --git a/research/e8-early-reset-kernel/local-evidence/VALIDATION-110-ENTRIES.json b/research/e8-early-reset-kernel/local-evidence/VALIDATION-110-ENTRIES.json new file mode 100644 index 0000000000..d57a499ef8 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/VALIDATION-110-ENTRIES.json @@ -0,0 +1,9 @@ +{ + "status": "PASS_FULL_PYTHON311_AND_314", + "validated_code_head": "98b2d164fe0d51253faa05b8fb14cd82e57ef841", + "kappa": "0.001133100552284434", + "scope": "Fresh parent construction, all phase pairs, reset reconstruction, both emitted bit compositions, independent source spans and banks, two moments, complete finite invoices and outer constraints.", + "pending": [ + "GitHub CI" + ] +} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-35-subsets.json b/research/e8-early-reset-kernel/local-evidence/fill160-35-subsets.json new file mode 100644 index 0000000000..27a77b8dc6 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-35-subsets.json @@ -0,0 +1,2289 @@ +{ + "status": "PASS_EXACT_LOCAL_SUBSET_SCREEN", + "tested": 35, + "rows": [ + { + "chosen": [ + 0, + 1, + 2, + 3 + ], + "pivots": [ + 780, + 927, + 954, + 969 + ], + "lower": "0.001135354535089790771576", + "local_profile": { + "1": 2513, + "4": 348, + "2": 1035, + "3": 305, + "5": 100, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 1, + 2, + 4 + ], + "pivots": [ + 780, + 927, + 954, + 775 + ], + "lower": "0.001135256314124926620297", + "local_profile": { + "1": 2515, + "4": 346, + "2": 1039, + "3": 301, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 1, + 2, + 5 + ], + "pivots": [ + 780, + 927, + 954, + 871 + ], + "lower": "0.001135256314124926620297", + "local_profile": { + "1": 2515, + "4": 346, + "2": 1039, + "3": 301, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 1, + 2, + 6 + ], + "pivots": [ + 780, + 927, + 954, + 920 + ], + "lower": "0.001135256314124926620297", + "local_profile": { + "1": 2515, + "4": 346, + "2": 1039, + "3": 301, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 1, + 3, + 4 + ], + "pivots": [ + 780, + 927, + 969, + 775 + ], + "lower": "0.001135256314124926620297", + "local_profile": { + "1": 2515, + "4": 346, + "2": 1039, + "3": 301, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 1, + 3, + 5 + ], + "pivots": [ + 780, + 927, + 969, + 871 + ], + "lower": "0.001135256314124926620297", + "local_profile": { + "1": 2515, + "4": 346, + "2": 1039, + "3": 301, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 1, + 3, + 6 + ], + "pivots": [ + 780, + 927, + 969, + 920 + ], + "lower": "0.001135256314124926620297", + "local_profile": { + "1": 2515, + "4": 346, + "2": 1039, + "3": 301, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 1, + 4, + 5 + ], + "pivots": [ + 780, + 927, + 775, + 871 + ], + "lower": "0.001135158110201948401161", + "local_profile": { + "1": 2517, + "4": 344, + "2": 1043, + "3": 297, + "5": 104, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 1, + 4, + 6 + ], + "pivots": [ + 780, + 927, + 775, + 920 + ], + "lower": "0.001135158110201948401161", + "local_profile": { + "1": 2517, + "4": 344, + "2": 1043, + "3": 297, + "5": 104, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 1, + 5, + 6 + ], + "pivots": [ + 780, + 927, + 871, + 920 + ], + "lower": "0.001135158110201948401161", + "local_profile": { + "1": 2517, + "4": 344, + "2": 1043, + "3": 297, + "5": 104, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 2, + 3, + 4 + ], + "pivots": [ + 780, + 954, + 969, + 775 + ], + "lower": "0.001135212245172797272854", + "local_profile": { + "1": 2515, + "4": 348, + "2": 1037, + "3": 303, + "5": 100, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 2, + 3, + 5 + ], + "pivots": [ + 780, + 954, + 969, + 871 + ], + "lower": "0.001135212245172797272854", + "local_profile": { + "1": 2515, + "4": 348, + "2": 1037, + "3": 303, + "5": 100, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 2, + 3, + 6 + ], + "pivots": [ + 780, + 954, + 969, + 920 + ], + "lower": "0.001135212245172797272854", + "local_profile": { + "1": 2515, + "4": 348, + "2": 1037, + "3": 303, + "5": 100, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 2, + 4, + 5 + ], + "pivots": [ + 780, + 954, + 775, + 871 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 2, + 4, + 6 + ], + "pivots": [ + 780, + 954, + 775, + 920 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 2, + 5, + 6 + ], + "pivots": [ + 780, + 954, + 871, + 920 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 3, + 4, + 5 + ], + "pivots": [ + 780, + 969, + 775, + 871 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 3, + 4, + 6 + ], + "pivots": [ + 780, + 969, + 775, + 920 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 3, + 5, + 6 + ], + "pivots": [ + 780, + 969, + 871, + 920 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 0, + 4, + 5, + 6 + ], + "pivots": [ + 780, + 775, + 871, + 920 + ], + "lower": "0.001135015869634903011028", + "local_profile": { + "1": 2519, + "4": 344, + "2": 1045, + "3": 295, + "5": 104, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 1, + 2, + 3, + 4 + ], + "pivots": [ + 927, + 954, + 969, + 775 + ], + "lower": "0.001135212245172797272854", + "local_profile": { + "1": 2515, + "4": 348, + "2": 1037, + "3": 303, + "5": 100, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 1, + 2, + 3, + 5 + ], + "pivots": [ + 927, + 954, + 969, + 871 + ], + "lower": "0.001135212245172797272854", + "local_profile": { + "1": 2515, + "4": 348, + "2": 1037, + "3": 303, + "5": 100, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 1, + 2, + 3, + 6 + ], + "pivots": [ + 927, + 954, + 969, + 920 + ], + "lower": "0.001135212245172797272854", + "local_profile": { + "1": 2515, + "4": 348, + "2": 1037, + "3": 303, + "5": 100, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 1, + 2, + 4, + 5 + ], + "pivots": [ + 927, + 954, + 775, + 871 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 1, + 2, + 4, + 6 + ], + "pivots": [ + 927, + 954, + 775, + 920 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 1, + 2, + 5, + 6 + ], + "pivots": [ + 927, + 954, + 871, + 920 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 1, + 3, + 4, + 5 + ], + "pivots": [ + 927, + 969, + 775, + 871 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 1, + 3, + 4, + 6 + ], + "pivots": [ + 927, + 969, + 775, + 920 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 1, + 3, + 5, + 6 + ], + "pivots": [ + 927, + 969, + 871, + 920 + ], + "lower": "0.001135114048886126163921", + "local_profile": { + "1": 2517, + "4": 346, + "2": 1041, + "3": 299, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 1, + 4, + 5, + 6 + ], + "pivots": [ + 927, + 775, + 871, + 920 + ], + "lower": "0.001135015869634903011028", + "local_profile": { + "1": 2519, + "4": 344, + "2": 1045, + "3": 295, + "5": 104, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 2, + 3, + 4, + 5 + ], + "pivots": [ + 954, + 969, + 775, + 871 + ], + "lower": "0.001135069990992056984462", + "local_profile": { + "1": 2517, + "4": 348, + "2": 1039, + "3": 301, + "5": 100, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 2, + 3, + 4, + 6 + ], + "pivots": [ + 954, + 969, + 775, + 920 + ], + "lower": "0.001135069990992056984462", + "local_profile": { + "1": 2517, + "4": 348, + "2": 1039, + "3": 301, + "5": 100, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 2, + 3, + 5, + 6 + ], + "pivots": [ + 954, + 969, + 871, + 920 + ], + "lower": "0.001135069990992056984462", + "local_profile": { + "1": 2517, + "4": 348, + "2": 1039, + "3": 301, + "5": 100, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 2, + 4, + 5, + 6 + ], + "pivots": [ + 954, + 775, + 871, + 920 + ], + "lower": "0.001134971819374259866605", + "local_profile": { + "1": 2519, + "4": 346, + "2": 1043, + "3": 297, + "5": 102, + "8": 9, + "7": 14 + } + }, + { + "chosen": [ + 3, + 4, + 5, + 6 + ], + "pivots": [ + 969, + 775, + 871, + 920 + ], + "lower": "0.001134971819374259866605", + "local_profile": { + "1": 2519, + "4": 346, + "2": 1043, + "3": 297, + "5": 102, + "8": 9, + "7": 14 + } + } + ], + "best": { + "chosen": [ + 0, + 1, + 2, + 3 + ], + "pivots": [ + 780, + 927, + 954, + 969 + ], + "lower": "0.001135354535089790771576", + "local_profile": { + "1": 2513, + "4": 348, + "2": 1035, + "3": 305, + "5": 100, + "8": 9, + "7": 14 + } + }, + "entries": [ + [ + [ + 2 + ], + 738, + [ + 257, + 736 + ] + ], + [ + [ + 2 + ], + 739, + [ + 256, + 737 + ] + ], + [ + [ + 1 + ], + 741, + [ + 250, + 740 + ] + ], + [ + [ + 1 + ], + 743, + [ + 248, + 742 + ] + ], + [ + [ + 0 + ], + 745, + [ + 244, + 744 + ] + ], + [ + [ + 0 + ], + 747, + [ + 242, + 746 + ] + ], + [ + [ + 4 + ], + 751, + [ + 779, + 835 + ] + ], + [ + [ + 4 + ], + 752, + [ + 268, + 750 + ] + ], + [ + [ + 4 + ], + 753, + [ + 269, + 779, + 835 + ] + ], + [ + [ + 5 + ], + 754, + [ + 820, + 900 + ] + ], + [ + [ + 5 + ], + 755, + [ + 272, + 820, + 900 + ] + ], + [ + [ + 1 + ], + 757, + [ + 248, + 756 + ] + ], + [ + [ + 0 + ], + 761, + [ + 242, + 760 + ] + ], + [ + [ + 7 + ], + 767, + [ + 287, + 765 + ] + ], + [ + [ + 1 + ], + 769, + [ + 248, + 768 + ] + ], + [ + [ + 1 + ], + 771, + [ + 249, + 770 + ] + ], + [ + [ + 0 + ], + 773, + [ + 242, + 772 + ] + ], + [ + [ + 0 + ], + 777, + [ + 762, + 763, + 776 + ] + ], + [ + [ + 4 + ], + 781, + [ + 269, + 779 + ] + ], + [ + [ + 2 + ], + 783, + [ + 257, + 782 + ] + ], + [ + [ + 4 + ], + 784, + [ + 750, + 868 + ] + ], + [ + [ + 4 + ], + 785, + [ + 268, + 750, + 868 + ] + ], + [ + [ + 0 + ], + 787, + [ + 241, + 786 + ] + ], + [ + [ + 0 + ], + 789, + [ + 748, + 749, + 788 + ] + ], + [ + [ + 0 + ], + 791, + [ + 762, + 763, + 790 + ] + ], + [ + [ + 5 + ], + 795, + [ + 275, + 793 + ] + ], + [ + [ + 2 + ], + 797, + [ + 257, + 796 + ] + ], + [ + [ + 2 + ], + 799, + [ + 256, + 798 + ] + ], + [ + [ + 0 + ], + 801, + [ + 748, + 749, + 800 + ] + ], + [ + [ + 0 + ], + 803, + [ + 241, + 802 + ] + ], + [ + [ + 0 + ], + 804, + [ + 762, + 776, + 790 + ] + ], + [ + [ + 0 + ], + 805, + [ + 763, + 776, + 790 + ] + ], + [ + [ + 7 + ], + 808, + [ + 284, + 806 + ] + ], + [ + [ + 4 + ], + 809, + [ + 269, + 807 + ] + ], + [ + [ + 7 + ], + 811, + [ + 764, + 766, + 810 + ] + ], + [ + [ + 4 + ], + 813, + [ + 268, + 812 + ] + ], + [ + [ + 0 + ], + 814, + [ + 776, + 790 + ] + ], + [ + [ + 0 + ], + 815, + [ + 762, + 763, + 776, + 790 + ] + ], + [ + [ + 0 + ], + 817, + [ + 241, + 816 + ] + ], + [ + [ + 0 + ], + 818, + [ + 748, + 800 + ] + ], + [ + [ + 0 + ], + 819, + [ + 749, + 800 + ] + ], + [ + [ + 5 + ], + 822, + [ + 272, + 820 + ] + ], + [ + [ + 5 + ], + 823, + [ + 275, + 821 + ] + ], + [ + [ + 3 + ], + 825, + [ + 263, + 824 + ] + ], + [ + [ + 5 + ], + 827, + [ + 274, + 826 + ] + ], + [ + [ + 0 + ], + 828, + [ + 762, + 790 + ] + ], + [ + [ + 0 + ], + 829, + [ + 763, + 790 + ] + ], + [ + [ + 0 + ], + 830, + [ + 748, + 788 + ] + ], + [ + [ + 0 + ], + 831, + [ + 749, + 788 + ] + ], + [ + [ + 0 + ], + 832, + [ + 786, + 802, + 816 + ] + ], + [ + [ + 0 + ], + 833, + [ + 241, + 786, + 802, + 816 + ] + ], + [ + [ + 7 + ], + 836, + [ + 283, + 834 + ] + ], + [ + [ + 4 + ], + 837, + [ + 269, + 835 + ] + ], + [ + [ + 2 + ], + 838, + [ + 736, + 782 + ] + ], + [ + [ + 2 + ], + 839, + [ + 257, + 736, + 782 + ] + ], + [ + [ + 4 + ], + 840, + [ + 750, + 812 + ] + ], + [ + [ + 4 + ], + 841, + [ + 268, + 750, + 812 + ] + ], + [ + [ + 1 + ], + 845, + [ + 250, + 844 + ] + ], + [ + [ + 1 + ], + 847, + [ + 249, + 846 + ] + ], + [ + [ + 5 + ], + 851, + [ + 275, + 849 + ] + ], + [ + [ + 2 + ], + 852, + [ + 736, + 796 + ] + ], + [ + [ + 2 + ], + 853, + [ + 257, + 736, + 796 + ] + ], + [ + [ + 2 + ], + 855, + [ + 256, + 854 + ] + ], + [ + [ + 5 + ], + 856, + [ + 896, + 924 + ] + ], + [ + [ + 5 + ], + 857, + [ + 792, + 794, + 896, + 924 + ] + ], + [ + [ + 1 + ], + 859, + [ + 250, + 858 + ] + ], + [ + [ + 1 + ], + 860, + [ + 756, + 768 + ] + ], + [ + [ + 1 + ], + 861, + [ + 248, + 756, + 768 + ] + ], + [ + [ + 4 + ], + 863, + [ + 779, + 807, + 835 + ] + ], + [ + [ + 4 + ], + 865, + [ + 269, + 779, + 807, + 835 + ] + ], + [ + [ + 3 + ], + 867, + [ + 263, + 866 + ] + ], + [ + [ + 4 + ], + 869, + [ + 268, + 868 + ] + ], + [ + [ + 1 + ], + 873, + [ + 249, + 872 + ] + ], + [ + [ + 1 + ], + 874, + [ + 742, + 768 + ] + ], + [ + [ + 1 + ], + 875, + [ + 248, + 742, + 768 + ] + ], + [ + [ + 5 + ], + 877, + [ + 793, + 821, + 849 + ] + ], + [ + [ + 5 + ], + 879, + [ + 275, + 793, + 821, + 849 + ] + ], + [ + [ + 7 + ], + 881, + [ + 764, + 766, + 880 + ] + ], + [ + [ + 5 + ], + 883, + [ + 274, + 882 + ] + ], + [ + [ + 1 + ], + 884, + [ + 844, + 858 + ] + ], + [ + [ + 1 + ], + 885, + [ + 250, + 844, + 858 + ] + ], + [ + [ + 5 + ], + 886, + [ + 900, + 928 + ] + ], + [ + [ + 5 + ], + 887, + [ + 272, + 900, + 928 + ] + ], + [ + [ + 1 + ], + 888, + [ + 742, + 756 + ] + ], + [ + [ + 1 + ], + 889, + [ + 248, + 742, + 756 + ] + ], + [ + [ + 4 + ], + 891, + [ + 779, + 807 + ] + ], + [ + [ + 4 + ], + 893, + [ + 269, + 779, + 807 + ] + ], + [ + [ + 2 + ], + 894, + [ + 782, + 796 + ] + ], + [ + [ + 2 + ], + 895, + [ + 257, + 782, + 796 + ] + ], + [ + [ + 5 + ], + 897, + [ + 792, + 794, + 896 + ] + ], + [ + [ + 4 + ], + 899, + [ + 267, + 898 + ] + ], + [ + [ + 5 + ], + 901, + [ + 272, + 900 + ] + ], + [ + [ + 2 + ], + 903, + [ + 254, + 902 + ] + ], + [ + [ + 2 + ], + 908, + [ + 737, + 798, + 854 + ] + ], + [ + [ + 2 + ], + 909, + [ + 256, + 737, + 798, + 854 + ] + ], + [ + [ + 3 + ], + 913, + [ + 260, + 912 + ] + ], + [ + [ + 2 + ], + 917, + [ + 254, + 916 + ] + ], + [ + [ + 7 + ], + 919, + [ + 286, + 766, + 810, + 880 + ] + ], + [ + [ + 7 + ], + 921, + [ + 286, + 764, + 810, + 880 + ] + ], + [ + [ + 4 + ], + 922, + [ + 750, + 812, + 868 + ] + ], + [ + [ + 4 + ], + 923, + [ + 268, + 750, + 812, + 868 + ] + ], + [ + [ + 5 + ], + 925, + [ + 792, + 794, + 924 + ] + ], + [ + [ + 5 + ], + 929, + [ + 272, + 928 + ] + ], + [ + [ + 7 + ], + 931, + [ + 284, + 930 + ] + ], + [ + [ + 0, + 3, + 5, + 6, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119 + ], + 938, + [ + 932, + 933, + 937 + ] + ], + [ + [ + 0, + 1, + 2, + 3, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71 + ], + 949, + [ + 941 + ] + ], + [ + [ + 0, + 2, + 5, + 7, + 40, + 41, + 42, + 43, + 44, + 45, + 46, + 47 + ], + 953, + [ + 942, + 944, + 951 + ] + ], + [ + [ + 0, + 1, + 6, + 7, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31 + ], + 958, + [ + 943, + 945, + 956 + ] + ], + [ + [ + 2, + 3, + 6, + 7, + 88, + 89, + 90, + 91, + 92, + 93, + 94, + 95 + ], + 961, + [ + 936 + ] + ], + [ + [ + 4, + 5, + 6, + 7, + 56, + 57, + 58, + 59, + 60, + 61, + 62, + 63 + ], + 977, + [ + 959, + 960, + 976 + ] + ], + [ + [ + 0, + 2, + 4, + 6, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ], + 957, + [ + 946, + 947, + 955 + ] + ], + [ + [ + 0, + 3, + 4, + 7, + 72, + 73, + 74, + 75, + 76, + 77, + 78, + 79 + ], + 940, + [ + 934, + 935, + 939 + ] + ], + [ + [ + 1, + 2, + 4, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ], + 985, + [ + 980, + 981, + 984 + ] + ], + [ + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + 983, + [ + 978, + 979, + 982 + ] + ], + [ + [ + 1, + 3, + 4, + 6, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87 + ], + 975, + [ + 966, + 967, + 974 + ] + ], + [ + [ + 1, + 3, + 5, + 7, + 104, + 105, + 106, + 107, + 108, + 109, + 110, + 111 + ], + 973, + [ + 964, + 965, + 972 + ] + ], + [ + [ + 2, + 3, + 4, + 5, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103 + ], + 971, + [ + 962, + 963, + 970 + ] + ], + [ + [ + 4 + ], + 780, + [ + 267, + 778 + ] + ], + [ + [ + 4 + ], + 927, + [ + 267, + 926 + ] + ], + [ + [ + 0 + ], + 954, + [ + 748, + 788, + 800, + 952 + ] + ], + [ + [ + 2 + ], + 969, + [ + 736, + 782, + 796, + 968 + ] + ] + ], + "total_entrance_rank": 160, + "input_sha256": "33fba385c1c69d6cbbe6c76e4d2eca9f69453a910f3c9e5e62f3e7b189510ded", + "output_sha256": "23cb3f6f84283aec61f2c82d9a43884932edc133bdd3fcbb7ee8deee7d7b2d60", + "new_frames": 0, + "donor_slots": 122 +} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-changed-assembly.json b/research/e8-early-reset-kernel/local-evidence/fill160-changed-assembly.json new file mode 100644 index 0000000000..49bc743d6b --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-changed-assembly.json @@ -0,0 +1,103 @@ +{ + "status": "PASS_CONDITIONAL_EARLY_RESET_KERNEL_ASSEMBLY", + "kappa": "226877503533617/200000000000000000", + "kappa_decimal": "0.001134387517668085", + "bit_lower": "227135162827151674463/200000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.2425148511294, + "bit_invoice": { + "prefix_bits": 226, + "charged_prefix_bits": 256, + "coefficient_bits": 226, + "two_level_coefficient_bits": 488, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14214, + "physical": 14223 + }, + "strict_outer_constraints": { + "bit_positive": "8872467297935612265311996023724887079444026648274906152208530433759203319177837210650259669005371362275820329383988955521903622028560849415853454638615608066864507/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "377427617738833047188003976275112920555973351725093847791469566240796680822162789349740330994628637724179670616011044478096377971439150584146545361384391933135493/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "377427617738833037938109060600667608055973351725093847791469566240796680822162789349740330994628637724179670616011044478096377971439150584146545361384391933135493/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "4436233648967806123783530713926831274410017300412565996660238568604695507380388171565926515324848470487650495686623115485131481630291469186023105290746954617578798861384391933135493/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "8872467297935612265311996023724887079444026648274906152208530433759203319177837210650259669005371362275820329383988955521903622028560849415853454638615608066864507/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "188713808869416527841521828235946069339982699587434003339761431395304492619611828434073484675151529512349504313376884514868518369708530813976894709253045382421201138615608066864507/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "4436233648967807100346030713926831274410017300412565996660238568604695507380388171565926515324848470487650495686623115485131481630291469186023105290746954617578798861384391933135493/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "3901813766351032192899653969286073168725589982699587434003339761431395304492619611828434073484675151529512349504313376884514868518369708530813976894709253045382421201138615608066864507/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "8872467297935612265311996023724887079444026648274906152208530433759203319177837210650259669005371362275820329383988955521903622028560849415853454638615608066864507/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "377427617738833056060471274210725185867969375449980927235496214515702833030693223108943650172465848374439339621382406753916707355428106106050167389945241348988947638615608066864507/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "8872467297935612265311996023724887079444026648274906152208530433759203319177837210650259669005371362275820329383988955521903622028560849415853454638615608066864507/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "8872467297935612265311996023724887079444026648274906152208530433759203319177837210650259669005371362275820329383988955521903622028560849415853454638615608066864507/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "188713808869416527841521828235946069339982699587434003339761431395304492619611828434073484675151529512349504313376884514868518369708530813976894709253045382421201138615608066864507/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "4436233648967806123783530713926831274410017300412565996660238568604695507380388171565926515324848470487650495686623115485131481630291469186023105290746954617578798861384391933135493/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "300480769230769230468750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/300822017972997523547983348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961", + "epsilon_below_one": "341248742228293079233348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961/300822017972997523547983348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961", + "guard_width": "341248742228293079233348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961/300822017972997523547983348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961", + "K_geometry": "225701825665305215930795848516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961/300822017972997523547983348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961000000000000000000", + "K_dominates_log": "341248742228292853531522851150694167235691275883518055557709328322471500824626892535479308303420022993978767720136511153652383534128334900068586435419652725504284120818264408888976472201200620528039/300822017972997523547983348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961000000000000000000", + "record_suffix": "341248742228293079233348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961/300822017972997523547983348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961", + "phase_local": "2729989937826344333044770158649757236268969822259515130682453172955769081721758984917132047324492276333482880782164342568723181335054510615619489284283397519585175815409860065192703472201200620528039/2406576143783980188383866788131647280784252318338715425228713992965295197235311008105579031701738368289530861843499460378760080911772487057960629603255844279764663876222390395035775688000000000000000000", + "phase_boundary": "545997987565268625951339653331932608867115151287174947711258800719611293472952500453906685933797644708793405982596039560658451917064864247115806679607973707854074837497544036572153072201200620528039/481315228756796037676773357626329456156850463667743085045742798593059039447062201621115806340347673657906172368699892075752016182354497411592125920651168855952932775244478079007155137600000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "600961538461538460636677982027002476452016651483544089901968460207660571846410750879338100345586123986802621037282703963808642269562567452654989886028439117754921299593019465029417015472201200620528039/1203288071891990094191933394065823640392126159169357712614356996482647598617655504052789515850869184144765430921749730189380040455886243528980314801627922139882331938111195197517887844000000000000000000", + "prime_interval_packing": "341248742228293079233348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961/300822017972997523547983348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961", + "alpha_positive": "682497484456585857644679059914296648079731068222946209146958448984371155238502905732858271020716059185336498157569058498662497505689217145147286842400187696087268648617063788360937472201200620528039/601644035945995047095966697032911820196063079584678856307178498241323799308827752026394757925434592072382715460874865094690020227943121764490157400813961069941165969055597598758943922000000000000000000", + "alpha_below_one": "600961538461538461238322017972997523547983348516455910098031539792339428153589249120661899654413876013197378962717296036191357730437432547345010113971560882245078700406980534970582984527798799379471961/601644035945995047095966697032911820196063079584678856307178498241323799308827752026394757925434592072382715460874865094690020227943121764490157400813961069941165969055597598758943922000000000000000000", + "alpha_below_one_fourth": "149728511502042175916346995198313658400936038827946767867647666111346578671968435100865831210337931958910342367061147215173842559480091223977392063361090079789204223615282335901375043027798799379471961/601644035945995047095966697032911820196063079584678856307178498241323799308827752026394757925434592072382715460874865094690020227943121764490157400813961069941165969055597598758943922000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "2344836976098420193510676463134684600191648353072804326363391011634937620838371314787870221077972223590642596920719830243208616360217781490612726856739874000640737197879875626498538052811802506212840352752017104334293089177048901084800680446537353470617294386811214430270140100251293443994110920239002993522367608275059525391565302391332413407411773/2350172015414043152718619910284811797640871404627651782449916008755171091050108406353104523146228875282744982269042441776132891515402819392539677346929535429457679566623428120152124695312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "16848762996425687664223400358972170816917968592259091132123806563099379862343255812206617952577148574355839031636147571138654720485492194105720067167961436884852547111000064765197954457583396398138415883/2406576143783980188383866788131647280784252318338715425228713992965295197235311008105579031701738368289530861843499460378760080911772487057960629603255844279764663876222390395035775688000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "73514222520971085517828368424125773226560546806171205379033924978613160606881718831248720337856480793936886626176527961041052337188508314005697795127446407669750009240101330927587063/60164403594599504709596669703291182019606307958467885630717849824132379930882775202639475792543459207238271546087486509469002022794312176449015740081396106994116596905559759875894392200000000000000000", + "coordinate_movement_above_kappa": "10064816153698202811996023724887079444026648274906152208530433759203319177837210650259669005371362275820329383988955521903622028560849415853454638615608066864507/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "33374547315928952020579246802086478017385597119258299370790187886201951689997359071523111363282553966746537700222603628930125785985490343891705137615125751689083530836353927629231677/150411008986498761773991674258227955049015769896169714076794624560330949827206938006598689481358648018095678865218716273672505056985780441122539350203490267485291492263899399689735980500000000000000000", + "bulk_exposure_above_kappa": "10064816153698202811996023724887079444026648274906152208530433759203319177837210650259669005371362275820329383988955521903622028560849415853454638615608066864507/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "287291762194771160594643598876550275714452834657030214878682150708243385200639874636792383740134550315303735278974791140983408583536505629800503660612590726387417089393011848041224543/481315228756796037676773357626329456156850463667743085045742798593059039447062201621115806340347673657906172368699892075752016182354497411592125920651168855952932775244478079007155137600000000000000000", + "scalar_work_above_kappa": "2639746882865845897165151388448575018964390332454508787007767750023864524620854877236751434551541935721284107316623685894297083373568771677982833104690875771819417385076254437724010559/2406576143783980188383866788131647280784252318338715425228713992965295197235311008105579031701738368289530861843499460378760080911772487057960629603255844279764663876222390395035775688000000000000000000", + "dimension_above_kappa": "60027904097708187551417552817679903498222060465657887595842696982038825448151149775973684814338259624010448791768994284467884603382215784592036597107112207011581198221886647793855617040101330927587063/60164403594599504709596669703291182019606307958467885630717849824132379930882775202639475792543459207238271546087486509469002022794312176449015740081396106994116596905559759875894392200000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "311520394142209435641276288561336660428649/250000000000000000000000000000000000000000000000", + "cutoff_log2": "23185130825103" + }, + { + "gap": "176893088618673017115874577118573554244498791883627960887011893/125000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "17976320267280630475" + }, + { + "gap": "100446601216000166048687000060642195527842467198087359864189079842807746128419965201/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13937729866159537375127570" + }, + { + "gap": "57037387806575422743517704050705673386957028678681692535946069444765780353445829553761289153154140922557/31250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10806455989528401005328005525410" + }, + { + "gap": "32387990916704760353150825914666341347358363634890884654268960683387773483076106125561477131043904615815070783596658323443449/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "8378659378178361891795724501019415686" + }, + { + "gap": "18391128976275112920555973351725093847791469566240796680822162789349740330994628637724179670616011044478096377971439150584146545361384391933135493/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6496295644341014010249925465570305747717635" + } + ], + "bit_template_sha256": "1460e30dd4aec672be972a81b00e244ed4ab396c6b2d5058e761edc447896623", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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." +} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-initial314-storage-archive.json b/research/e8-early-reset-kernel/local-evidence/fill160-initial314-storage-archive.json new file mode 100644 index 0000000000..99399a7df8 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-initial314-storage-archive.json @@ -0,0 +1,92 @@ +{ + "status": "VERIFIED_LOSSLESS_ARCHIVE", + "archive": "early-kernel121-full314.tar.gz", + "sha256": "a27def8a921ead71f448de4405c908173bb1627dc0777df303ce4af26c42942c", + "source_paths_and_hashes": { + "early-kernel121-full314/export.log": "9e4b041b2e8a963dc2add4c83531030c5984a7fde15384aa773fd88e285fa0a3", + "early-kernel121-full314/FAILURE.json": "d3c7133ac8fbd8acec584f7f04caea693aaa9e2dbb4b0cefb37e9eeaf477752b", + "early-kernel121-full314/full-early-reuse434.log": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6", + "early-kernel121-full314/global-program.log": "80a7db9ff236e1aa5c312c089126ad0e78cf9e0eef804b893b8223053e66b570", + "early-kernel121-full314/integer-source-spans.log": "9cf4d31f2941a5bbecaca75562bb7d45b2770228d605fbda9f9291d97955bd49", + "early-kernel121-full314/kernel-reconstruction.log": "cd88170488b9ccf42b83160b2c4f906e1168ab0b75a75a6fd5a297d61a7e7f2c", + "early-kernel121-full314/baseline/export.log": "4be929eee47c06938fe228adcef2dff245a38d32c9bdcc44808376735c175f1b", + "early-kernel121-full314/baseline/finite-assembly.log": "cd2459472bd6f540e6610b019907b7fc36b1058cc69b1b608e6254e33a8de603", + "early-kernel121-full314/baseline/full-parent433.log": "028a6067de8c3a61dfbf81c5d9c8d3629949b70cc118b64264f25df4b84a64ac", + "early-kernel121-full314/baseline/global-program.log": "0be37fdf7eff901ebf57287eb1f8585d2bc20246e2dca642a83dc1dc36890b87", + "early-kernel121-full314/baseline/independent-audit.log": "25cefe70bf9e210375bb1e0d2856942765c7244601d1faf025147ee68e1a9a78", + "early-kernel121-full314/baseline/reconstruct.log": "ceeb567022f0746ceb350487a568b94cdfeacf3fb55cdc4088fecfab389caefa", + "early-kernel121-full314/baseline/RESULT.json": "7d803e9f4b7cd5c037f646617166781edd387c21de478fe85bb205a11f631887", + "early-kernel121-full314/baseline/two-moments.log": "6d556f02612ff9a8df2239e44b949bc8bf81e03102b54ca762966a7dbd7a598e", + "early-kernel121-full314/changed/bit426-source-centres/bit-kernel-receipt.json": "b8fe5bab7ac4c76e20cc50dea3135c6c7c2654b7d6ee46299a75d13d60e92998", + "early-kernel121-full314/changed/bit426-source-centres/bit-source-centres.json": "5391ede2abb1db54715beb12b687572d8c2822dd46f461a4baf240c6c4412aee", + "early-kernel121-full314/changed/bit426-source-centres/global/GEOMETRY.json": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "early-kernel121-full314/changed/bit426-source-centres/records/249-records.bin": "55eb30cb382849836181bd13e66cf6c642f92cd8b35a59e8d0fe26bdedb23c68", + "early-kernel121-full314/changed/bit426-source-centres/records/249-states.json": "5df470fc44452868cdd45358d70590a6c2cc4b5e37c53f32c3339a2abb4f9d82", + "early-kernel121-full314/changed/bit426-source-centres/records/frames.json": "884480e45865a9d9d57f5f7198844a64271b046bc95e9820efbefb9e10878330", + "early-kernel121-full314/baseline/baseline/BIT-PRICE.json": "5226d8a114fa275f55b1b42ade7b80608d0872c25211ee03f97c572bc626a6d7", + "early-kernel121-full314/baseline/baseline/bit_audit.log": "44419be98ca79bb43560a1aadcd26165b0ce70688a37ff98e4faadb25a9b4485", + "early-kernel121-full314/baseline/baseline/bit_construct.log": "9077796f449db32a77c66375ee579c9a55bfe740b5dcb757cf9b21be37250933", + "early-kernel121-full314/baseline/baseline/bit_export.log": "292c80db0fc7026a134d52d452a77ff13b5f8bc9701fd35b4183619511d96f2e", + "early-kernel121-full314/baseline/baseline/bit_global.log": "ae16ad7c51e77ae56e8d26ab48c30e7cb6c66489d74d5468d3cc1b2e94ef99aa", + "early-kernel121-full314/baseline/baseline/bit_price.log": "e487f4822581a1b8d3746cf8a79ae6394342fca1e9c8533e970f0f0c672b5b4b", + "early-kernel121-full314/baseline/baseline/combined.log": "fef1d8867a50212df361e28e768fffa809a4f4be81de4aaef833d313187dd1eb", + "early-kernel121-full314/baseline/baseline/complex_audit.log": "1538255fccd2438665ca517297bf61460f9ba9123b9aeec9d24e98008b207486", + "early-kernel121-full314/baseline/baseline/complex_construct.log": "ea19af4453ffb1bc9bf33b9c32eef61d7fff652809beaeb77b786ec550f231a9", + "early-kernel121-full314/baseline/baseline/complex_emit.log": "5bc5e23a3a722fe5484b8603dfe38870c66841c1469ba6685eee6a1b7251d566", + "early-kernel121-full314/baseline/baseline/complex_integrate.log": "32938be76f990be50950051263c8a765da1b00aafe9af455ee775f190e4839a7", + "early-kernel121-full314/baseline/baseline/complex_phases.log": "6eabc1c257ca724d71ec058e2dcbf23c1b7140120f76989faae48bbe6a10fad1", + "early-kernel121-full314/baseline/baseline/complex_replay.log": "04a057c55168c3dbfe452a4fc62fc90f55f1844d9e8c62e48e78e59b58ae1137", + "early-kernel121-full314/baseline/baseline/hamming_packets.log": "2338da125e564481cac168871ab334ded72960d35f73fdabc9a83d3428cd1125", + "early-kernel121-full314/baseline/baseline/RESULT.json": "0e703082140ab9638752b5d44bf7bd4cd736999ec21c3b9d20added70d00bcb7", + "early-kernel121-full314/baseline/changed/BIT-PRICE.json": "96ec606146b5157871048e28f6649c31c1b6117d43be732e6a96bcc269c0e1b6", + "early-kernel121-full314/baseline/changed/RESULT.json": "c9ce28f59a5e460d39a888bbbc464e3fd6dd1c0b2c54ae86baeeea99febc8176", + "early-kernel121-full314/baseline/changed/bit426-source-centres/bit-source-centres.json": "98ffef9246c8bf6c537ab5e134321abea05cf0b7830c9e3fd92cbe4e88d8c308", + "early-kernel121-full314/baseline/changed/bit426-source-centres/global/AUDIT.json": "22e0fff97a9fa2dec1c6b89621d470fddad3577b528cde4c9b51a2e442be2244", + "early-kernel121-full314/baseline/changed/bit426-source-centres/global/GEOMETRY.json": "ec1742de8de83751f6c633e54d855a920645bcca40ce2a2d2e2a8349576a00db", + "early-kernel121-full314/baseline/changed/bit426-source-centres/global/GLOBAL-TEMPLATE.json.gz": "299a400379802e8b6eb5e93c19cae941b90a63e70a7f4e1842624d482b28f4ab", + "early-kernel121-full314/baseline/changed/bit426-source-centres/global/GLOBAL.json": "63e9c328cf46df894f3dd64c72e2bd45792c8c33f103031453fb95eb367570cf", + "early-kernel121-full314/baseline/changed/bit426-source-centres/records/249-records.bin": "bd805894638e578daf4f057f61bf6c6810d4460ac98b6238619549a0b5af1b68", + "early-kernel121-full314/baseline/changed/bit426-source-centres/records/249-states.json": "3a00a1377c9e318cad0978d06d5d9fa57939554adec63903b0f00b60ad838e18", + "early-kernel121-full314/baseline/changed/bit426-source-centres/records/frames.json": "884480e45865a9d9d57f5f7198844a64271b046bc95e9820efbefb9e10878330", + "early-kernel121-full314/baseline/baseline/bit426-source-centres/bit-input.json": "7a395dd0452b0832f7ffce7148589eafc627b8cf0349a81803fd897e7a24a388", + "early-kernel121-full314/baseline/baseline/bit426-source-centres/bit-source-centres-receipt.json": "cfcc6b56da99ffefcd38175542e924ab64bb4132749aaa67f9395481dfd0a88f", + "early-kernel121-full314/baseline/baseline/bit426-source-centres/bit-source-centres.json": "015811014644ed62acba1da590d9cf6ebdfe834d89867f8ce2b68722609072ea", + "early-kernel121-full314/baseline/baseline/inherited/bit-geometry.json.gz": "5c980202227859e8bb9b863f94503930c2a59d460c0421356688e2b0d828b4a1", + "early-kernel121-full314/baseline/baseline/split-centres/CANONICAL-WORD.json.gz": "79ff8e19335d5d5d1563ef0bc218106945d6a2b88ece53ee24bb3d88b2594ba3", + "early-kernel121-full314/baseline/baseline/split-centres/CLIFFORD-RECIPES.json": "242fe77af077973e1933524fe5c7ff3b68bef14b1f6938e024827de78d954492", + "early-kernel121-full314/baseline/baseline/split-centres/CLIFFORD-REVIEW.json": "22fe9f8a00218403458750a1cf25d7845fdccc50d161686312a818c0413a7e0f", + "early-kernel121-full314/baseline/baseline/split-centres/FULL-DISCOVERY.json": "ea19af4453ffb1bc9bf33b9c32eef61d7fff652809beaeb77b786ec550f231a9", + "early-kernel121-full314/baseline/baseline/split-centres/FULL-WORD.json.gz": "6d311e5832c1bf86351dd9204971b99b61c0c556bd95d11b0b4b3d15426bab9a", + "early-kernel121-full314/baseline/baseline/split-centres/GLOBAL-TEMPLATE.json.gz": "a761d07a741a482ad0d2af725fa5298146635a3a2fae69e554bf0565d55d26c6", + "early-kernel121-full314/baseline/baseline/split-centres/INDEPENDENT-REPLAY.json": "26c16787d76af2f1f354af7f599cda2b1b1ec285eabf500d7aafb3e4f4782c29", + "early-kernel121-full314/baseline/baseline/split-centres/INTEGRATION.json": "d42bed90a7590aaa7e1100b1adefecefa65bf1ca950587dcaf2727a5b665ba29", + "early-kernel121-full314/baseline/baseline/split-centres/LOCAL-CHECKS.json": "c12c15e92ff3ed47be2c293930fda6a5ff69258fa09b19de3cf8e0067b1ceb7d", + "early-kernel121-full314/baseline/baseline/split-centres/LOCAL-PROGRAMS.json.gz": "65829d265c3ad5955263301b5be23114fec562aa7847d58658df873205aba37e", + "early-kernel121-full314/baseline/baseline/split-centres/SCALAR-FRAME-AUDIT.json": "2240d9aa3b887f96a1414217aee924b44c4b43c13b94d487b86557e270f8ba29", + "early-kernel121-full314/baseline/baseline/work/complex-nine-native/DATA-PHASES.json": "f621f6d4296cb215f334830356c5f79fe10d6d04d15b3ccda76ba0885ab67d0a", + "early-kernel121-full314/baseline/baseline/work/complex-nine-native/GLOBAL-TEMPLATE.json.gz": "1b84904a31a733aab9bfdda3f528c06719f590d2133a43687a8bded955dc991e", + "early-kernel121-full314/baseline/baseline/work/odd-stages/clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "early-kernel121-full314/baseline/baseline/work/pr370-source/research/e8-bit/data/bit/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "early-kernel121-full314/baseline/baseline/work/pr361/code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "early-kernel121-full314/baseline/baseline/work/pr361/code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "early-kernel121-full314/baseline/baseline/work/pr361/code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "early-kernel121-full314/baseline/baseline/work/higher-stage-e8/verified/gcert1-e8-retimed.json.gz": "77b0c0fa19ef3da1c7316010e13493aa5eea1a50c3506eddc08f7480e659878b", + "early-kernel121-full314/baseline/baseline/work/complex-network/hamming/PACKET-PROGRAMS.json.gz": "0a6b0a00664fccad24d4d8508b1880deeb664c8039e20229bce79a2776d76dfb", + "early-kernel121-full314/baseline/baseline/work/complex-network/hamming/PROTOTYPE.json": "894343e2dc8c5506dbbf7d199a83bcdc76b707cf37daf3fbecfc0f0ba4877617", + "early-kernel121-full314/baseline/baseline/bit426-source-centres/global/AUDIT.json": "96c75c4b969e507058412bfefb4bfb89acb0a662c26393096da1d2d242db30e0", + "early-kernel121-full314/baseline/baseline/bit426-source-centres/global/GEOMETRY.json": "86ab83441723c5e76b32db764f38a32afbc52392f24c3a83091ff695cfe3ddf4", + "early-kernel121-full314/baseline/baseline/bit426-source-centres/global/GLOBAL-TEMPLATE.json.gz": "e7882a18ed53e85f4a511a9d3d3502e4484b7e1b2e09f4f9d9a90466838708d0", + "early-kernel121-full314/baseline/baseline/bit426-source-centres/global/GLOBAL.json": "00a6f936b7d02e8a13ed146d3c193e111c8862a03677d9221d0d6e5e6f06c4fc", + "early-kernel121-full314/baseline/baseline/bit426-source-centres/records/249-records.bin": "fcc06bc2315d8da0468334c19716eea65bad38945f342635d999901a82d81816", + "early-kernel121-full314/baseline/baseline/bit426-source-centres/records/249-states.json": "7b2f18002b619a7ceef98d2432a1a6a5683079a48344510f2139a57f54588cad", + "early-kernel121-full314/baseline/baseline/bit426-source-centres/records/frames.json": "884480e45865a9d9d57f5f7198844a64271b046bc95e9820efbefb9e10878330" + }, + "symlinks": { + "early-kernel121-full314/changed/inherited": "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-kernel121-full314/baseline/baseline/inherited", + "early-kernel121-full314/changed/split-centres": "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-kernel121-full314/baseline/baseline/split-centres", + "early-kernel121-full314/changed/work": "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-kernel121-full314/baseline/baseline/work", + "early-kernel121-full314/baseline/changed/inherited": "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-kernel121-full314/baseline/baseline/inherited", + "early-kernel121-full314/baseline/changed/split-centres": "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-kernel121-full314/baseline/baseline/split-centres", + "early-kernel121-full314/baseline/changed/work": "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-kernel121-full314/baseline/baseline/work" + } +} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-initial314-storage-failure.json b/research/e8-early-reset-kernel/local-evidence/fill160-initial314-storage-failure.json new file mode 100644 index 0000000000..127417968c --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-initial314-storage-failure.json @@ -0,0 +1,25 @@ +{ + "error": "RuntimeError(('global-program', 1, 'Traceback (most recent call last):\\n File \"/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-reuse-publication/research/e8-early-reset-kernel/bit_global.py\", line 262, in \\n if __name__==\\'__main__\\': main()\\n ~~~~^^\\n File \"/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-reuse-publication/research/e8-early-reset-kernel/bit_global.py\", line 75, in main\\n write(out/\\'GEOMETRY.json\\',geo)\\n ~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^\\n File \"/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-reuse-publication/research/e8-early-reset-kernel/bit_global.py\", line 48, in write\\n def write(p,x): p.write_text(json.dumps(x,indent=2)+\\'\\\\n\\')\\n ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n File \"/opt/homebrew/Cellar/python@3.14/3.14.8/Frameworks/Python.framework/Versions/3.14/lib/python3.14/pathlib/__init__.py\", line 810, in write_text\\n return f.write(data)\\n ~~~~~~~^^^^^^\\nOSError: [Errno 28] No space left on device\\n'))", + "completed": [ + { + "name": "full-early-reuse434", + "seconds": 110.17919108294882, + "log_sha256": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6" + }, + { + "name": "kernel-reconstruction", + "seconds": 0.13249566603917629, + "log_sha256": "cd88170488b9ccf42b83160b2c4f906e1168ab0b75a75a6fd5a297d61a7e7f2c" + }, + { + "name": "export", + "seconds": 0.39466320804785937, + "log_sha256": "9e4b041b2e8a963dc2add4c83531030c5984a7fde15384aa773fd88e285fa0a3" + }, + { + "name": "integer-source-spans", + "seconds": 0.08786329196300358, + "log_sha256": "9cf4d31f2941a5bbecaca75562bb7d45b2770228d605fbda9f9291d97955bd49" + } + ] +} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-packaging-failure.json b/research/e8-early-reset-kernel/local-evidence/fill160-packaging-failure.json new file mode 100644 index 0000000000..4d279fd711 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-packaging-failure.json @@ -0,0 +1,78 @@ +{ + "status": "REPAIRED_BEFORE_FULL_REPLAY", + "first_published_incomplete_manifest_commit": "c615725c52751a28dbf11d2036e092655b5e8776", + "metadata_commit": "6ce33cf6ba40527d3864c4d70e313c4a79242c4b", + "error": "Broad prose replacement altered numeric substrings inside source-reference metadata. Assertion against the prior pinned SOURCE.json detected the mismatch. Pinned fields restored from exact prior GitHub commit. No numerical witness changed.", + "affected_fields": [ + "kernel_provenance" + ], + "bad_source": { + "parent_pr": 434, + "parent_code_head": "50585107b561a170ccd2c6be09dbe90041ea7f6f", + "parent_manifest_sha256": "4d23bafa43634a59e25f875333408b67cbecb1c912929824b5d45dea4de51da7", + "kernel_source_pr": 435, + "kernel_source_head": "2c9c833ac8709402c37fc88a6a23393fb0d397fb", + "kernel_provenance": { + "head": "2c9c833ac8709402c37fc88a6a23393fb0d397fb", + "files": [ + { + "path": "research/split-centres-kernel/code/bit_audit.py", + "git_blob": "ce13906fe7473999b0ffc721f60fbf853645e371", + "sha256": "c94a1dd1c078deddbde088dc6291190977266009073c4cb4108f9e2faf898381" + }, + { + "path": "research/split-centres-kernel/code/bit_global.py", + "git_blob": "c8f37eb96eb13847fa157c574d7ab445edaae61c", + "sha256": "6d0eea0aaafbe90f1cdb43d7719ceb7b472fbbb6e6a7cb58bcfe82c31ac801c0" + }, + { + "path": "research/split-centres-kernel/code/bit_kernel.py", + "git_blob": "c0b7445f769713d0cd647c1e01f8befc39fffbd1", + "sha256": "14f164fcc0674f73163808a9d9762eb439ea130895f593cb78a6cafaed2dfb11" + }, + { + "path": "research/split-centres-kernel/code/combined.py", + "git_blob": "cead756a2c8fb52d6ba4cc7fe27200950d9a6b2c", + "sha256": "4f1f280b050e9aca659f10ad8996164e47f4e42fe4fd8631c822227413c427ae" + }, + { + "path": "research/split-centres-kernel/stages/kernel-selection.json", + "git_blob": "6426b40cde286df8894a4c7740e8cd5b520130d1", + "sha256": "87994a173608a930c83bfb35a05994f9681031f1b79df148cc2e2579fec9ef1f" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/LICENSE", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/e8core.py", + "git_blob": "f2874bae8ef044240211fd892afb457d13759c74", + "sha256": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/engines/base_two_moment.py", + "git_blob": "14a90fa0e788217856f070382c9e61bd7c603c61", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/engines/moment.py", + "git_blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/engines/outer.py", + "git_blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + { + "path": "research/split-centres-kernel/vendor/kernel417/stages.py", + "git_blob": "9ef95d52f4b2ba0389bb2edb16028da698dd75f4", + "sha256": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668" + } + ] + }, + "scope": "Twelve early resets, 121 revalidated response relations and ten frame retimings, all repriced on the final emitted word.", + "composition_update": "The previous 118-entry R747 word is historical. An additional chronological reset gives R746; filter/remap response relations to entrance rank 160, then apply ten frame changes with unchanged primitive ADD order." + } +} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python311/RESULT.json b/research/e8-early-reset-kernel/local-evidence/fill160-python311/RESULT.json new file mode 100644 index 0000000000..0d39673021 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python311/RESULT.json @@ -0,0 +1,49 @@ +{ + "status": "PASS_FULL_EARLY_RESET_KERNEL_COMPOSITION", + "kappa": "226877503533617/200000000000000000", + "kappa_decimal": "0.001134387517668085", + "source_manifest_sha256": "8fb34d3d7d9819b915a7b734d63b18772c30b1312e89e1e96b8731ce90dd731f", + "checks": [ + { + "name": "full-early-reuse434", + "seconds": 116.33714474993758, + "log_sha256": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6" + }, + { + "name": "kernel-reconstruction", + "seconds": 0.1418250419665128, + "log_sha256": "cd88170488b9ccf42b83160b2c4f906e1168ab0b75a75a6fd5a297d61a7e7f2c" + }, + { + "name": "export", + "seconds": 0.5549206249415874, + "log_sha256": "9e4b041b2e8a963dc2add4c83531030c5984a7fde15384aa773fd88e285fa0a3" + }, + { + "name": "integer-source-spans", + "seconds": 0.06492312496993691, + "log_sha256": "9cf4d31f2941a5bbecaca75562bb7d45b2770228d605fbda9f9291d97955bd49" + }, + { + "name": "global-program", + "seconds": 2.6963896669913083, + "log_sha256": "f19c51b1dcbd8c59ba973d0bb4e11453a069f8f15ad7247f99ce0d2dbf88581d" + }, + { + "name": "independent-audit", + "seconds": 2.9941658749012277, + "log_sha256": "3a92a656a9fbddb0af95935f9b80b16969e92613335a946ddad70fa1d0c64a55" + }, + { + "name": "two-moments", + "seconds": 0.13234495802316815, + "log_sha256": "0bb045a48dfe657d47aec493e632f4c3134b47f5598dd525cb102d21b7b43c2d" + }, + { + "name": "finite-assembly", + "seconds": 0.14394558395724744, + "log_sha256": "282740a9cfd2570265b59855b5e1f4c5136969f18d075653316d50e8e0a8d6ae" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python311/export.log b/research/e8-early-reset-kernel/local-evidence/fill160-python311/export.log new file mode 100644 index 0000000000..3a694a081a --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python311/export.log @@ -0,0 +1 @@ +exported 19064 records, 944 frames, n 986 ZERO 0 diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python311/finite-assembly.log b/research/e8-early-reset-kernel/local-evidence/fill160-python311/finite-assembly.log new file mode 100644 index 0000000000..5d845b9e87 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python311/finite-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_EARLY_RESET_KERNEL_ASSEMBLY 0.001134387517668085 8.2425148511294 {'prefix_bits': 226, 'charged_prefix_bits': 256, 'coefficient_bits': 226, 'two_level_coefficient_bits': 488, 'charged_two_level_coefficient_bits': 512, 'row_coefficient': 18355, 'live': 14214, 'physical': 14223} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python311/full-early-reuse434.log b/research/e8-early-reset-kernel/local-evidence/fill160-python311/full-early-reuse434.log new file mode 100644 index 0000000000..d8e9693dc9 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python311/full-early-reuse434.log @@ -0,0 +1,14 @@ +RUN full-parent433 +PASS full-parent433 +RUN reconstruct +PASS reconstruct +RUN export +PASS export +RUN global-program +PASS global-program +RUN independent-audit +PASS independent-audit +RUN two-moments +PASS two-moments +RUN finite-assembly +PASS finite-assembly diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python311/global-program.log b/research/e8-early-reset-kernel/local-evidence/fill160-python311/global-program.log new file mode 100644 index 0000000000..053a0f47c5 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python311/global-program.log @@ -0,0 +1,2 @@ +Fresh prefix bits 226 charged 256 +{"status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", "h": 8, "m": 64, "v": 120, "R": 746, "replicas": 8, "live": 14214, "physical": 14223, "word_sha256": "5391ede2abb1db54715beb12b687572d8c2822dd46f461a4baf240c6c4412aee", "source_records_sha256": "55eb30cb382849836181bd13e66cf6c642f92cd8b35a59e8d0fe26bdedb23c68", "independent_unbanked_scalar_columns": 7674, "all_scalar_columns_restored": true, "geometry_sha256": "74b85155a0bfd55f0c4630a83e934ff45a56b23848b024774d1dad78a4933ec3", "template_sha256": "1460e30dd4aec672be972a81b00e244ed4ab396c6b2d5058e761edc447896623", "emitted_program_sha256": "9205d8567ceb5ac01d77a8248d9a84bc2b34b0f5c309d167b242f22f88df1032", "emitted_events": 1372608, "local_invocations": 72, "bank_assignments": 53712, "banks_per_stage": 726, "entrance_rank_total": 160, "mixed_width_slots": true, "padding_calls": 0, "profile": {"1": 181656, "2": 73800, "3": 21240, "4": 25776, "5": 7200, "7": 6768, "8": 648, "14": 3840, "28": 3840, "42": 3840}, "paid_calls": 328608, "rank_mass": 907200, "deficit": 2496, "maxchild": 42, "halving_depth": 2, "halving_integer_inequality": [4096, 3528], "local_additions": 14731, "bridge_additions": 17280, "copy_erase_episodes": 648, "global_prefix_bits": 226, "charged_prefix_bits": 256, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 2.6608524170005694} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python311/independent-audit.log b/research/e8-early-reset-kernel/local-evidence/fill160-python311/independent-audit.log new file mode 100644 index 0000000000..1c42179ca2 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python311/independent-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", "template_sha256": "1460e30dd4aec672be972a81b00e244ed4ab396c6b2d5058e761edc447896623", "source_frames": 944, "exact_nested_frame_pairs": 3355, "exact_reflected_pairs": 3355, "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", "exact_bank_families": 6534, "mixed_width_slots": true, "entrance_rank_total": 160, "mutations_rejected": ["omit an idle child", "omit a bridge", "omit terminal exchange", "remove a local invocation", "re-use a helper bank slot", "understate live stock", "omit a local paid move", "wrong reflected copy charge"], "profile": {"1": 181656, "2": 73800, "3": 21240, "4": 25776, "5": 7200, "7": 6768, "8": 648, "14": 3840, "28": 3840, "42": 3840}, "seconds": 2.9549905830062926} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python311/integer-source-spans.log b/research/e8-early-reset-kernel/local-evidence/fill160-python311/integer-source-spans.log new file mode 100644 index 0000000000..24037de73c --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python311/integer-source-spans.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_F2_AND_INTEGER_SOURCE_SPANS", "columns": 986, "profile": {"1": 2523, "4": 358, "2": 1025, "3": 295, "5": 100, "8": 9, "7": 14}, "word_sha256": "5391ede2abb1db54715beb12b687572d8c2822dd46f461a4baf240c6c4412aee"} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python311/kernel-reconstruction.log b/research/e8-early-reset-kernel/local-evidence/fill160-python311/kernel-reconstruction.log new file mode 100644 index 0000000000..e1705ab105 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python311/kernel-reconstruction.log @@ -0,0 +1 @@ +{"status": "PASS_FROZEN_RESET_KERNEL_RETIMING", "input_sha256": "98ffef9246c8bf6c537ab5e134321abea05cf0b7830c9e3fd92cbe4e88d8c308", "reset_sha256": "33fba385c1c69d6cbbe6c76e4d2eca9f69453a910f3c9e5e62f3e7b189510ded", "kernel_sha256": "23cb3f6f84283aec61f2c82d9a43884932edc133bdd3fcbb7ee8deee7d7b2d60", "output_sha256": "5391ede2abb1db54715beb12b687572d8c2822dd46f461a4baf240c6c4412aee", "entries": 121, "total_entrance_rank": 160, "donor_slots": 122, "new_frames": 0, "frame_changes": 10, "additional_resets": 1, "controls": ["wrong reset source", "missing reset parent", "wrong insertion time", "wrong kernel source", "missing donor", "duplicate pivot", "wrong old frame", "duplicate frame change"]} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python311/two-moments.log b/research/e8-early-reset-kernel/local-evidence/fill160-python311/two-moments.log new file mode 100644 index 0000000000..b9d06b96f3 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python311/two-moments.log @@ -0,0 +1 @@ +PASS two rational bit moments 0.001135675814135758372315 diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python314/RESULT.json b/research/e8-early-reset-kernel/local-evidence/fill160-python314/RESULT.json new file mode 100644 index 0000000000..c968b1f5ea --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python314/RESULT.json @@ -0,0 +1,49 @@ +{ + "status": "PASS_FULL_EARLY_RESET_KERNEL_COMPOSITION", + "kappa": "226877503533617/200000000000000000", + "kappa_decimal": "0.001134387517668085", + "source_manifest_sha256": "8fb34d3d7d9819b915a7b734d63b18772c30b1312e89e1e96b8731ce90dd731f", + "checks": [ + { + "name": "full-early-reuse434", + "seconds": 110.97235024999827, + "log_sha256": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6" + }, + { + "name": "kernel-reconstruction", + "seconds": 0.12091325002256781, + "log_sha256": "cd88170488b9ccf42b83160b2c4f906e1168ab0b75a75a6fd5a297d61a7e7f2c" + }, + { + "name": "export", + "seconds": 0.38167262508068234, + "log_sha256": "9e4b041b2e8a963dc2add4c83531030c5984a7fde15384aa773fd88e285fa0a3" + }, + { + "name": "integer-source-spans", + "seconds": 0.08635591703932732, + "log_sha256": "9cf4d31f2941a5bbecaca75562bb7d45b2770228d605fbda9f9291d97955bd49" + }, + { + "name": "global-program", + "seconds": 2.7085493330378085, + "log_sha256": "eb30fd19c5707570c1cb33586e513f6a0b03ed2aece03a97ea1b4fcbce9be729" + }, + { + "name": "independent-audit", + "seconds": 1.90598908404354, + "log_sha256": "8d5f85d6ddc0c4f662bc4c7aa010eba3f96cd544a5f2f3b2b55c22cf116f0596" + }, + { + "name": "two-moments", + "seconds": 0.1436035829829052, + "log_sha256": "0bb045a48dfe657d47aec493e632f4c3134b47f5598dd525cb102d21b7b43c2d" + }, + { + "name": "finite-assembly", + "seconds": 0.15973495796788484, + "log_sha256": "282740a9cfd2570265b59855b5e1f4c5136969f18d075653316d50e8e0a8d6ae" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python314/export.log b/research/e8-early-reset-kernel/local-evidence/fill160-python314/export.log new file mode 100644 index 0000000000..3a694a081a --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python314/export.log @@ -0,0 +1 @@ +exported 19064 records, 944 frames, n 986 ZERO 0 diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python314/finite-assembly.log b/research/e8-early-reset-kernel/local-evidence/fill160-python314/finite-assembly.log new file mode 100644 index 0000000000..5d845b9e87 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python314/finite-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_EARLY_RESET_KERNEL_ASSEMBLY 0.001134387517668085 8.2425148511294 {'prefix_bits': 226, 'charged_prefix_bits': 256, 'coefficient_bits': 226, 'two_level_coefficient_bits': 488, 'charged_two_level_coefficient_bits': 512, 'row_coefficient': 18355, 'live': 14214, 'physical': 14223} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python314/full-early-reuse434.log b/research/e8-early-reset-kernel/local-evidence/fill160-python314/full-early-reuse434.log new file mode 100644 index 0000000000..d8e9693dc9 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python314/full-early-reuse434.log @@ -0,0 +1,14 @@ +RUN full-parent433 +PASS full-parent433 +RUN reconstruct +PASS reconstruct +RUN export +PASS export +RUN global-program +PASS global-program +RUN independent-audit +PASS independent-audit +RUN two-moments +PASS two-moments +RUN finite-assembly +PASS finite-assembly diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python314/global-program.log b/research/e8-early-reset-kernel/local-evidence/fill160-python314/global-program.log new file mode 100644 index 0000000000..708c7bcd5a --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python314/global-program.log @@ -0,0 +1,2 @@ +Fresh prefix bits 226 charged 256 +{"status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", "h": 8, "m": 64, "v": 120, "R": 746, "replicas": 8, "live": 14214, "physical": 14223, "word_sha256": "5391ede2abb1db54715beb12b687572d8c2822dd46f461a4baf240c6c4412aee", "source_records_sha256": "55eb30cb382849836181bd13e66cf6c642f92cd8b35a59e8d0fe26bdedb23c68", "independent_unbanked_scalar_columns": 7674, "all_scalar_columns_restored": true, "geometry_sha256": "74b85155a0bfd55f0c4630a83e934ff45a56b23848b024774d1dad78a4933ec3", "template_sha256": "1460e30dd4aec672be972a81b00e244ed4ab396c6b2d5058e761edc447896623", "emitted_program_sha256": "9205d8567ceb5ac01d77a8248d9a84bc2b34b0f5c309d167b242f22f88df1032", "emitted_events": 1372608, "local_invocations": 72, "bank_assignments": 53712, "banks_per_stage": 726, "entrance_rank_total": 160, "mixed_width_slots": true, "padding_calls": 0, "profile": {"1": 181656, "2": 73800, "3": 21240, "4": 25776, "5": 7200, "7": 6768, "8": 648, "14": 3840, "28": 3840, "42": 3840}, "paid_calls": 328608, "rank_mass": 907200, "deficit": 2496, "maxchild": 42, "halving_depth": 2, "halving_integer_inequality": [4096, 3528], "local_additions": 14731, "bridge_additions": 17280, "copy_erase_episodes": 648, "global_prefix_bits": 226, "charged_prefix_bits": 256, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 2.6492195419268683} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python314/independent-audit.log b/research/e8-early-reset-kernel/local-evidence/fill160-python314/independent-audit.log new file mode 100644 index 0000000000..6be917fed4 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python314/independent-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", "template_sha256": "1460e30dd4aec672be972a81b00e244ed4ab396c6b2d5058e761edc447896623", "source_frames": 944, "exact_nested_frame_pairs": 3355, "exact_reflected_pairs": 3355, "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", "exact_bank_families": 6534, "mixed_width_slots": true, "entrance_rank_total": 160, "mutations_rejected": ["omit an idle child", "omit a bridge", "omit terminal exchange", "remove a local invocation", "re-use a helper bank slot", "understate live stock", "omit a local paid move", "wrong reflected copy charge"], "profile": {"1": 181656, "2": 73800, "3": 21240, "4": 25776, "5": 7200, "7": 6768, "8": 648, "14": 3840, "28": 3840, "42": 3840}, "seconds": 1.8504693750292063} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python314/integer-source-spans.log b/research/e8-early-reset-kernel/local-evidence/fill160-python314/integer-source-spans.log new file mode 100644 index 0000000000..24037de73c --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python314/integer-source-spans.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_F2_AND_INTEGER_SOURCE_SPANS", "columns": 986, "profile": {"1": 2523, "4": 358, "2": 1025, "3": 295, "5": 100, "8": 9, "7": 14}, "word_sha256": "5391ede2abb1db54715beb12b687572d8c2822dd46f461a4baf240c6c4412aee"} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python314/kernel-reconstruction.log b/research/e8-early-reset-kernel/local-evidence/fill160-python314/kernel-reconstruction.log new file mode 100644 index 0000000000..e1705ab105 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python314/kernel-reconstruction.log @@ -0,0 +1 @@ +{"status": "PASS_FROZEN_RESET_KERNEL_RETIMING", "input_sha256": "98ffef9246c8bf6c537ab5e134321abea05cf0b7830c9e3fd92cbe4e88d8c308", "reset_sha256": "33fba385c1c69d6cbbe6c76e4d2eca9f69453a910f3c9e5e62f3e7b189510ded", "kernel_sha256": "23cb3f6f84283aec61f2c82d9a43884932edc133bdd3fcbb7ee8deee7d7b2d60", "output_sha256": "5391ede2abb1db54715beb12b687572d8c2822dd46f461a4baf240c6c4412aee", "entries": 121, "total_entrance_rank": 160, "donor_slots": 122, "new_frames": 0, "frame_changes": 10, "additional_resets": 1, "controls": ["wrong reset source", "missing reset parent", "wrong insertion time", "wrong kernel source", "missing donor", "duplicate pivot", "wrong old frame", "duplicate frame change"]} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-python314/two-moments.log b/research/e8-early-reset-kernel/local-evidence/fill160-python314/two-moments.log new file mode 100644 index 0000000000..b9d06b96f3 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-python314/two-moments.log @@ -0,0 +1 @@ +PASS two rational bit moments 0.001135675814135758372315 diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-tested-manifest.json b/research/e8-early-reset-kernel/local-evidence/fill160-tested-manifest.json new file mode 100644 index 0000000000..4cb7004bb6 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-tested-manifest.json @@ -0,0 +1,66 @@ +{ + "files": { + "apply.py": "11eeac4b02521a3286160a87fdac080fefb11c25779d9eaec9f44b18d7b6c1ae", + "bit_audit.py": "f5d81ae080ee55d174feef6de2314113864a7e3e3d29c5559071c306edd2f272", + "bit_global.py": "50c76ed71ced48af2eacb8d8a91ab43dee035a3c818dcf85d0ad7e1ee032e5d9", + "bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "combined.py": "83ba7f8deda264c283176c564d9d93dc8948edae0a8e8ed216b48240b5f74c85", + "EXPECTED.json": "9a55f73c6a3dd2b06377cbca76299b6672071419ebfe901aff9054ccca4b727a", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "268f7fe8538d02bd8cc8f8b895d88035803fee05186ceb469204c7666190fbc7", + "PROOF.md": "4d7198ce615099b48013d23df6b8fa421428a78ce4de79e3757e8962e4d82a95", + "README.md": "a4ec63243ba9abab6a5a5b19e2e47edace8af6a3c519c5580e03a3ab99c76f3c", + "RESET12.json": "a310f1d3a8ec714e6dd12ec5364d16b9fa254527cf684b09dc1846d064e9b41c", + "RETIMING.json": "602d826e7bafd7faae4b0a7fd17be7d3edfd45f11a88f57ccd5b78e3f11c36f1", + "SELECTION.json": "b4b852b6286f5181fe58c3206a94426fae52acd246c0314eb8fca893f012a6f4", + "SOURCE.json": "cadea46917e4c63babc6dc33fe8acf90f8916fbb1599393326e5297fb251bdd3", + "source_span.py": "4772d177f37254c6f854af5ee3871aca193cfb24307a53c143c3bf517e56631e", + "VALIDATION.json": "c69b8e37d53aaddb03e10f15ed9a66cf3372126fec70ae6ddd0955165febc0bc", + "verify.py": "16c07414bc956744dc93b8e35b642267ea9819be922b0d3e081c543fdbf92a70", + "local-evidence/ASSEMBLY-118.json": "3e610791f14777e6024adfe562175d51cd5dbeb2ce585f59d56d58092277bac1", + "local-evidence/ASSEMBLY.json": "7c3cc4b503e4cf0fd3e050be46ad0da183c5b1c490f4901245df944fd9d6194e", + "local-evidence/AUDIT-118.json": "cd37be4c487f924490c78052a36a8e091b261a7beb60f67f495779078f6ab906", + "local-evidence/AUDIT.json": "76a146a9123d8b653e6e46ff93f153653f9cefd0f5c3fdd264a59f1322110262", + "local-evidence/BIT-PRICE-118.json": "97e29c84202255a6468bb0444f3438910e7ab4e19bbadb89636ede78376a9306", + "local-evidence/BIT-PRICE.json": "9a4a320cab1ce62b0c2329ac1bf3b81f73580fd603a406e4bfaae2962dfdad35", + "local-evidence/fill160-changed-assembly.json": "9a3f1c219d93dc27744a89018722b2bc82f96a3ba58fb8557804d30ba62b051d", + "local-evidence/fill160-packaging-failure.json": "bb0a5af0c10f33271d0ba6b6a731cab960ea5def6ac7208f59b94677ba6644e4", + "local-evidence/FULL-PYTHON311.json": "62b37525bf7b60c0d9101ed571681f3bf46ea75df065939864307e4986018332", + "local-evidence/FULL-PYTHON314.json": "85797531db037d06fb597a4c9b6ef6bd71e6a0ab4f220ae70b1b6bf3aeda205f", + "local-evidence/full118-python311.json": "368b3d851919f77e6865b51cec731fc5bd0f16e0bd494fbaa2df5b57b9342d1c", + "local-evidence/full118-python314.json": "2bb62d9bc89834463959ce755f886e58793ded811dba26b038c20626ef90c814", + "local-evidence/GLOBAL-118.json": "a7491dfd2ff51d0574a6e46e3b100531969219dc41d93afbaca38ee3afbfa7e7", + "local-evidence/GLOBAL.json": "16c4e829eea1b2d12b70cec7e6a9c0e33ea0eae98a40894a3b779790fd2efbb3", + "local-evidence/reset12-reconstruction.json": "178f9fef29a4f7e18c9a3abebf455bb7c0545a85e2bdfdda6d6def5afc8f9239", + "local-evidence/reset12-retimed-assembly.json": "a54ca18bca34c7407872dded5402b463be2c76bab271248e519bbd0492b3f575", + "local-evidence/reset12-tested-manifest.json": "ad6b66aba41895ac66bd8e988717ab2e16ca974f93a6fa309c50de0b09f1a28e", + "local-evidence/reset12-verification-provenance.json": "7c56f467e0e6de0549c37f2b37023f10b46209a0c71f03d1da818368882971f2", + "local-evidence/SOURCE-SPANS-118.log": "115ea64de78aaa3ea6edc9684f66f9ec6f88c806608caf85ae32853059c14f37", + "local-evidence/SOURCE-SPANS.log": "bdf95dbce8337be57aab8a3d3b42a711ee276496c40cbb4c5356fc9cc9b2e811", + "local-evidence/VALIDATION-110-ENTRIES.json": "77ad775cf69f5d913568b6276b0dfeb2eaef0306f57b71c0a467bff793807267", + "vendor/kernel417/e8core.py": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29", + "vendor/kernel417/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/kernel417/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "vendor/kernel417/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/kernel417/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/kernel417/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "local-evidence/reset12-python311/export.log": "d4ea7999a985f7287ace0551ca025d99c304cb78cbc30eee6223585ed9af109f", + "local-evidence/reset12-python311/finite-assembly.log": "8b5598ec4d2b0dfadde4ae6f3dbe913b6e213937db89b485234c4d323fa38db8", + "local-evidence/reset12-python311/full-early-reuse434.log": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6", + "local-evidence/reset12-python311/global-program.log": "bea6486730cae31b0e9de7b4c20de1786a4aa2ff54831f3e6f3c4b5347a0e608", + "local-evidence/reset12-python311/independent-audit.log": "a1443ac2d80c54dc2f3fb6e500a05e4e2598624314a665581d1ca059e4d14e53", + "local-evidence/reset12-python311/integer-source-spans.log": "7e45fe477c18d80a06f9cbd2655394950953ad8c9cc12e7d512bd1d39c890126", + "local-evidence/reset12-python311/kernel-reconstruction.log": "14e8624214481449cc954f2490f8873de6e033f990b1e945acf466ff92077616", + "local-evidence/reset12-python311/RESULT.json": "8cb22e90ae44fcb3977187f132ffcc08a1c426a6bb43a97ecfa37cedfc931e7d", + "local-evidence/reset12-python311/two-moments.log": "c866854ad55093f6feb992efced66f2cd2a1076cb7c9374fdb22565f3d2eaf82", + "local-evidence/reset12-python314/export.log": "d4ea7999a985f7287ace0551ca025d99c304cb78cbc30eee6223585ed9af109f", + "local-evidence/reset12-python314/finite-assembly.log": "8b5598ec4d2b0dfadde4ae6f3dbe913b6e213937db89b485234c4d323fa38db8", + "local-evidence/reset12-python314/full-early-reuse434.log": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6", + "local-evidence/reset12-python314/global-program.log": "52fd486807379dc18d48e24cc0ebdc21a03c57847a4f1be478463caa41d05ecf", + "local-evidence/reset12-python314/independent-audit.log": "9851de62a8b18ef2e34ef94aa1d31d1c69748b59c44e5909cc7ae26b83091d43", + "local-evidence/reset12-python314/integer-source-spans.log": "7e45fe477c18d80a06f9cbd2655394950953ad8c9cc12e7d512bd1d39c890126", + "local-evidence/reset12-python314/kernel-reconstruction.log": "14e8624214481449cc954f2490f8873de6e033f990b1e945acf466ff92077616", + "local-evidence/reset12-python314/RESULT.json": "db6f8600d45da3dc50780c3e8ac1d86be4ae047ef32b03fc8619eddb0d660e5d", + "local-evidence/reset12-python314/two-moments.log": "c866854ad55093f6feb992efced66f2cd2a1076cb7c9374fdb22565f3d2eaf82" + } +} diff --git a/research/e8-early-reset-kernel/local-evidence/fill160-verification-provenance.json b/research/e8-early-reset-kernel/local-evidence/fill160-verification-provenance.json new file mode 100644 index 0000000000..41ef788e5c --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/fill160-verification-provenance.json @@ -0,0 +1,5 @@ +{ + "tested_code_commit": "f5e0af60ae91e39528d63782ac06f4c6f0e956e3", + "tested_manifest_sha256": "8fb34d3d7d9819b915a7b734d63b18772c30b1312e89e1e96b8731ce90dd731f", + "publication_changes": "Documentation and evidence only; executable code, witnesses and expected outputs unchanged from both successful runs." +} diff --git a/research/e8-early-reset-kernel/local-evidence/full118-python311.json b/research/e8-early-reset-kernel/local-evidence/full118-python311.json new file mode 100644 index 0000000000..b21cc704d5 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/full118-python311.json @@ -0,0 +1,49 @@ +{ + "status": "PASS_FULL_EARLY_RESET_KERNEL_COMPOSITION", + "kappa": "45340333148791/40000000000000000", + "kappa_decimal": "0.001133508328719775", + "source_manifest_sha256": "df718aaeeb1fc73421109d91663c6a5829219ccfc48b88687fc875cfc6955012", + "checks": [ + { + "name": "full-early-reuse434", + "seconds": 121.56365308398381, + "log_sha256": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6" + }, + { + "name": "kernel-reconstruction", + "seconds": 0.07501316606067121, + "log_sha256": "fdee05569fd6c1227d3fdac42f3054ca5f909e83c6a27da1b4218331da785102" + }, + { + "name": "export", + "seconds": 0.5756898750551045, + "log_sha256": "b12ba3c1d79793c1dc63a96a2275b9180d27536ec3f3355aa4a93947177efeb0" + }, + { + "name": "integer-source-spans", + "seconds": 0.06597908306866884, + "log_sha256": "115ea64de78aaa3ea6edc9684f66f9ec6f88c806608caf85ae32853059c14f37" + }, + { + "name": "global-program", + "seconds": 2.9918768339557573, + "log_sha256": "fad57b028db849255b61c1e29af13c1032e3a1bef9c073590c94de8f5033c4d3" + }, + { + "name": "independent-audit", + "seconds": 3.200223374995403, + "log_sha256": "ef941de8a12fd910aeaa1095bc18bc805cd7dee045794f0b944464391ea36bec" + }, + { + "name": "two-moments", + "seconds": 0.14873512496706098, + "log_sha256": "98d0243f63083c3904760bb64b266759447a118ec4fbf35bd7ce27ce2811f244" + }, + { + "name": "finite-assembly", + "seconds": 0.15828608407173306, + "log_sha256": "68a90258d62698774d5aea32775020dd38cdc4859410d5ce58e5b8cfc1dc2547" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-kernel/local-evidence/full118-python314.json b/research/e8-early-reset-kernel/local-evidence/full118-python314.json new file mode 100644 index 0000000000..1acf7198a7 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/full118-python314.json @@ -0,0 +1,49 @@ +{ + "status": "PASS_FULL_EARLY_RESET_KERNEL_COMPOSITION", + "kappa": "45340333148791/40000000000000000", + "kappa_decimal": "0.001133508328719775", + "source_manifest_sha256": "df718aaeeb1fc73421109d91663c6a5829219ccfc48b88687fc875cfc6955012", + "checks": [ + { + "name": "full-early-reuse434", + "seconds": 112.24914187507238, + "log_sha256": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6" + }, + { + "name": "kernel-reconstruction", + "seconds": 0.06330962502397597, + "log_sha256": "fdee05569fd6c1227d3fdac42f3054ca5f909e83c6a27da1b4218331da785102" + }, + { + "name": "export", + "seconds": 0.38195537496358156, + "log_sha256": "b12ba3c1d79793c1dc63a96a2275b9180d27536ec3f3355aa4a93947177efeb0" + }, + { + "name": "integer-source-spans", + "seconds": 0.0829408330610022, + "log_sha256": "115ea64de78aaa3ea6edc9684f66f9ec6f88c806608caf85ae32853059c14f37" + }, + { + "name": "global-program", + "seconds": 2.733515041996725, + "log_sha256": "024192f433a71220e27a4b1090d1c1a1647150e5abd0e6d220721bd75bf79e1e" + }, + { + "name": "independent-audit", + "seconds": 1.9839933750918135, + "log_sha256": "8d750a03e66a01fd09034f5d81a0e256f46bc44bc0d955bdf96d2e6bac9c876b" + }, + { + "name": "two-moments", + "seconds": 0.15150654094759375, + "log_sha256": "98d0243f63083c3904760bb64b266759447a118ec4fbf35bd7ce27ce2811f244" + }, + { + "name": "finite-assembly", + "seconds": 0.17155462503433228, + "log_sha256": "68a90258d62698774d5aea32775020dd38cdc4859410d5ce58e5b8cfc1dc2547" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python311/RESULT.json b/research/e8-early-reset-kernel/local-evidence/reset12-python311/RESULT.json new file mode 100644 index 0000000000..3d329a0c6d --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python311/RESULT.json @@ -0,0 +1,49 @@ +{ + "status": "PASS_FULL_EARLY_RESET_KERNEL_COMPOSITION", + "kappa": "1134386495022041/1000000000000000000", + "kappa_decimal": "0.001134386495022041", + "source_manifest_sha256": "ad6b66aba41895ac66bd8e988717ab2e16ca974f93a6fa309c50de0b09f1a28e", + "checks": [ + { + "name": "full-early-reuse434", + "seconds": 118.25037250004243, + "log_sha256": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6" + }, + { + "name": "kernel-reconstruction", + "seconds": 0.14224062499124557, + "log_sha256": "14e8624214481449cc954f2490f8873de6e033f990b1e945acf466ff92077616" + }, + { + "name": "export", + "seconds": 0.5562727079959586, + "log_sha256": "d4ea7999a985f7287ace0551ca025d99c304cb78cbc30eee6223585ed9af109f" + }, + { + "name": "integer-source-spans", + "seconds": 0.06550845806486905, + "log_sha256": "7e45fe477c18d80a06f9cbd2655394950953ad8c9cc12e7d512bd1d39c890126" + }, + { + "name": "global-program", + "seconds": 2.6464757920475677, + "log_sha256": "bea6486730cae31b0e9de7b4c20de1786a4aa2ff54831f3e6f3c4b5347a0e608" + }, + { + "name": "independent-audit", + "seconds": 3.00883733399678, + "log_sha256": "a1443ac2d80c54dc2f3fb6e500a05e4e2598624314a665581d1ca059e4d14e53" + }, + { + "name": "two-moments", + "seconds": 0.13161599996965379, + "log_sha256": "c866854ad55093f6feb992efced66f2cd2a1076cb7c9374fdb22565f3d2eaf82" + }, + { + "name": "finite-assembly", + "seconds": 0.14666924998164177, + "log_sha256": "8b5598ec4d2b0dfadde4ae6f3dbe913b6e213937db89b485234c4d323fa38db8" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python311/export.log b/research/e8-early-reset-kernel/local-evidence/reset12-python311/export.log new file mode 100644 index 0000000000..faa64f2c75 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python311/export.log @@ -0,0 +1 @@ +exported 19041 records, 944 frames, n 986 ZERO 0 diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python311/finite-assembly.log b/research/e8-early-reset-kernel/local-evidence/reset12-python311/finite-assembly.log new file mode 100644 index 0000000000..d8d183fe0a --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python311/finite-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_EARLY_RESET_KERNEL_ASSEMBLY 0.001134386495022041 8.242417270912869 {'prefix_bits': 226, 'charged_prefix_bits': 256, 'coefficient_bits': 226, 'two_level_coefficient_bits': 488, 'charged_two_level_coefficient_bits': 512, 'row_coefficient': 18355, 'live': 14223, 'physical': 14232} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python311/full-early-reuse434.log b/research/e8-early-reset-kernel/local-evidence/reset12-python311/full-early-reuse434.log new file mode 100644 index 0000000000..d8e9693dc9 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python311/full-early-reuse434.log @@ -0,0 +1,14 @@ +RUN full-parent433 +PASS full-parent433 +RUN reconstruct +PASS reconstruct +RUN export +PASS export +RUN global-program +PASS global-program +RUN independent-audit +PASS independent-audit +RUN two-moments +PASS two-moments +RUN finite-assembly +PASS finite-assembly diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python311/global-program.log b/research/e8-early-reset-kernel/local-evidence/reset12-python311/global-program.log new file mode 100644 index 0000000000..f1f539d110 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python311/global-program.log @@ -0,0 +1,2 @@ +Fresh prefix bits 226 charged 256 +{"status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", "h": 8, "m": 64, "v": 120, "R": 746, "replicas": 8, "live": 14223, "physical": 14232, "word_sha256": "a64ccdd734888efe0cf36962b614b405583d68da478205e37ed0b82fa307081d", "source_records_sha256": "5b83af9e7996b8e388dee898de3eaa6bf7b7c099e41589745ab48ecbdb14feee", "independent_unbanked_scalar_columns": 7674, "all_scalar_columns_restored": true, "geometry_sha256": "4ec791160bf348c5445f92869ff688bfb41d215f5c614b73e2540763d63a72f0", "template_sha256": "f4104a1c51bed199e02f7d9edd7436cd5ad26ceca49b3c34106efc1a2bd59b64", "emitted_program_sha256": "3c616050a58352f755bf9442c609253dc4e2aedd26cdc1ff266f352807b564da", "emitted_events": 1370952, "local_invocations": 72, "bank_assignments": 53712, "banks_per_stage": 727, "entrance_rank_total": 152, "mixed_width_slots": true, "padding_calls": 0, "profile": {"1": 181080, "2": 73512, "3": 21528, "4": 25272, "5": 7776, "7": 6768, "8": 648, "14": 3840, "28": 3840, "42": 3840}, "paid_calls": 328104, "rank_mass": 907776, "deficit": 2496, "maxchild": 42, "halving_depth": 2, "halving_integer_inequality": [4096, 3528], "local_additions": 14715, "bridge_additions": 17280, "copy_erase_episodes": 648, "global_prefix_bits": 226, "charged_prefix_bits": 256, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 2.610876874998212} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python311/independent-audit.log b/research/e8-early-reset-kernel/local-evidence/reset12-python311/independent-audit.log new file mode 100644 index 0000000000..02a33c2016 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python311/independent-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", "template_sha256": "f4104a1c51bed199e02f7d9edd7436cd5ad26ceca49b3c34106efc1a2bd59b64", "source_frames": 944, "exact_nested_frame_pairs": 3357, "exact_reflected_pairs": 3357, "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", "exact_bank_families": 6543, "mixed_width_slots": true, "entrance_rank_total": 152, "mutations_rejected": ["omit an idle child", "omit a bridge", "omit terminal exchange", "remove a local invocation", "re-use a helper bank slot", "understate live stock", "omit a local paid move", "wrong reflected copy charge"], "profile": {"1": 181080, "2": 73512, "3": 21528, "4": 25272, "5": 7776, "7": 6768, "8": 648, "14": 3840, "28": 3840, "42": 3840}, "seconds": 2.973931625019759} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python311/integer-source-spans.log b/research/e8-early-reset-kernel/local-evidence/reset12-python311/integer-source-spans.log new file mode 100644 index 0000000000..3095912ab1 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python311/integer-source-spans.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_F2_AND_INTEGER_SOURCE_SPANS", "columns": 986, "profile": {"1": 2515, "4": 351, "2": 1021, "3": 299, "5": 108, "8": 9, "7": 14}, "word_sha256": "a64ccdd734888efe0cf36962b614b405583d68da478205e37ed0b82fa307081d"} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python311/kernel-reconstruction.log b/research/e8-early-reset-kernel/local-evidence/reset12-python311/kernel-reconstruction.log new file mode 100644 index 0000000000..36899d0eec --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python311/kernel-reconstruction.log @@ -0,0 +1 @@ +{"status": "PASS_FROZEN_RESET_KERNEL_RETIMING", "input_sha256": "98ffef9246c8bf6c537ab5e134321abea05cf0b7830c9e3fd92cbe4e88d8c308", "reset_sha256": "33fba385c1c69d6cbbe6c76e4d2eca9f69453a910f3c9e5e62f3e7b189510ded", "kernel_sha256": "ad81e6d6c6bfde1c2db9d9f0b4767af4db1affdfa2912038426360cb0895ef65", "output_sha256": "a64ccdd734888efe0cf36962b614b405583d68da478205e37ed0b82fa307081d", "entries": 116, "total_entrance_rank": 152, "donor_slots": 115, "new_frames": 0, "frame_changes": 10, "additional_resets": 1, "controls": ["wrong reset source", "missing reset parent", "wrong insertion time", "wrong kernel source", "missing donor", "duplicate pivot", "wrong old frame", "duplicate frame change"]} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python311/two-moments.log b/research/e8-early-reset-kernel/local-evidence/reset12-python311/two-moments.log new file mode 100644 index 0000000000..3523e1d748 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python311/two-moments.log @@ -0,0 +1 @@ +PASS two rational bit moments 0.001135674789165607479118 diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python314/RESULT.json b/research/e8-early-reset-kernel/local-evidence/reset12-python314/RESULT.json new file mode 100644 index 0000000000..e14f143ee3 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python314/RESULT.json @@ -0,0 +1,49 @@ +{ + "status": "PASS_FULL_EARLY_RESET_KERNEL_COMPOSITION", + "kappa": "1134386495022041/1000000000000000000", + "kappa_decimal": "0.001134386495022041", + "source_manifest_sha256": "ad6b66aba41895ac66bd8e988717ab2e16ca974f93a6fa309c50de0b09f1a28e", + "checks": [ + { + "name": "full-early-reuse434", + "seconds": 108.24978258297779, + "log_sha256": "c0edbb5dd9975ae1879cf20f98ed89b925ff3f9b695f027aca13f4930a6f81a6" + }, + { + "name": "kernel-reconstruction", + "seconds": 0.1143968750257045, + "log_sha256": "14e8624214481449cc954f2490f8873de6e033f990b1e945acf466ff92077616" + }, + { + "name": "export", + "seconds": 0.36100183392409235, + "log_sha256": "d4ea7999a985f7287ace0551ca025d99c304cb78cbc30eee6223585ed9af109f" + }, + { + "name": "integer-source-spans", + "seconds": 0.07987483299802989, + "log_sha256": "7e45fe477c18d80a06f9cbd2655394950953ad8c9cc12e7d512bd1d39c890126" + }, + { + "name": "global-program", + "seconds": 2.5945157079258934, + "log_sha256": "52fd486807379dc18d48e24cc0ebdc21a03c57847a4f1be478463caa41d05ecf" + }, + { + "name": "independent-audit", + "seconds": 1.8685832909541205, + "log_sha256": "9851de62a8b18ef2e34ef94aa1d31d1c69748b59c44e5909cc7ae26b83091d43" + }, + { + "name": "two-moments", + "seconds": 0.1405484579736367, + "log_sha256": "c866854ad55093f6feb992efced66f2cd2a1076cb7c9374fdb22565f3d2eaf82" + }, + { + "name": "finite-assembly", + "seconds": 0.15280125010758638, + "log_sha256": "8b5598ec4d2b0dfadde4ae6f3dbe913b6e213937db89b485234c4d323fa38db8" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python314/export.log b/research/e8-early-reset-kernel/local-evidence/reset12-python314/export.log new file mode 100644 index 0000000000..faa64f2c75 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python314/export.log @@ -0,0 +1 @@ +exported 19041 records, 944 frames, n 986 ZERO 0 diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python314/finite-assembly.log b/research/e8-early-reset-kernel/local-evidence/reset12-python314/finite-assembly.log new file mode 100644 index 0000000000..d8d183fe0a --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python314/finite-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_EARLY_RESET_KERNEL_ASSEMBLY 0.001134386495022041 8.242417270912869 {'prefix_bits': 226, 'charged_prefix_bits': 256, 'coefficient_bits': 226, 'two_level_coefficient_bits': 488, 'charged_two_level_coefficient_bits': 512, 'row_coefficient': 18355, 'live': 14223, 'physical': 14232} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python314/full-early-reuse434.log b/research/e8-early-reset-kernel/local-evidence/reset12-python314/full-early-reuse434.log new file mode 100644 index 0000000000..d8e9693dc9 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python314/full-early-reuse434.log @@ -0,0 +1,14 @@ +RUN full-parent433 +PASS full-parent433 +RUN reconstruct +PASS reconstruct +RUN export +PASS export +RUN global-program +PASS global-program +RUN independent-audit +PASS independent-audit +RUN two-moments +PASS two-moments +RUN finite-assembly +PASS finite-assembly diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python314/global-program.log b/research/e8-early-reset-kernel/local-evidence/reset12-python314/global-program.log new file mode 100644 index 0000000000..fc602bcb67 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python314/global-program.log @@ -0,0 +1,2 @@ +Fresh prefix bits 226 charged 256 +{"status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", "h": 8, "m": 64, "v": 120, "R": 746, "replicas": 8, "live": 14223, "physical": 14232, "word_sha256": "a64ccdd734888efe0cf36962b614b405583d68da478205e37ed0b82fa307081d", "source_records_sha256": "5b83af9e7996b8e388dee898de3eaa6bf7b7c099e41589745ab48ecbdb14feee", "independent_unbanked_scalar_columns": 7674, "all_scalar_columns_restored": true, "geometry_sha256": "4ec791160bf348c5445f92869ff688bfb41d215f5c614b73e2540763d63a72f0", "template_sha256": "f4104a1c51bed199e02f7d9edd7436cd5ad26ceca49b3c34106efc1a2bd59b64", "emitted_program_sha256": "3c616050a58352f755bf9442c609253dc4e2aedd26cdc1ff266f352807b564da", "emitted_events": 1370952, "local_invocations": 72, "bank_assignments": 53712, "banks_per_stage": 727, "entrance_rank_total": 152, "mixed_width_slots": true, "padding_calls": 0, "profile": {"1": 181080, "2": 73512, "3": 21528, "4": 25272, "5": 7776, "7": 6768, "8": 648, "14": 3840, "28": 3840, "42": 3840}, "paid_calls": 328104, "rank_mass": 907776, "deficit": 2496, "maxchild": 42, "halving_depth": 2, "halving_integer_inequality": [4096, 3528], "local_additions": 14715, "bridge_additions": 17280, "copy_erase_episodes": 648, "global_prefix_bits": 226, "charged_prefix_bits": 256, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 2.5404236250324175} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python314/independent-audit.log b/research/e8-early-reset-kernel/local-evidence/reset12-python314/independent-audit.log new file mode 100644 index 0000000000..e84a34e62e --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python314/independent-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", "template_sha256": "f4104a1c51bed199e02f7d9edd7436cd5ad26ceca49b3c34106efc1a2bd59b64", "source_frames": 944, "exact_nested_frame_pairs": 3357, "exact_reflected_pairs": 3357, "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", "exact_bank_families": 6543, "mixed_width_slots": true, "entrance_rank_total": 152, "mutations_rejected": ["omit an idle child", "omit a bridge", "omit terminal exchange", "remove a local invocation", "re-use a helper bank slot", "understate live stock", "omit a local paid move", "wrong reflected copy charge"], "profile": {"1": 181080, "2": 73512, "3": 21528, "4": 25272, "5": 7776, "7": 6768, "8": 648, "14": 3840, "28": 3840, "42": 3840}, "seconds": 1.814236250007525} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python314/integer-source-spans.log b/research/e8-early-reset-kernel/local-evidence/reset12-python314/integer-source-spans.log new file mode 100644 index 0000000000..3095912ab1 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python314/integer-source-spans.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_F2_AND_INTEGER_SOURCE_SPANS", "columns": 986, "profile": {"1": 2515, "4": 351, "2": 1021, "3": 299, "5": 108, "8": 9, "7": 14}, "word_sha256": "a64ccdd734888efe0cf36962b614b405583d68da478205e37ed0b82fa307081d"} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python314/kernel-reconstruction.log b/research/e8-early-reset-kernel/local-evidence/reset12-python314/kernel-reconstruction.log new file mode 100644 index 0000000000..36899d0eec --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python314/kernel-reconstruction.log @@ -0,0 +1 @@ +{"status": "PASS_FROZEN_RESET_KERNEL_RETIMING", "input_sha256": "98ffef9246c8bf6c537ab5e134321abea05cf0b7830c9e3fd92cbe4e88d8c308", "reset_sha256": "33fba385c1c69d6cbbe6c76e4d2eca9f69453a910f3c9e5e62f3e7b189510ded", "kernel_sha256": "ad81e6d6c6bfde1c2db9d9f0b4767af4db1affdfa2912038426360cb0895ef65", "output_sha256": "a64ccdd734888efe0cf36962b614b405583d68da478205e37ed0b82fa307081d", "entries": 116, "total_entrance_rank": 152, "donor_slots": 115, "new_frames": 0, "frame_changes": 10, "additional_resets": 1, "controls": ["wrong reset source", "missing reset parent", "wrong insertion time", "wrong kernel source", "missing donor", "duplicate pivot", "wrong old frame", "duplicate frame change"]} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-python314/two-moments.log b/research/e8-early-reset-kernel/local-evidence/reset12-python314/two-moments.log new file mode 100644 index 0000000000..3523e1d748 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-python314/two-moments.log @@ -0,0 +1 @@ +PASS two rational bit moments 0.001135674789165607479118 diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-reconstruction.json b/research/e8-early-reset-kernel/local-evidence/reset12-reconstruction.json new file mode 100644 index 0000000000..8974e56828 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-reconstruction.json @@ -0,0 +1,23 @@ +{ + "status": "PASS_FROZEN_RESET_KERNEL_RETIMING", + "input_sha256": "98ffef9246c8bf6c537ab5e134321abea05cf0b7830c9e3fd92cbe4e88d8c308", + "reset_sha256": "33fba385c1c69d6cbbe6c76e4d2eca9f69453a910f3c9e5e62f3e7b189510ded", + "kernel_sha256": "ad81e6d6c6bfde1c2db9d9f0b4767af4db1affdfa2912038426360cb0895ef65", + "output_sha256": "a64ccdd734888efe0cf36962b614b405583d68da478205e37ed0b82fa307081d", + "entries": 116, + "total_entrance_rank": 152, + "donor_slots": 115, + "new_frames": 0, + "frame_changes": 10, + "additional_resets": 1, + "controls": [ + "wrong reset source", + "missing reset parent", + "wrong insertion time", + "wrong kernel source", + "missing donor", + "duplicate pivot", + "wrong old frame", + "duplicate frame change" + ] +} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-retimed-assembly.json b/research/e8-early-reset-kernel/local-evidence/reset12-retimed-assembly.json new file mode 100644 index 0000000000..3a55a898fa --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-retimed-assembly.json @@ -0,0 +1,103 @@ +{ + "status": "PASS_CONDITIONAL_EARLY_RESET_KERNEL_ASSEMBLY", + "kappa": "1134386495022041/1000000000000000000", + "kappa_decimal": "0.001134386495022041", + "bit_lower": "567837394582803739559/500000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.242417270912869, + "bit_invoice": { + "prefix_bits": 226, + "charged_prefix_bits": 256, + "coefficient_bits": 226, + "two_level_coefficient_bits": 488, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14223, + "physical": 14232 + }, + "strict_outer_constraints": { + "bit_positive": "1135674789165607476762950437600136482894435608351465471751006476460052468033709894322509001124352104286361612170721636984672041266974479004307242564495446749598936027/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "48311760040721523237049562399863517105564391648534528248993523539947531966290105677490998875647895713638387829278363015327958733025520995692757435504553250401063973/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "48311760040721522053063013193534517105564391648534528248993523539947531966290105677490998875647895713638387829278363015327958733025520995692757435504553250401063973/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1135674789165607476762950437600136482894435608351465471751006476460052468033709894322509001124352104286361612170721636984672041266974479004307242564495446749598936027/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "24155880020360762162206295762374735315732633424403747018932370121439237734151529298797967471533842179328195038991285794025591537234397482518419984726755629507774550995446749598936027/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "567837394582803862245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499432162605417196137754199570365539235315732633424403747018932370121439237734151529298797967471533842179328195038991285794025591537234397482518419984726755629507774550995446749598936027/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "1135674789165607476762950437600136482894435608351465471751006476460052468033709894322509001124352104286361612170721636984672041266974479004307242564495446749598936027/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "48311760040721524372724351565470993868514829248671011143429131891413003717296582137543466909357790036147388953630467301689570903747157980364798702479032254708306537495446749598936027/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1135674789165607476762950437600136482894435608351465471751006476460052468033709894322509001124352104286361612170721636984672041266974479004307242564495446749598936027/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1135674789165607476762950437600136482894435608351465471751006476460052468033709894322509001124352104286361612170721636984672041266974479004307242564495446749598936027/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "24155880020360762162206295762374735315732633424403747018932370121439237734151529298797967471533842179328195038991285794025591537234397482518419984726755629507774550995446749598936027/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973", + "epsilon_below_one": "567837394582804237245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973/500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973", + "guard_width": "567837394582804237245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973/500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973", + "K_geometry": "375567837394582803862245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973/500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973000000000000000000", + "K_dominates_log": "567837394582803861677963035051656902438466936941135488296800263302964509284780840822641270262617687119469772432542556385302603501756888311507171552507641853010645433731308879908838523995446749598936027/500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973000000000000000000", + "record_suffix": "567837394582804237245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973/500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973", + "phase_local": "4542699156662433397398566042492882380228338502970309259164273672452889845145720135731055497961880791864172407159603555827123462741116105933878231659420352446456223576763181632716286334995446749598936027/4004542699156662429897966403437075686117474138932604770023848541039028486098126787765609616260227729262565374439688069713647795267702124820139852640122185954963937803592036426003208511784000000000000000000", + "phase_boundary": "908539831332486279025443292832333486249027356886493240085440841230100966644289923243362489779697381811872855409147784908887248579416249821996119561671588475305980703134040830149476907795446749598936027/800908539831332485979593280687415137223494827786520954004769708207805697219625357553121923252045545852513074887937613942729559053540424964027970528024437190992787560718407285200641702356800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "999999999999999998499432162605417196262754199570365539235315732633424403747018932370121439237734151529298797967471533842179328195038991285794025591537234397482518419984726755629507774550995446749598936027/2002271349578331214948983201718537843058737069466302385011924270519514243049063393882804808130113864631282687219844034856823897633851062410069926320061092977481968901796018213001604255892000000000000000000", + "prime_interval_packing": "567837394582804237245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973/500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973", + "alpha_positive": "1135674789165607973923763464686117792122734303516731741277867893181525271550629311523843302791083844940141577393551270591277011964522490828988751567780886223502870882735862130309902496995446749598936027/1001135674789165607474491600859268921529368534733151192505962135259757121524531696941402404065056932315641343609922017428411948816925531205034963160030546488740984450898009106500802127946000000000000000000", + "alpha_below_one": "999999999999999999500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973/1001135674789165607474491600859268921529368534733151192505962135259757121524531696941402404065056932315641343609922017428411948816925531205034963160030546488740984450898009106500802127946000000000000000000", + "alpha_below_one_fourth": "249148243908125793894699136750131112590219399379771066385212665921757755109582294923826757713473149233970194325086953086511710192266860310429752038439855735961743241841766414494890629489504553250401063973/1001135674789165607474491600859268921529368534733151192505962135259757121524531696941402404065056932315641343609922017428411948816925531205034963160030546488740984450898009106500802127946000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "499431517726803822588123071239367259217295111352889011618907232388848480809352679820082014863775504375216932247026723180551239757309681437743761312668307922101361140764794047837440085905136967017675486515058236875623939289902132168035898710949869064026676730957943098436917196037833162021151275336091659154545830807641575819445683784907730976810438544729/500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "28036341593253299444685434739680353900151530512749741542484841130411954677543957505014512612368619379512626601615089956182644377556500024703736744346365784447263947168782111141137144770619013659751203191919/4004542699156662429897966403437075686117474138932604770023848541039028486098126787765609616260227729262565374439688069713647795267702124820139852640122185954963937803592036426003208511784000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "502823019265554445599918932587586269276258086610551532908735467033238561084196356589914176536311049146491748690852420013625698283092847568696838387654373537154859179143337205665513971107/500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973000000000000000000", + "coordinate_movement_above_kappa": "1288294143566476762950437600136482894435608351465471751006476460052468033709894322509001124352104286361612170721636984672041266974479004307242564495446749598936027/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "1127590935485820931336566078975904255786909621987968327877199701680000160965254059606487251891291494335538442945705649709861937315040983089678403819550146392183476847166326207556453567/250283918697291401868622900214817230382342133683287798126490533814939280381132924235350601016264233078910335902480504357102987204231382801258740790007636622185246112724502276625200531986500000000000000000", + "bulk_exposure_above_kappa": "1288294143566476762950437600136482894435608351465471751006476460052468033709894322509001124352104286361612170721636984672041266974479004307242564495446749598936027/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "1519744967151521546113122458552517850386643356051534282004978398116515684862241610365807402127846062382830630502014316537975714222428952536987299201158622075386412305901674879072106448991/4004542699156662429897966403437075686117474138932604770023848541039028486098126787765609616260227729262565374439688069713647795267702124820139852640122185954963937803592036426003208511784000000000000000000", + "scalar_work_above_kappa": "3522016316729852761062105660271055693445380425517836667016902668636029927911305004248612210257959927014113317721858351394799611856280014947057225521219715052868381207697693092073710704883/4004542699156662429897966403437075686117474138932604770023848541039028486098126787765609616260227729262565374439688069713647795267702124820139852640122185954963937803592036426003208511784000000000000000000", + "dimension_above_kappa": "499432162605417195765577218835919984835234665221010673023277018980672972146469618562537359051667890432093504731350040432285774282389654411108216703077574324326346162205368983904458115170337205665513971107/500567837394582803737245800429634460764684267366575596252981067629878560762265848470701202032528466157820671804961008714205974408462765602517481580015273244370492225449004553250401063973000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "1246079287922516651747375691465487591099689/1000000000000000000000000000000000000000000000000", + "cutoff_log2": "23185215992417" + }, + { + "gap": "1415140832595034396474941776427135002188181754409885381132694613/1000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "17976418748903226163" + }, + { + "gap": "1607139766697007916546017997463292336138025494980115458929693051534507965928335896721/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13937831381067034658715072" + }, + { + "gap": "1825188115703288057906103588665105413373277523419207384605150381331166473627703091402094501403784476275357/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10806554204179814659704240499139" + }, + { + "gap": "2072820128488904054524662831687306918802149932299369615044187873014231653127961511325271757981851846286779331714212966319219769/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "8378750651734173154233973391771573239" + }, + { + "gap": "2354049562399863517105564391648534528248993523539947531966290105677490998875647895713638387829278363015327958733025520995692757435504553250401063973/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6496378138443258334045184443573088118162369" + } + ], + "bit_template_sha256": "f4104a1c51bed199e02f7d9edd7436cd5ad26ceca49b3c34106efc1a2bd59b64", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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." +} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-tested-manifest.json b/research/e8-early-reset-kernel/local-evidence/reset12-tested-manifest.json new file mode 100644 index 0000000000..fdf55597d0 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-tested-manifest.json @@ -0,0 +1,44 @@ +{ + "files": { + "apply.py": "11eeac4b02521a3286160a87fdac080fefb11c25779d9eaec9f44b18d7b6c1ae", + "bit_audit.py": "f5d81ae080ee55d174feef6de2314113864a7e3e3d29c5559071c306edd2f272", + "bit_global.py": "7e3d651b759b3d6ed09be1c30390321eb20b08b92710980603252428628c5e8d", + "bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "combined.py": "83ba7f8deda264c283176c564d9d93dc8948edae0a8e8ed216b48240b5f74c85", + "EXPECTED.json": "2fb27286985893cd81468b3d41eaf80c9d3fc41cb5390d46d60cfef29b2f1813", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "4cd95f5fecad72bd29dd2f42d1429c3ec153b63551fcc9623d2fbf8a6702c75f", + "PROOF.md": "7ddea4da1a0f2440d9992bc3acd85189e3d44c3fa0e9f26482b0733494348b50", + "README.md": "b36ab0ccde09283e0798920fd163742431bb59c57268f48ef9955891e22b2829", + "RESET12.json": "a310f1d3a8ec714e6dd12ec5364d16b9fa254527cf684b09dc1846d064e9b41c", + "RETIMING.json": "0a6d2ae3f046d1d18e29ce068b3cd09b026dde97801b0a0f0bfca8d17ccd9926", + "SELECTION.json": "48a5602482c9e8b102765ee29dd61f82c4dc82dd44849ca2fba464237927121f", + "SOURCE.json": "92d4ab60b5689b395f1aa2e909c1fa3f4e4622ada47f680014fb85068c9d71ba", + "source_span.py": "4772d177f37254c6f854af5ee3871aca193cfb24307a53c143c3bf517e56631e", + "VALIDATION.json": "fa3c3b56669b2cd08533fc1250a1d6d4979b2c19fe2740f2a153500fba1babb7", + "verify.py": "16c07414bc956744dc93b8e35b642267ea9819be922b0d3e081c543fdbf92a70", + "local-evidence/ASSEMBLY-118.json": "3e610791f14777e6024adfe562175d51cd5dbeb2ce585f59d56d58092277bac1", + "local-evidence/ASSEMBLY.json": "7c3cc4b503e4cf0fd3e050be46ad0da183c5b1c490f4901245df944fd9d6194e", + "local-evidence/AUDIT-118.json": "cd37be4c487f924490c78052a36a8e091b261a7beb60f67f495779078f6ab906", + "local-evidence/AUDIT.json": "76a146a9123d8b653e6e46ff93f153653f9cefd0f5c3fdd264a59f1322110262", + "local-evidence/BIT-PRICE-118.json": "97e29c84202255a6468bb0444f3438910e7ab4e19bbadb89636ede78376a9306", + "local-evidence/BIT-PRICE.json": "9a4a320cab1ce62b0c2329ac1bf3b81f73580fd603a406e4bfaae2962dfdad35", + "local-evidence/FULL-PYTHON311.json": "62b37525bf7b60c0d9101ed571681f3bf46ea75df065939864307e4986018332", + "local-evidence/FULL-PYTHON314.json": "85797531db037d06fb597a4c9b6ef6bd71e6a0ab4f220ae70b1b6bf3aeda205f", + "local-evidence/full118-python311.json": "368b3d851919f77e6865b51cec731fc5bd0f16e0bd494fbaa2df5b57b9342d1c", + "local-evidence/full118-python314.json": "2bb62d9bc89834463959ce755f886e58793ded811dba26b038c20626ef90c814", + "local-evidence/GLOBAL-118.json": "a7491dfd2ff51d0574a6e46e3b100531969219dc41d93afbaca38ee3afbfa7e7", + "local-evidence/GLOBAL.json": "16c4e829eea1b2d12b70cec7e6a9c0e33ea0eae98a40894a3b779790fd2efbb3", + "local-evidence/reset12-reconstruction.json": "178f9fef29a4f7e18c9a3abebf455bb7c0545a85e2bdfdda6d6def5afc8f9239", + "local-evidence/reset12-retimed-assembly.json": "a54ca18bca34c7407872dded5402b463be2c76bab271248e519bbd0492b3f575", + "local-evidence/SOURCE-SPANS-118.log": "115ea64de78aaa3ea6edc9684f66f9ec6f88c806608caf85ae32853059c14f37", + "local-evidence/SOURCE-SPANS.log": "bdf95dbce8337be57aab8a3d3b42a711ee276496c40cbb4c5356fc9cc9b2e811", + "local-evidence/VALIDATION-110-ENTRIES.json": "77ad775cf69f5d913568b6276b0dfeb2eaef0306f57b71c0a467bff793807267", + "vendor/kernel417/e8core.py": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29", + "vendor/kernel417/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/kernel417/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "vendor/kernel417/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/kernel417/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/kernel417/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + } +} diff --git a/research/e8-early-reset-kernel/local-evidence/reset12-verification-provenance.json b/research/e8-early-reset-kernel/local-evidence/reset12-verification-provenance.json new file mode 100644 index 0000000000..59e034f989 --- /dev/null +++ b/research/e8-early-reset-kernel/local-evidence/reset12-verification-provenance.json @@ -0,0 +1,5 @@ +{ + "tested_code_commit": "6a1c6a308429ea11f64b679df6abdf2bf40436b0", + "tested_manifest_sha256": "ad6b66aba41895ac66bd8e988717ab2e16ca974f93a6fa309c50de0b09f1a28e", + "publication_changes": "Documentation and verification receipts only; all executable code, frozen witnesses and expected outputs retain their tested hashes." +} diff --git a/research/e8-early-reset-kernel/source_span.py b/research/e8-early-reset-kernel/source_span.py new file mode 100644 index 0000000000..a8722a7e4f --- /dev/null +++ b/research/e8-early-reset-kernel/source_span.py @@ -0,0 +1,10 @@ +"""PR417/435 independent all-column replay, including integer source-span legality.""" +from pathlib import Path +import sys,json,hashlib +ROOT=Path(__file__).resolve().parent;sys.path.insert(0,str(ROOT/'vendor/kernel417')) +from e8core import Lat,replay +w=json.loads(Path(sys.argv[1]).read_text());frames=json.loads(Path(sys.argv[2]).read_text())['frames'];L=Lat(w['lines']);masks=[sum(1</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/e8-early-reset-kernel/vendor/kernel417/engines/base_two_moment.py b/research/e8-early-reset-kernel/vendor/kernel417/engines/base_two_moment.py new file mode 100644 index 0000000000..14a90fa0e7 --- /dev/null +++ b/research/e8-early-reset-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/e8-early-reset-kernel/vendor/kernel417/engines/moment.py b/research/e8-early-reset-kernel/vendor/kernel417/engines/moment.py new file mode 100644 index 0000000000..7d697cb452 --- /dev/null +++ b/research/e8-early-reset-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/e8-early-reset-kernel/vendor/kernel417/stages.py b/research/e8-early-reset-kernel/vendor/kernel417/stages.py new file mode 100644 index 0000000000..9ef95d52f4 --- /dev/null +++ b/research/e8-early-reset-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/e8-early-reset-kernel/verify.py b/research/e8-early-reset-kernel/verify.py new file mode 100644 index 0000000000..2cb303ae52 --- /dev/null +++ b/research/e8-early-reset-kernel/verify.py @@ -0,0 +1,32 @@ +"""Fresh parent replay, chronological reset reconstruction, banks and exact assembly.""" +from pathlib import Path +import hashlib,json,os,subprocess,sys,time +assert __debug__ +ROOT=Path(__file__).resolve().parent;PARENT=ROOT.parent/'e8-early-reset-reuse';UPSTREAM=ROOT.parent/'split-centres-global';out=Path(sys.argv[1]).resolve();assert not out.exists() and not out.is_relative_to(ROOT.parent) +read=lambda p:json.loads(p.read_text());sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +def integrity(): + assert {p.relative_to(ROOT).as_posix():sha(p) for p in ROOT.rglob('*') if p.is_file() and p.name!='MANIFEST.json'}==read(ROOT/'MANIFEST.json')['files'] + assert sha(PARENT/'MANIFEST.json')==read(ROOT/'SOURCE.json')['parent_manifest_sha256'] +integrity();out.mkdir(parents=True);env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONINTMAXSTRDIGITS='0');env.pop('PYTHONOPTIMIZE',None);steps=[] +def run(name,file,*args,cwd=None): + t=time.monotonic();log=out/(name+'.log');print('RUN',name,flush=True) + with log.open('w') as f:q=subprocess.run([sys.executable,'-B',str(file),*map(str,args)],cwd=cwd,env=env,stdout=f,stderr=subprocess.STDOUT) + if q.returncode:raise RuntimeError((name,q.returncode,log.read_text()[-2000:])) + steps.append(dict(name=name,seconds=time.monotonic()-t,log_sha256=sha(log)));print('PASS',name,flush=True) +try: + base=out/'baseline';run('full-early-reuse434',PARENT/'verify.py',base) + changed=out/'changed';changed.mkdir() + for name in ('work','inherited','split-centres'):(changed/name).symlink_to(base/'baseline'/name,target_is_directory=True) + bit=changed/'bit426-source-centres';bit.mkdir() + run('kernel-reconstruction',ROOT/'apply.py',base/'changed/bit426-source-centres/bit-source-centres.json',bit/'bit-source-centres.json') + run('export',UPSTREAM/'vendor/export_records.py',bit/'bit-source-centres.json',bit/'records') + run('integer-source-spans',ROOT/'source_span.py',bit/'bit-source-centres.json',bit/'records/frames.json') + run('global-program',ROOT/'bit_global.py','--source',bit,'--local-check',bit,'--out',bit/'global',cwd=changed) + run('independent-audit',ROOT/'bit_audit.py','--local-check',bit,'--out',bit/'global',cwd=changed) + run('two-moments',ROOT/'bit_price.py',cwd=changed) + env['E8_OUTPUT']=str(changed);run('finite-assembly',ROOT/'combined.py',cwd=changed) + actual=read(changed/'RESULT.json');expected=read(ROOT/'EXPECTED.json') + for k,v in expected.items():assert actual[k]==v,(k,actual[k],v) + integrity();result=dict(status='PASS_FULL_EARLY_RESET_KERNEL_COMPOSITION',kappa=actual['kappa'],kappa_decimal=actual['kappa_decimal'],source_manifest_sha256=sha(ROOT/'MANIFEST.json'),checks=steps,parent_phase_mode=read(base/'RESULT.json')['parent_phase_mode']);(out/'RESULT.json').write_text(json.dumps(result,indent=2)+'\n') +except BaseException as e: + (out/'FAILURE.json').write_text(json.dumps(dict(error=repr(e),completed=steps),indent=2)+'\n');raise diff --git a/research/e8-early-reset-reuse/EXPECTED.json b/research/e8-early-reset-reuse/EXPECTED.json new file mode 100644 index 0000000000..5cb40a0157 --- /dev/null +++ b/research/e8-early-reset-reuse/EXPECTED.json @@ -0,0 +1,10 @@ +{ + "status": "PASS_CONDITIONAL_EARLY_RESET_REUSE_ASSEMBLY", + "kappa": "1128250848293019/1000000000000000000", + "kappa_decimal": "0.001128250848293019", + "bit_lower": "1129525236098815991751/1000000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "bit_template_sha256": "10dfc644197ef152062bf69960ecdc2405c847ce47147b520c3172c51cd82bd9", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f" +} diff --git a/research/e8-early-reset-reuse/LICENSE b/research/e8-early-reset-reuse/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-early-reset-reuse/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/e8-early-reset-reuse/MANIFEST.json b/research/e8-early-reset-reuse/MANIFEST.json new file mode 100644 index 0000000000..1980f550b0 --- /dev/null +++ b/research/e8-early-reset-reuse/MANIFEST.json @@ -0,0 +1,30 @@ +{ + "files": { + "EXPECTED.json": "5521c7e995fec77941243b28e090f95f2188f193d5f61275275cfa11215eecc0", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "c4085541471fe63d8f735beacd397d356446376ad3e56b2673940a2df3b8437e", + "PROOF.md": "09388e2f9e6b8fcc626a5172d55c45a957835075c51c68d1e86fd42ff4655ae8", + "README.md": "442bf686c0b24b9d7781b7b138f32fddea5d4efffeddc6e41d04719d2545e0cd", + "SELECTION.json": "9d47ade3fb69b3ef62a1a3ae75cebdddd57d144923977c5f2a07848ab596ea32", + "SOURCE.json": "c52287239c43aece2b3533ef48ee204d845d652066bca716c288b0c47e779521", + "VALIDATION.json": "bcb864a6b73d4ff4a24ab70ad51287653723c2115ce1c81db7817b81df2d9e92", + "bit_audit.py": "219eb4dd8e5380fb0432daa6a30c265755a78834616b2c5fc7aa161feb0231ee", + "bit_global.py": "9c2178df133dc663416aac13d8c8da80a9e4f5f7174bb36413180fcbad994ffb", + "bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "combined.py": "dc621dce9ac1634a2701318311b30dffee7cce7e0c6be7ae808f44b27eb17f0f", + "local-evidence/ASSEMBLY.json": "c9ce28f59a5e460d39a888bbbc464e3fd6dd1c0b2c54ae86baeeea99febc8176", + "local-evidence/BIT-AUDIT.json": "2e458c3936e42539095610a50c730266dddd96e94d1ead171a99dd5f1fe9ef47", + "local-evidence/BIT-GLOBAL.json": "39f89d1e5bf51e9b1f1155e123dc3226627e465a246d37bb00f55d44d20bcaa0", + "local-evidence/BIT-PRICE.json": "96ec606146b5157871048e28f6649c31c1b6117d43be732e6a96bcc269c0e1b6", + "local-evidence/FAILED-INLINING.json": "95cbb0e6df953d25a888198c1072edf03db85b7c967a234680db3e095abd2dc7", + "local-evidence/FAILED-LATE-RESET.json": "f6ed36b59de745d50f37fcb4c80d129d9a2de0dfe1fe3de2d18e678135f7d9b6", + "local-evidence/FULL-PORTABLE-PYTHON311.json": "1dcca855b20cbac311a435f23f60001c342083edbef3194ba42a30e1f24c1982", + "local-evidence/FULL-PORTABLE-PYTHON314.json": "5687ed9209e11e64304d008a4a10678dc07cdc3522f5112c9a80557d45125c4a", + "local-evidence/FULL-PYTHON314-INITIAL.json": "0966528d4b30459d8b35296f31dbadfa34cdc7792419b34ab2505b7098923325", + "local-evidence/PARENT-FULL-REPLAY.json": "0ba447d6de6edd9fbe2371c36e3605dffa0c6526a874cfcb9bd19285c056bf1e", + "local-evidence/PYTHON311-GZIP-FAILURE.log": "ec1937c575536aeebe8f9c22d673fd66d1355ff870e2fdc80346205b29e42784", + "local-evidence/PYTHON311-INITIAL-FAILURE.json": "7902e8ca1e167b98d1c29170f8d57c9896b38ccab89065e4ed4e2c3feea79076", + "replay.py": "e0782ba05dda36323500390349d1180f6117a9c6112b09b9e21e29f67c4e5f5f", + "verify.py": "4e2082878acc1298f4354325b28f3cf047006170a9883148e7cf23002f6f02f1" + } +} diff --git a/research/e8-early-reset-reuse/NOTICE.md b/research/e8-early-reset-reuse/NOTICE.md new file mode 100644 index 0000000000..ba47405801 --- /dev/null +++ b/research/e8-early-reset-reuse/NOTICE.md @@ -0,0 +1,3 @@ +Rohan Arun, with substantial OpenAI Codex assistance. Apache-2.0. + +New contribution: eleven earlier clean resets selected and composed on PR433's R758 bit word. The clean-reset reuse principle and base bit lineage are from ai-nanachi #426; the split-centre complex and mutable-source bit composition are from icekylinx #433. Zhihao Chen supplied #425/#386; Dylan Crow supplied #370; Jacob Sussman supplied E8 and compiler interfaces. All parent notices remain in the pinned sibling package. Adapted bit_global.py, bit_audit.py, bit_price.py and combined.py retain original author notices. diff --git a/research/e8-early-reset-reuse/PROOF.md b/research/e8-early-reset-reuse/PROOF.md new file mode 100644 index 0000000000..933ba6ab83 --- /dev/null +++ b/research/e8-early-reset-reuse/PROOF.md @@ -0,0 +1,9 @@ +# Earlier clean reset and physical slot reuse + +Select a helper whose last main read has completed and which is not read by the subsequent target decoder. Immediately after that last read, cancel its clean source content using the recorded three or four available parent rows. Parent frames must admit the reset before their next use. The slot may retain arbitrary helper dirt. A later logical helper whose first use has not occurred is assigned that physical slot. The selected intervals and eleven physical pairs are disjoint. + +The reconstruction checks each actual reset on source columns with the earlier physical aliases already applied. It emits every reset addition, including its frame transitions. The main helper word is inverted at the full frame after restoring the source basis. The initial target compensation is regenerated from the entire changed raw operator on every independent physical column; no old dirty response is reused. The full emitted forward and reflected words independently verify the target shear, restored sources, restored helpers, and erased private copy row. + +The global nine-stage dimension-64 geometry and data routes are inherited. New ownership is generated for R747: 6,723 complete rank-eight helper banks, 53,784 assignments, 14,403 live and 14,412 physical rows. All 72 invocations and reflected streams are emitted and independently decoded. The two exact moment engines use the reconstructed profile and positive fallback allowance. The changed prefix has 226 bits, charged at 256; the two-level coefficient has 488 bits, charged at 512. Six finite bootstrap levels and 47 strict outer inequalities give the selected conditional bound. + +The parent complex supplier is unchanged and fully replayed, including all Gaussian phase pairs, by verify.py. Parent all-size compiler, dirty-bank, compressed-window, restored-work, tape/common-grid, precision and analytic interfaces remain assumptions. This is not an unconditional multiplication theorem or new Lean proof. diff --git a/research/e8-early-reset-reuse/README.md b/research/e8-early-reset-reuse/README.md new file mode 100644 index 0000000000..5c976801cd --- /dev/null +++ b/research/e8-early-reset-reuse/README.md @@ -0,0 +1,11 @@ +# Earlier clean resets on PR433 + +Conditional kappa = 0.001128250848293019, approximately 0.659% above PR433. Eleven helpers removed, R758 to R747. The exact bit saving is 0.001129525236098815991751; the unchanged complex saving is 0.001183986549206329. + +Run `python -B research/e8-early-reset-reuse/verify.py /absolute/new/output` with Python 3.11 or 3.14. Standard library only. The wrapper freshly verifies the pinned parent with all phases before reconstructing and checking the changed bit program. + +At draft submission the changed emitted bit, independent bank audit, two rational moments and exact finite assembly passed locally against the previously fully replayed parent. The new uninterrupted wrapper and GitHub CI are pending. Local receipts distinguish that scope. + +The initial full Python3.14 wrapper passed. Python3.11 exposed the parent compressed-file metadata mismatch; the package now imports PR433's upstream decoded-witness hash fix at 6d9244518175caf9e0089f92486959bc2c317273. Fresh both-version replays are pending. The original failure and pass receipts are preserved. + +Both fresh portable full replays now passed locally on Python 3.11 and 3.14 against e48f24fd2393500c804a0cbab542e20de8ddee6e. See VALIDATION.json and local-evidence/FULL-PORTABLE-PYTHON*.json. diff --git a/research/e8-early-reset-reuse/SELECTION.json b/research/e8-early-reset-reuse/SELECTION.json new file mode 100644 index 0000000000..9df36fb9ef --- /dev/null +++ b/research/e8-early-reset-reuse/SELECTION.json @@ -0,0 +1,141 @@ +{ + "source_sha256": "015811014644ed62acba1da590d9cf6ebdfe834d89867f8ce2b68722609072ea", + "word_sha256": "98ffef9246c8bf6c537ab5e134321abea05cf0b7830c9e3fd92cbe4e88d8c308", + "R": 747, + "local_profile": { + "1": 2398, + "2": 865, + "3": 475, + "5": 153, + "4": 310, + "8": 9, + "7": 14 + }, + "global_profile": { + "1": 172656, + "2": 62280, + "3": 34200, + "5": 11016, + "4": 22320, + "8": 648, + "7": 6768, + "14": 3840, + "28": 3840, + "42": 3840 + }, + "live": 14403, + "entries": [ + { + "position": 1032, + "new_helper": 949, + "retired_helper": 406, + "parents": [ + 411, + 518 + ], + "frame": 458 + }, + { + "position": 1036, + "new_helper": 950, + "retired_helper": 252, + "parents": [ + 0, + 1, + 512, + 523 + ], + "frame": 458 + }, + { + "position": 1038, + "new_helper": 957, + "retired_helper": 532, + "parents": [ + 533, + 534 + ], + "frame": 459 + }, + { + "position": 1053, + "new_helper": 936, + "retired_helper": 310, + "parents": [ + 315, + 566 + ], + "frame": 461 + }, + { + "position": 1069, + "new_helper": 937, + "retired_helper": 422, + "parents": [ + 427, + 598 + ], + "frame": 463 + }, + { + "position": 1085, + "new_helper": 933, + "retired_helper": 294, + "parents": [ + 299, + 630 + ], + "frame": 465 + }, + { + "position": 1094, + "new_helper": 935, + "retired_helper": 374, + "parents": [ + 379, + 646 + ], + "frame": 466 + }, + { + "position": 1103, + "new_helper": 934, + "retired_helper": 444, + "parents": [ + 439, + 662 + ], + "frame": 467 + }, + { + "position": 1112, + "new_helper": 932, + "retired_helper": 492, + "parents": [ + 487, + 678 + ], + "frame": 468 + }, + { + "position": 1121, + "new_helper": 944, + "retired_helper": 476, + "parents": [ + 471, + 694 + ], + "frame": 469 + }, + { + "position": 1128, + "new_helper": 942, + "retired_helper": 710, + "parents": [ + 455, + 460 + ], + "frame": 470 + } + ] +} diff --git a/research/e8-early-reset-reuse/SOURCE.json b/research/e8-early-reset-reuse/SOURCE.json new file mode 100644 index 0000000000..d9ed13ac34 --- /dev/null +++ b/research/e8-early-reset-reuse/SOURCE.json @@ -0,0 +1,7 @@ +{ + "parent_pr": 433, + "parent_commit": "6d9244518175caf9e0089f92486959bc2c317273", + "parent_manifest_sha256": "3129eb4321f706542470f8443f66a6b4351a12a9ceec85e7f76aa19db1e1e32f", + "attribution": "Rohan Arun with substantial OpenAI Codex assistance. icekylinx PR433 split centres and source reuse; ai-nanachi PR426 clean reset principle and base bit word; Zhihao Chen PR425/386; Dylan Crow PR370; Jacob Sussman E8 and inherited framework.", + "parent_update": "Upstream PR433 gzip portability repair: bind decoded canonical witness rather than platform-dependent gzip header. No construction or price changes." +} diff --git a/research/e8-early-reset-reuse/VALIDATION.json b/research/e8-early-reset-reuse/VALIDATION.json new file mode 100644 index 0000000000..2cfd52731f --- /dev/null +++ b/research/e8-early-reset-reuse/VALIDATION.json @@ -0,0 +1,9 @@ +{ + "status": "PASS_BOTH_FULL_LOCAL_REPLAYS", + "validated_code_head": "e48f24fd2393500c804a0cbab542e20de8ddee6e", + "python": [ + "3.11", + "3.14" + ], + "scope": "Fresh full parent phases and changed bit program, independent audit, finite invoice and exact assembly; GitHub CI pending." +} diff --git a/research/e8-early-reset-reuse/bit_audit.py b/research/e8-early-reset-reuse/bit_audit.py new file mode 100644 index 0000000000..155faf40b0 --- /dev/null +++ b/research/e8-early-reset-reuse/bit_audit.py @@ -0,0 +1,126 @@ +# 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 + +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)==944 + 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 + + def validate(q,check_profile=True): + assert (q['m'],q['live'],q['replicas'],q['stages'])==(64,14403,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)==987 + assert len({(f,tuple(r)) for f,r in own})==987 + for i,(family,route) in enumerate(own): + assert 0<=family<14403 + if i<240: + side=i//120; side=1-side if rev else side + assert family==rep*960+(2*p+side)*120+i%120 and route==['data',st,i%120] + else: + j=i-240; bank,slot=divmod(rep*747+j,8) + assert family==7680+st*747+bank and route==['bank',slot] + assert slot not in occupation[family]; occupation[family].add(slot) + for e in q['local_programs'][c['orientation']]: + if e[0]==0 and e[4]: hist[e[4]]+=1 + if e[0]==2: hist[e[5]]+=1 + assert calls=={(s,r) for s in range(9) for r in range(8)} + assert set(occupation)==set(range(7680,14403)) and all(s==set(range(8)) for s in occupation.values()) + levels=[-1]*4; scalar=[1<=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 x0 + cutoff=max(ceil(36/gap**2),ceil(2*(4+charged_two)/gap)) + assert cutoff*gap**2>=36 and cutoff*gap>=2*(4+charged_two) + 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_EARLY_RESET_REUSE_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,coefficient_bits=coefficient.bit_length(),two_level_coefficient_bits=two.bit_length(),charged_two_level_coefficient_bits=charged_two,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/e8-early-reset-reuse/local-evidence/ASSEMBLY.json b/research/e8-early-reset-reuse/local-evidence/ASSEMBLY.json new file mode 100644 index 0000000000..7899c12d17 --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/ASSEMBLY.json @@ -0,0 +1,103 @@ +{ + "status": "PASS_CONDITIONAL_EARLY_RESET_REUSE_ASSEMBLY", + "kappa": "1128250848293019/1000000000000000000", + "kappa_decimal": "0.001128250848293019", + "bit_lower": "1129525236098815991751/1000000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 7.656957873799007, + "bit_invoice": { + "prefix_bits": 226, + "charged_prefix_bits": 256, + "coefficient_bits": 226, + "two_level_coefficient_bits": 488, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14403, + "physical": 14412 + }, + "strict_outer_constraints": { + "bit_positive": "18506141468243001171708721090504160753359281193270932320673716200550478228569658366279537613727959580145427271328281666596703824135534263924614730977/16384000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "892294153953493164291278909495839246640718806729067679326283799449521771430341633720462386272040419854572728671718333403296175864465736075385269023/16384000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "892294153953493144892843287299344910640718806729067679326283799449521771430341633720462386272040419854572728671718333403296175864465736075385269023/16384000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "9253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023/8192000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "18506141468243001171708721090504160753359281193270932320673716200550478228569658366279537613727959580145427271328281666596703824135534263924614730977/8192000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "446147076976746590952563111892673627029080493868694593022423092995693206388887017410709421705678576206823978063818746847075359260514534634396458647034263924614730977/8192000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "9253070734121502615348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023/8192000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "8182746929265878497384651780922990920795029080493868694593022423092995693206388887017410709421705678576206823978063818746847075359260514534634396458647034263924614730977/8192000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "18506141468243001171708721090504160753359281193270932320673716200550478228569658366279537613727959580145427271328281666596703824135534263924614730977/16384000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "892294153953493182797420377738840418349439897233228432685564992720454092104057834270940614841698786134110342399677913548723447192747402672089093158534263924614730977/16384000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "18506141468243001171708721090504160753359281193270932320673716200550478228569658366279537613727959580145427271328281666596703824135534263924614730977/16384000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "18506141468243001171708721090504160753359281193270932320673716200550478228569658366279537613727959580145427271328281666596703824135534263924614730977/16384000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "446147076976746590952563111892673627029080493868694593022423092995693206388887017410709421705678576206823978063818746847075359260514534634396458647034263924614730977/8192000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "9253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023/8192000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "8191999999999999991808000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/8201253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023", + "epsilon_below_one": "9253070734121508759348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023/8201253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023", + "guard_width": "9253070734121508759348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023/8201253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023", + "K_geometry": "6153253070734121502615348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023/8201253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023000000000000000000", + "K_dominates_log": "298486152713596858261133817512502470632990336423297619419569593576548431826888260502741412409135756167867272375543865463217697380751748781054158084305815184186507344194653674987571967/264556550668842629050559619970226099329192610306649396948612179900225945380439068160728686792848203916896554065223747782359771762604499531140825920688805346325012428033000000000000000000", + "record_suffix": "9253070734121508759348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023/8201253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023", + "phase_local": "74024565872972061873532681881951133072419136972041364050849695749903148941911326953710017832743458407756117597195128601430221103979702469771903690084240423237478610831034263924614730977/65610024565872972004538785752616072633639767356049050443255820615256034454348888903860714324626354571390345408175489450025223397125915883722924828330823725888603082152184000000000000000000", + "phase_boundary": "14804913174594405813704079789093026160605252132801009446193203545075585462800203865138558131659801295479791056803568581251503403246995491432041025425259712355012889083834263924614730977/13122004913174594400907757150523214526727953471209810088651164123051206890869777780772142864925270914278069081635097890005044679425183176744584965666164745177720616430436800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "16383999999999999975414746929265878499432651780922990920795029080493868694593022423092995693206388887017410709421705678576206823978063818746847075359260514534634396458647034263924614730977/32805012282936486002269392876308036316819883678024525221627910307628017227174444451930357162313177285695172704087744725012611698562957941861462414165411862944301541076092000000000000000000", + "prime_interval_packing": "9253070734121508759348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023/8201253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023", + "alpha_positive": "18506141468243009317443367419896657842593619935253531608984234307877308180244649058174274362977529864997061465578041082512673259542789677578282441966446006785166996693034263924614730977/16402506141468243001134696438154018158409941839012262610813955153814008613587222225965178581156588642847586352043872362506305849281478970930731207082705931472150770538046000000000000000000", + "alpha_below_one": "16383999999999999991817253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023/16402506141468243001134696438154018158409941839012262610813955153814008613587222225965178581156588642847586352043872362506305849281478970930731207082705931472150770538046000000000000000000", + "alpha_below_one_fourth": "4082120393898817740966230742118607881759891839817812121094504554145624845216560907433120370926169630846899526545390049544063789060826953055104519328710036861252525637818465736075385269023/16402506141468243001134696438154018158409941839012262610813955153814008613587222225965178581156588642847586352043872362506305849281478970930731207082705931472150770538046000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "134065954450456131888572404073222057587195605953853045459726979682067836030854839827324250112657359613753045411329984324417514991266327925496392926819076909098625880785159609317507266039991394147465325581857236255532115555519907868899367780890770924744091711832220085615353750878175230822142166392507469830641670083374529/134369330310907846665295433221357716753694243545188455307787920620044358562506524475106742936834774162207427395943402393651657517313875729864550048421526990619859112247672832000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "459344196526983776126450045233130945570820183505623430783661477680566669551012043961606727517391669910070531137138798564473166705073135613542857400568808263504921467841530897208226155807069/65610024565872972004538785752616072633639767356049050443255820615256034454348888903860714324626354571390345408175489450025223397125915883722924828330823725888603082152184000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "9220264634419749410126248485777003611646590040381762946804723855588412103267248597113917235579943540037407401432945273428716916281235826485632259566734279018802352149563/8201253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023000000000000000000", + "coordinate_movement_above_kappa": "20879569810177875708721090504160753359281193270932320673716200550478228569658366279537613727959580145427271328281666596703824135534263924614730977/16384000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "50950578184281395477945013334999726622080956043781582069887313934070389823681874206566397250082460930680711270550454608778199582024817051013332801269065664136348344027/410062653536706075028367410953850453960248545975306565270348878845350215339680555649129464528914716071189658801096809062657646232036974273268280177067648286803769263451150000000000000000", + "bulk_exposure_above_kappa": "20879569810177875708721090504160753359281193270932320673716200550478228569658366279537613727959580145427271328281666596703824135534263924614730977/16384000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "32755851721687387778173246790830983497147865725523447047402902960172275292169933211998391431748076713180293331353881281163970707046189184558230058827109403470041890851389/65610024565872972004538785752616072633639767356049050443255820615256034454348888903860714324626354571390345408175489450025223397125915883722924828330823725888603082152184000000000000000000", + "scalar_work_above_kappa": "65560864004623873780442639667139019813967749403547972269030813267800292519344377663928748594061253998875466035441626006176582405609147126419692472992521266414343431927481/65610024565872972004538785752616072633639767356049050443255820615256034454348888903860714324626354571390345408175489450025223397125915883722924828330823725888603082152184000000000000000000", + "dimension_above_kappa": "8182746929265878492268916415342740330921277566270872306239612463474758640011112742605822812688954275690124059558007358784254476792205787963351312739882860749556874297711279018802352149563/8201253070734121500567348219077009079204970919506131305406977576907004306793611112982589290578294321423793176021936181253152924640739485465365603541352965736075385269023000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "19718173301699986490442310099608577089/16000000000000000000000000000000000000000000", + "cutoff_log2": "23703316064509" + }, + { + "gap": "89088697416160189168478072742640881250923123343423452063/64000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "18578781647433489479" + }, + { + "gap": "402511727930897263492893481780029509017558469228965731102330904495255713921/256000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "14562145083988389157871807" + }, + { + "gap": "1818588618094756475300249931559443478956904117509927455038979846382951280845356947587831584607/1024000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "11413884584645035881423129400187" + }, + { + "gap": "8216566952880397264033353325540771278429496754443877107508740488500708481207792267348207305960479962067658955969/4096000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "8946261732747165430949576222298741146" + }, + { + "gap": "37123278909495839246640718806729067679326283799449521771430341633720462386272040419854572728671718333403296175864465736075385269023/16384000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "7012126186950169517647508261689402518966285" + } + ], + "bit_template_sha256": "10dfc644197ef152062bf69960ecdc2405c847ce47147b520c3172c51cd82bd9", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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." +} diff --git a/research/e8-early-reset-reuse/local-evidence/BIT-AUDIT.json b/research/e8-early-reset-reuse/local-evidence/BIT-AUDIT.json new file mode 100644 index 0000000000..5acb750852 --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/BIT-AUDIT.json @@ -0,0 +1,33 @@ +{ + "status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", + "template_sha256": "10dfc644197ef152062bf69960ecdc2405c847ce47147b520c3172c51cd82bd9", + "source_frames": 944, + "exact_nested_frame_pairs": 3341, + "exact_reflected_pairs": 3341, + "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", + "exact_bank_families": 6723, + "slots_per_bank": 8, + "mutations_rejected": [ + "omit an idle child", + "omit a bridge", + "omit terminal exchange", + "remove a local invocation", + "re-use a helper bank slot", + "understate live stock", + "omit a local paid move", + "wrong reflected copy charge" + ], + "profile": { + "1": 172656, + "2": 62280, + "3": 34200, + "4": 22320, + "5": 11016, + "7": 6768, + "8": 648, + "14": 3840, + "28": 3840, + "42": 3840 + }, + "seconds": 1.6600992910098284 +} diff --git a/research/e8-early-reset-reuse/local-evidence/BIT-GLOBAL.json b/research/e8-early-reset-reuse/local-evidence/BIT-GLOBAL.json new file mode 100644 index 0000000000..fd3faa8602 --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/BIT-GLOBAL.json @@ -0,0 +1,164 @@ +{ + "status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", + "h": 8, + "m": 64, + "v": 120, + "R": 747, + "replicas": 8, + "live": 14403, + "physical": 14412, + "word_sha256": "98ffef9246c8bf6c537ab5e134321abea05cf0b7830c9e3fd92cbe4e88d8c308", + "source_records_sha256": "bd805894638e578daf4f057f61bf6c6810d4460ac98b6238619549a0b5af1b68", + "local_checks": { + "forward": { + "copies": 9, + "adds": 14586, + "records": 18819, + "all_columns": 987, + "cancellation_free_row_l1": 4749825, + "profile": { + "1": 2398, + "2": 865, + "3": 475, + "4": 310, + "5": 153, + "7": 14, + "8": 9 + }, + "sha256": "67a94cf0035c06591019042d3bbc1d62e435cd6e839a0c08afe98609607b0522" + }, + "reverse": { + "copies": 9, + "adds": 14586, + "records": 18819, + "all_columns": 987, + "cancellation_free_row_l1": 18975950, + "profile": { + "1": 2398, + "2": 865, + "3": 475, + "4": 310, + "5": 153, + "7": 14, + "8": 9 + }, + "sha256": "bcd0366700ed4a0f4717c54e5f330015d8f174636c6f0f5a9c42ff553396e931" + } + }, + "scalar_stages": [ + { + "stage": 0, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 1, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 2, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 3, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 4, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 5, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 6, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + }, + { + "stage": 7, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": true + }, + { + "stage": 8, + "all_columns": 7683, + "helper_columns": 6723, + "reverse": false + } + ], + "independent_unbanked_scalar_columns": 7683, + "all_scalar_columns_restored": true, + "geometry_sha256": "ec1742de8de83751f6c633e54d855a920645bcca40ce2a2d2e2a8349576a00db", + "template_sha256": "10dfc644197ef152062bf69960ecdc2405c847ce47147b520c3172c51cd82bd9", + "emitted_program_sha256": "ced149086bd620d31aa8b5f6a68999d3194a7e32fb2c47c0b9f8332dd961abf4", + "emitted_events": 1354968, + "local_invocations": 72, + "bank_assignments": 53784, + "banks_per_stage": 747, + "whole_rank8_slots_per_bank": 8, + "padding_calls": 0, + "profile": { + "1": 172656, + "2": 62280, + "3": 34200, + "4": 22320, + "5": 11016, + "7": 6768, + "8": 648, + "14": 3840, + "28": 3840, + "42": 3840 + }, + "paid_calls": 321408, + "rank_mass": 919296, + "deficit": 2496, + "maxchild": 42, + "halving_depth": 2, + "halving_integer_inequality": [ + 4096, + 3528 + ], + "local_additions": 14586, + "bridge_additions": 17280, + "copy_erase_episodes": 648, + "global_prefix_bound": "82175447241247327050912217435296917941221100975248000000000000000000", + "global_prefix_bits": 226, + "charged_prefix_bits": 256, + "omitted_bridge_shears_rejected": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ], + "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", + "seconds": 2.408216124982573 +} diff --git a/research/e8-early-reset-reuse/local-evidence/BIT-PRICE.json b/research/e8-early-reset-reuse/local-evidence/BIT-PRICE.json new file mode 100644 index 0000000000..0ee06a110f --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/BIT-PRICE.json @@ -0,0 +1,17 @@ +{ + "lower": "0.001129525236098815991751", + "upper": "0.001129525236098815991752", + "lower_endpoint_residual_upper": "-1.251774999433093430381353664521278818665250762780616345195836520018292E-25", + "upper_endpoint_residual_lower": "2.276366164350301667566734024087898004226996967249013754753469273066967E-24", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.001042177813821591887548119068554528501744007073182525639912744635909457", + "-0.001042177813821591887548119068554528501744007073182525639912744635835273" + ], + "nominal_k_ceiling_interval": [ + "0.001128250848293019129894635265715588124139286669678372820580212187821160", + "0.001128250848293019129895633010486841514774944147064771313407964226126090" + ], + "source_template_sha256": "10dfc644197ef152062bf69960ecdc2405c847ce47147b520c3172c51cd82bd9", + "two_exact_engines": true +} diff --git a/research/e8-early-reset-reuse/local-evidence/FAILED-INLINING.json b/research/e8-early-reset-reuse/local-evidence/FAILED-INLINING.json new file mode 100644 index 0000000000..927c934e27 --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/FAILED-INLINING.json @@ -0,0 +1,571 @@ +{ + "source_sha256": "015811014644ed62acba1da590d9cf6ebdfe834d89867f8ce2b68722609072ea", + "tested": 140, + "statuses": { + "frame": 106, + "source_identity": 34 + }, + "positive": [], + "results": [ + { + "helper": 246, + "status": "frame" + }, + { + "helper": 247, + "status": "frame" + }, + { + "helper": 252, + "status": "frame" + }, + { + "helper": 253, + "status": "frame" + }, + { + "helper": 254, + "status": "frame" + }, + { + "helper": 255, + "status": "frame" + }, + { + "helper": 258, + "status": "frame" + }, + { + "helper": 259, + "status": "frame" + }, + { + "helper": 260, + "status": "frame" + }, + { + "helper": 261, + "status": "frame" + }, + { + "helper": 262, + "status": "frame" + }, + { + "helper": 263, + "status": "frame" + }, + { + "helper": 264, + "status": "frame" + }, + { + "helper": 265, + "status": "frame" + }, + { + "helper": 267, + "status": "frame" + }, + { + "helper": 268, + "status": "frame" + }, + { + "helper": 270, + "status": "frame" + }, + { + "helper": 271, + "status": "frame" + }, + { + "helper": 272, + "status": "frame" + }, + { + "helper": 273, + "status": "frame" + }, + { + "helper": 274, + "status": "frame" + }, + { + "helper": 275, + "status": "frame" + }, + { + "helper": 276, + "status": "frame" + }, + { + "helper": 277, + "status": "frame" + }, + { + "helper": 278, + "status": "frame" + }, + { + "helper": 279, + "status": "frame" + }, + { + "helper": 280, + "status": "frame" + }, + { + "helper": 281, + "status": "frame" + }, + { + "helper": 282, + "status": "frame" + }, + { + "helper": 283, + "status": "frame" + }, + { + "helper": 284, + "status": "frame" + }, + { + "helper": 285, + "status": "frame" + }, + { + "helper": 286, + "status": "frame" + }, + { + "helper": 287, + "status": "frame" + }, + { + "helper": 517, + "status": "source_identity" + }, + { + "helper": 533, + "status": "source_identity" + }, + { + "helper": 549, + "status": "source_identity" + }, + { + "helper": 565, + "status": "source_identity" + }, + { + "helper": 581, + "status": "source_identity" + }, + { + "helper": 597, + "status": "source_identity" + }, + { + "helper": 613, + "status": "source_identity" + }, + { + "helper": 629, + "status": "source_identity" + }, + { + "helper": 645, + "status": "source_identity" + }, + { + "helper": 661, + "status": "source_identity" + }, + { + "helper": 677, + "status": "source_identity" + }, + { + "helper": 693, + "status": "source_identity" + }, + { + "helper": 714, + "status": "source_identity" + }, + { + "helper": 725, + "status": "source_identity" + }, + { + "helper": 750, + "status": "source_identity" + }, + { + "helper": 752, + "status": "frame" + }, + { + "helper": 764, + "status": "source_identity" + }, + { + "helper": 765, + "status": "source_identity" + }, + { + "helper": 766, + "status": "frame" + }, + { + "helper": 767, + "status": "frame" + }, + { + "helper": 778, + "status": "source_identity" + }, + { + "helper": 780, + "status": "frame" + }, + { + "helper": 792, + "status": "source_identity" + }, + { + "helper": 793, + "status": "source_identity" + }, + { + "helper": 794, + "status": "frame" + }, + { + "helper": 795, + "status": "frame" + }, + { + "helper": 806, + "status": "source_identity" + }, + { + "helper": 808, + "status": "frame" + }, + { + "helper": 810, + "status": "frame" + }, + { + "helper": 811, + "status": "frame" + }, + { + "helper": 812, + "status": "frame" + }, + { + "helper": 813, + "status": "frame" + }, + { + "helper": 820, + "status": "source_identity" + }, + { + "helper": 821, + "status": "source_identity" + }, + { + "helper": 822, + "status": "frame" + }, + { + "helper": 823, + "status": "frame" + }, + { + "helper": 824, + "status": "frame" + }, + { + "helper": 825, + "status": "frame" + }, + { + "helper": 826, + "status": "frame" + }, + { + "helper": 827, + "status": "frame" + }, + { + "helper": 834, + "status": "source_identity" + }, + { + "helper": 836, + "status": "frame" + }, + { + "helper": 848, + "status": "source_identity" + }, + { + "helper": 849, + "status": "source_identity" + }, + { + "helper": 850, + "status": "frame" + }, + { + "helper": 851, + "status": "frame" + }, + { + "helper": 862, + "status": "source_identity" + }, + { + "helper": 864, + "status": "frame" + }, + { + "helper": 866, + "status": "frame" + }, + { + "helper": 867, + "status": "frame" + }, + { + "helper": 868, + "status": "frame" + }, + { + "helper": 869, + "status": "frame" + }, + { + "helper": 876, + "status": "source_identity" + }, + { + "helper": 877, + "status": "source_identity" + }, + { + "helper": 878, + "status": "frame" + }, + { + "helper": 879, + "status": "frame" + }, + { + "helper": 880, + "status": "frame" + }, + { + "helper": 881, + "status": "frame" + }, + { + "helper": 882, + "status": "frame" + }, + { + "helper": 883, + "status": "frame" + }, + { + "helper": 890, + "status": "source_identity" + }, + { + "helper": 892, + "status": "frame" + }, + { + "helper": 896, + "status": "frame" + }, + { + "helper": 897, + "status": "frame" + }, + { + "helper": 898, + "status": "frame" + }, + { + "helper": 899, + "status": "frame" + }, + { + "helper": 900, + "status": "frame" + }, + { + "helper": 901, + "status": "frame" + }, + { + "helper": 902, + "status": "frame" + }, + { + "helper": 903, + "status": "frame" + }, + { + "helper": 904, + "status": "source_identity" + }, + { + "helper": 905, + "status": "source_identity" + }, + { + "helper": 906, + "status": "frame" + }, + { + "helper": 910, + "status": "frame" + }, + { + "helper": 911, + "status": "frame" + }, + { + "helper": 912, + "status": "frame" + }, + { + "helper": 913, + "status": "frame" + }, + { + "helper": 914, + "status": "frame" + }, + { + "helper": 915, + "status": "frame" + }, + { + "helper": 916, + "status": "frame" + }, + { + "helper": 917, + "status": "frame" + }, + { + "helper": 918, + "status": "source_identity" + }, + { + "helper": 919, + "status": "source_identity" + }, + { + "helper": 920, + "status": "frame" + }, + { + "helper": 921, + "status": "frame" + }, + { + "helper": 922, + "status": "frame" + }, + { + "helper": 923, + "status": "frame" + }, + { + "helper": 924, + "status": "frame" + }, + { + "helper": 925, + "status": "frame" + }, + { + "helper": 926, + "status": "frame" + }, + { + "helper": 927, + "status": "frame" + }, + { + "helper": 928, + "status": "frame" + }, + { + "helper": 929, + "status": "frame" + }, + { + "helper": 930, + "status": "frame" + }, + { + "helper": 931, + "status": "frame" + }, + { + "helper": 932, + "status": "frame" + }, + { + "helper": 933, + "status": "frame" + }, + { + "helper": 934, + "status": "frame" + }, + { + "helper": 935, + "status": "frame" + }, + { + "helper": 936, + "status": "frame" + }, + { + "helper": 937, + "status": "frame" + }, + { + "helper": 942, + "status": "frame" + }, + { + "helper": 943, + "status": "frame" + }, + { + "helper": 944, + "status": "frame" + }, + { + "helper": 950, + "status": "frame" + }, + { + "helper": 951, + "status": "frame" + } + ] +} diff --git a/research/e8-early-reset-reuse/local-evidence/FAILED-LATE-RESET.json b/research/e8-early-reset-reuse/local-evidence/FAILED-LATE-RESET.json new file mode 100644 index 0000000000..f01e4f53a2 --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/FAILED-LATE-RESET.json @@ -0,0 +1,8 @@ +{ + "source_sha256": "015811014644ed62acba1da590d9cf6ebdfe834d89867f8ce2b68722609072ea", + "tested_retired_birth_pairs": 484, + "witnesses": 0, + "positive": [], + "rejections": {}, + "results": [] +} diff --git a/research/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON311.json b/research/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON311.json new file mode 100644 index 0000000000..b91e7cc182 --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON311.json @@ -0,0 +1,44 @@ +{ + "status": "PASS_FULL_PARENT_AND_EARLY_RESET_REUSE", + "kappa": "1128250848293019/1000000000000000000", + "kappa_decimal": "0.001128250848293019", + "source_manifest_sha256": "06c5bd1afe07ebede7aaa13ae694ab7b345beab0a9d149c27fc992c92f3727f6", + "checks": [ + { + "name": "full-parent433", + "seconds": 114.39691066707019, + "log_sha256": "028a6067de8c3a61dfbf81c5d9c8d3629949b70cc118b64264f25df4b84a64ac" + }, + { + "name": "reconstruct", + "seconds": 0.05611987505108118, + "log_sha256": "ceeb567022f0746ceb350487a568b94cdfeacf3fb55cdc4088fecfab389caefa" + }, + { + "name": "export", + "seconds": 0.5730349159566686, + "log_sha256": "4be929eee47c06938fe228adcef2dff245a38d32c9bdcc44808376735c175f1b" + }, + { + "name": "global-program", + "seconds": 2.582935667014681, + "log_sha256": "c9ed76d601e121721dd1e540a5db45701b8a6b3d37920b72d3a300126e1624fd" + }, + { + "name": "independent-audit", + "seconds": 3.009822624968365, + "log_sha256": "e089d3fa06b37a96a4a998d27c28f3b62c5b88a7d4fe5e77e0ff6e2a9ca6ef76" + }, + { + "name": "two-moments", + "seconds": 0.13729891693219543, + "log_sha256": "6d556f02612ff9a8df2239e44b949bc8bf81e03102b54ca762966a7dbd7a598e" + }, + { + "name": "finite-assembly", + "seconds": 0.15405583300162107, + "log_sha256": "cd2459472bd6f540e6610b019907b7fc36b1058cc69b1b608e6254e33a8de603" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON314.json b/research/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON314.json new file mode 100644 index 0000000000..773987c837 --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/FULL-PORTABLE-PYTHON314.json @@ -0,0 +1,44 @@ +{ + "status": "PASS_FULL_PARENT_AND_EARLY_RESET_REUSE", + "kappa": "1128250848293019/1000000000000000000", + "kappa_decimal": "0.001128250848293019", + "source_manifest_sha256": "06c5bd1afe07ebede7aaa13ae694ab7b345beab0a9d149c27fc992c92f3727f6", + "checks": [ + { + "name": "full-parent433", + "seconds": 106.79119999997783, + "log_sha256": "028a6067de8c3a61dfbf81c5d9c8d3629949b70cc118b64264f25df4b84a64ac" + }, + { + "name": "reconstruct", + "seconds": 0.05519566696602851, + "log_sha256": "ceeb567022f0746ceb350487a568b94cdfeacf3fb55cdc4088fecfab389caefa" + }, + { + "name": "export", + "seconds": 0.3756797920214012, + "log_sha256": "4be929eee47c06938fe228adcef2dff245a38d32c9bdcc44808376735c175f1b" + }, + { + "name": "global-program", + "seconds": 2.8925695409998298, + "log_sha256": "e0c19f3d4a91706a47e43f67bcbed72bdbb4e46534476bfad7c6e069dccabefb" + }, + { + "name": "independent-audit", + "seconds": 1.761562458006665, + "log_sha256": "1c95eb8403c1b9bd0c405247001c8fdfc03ea58c1f991cae2497ee7cb3221538" + }, + { + "name": "two-moments", + "seconds": 0.15180487500037998, + "log_sha256": "6d556f02612ff9a8df2239e44b949bc8bf81e03102b54ca762966a7dbd7a598e" + }, + { + "name": "finite-assembly", + "seconds": 0.17741812497843057, + "log_sha256": "cd2459472bd6f540e6610b019907b7fc36b1058cc69b1b608e6254e33a8de603" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-reuse/local-evidence/FULL-PYTHON314-INITIAL.json b/research/e8-early-reset-reuse/local-evidence/FULL-PYTHON314-INITIAL.json new file mode 100644 index 0000000000..39fe0d80ac --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/FULL-PYTHON314-INITIAL.json @@ -0,0 +1,44 @@ +{ + "status": "PASS_FULL_PARENT_AND_EARLY_RESET_REUSE", + "kappa": "1128250848293019/1000000000000000000", + "kappa_decimal": "0.001128250848293019", + "source_manifest_sha256": "493f586b3c35dc0c2dacca23e58d81a8deff4f1187df2d2f6b18842ccb9568de", + "checks": [ + { + "name": "full-parent433", + "seconds": 103.98563337500673, + "log_sha256": "028a6067de8c3a61dfbf81c5d9c8d3629949b70cc118b64264f25df4b84a64ac" + }, + { + "name": "reconstruct", + "seconds": 0.050218041986227036, + "log_sha256": "ceeb567022f0746ceb350487a568b94cdfeacf3fb55cdc4088fecfab389caefa" + }, + { + "name": "export", + "seconds": 0.3637806250480935, + "log_sha256": "4be929eee47c06938fe228adcef2dff245a38d32c9bdcc44808376735c175f1b" + }, + { + "name": "global-program", + "seconds": 2.4805483330274, + "log_sha256": "20c0d8b5ce235496b9149639369284883c7ad245addabd6c364a115644b73913" + }, + { + "name": "independent-audit", + "seconds": 1.7047545410459861, + "log_sha256": "9e17c2b34dffc8eb7d63b6ed4d43bce0b872d6d9adfa0b1a64ec46379bbbda49" + }, + { + "name": "two-moments", + "seconds": 0.15184016700368375, + "log_sha256": "6d556f02612ff9a8df2239e44b949bc8bf81e03102b54ca762966a7dbd7a598e" + }, + { + "name": "finite-assembly", + "seconds": 0.15915608289651573, + "log_sha256": "cd2459472bd6f540e6610b019907b7fc36b1058cc69b1b608e6254e33a8de603" + } + ], + "parent_phase_mode": "full replay" +} diff --git a/research/e8-early-reset-reuse/local-evidence/PARENT-FULL-REPLAY.json b/research/e8-early-reset-reuse/local-evidence/PARENT-FULL-REPLAY.json new file mode 100644 index 0000000000..59ced26676 --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/PARENT-FULL-REPLAY.json @@ -0,0 +1,120 @@ +{ + "status": "PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY", + "kappa": "560432476129139/500000000000000000", + "kappa_decimal": "0.001120864952258278", + "bit_lower": "561061350132569610283/500000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 6.9522005058117555, + "bit_invoice": { + "prefix_bits": 223, + "charged_prefix_bits": 256, + "coefficient_bits": 223, + "two_level_coefficient_bits": 483, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14502, + "physical": 14511 + }, + "strict_outer_constraints": { + "bit_positive": "14363170563393781995540516430294897054798660372747977408982986647014886397057213204999835240182750048003850764774138423033492369699369310106183121233447528983183/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "791857266447229204459483569705102945201339627252022591017013352985113602942786795000164759817249951996149235225861576966507630300630689893816878766552471016817/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "791857266447229189304455739864091745201339627252022591017013352985113602942786795000164759817249951996149235225861576966507630300630689893816878766552471016817/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "7181585281696890983407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "14363170563393781995540516430294897054798660372747977408982986647014886397057213204999835240182750048003850764774138423033492369699369310106183121233447528983183/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "395928633223614609015398433325827868141186243920908350307167049240534210454380044514968776965838180997909857795680836487104579924453767980400809082645545614591621233447528983183/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "7181585281696892583407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "6392818414718303107416592912348246333468141186243920908350307167049240534210454380044514968776965838180997909857795680836487104579924453767980400809082645545614591621233447528983183/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "14363170563393781995540516430294897054798660372747977408982986647014886397057213204999835240182750048003850764774138423033492369699369310106183121233447528983183/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "791857266447229218822654133098884940741856057546919645815673725733091011925773442015051156874463156995984475408611624970358395074769112927309248465921781123000121233447528983183/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "14363170563393781995540516430294897054798660372747977408982986647014886397057213204999835240182750048003850764774138423033492369699369310106183121233447528983183/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "14363170563393781995540516430294897054798660372747977408982986647014886397057213204999835240182750048003850764774138423033492369699369310106183121233447528983183/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "395928633223614609015398433325827868141186243920908350307167049240534210454380044514968776965838180997909857795680836487104579924453767980400809082645545614591621233447528983183/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "7181585281696890983407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "6399999999999999993600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/6407181585281696890983407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817", + "epsilon_below_one": "7181585281696897383407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817/6407181585281696890983407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817", + "guard_width": "7181585281696897383407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817/6407181585281696890983407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817", + "K_geometry": "4807181585281696892583407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817/6407181585281696890983407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817000000000000000000", + "K_dominates_log": "231664041345061050845983947421186256401668584010497584446258683699366907737186677571792433338340060113453513521617978855187267028104098984087218414251878140832554446748323117142213588175726741393/206683276944570867451077647988766247307479316572776744891925575256476111799662761934047904233001101994161357746522719973016545013550824072000632231965075950141464786411824273258607000000000000000000", + "record_suffix": "7181585281696897383407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817/6407181585281696890983407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817", + "phase_local": "57452682253575172660075115932332441271463422396879066665683849849996634666672126693120783994727674596531689914600391489101073218400050692643898107263289403063667839215065313749127621233447528983183/51257452682253575127867256701214029332254870510048632733197542663606075726316364959643880249784273294552016721137634553308103163360604369856156793527338835635083267030132419768134536000000000000000000", + "phase_boundary": "11490536450715029406269754961108975467567014357972880107649718965136053613580158978016584167309038954918313004492748842618542529916554807718463285392220894997054215109129499241498821233447528983183/10251490536450715025573451340242805866450974102009726546639508532721215145263272991928776049956854658910403344227526910661620632672120873971231358705467767127016653406026483953626907200000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "12799999999999999980792818414718303109016592912348246333468141186243920908350307167049240534210454380044514968776965838180997909857795680836487104579924453767980400809082645545614591621233447528983183/25628726341126787563933628350607014666127435255024316366598771331803037863158182479821940124892136647276008360568817276654051581680302184928078396763669417817541633515066209884067268000000000000000000", + "prime_interval_packing": "7181585281696897383407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817/6407181585281696890983407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817", + "alpha_positive": "14363170563393788359632590021810442080310539860404516767526852145439839929398406960210596656522703682519149061374476508023700697946773300526302961759162676751217566615750487648225621233447528983183/12814363170563393781966814175303507333063717627512158183299385665901518931579091239910970062446068323638004180284408638327025790840151092464039198381834708908770816757533104942033634000000000000000000", + "alpha_below_one": "12799999999999999993607181585281696890983407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817/12814363170563393781966814175303507333063717627512158183299385665901518931579091239910970062446068323638004180284408638327025790840151092464039198381834708908770816757533104942033634000000000000000000", + "alpha_below_one_fourth": "3189227622077454657132070953804066391185618867017635029057319564329939892965374403017531918954994377226981896009727683073732747012090999815483496633699514550441486622767525747860182878766552471016817/12814363170563393781966814175303507333063717627512158183299385665901518931579091239910970062446068323638004180284408638327025790840151092464039198381834708908770816757533104942033634000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "81827972558059963142482295831039750365059753405165839859500887157900070163784215146039541956047009515286378723945407637791323146319740145866082020356197908534083134290654194352838948148633280800174595114507063924980758679362172726895650066012032777455278212210736064133662717611940569491044304210260992667579958374711353997952140066809896811489/82011924291605720204587610721942446931607792816077812373116068261769721162106183935430208399654837271283226753820215285292965061376966991769850869643742137016133227248211871629015257600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "358859621458028601093359598365557325330989185343344322865175917750116843085479998176003320395642823216282588862770178911921831577311447916339793034478937323776724933813811421508232513136299657413050451/51257452682253575127867256701214029332254870510048632733197542663606075726316364959643880249784273294552016721137634553308103163360604369856156793527338835635083267030132419768134536000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "5122866517862023505724960619093421545844111701898553134698525509504383311993872387184513125657251444712150871805627114225726283245038727038504547469670408073428467093191496467269437/3203590792640848445491703543825876833265929406878039545824846416475379732894772809977742515611517080909501045071102159581756447710037773116009799595458677227192704189383276235508408500000000000000000", + "coordinate_movement_above_kappa": "16099174487823595540516430294897054798660372747977408982986647014886397057213204999835240182750048003850764774138423033492369699369310106183121233447528983183/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "3838551450442350120466514150535089425156364590041027177747358186058007158198199154413541220091468727605299653469049909287939671070001907844989495748423461692471525807616440463522057/6407181585281696890983407087651753666531858813756079091649692832950759465789545619955485031223034161819002090142204319163512895420075546232019599190917354454385408378766552471016817000000000000000000", + "bulk_exposure_above_kappa": "16099174487823595540516430294897054798660372747977408982986647014886397057213204999835240182750048003850764774138423033492369699369310106183121233447528983183/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "49929956359383891636682334467235976400846493161596454696927943987316335662954230095174784854400852306299403498179012231794056054820241901455974763560139756902928431597231181121226907/51257452682253575127867256701214029332254870510048632733197542663606075726316364959643880249784273294552016721137634553308103163360604369856156793527338835635083267030132419768134536000000000000000000", + "scalar_work_above_kappa": "3022347308020427168024638512713719642678957136664830842541068612764774941044496502999868999171719558143016474349913180337924305460021763455362126412952366988818802604491895640211767/2050298107290143005114690268048561173290194820401945309327901706544243029052654598385755209991370931782080668845505382132324126534424174794246271741093553425403330681205296790725381440000000000000000", + "dimension_above_kappa": "3196409207359151553231162974036146672459031212215382000019265285423173401803752699526640796382355306275012080586149285130394424095589341109716483649580049811311843280287131837920058593191496467269437/3203590792640848445491703543825876833265929406878039545824846416475379732894772809977742515611517080909501045071102159581756447710037773116009799595458677227192704189383276235508408500000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "48640105104416009930955104551272628756769/40000000000000000000000000000000000000000000000", + "cutoff_log2": "24346328299693" + }, + { + "gap": "10916033216189494908506938862091413300675156484737667525550897/8000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "19335382939135799529" + }, + { + "gap": "2449825733746901655394438404809502019511708753179325050819248403056515410563319361/1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "15355787073969246541017124" + }, + { + "gap": "549801013506219857550281901936704203615404924098069138182437287931091972275689180385852832590942771793/320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "12195269025875323655994833423982" + }, + { + "gap": "123388839576821941106964776874551364767558290306753584545234931806617408234472738882773008179061080923160999418343337504609/64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "9685246734476302780854842486398253310" + }, + { + "gap": "27691483569705102945201339627252022591017013352985113602942786795000164759817249951996149235225861576966507630300630689893816878766552471016817/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "7691835588756193183914168151850588989363719" + } + ], + "bit_template_sha256": "c40f89a2ae3c2c5635ddf8f18d74f24567ddf67fc8c8e93a1fc7a1a8098e857e", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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.", + "verification_steps": [ + "hamming_packets", + "complex_construct", + "complex_audit", + "complex_emit", + "complex_phases", + "bit_construct", + "bit_export", + "bit_global", + "bit_audit", + "bit_price", + "complex_integrate", + "complex_replay", + "combined" + ], + "phase_mode": "full replay", + "manifest_sha256": "c903e548e42d04a243a034d320b15e6cb26b878c30f935181336ea6ea679a004" +} diff --git a/research/e8-early-reset-reuse/local-evidence/PYTHON311-GZIP-FAILURE.log b/research/e8-early-reset-reuse/local-evidence/PYTHON311-GZIP-FAILURE.log new file mode 100644 index 0000000000..20a1987364 --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/PYTHON311-GZIP-FAILURE.log @@ -0,0 +1,5 @@ +Traceback (most recent call last): + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/source433-review/research/split-centres-global/code/complex_phases.py", line 9, in + assert sha(O/'CANONICAL-WORD.json.gz')==r['canonical_word_sha256'] + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +AssertionError diff --git a/research/e8-early-reset-reuse/local-evidence/PYTHON311-INITIAL-FAILURE.json b/research/e8-early-reset-reuse/local-evidence/PYTHON311-INITIAL-FAILURE.json new file mode 100644 index 0000000000..d82c79a260 --- /dev/null +++ b/research/e8-early-reset-reuse/local-evidence/PYTHON311-INITIAL-FAILURE.json @@ -0,0 +1,4 @@ +{ + "error": "RuntimeError(('full-parent433', 1, 'PASS hamming_packets\\nPASS complex_construct\\nPASS complex_audit\\nPASS complex_emit\\nTraceback (most recent call last):\\n File \"/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-reuse-publication/research/split-centres-global/verify.py\", line 39, in \\n for name in (\\'complex_construct\\',\\'complex_audit\\',\\'complex_emit\\',\\'complex_phases\\',\\'bit_construct\\'):run(name,\\'code/\\'+name+\\'.py\\')\\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n File \"/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-reuse-publication/research/split-centres-global/verify.py\", line 36, in run\\n assert r.returncode==0,(name,str(out/(name+\\'.log\\')))\\n ^^^^^^^^^^^^^^^\\nAssertionError: (\\'complex_phases\\', \\'/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-reuse-full311/baseline/complex_phases.log\\')\\n'))", + "completed": [] +} diff --git a/research/e8-early-reset-reuse/replay.py b/research/e8-early-reset-reuse/replay.py new file mode 100644 index 0000000000..84d4875764 --- /dev/null +++ b/research/e8-early-reset-reuse/replay.py @@ -0,0 +1,71 @@ +"""Reconstruct eleven chronological clean resets; regenerate arbitrary-dirt compensation. +Rohan Arun with OpenAI Codex assistance, using icekylinx's PR433 and ai-nanachi's PR426. +""" +import copy,hashlib,json,sys +from pathlib import Path +from collections import defaultdict +ROOT=Path(__file__).resolve().parent + +def reconstruct(raw,selection): + assert hashlib.sha256(raw).hexdigest()==selection['source_sha256'] + w=json.loads(raw);v=w['v'];n=2*v+w['R'];entries=selection['entries'];cut=len(w['A'])-w['source_basis_gates'];assert all(d>=2*v for f,d,ss in w['A'][:cut]) + removed={z['new_helper'] for z in entries};retired={z['retired_helper'] for z in entries} + assert len(removed)==len(retired)==len(entries) and not removed&retired + assert all(2*v<=x>i&1] + if ss:D.append([0,v+t,ss]) + c['D']=D;raw=json.dumps(c,sort_keys=True,separators=(',',':')).encode();assert hashlib.sha256(raw).hexdigest()==selection['word_sha256'];return raw + +def controls(raw,sel): + rejected=[] + cases=[] + for label in ('missing reset parent','wrong insertion time','duplicate physical reuse'): + s=copy.deepcopy(sel) + if label=='missing reset parent':s['entries'][0]['parents'].pop() + elif label=='wrong insertion time':s['entries'][0]['position']=0 + else:s['entries'][1]['new_helper']=s['entries'][0]['new_helper'] + cases.append((label,s)) + for label,s in cases: + try:reconstruct(raw,s) + except AssertionError:rejected.append(label) + else:raise AssertionError(label) + return rejected +if __name__=='__main__': + raw=Path(sys.argv[1]).read_bytes();s=json.loads((ROOT/'SELECTION.json').read_text());out=Path(sys.argv[2]);data=reconstruct(raw,s);out.write_bytes(data);print(json.dumps(dict(status='PASS_EXACT_CHRONOLOGICAL_RECONSTRUCTION',helpers_removed=len(s['entries']),R=s['R'],sha256=hashlib.sha256(data).hexdigest(),controls=controls(raw,s)))) diff --git a/research/e8-early-reset-reuse/verify.py b/research/e8-early-reset-reuse/verify.py new file mode 100644 index 0000000000..6fae5fc80e --- /dev/null +++ b/research/e8-early-reset-reuse/verify.py @@ -0,0 +1,31 @@ +"""Fresh parent replay, chronological reset reconstruction, banks and exact assembly.""" +from pathlib import Path +import hashlib,json,os,subprocess,sys,time +assert __debug__ +ROOT=Path(__file__).resolve().parent;PARENT=ROOT.parent/'split-centres-global';out=Path(sys.argv[1]).resolve();assert not out.exists() and not out.is_relative_to(ROOT.parent) +read=lambda p:json.loads(p.read_text());sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +def integrity(): + assert {p.relative_to(ROOT).as_posix():sha(p) for p in ROOT.rglob('*') if p.is_file() and p.name!='MANIFEST.json'}==read(ROOT/'MANIFEST.json')['files'] + assert sha(PARENT/'MANIFEST.json')==read(ROOT/'SOURCE.json')['parent_manifest_sha256'] +integrity();out.mkdir(parents=True);env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONINTMAXSTRDIGITS='0');env.pop('PYTHONOPTIMIZE',None);steps=[] +def run(name,file,*args,cwd=None): + t=time.monotonic();log=out/(name+'.log');print('RUN',name,flush=True) + with log.open('w') as f:q=subprocess.run([sys.executable,'-B',str(file),*map(str,args)],cwd=cwd,env=env,stdout=f,stderr=subprocess.STDOUT) + if q.returncode:raise RuntimeError((name,q.returncode,log.read_text()[-2000:])) + steps.append(dict(name=name,seconds=time.monotonic()-t,log_sha256=sha(log)));print('PASS',name,flush=True) +try: + base=out/'baseline';run('full-parent433',PARENT/'verify.py',base,'--replay-phases') + changed=out/'changed';changed.mkdir() + for name in ('work','inherited','split-centres'):(changed/name).symlink_to(base/name,target_is_directory=True) + bit=changed/'bit426-source-centres';bit.mkdir() + run('reconstruct',ROOT/'replay.py',base/'bit426-source-centres/bit-source-centres.json',bit/'bit-source-centres.json') + run('export',PARENT/'vendor/export_records.py',bit/'bit-source-centres.json',bit/'records') + run('global-program',ROOT/'bit_global.py','--source',bit,'--local-check',bit,'--out',bit/'global',cwd=changed) + run('independent-audit',ROOT/'bit_audit.py','--local-check',bit,'--out',bit/'global',cwd=changed) + run('two-moments',ROOT/'bit_price.py',cwd=changed) + env['E8_OUTPUT']=str(changed);run('finite-assembly',ROOT/'combined.py',cwd=changed) + actual=read(changed/'RESULT.json');expected=read(ROOT/'EXPECTED.json') + for k,v in expected.items():assert actual[k]==v,(k,actual[k],v) + integrity();result=dict(status='PASS_FULL_PARENT_AND_EARLY_RESET_REUSE',kappa=actual['kappa'],kappa_decimal=actual['kappa_decimal'],source_manifest_sha256=sha(ROOT/'MANIFEST.json'),checks=steps,parent_phase_mode=read(base/'RESULT.json')['phase_mode']);(out/'RESULT.json').write_text(json.dumps(result,indent=2)+'\n') +except BaseException as e: + (out/'FAILURE.json').write_text(json.dumps(dict(error=repr(e),completed=steps),indent=2)+'\n');raise diff --git a/research/e8-eleven-hosting-selected-validation/MANIFEST.json b/research/e8-eleven-hosting-selected-validation/MANIFEST.json new file mode 100644 index 0000000000..cd2efeb176 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/MANIFEST.json @@ -0,0 +1,43 @@ +{ + "README.md": "1b71ebafa3fb7abe657bd88eb955a590d515dfd2a81d42b344ef9b2607d32acf", + "precision/BEFORE-assemble.py": "150bc23a25485be70b9e0a5347f336338a7458efe2ebc800053da37df42d522e", + "precision/assemble.diff": "888cba9cdf619fcf6d694804a0b89b77494fbbed34cb8a9f5a2fca0c7fdb40c7", + "precision/python311/RECEIPT.json": "f57f1d8f895e18d6a7869cb1a86905a00bf983fcfaceaf4882418dc81e4a7cd5", + "precision/python311/RESULT.json": "dae8b568b730de0ea2377ecb77cc0a49751e1d58b647026d25392b6b7e4301ab", + "precision/python311/assembly.log": "8449240c9cd4c2a46279fea4f920de9572128cb7d54d6f0accea1ba9dd133be1", + "precision/python314/RECEIPT.json": "baf8e978f0e49a2256dfb294cfb9fc60197e903a980f1e5ab8b3b030440498cf", + "precision/python314/RESULT.json": "69f4ea305f053500fe127ad73a72b32bac5ad10cc7faf05122d2ee4a92e4a2fa", + "precision/python314/assembly.log": "8449240c9cd4c2a46279fea4f920de9572128cb7d54d6f0accea1ba9dd133be1", + "python311/AUDIT.json": "2e8f1476d3bc72a2cc3bf3cd035a1e67afae9b2a732fbaf5003b116edd65a743", + "python311/RANK147-PARENT-RECEIPT.json": "c642e7abf6b025b5e503b7afea9374d3b03ae325b769c73fdaebfad6b8210442", + "python311/RECEIPT.json": "378c5171909e3dca8767e89303e73b324e553663ec317e0072cede664c273dba", + "python311/RESULT.json": "f0e6bdf81e0fb96bef9c7ad8c6eaf856b88dd1c7836fd3059af132101aa61130", + "python311/TESTED-MANIFEST.json": "58048a268e837f4e8a30521435b2c3dad77fd0e74b38f020b7b7e11367ecf5b7", + "python311/emit.log": "086a680df0af21c572e1c8125a62e0c0ca6f853714f060f218f29704d3d6c142", + "python311/exact-assembly.log": "e02a0b68a7f72a453c470339dd48eab594e433c80809fdab196e58fc7ff10ee7", + "python311/geometry.log": "581f74eccaad91982180899bab2a0b9c4c50d8e2ffcb00651c4f357455835bb2", + "python311/independent-audit.log": "efd529d366c8e85dd3b823888fd656202cbc28ca9ef0f94509d03656fcfa179f", + "python311/parent-full.log": "27a703b99593110c92d28d2d6e61b431b71762be5a20e1cda2f25681d9edc430", + "python314/AUDIT.json": "8804e3ed7c133ff7278766f379e06561002c91608b35e5c80863b85d98aac4e1", + "python314/RANK147-PARENT-RECEIPT.json": "89314b23aa82c7cfadab792da26d45abf12e1719c5b230658947f4b4a6e6ccb4", + "python314/RECEIPT.json": "2bdfa38a351473dceef266986f0c4885a7652354713fe83b4b1cec00c6d054e8", + "python314/RESULT.json": "93170cf9d084d539015f81fd257f0021fabbf84f705dd13ff0ee6073fc2eb9dc", + "python314/TESTED-MANIFEST.json": "58048a268e837f4e8a30521435b2c3dad77fd0e74b38f020b7b7e11367ecf5b7", + "python314/emit.log": "756c3a1cf09ddc0c053685e16305414c3bc645d052a0ec8ae61515bb43c90342", + "python314/exact-assembly.log": "e02a0b68a7f72a453c470339dd48eab594e433c80809fdab196e58fc7ff10ee7", + "python314/geometry.log": "2045ec8f88fa42a4051f1309f6a994561b3328ba105ccd57204201bfc3f2121f", + "python314/independent-audit.log": "3e00eba9ad762570d30d84b32b588e8dbe8458ca7fe5d8010f64a703a97f761e", + "python314/parent-full.log": "2192bf17cc72cd10cba563cebc12ae214bdaa37c4c5f3ff4130e1fd5cbe6b715", + "research/FRAMES.json": "f3314e9d97b682a759297c61dcbf3c288630d84a2bcc439540a33a219523b1c4", + "research/GROUPS.json": "ee4ea310c3ad579da394337795e4ae466f0619e2889f54c0a447fd0cebf6f284", + "research/HOSTING-RESULT.json": "d7171db3712effc4c2c267230c5814adcaf816b85b7d7609d21b8881df2ec2d8", + "research/MIXED-GROUPS.json": "bcc26a92e220e3a36fedfe591eb372be975e5ee1d7820d600a8d1ed110aeb47b", + "research/PARTITIONS-SUMMARY.json": "9b3a478df5a3c7e33e5adfc1d6b892a980ab537920b3d410532281acc01bcd17", + "research/REPEATED-PARTITIONS.json": "6fa4ec52d91ffdcb5eb34579c931e9d1a58d07e7c3ca41f89f4709244ab3563b", + "research/SUMMARY.json": "39146dd50833c0b5ad35de1a85c7e6390c1aa939456b5b59ced23ae7c8fe0657", + "research/frames-initial-boundary-failure.log": "a5fac3e7d22349d74a5799a44ea0fe000ee5523c97fd6200f9c01f4587f47908", + "research/partitions.log": "c67a10987d4c28c334c3702e863c545e9045d896fdeebdf3ee6cc96876512e14", + "research/repeated-partitions.log": "df972e8ab60ffc60629aaa8e424fa3994cc2cc2b52659d60c66738a577bb726f", + "research/search_complex_output_partitions.py": "5508da1406a91ba48635e6699fe710d528d2e6c8b631255fded53d45eddcdc86", + "research/search_complex_same_partitions.py": "4488444d135eecbeead45c83ecc48edb5d7e777c029152d77c40df0b17c374e6" +} diff --git a/research/e8-eleven-hosting-selected-validation/README.md b/research/e8-eleven-hosting-selected-validation/README.md new file mode 100644 index 0000000000..a499fe2be3 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/README.md @@ -0,0 +1,7 @@ +# Verification evidence for PR447 + +Uninterrupted full Python3.11.15 and3.14.8 wrappers passed for κ=0.001265848755025708, with the same tested manifest58048a268e837f4e8a30521435b2c3dad77fd0e74b38f020b7b7e11367ecf5b7. See python311/ and python314/ for receipts, full logs, exact results and tested manifests. Both nested nine-stage rank147 parents also passed. + +The current κ=0.001265848755025709 keeps the full rational complex lower endpoint. Only two executable assembly lines changed: remove truncation at1e-18; compare the refined endpoint >= the inherited weaker one. All supplier, geometry, program, ownership, phase and row-bound code/witnesses remain byte-identical to the full runs. precision/ retains the exact diff and both runtime receipts: both rational moments, both invoices, six bootstrap levels,47 strict outer constraints and controls pass against each fully verified supplier artifact. No fresh uninterrupted current-manifest wrapper is claimed. GitHub CI remains pending. + +The research/ directory contains subsequent negative screens, including failures and scope limits. OpenAI Codex assistance; inherited proof assumptions remain. diff --git a/research/e8-eleven-hosting-selected-validation/precision/BEFORE-assemble.py b/research/e8-eleven-hosting-selected-validation/precision/BEFORE-assemble.py new file mode 100644 index 0000000000..2df8f178ad --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/precision/BEFORE-assemble.py @@ -0,0 +1,94 @@ +# Adapted from DaysSky PR442 with Claude assistance; Eleven-stage R740 integration by chafreaky with OpenAI Codex. Apache-2.0. +"""Two exact moments for both hosted suppliers, fresh finite invoices with the hosted stock, and the strict outer +assembly of #434 (six bootstrap levels, 47 inequalities, next-grid and parameter controls). +usage: assemble.py VERIFIED444_DIR BIT_DIR""" +import gzip, hashlib, importlib.util, json, math, sys +from fractions import Fraction as Q +from pathlib import Path +parent444, bd = map(Path, sys.argv[1:3]) +upstream=parent444 +ap=bd/"AUDIT.json";outp=bd/"RESULT.json" +from row_bound import bound as row_bound, controls as row_controls +par=upstream / "changed" +cd=upstream / "complex" +def load(name): + sp = importlib.util.spec_from_file_location('hosted_' + name, par / 'work/pr361/code/engines' / (name + '.py')) + mod = importlib.util.module_from_spec(sp); sp.loader.exec_module(mod); return mod +M, Other, Outer = load('moment'), load('base_two_moment'), load('outer') +audit = json.loads(ap.read_text()); ua=json.loads((upstream/'AUDIT.json').read_text()); ur=json.loads((upstream/'RESULT.json').read_text()); bg = json.loads((bd / 'GLOBAL.json').read_text()); ch = json.loads((cd / 'HOSTED.json').read_text()) +assert audit['template_sha256'] == bg['template_sha256'] and ua['complex_template_sha256'] == ch['template_sha256'] +assert json.loads((upstream/'RECEIPT.json').read_text())['status']in ('PASS_FULL_RANK138_IDLE_HOSTING','PASS_FULL_HOSTING_SELECTED_KERNEL') +# ---------------- bit: two moments and the parent's invoice formulas with the hosted stock +P = {int(r): n for r, n in audit['profile'].items()}; m, W = 78, audit['live']; E = sum(P.values()) +geo = json.loads((bd / 'GEOMETRY.json').read_text());pg=bg +T, L, R, V, K = 8, 11, 740, 120, 5 +assert pg["replicas"]==T and pg["R"]==R +mass = sum(r * z for r, z in P.items()); assert m * W - mass == (2*K*V-L*72)*T +physical = W + 9; d = m * m; N = 2 * m +unit = L * T * pg['local_additions'] + pg['bridge_additions'] +J = 8 * T * L * (2 * V + R) + 8 * (2 * K * V * T) + 2 * L * T * R + 2 * pg['copy_erase_episodes'] # every helper route charged (bank or hosted) +high = 16 * (d + 1) ** 2; good = 8 * m * m + 8; compiler = 128 * N ** 3 +selectors = 2 * L * T * ((W - 1) + R * m * (geo['max_route_factors'] + 144 + 2 + (m - 1) + m)) # 144: residual isometry; +2: hosted slot permutation and idle basis U_q +prefix = int(pg['global_prefix_bound']); charged_prefix = 64 * ((prefix.bit_length() + 63) // 64) +assert 1<<128 <= prefix < 1< 1 +# ---------------- complex: two moments and the parent's invoice with the hosted stock +PC = {int(r): n for r, n in ua['complex_profile'].items()}; mc, WC = 73, ua['complex_live']; EC = sum(PC.values()) +massc = sum(r * z for r, z in PC.items()); assert mc * WC - massc == 2496 +rc = M.certify(PC, mc, WC, True); b = Q(int(Q(rc['lower']) * 10 ** 18), 10 ** 18) +assert b==Q(ur['complex_lower']) +fbc = 32 * mc * mc * EC +l3, h3 = Other.moment(mc, WC, list(PC.items()), b); b3, bh3 = Other.moment(mc, WC, [(1, fbc)], b); assert h3 + bh3 / 10 ** 16 < 1 +integ = json.loads((par / 'split-centres/INTEGRATION.json').read_text()); inv = integ['finite_invoice'] +physc = ch['physical']; Rc = 560; v = 120 +compilerc = 64 * (mc + 1) ** 3 +pervertex = inv['pervertex'] - integ['physical'] * (64 + 1) + physc * (64 + 1) - integ['live'] + WC # stock-dependent terms re-based +r_ = mc // 2; group = 2 ** (r_ * r_) * math.prod(2 ** (2 * i) - 1 for i in range(1, r_ + 1)); stock = group * physc +smass = group * massc; logical = group * max(pervertex, inv['pervertex']) + 64; router = compilerc * (logical + 1) * (stock + 1) ** 2 +GG, EE, C0 = 1 << 30000, 1 << 100000, 1 << 210000; BB = smass + EE +literal = 2 * GG * stock ** 2 + 8 * smass + 4 * stock + 4 + 32 * mc +assert logical < 1 << 6050 and router < GG and literal < EE and BB < 1 << 100001 and 32 * mc * BB * BB < C0 and 2 * BB + 18 < C0 +depth = 2; assert mc ** depth > 2 * max(PC) ** depth +rowc = depth * stock.bit_length() + 9909 + 252; assert rowc < 20161 +# ---------------- outer assembly exactly as #434's combined.py +eta = beta = Q(1, 10 ** 18); grid = Q(1, 10 ** 18); s = min(c, (1 - beta) * b) - Q(1, 10 ** 24) +assert 0 < s < c and s < (1 - beta) * b +chain = [Q(384599, 10 ** 10)]; cutoffs = [] +def ceil(x): return -((-x.numerator) // x.denominator) +for j 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 old < a < s < 1 - a and gap > 0 + cutoff = max(ceil(36 / gap ** 2), ceil(2 * (4 + charged_two) / gap)); assert cutoff * gap ** 2 >= 36 and cutoff * gap >= 2 * (4 + charged_two) + 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) +parent_k = Q('315841366195289/250000000000000000') +assert json.loads((parent444/'RECEIPT.json').read_text())['status']in ('PASS_FULL_RANK138_IDLE_HOSTING','PASS_FULL_HOSTING_SELECTED_KERNEL') +res = dict(status='PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY', kappa=str(k), kappa_decimal=format(float(k), '.18f'), + bit_lower=str(c), complex_lower=str(b), binding_component='bit' if c < (1 - beta) * b else 'complex', + gain_over_pr445_percent=float(100 * (k / parent_k - 1)), + bit=dict(live=W, physical=physical, maxchild=max(P), rank_mass=mass, hosted_residuals=audit['hosted_residuals'], + prefix_bits=prefix.bit_length(), charged_prefix_bits=charged_prefix, coefficient_bits=coefficient.bit_length(), + three_level_coefficient_bits=two.bit_length(), charged_three_level_coefficient_bits=charged_two, row_coefficient=row), + complex=dict(live=WC, physical=physc, maxchild=max(PC), rank_mass=massc, hosted_residuals=ua['complex_hosted_residuals'], + physical_stock_bits=stock.bit_length(), router_bits=router.bit_length(), literal_bits=literal.bit_length(), row_coefficient=rowc), + strict_outer_constraints={n: str(x) for n, x in a['strict_constraints'].items()}, outer_controls=controls, bootstrap=cutoffs, + bit_template_sha256=bg['template_sha256'], complex_template_sha256=ch['template_sha256'], emitted_program_sha256=bg['emitted_program_sha256'], bank_assignments=audit['bank_assignments'], bit_profile=audit['profile'], parent_kappa=str(parent_k), additional_interface='PR442 idle-data hosting during untouched windows',row_bound=rows,row_controls=row_rejected, halving_depth=3, finite_controls=['old 128-bit prefix charge insufficient','old 512-bit composite charge insufficient']) +outp.write_text(json.dumps(res, indent=2) + '\n') +print(res['status'], res['kappa_decimal'], 'binding', res['binding_component'], 'gain over #445 %.4f%%' % res['gain_over_pr445_percent']) diff --git a/research/e8-eleven-hosting-selected-validation/precision/assemble.diff b/research/e8-eleven-hosting-selected-validation/precision/assemble.diff new file mode 100644 index 0000000000..f3336f5818 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/precision/assemble.diff @@ -0,0 +1,13 @@ +--- verified-before/assemble.py ++++ precision/assemble.py +@@ -44,8 +44,8 @@ + # ---------------- complex: two moments and the parent's invoice with the hosted stock + PC = {int(r): n for r, n in ua['complex_profile'].items()}; mc, WC = 73, ua['complex_live']; EC = sum(PC.values()) + massc = sum(r * z for r, z in PC.items()); assert mc * WC - massc == 2496 +-rc = M.certify(PC, mc, WC, True); b = Q(int(Q(rc['lower']) * 10 ** 18), 10 ** 18) +-assert b==Q(ur['complex_lower']) ++rc = M.certify(PC, mc, WC, True); b = Q(rc['lower']) ++assert b>=Q(ur['complex_lower']) + fbc = 32 * mc * mc * EC + l3, h3 = Other.moment(mc, WC, list(PC.items()), b); b3, bh3 = Other.moment(mc, WC, [(1, fbc)], b); assert h3 + bh3 / 10 ** 16 < 1 + integ = json.loads((par / 'split-centres/INTEGRATION.json').read_text()); inv = integ['finite_invoice'] diff --git a/research/e8-eleven-hosting-selected-validation/precision/python311/RECEIPT.json b/research/e8-eleven-hosting-selected-validation/precision/python311/RECEIPT.json new file mode 100644 index 0000000000..d8ba207fce --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/precision/python311/RECEIPT.json @@ -0,0 +1,18 @@ +{ + "status": "PASS_REVISED_EXACT_ASSEMBLY_AGAINST_FULLY_VERIFIED_SUPPLIERS", + "python": "3.11.15", + "supplier_full_receipt_sha256": "378c5171909e3dca8767e89303e73b324e553663ec317e0072cede664c273dba", + "prior_tested_manifest": "58048a268e837f4e8a30521435b2c3dad77fd0e74b38f020b7b7e11367ecf5b7", + "old_assembly_sha256": "150bc23a25485be70b9e0a5347f336338a7458efe2ebc800053da37df42d522e", + "new_assembly_sha256": "7f5b02e2f48c0b5e1ae8dc12fd953b2bb262287277910115bee5fffae4a73817", + "kappa": "1265848755025709/1000000000000000000", + "complex_lower": "79215822439319966337/62500000000000000000000", + "input_sha256": { + "GLOBAL.json": "4c71526402774c619212991d08708e11629946072bb78b799b8cacf45d8bab30", + "GEOMETRY.json": "77adc647850dcf0522869e6c007e08108222d49a458b8dedbfe8d028c2d160be", + "AUDIT.json": "2e8f1476d3bc72a2cc3bf3cd035a1e67afae9b2a732fbaf5003b116edd65a743" + }, + "result_sha256": "dae8b568b730de0ea2377ecb77cc0a49751e1d58b647026d25392b6b7e4301ab", + "strict_outer_constraints": 47, + "scope": "Full unchanged suppliers passed; the two-line assembly refinement is rerun in both versions. This is not a fresh uninterrupted full-wrapper run of the changed manifest." +} diff --git a/research/e8-eleven-hosting-selected-validation/precision/python311/RESULT.json b/research/e8-eleven-hosting-selected-validation/precision/python311/RESULT.json new file mode 100644 index 0000000000..4414ee735e --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/precision/python311/RESULT.json @@ -0,0 +1,154 @@ +{ + "status": "PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY", + "kappa": "1265848755025709/1000000000000000000", + "kappa_decimal": "0.001265848755025709", + "bit_lower": "1267514693114214441041/1000000000000000000000000", + "complex_lower": "79215822439319966337/62500000000000000000000", + "binding_component": "complex", + "gain_over_pr445_percent": 0.19656151080425197, + "bit": { + "live": 9600, + "physical": 9609, + "maxchild": 56, + "rank_mass": 745536, + "hosted_residuals": 65120, + "prefix_bits": 153, + "charged_prefix_bits": 192, + "coefficient_bits": 153, + "three_level_coefficient_bits": 514, + "charged_three_level_coefficient_bits": 1024, + "row_coefficient": 19431 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "23705571408295771212205477061105578280885391411980593584323710345481463456287523960522314822473067077310731630037929272380007140677815595272742120543121979035317258779927639705940064463108864362374476704044906928597801883438467168006438846696150245221215831391075967/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "1873909177560680033663/62500000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "18983940451209686945483274760080187655885391411980593584323710345481463456287523960522314822473067077310731630037929272380007140677815595272742120543121979035317258779927639705940064463108864362374476704044906928597801883438467168006438846696150245221215831391075967/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "2360815478543042116786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "14213601182690927715758268272769713240737218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "2360815478543042582447971797017983275880630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "1860284333752413988667552028202982016724119369423282408553237218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "28427202365381855455222107953835197693679914350875015303438318933500869871963813615040851366185543116788416807564862195069275510639886322892734979865306383762575138236805660670622805683181224656434412240936042566223325179393560239408636963257683077214776984694925721778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "14213601182690927715758268272769713240737218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "2360815478543042116786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "1862645149230957029387354850769042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "epsilon_below_one": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "guard_width": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "K_geometry": "1399344677401760816019947971797017983275880630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000", + "K_dominates_log": "2360815478543042580087156318474940693432658779699608170882150778397690041960754884124580367456412125980444188871042056646642962403112019253779052244919033622908020707233131011447410746903553427263735395215048342405599562713203373322749651239262446519006697764718700801248470910220216325384900390463705278784168608924033/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000", + "record_suffix": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "phase_local": "18886523828344349970448705052385980340258360124462006110721620264204660463025508558803613360716050682522586504227975009715286014581829107098875470138069356828360583551015371297031848819010667703694321233827501015675382340318079659851779987518975858681083918397463018572064987914506048373895720127995474278784168608924033/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "phase_boundary": "3777304765668868502084969242877137374622324433469420851439819591466858935194876627668497481164381145112627815901636309766812366875573483926215888064331918469089668950985894464497505438798448936672071324238972857257295229365049912168095108634666453275756173818953928038747029510587573358114399225109285478784168608924033/2984009543535200117386858695182845960741409008922748146314820450168184450381957657982783778969887917384352489672081584674987118411926563905793164895518434359589817728650007369208133585845053054691755562477397132039604521777738257436920921219721077351351331936144627272633329489600979618753945330225721547200000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "3725290298461914056909703736828585864133213315510721274536619369423282408553237218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/7460023858838000293467146737957114901853522522306870365787051125420461125954894144956959447424719793460881224180203961687467796029816409764482912238796085898974544321625018423020333964612632636729388906193492830099011304444345643592302303049302693378378329840361568181583323724002449046884863325564303868000000000000000000", + "prime_interval_packing": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "alpha_positive": "4721630957086086093857702730971440059974576664156457430144932133512971530684291123364442223636360491200750233922032478513591969857214460374507111943940508366544101113487736766530901900061712609610961943588255867158425673799614271398325413564935791113589157855110746197079401910832478046600731781539672278784168608924033/3730011929419000146733573368978557450926761261153435182893525562710230562977447072478479723712359896730440612090101980843733898014908204882241456119398042949487272160812509211510166982306316318364694453096746415049505652222172821796151151524651346689189164920180784090791661862001224523442431662782151934000000000000000000", + "alpha_below_one": "3725290298461914060639715666247586010866786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/3730011929419000146733573368978557450926761261153435182893525562710230562977447072478479723712359896730440612090101980843733898014908204882241456119398042949487272160812509211510166982306316318364694453096746415049505652222172821796151151524651346689189164920180784090791661862001224523442431662782151934000000000000000000", + "alpha_below_one_fourth": "927781351397663950589535639513667922671715738624202338293236458544044669213677476996255488704453613691409402788603462732419882533869836760185856917905570229005273939089639566111010843676517366981562651330598347895217987381743591177639462467597900881183702072190085276500836063589473652814007183913998311221215831391075967/3730011929419000146733573368978557450926761261153435182893525562710230562977447072478479723712359896730440612090101980843733898014908204882241456119398042949487272160812509211510166982306316318364694453096746415049505652222172821796151151524651346689189164920180784090791661862001224523442431662782151934000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "6930088034009105798023708111692435196955552149556253087199349785849940897995706471261027431127870643844901693342737108275707705529890700781595392029635126865598362396597221833222723881261204310103651595840452469696915125094496475730783791137376889176850664727186651522474760850996412111715602190635734754931595221464414975629304939800383351588309136278042132832541676673833437286281560604216841697310719529148078209597162801376835112883596447585736198489405068437778599041298850219217355636138681012465311021017103961697858164136050772408162805440755664741613275556876236701007565964985089/6947688626905903493489275442396397610989885891142180530156056513470095699611021340784579000831320689489023037422638350806634683189742648754718631728362372050969437064253742269259257209126495417886775830940802423375669219013625423975570409604630147459337795004585355689361061643811360976551532117244139190763235092163085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "104459220547560348465970526895289994899756720410377762028982959898457530789618594663376697003261687304091819172451803232095145654612215527497327442843099681706954893325097359192556251675020886004935472972555359759131222550754649920051095327122102326748280004732762110939116926964310360886345306002030698673163647494173227901/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "1936541361599938238709033288540658000499011801206998066772423702345580429101509756370917767105050622202881799589364612402433960287760299129937426782586605084328184238481301522970754103950554827387884928987678706802736338442313246590109517091167525603317238251045319564368073201433186692831253395742964397/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000", + "coordinate_movement_above_kappa": "5976870668718423800856356596806912794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "7153539689043816534224660405137927503563117063028047532566092099046514761278622013167790524887067383766149354431362198056701128030619668881669872288758360958454815807504691721567061279739666820553770243930549927798351233122683569203394132884185225872265579095492751897224227043257443111003756435188843/186500596470950007336678668448927872546338063057671759144676278135511528148872353623923986185617994836522030604505099042186694900745410244112072805969902147474363608040625460575508349115315815918234722654837320752475282611108641089807557576232567334459458246009039204539583093100061226172121583139107596700000000000000000", + "bulk_exposure_above_kappa": "5976870668718423800856356596806912794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "6167301069252005542838332885878870376675191256772396576945575711989067025368460369771142827559505235796952866489661947110136937264811880833895773962197733300907293505819139154990615375838647823191343299159563616798126576983073918230498257917711838103564993707910596287965430956462432234043948008988335341/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "scalar_work_above_kappa": "13627324928090005836305479623835985278528713779079266942732626837409528151323354514728102274984225029257834090669865908797604733294628290598378686200993819199881837827444157578010949340451280459920732205353056446897137881427419561822800560967014531481943323548272164469548754680464881280928811334552639209/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "dimension_above_kappa": "1860284333752413987344464378648745450745652657963940409052249019851882785283700166106340567245329808005697461059999631781014850581910509961313232228061277655193790702180350478573100747328143363788406877402181619863132102876592295904660762679987573245514934631077133557921407320044707302646857370042110725831253395742964397/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "6084731986648243566095196451386160927799499851857157302451725850342813197569/3906250000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "14836780197380" + }, + { + "gap": "482007048645177890006028469670812911168993343898915952762061335116135880346291986119085127031870806916107589765247/244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "9235827787851545884" + }, + { + "gap": "38182584779977073239836692054683233293135163201113383270550675434201115625418946664378777838616516927722383093357333882798661663919669805727482227509761/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "5749260539824950511327760" + }, + { + "gap": "3024664856204944855019991806475746930649809456135947463826689575195074874654190665711231803441232234678309970305204565316873845088735151893940148902472642089913451052766544313604022141084543/953674316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "3578888380559265369049383003892" + }, + { + "gap": "239601314187582169723952440922470383041161064239717289659446974659654573306683437230015831614583925826622244259104097470050221021571687376437109446835536878765763871633353099724503711287858088742345989062661383654089904568971009/59604644775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2227841641856102698350997063607860703" + }, + { + "gap": "18980215160911225031420774760080187655885391411980593584323710345481463456287523960522314822473067077310731630037929272380007140677815595272742120543121979035317258779927639705940064463108864362374476704044906928597801883438467168006438846696150245221215831391075967/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1386821228666677298327686419515294231005143" + } + ], + "bit_template_sha256": "ddd133d2f4de89a6d26ba062d043e703ca5cb50f07c6956035be9972416cfd0a", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", + "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", + "bank_assignments": 0, + "bit_profile": { + "1": 223960, + "2": 93568, + "3": 23528, + "4": 34296, + "5": 9504, + "6": 2000, + "7": 5112, + "8": 792, + "49": 8, + "56": 440 + }, + "parent_kappa": "315841366195289/250000000000000000", + "additional_interface": "PR442 idle-data hosting during untouched windows", + "row_bound": { + "method": "successive nonzero-norm vectors in nondegenerate complements", + "minimum_q": 3, + "column_exponent": 3003, + "factor_two_power": 78, + "cover_exponent": 3081, + "physical_families": 9609, + "physical_exponent": 9, + "stock_exponent": 3090, + "halving_depth": 3, + "complete_row_coefficient": 19431, + "retained_row_coefficient": 20161 + }, + "row_controls": [ + "false two-level halving", + "understated row reserve" + ], + "halving_depth": 3, + "finite_controls": [ + "old 128-bit prefix charge insufficient", + "old 512-bit composite charge insufficient" + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/precision/python311/assembly.log b/research/e8-eleven-hosting-selected-validation/precision/python311/assembly.log new file mode 100644 index 0000000000..9f548bcb3b --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/precision/python311/assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY 0.001265848755025709 binding complex gain over #445 0.1966% diff --git a/research/e8-eleven-hosting-selected-validation/precision/python314/RECEIPT.json b/research/e8-eleven-hosting-selected-validation/precision/python314/RECEIPT.json new file mode 100644 index 0000000000..ff90dc0b56 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/precision/python314/RECEIPT.json @@ -0,0 +1,18 @@ +{ + "status": "PASS_REVISED_EXACT_ASSEMBLY_AGAINST_FULLY_VERIFIED_SUPPLIERS", + "python": "3.14.8", + "supplier_full_receipt_sha256": "2bdfa38a351473dceef266986f0c4885a7652354713fe83b4b1cec00c6d054e8", + "prior_tested_manifest": "58048a268e837f4e8a30521435b2c3dad77fd0e74b38f020b7b7e11367ecf5b7", + "old_assembly_sha256": "150bc23a25485be70b9e0a5347f336338a7458efe2ebc800053da37df42d522e", + "new_assembly_sha256": "7f5b02e2f48c0b5e1ae8dc12fd953b2bb262287277910115bee5fffae4a73817", + "kappa": "1265848755025709/1000000000000000000", + "complex_lower": "79215822439319966337/62500000000000000000000", + "input_sha256": { + "GLOBAL.json": "f7e6aa31c6b36286e00d88aa8f9ed9bf20aee4e6702322d5907d57b9ddb5ffef", + "GEOMETRY.json": "7c2d5dadb344160ca6f40feb89401711e02f9d496b43a04fcfc1925ed506c6d4", + "AUDIT.json": "8804e3ed7c133ff7278766f379e06561002c91608b35e5c80863b85d98aac4e1" + }, + "result_sha256": "69f4ea305f053500fe127ad73a72b32bac5ad10cc7faf05122d2ee4a92e4a2fa", + "strict_outer_constraints": 47, + "scope": "Full unchanged suppliers passed; the two-line assembly refinement is rerun in both versions. This is not a fresh uninterrupted full-wrapper run of the changed manifest." +} diff --git a/research/e8-eleven-hosting-selected-validation/precision/python314/RESULT.json b/research/e8-eleven-hosting-selected-validation/precision/python314/RESULT.json new file mode 100644 index 0000000000..d1d30c76f2 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/precision/python314/RESULT.json @@ -0,0 +1,154 @@ +{ + "status": "PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY", + "kappa": "1265848755025709/1000000000000000000", + "kappa_decimal": "0.001265848755025709", + "bit_lower": "1267514693114214441041/1000000000000000000000000", + "complex_lower": "79215822439319966337/62500000000000000000000", + "binding_component": "complex", + "gain_over_pr445_percent": 0.19656151080425197, + "bit": { + "live": 9600, + "physical": 9609, + "maxchild": 56, + "rank_mass": 745536, + "hosted_residuals": 65120, + "prefix_bits": 153, + "charged_prefix_bits": 192, + "coefficient_bits": 153, + "three_level_coefficient_bits": 514, + "charged_three_level_coefficient_bits": 1024, + "row_coefficient": 19431 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "23705571408295771212205477061105578280885391411980593584323710345481463456287523960522314822473067077310731630037929272380007140677815595272742120543121979035317258779927639705940064463108864362374476704044906928597801883438467168006438846696150245221215831391075967/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "1873909177560680033663/62500000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "18983940451209686945483274760080187655885391411980593584323710345481463456287523960522314822473067077310731630037929272380007140677815595272742120543121979035317258779927639705940064463108864362374476704044906928597801883438467168006438846696150245221215831391075967/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "2360815478543042116786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "14213601182690927715758268272769713240737218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "2360815478543042582447971797017983275880630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "1860284333752413988667552028202982016724119369423282408553237218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "28427202365381855455222107953835197693679914350875015303438318933500869871963813615040851366185543116788416807564862195069275510639886322892734979865306383762575138236805660670622805683181224656434412240936042566223325179393560239408636963257683077214776984694925721778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "14213601182690927715758268272769713240737218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "2360815478543042116786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "1862645149230957029387354850769042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "epsilon_below_one": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "guard_width": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "K_geometry": "1399344677401760816019947971797017983275880630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000", + "K_dominates_log": "2360815478543042580087156318474940693432658779699608170882150778397690041960754884124580367456412125980444188871042056646642962403112019253779052244919033622908020707233131011447410746903553427263735395215048342405599562713203373322749651239262446519006697764718700801248470910220216325384900390463705278784168608924033/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000", + "record_suffix": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "phase_local": "18886523828344349970448705052385980340258360124462006110721620264204660463025508558803613360716050682522586504227975009715286014581829107098875470138069356828360583551015371297031848819010667703694321233827501015675382340318079659851779987518975858681083918397463018572064987914506048373895720127995474278784168608924033/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "phase_boundary": "3777304765668868502084969242877137374622324433469420851439819591466858935194876627668497481164381145112627815901636309766812366875573483926215888064331918469089668950985894464497505438798448936672071324238972857257295229365049912168095108634666453275756173818953928038747029510587573358114399225109285478784168608924033/2984009543535200117386858695182845960741409008922748146314820450168184450381957657982783778969887917384352489672081584674987118411926563905793164895518434359589817728650007369208133585845053054691755562477397132039604521777738257436920921219721077351351331936144627272633329489600979618753945330225721547200000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "3725290298461914056909703736828585864133213315510721274536619369423282408553237218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/7460023858838000293467146737957114901853522522306870365787051125420461125954894144956959447424719793460881224180203961687467796029816409764482912238796085898974544321625018423020333964612632636729388906193492830099011304444345643592302303049302693378378329840361568181583323724002449046884863325564303868000000000000000000", + "prime_interval_packing": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "alpha_positive": "4721630957086086093857702730971440059974576664156457430144932133512971530684291123364442223636360491200750233922032478513591969857214460374507111943940508366544101113487736766530901900061712609610961943588255867158425673799614271398325413564935791113589157855110746197079401910832478046600731781539672278784168608924033/3730011929419000146733573368978557450926761261153435182893525562710230562977447072478479723712359896730440612090101980843733898014908204882241456119398042949487272160812509211510166982306316318364694453096746415049505652222172821796151151524651346689189164920180784090791661862001224523442431662782151934000000000000000000", + "alpha_below_one": "3725290298461914060639715666247586010866786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/3730011929419000146733573368978557450926761261153435182893525562710230562977447072478479723712359896730440612090101980843733898014908204882241456119398042949487272160812509211510166982306316318364694453096746415049505652222172821796151151524651346689189164920180784090791661862001224523442431662782151934000000000000000000", + "alpha_below_one_fourth": "927781351397663950589535639513667922671715738624202338293236458544044669213677476996255488704453613691409402788603462732419882533869836760185856917905570229005273939089639566111010843676517366981562651330598347895217987381743591177639462467597900881183702072190085276500836063589473652814007183913998311221215831391075967/3730011929419000146733573368978557450926761261153435182893525562710230562977447072478479723712359896730440612090101980843733898014908204882241456119398042949487272160812509211510166982306316318364694453096746415049505652222172821796151151524651346689189164920180784090791661862001224523442431662782151934000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "6930088034009105798023708111692435196955552149556253087199349785849940897995706471261027431127870643844901693342737108275707705529890700781595392029635126865598362396597221833222723881261204310103651595840452469696915125094496475730783791137376889176850664727186651522474760850996412111715602190635734754931595221464414975629304939800383351588309136278042132832541676673833437286281560604216841697310719529148078209597162801376835112883596447585736198489405068437778599041298850219217355636138681012465311021017103961697858164136050772408162805440755664741613275556876236701007565964985089/6947688626905903493489275442396397610989885891142180530156056513470095699611021340784579000831320689489023037422638350806634683189742648754718631728362372050969437064253742269259257209126495417886775830940802423375669219013625423975570409604630147459337795004585355689361061643811360976551532117244139190763235092163085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "104459220547560348465970526895289994899756720410377762028982959898457530789618594663376697003261687304091819172451803232095145654612215527497327442843099681706954893325097359192556251675020886004935472972555359759131222550754649920051095327122102326748280004732762110939116926964310360886345306002030698673163647494173227901/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "1936541361599938238709033288540658000499011801206998066772423702345580429101509756370917767105050622202881799589364612402433960287760299129937426782586605084328184238481301522970754103950554827387884928987678706802736338442313246590109517091167525603317238251045319564368073201433186692831253395742964397/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000", + "coordinate_movement_above_kappa": "5976870668718423800856356596806912794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "7153539689043816534224660405137927503563117063028047532566092099046514761278622013167790524887067383766149354431362198056701128030619668881669872288758360958454815807504691721567061279739666820553770243930549927798351233122683569203394132884185225872265579095492751897224227043257443111003756435188843/186500596470950007336678668448927872546338063057671759144676278135511528148872353623923986185617994836522030604505099042186694900745410244112072805969902147474363608040625460575508349115315815918234722654837320752475282611108641089807557576232567334459458246009039204539583093100061226172121583139107596700000000000000000", + "bulk_exposure_above_kappa": "5976870668718423800856356596806912794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "6167301069252005542838332885878870376675191256772396576945575711989067025368460369771142827559505235796952866489661947110136937264811880833895773962197733300907293505819139154990615375838647823191343299159563616798126576983073918230498257917711838103564993707910596287965430956462432234043948008988335341/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "scalar_work_above_kappa": "13627324928090005836305479623835985278528713779079266942732626837409528151323354514728102274984225029257834090669865908797604733294628290598378686200993819199881837827444157578010949340451280459920732205353056446897137881427419561822800560967014531481943323548272164469548754680464881280928811334552639209/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "dimension_above_kappa": "1860284333752413987344464378648745450745652657963940409052249019851882785283700166106340567245329808005697461059999631781014850581910509961313232228061277655193790702180350478573100747328143363788406877402181619863132102876592295904660762679987573245514934631077133557921407320044707302646857370042110725831253395742964397/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "6084731986648243566095196451386160927799499851857157302451725850342813197569/3906250000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "14836780197380" + }, + { + "gap": "482007048645177890006028469670812911168993343898915952762061335116135880346291986119085127031870806916107589765247/244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "9235827787851545884" + }, + { + "gap": "38182584779977073239836692054683233293135163201113383270550675434201115625418946664378777838616516927722383093357333882798661663919669805727482227509761/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "5749260539824950511327760" + }, + { + "gap": "3024664856204944855019991806475746930649809456135947463826689575195074874654190665711231803441232234678309970305204565316873845088735151893940148902472642089913451052766544313604022141084543/953674316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "3578888380559265369049383003892" + }, + { + "gap": "239601314187582169723952440922470383041161064239717289659446974659654573306683437230015831614583925826622244259104097470050221021571687376437109446835536878765763871633353099724503711287858088742345989062661383654089904568971009/59604644775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2227841641856102698350997063607860703" + }, + { + "gap": "18980215160911225031420774760080187655885391411980593584323710345481463456287523960522314822473067077310731630037929272380007140677815595272742120543121979035317258779927639705940064463108864362374476704044906928597801883438467168006438846696150245221215831391075967/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1386821228666677298327686419515294231005143" + } + ], + "bit_template_sha256": "fda4ef5f1fd3559cade37d9c94ac9d790768df22047c2df2652683412466aba9", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", + "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", + "bank_assignments": 0, + "bit_profile": { + "1": 223960, + "2": 93568, + "3": 23528, + "4": 34296, + "5": 9504, + "6": 2000, + "7": 5112, + "8": 792, + "49": 8, + "56": 440 + }, + "parent_kappa": "315841366195289/250000000000000000", + "additional_interface": "PR442 idle-data hosting during untouched windows", + "row_bound": { + "method": "successive nonzero-norm vectors in nondegenerate complements", + "minimum_q": 3, + "column_exponent": 3003, + "factor_two_power": 78, + "cover_exponent": 3081, + "physical_families": 9609, + "physical_exponent": 9, + "stock_exponent": 3090, + "halving_depth": 3, + "complete_row_coefficient": 19431, + "retained_row_coefficient": 20161 + }, + "row_controls": [ + "false two-level halving", + "understated row reserve" + ], + "halving_depth": 3, + "finite_controls": [ + "old 128-bit prefix charge insufficient", + "old 512-bit composite charge insufficient" + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/precision/python314/assembly.log b/research/e8-eleven-hosting-selected-validation/precision/python314/assembly.log new file mode 100644 index 0000000000..9f548bcb3b --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/precision/python314/assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY 0.001265848755025709 binding complex gain over #445 0.1966% diff --git a/research/e8-eleven-hosting-selected-validation/python311/AUDIT.json b/research/e8-eleven-hosting-selected-validation/python311/AUDIT.json new file mode 100644 index 0000000000..5636bdc234 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python311/AUDIT.json @@ -0,0 +1,51 @@ +{ + "status": "PASS_INDEPENDENT_ELEVEN_STAGE_HOSTING_AUDIT", + "template_sha256": "ddd133d2f4de89a6d26ba062d043e703ca5cb50f07c6956035be9972416cfd0a", + "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", + "emitted_events": 1740288, + "profile": { + "1": 223960, + "2": 93568, + "3": 23528, + "4": 34296, + "5": 9504, + "6": 2000, + "7": 5112, + "8": 792, + "49": 8, + "56": 440 + }, + "live": 9600, + "physical": 9609, + "hosted_residuals": 65120, + "bank_assignments": 0, + "rank_mass": 745536, + "deficit": 3264, + "maxchild": 56, + "geometry_routes": 1320, + "halving_depth": 3, + "mutations_rejected": [ + "slot outside window", + "copy outside family", + "negative slot offset", + "wrong residual width", + "duplicate helper", + "missing helper", + "cross-replica host", + "cross-replica data", + "wrong hosted coordinate", + "helper changed to bank", + "wrong call orientation", + "duplicate call", + "dropped final stage", + "wrong idle rank", + "omitted bridge", + "wrong bridge sign", + "omitted terminal exchange", + "understated live stock", + "missing remainder summary", + "wrong residual isometry", + "omitted local instruction", + "wrong reflected copy rank" + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/python311/RANK147-PARENT-RECEIPT.json b/research/e8-eleven-hosting-selected-validation/python311/RANK147-PARENT-RECEIPT.json new file mode 100644 index 0000000000..fb73eac6bc --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python311/RANK147-PARENT-RECEIPT.json @@ -0,0 +1,54 @@ +{ + "status": "PASS_FULL_HOSTING_SELECTED_KERNEL", + "python": "3.11.15", + "kappa": "312258824824501/250000000000000000", + "kappa_decimal": "0.001249035299298004", + "manifest_sha256": "b32a601147fbe042af3799bae4a73d27f7a433e76aa83650ba24566b329c184b", + "checks": [ + { + "name": "parent-full", + "seconds": 384.16, + "log_sha256": "0ccab4b740f5eef349efd4a265373b1f35e388b25e939cc2507b67f353560fbf" + }, + { + "name": "kernel-rebuild", + "seconds": 16.11, + "log_sha256": "c04d4e939822acd4f0f91c7690293f2b321c9e1fb2de342ce61b997d19e686d9" + }, + { + "name": "export-records", + "seconds": 0.58, + "log_sha256": "76145fe1bd54c65d5f4041e92b2589cb0dede760b5030bbe2042c3e502119594" + }, + { + "name": "bit-global-64", + "seconds": 21.0, + "log_sha256": "abcd082928a955fed95f4bd2402b2e47e6d52d424fc7ff2337a1ab094788e70e" + }, + { + "name": "bit-global-audit", + "seconds": 24.7, + "log_sha256": "063d820aecc7c53677fba23c24d907f74e6b8e1a12099f83a444d6936756c86b" + }, + { + "name": "bit-hosting", + "seconds": 3.39, + "log_sha256": "20295c72cee3f6a3856f68889c5ae1a6874bd5892bef548122cc69842555f933" + }, + { + "name": "complex-hosting", + "seconds": 0.39, + "log_sha256": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd" + }, + { + "name": "independent-hosting-audit", + "seconds": 14.63, + "log_sha256": "1359977f74843042c039a81bf2c687cd0b931916b906fe7ca60efd9f745e9c52" + }, + { + "name": "exact-assembly", + "seconds": 0.24, + "log_sha256": "4813c9b302a6b07e1d276c9b939926cf8ebce5197d75703cdb061794827a21b2" + } + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/python311/RECEIPT.json b/research/e8-eleven-hosting-selected-validation/python311/RECEIPT.json new file mode 100644 index 0000000000..e93de5f067 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python311/RECEIPT.json @@ -0,0 +1,33 @@ +{ + "status": "PASS_FULL_ELEVEN_HOSTING_SELECTED", + "python": "3.11.15", + "kappa": "316462188756427/250000000000000000", + "manifest_sha256": "58048a268e837f4e8a30521435b2c3dad77fd0e74b38f020b7b7e11367ecf5b7", + "checks": [ + { + "name": "parent-full", + "seconds": 465.25, + "log_sha256": "27a703b99593110c92d28d2d6e61b431b71762be5a20e1cda2f25681d9edc430" + }, + { + "name": "geometry", + "seconds": 2.74, + "log_sha256": "581f74eccaad91982180899bab2a0b9c4c50d8e2ffcb00651c4f357455835bb2" + }, + { + "name": "emit", + "seconds": 3.55, + "log_sha256": "086a680df0af21c572e1c8125a62e0c0ca6f853714f060f218f29704d3d6c142" + }, + { + "name": "independent-audit", + "seconds": 11.54, + "log_sha256": "efd529d366c8e85dd3b823888fd656202cbc28ca9ef0f94509d03656fcfa179f" + }, + { + "name": "exact-assembly", + "seconds": 0.26, + "log_sha256": "e02a0b68a7f72a453c470339dd48eab594e433c80809fdab196e58fc7ff10ee7" + } + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/python311/RESULT.json b/research/e8-eleven-hosting-selected-validation/python311/RESULT.json new file mode 100644 index 0000000000..5530ca21fc --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python311/RESULT.json @@ -0,0 +1,154 @@ +{ + "status": "PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY", + "kappa": "316462188756427/250000000000000000", + "kappa_decimal": "0.001265848755025708", + "bit_lower": "1267514693114214441041/1000000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "complex", + "gain_over_pr445_percent": 0.1965615108041728, + "bit": { + "live": 9600, + "physical": 9609, + "maxchild": 56, + "rank_mass": 745536, + "hosted_residuals": 65120, + "prefix_bits": 153, + "charged_prefix_bits": 192, + "coefficient_bits": 153, + "three_level_coefficient_bits": 514, + "charged_three_level_coefficient_bits": 1024, + "row_coefficient": 19431 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "1267453159029118993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "6363415870726424025722843703822969540259271556724625068726091007454536976244583708632119485533668447753138368899221143794634227145086305528981265622184750546993955865453072542323521160664241230113374314701306093698185371808144178561/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29982546840970881/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "5095962711697305025722843703822969540259271556724625068726091007454536976244583708632119485533668447753138368899221143794634227145086305528981265622184750546993955865453072542323521160664241230113374314701306093698185371808144178561/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1267453159029118993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "3815434514877771506498005981185060744406792074539342994103773947002643419396200846861522766522250515244449698915942124144178744673322008969856405666006069744515712310541785724167804714879048072733165996686411816735718371202765995582314628191855821439/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "633726579514559620550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499366273420485440379449161094392331006498005981185060744406792074539342994103773947002643419396200846861522766522250515244449698915942124144178744673322008969856405666006069744515712310541785724167804714879048072733165996686411816735718371202765995582314628191855821439/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "1267453159029118993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "7630869029755543019359427833096545514536427852901655528466819450729911907518492701177582509289084739121018883365552696041495858245865161734347038477098445018012690243268321995329565295211168687789853154037064863584811057106838084862814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1267453159029118993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1267453159029118993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "3815434514877771506498005981185060744406792074539342994103773947002643419396200846861522766522250515244449698915942124144178744673322008969856405666006069744515712310541785724167804714879048072733165996686411816735718371202765995582314628191855821439/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561", + "epsilon_below_one": "633726579514559995550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561", + "guard_width": "633726579514559995550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561", + "K_geometry": "375633726579514559620550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561000000000000000000", + "K_dominates_log": "633726579514559619917112326093109372951155113207270262091213906645717750303018127536699574707573100141120652873950331617073067606308391100270954242620115174322339007315939225340693355464284020347907595662737651434638718192636255997447625483645821153403743010910174143314628191855821439/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561000000000000000000", + "record_suffix": "633726579514559995550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561", + "phase_local": "5069812636116479463772984665346792452465113244911845051243669384870316791576600498518195638934167172110461287218196724905925175194713522091019741529366052385327499345273451013730707181671783951173274591509401142302476741387753538847419027064283852077201345667919424070314628191855821439/4005069812636116475964406711244861351948015952150519514044745663403685256047169808423978852644830393225107817867821995878044402408672463006846570042613423928241148754671951442043874301515665714206657562280967615418134672026508705466114253030377872035341482974465153428488000000000000000000", + "phase_boundary": "1013962527223295492247615669457710894052351524496233815447138661922111953840753759335113523069852592024206992960600022470403248256743116613763707438626909792408495607712297378631265969139212585847224766735308807794739120180789165956016602761986223804014966095796681279914628191855821439/801013962527223295192881342248972270389603190430103902808949132680737051209433961684795770528966078645021563573564399175608880481734492601369314008522684785648229750934390288408774860303133142841331512456193523083626934405301741093222850606075574407068296594893030685697600000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "999999999999999998499366273420485440504449161094392331006498005981185060744406792074539342994103773947002643419396200846861522766522250515244449698915942124144178744673322008969856405666006069744515712310541785724167804714879048072733165996686411816735718371202765995582314628191855821439/2002534906318058237982203355622430675974007976075259757022372831701842628023584904211989426322415196612553908933910997939022201204336231503423285021306711964120574377335975721021937150757832857103328781140483807709067336013254352733057126515188936017670741487232576714244000000000000000000", + "prime_interval_packing": "633726579514559995550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561", + "alpha_positive": "1267453159029119490467951231700778491453149132022209517684421832106374756199244180534056155311372253279597886351699816372623368690366266956092209569298106204465933341309869480824981044922498296180102880783689578701472721506224439261729254280879825571089114819054352704314628191855821439/1001267453159029118991101677811215337987003988037629878511186415850921314011792452105994713161207598306276954466955498969511100602168115751711642510653355982060287188667987860510968575378916428551664390570241903854533668006627176366528563257594468008835370743616288357122000000000000000000", + "alpha_below_one": "999999999999999999500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/1001267453159029118991101677811215337987003988037629878511186415850921314011792452105994713161207598306276954466955498969511100602168115751711642510653355982060287188667987860510968575378916428551664390570241903854533668006627176366528563257594468008835370743616288357122000000000000000000", + "alpha_below_one_fourth": "249049410130728160257307468221103056005297847877385260110112182130623953746748868845964622134990527323289640730387174926005151781851662670971818418094040889310605863825687095646917162799806608841735994761776786384931944280150569652370411560117737176637753571085017736576185371808144178561/1001267453159029118991101677811215337987003988037629878511186415850921314011792452105994713161207598306276954466955498969511100602168115751711642510653355982060287188667987860510968575378916428551664390570241903854533668006627176366528563257594468008835370743616288357122000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "499365470201730273556582342359463032644106034946212681534026773778086609982474450281398813734028336109451575441613075303690547347231585595441150769971850070661704956223409595292238690247875599885907347458283861332931703400403722076772588170582752812798215295009249980661100322319455081823103858313447459207422700801507111100371274543601337110629500176290820893061197176436463932903499250367505282557606144287935895780573623044968220604434569985675841249616833603712534715790023535717749918807478346243940575604033452030721/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "28040558501088931813217154869697434494070780133920979119338471289285926866144138091168212792176331823959854612684387364483770650969812952509039211244159565053496653803355645509441425195127307504419713361316115566172573962067432499510714526252963740832524708682112929441157056115424432535683/4005069812636116475964406711244861351948015952150519514044745663403685256047169808423978852644830393225107817867821995878044402408672463006846570042613423928241148754671951442043874301515665714206657562280967615418134672026508705466114253030377872035341482974465153428488000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "197516529071961072085555383013660429992224719735490843427558620636254665933144645080197308168815131736819338087568084162589045237617811919281020061914960404013292421939001360944649672320589440401542224635376388959004839160084109073863409115247118389324542404171975638453/125158431644878639873887709726401917248375498504703734813898301981365164251474056513249339145150949788284619308369437371188887575271014468963955313831669497757535898583498482563871071922364553568958048821280237981816708500828397045816070407199308501104421342952036044640250000000000000000", + "coordinate_movement_above_kappa": "1604404003410993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "289432389708329728846670693149034050975396884923148434454641274619558006726682354267791876094656727794138875116794587165600630649387189801268258992333163625023026093422011513523114401592899547330336703256384603908752522637022848112189354832191239552880484244879758375251/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561000000000000000000", + "bulk_exposure_above_kappa": "1604404003410993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "3817360297405181509260018061909095414783681061441632293403909820732846024831147512301327078499065219812526432634789945779071696098349692037713535704645342973274639530378073898951368075811571021470190211906439687051820683106123549447307683543921618436296930074462499537691/4005069812636116475964406711244861351948015952150519514044745663403685256047169808423978852644830393225107817867821995878044402408672463006846570042613423928241148754671951442043874301515665714206657562280967615418134672026508705466114253030377872035341482974465153428488000000000000000000", + "scalar_work_above_kappa": "1163979040744647949448444283506305218151537807503378410085256530486937730570946483302663300964296083285016068313740188743618779460537184708227364145190410987479042781542809923994661045313880775714703798609384698952177603823875580436072962011822110890793534312339015250387/801013962527223295192881342248972270389603190430103902808949132680737051209433961684795770528966078645021563573564399175608880481734492601369314008522684785648229750934390288408774860303133142841331512456193523083626934405301741093222850606075574407068296594893030685697600000000000000000", + "dimension_above_kappa": "124841568355121360073628819345559154837179884508956695178326417754125679176084564123005326787993695291912688860445694365630450512297069693625089923786142421523484163331461921449421350016636807375691623499309202419725516134547991913188768752884800572758987772295082344684292404171975638453/125158431644878639873887709726401917248375498504703734813898301981365164251474056513249339145150949788284619308369437371188887575271014468963955313831669497757535898583498482563871071922364553568958048821280237981816708500828397045816070407199308501104421342952036044640250000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "1557691388581949201079964570828099341287693584328951456074689916161/1000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "14836780197380" + }, + { + "gap": "1974300871250646458854586523051172834387324735739489423881452732048095779170027257450695501732307841/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "9235827787851566267" + }, + { + "gap": "2502333876140573799633048607503597583967714296597907374927322506905423487598608994556050671000114373927769771392936344408137208977921/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "5749260539824967385581717" + }, + { + "gap": "3171590976259950447382784556716409579710033581820032326093154560062952582549639226544771679679810362399091193524445321520357269434849015767062540152692398909332918401/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "3578888380559278478846535360983" + }, + { + "gap": "4019843002008921753333472472718785584644499647564777707029824865323269615870224076955136455144897691411964113242988933701327386173302664781171408616615755393183756276509434151380974107721455990081281/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2227841641856112481145735578401608821" + }, + { + "gap": "5094962711697305025722843703822969540259271556724625068726091007454536976244583708632119485533668447753138368899221143794634227145086305528981265622184750546993955865453072542323521160664241230113374314701306093698185371808144178561/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1386821228666684397763960544065577601547428" + } + ], + "bit_template_sha256": "ddd133d2f4de89a6d26ba062d043e703ca5cb50f07c6956035be9972416cfd0a", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", + "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", + "bank_assignments": 0, + "bit_profile": { + "1": 223960, + "2": 93568, + "3": 23528, + "4": 34296, + "5": 9504, + "6": 2000, + "7": 5112, + "8": 792, + "49": 8, + "56": 440 + }, + "parent_kappa": "315841366195289/250000000000000000", + "additional_interface": "PR442 idle-data hosting during untouched windows", + "row_bound": { + "method": "successive nonzero-norm vectors in nondegenerate complements", + "minimum_q": 3, + "column_exponent": 3003, + "factor_two_power": 78, + "cover_exponent": 3081, + "physical_families": 9609, + "physical_exponent": 9, + "stock_exponent": 3090, + "halving_depth": 3, + "complete_row_coefficient": 19431, + "retained_row_coefficient": 20161 + }, + "row_controls": [ + "false two-level halving", + "understated row reserve" + ], + "halving_depth": 3, + "finite_controls": [ + "old 128-bit prefix charge insufficient", + "old 512-bit composite charge insufficient" + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/python311/TESTED-MANIFEST.json b/research/e8-eleven-hosting-selected-validation/python311/TESTED-MANIFEST.json new file mode 100644 index 0000000000..ccc12498de --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python311/TESTED-MANIFEST.json @@ -0,0 +1,53 @@ +{ + "AUDIT.json": "268269736a1427572a01ac660888af19d12194bdfa3f6c9b5311752f77c1cbc8", + "CERTIFICATE.json": "b27a4ef11a3550b8f3246f6982cbb49b7f0076837256893aaed470fe6e52e735", + "EXPECTED.json": "ba660caab38f1b8f15288ae66c5d7ef3fdecea6d59e0889a144675b2f18a0e15", + "GLOBAL.json": "64f0863ce8897335ebfb0e78a5a356a0ca9f3ebf07b7a54b5332403d1ca93bdc", + "INHERITED-HOSTING-PROOF.md": "4f06d1dead63c62b076f0a6c1521c68c0b0544aa2c5df5e74a408fdfc34f91c4", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "28662fdf0a5dc6adaa13e491e2a7023ec9846bcb83ab183f8da393555fa96dab", + "PROOF.md": "07bdc9ceb83831b2ca116ebc17955e39e782b01c2eab85eaf0bdfc6357a2b163", + "README.md": "d0bad14c41740a680cfe34a91f0b290321101878883d3d1c1eb10c047e2fb59e", + "SOURCE.json": "470735692afc6deeba3ff5992a26282d92a485c34848bc00bf4cc7009230aebb", + "VALIDATION.json": "7824817182a9904e6b116779a6a857bf3ae3d09229e05b76cf4310c42302b1a9", + "code/assemble.py": "150bc23a25485be70b9e0a5347f336338a7458efe2ebc800053da37df42d522e", + "code/audit.py": "9900a1b2f1f314f2b93ca8f99b5516ed2e1a7295d668ea51df2df89cef84e381", + "code/bank_routes.py": "7c6997c455bd55acca3a1603797c34e7733d557c27a7694a1429ff15773a505d", + "code/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "code/emit.py": "515d7021293e23aba1165ee270e17c375072e7128ed7b3c738768b6f6b7e9af8", + "code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "code/geometry.py": "9554182d67e434ea84b4430f909a2c400abc755d8487b51454a8e6968e62859d", + "code/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "code/row_bound.py": "de4a9b9cd797e1a05da56f62cfe725c8728cea3a4aa031b7d1b0a68f869760d6", + "code/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "data/selection.json": "b81758d0cce18e6c1abd07e716f05064aaa9b43819d6b70f7f52b4f2e4f01a9b", + "evidence/assembly.log": "e02a0b68a7f72a453c470339dd48eab594e433c80809fdab196e58fc7ff10ee7", + "evidence/audit.log": "a4b1b1eed31c07f9a3e495205bfffde4ec861aba9cf750a7b1fea5a9922ea38d", + "evidence/eleven-kernel-screen-first-failure.log": "cd53bd73b6a2dd53879d9f048368bf8f68204ef7daf4b0be849f7bd725a65eb7", + "evidence/eleven-kernel-screen.log": "54ded773480d897867a969444794ea5fdcf2fd03de062c4012f63e28d86d09b0", + "evidence/emit-missing-engines.log": "4e3419b3e32b60bbefe52a30f5661a8f6f53f060b99eccf32d11c9db0098d0e9", + "evidence/emit-missing-vendor.log": "407732b01762f5f843f54dd629820173e5958d35e0126e2c857249aad4e776a9", + "evidence/emit.log": "3d3853b873beb8705f798c2abdd8ac4564497f51d2c4d56419743603d6d063ae", + "evidence/geometry.log": "46d842d677e5faf5b8224d247f0549a00f3db138168a13802f0aebb7bc5ace46", + "evidence/hosted147-full314.log": "5424d4caeeb8f868adb0aee4014f42715711d4044564b3ed6b865bec16f3a028", + "evidence/screen_eleven_kernels.py": "80cc77ba27382ac57f7c804f6c78d880442644710e437a9859bd964106b216b7", + "upstream445/EXPECTED.json": "1a2e35da8c586be03201a8d102c72f681b0b6698bbcb3a2ea286d8b0d9c0c1e4", + "upstream445/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream445/MANIFEST.json": "4d53297535ffb17603f916fa59cdc4b7f941c3166fe9f8e576f9588fd2fb79a6", + "upstream445/NOTICE.md": "b80411c1db53d12bf43d6cbb8bf2804102f2e57be2a2f55dd7820c6c2f2b9570", + "upstream445/PROOF.md": "4aede2a05d9570cc5d8a19032513c973137ee9083f079ae845b04f3f362e2ca0", + "upstream445/README.md": "15e76f8a2200af0f871b04d410ebd7fac059b800b5ec4a1f376a333c9f5638bf", + "upstream445/SOURCE.json": "976eebfec20d467f3384194fc03bd6f5b289a615e3b2deb70a7be910aaee8579", + "upstream445/code/assemble.py": "42dbfaddd284088474a80f0b6e894332b6737b8e9f9b5c45260e21c5df139792", + "upstream445/code/audit.py": "9900a1b2f1f314f2b93ca8f99b5516ed2e1a7295d668ea51df2df89cef84e381", + "upstream445/code/emit.py": "ac63ee481f3d75cb9f0658faaa2412db81d55bc44d9f1ff1c0329ce1e75aa0d4", + "upstream445/code/geometry.py": "9554182d67e434ea84b4430f909a2c400abc755d8487b51454a8e6968e62859d", + "upstream445/code/row_bound.py": "de4a9b9cd797e1a05da56f62cfe725c8728cea3a4aa031b7d1b0a68f869760d6", + "upstream445/data/selection.json": "52dbbb68e8c147690d15eaa1d952df05d074b0c121885a4159d9f6732f391872", + "upstream445/proof/INHERITED-ROW-DIVISOR.tex": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8", + "upstream445/proof/UPSTREAM-PR234-NOTICE.md": "ce978c8dfc8a2b36eed7a53014b1a792248b22ef4cee3edd8adab825a571c429", + "upstream445/verify.py": "4a161d35c65fa1d35e655c3957c05a8164a003ca05c3effe9fee7dc8d0f38090", + "verify.py": "fcc35e955bd667350f999a540011df92e2e1d774fc78703f53bfbabf949643af" +} diff --git a/research/e8-eleven-hosting-selected-validation/python311/emit.log b/research/e8-eleven-hosting-selected-validation/python311/emit.log new file mode 100644 index 0000000000..3d4ae136d1 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python311/emit.log @@ -0,0 +1 @@ +{"status": "PASS_SOURCE_BOUND_ELEVEN_STAGE_HOSTED_BIT_TEMPLATE", "h": 8, "m": 78, "v": 120, "R": 740, "replicas": 8, "live": 9600, "physical": 9609, "word_sha256": "5b9a54c97eea0ef3729b164d81fde4e289105d134d0567c83bedc67cdac3298a", "source_records_sha256": "f9e0f3cdbc6a4eb5bfaf3fd843731a79c26740a6c4715079f2228e94b8706403", "independent_unbanked_scalar_columns": 9340, "all_scalar_columns_restored": true, "geometry_sha256": "77adc647850dcf0522869e6c007e08108222d49a458b8dedbfe8d028c2d160be", "template_sha256": "ddd133d2f4de89a6d26ba062d043e703ca5cb50f07c6956035be9972416cfd0a", "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", "emitted_events": 1740288, "local_invocations": 88, "bank_assignments": 0, "hosted_residuals": 65120, "banks_per_stage": 0, "entrance_rank_total": 147, "residual_bank_slots": false, "padding_calls": 0, "profile": {"1": 223960, "2": 93568, "3": 23528, "4": 34296, "5": 9504, "6": 2000, "7": 5112, "8": 792, "49": 8, "56": 440}, "paid_calls": 393208, "rank_mass": 745536, "deficit": 3264, "maxchild": 56, "halving_depth": 3, "halving_integer_inequality": [474552, 351232], "local_additions": 15446, "bridge_additions": 23040, "copy_erase_episodes": 792, "global_prefix_bits": 153, "charged_prefix_bits": 192, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; idle-data hosting follows conditionally from PR442 plus injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 3.501204374944791} diff --git a/research/e8-eleven-hosting-selected-validation/python311/exact-assembly.log b/research/e8-eleven-hosting-selected-validation/python311/exact-assembly.log new file mode 100644 index 0000000000..ee608c69b0 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python311/exact-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY 0.001265848755025708 binding complex gain over #445 0.1966% diff --git a/research/e8-eleven-hosting-selected-validation/python311/geometry.log b/research/e8-eleven-hosting-selected-validation/python311/geometry.log new file mode 100644 index 0000000000..32076b0043 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python311/geometry.log @@ -0,0 +1,5 @@ +compressed geometry 1 +compressed geometry 31 +compressed geometry 61 +compressed geometry 91 +{"status": "PASS_COMPRESSED_ELEVEN_BIT_GEOMETRY", "h": 8, "m": 78, "stages": 11, "word_sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", "local_window": "U direct_sum E_s, with E_s the first s exterior coordinate 7-blocks", "ambient_form": "I_78/2", "bank_slots": [], "route_checks": 1320, "exact_bit_endpoint_operator_checks": 240, "max_route_factors": 77, "route_denominators": [1, 2, 4], "bad_prime_factors": [2], "missing_route_factor_controls": 120, "bank_free": true, "scope": "All port isometries, stage boundary identities, nested idle ranks, exact bit endpoint operators and coordinate embeddings. No residual banks are used. Full local-word scalar and chronological lowering are checked separately.", "seconds": 2.2424576670164242} diff --git a/research/e8-eleven-hosting-selected-validation/python311/independent-audit.log b/research/e8-eleven-hosting-selected-validation/python311/independent-audit.log new file mode 100644 index 0000000000..823bb8a742 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python311/independent-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_ELEVEN_STAGE_HOSTING_AUDIT", "template_sha256": "ddd133d2f4de89a6d26ba062d043e703ca5cb50f07c6956035be9972416cfd0a", "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", "emitted_events": 1740288, "profile": {"1": 223960, "2": 93568, "3": 23528, "4": 34296, "5": 9504, "6": 2000, "7": 5112, "8": 792, "49": 8, "56": 440}, "live": 9600, "physical": 9609, "hosted_residuals": 65120, "bank_assignments": 0, "rank_mass": 745536, "deficit": 3264, "maxchild": 56, "geometry_routes": 1320, "halving_depth": 3, "mutations_rejected": ["slot outside window", "copy outside family", "negative slot offset", "wrong residual width", "duplicate helper", "missing helper", "cross-replica host", "cross-replica data", "wrong hosted coordinate", "helper changed to bank", "wrong call orientation", "duplicate call", "dropped final stage", "wrong idle rank", "omitted bridge", "wrong bridge sign", "omitted terminal exchange", "understated live stock", "missing remainder summary", "wrong residual isometry", "omitted local instruction", "wrong reflected copy rank"]} diff --git a/research/e8-eleven-hosting-selected-validation/python311/parent-full.log b/research/e8-eleven-hosting-selected-validation/python311/parent-full.log new file mode 100644 index 0000000000..bdf568c03b --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python311/parent-full.log @@ -0,0 +1,72 @@ +RUN parent-full +PASS parent-full +RUN kernel-rebuild +PASS kernel-rebuild +RUN export-records +PASS export-records +RUN bit-global-64 +PASS bit-global-64 +RUN bit-global-audit +PASS bit-global-audit +RUN bit-hosting +PASS bit-hosting +RUN complex-hosting +PASS complex-hosting +RUN independent-hosting-audit +PASS independent-hosting-audit +RUN exact-assembly +PASS exact-assembly +{ + "status": "PASS_FULL_HOSTING_SELECTED_KERNEL", + "python": "3.11.15", + "kappa": "312258824824501/250000000000000000", + "kappa_decimal": "0.001249035299298004", + "manifest_sha256": "b32a601147fbe042af3799bae4a73d27f7a433e76aa83650ba24566b329c184b", + "checks": [ + { + "name": "parent-full", + "seconds": 384.16, + "log_sha256": "0ccab4b740f5eef349efd4a265373b1f35e388b25e939cc2507b67f353560fbf" + }, + { + "name": "kernel-rebuild", + "seconds": 16.11, + "log_sha256": "c04d4e939822acd4f0f91c7690293f2b321c9e1fb2de342ce61b997d19e686d9" + }, + { + "name": "export-records", + "seconds": 0.58, + "log_sha256": "76145fe1bd54c65d5f4041e92b2589cb0dede760b5030bbe2042c3e502119594" + }, + { + "name": "bit-global-64", + "seconds": 21.0, + "log_sha256": "abcd082928a955fed95f4bd2402b2e47e6d52d424fc7ff2337a1ab094788e70e" + }, + { + "name": "bit-global-audit", + "seconds": 24.7, + "log_sha256": "063d820aecc7c53677fba23c24d907f74e6b8e1a12099f83a444d6936756c86b" + }, + { + "name": "bit-hosting", + "seconds": 3.39, + "log_sha256": "20295c72cee3f6a3856f68889c5ae1a6874bd5892bef548122cc69842555f933" + }, + { + "name": "complex-hosting", + "seconds": 0.39, + "log_sha256": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd" + }, + { + "name": "independent-hosting-audit", + "seconds": 14.63, + "log_sha256": "1359977f74843042c039a81bf2c687cd0b931916b906fe7ca60efd9f745e9c52" + }, + { + "name": "exact-assembly", + "seconds": 0.24, + "log_sha256": "4813c9b302a6b07e1d276c9b939926cf8ebce5197d75703cdb061794827a21b2" + } + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/python314/AUDIT.json b/research/e8-eleven-hosting-selected-validation/python314/AUDIT.json new file mode 100644 index 0000000000..aaa516cf66 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python314/AUDIT.json @@ -0,0 +1,51 @@ +{ + "status": "PASS_INDEPENDENT_ELEVEN_STAGE_HOSTING_AUDIT", + "template_sha256": "fda4ef5f1fd3559cade37d9c94ac9d790768df22047c2df2652683412466aba9", + "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", + "emitted_events": 1740288, + "profile": { + "1": 223960, + "2": 93568, + "3": 23528, + "4": 34296, + "5": 9504, + "6": 2000, + "7": 5112, + "8": 792, + "49": 8, + "56": 440 + }, + "live": 9600, + "physical": 9609, + "hosted_residuals": 65120, + "bank_assignments": 0, + "rank_mass": 745536, + "deficit": 3264, + "maxchild": 56, + "geometry_routes": 1320, + "halving_depth": 3, + "mutations_rejected": [ + "slot outside window", + "copy outside family", + "negative slot offset", + "wrong residual width", + "duplicate helper", + "missing helper", + "cross-replica host", + "cross-replica data", + "wrong hosted coordinate", + "helper changed to bank", + "wrong call orientation", + "duplicate call", + "dropped final stage", + "wrong idle rank", + "omitted bridge", + "wrong bridge sign", + "omitted terminal exchange", + "understated live stock", + "missing remainder summary", + "wrong residual isometry", + "omitted local instruction", + "wrong reflected copy rank" + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/python314/RANK147-PARENT-RECEIPT.json b/research/e8-eleven-hosting-selected-validation/python314/RANK147-PARENT-RECEIPT.json new file mode 100644 index 0000000000..5dfd747494 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python314/RANK147-PARENT-RECEIPT.json @@ -0,0 +1,54 @@ +{ + "status": "PASS_FULL_HOSTING_SELECTED_KERNEL", + "python": "3.14.8", + "kappa": "312258824824501/250000000000000000", + "kappa_decimal": "0.001249035299298004", + "manifest_sha256": "b32a601147fbe042af3799bae4a73d27f7a433e76aa83650ba24566b329c184b", + "checks": [ + { + "name": "parent-full", + "seconds": 274.75, + "log_sha256": "35391ae8f6164bddc0d5fe070bbc68bacb30595536143d37614b4e997ca5bccf" + }, + { + "name": "kernel-rebuild", + "seconds": 9.94, + "log_sha256": "c04d4e939822acd4f0f91c7690293f2b321c9e1fb2de342ce61b997d19e686d9" + }, + { + "name": "export-records", + "seconds": 0.36, + "log_sha256": "76145fe1bd54c65d5f4041e92b2589cb0dede760b5030bbe2042c3e502119594" + }, + { + "name": "bit-global-64", + "seconds": 20.89, + "log_sha256": "37892007ce1ec64720e6b0d20bb34d1030e151892587463dd8c7c6f4915dc4a4" + }, + { + "name": "bit-global-audit", + "seconds": 13.55, + "log_sha256": "3cb0e4fd1dc3dc183bff3e988cc5bf9eed80ae882aa30e02ab14c0331f88dca2" + }, + { + "name": "bit-hosting", + "seconds": 2.16, + "log_sha256": "20295c72cee3f6a3856f68889c5ae1a6874bd5892bef548122cc69842555f933" + }, + { + "name": "complex-hosting", + "seconds": 0.37, + "log_sha256": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd" + }, + { + "name": "independent-hosting-audit", + "seconds": 6.6, + "log_sha256": "1359977f74843042c039a81bf2c687cd0b931916b906fe7ca60efd9f745e9c52" + }, + { + "name": "exact-assembly", + "seconds": 0.22, + "log_sha256": "4813c9b302a6b07e1d276c9b939926cf8ebce5197d75703cdb061794827a21b2" + } + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/python314/RECEIPT.json b/research/e8-eleven-hosting-selected-validation/python314/RECEIPT.json new file mode 100644 index 0000000000..4754753e58 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python314/RECEIPT.json @@ -0,0 +1,33 @@ +{ + "status": "PASS_FULL_ELEVEN_HOSTING_SELECTED", + "python": "3.14.8", + "kappa": "316462188756427/250000000000000000", + "manifest_sha256": "58048a268e837f4e8a30521435b2c3dad77fd0e74b38f020b7b7e11367ecf5b7", + "checks": [ + { + "name": "parent-full", + "seconds": 328.89, + "log_sha256": "2192bf17cc72cd10cba563cebc12ae214bdaa37c4c5f3ff4130e1fd5cbe6b715" + }, + { + "name": "geometry", + "seconds": 2.33, + "log_sha256": "2045ec8f88fa42a4051f1309f6a994561b3328ba105ccd57204201bfc3f2121f" + }, + { + "name": "emit", + "seconds": 3.34, + "log_sha256": "756c3a1cf09ddc0c053685e16305414c3bc645d052a0ec8ae61515bb43c90342" + }, + { + "name": "independent-audit", + "seconds": 6.55, + "log_sha256": "3e00eba9ad762570d30d84b32b588e8dbe8458ca7fe5d8010f64a703a97f761e" + }, + { + "name": "exact-assembly", + "seconds": 0.25, + "log_sha256": "e02a0b68a7f72a453c470339dd48eab594e433c80809fdab196e58fc7ff10ee7" + } + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/python314/RESULT.json b/research/e8-eleven-hosting-selected-validation/python314/RESULT.json new file mode 100644 index 0000000000..087e197b6c --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python314/RESULT.json @@ -0,0 +1,154 @@ +{ + "status": "PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY", + "kappa": "316462188756427/250000000000000000", + "kappa_decimal": "0.001265848755025708", + "bit_lower": "1267514693114214441041/1000000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "complex", + "gain_over_pr445_percent": 0.1965615108041728, + "bit": { + "live": 9600, + "physical": 9609, + "maxchild": 56, + "rank_mass": 745536, + "hosted_residuals": 65120, + "prefix_bits": 153, + "charged_prefix_bits": 192, + "coefficient_bits": 153, + "three_level_coefficient_bits": 514, + "charged_three_level_coefficient_bits": 1024, + "row_coefficient": 19431 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "1267453159029118993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "6363415870726424025722843703822969540259271556724625068726091007454536976244583708632119485533668447753138368899221143794634227145086305528981265622184750546993955865453072542323521160664241230113374314701306093698185371808144178561/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29982546840970881/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "5095962711697305025722843703822969540259271556724625068726091007454536976244583708632119485533668447753138368899221143794634227145086305528981265622184750546993955865453072542323521160664241230113374314701306093698185371808144178561/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1267453159029118993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "3815434514877771506498005981185060744406792074539342994103773947002643419396200846861522766522250515244449698915942124144178744673322008969856405666006069744515712310541785724167804714879048072733165996686411816735718371202765995582314628191855821439/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "633726579514559620550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499366273420485440379449161094392331006498005981185060744406792074539342994103773947002643419396200846861522766522250515244449698915942124144178744673322008969856405666006069744515712310541785724167804714879048072733165996686411816735718371202765995582314628191855821439/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "1267453159029118993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "7630869029755543019359427833096545514536427852901655528466819450729911907518492701177582509289084739121018883365552696041495858245865161734347038477098445018012690243268321995329565295211168687789853154037064863584811057106838084862814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1267453159029118993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1267453159029118993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "3815434514877771506498005981185060744406792074539342994103773947002643419396200846861522766522250515244449698915942124144178744673322008969856405666006069744515712310541785724167804714879048072733165996686411816735718371202765995582314628191855821439/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561", + "epsilon_below_one": "633726579514559995550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561", + "guard_width": "633726579514559995550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561", + "K_geometry": "375633726579514559620550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561000000000000000000", + "K_dominates_log": "633726579514559619917112326093109372951155113207270262091213906645717750303018127536699574707573100141120652873950331617073067606308391100270954242620115174322339007315939225340693355464284020347907595662737651434638718192636255997447625483645821153403743010910174143314628191855821439/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561000000000000000000", + "record_suffix": "633726579514559995550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561", + "phase_local": "5069812636116479463772984665346792452465113244911845051243669384870316791576600498518195638934167172110461287218196724905925175194713522091019741529366052385327499345273451013730707181671783951173274591509401142302476741387753538847419027064283852077201345667919424070314628191855821439/4005069812636116475964406711244861351948015952150519514044745663403685256047169808423978852644830393225107817867821995878044402408672463006846570042613423928241148754671951442043874301515665714206657562280967615418134672026508705466114253030377872035341482974465153428488000000000000000000", + "phase_boundary": "1013962527223295492247615669457710894052351524496233815447138661922111953840753759335113523069852592024206992960600022470403248256743116613763707438626909792408495607712297378631265969139212585847224766735308807794739120180789165956016602761986223804014966095796681279914628191855821439/801013962527223295192881342248972270389603190430103902808949132680737051209433961684795770528966078645021563573564399175608880481734492601369314008522684785648229750934390288408774860303133142841331512456193523083626934405301741093222850606075574407068296594893030685697600000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "999999999999999998499366273420485440504449161094392331006498005981185060744406792074539342994103773947002643419396200846861522766522250515244449698915942124144178744673322008969856405666006069744515712310541785724167804714879048072733165996686411816735718371202765995582314628191855821439/2002534906318058237982203355622430675974007976075259757022372831701842628023584904211989426322415196612553908933910997939022201204336231503423285021306711964120574377335975721021937150757832857103328781140483807709067336013254352733057126515188936017670741487232576714244000000000000000000", + "prime_interval_packing": "633726579514559995550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561", + "alpha_positive": "1267453159029119490467951231700778491453149132022209517684421832106374756199244180534056155311372253279597886351699816372623368690366266956092209569298106204465933341309869480824981044922498296180102880783689578701472721506224439261729254280879825571089114819054352704314628191855821439/1001267453159029118991101677811215337987003988037629878511186415850921314011792452105994713161207598306276954466955498969511100602168115751711642510653355982060287188667987860510968575378916428551664390570241903854533668006627176366528563257594468008835370743616288357122000000000000000000", + "alpha_below_one": "999999999999999999500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561/1001267453159029118991101677811215337987003988037629878511186415850921314011792452105994713161207598306276954466955498969511100602168115751711642510653355982060287188667987860510968575378916428551664390570241903854533668006627176366528563257594468008835370743616288357122000000000000000000", + "alpha_below_one_fourth": "249049410130728160257307468221103056005297847877385260110112182130623953746748868845964622134990527323289640730387174926005151781851662670971818418094040889310605863825687095646917162799806608841735994761776786384931944280150569652370411560117737176637753571085017736576185371808144178561/1001267453159029118991101677811215337987003988037629878511186415850921314011792452105994713161207598306276954466955498969511100602168115751711642510653355982060287188667987860510968575378916428551664390570241903854533668006627176366528563257594468008835370743616288357122000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "499365470201730273556582342359463032644106034946212681534026773778086609982474450281398813734028336109451575441613075303690547347231585595441150769971850070661704956223409595292238690247875599885907347458283861332931703400403722076772588170582752812798215295009249980661100322319455081823103858313447459207422700801507111100371274543601337110629500176290820893061197176436463932903499250367505282557606144287935895780573623044968220604434569985675841249616833603712534715790023535717749918807478346243940575604033452030721/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "28040558501088931813217154869697434494070780133920979119338471289285926866144138091168212792176331823959854612684387364483770650969812952509039211244159565053496653803355645509441425195127307504419713361316115566172573962067432499510714526252963740832524708682112929441157056115424432535683/4005069812636116475964406711244861351948015952150519514044745663403685256047169808423978852644830393225107817867821995878044402408672463006846570042613423928241148754671951442043874301515665714206657562280967615418134672026508705466114253030377872035341482974465153428488000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "197516529071961072085555383013660429992224719735490843427558620636254665933144645080197308168815131736819338087568084162589045237617811919281020061914960404013292421939001360944649672320589440401542224635376388959004839160084109073863409115247118389324542404171975638453/125158431644878639873887709726401917248375498504703734813898301981365164251474056513249339145150949788284619308369437371188887575271014468963955313831669497757535898583498482563871071922364553568958048821280237981816708500828397045816070407199308501104421342952036044640250000000000000000", + "coordinate_movement_above_kappa": "1604404003410993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "289432389708329728846670693149034050975396884923148434454641274619558006726682354267791876094656727794138875116794587165600630649387189801268258992333163625023026093422011513523114401592899547330336703256384603908752522637022848112189354832191239552880484244879758375251/500633726579514559495550838905607668993501994018814939255593207925460657005896226052997356580603799153138477233477749484755550301084057875855821255326677991030143594333993930255484287689458214275832195285120951927266834003313588183264281628797234004417685371808144178561000000000000000000", + "bulk_exposure_above_kappa": "1604404003410993636584129273575974277156296177030459740728443275374931273908992545463023755416291367880514466331552246861631100778856205365772854913694471018734377815249453006044134546927457676478839335758769886625685298693906301814628191855821439/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "3817360297405181509260018061909095414783681061441632293403909820732846024831147512301327078499065219812526432634789945779071696098349692037713535704645342973274639530378073898951368075811571021470190211906439687051820683106123549447307683543921618436296930074462499537691/4005069812636116475964406711244861351948015952150519514044745663403685256047169808423978852644830393225107817867821995878044402408672463006846570042613423928241148754671951442043874301515665714206657562280967615418134672026508705466114253030377872035341482974465153428488000000000000000000", + "scalar_work_above_kappa": "1163979040744647949448444283506305218151537807503378410085256530486937730570946483302663300964296083285016068313740188743618779460537184708227364145190410987479042781542809923994661045313880775714703798609384698952177603823875580436072962011822110890793534312339015250387/801013962527223295192881342248972270389603190430103902808949132680737051209433961684795770528966078645021563573564399175608880481734492601369314008522684785648229750934390288408774860303133142841331512456193523083626934405301741093222850606075574407068296594893030685697600000000000000000", + "dimension_above_kappa": "124841568355121360073628819345559154837179884508956695178326417754125679176084564123005326787993695291912688860445694365630450512297069693625089923786142421523484163331461921449421350016636807375691623499309202419725516134547991913188768752884800572758987772295082344684292404171975638453/125158431644878639873887709726401917248375498504703734813898301981365164251474056513249339145150949788284619308369437371188887575271014468963955313831669497757535898583498482563871071922364553568958048821280237981816708500828397045816070407199308501104421342952036044640250000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "1557691388581949201079964570828099341287693584328951456074689916161/1000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "14836780197380" + }, + { + "gap": "1974300871250646458854586523051172834387324735739489423881452732048095779170027257450695501732307841/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "9235827787851566267" + }, + { + "gap": "2502333876140573799633048607503597583967714296597907374927322506905423487598608994556050671000114373927769771392936344408137208977921/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "5749260539824967385581717" + }, + { + "gap": "3171590976259950447382784556716409579710033581820032326093154560062952582549639226544771679679810362399091193524445321520357269434849015767062540152692398909332918401/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "3578888380559278478846535360983" + }, + { + "gap": "4019843002008921753333472472718785584644499647564777707029824865323269615870224076955136455144897691411964113242988933701327386173302664781171408616615755393183756276509434151380974107721455990081281/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2227841641856112481145735578401608821" + }, + { + "gap": "5094962711697305025722843703822969540259271556724625068726091007454536976244583708632119485533668447753138368899221143794634227145086305528981265622184750546993955865453072542323521160664241230113374314701306093698185371808144178561/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1386821228666684397763960544065577601547428" + } + ], + "bit_template_sha256": "fda4ef5f1fd3559cade37d9c94ac9d790768df22047c2df2652683412466aba9", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", + "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", + "bank_assignments": 0, + "bit_profile": { + "1": 223960, + "2": 93568, + "3": 23528, + "4": 34296, + "5": 9504, + "6": 2000, + "7": 5112, + "8": 792, + "49": 8, + "56": 440 + }, + "parent_kappa": "315841366195289/250000000000000000", + "additional_interface": "PR442 idle-data hosting during untouched windows", + "row_bound": { + "method": "successive nonzero-norm vectors in nondegenerate complements", + "minimum_q": 3, + "column_exponent": 3003, + "factor_two_power": 78, + "cover_exponent": 3081, + "physical_families": 9609, + "physical_exponent": 9, + "stock_exponent": 3090, + "halving_depth": 3, + "complete_row_coefficient": 19431, + "retained_row_coefficient": 20161 + }, + "row_controls": [ + "false two-level halving", + "understated row reserve" + ], + "halving_depth": 3, + "finite_controls": [ + "old 128-bit prefix charge insufficient", + "old 512-bit composite charge insufficient" + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/python314/TESTED-MANIFEST.json b/research/e8-eleven-hosting-selected-validation/python314/TESTED-MANIFEST.json new file mode 100644 index 0000000000..ccc12498de --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python314/TESTED-MANIFEST.json @@ -0,0 +1,53 @@ +{ + "AUDIT.json": "268269736a1427572a01ac660888af19d12194bdfa3f6c9b5311752f77c1cbc8", + "CERTIFICATE.json": "b27a4ef11a3550b8f3246f6982cbb49b7f0076837256893aaed470fe6e52e735", + "EXPECTED.json": "ba660caab38f1b8f15288ae66c5d7ef3fdecea6d59e0889a144675b2f18a0e15", + "GLOBAL.json": "64f0863ce8897335ebfb0e78a5a356a0ca9f3ebf07b7a54b5332403d1ca93bdc", + "INHERITED-HOSTING-PROOF.md": "4f06d1dead63c62b076f0a6c1521c68c0b0544aa2c5df5e74a408fdfc34f91c4", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "28662fdf0a5dc6adaa13e491e2a7023ec9846bcb83ab183f8da393555fa96dab", + "PROOF.md": "07bdc9ceb83831b2ca116ebc17955e39e782b01c2eab85eaf0bdfc6357a2b163", + "README.md": "d0bad14c41740a680cfe34a91f0b290321101878883d3d1c1eb10c047e2fb59e", + "SOURCE.json": "470735692afc6deeba3ff5992a26282d92a485c34848bc00bf4cc7009230aebb", + "VALIDATION.json": "7824817182a9904e6b116779a6a857bf3ae3d09229e05b76cf4310c42302b1a9", + "code/assemble.py": "150bc23a25485be70b9e0a5347f336338a7458efe2ebc800053da37df42d522e", + "code/audit.py": "9900a1b2f1f314f2b93ca8f99b5516ed2e1a7295d668ea51df2df89cef84e381", + "code/bank_routes.py": "7c6997c455bd55acca3a1603797c34e7733d557c27a7694a1429ff15773a505d", + "code/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "code/emit.py": "515d7021293e23aba1165ee270e17c375072e7128ed7b3c738768b6f6b7e9af8", + "code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "code/geometry.py": "9554182d67e434ea84b4430f909a2c400abc755d8487b51454a8e6968e62859d", + "code/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "code/row_bound.py": "de4a9b9cd797e1a05da56f62cfe725c8728cea3a4aa031b7d1b0a68f869760d6", + "code/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "data/selection.json": "b81758d0cce18e6c1abd07e716f05064aaa9b43819d6b70f7f52b4f2e4f01a9b", + "evidence/assembly.log": "e02a0b68a7f72a453c470339dd48eab594e433c80809fdab196e58fc7ff10ee7", + "evidence/audit.log": "a4b1b1eed31c07f9a3e495205bfffde4ec861aba9cf750a7b1fea5a9922ea38d", + "evidence/eleven-kernel-screen-first-failure.log": "cd53bd73b6a2dd53879d9f048368bf8f68204ef7daf4b0be849f7bd725a65eb7", + "evidence/eleven-kernel-screen.log": "54ded773480d897867a969444794ea5fdcf2fd03de062c4012f63e28d86d09b0", + "evidence/emit-missing-engines.log": "4e3419b3e32b60bbefe52a30f5661a8f6f53f060b99eccf32d11c9db0098d0e9", + "evidence/emit-missing-vendor.log": "407732b01762f5f843f54dd629820173e5958d35e0126e2c857249aad4e776a9", + "evidence/emit.log": "3d3853b873beb8705f798c2abdd8ac4564497f51d2c4d56419743603d6d063ae", + "evidence/geometry.log": "46d842d677e5faf5b8224d247f0549a00f3db138168a13802f0aebb7bc5ace46", + "evidence/hosted147-full314.log": "5424d4caeeb8f868adb0aee4014f42715711d4044564b3ed6b865bec16f3a028", + "evidence/screen_eleven_kernels.py": "80cc77ba27382ac57f7c804f6c78d880442644710e437a9859bd964106b216b7", + "upstream445/EXPECTED.json": "1a2e35da8c586be03201a8d102c72f681b0b6698bbcb3a2ea286d8b0d9c0c1e4", + "upstream445/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream445/MANIFEST.json": "4d53297535ffb17603f916fa59cdc4b7f941c3166fe9f8e576f9588fd2fb79a6", + "upstream445/NOTICE.md": "b80411c1db53d12bf43d6cbb8bf2804102f2e57be2a2f55dd7820c6c2f2b9570", + "upstream445/PROOF.md": "4aede2a05d9570cc5d8a19032513c973137ee9083f079ae845b04f3f362e2ca0", + "upstream445/README.md": "15e76f8a2200af0f871b04d410ebd7fac059b800b5ec4a1f376a333c9f5638bf", + "upstream445/SOURCE.json": "976eebfec20d467f3384194fc03bd6f5b289a615e3b2deb70a7be910aaee8579", + "upstream445/code/assemble.py": "42dbfaddd284088474a80f0b6e894332b6737b8e9f9b5c45260e21c5df139792", + "upstream445/code/audit.py": "9900a1b2f1f314f2b93ca8f99b5516ed2e1a7295d668ea51df2df89cef84e381", + "upstream445/code/emit.py": "ac63ee481f3d75cb9f0658faaa2412db81d55bc44d9f1ff1c0329ce1e75aa0d4", + "upstream445/code/geometry.py": "9554182d67e434ea84b4430f909a2c400abc755d8487b51454a8e6968e62859d", + "upstream445/code/row_bound.py": "de4a9b9cd797e1a05da56f62cfe725c8728cea3a4aa031b7d1b0a68f869760d6", + "upstream445/data/selection.json": "52dbbb68e8c147690d15eaa1d952df05d074b0c121885a4159d9f6732f391872", + "upstream445/proof/INHERITED-ROW-DIVISOR.tex": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8", + "upstream445/proof/UPSTREAM-PR234-NOTICE.md": "ce978c8dfc8a2b36eed7a53014b1a792248b22ef4cee3edd8adab825a571c429", + "upstream445/verify.py": "4a161d35c65fa1d35e655c3957c05a8164a003ca05c3effe9fee7dc8d0f38090", + "verify.py": "fcc35e955bd667350f999a540011df92e2e1d774fc78703f53bfbabf949643af" +} diff --git a/research/e8-eleven-hosting-selected-validation/python314/emit.log b/research/e8-eleven-hosting-selected-validation/python314/emit.log new file mode 100644 index 0000000000..05171f4eb7 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python314/emit.log @@ -0,0 +1 @@ +{"status": "PASS_SOURCE_BOUND_ELEVEN_STAGE_HOSTED_BIT_TEMPLATE", "h": 8, "m": 78, "v": 120, "R": 740, "replicas": 8, "live": 9600, "physical": 9609, "word_sha256": "ee4cda817d5220fdbba1d116556e3dacb3da553ed81af43e74f19365e1393a5c", "source_records_sha256": "f9e0f3cdbc6a4eb5bfaf3fd843731a79c26740a6c4715079f2228e94b8706403", "independent_unbanked_scalar_columns": 9340, "all_scalar_columns_restored": true, "geometry_sha256": "7c2d5dadb344160ca6f40feb89401711e02f9d496b43a04fcfc1925ed506c6d4", "template_sha256": "fda4ef5f1fd3559cade37d9c94ac9d790768df22047c2df2652683412466aba9", "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", "emitted_events": 1740288, "local_invocations": 88, "bank_assignments": 0, "hosted_residuals": 65120, "banks_per_stage": 0, "entrance_rank_total": 147, "residual_bank_slots": false, "padding_calls": 0, "profile": {"1": 223960, "2": 93568, "3": 23528, "4": 34296, "5": 9504, "6": 2000, "7": 5112, "8": 792, "49": 8, "56": 440}, "paid_calls": 393208, "rank_mass": 745536, "deficit": 3264, "maxchild": 56, "halving_depth": 3, "halving_integer_inequality": [474552, 351232], "local_additions": 15446, "bridge_additions": 23040, "copy_erase_episodes": 792, "global_prefix_bits": 153, "charged_prefix_bits": 192, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; idle-data hosting follows conditionally from PR442 plus injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 3.272205875022337} diff --git a/research/e8-eleven-hosting-selected-validation/python314/exact-assembly.log b/research/e8-eleven-hosting-selected-validation/python314/exact-assembly.log new file mode 100644 index 0000000000..ee608c69b0 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python314/exact-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY 0.001265848755025708 binding complex gain over #445 0.1966% diff --git a/research/e8-eleven-hosting-selected-validation/python314/geometry.log b/research/e8-eleven-hosting-selected-validation/python314/geometry.log new file mode 100644 index 0000000000..e77285823f --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python314/geometry.log @@ -0,0 +1,5 @@ +compressed geometry 1 +compressed geometry 31 +compressed geometry 61 +compressed geometry 91 +{"status": "PASS_COMPRESSED_ELEVEN_BIT_GEOMETRY", "h": 8, "m": 78, "stages": 11, "word_sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", "local_window": "U direct_sum E_s, with E_s the first s exterior coordinate 7-blocks", "ambient_form": "I_78/2", "bank_slots": [], "route_checks": 1320, "exact_bit_endpoint_operator_checks": 240, "max_route_factors": 77, "route_denominators": [1, 2, 4], "bad_prime_factors": [2], "missing_route_factor_controls": 120, "bank_free": true, "scope": "All port isometries, stage boundary identities, nested idle ranks, exact bit endpoint operators and coordinate embeddings. No residual banks are used. Full local-word scalar and chronological lowering are checked separately.", "seconds": 1.990845499909483} diff --git a/research/e8-eleven-hosting-selected-validation/python314/independent-audit.log b/research/e8-eleven-hosting-selected-validation/python314/independent-audit.log new file mode 100644 index 0000000000..0f828a3424 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python314/independent-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_ELEVEN_STAGE_HOSTING_AUDIT", "template_sha256": "fda4ef5f1fd3559cade37d9c94ac9d790768df22047c2df2652683412466aba9", "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", "emitted_events": 1740288, "profile": {"1": 223960, "2": 93568, "3": 23528, "4": 34296, "5": 9504, "6": 2000, "7": 5112, "8": 792, "49": 8, "56": 440}, "live": 9600, "physical": 9609, "hosted_residuals": 65120, "bank_assignments": 0, "rank_mass": 745536, "deficit": 3264, "maxchild": 56, "geometry_routes": 1320, "halving_depth": 3, "mutations_rejected": ["slot outside window", "copy outside family", "negative slot offset", "wrong residual width", "duplicate helper", "missing helper", "cross-replica host", "cross-replica data", "wrong hosted coordinate", "helper changed to bank", "wrong call orientation", "duplicate call", "dropped final stage", "wrong idle rank", "omitted bridge", "wrong bridge sign", "omitted terminal exchange", "understated live stock", "missing remainder summary", "wrong residual isometry", "omitted local instruction", "wrong reflected copy rank"]} diff --git a/research/e8-eleven-hosting-selected-validation/python314/parent-full.log b/research/e8-eleven-hosting-selected-validation/python314/parent-full.log new file mode 100644 index 0000000000..75502053f5 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/python314/parent-full.log @@ -0,0 +1,72 @@ +RUN parent-full +PASS parent-full +RUN kernel-rebuild +PASS kernel-rebuild +RUN export-records +PASS export-records +RUN bit-global-64 +PASS bit-global-64 +RUN bit-global-audit +PASS bit-global-audit +RUN bit-hosting +PASS bit-hosting +RUN complex-hosting +PASS complex-hosting +RUN independent-hosting-audit +PASS independent-hosting-audit +RUN exact-assembly +PASS exact-assembly +{ + "status": "PASS_FULL_HOSTING_SELECTED_KERNEL", + "python": "3.14.8", + "kappa": "312258824824501/250000000000000000", + "kappa_decimal": "0.001249035299298004", + "manifest_sha256": "b32a601147fbe042af3799bae4a73d27f7a433e76aa83650ba24566b329c184b", + "checks": [ + { + "name": "parent-full", + "seconds": 274.75, + "log_sha256": "35391ae8f6164bddc0d5fe070bbc68bacb30595536143d37614b4e997ca5bccf" + }, + { + "name": "kernel-rebuild", + "seconds": 9.94, + "log_sha256": "c04d4e939822acd4f0f91c7690293f2b321c9e1fb2de342ce61b997d19e686d9" + }, + { + "name": "export-records", + "seconds": 0.36, + "log_sha256": "76145fe1bd54c65d5f4041e92b2589cb0dede760b5030bbe2042c3e502119594" + }, + { + "name": "bit-global-64", + "seconds": 20.89, + "log_sha256": "37892007ce1ec64720e6b0d20bb34d1030e151892587463dd8c7c6f4915dc4a4" + }, + { + "name": "bit-global-audit", + "seconds": 13.55, + "log_sha256": "3cb0e4fd1dc3dc183bff3e988cc5bf9eed80ae882aa30e02ab14c0331f88dca2" + }, + { + "name": "bit-hosting", + "seconds": 2.16, + "log_sha256": "20295c72cee3f6a3856f68889c5ae1a6874bd5892bef548122cc69842555f933" + }, + { + "name": "complex-hosting", + "seconds": 0.37, + "log_sha256": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd" + }, + { + "name": "independent-hosting-audit", + "seconds": 6.6, + "log_sha256": "1359977f74843042c039a81bf2c687cd0b931916b906fe7ca60efd9f745e9c52" + }, + { + "name": "exact-assembly", + "seconds": 0.22, + "log_sha256": "4813c9b302a6b07e1d276c9b939926cf8ebce5197d75703cdb061794827a21b2" + } + ] +} diff --git a/research/e8-eleven-hosting-selected-validation/research/FRAMES.json b/research/e8-eleven-hosting-selected-validation/research/FRAMES.json new file mode 100644 index 0000000000..aea7b92bab --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/FRAMES.json @@ -0,0 +1,8 @@ +{ + "status": "SINGLE_FRAME_NOMINATIONS_ONLY", + "source_sha256": "ee208ff20bfe04f774eccc3be8d6700d7bf8d84bdd8aa4f03b2e7149b6b53ca6", + "tested_gates": 3576, + "positive": 0, + "best": [], + "seconds": 0.05604195594787598 +} diff --git a/research/e8-eleven-hosting-selected-validation/research/GROUPS.json b/research/e8-eleven-hosting-selected-validation/research/GROUPS.json new file mode 100644 index 0000000000..1006cc59bb --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/GROUPS.json @@ -0,0 +1,8 @@ +{ + "status": "EXACT_BOUNDARY_GROUP_NOMINATIONS_ONLY", + "source_sha256": "ee208ff20bfe04f774eccc3be8d6700d7bf8d84bdd8aa4f03b2e7149b6b53ca6", + "groups_tested": 9278, + "positive": 0, + "best": [], + "seconds": 0.13321614265441895 +} diff --git a/research/e8-eleven-hosting-selected-validation/research/HOSTING-RESULT.json b/research/e8-eleven-hosting-selected-validation/research/HOSTING-RESULT.json new file mode 100644 index 0000000000..75eb488e26 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/HOSTING-RESULT.json @@ -0,0 +1,40 @@ +{ + "status": "PASS_EXACT_HOSTING_REPRICE_SCREEN", + "old_profile": { + "1": 138384, + "2": 56448, + "3": 15936, + "4": 16128, + "5": 32064, + "7": 3840, + "8": 7488 + }, + "new_profile": { + "1": 138384, + "2": 56448, + "3": 15936, + "4": 16128, + "5": 32064, + "7": 3840, + "8": 7488 + }, + "same_profile": true, + "old_live": 8400, + "new_live": 8400, + "hosted": 34560, + "cert": { + "lower": "0.001267453159029119461392", + "upper": "0.001267453159029119461393", + "lower_endpoint_residual_upper": "-1.560392349260697269557963458425144401950988674518821955340796287641640E-24", + "upper_endpoint_residual_lower": "1.658001749272704377336676268808635955400703370759321539044253081981942E-24", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.001839747154796185709271198752349970490608609234245079438495876559575395", + "-0.001839747154796185709271198752349970490608609234245079438495876559501211" + ], + "nominal_k_ceiling_interval": [ + "0.001265848755025709048498315842978032572884126495378666492505294890821053", + "0.001265848755025709048499313312882895592066167056819089691650101211377309" + ] + } +} diff --git a/research/e8-eleven-hosting-selected-validation/research/MIXED-GROUPS.json b/research/e8-eleven-hosting-selected-validation/research/MIXED-GROUPS.json new file mode 100644 index 0000000000..c0315657bc --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/MIXED-GROUPS.json @@ -0,0 +1,8 @@ +{ + "status": "MIXED_GROUP_NOMINATIONS_REQUIRING_PHASE_AND_SCALAR_REPLAY", + "source_sha256": "ee208ff20bfe04f774eccc3be8d6700d7bf8d84bdd8aa4f03b2e7149b6b53ca6", + "groups_tested": 155055, + "positive": 0, + "best": [], + "seconds": 2.358466148376465 +} diff --git a/research/e8-eleven-hosting-selected-validation/research/PARTITIONS-SUMMARY.json b/research/e8-eleven-hosting-selected-validation/research/PARTITIONS-SUMMARY.json new file mode 100644 index 0000000000..c02261bf18 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/PARTITIONS-SUMMARY.json @@ -0,0 +1,8 @@ +{ + "status": "PARTITION_SCREEN_COMPLETE", + "tested": 71, + "positive": 0, + "best": [], + "failures": [], + "seconds": 11.959186249994673 +} diff --git a/research/e8-eleven-hosting-selected-validation/research/REPEATED-PARTITIONS.json b/research/e8-eleven-hosting-selected-validation/research/REPEATED-PARTITIONS.json new file mode 100644 index 0000000000..36659f854e --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/REPEATED-PARTITIONS.json @@ -0,0 +1,197 @@ +[ + { + "tag": "baseline", + "R": 560, + "live": 8400, + "hosted": 34560, + "local_profile": { + "1": 1912, + "2": 784, + "3": 168, + "4": 224, + "5": 392, + "8": 24 + }, + "global_profile": { + "1": 138384, + "2": 56448, + "3": 15936, + "4": 16128, + "5": 32064, + "8": 7488, + "7": 3840 + }, + "cert": { + "lower": "0.001267453159029119461392", + "upper": "0.001267453159029119461393", + "lower_endpoint_residual_upper": "-1.560392349260697269557963458425144401950988674518821955340796287641640E-24", + "upper_endpoint_residual_lower": "1.658001749272704377336676268808635955400703370759321539044253081981942E-24", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.001839747154796185709271198752349970490608609234245079438495876559575395", + "-0.001839747154796185709271198752349970490608609234245079438495876559501211" + ], + "nominal_k_ceiling_interval": [ + "0.001265848755025709048498315842978032572884126495378666492505294890821053", + "0.001265848755025709048499313312882895592066167056819089691650101211377309" + ] + }, + "status": "EXACT_CLEAN_WORD_AND_AGGREGATE_ONLY" + }, + { + "tag": "one-repeat", + "R": 564, + "live": 8436, + "hosted": 34560, + "local_profile": { + "1": 1912, + "2": 784, + "3": 168, + "4": 228, + "5": 396, + "8": 24 + }, + "global_profile": { + "1": 138420, + "2": 56448, + "3": 15936, + "4": 16416, + "5": 32352, + "8": 7488, + "7": 3840 + }, + "cert": { + "lower": "0.001262735056192039022966", + "upper": "0.001262735056192039022967", + "lower_endpoint_residual_upper": "-1.073645547464586287803425473517020835084694461125894787310608990677155E-24", + "upper_endpoint_residual_lower": "2.142958401984943792617846404736515231663919150576370658372673839197819E-24", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.001823577818941551852760771358844940767655025172333057881319619554428218", + "-0.001823577818941551852760771358844940767655025172333057881319619554354034" + ], + "nominal_k_ceiling_interval": [ + "0.001261142567261501898013729794856003324883759049831550126197378335007974", + "0.001261142567261501898014727274161349376838894860316937104579560947708714" + ] + }, + "status": "EXACT_CLEAN_WORD_AND_AGGREGATE_ONLY" + }, + { + "tag": "all-00", + "R": 616, + "live": 8904, + "hosted": 34560, + "local_profile": { + "1": 1912, + "2": 784, + "3": 168, + "4": 280, + "5": 448, + "8": 24 + }, + "global_profile": { + "1": 138888, + "2": 56448, + "3": 15936, + "4": 20160, + "5": 36096, + "8": 7488, + "7": 3840 + }, + "cert": { + "lower": "0.001204447696176195679627", + "upper": "0.001204447696176195679628", + "lower_endpoint_residual_upper": "-2.403606883932876983689619393270963208086419656768483802752924165186441E-24", + "upper_endpoint_residual_lower": "7.910475981247765152543847224673886090903905529355202063904649293340578E-25", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.001625274643365853612538548608311557372941258375298831236705146849890305", + "-0.001625274643365853612538548608311557372941258375298831236705146849816120" + ], + "nominal_k_ceiling_interval": [ + "0.001202998747106740116645598536019984919664003708157000354387040774405950", + "0.001202998747106740116646596131469696691724156878133504187077220465294133" + ] + }, + "status": "EXACT_CLEAN_WORD_AND_AGGREGATE_ONLY" + }, + { + "tag": "all-11", + "R": 616, + "live": 8904, + "hosted": 34560, + "local_profile": { + "1": 1912, + "2": 784, + "3": 168, + "4": 280, + "5": 448, + "8": 24 + }, + "global_profile": { + "1": 138888, + "2": 56448, + "3": 15936, + "4": 20160, + "5": 36096, + "8": 7488, + "7": 3840 + }, + "cert": { + "lower": "0.001204447696176195679627", + "upper": "0.001204447696176195679628", + "lower_endpoint_residual_upper": "-2.403606883932876983689619393270963208086419656768483802752924165186441E-24", + "upper_endpoint_residual_lower": "7.910475981247765152543847224673886090903905529355202063904649293340578E-25", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.001625274643365853612538548608311557372941258375298831236705146849890305", + "-0.001625274643365853612538548608311557372941258375298831236705146849816120" + ], + "nominal_k_ceiling_interval": [ + "0.001202998747106740116645598536019984919664003708157000354387040774405950", + "0.001202998747106740116646596131469696691724156878133504187077220465294133" + ] + }, + "status": "EXACT_CLEAN_WORD_AND_AGGREGATE_ONLY" + }, + { + "tag": "all-22", + "R": 616, + "live": 8904, + "hosted": 34560, + "local_profile": { + "1": 1912, + "2": 784, + "3": 168, + "4": 280, + "5": 448, + "8": 24 + }, + "global_profile": { + "1": 138888, + "2": 56448, + "3": 15936, + "4": 20160, + "5": 36096, + "8": 7488, + "7": 3840 + }, + "cert": { + "lower": "0.001204447696176195679627", + "upper": "0.001204447696176195679628", + "lower_endpoint_residual_upper": "-2.403606883932876983689619393270963208086419656768483802752924165186441E-24", + "upper_endpoint_residual_lower": "7.910475981247765152543847224673886090903905529355202063904649293340578E-25", + "strict_rational_signs": true, + "moment_minus_one_at_current_k_required_rate": [ + "-0.001625274643365853612538548608311557372941258375298831236705146849890305", + "-0.001625274643365853612538548608311557372941258375298831236705146849816120" + ], + "nominal_k_ceiling_interval": [ + "0.001202998747106740116645598536019984919664003708157000354387040774405950", + "0.001202998747106740116646596131469696691724156878133504187077220465294133" + ] + }, + "status": "EXACT_CLEAN_WORD_AND_AGGREGATE_ONLY" + } +] diff --git a/research/e8-eleven-hosting-selected-validation/research/SUMMARY.json b/research/e8-eleven-hosting-selected-validation/research/SUMMARY.json new file mode 100644 index 0000000000..67a7692e19 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/SUMMARY.json @@ -0,0 +1,25 @@ +{ + "status": "COMPLEX_FRONTIER_SCREEN_COMPLETE", + "timestamp": "2026-10-11T14:35:50.696789+00:00", + "source_word_sha256": "ee208ff20bfe04f774eccc3be8d6700d7bf8d84bdd8aa4f03b2e7149b6b53ca6", + "single_frames": { + "tested": 3576, + "positive": 0 + }, + "same_frame_groups": { + "tested": 9278, + "positive": 0 + }, + "mixed_frame_groups": { + "tested": 155055, + "positive": 0 + }, + "hosting_same_profile": true, + "precision_candidate_kappa": "1265848755025709/1000000000000000000", + "precision_candidate_decimal": "0.001265848755025709", + "precision_scope": "Exact assembly with full certified complex endpoint, not a new supplier or full-wrapper pass", + "active_full_runs": { + "python311": 95864, + "python314": 97171 + } +} diff --git a/research/e8-eleven-hosting-selected-validation/research/frames-initial-boundary-failure.log b/research/e8-eleven-hosting-selected-validation/research/frames-initial-boundary-failure.log new file mode 100644 index 0000000000..dc802600e7 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/frames-initial-boundary-failure.log @@ -0,0 +1,5 @@ +Traceback (most recent call last): + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/complex447-search/frames.py", line 48, in + assert span(lo)<=ss[f]<=span(hi),(part,i) + ^^^^^^^^^^^^^^^^^^^^^^^^^ +AssertionError: ('A', 2675) diff --git a/research/e8-eleven-hosting-selected-validation/research/partitions.log b/research/e8-eleven-hosting-selected-validation/research/partitions.log new file mode 100644 index 0000000000..90ab613511 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/partitions.log @@ -0,0 +1,72 @@ +baseline CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block0-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block0-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block0-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block0-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block0-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block1-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block1-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block1-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block1-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block1-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block2-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block2-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block2-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block2-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block2-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block3-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block3-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block3-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block3-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block3-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block4-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block4-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block4-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block4-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block4-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block5-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block5-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block5-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block5-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block5-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block6-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block6-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block6-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block6-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block6-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block7-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block7-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block7-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block7-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block7-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block8-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block8-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block8-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block8-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block8-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block9-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block9-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block9-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block9-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block9-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block10-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block10-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block10-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block10-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block10-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block11-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block11-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block11-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block11-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block11-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block12-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block12-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block12-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block12-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block12-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block13-02 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block13-10 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block13-12 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block13-20 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +block13-21 CLEAN_WORD_PASS_NOMINATION_ONLY 0.0 +FINAL 71 0 diff --git a/research/e8-eleven-hosting-selected-validation/research/repeated-partitions.log b/research/e8-eleven-hosting-selected-validation/research/repeated-partitions.log new file mode 100644 index 0000000000..1de28f3b4c --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/repeated-partitions.log @@ -0,0 +1,5 @@ +baseline 560 8400 0.001267453159029119461392 +one-repeat 564 8436 0.001262735056192039022966 +all-00 616 8904 0.001204447696176195679627 +all-11 616 8904 0.001204447696176195679627 +all-22 616 8904 0.001204447696176195679627 diff --git a/research/e8-eleven-hosting-selected-validation/research/search_complex_output_partitions.py b/research/e8-eleven-hosting-selected-validation/research/search_complex_output_partitions.py new file mode 100644 index 0000000000..18fda68579 --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/search_complex_output_partitions.py @@ -0,0 +1,36 @@ +"""Exact clean-word search over #433 target-pair partition choices. +Scores the current hosted profile; improvements still need arbitrary-dirt and phase replay. +""" +from pathlib import Path +from collections import Counter +import os,json,gzip,hashlib,itertools,contextlib,io,time +r=Path.cwd();assert os.path.ismount('/Volumes/SP AI 01_16') and os.access(r,os.W_OK) +source=r/'early-reuse-publication/research/split-centres-global/code/complex_construct.py';raw=source.read_text();out=r/'complex447-partitions';out.mkdir(exist_ok=True) +raw=raw.replace("INPUT=Path('work/complex-network/hamming');OUT=Path('split-centres');OUT.mkdir(exist_ok=True);", "INPUT=INPUT_OVERRIDE;OUT=OUT_OVERRIDE;OUT.mkdir(exist_ok=True);") +raw=raw.replace('selected=(pi==parity)',"selected=(pi==CHOICES[tuple(c)][parity])") +code=compile(raw,str(source),'exec');modules=json.loads(gzip.decompress((r/'hosted138-screen/work/complex-network/hamming/PACKET-PROGRAMS.json.gz').read_bytes()));blocks=sorted(tuple(z['receipt']['block']) for z in modules) +baseline=json.loads((r/'hosted138-screen/split-centres/LOCAL-CHECKS.json').read_text())['forward']['paid_profile'];baseline={int(k):v for k,v in baseline.items()};reference=json.loads((r/'hosted138-screen/complex/HOSTED.json').read_text());paid={int(k):v for k,v in reference['global_profile'].items()};c=.001267453159029119 +import math +cost=lambda H:sum(k*n*math.expm1(c*math.log(73/k)) for k,n in H.items()) +basecost=cost(paid);results=[];start=time.monotonic() +configs=[('baseline',{b:(0,1) for b in blocks})] +for i,b in enumerate(blocks): + for x,y in itertools.permutations(range(3),2): + if (x,y)==(0,1):continue + choices={bb:(0,1) for bb in blocks};choices[b]=(x,y);configs.append((f'block{i}-{x}{y}',choices)) +for tag,choices in configs: + d=out/tag + try: + with contextlib.redirect_stdout(io.StringIO()):exec(code,dict(INPUT_OVERRIDE=(r/'hosted138-screen/work/complex-network/hamming').resolve(),OUT_OVERRIDE=d,CHOICES=choices)) + report=json.loads((d/'FULL-DISCOVERY.json').read_text());H={int(k):v for k,v in report['local_profile'].items()};assert report['R']==560 + if tag=='baseline':assert H==baseline + P=Counter(paid) + for k,n in baseline.items():P[k]-=72*n + for k,n in H.items():P[k]+=72*n + assert all(n>=0 for n in P.values()) and sum(k*n for k,n in P.items())==73*8400-2496 + score=cost(P);result=dict(tag=tag,score=score,delta=score-basecost,profile=H,choices=[[list(b),list(xy)] for b,xy in choices.items()],status='CLEAN_WORD_PASS_NOMINATION_ONLY') + except Exception as e:result=dict(tag=tag,status='FAIL',error=repr(e)) + results.append(result);print(tag,result['status'],result.get('delta'),flush=True) + (out/'PROGRESS.json').write_text(json.dumps(dict(source_sha256=hashlib.sha256(source.read_bytes()).hexdigest(),reference_cost=basecost,results=results),indent=2)+'\n') +positives=[x for x in results if x.get('delta',0)<-1e-12] +(out/'SUMMARY.json').write_text(json.dumps(dict(status='PARTITION_SCREEN_COMPLETE',tested=len(results),positive=len(positives),best=sorted(positives,key=lambda x:x['delta']),failures=[x for x in results if x['status']=='FAIL'],seconds=time.monotonic()-start),indent=2)+'\n');print('FINAL',len(results),len(positives),flush=True) diff --git a/research/e8-eleven-hosting-selected-validation/research/search_complex_same_partitions.py b/research/e8-eleven-hosting-selected-validation/research/search_complex_same_partitions.py new file mode 100644 index 0000000000..f0a0599ded --- /dev/null +++ b/research/e8-eleven-hosting-selected-validation/research/search_complex_same_partitions.py @@ -0,0 +1,33 @@ +"""Allow repeated target partitions and price extra helpers under hosting; nomination only.""" +from pathlib import Path +import json,gzip,contextlib,io,math,sys,time +from collections import Counter +r=Path.cwd();out=r/'complex447-same-partitions';out.mkdir(exist_ok=True) +s=(r/'early-reuse-publication/research/split-centres-global/code/complex_construct.py').read_text().replace("INPUT=Path('work/complex-network/hamming');OUT=Path('split-centres');OUT.mkdir(exist_ok=True);", "INPUT=INPUT_OVERRIDE;OUT=OUT_OVERRIDE;OUT.mkdir(exist_ok=True);").replace('selected=(pi==parity)',"selected=(pi==CHOICES[tuple(c)][parity])").replace('assert len(cur)-240==560,(len(cur)-240)','assert len(cur)>240') +code=compile(s,'complex_construct_variable_partitions','exec');inp=(r/'hosted138-screen/work/complex-network/hamming').resolve();modules=json.loads(gzip.decompress((inp/'PACKET-PROGRAMS.json.gz').read_bytes()));blocks=sorted(tuple(z['receipt']['block']) for z in modules) +sys.path.insert(0,str(r/'complex447-search'));import hosting_core as HC +sys.path.insert(0,str(r/'source443-review/code/engines'));import moment as M +c=.001267453159029119;HC.cost=lambda rank,m:rank*math.expm1(c*math.log(m/rank))/c if rank else 0. +t=json.loads(gzip.decompress((r/'hosted138-screen/split-centres/GLOBAL-TEMPLATE.json.gz').read_bytes()));ranks={z['child']:z['rank'] for z in t['idle_children']};pairs={e['stage']:e['pair'] for e in t['recipe'] if e['kind']=='local'};sched=[] +for e in t['execution_schedule']: + if e['kind']=='local_cover_sweep':sched.append(dict(kind='local',stage=e['stage'],pair=pairs[e['stage']])) + elif e['kind']=='bridge':sched.append(dict(kind='bridge',dst=e['dst'],src=e['src'])) + elif e['kind']=='idle_cover_sweep': + for ch in e['child_indices']: + if ch in ranks:sched.append(dict(kind='idle',pair=e['pair'],rank=ranks[ch],idx=ch)) +win={k:x for k,x in HC.windows(sched).items() if x[1]>=9 and x[2]};cache={};results=[] +configs=[('baseline',{b:(0,1) for b in blocks}),('one-repeat',{b:((0,0) if b==blocks[0] else (0,1)) for b in blocks})]+[(f'all-{x}{x}',{b:(x,x) for b in blocks}) for x in range(3)] +for tag,choices in configs: + d=out/tag + with contextlib.redirect_stdout(io.StringIO()):exec(code,dict(INPUT_OVERRIDE=inp,OUT_OVERRIDE=d,CHOICES=choices)) + a=json.loads((d/'FULL-DISCOVERY.json').read_text());R=a['R'];H={int(k):v for k,v in a['local_profile'].items()} + if R not in cache: + ys,zs,val=HC.solve(win,120,{(s,9):R for s in range(9)},73,pad_value=HC.cost(1,73)/8);slots,rem=HC.expand(win,ys,zs,{s:[(h,9) for h in range(R)] for s in range(9)},120);cache[R]=(ys,zs,val,slots,rem) + ys,zs,val,slots,rem=cache[R];unhosted=9*R-len(slots);W=7680+unhosted;P=Counter({k:n*72 for k,n in H.items()});P[1]+=unhosted + for it in t['idle_children']: + rr=rem.get((it['child'],it['port']),it['rank']) + if rr:P[rr]+=8 + assert 73*W-sum(k*n for k,n in P.items())==2496 + cert=M.certify(P,73,W,True);res=dict(tag=tag,R=R,live=W,hosted=len(slots)*8,local_profile=H,global_profile=dict(P),cert=cert,status='EXACT_CLEAN_WORD_AND_AGGREGATE_ONLY') + (d/'HOSTED-PRICE.json').write_text(json.dumps(res,indent=2)+'\n');HC.save_selection(d/'HOSTING-SELECTION.json','complex',ys,zs,val);results.append(res);print(tag,R,W,cert['lower'],flush=True) +(out/'SUMMARY.json').write_text(json.dumps(results,indent=2)+'\n') diff --git a/research/e8-eleven-hosting-selected/AUDIT.json b/research/e8-eleven-hosting-selected/AUDIT.json new file mode 100644 index 0000000000..4627979822 --- /dev/null +++ b/research/e8-eleven-hosting-selected/AUDIT.json @@ -0,0 +1,51 @@ +{ + "status": "PASS_INDEPENDENT_ELEVEN_STAGE_HOSTING_AUDIT", + "template_sha256": "8d3580817dc305ec62d4a9bc2f3ceec6f571be1da91db464a9050b47e9036bbe", + "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", + "emitted_events": 1740288, + "profile": { + "1": 223960, + "2": 93568, + "3": 23528, + "4": 34296, + "5": 9504, + "6": 2000, + "7": 5112, + "8": 792, + "49": 8, + "56": 440 + }, + "live": 9600, + "physical": 9609, + "hosted_residuals": 65120, + "bank_assignments": 0, + "rank_mass": 745536, + "deficit": 3264, + "maxchild": 56, + "geometry_routes": 1320, + "halving_depth": 3, + "mutations_rejected": [ + "slot outside window", + "copy outside family", + "negative slot offset", + "wrong residual width", + "duplicate helper", + "missing helper", + "cross-replica host", + "cross-replica data", + "wrong hosted coordinate", + "helper changed to bank", + "wrong call orientation", + "duplicate call", + "dropped final stage", + "wrong idle rank", + "omitted bridge", + "wrong bridge sign", + "omitted terminal exchange", + "understated live stock", + "missing remainder summary", + "wrong residual isometry", + "omitted local instruction", + "wrong reflected copy rank" + ] +} diff --git a/research/e8-eleven-hosting-selected/CERTIFICATE.json b/research/e8-eleven-hosting-selected/CERTIFICATE.json new file mode 100644 index 0000000000..d1d30c76f2 --- /dev/null +++ b/research/e8-eleven-hosting-selected/CERTIFICATE.json @@ -0,0 +1,154 @@ +{ + "status": "PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY", + "kappa": "1265848755025709/1000000000000000000", + "kappa_decimal": "0.001265848755025709", + "bit_lower": "1267514693114214441041/1000000000000000000000000", + "complex_lower": "79215822439319966337/62500000000000000000000", + "binding_component": "complex", + "gain_over_pr445_percent": 0.19656151080425197, + "bit": { + "live": 9600, + "physical": 9609, + "maxchild": 56, + "rank_mass": 745536, + "hosted_residuals": 65120, + "prefix_bits": 153, + "charged_prefix_bits": 192, + "coefficient_bits": 153, + "three_level_coefficient_bits": 514, + "charged_three_level_coefficient_bits": 1024, + "row_coefficient": 19431 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "23705571408295771212205477061105578280885391411980593584323710345481463456287523960522314822473067077310731630037929272380007140677815595272742120543121979035317258779927639705940064463108864362374476704044906928597801883438467168006438846696150245221215831391075967/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "1873909177560680033663/62500000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "18983940451209686945483274760080187655885391411980593584323710345481463456287523960522314822473067077310731630037929272380007140677815595272742120543121979035317258779927639705940064463108864362374476704044906928597801883438467168006438846696150245221215831391075967/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "2360815478543042116786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "14213601182690927715758268272769713240737218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "2360815478543042582447971797017983275880630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "1860284333752413988667552028202982016724119369423282408553237218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "28427202365381855455222107953835197693679914350875015303438318933500869871963813615040851366185543116788416807564862195069275510639886322892734979865306383762575138236805660670622805683181224656434412240936042566223325179393560239408636963257683077214776984694925721778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "4721630957086084243016630892729619412794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "14213601182690927715758268272769713240737218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "2360815478543042116786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1862645149230957031250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "1862645149230957029387354850769042968750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "epsilon_below_one": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "guard_width": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "K_geometry": "1399344677401760816019947971797017983275880630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000", + "K_dominates_log": "2360815478543042580087156318474940693432658779699608170882150778397690041960754884124580367456412125980444188871042056646642962403112019253779052244919033622908020707233131011447410746903553427263735395215048342405599562713203373322749651239262446519006697764718700801248470910220216325384900390463705278784168608924033/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000", + "record_suffix": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "phase_local": "18886523828344349970448705052385980340258360124462006110721620264204660463025508558803613360716050682522586504227975009715286014581829107098875470138069356828360583551015371297031848819010667703694321233827501015675382340318079659851779987518975858681083918397463018572064987914506048373895720127995474278784168608924033/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "phase_boundary": "3777304765668868502084969242877137374622324433469420851439819591466858935194876627668497481164381145112627815901636309766812366875573483926215888064331918469089668950985894464497505438798448936672071324238972857257295229365049912168095108634666453275756173818953928038747029510587573358114399225109285478784168608924033/2984009543535200117386858695182845960741409008922748146314820450168184450381957657982783778969887917384352489672081584674987118411926563905793164895518434359589817728650007369208133585845053054691755562477397132039604521777738257436920921219721077351351331936144627272633329489600979618753945330225721547200000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "3725290298461914056909703736828585864133213315510721274536619369423282408553237218644884718511276463760760138143820051634779693954949009578133050992545897558879271940300978525256363919593745394244916508846841840817652773451626792475247173888913589101924424237674326655405417539909607954604169068999387738278784168608924033/7460023858838000293467146737957114901853522522306870365787051125420461125954894144956959447424719793460881224180203961687467796029816409764482912238796085898974544321625018423020333964612632636729388906193492830099011304444345643592302303049302693378378329840361568181583323724002449046884863325564303868000000000000000000", + "prime_interval_packing": "2360815478543043979431833720235756713380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967", + "alpha_positive": "4721630957086086093857702730971440059974576664156457430144932133512971530684291123364442223636360491200750233922032478513591969857214460374507111943940508366544101113487736766530901900061712609610961943588255867158425673799614271398325413564935791113589157855110746197079401910832478046600731781539672278784168608924033/3730011929419000146733573368978557450926761261153435182893525562710230562977447072478479723712359896730440612090101980843733898014908204882241456119398042949487272160812509211510166982306316318364694453096746415049505652222172821796151151524651346689189164920180784090791661862001224523442431662782151934000000000000000000", + "alpha_below_one": "3725290298461914060639715666247586010866786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967/3730011929419000146733573368978557450926761261153435182893525562710230562977447072478479723712359896730440612090101980843733898014908204882241456119398042949487272160812509211510166982306316318364694453096746415049505652222172821796151151524651346689189164920180784090791661862001224523442431662782151934000000000000000000", + "alpha_below_one_fourth": "927781351397663950589535639513667922671715738624202338293236458544044669213677476996255488704453613691409402788603462732419882533869836760185856917905570229005273939089639566111010843676517366981562651330598347895217987381743591177639462467597900881183702072190085276500836063589473652814007183913998311221215831391075967/3730011929419000146733573368978557450926761261153435182893525562710230562977447072478479723712359896730440612090101980843733898014908204882241456119398042949487272160812509211510166982306316318364694453096746415049505652222172821796151151524651346689189164920180784090791661862001224523442431662782151934000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "6930088034009105798023708111692435196955552149556253087199349785849940897995706471261027431127870643844901693342737108275707705529890700781595392029635126865598362396597221833222723881261204310103651595840452469696915125094496475730783791137376889176850664727186651522474760850996412111715602190635734754931595221464414975629304939800383351588309136278042132832541676673833437286281560604216841697310719529148078209597162801376835112883596447585736198489405068437778599041298850219217355636138681012465311021017103961697858164136050772408162805440755664741613275556876236701007565964985089/6947688626905903493489275442396397610989885891142180530156056513470095699611021340784579000831320689489023037422638350806634683189742648754718631728362372050969437064253742269259257209126495417886775830940802423375669219013625423975570409604630147459337795004585355689361061643811360976551532117244139190763235092163085937500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "104459220547560348465970526895289994899756720410377762028982959898457530789618594663376697003261687304091819172451803232095145654612215527497327442843099681706954893325097359192556251675020886004935472972555359759131222550754649920051095327122102326748280004732762110939116926964310360886345306002030698673163647494173227901/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "1936541361599938238709033288540658000499011801206998066772423702345580429101509756370917767105050622202881799589364612402433960287760299129937426782586605084328184238481301522970754103950554827387884928987678706802736338442313246590109517091167525603317238251045319564368073201433186692831253395742964397/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000", + "coordinate_movement_above_kappa": "5976870668718423800856356596806912794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "7153539689043816534224660405137927503563117063028047532566092099046514761278622013167790524887067383766149354431362198056701128030619668881669872288758360958454815807504691721567061279739666820553770243930549927798351233122683569203394132884185225872265579095492751897224227043257443111003756435188843/186500596470950007336678668448927872546338063057671759144676278135511528148872353623923986185617994836522030604505099042186694900745410244112072805969902147474363608040625460575508349115315815918234722654837320752475282611108641089807557576232567334459458246009039204539583093100061226172121583139107596700000000000000000", + "bulk_exposure_above_kappa": "5976870668718423800856356596806912794522938894421719114608588019406415676289654518536543712476039477685177526932922689268369962070727619992859322184404727257879456878020964682741220072360294059935536891135637625523295955093071402198116561532831993561153303849754778784168608924033/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "6167301069252005542838332885878870376675191256772396576945575711989067025368460369771142827559505235796952866489661947110136937264811880833895773962197733300907293505819139154990615375838647823191343299159563616798126576983073918230498257917711838103564993707910596287965430956462432234043948008988335341/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "scalar_work_above_kappa": "13627324928090005836305479623835985278528713779079266942732626837409528151323354514728102274984225029257834090669865908797604733294628290598378686200993819199881837827444157578010949340451280459920732205353056446897137881427419561822800560967014531481943323548272164469548754680464881280928811334552639209/14920047717676000586934293475914229803707045044613740731574102250840922251909788289913918894849439586921762448360407923374935592059632819528965824477592171797949088643250036846040667929225265273458777812386985660198022608888691287184604606098605386756756659680723136363166647448004898093769726651128607736000000000000000000", + "dimension_above_kappa": "1860284333752413987344464378648745450745652657963940409052249019851882785283700166106340567245329808005697461059999631781014850581910509961313232228061277655193790702180350478573100747328143363788406877402181619863132102876592295904660762679987573245514934631077133557921407320044707302646857370042110725831253395742964397/1865005964709500073366786684489278725463380630576717591446762781355115281488723536239239861856179948365220306045050990421866949007454102441120728059699021474743636080406254605755083491153158159182347226548373207524752826111086410898075575762325673344594582460090392045395830931000612261721215831391075967000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "6084731986648243566095196451386160927799499851857157302451725850342813197569/3906250000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "14836780197380" + }, + { + "gap": "482007048645177890006028469670812911168993343898915952762061335116135880346291986119085127031870806916107589765247/244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "9235827787851545884" + }, + { + "gap": "38182584779977073239836692054683233293135163201113383270550675434201115625418946664378777838616516927722383093357333882798661663919669805727482227509761/15258789062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "5749260539824950511327760" + }, + { + "gap": "3024664856204944855019991806475746930649809456135947463826689575195074874654190665711231803441232234678309970305204565316873845088735151893940148902472642089913451052766544313604022141084543/953674316406250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "3578888380559265369049383003892" + }, + { + "gap": "239601314187582169723952440922470383041161064239717289659446974659654573306683437230015831614583925826622244259104097470050221021571687376437109446835536878765763871633353099724503711287858088742345989062661383654089904568971009/59604644775390625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2227841641856102698350997063607860703" + }, + { + "gap": "18980215160911225031420774760080187655885391411980593584323710345481463456287523960522314822473067077310731630037929272380007140677815595272742120543121979035317258779927639705940064463108864362374476704044906928597801883438467168006438846696150245221215831391075967/3725290298461914062500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1386821228666677298327686419515294231005143" + } + ], + "bit_template_sha256": "fda4ef5f1fd3559cade37d9c94ac9d790768df22047c2df2652683412466aba9", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", + "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", + "bank_assignments": 0, + "bit_profile": { + "1": 223960, + "2": 93568, + "3": 23528, + "4": 34296, + "5": 9504, + "6": 2000, + "7": 5112, + "8": 792, + "49": 8, + "56": 440 + }, + "parent_kappa": "315841366195289/250000000000000000", + "additional_interface": "PR442 idle-data hosting during untouched windows", + "row_bound": { + "method": "successive nonzero-norm vectors in nondegenerate complements", + "minimum_q": 3, + "column_exponent": 3003, + "factor_two_power": 78, + "cover_exponent": 3081, + "physical_families": 9609, + "physical_exponent": 9, + "stock_exponent": 3090, + "halving_depth": 3, + "complete_row_coefficient": 19431, + "retained_row_coefficient": 20161 + }, + "row_controls": [ + "false two-level halving", + "understated row reserve" + ], + "halving_depth": 3, + "finite_controls": [ + "old 128-bit prefix charge insufficient", + "old 512-bit composite charge insufficient" + ] +} diff --git a/research/e8-eleven-hosting-selected/EXPECTED.json b/research/e8-eleven-hosting-selected/EXPECTED.json new file mode 100644 index 0000000000..346f07f860 --- /dev/null +++ b/research/e8-eleven-hosting-selected/EXPECTED.json @@ -0,0 +1,58 @@ +{ + "kappa": "1265848755025709/1000000000000000000", + "kappa_decimal": "0.001265848755025709", + "bit_lower": "1267514693114214441041/1000000000000000000000000", + "complex_lower": "79215822439319966337/62500000000000000000000", + "binding_component": "complex", + "bit_profile": { + "1": 223960, + "2": 93568, + "3": 23528, + "4": 34296, + "5": 9504, + "6": 2000, + "7": 5112, + "8": 792, + "49": 8, + "56": 440 + }, + "bit": { + "live": 9600, + "physical": 9609, + "maxchild": 56, + "rank_mass": 745536, + "hosted_residuals": 65120, + "prefix_bits": 153, + "charged_prefix_bits": 192, + "coefficient_bits": 153, + "three_level_coefficient_bits": 514, + "charged_three_level_coefficient_bits": 1024, + "row_coefficient": 19431 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "row_bound": { + "method": "successive nonzero-norm vectors in nondegenerate complements", + "minimum_q": 3, + "column_exponent": 3003, + "factor_two_power": 78, + "cover_exponent": 3081, + "physical_families": 9609, + "physical_exponent": 9, + "stock_exponent": 3090, + "halving_depth": 3, + "complete_row_coefficient": 19431, + "retained_row_coefficient": 20161 + }, + "halving_depth": 3, + "bank_assignments": 0 +} diff --git a/research/e8-eleven-hosting-selected/GLOBAL.json b/research/e8-eleven-hosting-selected/GLOBAL.json new file mode 100644 index 0000000000..bb475726c3 --- /dev/null +++ b/research/e8-eleven-hosting-selected/GLOBAL.json @@ -0,0 +1,184 @@ +{ + "status": "PASS_SOURCE_BOUND_ELEVEN_STAGE_HOSTED_BIT_TEMPLATE", + "h": 8, + "m": 78, + "v": 120, + "R": 740, + "replicas": 8, + "live": 9600, + "physical": 9609, + "word_sha256": "ee4cda817d5220fdbba1d116556e3dacb3da553ed81af43e74f19365e1393a5c", + "source_records_sha256": "f9e0f3cdbc6a4eb5bfaf3fd843731a79c26740a6c4715079f2228e94b8706403", + "local_checks": { + "forward": { + "copies": 9, + "adds": 15446, + "records": 19776, + "all_columns": 980, + "cancellation_free_row_l1": 780, + "profile": { + "1": 2545, + "2": 1022, + "3": 266, + "4": 357, + "5": 108, + "7": 14, + "8": 9 + }, + "sha256": "975c00710ab47e3dd7eec27827a4152a584066032ec379a6222c3b40400162f1" + }, + "reverse": { + "copies": 9, + "adds": 15446, + "records": 19776, + "all_columns": 980, + "cancellation_free_row_l1": 18238, + "profile": { + "1": 2545, + "2": 1022, + "3": 266, + "4": 357, + "5": 108, + "7": 14, + "8": 9 + }, + "sha256": "615a5a33a8240555011a5a248a08ba028334daea98f78b79973ce4315020fbac" + } + }, + "scalar_stages": [ + { + "stage": 0, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": false + }, + { + "stage": 1, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": true + }, + { + "stage": 2, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": false + }, + { + "stage": 3, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": true + }, + { + "stage": 4, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": false + }, + { + "stage": 5, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": true + }, + { + "stage": 6, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": false + }, + { + "stage": 7, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": true + }, + { + "stage": 8, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": false + }, + { + "stage": 9, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": true + }, + { + "stage": 10, + "all_columns": 9340, + "helper_columns": 8140, + "reverse": false + } + ], + "independent_unbanked_scalar_columns": 9340, + "all_scalar_columns_restored": true, + "geometry_sha256": "49bc07c36f27dc960c8c14e15b4eec75251dc845209809bc3ef677c8a271a7bc", + "template_sha256": "8d3580817dc305ec62d4a9bc2f3ceec6f571be1da91db464a9050b47e9036bbe", + "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", + "emitted_events": 1740288, + "local_invocations": 88, + "bank_assignments": 0, + "hosted_residuals": 65120, + "banks_per_stage": 0, + "entrance_rank_total": 147, + "residual_bank_slots": false, + "padding_calls": 0, + "profile": { + "1": 223960, + "2": 93568, + "3": 23528, + "4": 34296, + "5": 9504, + "6": 2000, + "7": 5112, + "8": 792, + "49": 8, + "56": 440 + }, + "paid_calls": 393208, + "rank_mass": 745536, + "deficit": 3264, + "maxchild": 56, + "halving_depth": 3, + "halving_integer_inequality": [ + 474552, + 351232 + ], + "local_additions": 15446, + "bridge_additions": 23040, + "copy_erase_episodes": 792, + "global_prefix_bound": "7623836413012276914350637325689921994752000000", + "global_prefix_bits": 153, + "charged_prefix_bits": 192, + "omitted_bridge_shears_rejected": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ], + "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; idle-data hosting follows conditionally from PR442 plus injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", + "seconds": 3.2126199159538373 +} diff --git a/research/e8-eleven-hosting-selected/INHERITED-HOSTING-PROOF.md b/research/e8-eleven-hosting-selected/INHERITED-HOSTING-PROOF.md new file mode 100644 index 0000000000..ff3eba6770 --- /dev/null +++ b/research/e8-eleven-hosting-selected/INHERITED-HOSTING-PROOF.md @@ -0,0 +1,109 @@ +# Idle-axis hosting: helper residuals on pending idle coordinates + +This package changes only the global nine-stage templates of #434's two suppliers. Both local words are unchanged: + +- the complex word is #433's split-centre word, R = 560, m = 73; +- the bit word is #434's early-reset kernel word, R = 747, m = 64. + +So are their local programs, scalar replays, data routes, bridges, terminal exchange and cover correction. What +changes is where whole dirty-helper residuals live. Many of them move from bank streams onto coordinates of *idle* +data families that would otherwise be advanced later by an idle child. + +## 1. The two inherited facts used + +**(a) Dirty invocations act on a helper stream as its residual.** The complete dirty local invocation is block +diagonal on helpers at its endpoint and admits arbitrary correlated helper values (#425/#433, #386/#434). On the +physical stream that owns a helper residual of width w, it acts as an exact coordinate factor on w coordinates: + +- complex: P_g C_block P_g⁻¹ (PR425-COMPLEX §5, INHERITED-COMPLEX-GEOMETRY); +- bit: D_P with P the width-w coordinate projector (PR386-BIT-GEOMETRY; mixed widths 8 − entrance rank, #434). + +This holds whatever the stream held before. Banks rely on exactly this: eight sequential residuals and a pad tile a +bank stream. + +**(b) An idle child is a product of coordinate factors.** Advancing a data pair from level a to level b applies, on +every physical data stream (F, g) of that pair, the commuting product of coordinate factors on its pending set S: + +- complex: C over S, in the basis U_q ⊕ I used by the inherited idle factorisation; +- bit: D_{P_V−P_U}, an orthogonal coordinate projector difference. + +Factors on disjoint coordinate sets commute and multiply: + +- complex: C_{S'}·C_{S∖S'} = C_S; +- bit: D_{P'}·D_{P−P'} = D_P for P' ≤ P (the parent's identity D_I·D_P = D_{I−P}). + +## 2. Hosting lemma + +Fix a data family F (replica r, pair j, side, port) and an idle child Γ that advances pair j at recipe position τ. +Let λ be the position of the last local invocation or bridge that names pair j before τ; idle children do not +count as touches, since they act on other coordinates or on the other member. Let ι be any local invocation with +λ < ι < τ. Then: + +1. ι is an invocation on another pair, and nothing touches F between ι and τ. +2. A helper residual of ι, of width w, may be owned by stream (F, d·σ⁻¹) instead of a bank slot. Here d is the + invocation's cover class, and σ is a coordinate isometry carrying the local residual block onto a set S' ⊂ S of + w pending coordinates. When S' meets the local block of a level −1 advance, σ is composed with U_q ⊕ I. +3. Γ is replaced by Γ' acting on S ∖ ⋃S' over all hosted residuals of F, which have pairwise disjoint S'. + +The complete program's operator is unchanged: + +- By (a), ι applies exactly the factor on S' to (F, d·σ⁻¹), for any prior contents. +- Nothing else acts on F between ι and τ, so this factor may be moved to τ. +- By (b), the moved factors times Γ' equal Γ. + +Distinct slots of one invocation have distinct σ, so distinct physical classes for every d. They are also disjoint +from the invocation's own data owners, because pair j is not active, and from bank owners, because the families +differ. Residuals of different invocations on F occupy disjoint coordinates. They are sequential, exactly as the +parent's banks are co-owned sequentially by different cover classes. + +Two further points: + +- **Phases.** The stored Z₄ translations after Γ remain valid, because Γ'·∏(hosted factors) = Γ as exact operators. + The final X_δ(g) correction still applies to every live family; hosting changes no data endpoint. +- **Reflection.** The inverse-transpose program reverses chronology and reflects each factor. The window condition + (no touch strictly between ι and τ) is symmetric, so hosting commutes with reflection. + +## 3. What is checked here + +- `bit_hosted.py` and `complex_hosted.py` read #434's freshly regenerated templates and compute windows from each + recipe. They apply a frozen integer-programme selection (`SELECTION.json`; `--discover` recomputes it with scipy) + and emit new owners, remainder children and banks. + - Bit: unhosted residuals keep an exact width-64 tiling with no padding. + - Complex: eight per bank plus one paid pad; a final partial bank pays the larger pad. +- `audit.py` shares no code with the generators. It re-derives every window from the template schedule. For every + replica and invocation it checks that: + - each helper has exactly one owner; + - each hosted slot is inside its child's pending set, disjoint from other slots, outside the active pair, and in + window; + - every remainder child is exact, and the bank tiling is exact. + + It also recomputes the paid profile and the rank deficit 2496, and rejects nine mutations. +- `assemble.py` prices both suppliers with the two inherited rational moment engines and recomputes both finite + invoices with the hosted stock. Route charging is conservative: two extra route factors per helper selector, and + the parent's larger complex per-vertex bill is kept. It then runs #434's strict outer assembly: six bootstrap + levels and 47 inequalities. The next grid point and the zero-η, zero-β and unit-β controls are rejected. + +## 4. Result + +| | live stock | max child | hosted residuals | certified saving | +| --- | ---: | ---: | ---: | --- | +| bit | 14,259 → 9,457 | 42 → 8 | 39,568 of 53,784 | c = 1239085165241180038597/10²⁴ | +| complex | 12,720 → 8,400 | 48 → 8 | 34,560 of 40,320 | b = 1267453159029119/10¹⁸ | + +κ = 618775866623647/(5·10¹⁷) ≈ 1.237551733247294·10⁻³, bit-bound, +9.218% over #434. + +## 5. Scope + +This is a written finite extension of the inherited correlated dirty-bank and compressed-window interfaces. The +streams that own residuals now include data streams during idle windows. It is the principal new review point. + +All other interfaces remain inherited assumptions: the all-size compiler, restored-work, tape/common-grid, precision +and analytic interfaces. + +No Lean proof and no unconditional integer-multiplication theorem is claimed. The global operator identity is argued +from (a) and (b) and checked combinatorially. It is not replayed numerically on the 2⁷³- and 2⁶⁴-point address +spaces; neither parent does that either. + +## R740 composition and additional scope + +The above argument is inherited from PR442 and remains an explicit additional hosting assumption. Here the bit local word has R740 and matches PR441 after two joint B-frame sweeps. The assignment is regenerated for its actual residual-width census, rather than transferred by helper index. Parent residual isometries remain checked, and the finite selector invoice retains the parent extra-helper-route bound of 144 in addition to the two hosting factors. All host windows, owners, disjoint intervals, remainders and bank coverage are independently rechecked. Original PR442 numerical values above describe its historical R747 construction; EXPECTED.json and CERTIFICATE.json describe this R740 composition. diff --git a/research/e8-eleven-hosting-selected/LICENSE b/research/e8-eleven-hosting-selected/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-eleven-hosting-selected/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/e8-eleven-hosting-selected/MANIFEST.json b/research/e8-eleven-hosting-selected/MANIFEST.json new file mode 100644 index 0000000000..9df17d56c4 --- /dev/null +++ b/research/e8-eleven-hosting-selected/MANIFEST.json @@ -0,0 +1,54 @@ +{ + "AUDIT.json": "268269736a1427572a01ac660888af19d12194bdfa3f6c9b5311752f77c1cbc8", + "CERTIFICATE.json": "69f4ea305f053500fe127ad73a72b32bac5ad10cc7faf05122d2ee4a92e4a2fa", + "EXPECTED.json": "eb56fd0d039fe58a25dc61bc664e15b4401cbcb47ba7650adec13f78c9e94022", + "GLOBAL.json": "64f0863ce8897335ebfb0e78a5a356a0ca9f3ebf07b7a54b5332403d1ca93bdc", + "INHERITED-HOSTING-PROOF.md": "4f06d1dead63c62b076f0a6c1521c68c0b0544aa2c5df5e74a408fdfc34f91c4", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "28662fdf0a5dc6adaa13e491e2a7023ec9846bcb83ab183f8da393555fa96dab", + "PROOF.md": "2de7aac6f650c3ed818fc512034d909eeb0aae7105efcb5b92c71c2a60514bca", + "README.md": "9b4184c204a44d1bf4fb05bafab2c1f8d4170c81cd746244339b3f17ae010570", + "SOURCE.json": "470735692afc6deeba3ff5992a26282d92a485c34848bc00bf4cc7009230aebb", + "VALIDATION.json": "e67ce1a2c0daa97002e0fb27cbd2de4100fdf36b2140f477e0f39a0f3aa8b879", + "code/assemble.py": "7f5b02e2f48c0b5e1ae8dc12fd953b2bb262287277910115bee5fffae4a73817", + "code/audit.py": "9900a1b2f1f314f2b93ca8f99b5516ed2e1a7295d668ea51df2df89cef84e381", + "code/bank_routes.py": "7c6997c455bd55acca3a1603797c34e7733d557c27a7694a1429ff15773a505d", + "code/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "code/emit.py": "515d7021293e23aba1165ee270e17c375072e7128ed7b3c738768b6f6b7e9af8", + "code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "code/geometry.py": "9554182d67e434ea84b4430f909a2c400abc755d8487b51454a8e6968e62859d", + "code/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "code/row_bound.py": "de4a9b9cd797e1a05da56f62cfe725c8728cea3a4aa031b7d1b0a68f869760d6", + "code/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "data/selection.json": "b81758d0cce18e6c1abd07e716f05064aaa9b43819d6b70f7f52b4f2e4f01a9b", + "evidence/assembly.log": "8449240c9cd4c2a46279fea4f920de9572128cb7d54d6f0accea1ba9dd133be1", + "evidence/audit.log": "a4b1b1eed31c07f9a3e495205bfffde4ec861aba9cf750a7b1fea5a9922ea38d", + "evidence/draft-assembly.log": "e02a0b68a7f72a453c470339dd48eab594e433c80809fdab196e58fc7ff10ee7", + "evidence/eleven-kernel-screen-first-failure.log": "cd53bd73b6a2dd53879d9f048368bf8f68204ef7daf4b0be849f7bd725a65eb7", + "evidence/eleven-kernel-screen.log": "54ded773480d897867a969444794ea5fdcf2fd03de062c4012f63e28d86d09b0", + "evidence/emit-missing-engines.log": "4e3419b3e32b60bbefe52a30f5661a8f6f53f060b99eccf32d11c9db0098d0e9", + "evidence/emit-missing-vendor.log": "407732b01762f5f843f54dd629820173e5958d35e0126e2c857249aad4e776a9", + "evidence/emit.log": "3d3853b873beb8705f798c2abdd8ac4564497f51d2c4d56419743603d6d063ae", + "evidence/geometry.log": "46d842d677e5faf5b8224d247f0549a00f3db138168a13802f0aebb7bc5ace46", + "evidence/hosted147-full314.log": "5424d4caeeb8f868adb0aee4014f42715711d4044564b3ed6b865bec16f3a028", + "evidence/screen_eleven_kernels.py": "80cc77ba27382ac57f7c804f6c78d880442644710e437a9859bd964106b216b7", + "upstream445/EXPECTED.json": "1a2e35da8c586be03201a8d102c72f681b0b6698bbcb3a2ea286d8b0d9c0c1e4", + "upstream445/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream445/MANIFEST.json": "4d53297535ffb17603f916fa59cdc4b7f941c3166fe9f8e576f9588fd2fb79a6", + "upstream445/NOTICE.md": "b80411c1db53d12bf43d6cbb8bf2804102f2e57be2a2f55dd7820c6c2f2b9570", + "upstream445/PROOF.md": "4aede2a05d9570cc5d8a19032513c973137ee9083f079ae845b04f3f362e2ca0", + "upstream445/README.md": "15e76f8a2200af0f871b04d410ebd7fac059b800b5ec4a1f376a333c9f5638bf", + "upstream445/SOURCE.json": "976eebfec20d467f3384194fc03bd6f5b289a615e3b2deb70a7be910aaee8579", + "upstream445/code/assemble.py": "42dbfaddd284088474a80f0b6e894332b6737b8e9f9b5c45260e21c5df139792", + "upstream445/code/audit.py": "9900a1b2f1f314f2b93ca8f99b5516ed2e1a7295d668ea51df2df89cef84e381", + "upstream445/code/emit.py": "ac63ee481f3d75cb9f0658faaa2412db81d55bc44d9f1ff1c0329ce1e75aa0d4", + "upstream445/code/geometry.py": "9554182d67e434ea84b4430f909a2c400abc755d8487b51454a8e6968e62859d", + "upstream445/code/row_bound.py": "de4a9b9cd797e1a05da56f62cfe725c8728cea3a4aa031b7d1b0a68f869760d6", + "upstream445/data/selection.json": "52dbbb68e8c147690d15eaa1d952df05d074b0c121885a4159d9f6732f391872", + "upstream445/proof/INHERITED-ROW-DIVISOR.tex": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8", + "upstream445/proof/UPSTREAM-PR234-NOTICE.md": "ce978c8dfc8a2b36eed7a53014b1a792248b22ef4cee3edd8adab825a571c429", + "upstream445/verify.py": "4a161d35c65fa1d35e655c3957c05a8164a003ca05c3effe9fee7dc8d0f38090", + "verify.py": "fcc35e955bd667350f999a540011df92e2e1d774fc78703f53bfbabf949643af" +} diff --git a/research/e8-eleven-hosting-selected/NOTICE.md b/research/e8-eleven-hosting-selected/NOTICE.md new file mode 100644 index 0000000000..793fb1baa3 --- /dev/null +++ b/research/e8-eleven-hosting-selected/NOTICE.md @@ -0,0 +1,3 @@ +Prepared by Rohan Arun with substantial OpenAI Codex assistance: hosting-aware rank147 selection, eleven-stage integration and exact checks. Apache-2.0. + +The eleven-stage geometry, emitter, independent audit and elementary row bound are adapted from chafreaky PR445 with disclosed OpenAI Codex assistance, pinned at 40ab91daf2b5e87fc4071dedae1699d5d7e7cecc. Original files and notices remain in upstream445. The rank147 word is from our PR434; credit chafreaky PR443/444/417/439, eumemic PR436/440/441, DaysSky PR442 with Anthropic Claude assistance, icekylinx PR433, retained PR426/389/376/370, PR425/386 and Jacob Sussman contributions, and Henry Grant PR234's row interface. Parent source pins, licenses and assistance disclosures are retained unchanged. diff --git a/research/e8-eleven-hosting-selected/PROOF.md b/research/e8-eleven-hosting-selected/PROOF.md new file mode 100644 index 0000000000..2415bf9ce9 --- /dev/null +++ b/research/e8-eleven-hosting-selected/PROOF.md @@ -0,0 +1,9 @@ +# Conditional composition + +Use the rank147 local word reconstructed from the frozen PR436/PR443 precursor in sibling `e8-hosting-selected-kernel`. Its exact local certificate has 123 pivots, 118 donor slots and scalar ADD count 15446. The word hash is `f5ae52ba95d0edd76f85fdb4da04cd78ad46b55c9ad3b86cc098146b62032336`. + +Apply the pinned PR445 eleven-stage construction (retained verbatim in `upstream445`). Recompute the assignment with the new residual-width census: 617 width8, 115 width7 and eight width4 helpers per stage. Freeze the resulting integer selection and independently expand/check every occurrence. The solver is only a discovery tool; the verifier uses no optimization oracle. The first unconstrained assignment left one helper unhosted and was rejected; the retained selection passes complete ownership coverage. + +The bit lower endpoint is 0.001267514693114214441041. The same complex supplier has certified lower endpoint 0.001267453159029119461392, which is smaller. Keeping this full rational endpoint (rather than truncating at1e-18) gains one κ grid step without a new supplier. The finite invoice retains the residual route allowance144 plus two hosting factors, three-level halving, a 1024-bit coefficient charge and complete row coefficient19431 below20161. Fresh strict outer assembly yields κ=0.001265848755025709. + +All proof-scope qualifications and source notices in the parent and PR445 remain. The elementary all-q orthogonal-cover argument is in `upstream445/PROOF.md` and `code/row_bound.py`; no finite sample is substituted for that argument. See `INHERITED-HOSTING-PROOF.md` for the additional conditional operator interface. diff --git a/research/e8-eleven-hosting-selected/README.md b/research/e8-eleven-hosting-selected/README.md new file mode 100644 index 0000000000..a95f38cefb --- /dev/null +++ b/research/e8-eleven-hosting-selected/README.md @@ -0,0 +1,18 @@ +# Eleven-stage hosting with the rank147 kernel + +Draft conditional κ = **0.001265848755025709**, 0.19656151% above PR445 at `40ab91daf2b5e87fc4071dedae1699d5d7e7cecc`. +The complex supplier now binds. This combines PR434's hosting-selected rank147 word with PR445's eleven-stage dimension78 construction and complete orthogonal-cover row estimate. All 65,120 helper occurrences fit into idle data coordinates, leaving 9,600 live and 9,609 physical families. + +Exact changed-component checks have passed: 1,320 geometry routes, 9,340 unbanked columns, the signed ten-wire identity and 24 omitted-shear controls, all emitted instructions, all hosted owners and 22 mutation controls. Both rational moment engines, the refreshed finite invoices, six bootstrap levels, 47 strict outer inequalities and next-grid controls passed. The already fully verified rank138 parent supplies the unchanged complex certificate. + +**Full uninterrupted Python3.11.15 and3.14.8 runs passed at the preceding 708 endpoint.** Retaining the full certified complex lower endpoint instead of rounding it down at1e-18 raises the last κ grid digit to709. The only executable change is a two-line assembly refinement; both versions independently reran the two exact moments, invoices,47 inequalities and controls against their fully verified supplier artifacts. Receipts and the exact code diff are in sibling `e8-eleven-hosting-selected-validation/`. A fresh uninterrupted wrapper at the revised manifest has not been run; GitHub CI remains pending. The earlier SSD failure log is preserved. + +Reproduce after installing `sympy`: + +``` +python -B research/e8-eleven-hosting-selected/verify.py /absolute/new/output +``` + +The wrapper first rebuilds the whole rank147 parent, including the rank138 lineage and the complex phase audit, then runs the new geometry, program, independent ownership audit, invoice and exact assembly. The retained full-run receipts bind the unchanged suppliers; separate precision receipts bind the revised assembly. + +Scope: retains the additional PR442 idle-data hosting assumption, the inherited all-size compiler, dirty-helper/compressed-window, restored-work, tape/common-grid, precision, row-divisor and analytic interfaces. Finite audits do not establish the hosting operator extension. This is not an unconditional multiplication theorem, an improvement under only PR441's assumptions, or a new Lean proof. diff --git a/research/e8-eleven-hosting-selected/SOURCE.json b/research/e8-eleven-hosting-selected/SOURCE.json new file mode 100644 index 0000000000..db504435d7 --- /dev/null +++ b/research/e8-eleven-hosting-selected/SOURCE.json @@ -0,0 +1,8 @@ +{ + "parent_pr": 434, + "parent_commit": "6c0c0522665dda10201673c17fbb589f737d226c", + "parent_manifest_sha256": "b32a601147fbe042af3799bae4a73d27f7a433e76aa83650ba24566b329c184b", + "eleven_pr": 445, + "eleven_commit": "40ab91daf2b5e87fc4071dedae1699d5d7e7cecc", + "upstream445_manifest_sha256": "4d53297535ffb17603f916fa59cdc4b7f941c3166fe9f8e576f9588fd2fb79a6" +} diff --git a/research/e8-eleven-hosting-selected/VALIDATION.json b/research/e8-eleven-hosting-selected/VALIDATION.json new file mode 100644 index 0000000000..aa139e9870 --- /dev/null +++ b/research/e8-eleven-hosting-selected/VALIDATION.json @@ -0,0 +1,14 @@ +{ + "status": "FULL_UNCHANGED_SUPPLIERS_AND_REVISED_ASSEMBLY_PASS_BOTH_PYTHONS", + "python_versions": [ + "3.11.15", + "3.14.8" + ], + "kappa": "1265848755025709/1000000000000000000", + "previous_uninterrupted_manifest": "58048a268e837f4e8a30521435b2c3dad77fd0e74b38f020b7b7e11367ecf5b7", + "changed_code": [ + "code/assemble.py: retain certified complex rational endpoint and compare it to weaker inherited bound" + ], + "fresh_current_manifest_uninterrupted_wrapper": "not rerun", + "github_ci": "pending" +} diff --git a/research/e8-eleven-hosting-selected/code/assemble.py b/research/e8-eleven-hosting-selected/code/assemble.py new file mode 100644 index 0000000000..0117a300c7 --- /dev/null +++ b/research/e8-eleven-hosting-selected/code/assemble.py @@ -0,0 +1,94 @@ +# Adapted from DaysSky PR442 with Claude assistance; Eleven-stage R740 integration by chafreaky with OpenAI Codex. Apache-2.0. +"""Two exact moments for both hosted suppliers, fresh finite invoices with the hosted stock, and the strict outer +assembly of #434 (six bootstrap levels, 47 inequalities, next-grid and parameter controls). +usage: assemble.py VERIFIED444_DIR BIT_DIR""" +import gzip, hashlib, importlib.util, json, math, sys +from fractions import Fraction as Q +from pathlib import Path +parent444, bd = map(Path, sys.argv[1:3]) +upstream=parent444 +ap=bd/"AUDIT.json";outp=bd/"RESULT.json" +from row_bound import bound as row_bound, controls as row_controls +par=upstream / "changed" +cd=upstream / "complex" +def load(name): + sp = importlib.util.spec_from_file_location('hosted_' + name, par / 'work/pr361/code/engines' / (name + '.py')) + mod = importlib.util.module_from_spec(sp); sp.loader.exec_module(mod); return mod +M, Other, Outer = load('moment'), load('base_two_moment'), load('outer') +audit = json.loads(ap.read_text()); ua=json.loads((upstream/'AUDIT.json').read_text()); ur=json.loads((upstream/'RESULT.json').read_text()); bg = json.loads((bd / 'GLOBAL.json').read_text()); ch = json.loads((cd / 'HOSTED.json').read_text()) +assert audit['template_sha256'] == bg['template_sha256'] and ua['complex_template_sha256'] == ch['template_sha256'] +assert json.loads((upstream/'RECEIPT.json').read_text())['status']in ('PASS_FULL_RANK138_IDLE_HOSTING','PASS_FULL_HOSTING_SELECTED_KERNEL') +# ---------------- bit: two moments and the parent's invoice formulas with the hosted stock +P = {int(r): n for r, n in audit['profile'].items()}; m, W = 78, audit['live']; E = sum(P.values()) +geo = json.loads((bd / 'GEOMETRY.json').read_text());pg=bg +T, L, R, V, K = 8, 11, 740, 120, 5 +assert pg["replicas"]==T and pg["R"]==R +mass = sum(r * z for r, z in P.items()); assert m * W - mass == (2*K*V-L*72)*T +physical = W + 9; d = m * m; N = 2 * m +unit = L * T * pg['local_additions'] + pg['bridge_additions'] +J = 8 * T * L * (2 * V + R) + 8 * (2 * K * V * T) + 2 * L * T * R + 2 * pg['copy_erase_episodes'] # every helper route charged (bank or hosted) +high = 16 * (d + 1) ** 2; good = 8 * m * m + 8; compiler = 128 * N ** 3 +selectors = 2 * L * T * ((W - 1) + R * m * (geo['max_route_factors'] + 144 + 2 + (m - 1) + m)) # 144: residual isometry; +2: hosted slot permutation and idle basis U_q +prefix = int(pg['global_prefix_bound']); charged_prefix = 64 * ((prefix.bit_length() + 63) // 64) +assert 1<<128 <= prefix < 1< 1 +# ---------------- complex: two moments and the parent's invoice with the hosted stock +PC = {int(r): n for r, n in ua['complex_profile'].items()}; mc, WC = 73, ua['complex_live']; EC = sum(PC.values()) +massc = sum(r * z for r, z in PC.items()); assert mc * WC - massc == 2496 +rc = M.certify(PC, mc, WC, True); b = Q(rc['lower']) +assert b>=Q(ur['complex_lower']) +fbc = 32 * mc * mc * EC +l3, h3 = Other.moment(mc, WC, list(PC.items()), b); b3, bh3 = Other.moment(mc, WC, [(1, fbc)], b); assert h3 + bh3 / 10 ** 16 < 1 +integ = json.loads((par / 'split-centres/INTEGRATION.json').read_text()); inv = integ['finite_invoice'] +physc = ch['physical']; Rc = 560; v = 120 +compilerc = 64 * (mc + 1) ** 3 +pervertex = inv['pervertex'] - integ['physical'] * (64 + 1) + physc * (64 + 1) - integ['live'] + WC # stock-dependent terms re-based +r_ = mc // 2; group = 2 ** (r_ * r_) * math.prod(2 ** (2 * i) - 1 for i in range(1, r_ + 1)); stock = group * physc +smass = group * massc; logical = group * max(pervertex, inv['pervertex']) + 64; router = compilerc * (logical + 1) * (stock + 1) ** 2 +GG, EE, C0 = 1 << 30000, 1 << 100000, 1 << 210000; BB = smass + EE +literal = 2 * GG * stock ** 2 + 8 * smass + 4 * stock + 4 + 32 * mc +assert logical < 1 << 6050 and router < GG and literal < EE and BB < 1 << 100001 and 32 * mc * BB * BB < C0 and 2 * BB + 18 < C0 +depth = 2; assert mc ** depth > 2 * max(PC) ** depth +rowc = depth * stock.bit_length() + 9909 + 252; assert rowc < 20161 +# ---------------- outer assembly exactly as #434's combined.py +eta = beta = Q(1, 10 ** 18); grid = Q(1, 10 ** 18); s = min(c, (1 - beta) * b) - Q(1, 10 ** 24) +assert 0 < s < c and s < (1 - beta) * b +chain = [Q(384599, 10 ** 10)]; cutoffs = [] +def ceil(x): return -((-x.numerator) // x.denominator) +for j 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 old < a < s < 1 - a and gap > 0 + cutoff = max(ceil(36 / gap ** 2), ceil(2 * (4 + charged_two) / gap)); assert cutoff * gap ** 2 >= 36 and cutoff * gap >= 2 * (4 + charged_two) + 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) +parent_k = Q('315841366195289/250000000000000000') +assert json.loads((parent444/'RECEIPT.json').read_text())['status']in ('PASS_FULL_RANK138_IDLE_HOSTING','PASS_FULL_HOSTING_SELECTED_KERNEL') +res = dict(status='PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY', kappa=str(k), kappa_decimal=format(float(k), '.18f'), + bit_lower=str(c), complex_lower=str(b), binding_component='bit' if c < (1 - beta) * b else 'complex', + gain_over_pr445_percent=float(100 * (k / parent_k - 1)), + bit=dict(live=W, physical=physical, maxchild=max(P), rank_mass=mass, hosted_residuals=audit['hosted_residuals'], + prefix_bits=prefix.bit_length(), charged_prefix_bits=charged_prefix, coefficient_bits=coefficient.bit_length(), + three_level_coefficient_bits=two.bit_length(), charged_three_level_coefficient_bits=charged_two, row_coefficient=row), + complex=dict(live=WC, physical=physc, maxchild=max(PC), rank_mass=massc, hosted_residuals=ua['complex_hosted_residuals'], + physical_stock_bits=stock.bit_length(), router_bits=router.bit_length(), literal_bits=literal.bit_length(), row_coefficient=rowc), + strict_outer_constraints={n: str(x) for n, x in a['strict_constraints'].items()}, outer_controls=controls, bootstrap=cutoffs, + bit_template_sha256=bg['template_sha256'], complex_template_sha256=ch['template_sha256'], emitted_program_sha256=bg['emitted_program_sha256'], bank_assignments=audit['bank_assignments'], bit_profile=audit['profile'], parent_kappa=str(parent_k), additional_interface='PR442 idle-data hosting during untouched windows',row_bound=rows,row_controls=row_rejected, halving_depth=3, finite_controls=['old 128-bit prefix charge insufficient','old 512-bit composite charge insufficient']) +outp.write_text(json.dumps(res, indent=2) + '\n') +print(res['status'], res['kappa_decimal'], 'binding', res['binding_component'], 'gain over #445 %.4f%%' % res['gain_over_pr445_percent']) diff --git a/research/e8-eleven-hosting-selected/code/audit.py b/research/e8-eleven-hosting-selected/code/audit.py new file mode 100644 index 0000000000..c8730e84dd --- /dev/null +++ b/research/e8-eleven-hosting-selected/code/audit.py @@ -0,0 +1,181 @@ +"""Independent eleven-stage schedule, geometry embedding and hosted ownership audit. +Derived from PR386/436/443/444 and DaysSky PR442; all source notices retained. +Eleven-stage integration by chafreaky with OpenAI Codex assistance, Apache-2.0. +No emitter, schedule constructor, hosting solver or expander is imported. +Usage: audit.py PARENT443_CANDIDATE OUT +""" +import copy,gzip,hashlib,json,sys +from collections import Counter,defaultdict +from pathlib import Path +K,L,M,T,V,R=5,11,78,8,120,740 +DATA=2*K*V*T +read=lambda p:json.loads(p.read_text()) +sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +load_template=lambda p:json.loads(gzip.decompress(p.read_bytes())) + +def windows(schedule): + last={};seen=[];win={};ranks={};pairs={} + for position,event in enumerate(schedule): + kind=event['kind'] + if kind=='local_cover_sweep': + seen.append((position,event['stage'],event['pair']));last[event['pair']]=position + elif kind=='bridge': + last[event['dst']]=position;last[event['src']]=position + elif kind=='idle': + i=event['idx'];assert i not in win + win[i]={s for pos,s,p in seen if last.get(event['pair'],-1)0 and 0<=off and off+w<=rank[i] + cells=set(range(off,off+w));assert not cells&used[i,cp];used[i,cp]|=cells + assert (s,h) not in hosted;hosted[s,h]=(i,cp,off,w) + assert set(hosted)=={(s,h) for s in range(L) for h in range(R)} + rem={};summaries={} + for i in rank: + if not rank[i]:continue + for cp in range(2*V):rem[i,cp]=rank[i]-len(used[i,cp]) + if str(i) in hs['windows']: + summaries[str(i)]={str(r):n for r,n in sorted(Counter(rem[i,cp] for cp in range(2*V)).items())} + assert hs['remainders']==summaries + assert len(t['calls'])==L*T;seen=set();paid=Counter() + localhash={ori:hashlib.sha256(json.dumps(es,separators=(',',':')).encode()).hexdigest() for ori,es in t['local_programs'].items()} + for index,c in enumerate(t['calls']): + s,rep=c['stage'],c['replica'];p=max(0,(s-1)//2);rev=bool(s%2) + assert (s,rep)==divmod(index,T) and c['pair']==p and c['orientation']==('reverse' if rev else 'forward') + assert c['local_hash']==localhash[c['orientation']] + own=c['owners'];assert len(own)==2*V+R + assert len({(f,tuple(route)) for f,route in own})==2*V+R + for j,(f,route) in enumerate(own): + assert 0<=f2*max(paid)**3 + return paid + +def expanded_digest(t): + h=hashlib.sha256();count=0 + for call in t['calls']: + for op in t['local_programs'][call['orientation']]: + row=[op[0],call['owners'][op[1]]] + if op[0]==0:row.extend(op[2:]) + else: + row.append(call['owners'][op[2]] if op[2]<2*V+R else [t['live'],['private',0]]) + row.extend(op[3:]) + h.update(json.dumps(row,separators=(',',':')).encode());h.update(b'\n');count+=1 + return h.hexdigest(),count + +def main(): + par,out=map(Path,sys.argv[1:]);t=load_template(out/'GLOBAL-TEMPLATE.json.gz');pt=load_template(par/'nine/GLOBAL-TEMPLATE.json.gz') + g=read(out/'GLOBAL.json');geo=read(out/'GEOMETRY.json');pg=read(par/'nine/GEOMETRY.json') + state=read(par/'records/249-states.json');fs=read(par/'records/frames.json')['frames'] + widths=[8-fs[str(state['initial'][str(h)])]['dim'] for h in range(240,980)] + P=audit(t,pt,widths) + assert geo['m']==78 and geo['stages']==11 and len(geo['ports'])==120 and not geo['bank_slots'] and not geo['bank_permutations'] + for p,old in zip(geo['ports'],pg['ports']): + assert {k:v for k,v in p.items() if k!='routes'}=={k:v for k,v in old.items() if k!='routes'} + assert p['routes'][:9]==old['routes'] and len(p['routes'])==11 + for s,route in enumerate(p['routes']): + if s==0:assert route==dict(stage=0,axes=list(range(8)),identity=True) + else: + assert route==dict(stage=s,axes=list(range(8))+list(range(8+7*(s-1),8+7*s)),elementary_inverse_replay=old['routes'][1]['elementary_inverse_replay']) + assert len(set(route['axes']))==15 and max(route['axes']) 0 and replicas % 8 == 0 + by_width = {} + for rep in range(replicas): + 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) == replicas * 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/e8-eleven-hosting-selected/code/e8core.py b/research/e8-eleven-hosting-selected/code/e8core.py new file mode 100644 index 0000000000..78983b3687 --- /dev/null +++ b/research/e8-eleven-hosting-selected/code/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/e8-eleven-hosting-selected/code/emit.py b/research/e8-eleven-hosting-selected/code/emit.py new file mode 100644 index 0000000000..e033a8ceec --- /dev/null +++ b/research/e8-eleven-hosting-selected/code/emit.py @@ -0,0 +1,259 @@ +# Kernel integration of PR436/PR386 by chafreaky, with OpenAI Codex assistance. +# Original copyright and attribution retained below. This variant uses explicit +# residual isometries and mixed-width banks; the original all-zero-start +# requirement is replaced by the verified kernel entrance contract. +"""Source-bound eleven-stage bit template with 8 independent replicas and no helper banks. +PR386 global identity and PR436 generalization by Zhihao Chen and eumemic, +with their disclosed OpenAI Codex and Anthropic Claude assistance, Apache-2.0. +PR439 explicit residual routes and this replication extension by chafreaky, +with OpenAI Codex assistance. All owner assignments and emitted calls are checked. +Historical PR386 regression is performed by the unchanged parent wrapper. +""" +import argparse, gzip, hashlib, json, struct, time, sys +from collections import Counter +from pathlib import Path +HERE=Path(__file__).resolve().parent +sys.path.insert(0,str(HERE.parents[1]/"e8-r740-replica32/code")) +sys.path.insert(0,str(HERE.parents[1]/"idle-axis-hosting")) +from bank_routes import validate_isometries +import hosting_core as HC + +H,L,K,T,M=8,11,5,8,78 +def sha(p): return hashlib.sha256(p.read_bytes()).hexdigest() +def write(p,x): p.write_text(json.dumps(x,indent=2)+'\n') + +def recipe(): + out=[dict(kind='local',stage=0,pair=0,reverse=False)]; stage=1 + for j in range(K): + out.append(dict(kind='local',stage=stage,pair=j,reverse=True)); stage+=1 + if j/2') + geo=json.loads((out/'GEOMETRY.json').read_text()) + assert geo['status']=='PASS_COMPRESSED_ELEVEN_BIT_GEOMETRY' + # the port routes depend only on the labels: same 120 label vectors, in the same order + assert len(geo['ports'])==V and all(p['port']==t and p['q']==w['lines'][t] for t,p in enumerate(geo['ports'])) + rp=a.local_check/'records/249-records.bin'; raw=rp.read_bytes(); rec=list(struct.iter_unpack('<6i',raw)) + state=json.loads((a.local_check/'records/249-states.json').read_text()) + fs=json.loads((a.local_check/'records/frames.json').read_text())['frames'] + dims={int(f):z['dim'] for f,z in fs.items()} + parent_global=json.loads((a.local_check/'nine/GLOBAL.json').read_text()) + assert (state['v'],state['n'])==(V,LOCAL) + ADDS=sum(row[0]==1 for row in rec) + assert ADDS==parent_global['local_additions'] + initial=[state['initial'][str(i)] for i in range(LOCAL)] + final=[state['final'][str(i)] for i in range(LOCAL)] + assert all(dims[final[i]]==H for i in range(2*V,LOCAL)) + widths=[H-dims[initial[i]] for i in range(2*V,LOCAL)] + ENT=sum(H-z for z in widths) + NB=0;LIVE=DATA + assert T==8 and M==8+7*(L-1) + isometries=json.loads(a.isometries.read_text()) + assert validate_isometries(isometries,w['frames'],w['lines'],dims)==set(initial[2*V:]) + streams={}; checks={}; localH=None + for reverse in (False,True): + cur=(final if reverse else initial)[:]+[-1]; val=[1<=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: + 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/e8-eleven-hosting-selected/code/engines/moment.py b/research/e8-eleven-hosting-selected/code/engines/moment.py new file mode 100644 index 0000000000..7d697cb452 --- /dev/null +++ b/research/e8-eleven-hosting-selected/code/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/e8-eleven-hosting-selected/code/geometry.py b/research/e8-eleven-hosting-selected/code/geometry.py new file mode 100644 index 0000000000..b4ad507401 --- /dev/null +++ b/research/e8-eleven-hosting-selected/code/geometry.py @@ -0,0 +1,111 @@ +"""Exact compressed eleven-stage E8 bit geometry; no external research fetches. + +Prepared by Zhihao Chen with OpenAI Codex assistance, Apache-2.0. +Eleven-stage extension by chafreaky with OpenAI Codex assistance. +Uses the E8 root data and port-reflection construction credited to PR #370. +""" +import argparse, gzip, hashlib, json, time +from pathlib import Path +import sympy as S + +def dump(p, x): p.write_text(json.dumps(x,indent=2,default=str)+'\n') +def digest(p): return hashlib.sha256(p.read_bytes()).hexdigest() + +def factor(a): + """Exact elementary factorization, reconstructed from the identity.""" + n=a.rows; z=a.copy(); ops=[] + for j in range(n): + p=next(i for i in range(j,n) if z[i,j]) + if p!=j: z.row_swap(p,j); ops.append(['swap',p,j,None]) + if z[j,j]!=1: + c=1/z[j,j]; z[j,:]=c*z[j,:]; ops.append(['scale',j,None,c]) + for i in range(n): + if i!=j and z[i,j]: + c=-z[i,j]; z[i,:]=z[i,:]+c*z[j,:]; ops.append(['add',i,j,c]) + assert z==S.eye(n) + def replay(skip=-1): + z=S.eye(n) + for k in reversed(range(len(ops))): + if k==skip: continue + typ,i,j,c=ops[k] + if typ=='swap': z.row_swap(i,j) + elif typ=='scale': z[i,:]=z[i,:]/c + else: z[i,:]=z[i,:]-c*z[j,:] + return z + assert replay()==a + assert ops and replay(0)!=a + return [[t,i,j,None if c is None else str(c)] for t,i,j,c in ops] + +def main(): + ap=argparse.ArgumentParser(); ap.add_argument('--source',type=Path,required=True) + ap.add_argument('--out',type=Path,required=True); a=ap.parse_args(); t0=time.monotonic() + a.out.mkdir(parents=True,exist_ok=True) + p=a.source/'data/bit/bitE8-r865.json.gz'; w=json.loads(gzip.decompress(p.read_bytes())) + assert (w['h'],w['v'],w['R'],w['form'])==(8,120,865,'/2') + lines=[S.Matrix(x) for x in w['lines']]; I=S.eye(8); Z=S.zeros(8) + assert lines[0]==S.Matrix([2,0,0,0,0,0,0,0]) + ip=lambda u,v:(u.T*v)[0]/2 + gs={0:I}; todo=[0] + while todo: + more=[] + for i in todo: + for j in range(120): + if j in gs or abs(ip(lines[i],lines[j]))!=1: continue + d=lines[i]-lines[j] if ip(lines[i],lines[j])==1 else lines[i]+lines[j] + r=I-d*d.T/(d.T*d)[0]*2 + gs[j]=r*gs[i]; more.append(j) + todo=more + assert len(gs)==120 + recipes=[]; denoms=set(); max_factors=0 + for t,q in enumerate(lines): + g=gs[t]; assert g.T*g==I and g*lines[0] in (q,-q) + P=q*q.T/4; K=I-P; A=g[:,1:] + assert A.T*A==S.eye(7) and A*A.T==K and P*A==S.zeros(8,7) + rho=P.row_join(A).col_join(A.T.row_join(S.zeros(7))) + assert rho.T==rho and rho*rho==S.eye(15) + expected={'P':S.diag(I,S.zeros(7)), 'H':S.eye(15), + '0':S.diag(K,S.zeros(7)), 'K':S.diag(K,S.eye(7))} + for name,U in [('P',P),('H',I),('0',Z),('K',K)]: + assert rho*S.diag(U,S.eye(7))*rho==expected[name] + # Exact bit address operators D_U: head/tail exchange on U. + # Unlike complex C_U, they carry no omitted scalar/translation phase. + def D(U): return (I-U).row_join(U).col_join(U.row_join(I-U)) + assert D(I)*D(P)==D(K) and D(P)*D(P)==S.eye(16) + ops=factor(rho); max_factors=max(max_factors,len(ops)) + for typ,i,j,c in ops: + if c is not None: denoms.add(int(S.Rational(c).q)) + # Compact exact global matrices: these 15 axes are the first eight + # local coordinates and exterior block s. All other axes are fixed. + routes=[dict(stage=0,axes=list(range(8)),identity=True)] + for s in range(1,11): + axes=list(range(8))+list(range(8+7*(s-1),8+7*s)) + assert len(set(axes))==15 and max(axes)<78 + routes.append(dict(stage=s,axes=axes,elementary_inverse_replay=ops)) + recipes.append(dict(port=t,q=list(map(int,q)),complement_columns=[[str(x) for x in row] for row in A.tolist()], + rho15=[[str(x) for x in row] for row in rho.tolist()],routes=routes)) + if t%30==0: print('compressed geometry',t+1,flush=True) + # Exact nested data levels: local I (or K_q) plus s exterior rank-7 + # blocks. Width 78=8+10*7; each bridge sees identical complete operators. + idle=[] + for j in range(1,5): + idle += [dict(pair=j,source_level=-1,target_level=2*j-1,rank=14*j,phase='before_positive_bridge'), + dict(pair=j,source_level=2*j-1,target_level=2*j,rank=7,phase='before_negative_bridge')] + for j in range(5): + idle.append(dict(pair=j,source_level=2*j+2,target_level=10,rank=14*(4-j),phase='terminal')) + assert sum(z['rank'] for z in idle)==308 + # Every residual is hosted in a data family; no helper bank exists. + slots=[];perms=[] + out=dict(status='PASS_COMPRESSED_ELEVEN_BIT_GEOMETRY',h=8,m=78,stages=11, + word_sha256=digest(p),ports=recipes,idle_per_port_and_data_member=idle, + local_window='U direct_sum E_s, with E_s the first s exterior coordinate 7-blocks', + ambient_form='I_78/2',bank_slots=slots,bank_permutations=perms, + route_checks=1320,exact_bit_endpoint_operator_checks=240, + max_route_factors=max_factors,route_denominators=sorted(denoms), + bad_prime_factors=sorted({int(q) for d in denoms for q in S.factorint(d)}), + missing_route_factor_controls=120,bank_free=True, + scope='All port isometries, stage boundary identities, nested idle ranks, exact bit endpoint operators and coordinate embeddings. No residual banks are used. Full local-word scalar and chronological lowering are checked separately.', + seconds=time.monotonic()-t0) + dump(a.out/'GEOMETRY.json',out) + print(json.dumps({k:v for k,v in out.items() if k not in ('ports','bank_permutations','idle_per_port_and_data_member')}),flush=True) + +if __name__=='__main__': main() diff --git a/research/e8-eleven-hosting-selected/code/hosting_core.py b/research/e8-eleven-hosting-selected/code/hosting_core.py new file mode 100644 index 0000000000..68b536daa9 --- /dev/null +++ b/research/e8-eleven-hosting-selected/code/hosting_core.py @@ -0,0 +1,138 @@ +"""Idle-axis hosting: place whole dirty-helper residuals on the pending coordinates of an idle data family. + +A data family that is advanced by an idle child from level a to level b receives the commuting coordinate factors of +that child. If the family is untouched (no local invocation on its pair and no bridge naming its pair) during an +interval of local invocations ending at the child, a helper residual of width w from an invocation inside that +interval may own w of those pending coordinates instead of a bank slot. The child keeps only the remaining +coordinates. This module computes the windows from the recipe and chooses, per replica, how many residuals of each +width each child hosts (exact integer programme), then expands that choice into explicit slot assignments. +Standard library plus scipy for the integer programme; the emitted assignment is re-checked without scipy.""" +import math +from collections import Counter, defaultdict + +def windows(schedule): + """schedule: ordered events dict(kind='local',stage,pair) | dict(kind='bridge',dst,src) | dict(kind='idle',pair,rank,idx). + Returns {idx: (pair, rank, frozenset(stages))} - stages whose invocation lies strictly between the last touch of + the pair and the idle child.""" + last = {}; out = {}; locals_ = [] + for pos, e in enumerate(schedule): + k = e['kind'] + if k == 'local': + locals_.append((pos, e['stage'], e['pair'])); last[e['pair']] = pos + elif k == 'bridge': + last[e['dst']] = pos; last[e['src']] = pos + elif k == 'idle': + p = e['pair']; lo = last.get(p, -1) + st = frozenset(s for q, s, pp in locals_ if lo < q < pos and pp != p) + out[e['idx']] = (p, e['rank'], st) # an idle child acts on other coordinates (or the other member): not a touch + return out + +def patterns(rank, widths, maxk=12): + """multisets of widths with sum <= rank (as sorted tuples)""" + ws = sorted(set(widths), reverse=True); res = [] + def rec(i, cur, s): + if i == len(ws): res.append(tuple(cur)); return + w = ws[i]; k = 0 + while s + k * w <= rank and len(cur) + k <= maxk: + rec(i + 1, cur + [w] * k, s + k * w); k += 1 + rec(0, [], 0) + return res + +def cost(r, m): + return r * math.log(m / r) if r else 0.0 + +def solve(win, copies, avail, m, pad_value=0.0, group=None): + """win: {idx: (pair, rank, stages)}; copies: piece copies per replica of each idx (2V); + avail: {(stage, width): count per replica}; maximise saved idle cost (+ pad_value per hosted residual). + group: optional {width: g} - remaining count of that width per stage must be a multiple of g (exact bank tiling). + Returns {(idx, pattern): copies} and {(idx, width, stage): count}.""" + import numpy as np + from scipy.optimize import milp, LinearConstraint, Bounds + widths = sorted({w for (_, w) in avail}) + var = []; index = {} + for idx, (p, r, st) in win.items(): + for pat in patterns(r, widths): + index[('y', idx, pat)] = len(var); var.append(('y', idx, pat)) + for w in widths: + for s in st: + if avail.get((s, w), 0): + index[('z', idx, w, s)] = len(var); var.append(('z', idx, w, s)) + stages = sorted({s for (s, _) in avail}) + if group: + for w, g in group.items(): + for s in stages: + index[('g', w, s)] = len(var); var.append(('g', w, s)) + n = len(var); c = np.zeros(n); integ = np.ones(n); lb = np.zeros(n); ub = np.full(n, np.inf) + for key, j in index.items(): + if key[0] == 'y': + _, idx, pat = key; r = win[idx][1]; c[j] = -(cost(r, m) - cost(r - sum(pat), m) + pad_value * len(pat)) + rows, lo, hi = [], [], [] + for idx in win: + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'y' and key[1] == idx: row[j] = 1 + rows.append(row); lo.append(copies); hi.append(copies) + for w in widths: + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'y' and key[1] == idx: row[j] = key[2].count(w) + if key[0] == 'z' and key[1] == idx and key[2] == w: row[j] = -1 + rows.append(row); lo.append(0); hi.append(0) + for (s, w), a in avail.items(): + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'z' and key[2] == w and key[3] == s: row[j] = 1 + if group and w in group: + row[index[('g', w, s)]] = group[w]; rows.append(row); lo.append(a); hi.append(a) # used + g*k = avail + else: + rows.append(row); lo.append(0); hi.append(a) + res = milp(c, constraints=LinearConstraint(np.array(rows), lo, hi), integrality=integ, bounds=Bounds(lb, ub), + options=dict(time_limit=600, disp=False)) + assert res.x is not None, res.message + x = [int(round(t)) for t in res.x] + ys = {(k[1], k[2]): x[j] for k, j in index.items() if k[0] == 'y' and x[j]} + zs = {(k[1], k[2], k[3]): x[j] for k, j in index.items() if k[0] == 'z' and x[j]} + return ys, zs, -res.fun + +def expand(win, ys, zs, helpers, V2): + """helpers: {stage: [(helper, width), ...]} for ONE replica; returns list of + (idx, copy, offset, width, stage, helper) and the remainder rank of every (idx, copy). + Copies of a piece are the 2V (side, port) data families; residuals packed from offset 0 in decreasing width.""" + pool = defaultdict(list) # (stage, width) -> helpers + for s, hs in helpers.items(): + for h, w in hs: pool[s, w].append(h) + for k in pool: pool[k].sort() + need = defaultdict(list) # (idx, width) -> stages multiset in deterministic order + for (idx, w, s), cnt in sorted(zs.items()): need[idx, w] += [s] * cnt + out = []; rem = {} + for idx in sorted(win): + pats = sorted([(pat, cnt) for (i, pat), cnt in ys.items() if i == idx], key=lambda t: (-sum(t[0]), t[0])) + copy = 0; ptr = Counter() + r = win[idx][1] + for pat, cnt in pats: + for _ in range(cnt): + off = 0 + for w in sorted(pat, reverse=True): + s = need[idx, w][ptr[idx, w]]; ptr[idx, w] += 1 + h = pool[s, w].pop(0) + out.append((idx, copy, off, w, s, h)); off += w + rem[idx, copy] = r - off; copy += 1 + while copy < V2: rem[idx, copy] = r; copy += 1 + return out, rem + +def save_selection(path, key, ys, zs, val): + """freeze the integer-programme choice (patterns per child, residual stages per child) for stdlib-only replay""" + import json + from pathlib import Path + p = Path(path); d = json.loads(p.read_text()) if p.exists() else {} + d[key] = dict(patterns=sorted([[i, list(pat), n] for (i, pat), n in ys.items()]), + stages=sorted([[i, w, s, n] for (i, w, s), n in zs.items()]), proxy_saving=val) + p.write_text(json.dumps(d, indent=1, sort_keys=True) + '\n') + +def load_selection(path, key): + import json + from pathlib import Path + d = json.loads(Path(path).read_text())[key] + ys = {(i, tuple(pat)): n for i, pat, n in d['patterns']} + zs = {(i, w, s): n for i, w, s, n in d['stages']} + return ys, zs, d['proxy_saving'] diff --git a/research/e8-eleven-hosting-selected/code/row_bound.py b/research/e8-eleven-hosting-selected/code/row_bound.py new file mode 100644 index 0000000000..11d3c0d48e --- /dev/null +++ b/research/e8-eleven-hosting-selected/code/row_bound.py @@ -0,0 +1,47 @@ +"""Elementary orthogonal-cover row count; no exact group-order formula is needed. + +Over an odd finite field, diagonalize a nondegenerate d-dimensional symmetric +form. Fixing d-1 coordinates of a vector leaves a nonzero-coefficient quadratic +in the last coordinate; hence a prescribed nonzero norm has at most 2*q^(d-1) +solutions. The orthogonal complement of such a vector is nondegenerate. +Induction while choosing the images of a diagonal orthogonal basis gives +|O_m(q)| <= product(d=1..m, 2*q^(d-1)) = 2^m*q^(m*(m-1)/2). +Since q>=3, this is strictly below q^(m*(m+1)/2). Physical family stock adds +ceil(log_3(physical)) to this uniform exponent. The restored-row divisor +argument in PR234/PR386 multiplies it by the halving depth, then adds the +unchanged 9909 and 252 allowances. Routing-time bills still use m^2. + +This arithmetic checker verifies the exponent calculation and strict margins; +the preceding elementary induction is the all-q proof, not a finite q sample. +chafreaky with OpenAI Codex assistance, Apache-2.0. +""" +from fractions import Fraction + +def bound(m,physical,child,depth): + assert m>1 and physical>0 and 00 + assert m**depth>2*child**depth + overhead=0 + while 3**overhead<=physical:overhead+=1 + column_exponent=sum(d-1 for d in range(1,m+1)) + assert column_exponent==m*(m-1)//2 and 2**m<3**m + cover_exponent=column_exponent+m + stock_exponent=cover_exponent+overhead + assert physical<3**overhead and 2**m*physical<3**(m+overhead) + row=depth*stock_exponent+9909+252 + assert row<20161 and Fraction(10**6)-Fraction(51*20161,25)>0 + return dict(method='successive nonzero-norm vectors in nondegenerate complements', + minimum_q=3,column_exponent=column_exponent,factor_two_power=m, + cover_exponent=cover_exponent,physical_families=physical, + physical_exponent=overhead,stock_exponent=stock_exponent, + halving_depth=depth,complete_row_coefficient=row,retained_row_coefficient=20161) + +def controls(): + rejected=[] + for name,args in [('false two-level halving',(78,9609,56,2)), + ('understated row reserve',(100,9609,90,7))]: + try:bound(*args) + except AssertionError:rejected.append(name) + else:raise AssertionError('accepted '+name) + # The original coarse enumeration bound does NOT fit this retained row cap. + assert 3*(78**2+1)+9909+252==28416>20161 + return rejected diff --git a/research/e8-eleven-hosting-selected/code/tile_m.py b/research/e8-eleven-hosting-selected/code/tile_m.py new file mode 100644 index 0000000000..cd5fd9b539 --- /dev/null +++ b/research/e8-eleven-hosting-selected/code/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/e8-eleven-hosting-selected/data/selection.json b/research/e8-eleven-hosting-selected/data/selection.json new file mode 100644 index 0000000000..7e36f3f270 --- /dev/null +++ b/research/e8-eleven-hosting-selected/data/selection.json @@ -0,0 +1,513 @@ +{ + "bit": { + "patterns": [ + [ + 0, + [ + 7, + 7 + ], + 115 + ], + [ + 0, + [ + 8 + ], + 125 + ], + [ + 1, + [], + 125 + ], + [ + 1, + [ + 7 + ], + 115 + ], + [ + 2, + [ + 7, + 7, + 7, + 7 + ], + 28 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 180 + ], + [ + 2, + [ + 8, + 8, + 8, + 4 + ], + 32 + ], + [ + 3, + [], + 117 + ], + [ + 3, + [ + 4 + ], + 8 + ], + [ + 3, + [ + 7 + ], + 115 + ], + [ + 4, + [ + 7, + 7, + 7, + 7, + 7, + 7 + ], + 17 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 223 + ], + [ + 5, + [], + 118 + ], + [ + 5, + [ + 4 + ], + 7 + ], + [ + 5, + [ + 7 + ], + 115 + ], + [ + 6, + [], + 55 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8, + 8, + 8 + ], + 185 + ], + [ + 7, + [], + 125 + ], + [ + 7, + [ + 7 + ], + 115 + ], + [ + 8, + [ + 7 + ], + 1 + ], + [ + 8, + [ + 8, + 8, + 8, + 8, + 8, + 8, + 8 + ], + 239 + ], + [ + 9, + [ + 8, + 8, + 8, + 7, + 7, + 4 + ], + 9 + ], + [ + 9, + [ + 8, + 8, + 8, + 8, + 8 + ], + 231 + ], + [ + 10, + [ + 7, + 7, + 7, + 7 + ], + 28 + ], + [ + 10, + [ + 8, + 8, + 8 + ], + 180 + ], + [ + 10, + [ + 8, + 8, + 8, + 4 + ], + 32 + ], + [ + 11, + [ + 7, + 7 + ], + 115 + ], + [ + 11, + [ + 8 + ], + 125 + ] + ], + "proxy_saving": 8182091.1899771495, + "stages": [ + [ + 0, + 7, + 0, + 115 + ], + [ + 0, + 7, + 1, + 115 + ], + [ + 0, + 8, + 0, + 125 + ], + [ + 1, + 7, + 2, + 115 + ], + [ + 2, + 4, + 0, + 8 + ], + [ + 2, + 4, + 1, + 8 + ], + [ + 2, + 4, + 2, + 8 + ], + [ + 2, + 4, + 3, + 8 + ], + [ + 2, + 7, + 3, + 112 + ], + [ + 2, + 8, + 1, + 617 + ], + [ + 2, + 8, + 2, + 19 + ], + [ + 3, + 4, + 4, + 8 + ], + [ + 3, + 7, + 4, + 115 + ], + [ + 4, + 7, + 3, + 2 + ], + [ + 4, + 7, + 5, + 100 + ], + [ + 4, + 8, + 0, + 492 + ], + [ + 4, + 8, + 2, + 6 + ], + [ + 4, + 8, + 3, + 617 + ], + [ + 5, + 4, + 6, + 7 + ], + [ + 5, + 7, + 6, + 115 + ], + [ + 6, + 8, + 2, + 592 + ], + [ + 6, + 8, + 4, + 86 + ], + [ + 6, + 8, + 5, + 617 + ], + [ + 7, + 7, + 8, + 115 + ], + [ + 8, + 7, + 3, + 1 + ], + [ + 8, + 8, + 4, + 531 + ], + [ + 8, + 8, + 6, + 617 + ], + [ + 8, + 8, + 9, + 525 + ], + [ + 9, + 4, + 5, + 8 + ], + [ + 9, + 4, + 6, + 1 + ], + [ + 9, + 7, + 5, + 15 + ], + [ + 9, + 7, + 7, + 3 + ], + [ + 9, + 8, + 7, + 617 + ], + [ + 9, + 8, + 8, + 73 + ], + [ + 9, + 8, + 10, + 492 + ], + [ + 10, + 4, + 7, + 8 + ], + [ + 10, + 4, + 8, + 8 + ], + [ + 10, + 4, + 9, + 8 + ], + [ + 10, + 4, + 10, + 8 + ], + [ + 10, + 7, + 7, + 112 + ], + [ + 10, + 8, + 8, + 544 + ], + [ + 10, + 8, + 9, + 92 + ], + [ + 11, + 7, + 9, + 115 + ], + [ + 11, + 7, + 10, + 115 + ], + [ + 11, + 8, + 10, + 125 + ] + ] + } +} diff --git a/research/e8-eleven-hosting-selected/evidence/assembly.log b/research/e8-eleven-hosting-selected/evidence/assembly.log new file mode 100644 index 0000000000..9f548bcb3b --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY 0.001265848755025709 binding complex gain over #445 0.1966% diff --git a/research/e8-eleven-hosting-selected/evidence/audit.log b/research/e8-eleven-hosting-selected/evidence/audit.log new file mode 100644 index 0000000000..5e06462347 --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_ELEVEN_STAGE_HOSTING_AUDIT", "template_sha256": "8d3580817dc305ec62d4a9bc2f3ceec6f571be1da91db464a9050b47e9036bbe", "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", "emitted_events": 1740288, "profile": {"1": 223960, "2": 93568, "3": 23528, "4": 34296, "5": 9504, "6": 2000, "7": 5112, "8": 792, "49": 8, "56": 440}, "live": 9600, "physical": 9609, "hosted_residuals": 65120, "bank_assignments": 0, "rank_mass": 745536, "deficit": 3264, "maxchild": 56, "geometry_routes": 1320, "halving_depth": 3, "mutations_rejected": ["slot outside window", "copy outside family", "negative slot offset", "wrong residual width", "duplicate helper", "missing helper", "cross-replica host", "cross-replica data", "wrong hosted coordinate", "helper changed to bank", "wrong call orientation", "duplicate call", "dropped final stage", "wrong idle rank", "omitted bridge", "wrong bridge sign", "omitted terminal exchange", "understated live stock", "missing remainder summary", "wrong residual isometry", "omitted local instruction", "wrong reflected copy rank"]} diff --git a/research/e8-eleven-hosting-selected/evidence/draft-assembly.log b/research/e8-eleven-hosting-selected/evidence/draft-assembly.log new file mode 100644 index 0000000000..ee608c69b0 --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/draft-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY 0.001265848755025708 binding complex gain over #445 0.1966% diff --git a/research/e8-eleven-hosting-selected/evidence/eleven-kernel-screen-first-failure.log b/research/e8-eleven-hosting-selected/evidence/eleven-kernel-screen-first-failure.log new file mode 100644 index 0000000000..5301172d3a --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/eleven-kernel-screen-first-failure.log @@ -0,0 +1,8 @@ +rank138 widths Counter({8: 626, 7: 106, 4: 8}) +rank138 {'lower': '0.001264963576077378514188', 'upper': '0.001264963576077378514189', 'lower_endpoint_residual_upper': '-2.875480767539835571081718228727337621804110483269027000584762030996056E-24', 'upper_endpoint_residual_lower': '5.784170821291645329236105450415928776519175109291695949734503517906767E-25', 'strict_rational_signs': True, 'moment_minus_one_at_current_k_required_rate': ['-0.001965631554361473106301609572550609329705087054587936612065100225750303', '-0.001965631554361473106301609572550609329705087054587936612065100225676119'], 'nominal_k_ceiling_interval': ['0.001263365464781156283335875383949443788201099818183217979492195563283368', '0.001263365464781156283336872858814606523490240182752727874312570542318136']} +rank147 widths Counter({8: 617, 7: 115, 4: 8}) +Traceback (most recent call last): + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/screen_eleven_kernels.py", line 38, in + assert len(slots)==L*w['R'],('not all hosted',len(slots)) + ^^^^^^^^^^^^^^^^^^^^ +AssertionError: ('not all hosted', 8139) diff --git a/research/e8-eleven-hosting-selected/evidence/eleven-kernel-screen.log b/research/e8-eleven-hosting-selected/evidence/eleven-kernel-screen.log new file mode 100644 index 0000000000..9a17269104 --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/eleven-kernel-screen.log @@ -0,0 +1,4 @@ +rank138 widths Counter({8: 626, 7: 106, 4: 8}) +rank138 {'lower': '0.001264963576077378514188', 'upper': '0.001264963576077378514189', 'lower_endpoint_residual_upper': '-2.875480767539835571081718228727337621804110483269027000584762030996056E-24', 'upper_endpoint_residual_lower': '5.784170821291645329236105450415928776519175109291695949734503517906767E-25', 'strict_rational_signs': True, 'moment_minus_one_at_current_k_required_rate': ['-0.001965631554361473106301609572550609329705087054587936612065100225750303', '-0.001965631554361473106301609572550609329705087054587936612065100225676119'], 'nominal_k_ceiling_interval': ['0.001263365464781156283335875383949443788201099818183217979492195563283368', '0.001263365464781156283336872858814606523490240182752727874312570542318136']} +rank147 widths Counter({8: 617, 7: 115, 4: 8}) +rank147 {'lower': '0.001267514693114214441041', 'upper': '0.001267514693114214441042', 'lower_endpoint_residual_upper': '-2.782889730763200527593184403209346195401932589974601157479256446826582E-24', 'upper_endpoint_residual_lower': '6.640877076530205660573601780922367447521464703492231892297175440490870E-25', 'strict_rational_signs': True, 'moment_minus_one_at_current_k_required_rate': ['-0.001970464511653381971522895259680762831293435990600548790093478065563860', '-0.001970464511653381971522895259680762831293435990600548790093478065489676'], 'nominal_k_ceiling_interval': ['0.001265910133419942488379467346913241111194380468906392190363936825991158', '0.001265910133419942488380464816695502737204700300785447909471769059641653']} diff --git a/research/e8-eleven-hosting-selected/evidence/emit-missing-engines.log b/research/e8-eleven-hosting-selected/evidence/emit-missing-engines.log new file mode 100644 index 0000000000..782a7cb54c --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/emit-missing-engines.log @@ -0,0 +1,16 @@ +Traceback (most recent call last): + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/eleven147-screen/code/emit.py", line 18, in + from bank_routes import validate_isometries + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/eleven147-screen/code/bank_routes.py", line 9, in + from tile_m import tile + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/eleven147-screen/code/tile_m.py", line 7, in + from e8core import * + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/eleven147-screen/code/e8core.py", line 12, in + moment = _load('moment'); other = _load('base_two_moment'); outer = _load('outer') + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/eleven147-screen/code/e8core.py", line 11, in _load + m = importlib.util.module_from_spec(s); s.loader.exec_module(m); return m + ~~~~~~~~~~~~~~~~~~~~^^^ + File "", line 759, in exec_module + File "", line 896, in get_code + File "", line 954, in get_data +FileNotFoundError: [Errno 2] No such file or directory: '/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/eleven147-screen/code/engines/moment.py' diff --git a/research/e8-eleven-hosting-selected/evidence/emit-missing-vendor.log b/research/e8-eleven-hosting-selected/evidence/emit-missing-vendor.log new file mode 100644 index 0000000000..6b83f07b23 --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/emit-missing-vendor.log @@ -0,0 +1,6 @@ +Traceback (most recent call last): + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/eleven147-screen/code/emit.py", line 18, in + from bank_routes import validate_isometries + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/eleven147-screen/code/bank_routes.py", line 9, in + from tile_m import tile +ModuleNotFoundError: No module named 'tile_m' diff --git a/research/e8-eleven-hosting-selected/evidence/emit.log b/research/e8-eleven-hosting-selected/evidence/emit.log new file mode 100644 index 0000000000..63a7ed28fb --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/emit.log @@ -0,0 +1 @@ +{"status": "PASS_SOURCE_BOUND_ELEVEN_STAGE_HOSTED_BIT_TEMPLATE", "h": 8, "m": 78, "v": 120, "R": 740, "replicas": 8, "live": 9600, "physical": 9609, "word_sha256": "ee4cda817d5220fdbba1d116556e3dacb3da553ed81af43e74f19365e1393a5c", "source_records_sha256": "f9e0f3cdbc6a4eb5bfaf3fd843731a79c26740a6c4715079f2228e94b8706403", "independent_unbanked_scalar_columns": 9340, "all_scalar_columns_restored": true, "geometry_sha256": "49bc07c36f27dc960c8c14e15b4eec75251dc845209809bc3ef677c8a271a7bc", "template_sha256": "8d3580817dc305ec62d4a9bc2f3ceec6f571be1da91db464a9050b47e9036bbe", "emitted_program_sha256": "4ab6c4a1cecef52521cff258e2722f8755e65f5c9f8d87344ee78a1388bc57ec", "emitted_events": 1740288, "local_invocations": 88, "bank_assignments": 0, "hosted_residuals": 65120, "banks_per_stage": 0, "entrance_rank_total": 147, "residual_bank_slots": false, "padding_calls": 0, "profile": {"1": 223960, "2": 93568, "3": 23528, "4": 34296, "5": 9504, "6": 2000, "7": 5112, "8": 792, "49": 8, "56": 440}, "paid_calls": 393208, "rank_mass": 745536, "deficit": 3264, "maxchild": 56, "halving_depth": 3, "halving_integer_inequality": [474552, 351232], "local_additions": 15446, "bridge_additions": 23040, "copy_erase_episodes": 792, "global_prefix_bits": 153, "charged_prefix_bits": 192, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; idle-data hosting follows conditionally from PR442 plus injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 3.2126199159538373} diff --git a/research/e8-eleven-hosting-selected/evidence/geometry.log b/research/e8-eleven-hosting-selected/evidence/geometry.log new file mode 100644 index 0000000000..0b096e1ca5 --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/geometry.log @@ -0,0 +1,5 @@ +compressed geometry 1 +compressed geometry 31 +compressed geometry 61 +compressed geometry 91 +{"status": "PASS_COMPRESSED_ELEVEN_BIT_GEOMETRY", "h": 8, "m": 78, "stages": 11, "word_sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", "local_window": "U direct_sum E_s, with E_s the first s exterior coordinate 7-blocks", "ambient_form": "I_78/2", "bank_slots": [], "route_checks": 1320, "exact_bit_endpoint_operator_checks": 240, "max_route_factors": 77, "route_denominators": [1, 2, 4], "bad_prime_factors": [2], "missing_route_factor_controls": 120, "bank_free": true, "scope": "All port isometries, stage boundary identities, nested idle ranks, exact bit endpoint operators and coordinate embeddings. No residual banks are used. Full local-word scalar and chronological lowering are checked separately.", "seconds": 2.211304625030607} diff --git a/research/e8-eleven-hosting-selected/evidence/hosted147-full314.log b/research/e8-eleven-hosting-selected/evidence/hosted147-full314.log new file mode 100644 index 0000000000..d4a5aa12c1 --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/hosted147-full314.log @@ -0,0 +1,27 @@ +RUN parent-full +PASS parent-full +RUN kernel-rebuild +PASS kernel-rebuild +RUN export-records +Traceback (most recent call last): + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-reuse-publication/research/e8-hosting-selected-kernel/verify.py", line 37, in + run('export-records',ORIGINAL/'vendor/export_records.py',b/'bit-source-centres.json',b/'records') + ~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-reuse-publication/research/e8-hosting-selected-kernel/verify.py", line 27, in run + assert q.returncode==0,(name,log.read_text()[-3000:]) + ^^^^^^^^^^^^^^^ +AssertionError: ('export-records', '') + +During handling of the above exception, another exception occurred: + +Traceback (most recent call last): + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/early-reuse-publication/research/e8-hosting-selected-kernel/verify.py", line 50, in + (OUT/'FAILURE.json').write_text(json.dumps(dict(error=repr(e),completed=steps),indent=2)+'\n');raise + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/opt/homebrew/Cellar/python@3.14/3.14.8/Frameworks/Python.framework/Versions/3.14/lib/python3.14/pathlib/__init__.py", line 809, in write_text + with self.open(mode='w', encoding=encoding, errors=errors, newline=newline) as f: + ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "/opt/homebrew/Cellar/python@3.14/3.14.8/Frameworks/Python.framework/Versions/3.14/lib/python3.14/pathlib/__init__.py", line 771, in open + return io.open(self, mode, buffering, encoding, errors, newline) + ~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +OSError: [Errno 28] No space left on device: '/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/hosted147-full314/FAILURE.json' diff --git a/research/e8-eleven-hosting-selected/evidence/screen_eleven_kernels.py b/research/e8-eleven-hosting-selected/evidence/screen_eleven_kernels.py new file mode 100644 index 0000000000..0f98229daf --- /dev/null +++ b/research/e8-eleven-hosting-selected/evidence/screen_eleven_kernels.py @@ -0,0 +1,49 @@ +"""Nominate eleven-stage hosting of exact local words; no global claim.""" +from pathlib import Path +import sys,json,math +from collections import Counter +from fractions import Fraction as Q +r=Path.cwd();sys.path.insert(0,str(r/'early-reuse-publication/research/e8-r740-idle-hosting'));import hosting_core as HC +sys.path.insert(0,str(r/'source443-review/code/engines'));import moment as M +out=r/'eleven-kernel-screen';out.mkdir(exist_ok=True) +K=5;L=2*K+1;m=8+7*(L-1);T=8;c=.0012649635760773785 +HC.cost=lambda rank,m:rank*math.expm1(c*math.log(m/rank))/c if rank else 0. +events=[dict(kind='local',stage=0,pair=0)];stage=1 +for j in range(K): + events.append(dict(kind='local',stage=stage,pair=j));stage+=1 + if j 2×56³=351,232. The one-level moment is strictly below one; its +third power is also below one. Floors can only reduce descendant widths. + +The coarse q^(m²+1) enumeration estimate would give complete row coefficient +3×6,085+9,909+252=28,416, exceeding 20,161. We instead count actual orthogonal +cover elements using the following elementary bound, valid for every odd q. + +Diagonalize a nondegenerate symmetric form in dimension d. For a specified +nonzero norm, fixing d−1 coordinates leaves a nonzero-coefficient quadratic in +the last coordinate, with at most two roots. Thus there are at most 2q^(d−1) +choices for a vector of that norm. Its orthogonal complement is nondegenerate. +Successively choosing the images of a diagonal orthogonal basis therefore gives + +``` +|O_m(q)| ≤ ∏(d=1..m) 2q^(d−1) = 2^m q^(m(m−1)/2) < q^(m(m+1)/2), q ≥ 3. +``` + +For m=78 the cover exponent is 3,081. Physical stock is 9,609 families, including +nine private-centre reserves, and 9,609 < 3^9 ≤ q^9. Thus the physical row divisor +is strictly below q^3090. The inherited restored-row argument uses this divisor +once per recursion depth, reusing restored rows for sequential operations; its +statement is preserved verbatim in `proof/INHERITED-ROW-DIVISOR.tex`. Three-level +halving gives complete coefficient + +``` +3×3,090 + 9,909 + 252 = 19,431 < 20,161. +``` + +This changes only the bound on actual stock. Finite routing-time charges still +use the larger m² parameter. No faster group enumeration or new compiler +interface is assumed. `row_bound.py` checks the exponents and strict margins and +rejects false two-level halving and an overflowing row reserve. Its finite checks +support the arithmetic; the induction above proves the bound uniformly in q. +The complex row coefficient remains 15,443. Both fit the retained 20,161 bound, +so the existing outer degree gap 10^6 − (51/25)×20,161 remains unchanged. + +## Finite invoice and exact assembly + +The global prefix bound is 2^24 times six forward and five reflected local +cancellation-free row bounds. It uses 153 bits, charged at 192. All 65,120 helper +routes, 23,040 bridge additions, 792 copy/erase episodes, private centres and +paid children enter the coefficient. Each residual route retains the 144-factor +isometry overcharge plus the two PR442 hosting factors. The three-level envelope +(C+1)^3(E+1)^3 has 513 bits, so the inherited 512-bit cap is explicitly rejected +and the new cutoff charges 1,024 bits. This only increases finite cutoffs. + +Two independent rational moment engines with the inherited bad-branch allowance +certify c=1264963576077378514188/10^24 and bracket its next 10^-24 point. +The full PR442 complex geometry, phases, hosted audit and finite invoice are +freshly rerun through PR444; b=1267453159029119/10^18 is recomputed, not cited. +The six bootstrap levels use the enlarged finite cutoff; all 47 strict outer +inequalities pass. The next 10^-18 grid point and zero-η, zero-β and unit-β +controls are rejected. The result is + +``` +κ = 315841366195289 / 250000000000000000 = 0.001263365464781156. +``` + +All all-size and hosting interfaces listed in the README remain explicit +assumptions. The finite certificate does not discharge those hypotheses. diff --git a/research/e8-eleven-hosting-selected/upstream445/README.md b/research/e8-eleven-hosting-selected/upstream445/README.md new file mode 100644 index 0000000000..ffc20470ae --- /dev/null +++ b/research/e8-eleven-hosting-selected/upstream445/README.md @@ -0,0 +1,49 @@ +# Eleven-stage hosted R740 supplier + +Conditional **κ = 0.001263365464781156**, **1.3877% above PR444**. +The bit saving is `1264963576077378514188 / 10^24`. The freshly rebuilt +PR442 complex supplier remains `1267453159029119 / 10^18`; the bit side binds. + +This uses PR443's unchanged R740 rank138 local word in **eleven compressed +stages**, dimension **78**, and **eight replicas**. PR442 idle-data hosting +places **all 65,120 helper occurrences** on pending idle coordinates. There +are no helper banks or padding children. The emitted template has 88 local +calls, 9,600 live families, 9,609 physical families and rank deficit 3,264. + +The largest child has rank 56, so halving needs three levels. The new finite +invoice charges the 153-bit prefix at 192 bits and the 513-bit three-level +coefficient at 1,024 bits. An elementary orthogonal-cover count gives complete +row coefficient 19,431, within the unchanged 20,161 allowance. The old coarse +matrix-count estimate would not fit; `PROOF.md` proves the sharper bound. + +## Reproduce + +Python 3.11+, SymPy, a C++17 compiler and Boost headers are required: + +```sh +python -m pip install -r research/e8-r740-replica32/parent436/requirements.txt +python -B research/r740-hosted-eleven/verify.py /tmp/r740-eleven-new +``` + +The output directory must not exist. Set `BOOST_INCLUDE` if needed. `--quick` +skips only PR443's inherited exhaustive mutation suite; all new checks and the +full hosted complex reconstruction remain enabled. No optimizer is required. + +The wrapper reconstructs PR444, generates the 78-dimensional geometry and all +88 calls, replays all 9,340 unbanked scalar columns, rejects each of the 24 +missing bridge shears, and independently audits the changed schedule, owners, +idle windows, residual routes and remainder children. It rejects 22 template +mutations and checks the complete renamed instruction digest. Two rational +moment engines, both finite invoices, three-level halving, six bootstrap levels, +47 strict outer inequalities and adjacent-grid/parameter controls must pass. +Source bytes and exact results are frozen by `SOURCE.json`, `MANIFEST.json` +and `EXPECTED.json`. `RECEIPT.json` records each completed run. + +## Scope + +This is a conditional finite certificate. PR442's idle-data hosting extension, +the inherited all-size compiler, correlated dirty-helper, restored-work, +common-grid, precision and analytic interfaces remain assumptions. The new +finite geometry, column identity, stock count and numerical inequalities are +explicitly checked. No unconditional multiplication theorem, κ = 1 result or +new Lean proof is claimed. diff --git a/research/e8-eleven-hosting-selected/upstream445/SOURCE.json b/research/e8-eleven-hosting-selected/upstream445/SOURCE.json new file mode 100644 index 0000000000..1ff86fa334 --- /dev/null +++ b/research/e8-eleven-hosting-selected/upstream445/SOURCE.json @@ -0,0 +1,297 @@ +{ + "upstream443": "5a514e94f156edcc5fd827b87494d962f79d0f6c", + "upstream442": "4e16d001d505d4f21dd2bcfc44591f9be4c279bd", + "packages": { + "e8-r740-replica32": { + "commit": "5a514e94f156edcc5fd827b87494d962f79d0f6c", + "files": { + "PROOF.md": "380a5269e012cb7d54cdf13289b7187aa82c16d23ed1689c5986485398f5cdca", + "EXPECTED.json": "02f3fd3ac40f17f25822fa49d01ae6e84c2e02e2fafbf24f02845f24e02ec931", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "SOURCE.json": "20b4bc7418b62a7126fc476b0e8757f713f09dbe03b430048e9f66326688ea88", + "verify.sh": "3720f542e9cf1ec35b052dec130b9cb6eefa37798f73ba5a4026b400c78d0697", + "README.md": "86030e96e06e0df02cc775ed1e41122854bc8dba2d1f90eb30b646436028ae5f", + "MANIFEST.json": "11f8fc7eb52127b078c1d29029ba71a2e1bd3340e9f4d76c92fae1e22511d550", + "NOTICE.md": "cb5bb6520addd9517672136c5519df4a2c06ed17b8afa1ce24e63855689c114d", + "parent436/MANIFEST.sha256": "7c6d4bd2ac74710d8a8a68fd637b31df9028a2376b569732374a739092c34310", + "parent436/EXPECTED.json": "a9655e303cb2c40ce024443b27c0a810ffc24f1ee1e5b07eb19241fad399b5e2", + "parent436/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "parent436/requirements.txt": "b9f87c1ec529679c19b8421a7a69b377b54b89949cfc5e1b1ed8c134bfab8917", + "parent436/SOURCE-pr381.json": "c457c422d54645ad841c8528bf2efa6c253d1c134ee86c875b9b7d76d4f9520c", + "parent436/SOURCE-pr417.json": "d9b7e606f09b840ed9fe10dc8c8250b4cab9bbe5d0cacb62864ca8366a28b2b1", + "parent436/SOURCE-pr426.json": "f884cc42793a3afd249ebee20985f61422e7b5baf7c1fcab5b990e1959f31697", + "parent436/SOURCE-pr386.json": "bba849ed0a1af4d45a76ec734d5f0d07806da2b161f1b5ad8ea63cf2d64b5aa4", + "parent436/verify.sh": "19bf483b109163b0ccc941f459e70c2e37d20c9c04e69e7c8eb98f329577b26c", + "parent436/SOURCE-pr431.json": "71cd86e64217fc4db0199ae8e5ef65cb0cc2ed593e15f03bc1501d4b32fdeb66", + "parent436/README.md": "d737a3b77de97bdf67d2a140465be5b8886af6aa57516f78ad8f2839f3dae8cc", + "parent436/SOURCE-pr370.json": "352a68f0898535311c63cac879a52b686246ba80844f1a3cc2f3c3f6b1046b4d", + "parent436/SOURCE-pr425.json": "a2c5e2f0e03b0dbcba4ca18282a4ff390a6a395f14411410cfff42d5281d0289", + "parent436/SOURCE-pr433.json": "f1181aa9f30dcc2e5df7e94738fa0c0cabe5f56b31c8eb843fa0a257da79ed91", + "parent436/SOURCE-pr376.json": "1608c15638f874243c3ad00bd6a08b30f0e9608de83002273819365ab300b0e7", + "parent436/NOTICE.md": "eb9cb7eab03977930484fee70d0aea066803917a6304b1ad2644cfcc6bf2acd4", + "code/iface386.py": "1b7c998513759195dee3e82a34c1a46dc3310236530a7f1dfbeefe00f108fc4f", + "code/config.py": "283d7fad45155ee91e704d63ec947cf4a60aeff5cc43510bc0e835f7da7d8767", + "code/global_kernel.py": "01cf4be0ab9affe48598062c4ae3610882aa77a9e18e75c4e596e2f08d8b2173", + "code/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "code/replica_kernel.py": "780e08ad63983d0256271e8c7803c74bb1623d15cc202d98177c440ff3726aad", + "code/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "code/bank_routes.py": "7c6997c455bd55acca3a1603797c34e7733d557c27a7694a1429ff15773a505d", + "code/audit_kernel.py": "e49f9b499f98dc2938b10e32db28da3e4f38291dc345c0b5e7b906ca2b0cfb9c", + "code/export249.py": "6d9817f7c431573aff695e1eacfa7c2ca6d3a2a10baa3a2ea814ab9b9f7b13ab", + "code/compose_kernel.py": "010e081821f20bcf6e097306289031804b2609e5160dba1c743272126ef7472a", + "code/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "code/rebuild.py": "3efb6c81a247ac6d5cab87c47030a332292c2c46d482ff996588858f41cdad4d", + "data/word.json.gz": "d8d6d3d3f336720302bc40b3c1504fe3c3583a7a8d707bb9bd7b21f85e5e69c6", + "data/residual-isometries.json": "e12ed7ddd13cee101ba74a083b54665fd64d0b122b0bad5b83d817dcc8bae9d8", + "data/post-retiming.json": "d25a636bcebf97b46b01cd39259e8c4f59ab92a188f4cb4bd0b0b34936cf3b56", + "data/selection.json": "1a96e47f1889bc690316f95a3858b0062ce212ea876dd15e5123ed89d09a9c39", + "data/retiming.json": "f2b041a33577eebbf47f740ae1d7b94a68f2424de39df0c4ef075fad055c0793", + "data/upstream441/window-retime-selection.json": "170a2190b6bae36de3a18a8b4c1a152cebd95b839ae889da3049f9d9b0109e30", + "data/upstream441/pair-retime-selection.json": "201d8cbc8ac1df10ee74246815f3ce8507b94395af69835e8098a8274bca5651", + "code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "parent436/discovery/README.md": "d840952ed60b4b460da83b04c4c8be3622b9bef04b62961c0d496c445f8b84d1", + "parent436/discovery/search_params.py": "57de04a8ea7e2df8b783e02c454bb102edab48206db0a41a1f28d50e7f164441", + "parent436/code/provenance.py": "e28fd87d0e34a6f6f6f1fddb6c4891deac220662c954de855d7aa5a7f9cceca4", + "parent436/data/complex-b-433.json": "161663bf22c8e6a62e2dce194b326016c11e551f31691140ef34355e9b2e4e92", + "parent436/data/complex-b-b4.json": "1bdd6a649615ddb6bf7cdf24abd7bb1bbd6cc9284e2aa44f796786310d3e1a3b", + "parent436/data/complex-b-nine.json": "2815ca568c88edde758c31e756d0d07aa08233243f365bc111383d7f0c1c757a", + "parent436/data/bit/bitE8-r740.json.gz": "f8daa4982d865748fa9a3095b2cf4290f34e2c085d6d35673fd7171cab95623c", + "parent436/data/bit/reuse-ledger.json": "e7bb324150a5342076c9a268f69b83c65f817a7cfc1d14fda9558a9f7e486f0b", + "parent436/data/bit/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "parent436/data/controls/pr426-bit-candidate.json.gz": "bd3b84244528767b85d8d7fe423b155630b5c659e21e51563674b1dcb6305ad7", + "parent436/data/controls/pr417-bitE8-nine-kernel.json.gz": "acc2b138ce16be1ff12570d3ec1634fe28cccaf259de797be0f62628fb37cccb", + "parent436/data/controls/LICENSE-pr426": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "parent436/data/params/params-r740.json": "871fc75ce6fea2638f68553bcfe771d09297e987d59c123338227e29415851d1", + "parent436/data/controls/pr386/COMBINED.json": "6043a7486790ac8ca04dc67ddf5b57076e7c880b66eb456127c6cd933c77764a", + "parent436/data/controls/pr386/AUDIT.json": "59625785de14c3df03abe009cdc67c7918b8fcfa8dc5f468c3d363af0494cbb7", + "parent436/data/controls/pr386/GLOBAL.json": "55af2a11552c04f5a87268bc2d1798246297874e9e87b50e49773e91cc495c2d", + "parent436/data/controls/pr433/CERTIFICATE.json": "f71580f22193726fb582eae604807ff70a7302265e001d9484a718e63bbe14c4", + "parent436/data/controls/pr376/LICENSE-pr376": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "parent436/data/controls/pr376/reuse-selection.json": "0b300bab47cf0d69cbc7965bf01c2a27c96b97677ee651334470d8c968b603f1", + "parent436/data/controls/pr376/frame-selection.json": "a83d4880579fb1f8cffb701d1d685c157b7fa14ef9d6642e42ff1e4f5a1b8c5c", + "parent436/data/controls/pr431/VALIDATION-LOCAL.json": "2b77c882ac524adbbacc9775ee172c854ecd4027e36db59ed15a7d1b6b9e1ce5", + "parent436/data/controls/pr425/FINAL.json": "46ea33ad1979cd14a2b686e8742792739312a07ab72945517c3809b647b31c42", + "parent436/code/reuse/controls.py": "89df84f78064de12cd11f0f5f63aa9cad2385f5d18d2e4ade7409a5ae0435721", + "parent436/code/reuse/ecost.py": "901c61f0a8082fc87012f91372aafbb2a1b464be685426e32e77cc9f0e393958", + "parent436/code/reuse/reuse.py": "b802483c024d23c92df30f1a2d93838280e39dfa0bd7129b879d6cc0b84c80a4", + "parent436/code/reuse/regen.py": "972740a54e487b12aebc09f2fab5f2878835727cb4ad82fb1aa26a0f2d34f517", + "parent436/code/reuse/retime.py": "d8530464a6e00e0a509cf8b392cae70579c8d0f636a0dc86677f5dee0863d34d", + "parent436/code/bit/mutate_records.py": "b0e75d6550412a7be4017695e6b237392b611bb852ad8ff309d6682c9f166a4e", + "parent436/code/bit/receipts_k.py": "67f714e10a846e9cc62996342f825cd715055031e0b12591abdafd225717e195", + "parent436/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "parent436/code/b4/kappa_b4.py": "cc47efc71334d7d41d6475c5dfc8080a278d3b694b335c6a9873dad4632d1f7e", + "parent436/code/nine/compose433.py": "27dd61574f1f6921238ff9f57c6fd536e6f0a0983138bc5c99aeb141d3ccc195", + "parent436/code/nine/certify_g.py": "97a5f7e9bf2202d170da17d5d17d876903641d7d24433115c27ea95b9fe65ccd", + "parent436/code/nine/audit_g.py": "48ac1d66a406ed72dd9192a19118776ba253f5c90e96185f5c1b98bb670a6361", + "parent436/code/nine/regress386.py": "bf97418a9aec7c3f55d04d4754e626f17f44aa2059ffd8acd7b315dcf9e89110", + "parent436/code/nine/global_word_g.py": "ff8d6be2432b79584dc2f2d2bdcd3cefede0d0730d1eecb0a6859dd527f5fce4", + "parent436/code/nine/geometry.py": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca", + "parent436/code/nine/cited.py": "b6722d990fba39ef41b3d658326bdde97c25b749a454bda2509fdffeabd31a86", + "parent436/code/tail/bootstrap.py": "6811203fb7df1ac8a9eee3fbeca722de98dbc99077921fe77e0d452c760f0ffc", + "parent436/code/tail/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "parent436/code/tail/apply376.py": "ac49a9a7da44a1e8fbf468c6d8901b5712705d3caa9dd3e0cb89f056f0e67b2a", + "parent436/code/pricing/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "parent436/code/pricing/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "parent436/code/pricing/prime_witnesses.py": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "parent436/code/pricing/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "parent436/code/tail/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "parent436/code/tail/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "parent436/code/tail/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "parent436/code/complex/code/bridged.py": "5fe7174cd3a6580a74e4c1bf8fa7b426e8673f1c285603bf3076d4e758d70731", + "parent436/code/bit/producer/e8lib.py": "4f8a6843e83bc4f7055d7337f33dbe12ce499051f46bee1b81bbf6b34c652574", + "parent436/code/bit/producer/ham1.py": "359040fb432fd392472af6b8f5dca0234dd6c2be744a791df27ba62bc5da5175", + "parent436/code/bit/producer/params-r865.json": "1256c54debe0a551da8e24896ab73ef0bd4a5233ff8e6fedf21a9e6301d6e6f3", + "parent436/code/bit/producer/compile2.py": "0e23d4282ceb75768e82631da016aaff9818aec53c7d75a6b2a28ee1b1160dc3", + "parent436/code/bit/producer/frames.py": "ba71f77dd3e3c1c54f361c066cebe9faadbc78db46376046e7af625bf1de8c24", + "parent436/code/bit/producer/compile.py": "60fea6a9d6617a3f87376d3fda040642e9cb70e7c179015e03ede8d289f30357", + "parent436/code/bit/producer/fullword.py": "0daf87599e9e48646b985ad87351c56c1b73cfc99cdf9eca081483846ddbfa90", + "parent436/code/bit/producer/price.py": "46c858e60ba0a117bf8227b864abf55e85ebee2d56a0dce64472b706499ac405", + "parent436/code/bit/producer/ham2.py": "fdf0af785ce697bd7f80b4e75f7163735f3b599d9dc42f652f0ffdbdf18ea8bf", + "parent436/code/bit/checkers/gram_frames.py": "223a5a07731fc315a90a3e48177796babc155c1d9985c7ae5017eff6af2a0608", + "parent436/code/bit/checkers/tile_k.py": "64255088821f601ede2c3006f08cb97c39a4fa10dbbeb93a8a71fcfa0e1d8d77", + "parent436/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "parent436/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "parent436/code/bit/checkers/finite_k.py": "7e67dc75e63a11e38ac6d6615656c7cf6982e5a33dd404d04b967bf474cad02e", + "parent436/code/bit/checkers/certify_bit_k.py": "e68a81ef7981a90d613752003cd5cab5351e260f909b094f1668d8a4dfe480df", + "parent436/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "parent436/code/bit/checkers/columns_h.cpp": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "parent436/code/bit/checkers/cost.py": "d55d2b865d1c3d35e343e1a38c592b9172ed8e2596d1107e34d92e2a80c7d03f", + "parent436/code/bit/checkers/geometry_k.py": "646b7e8773d9c99376cb00627f109a97319e6d72b439ff513c39035c28c3f70f", + "parent436/code/bit/independent/mutate.py": "0ff65aace5da4b57d96235bf830f8f11969322e75134d498aeb70e9753ec6b0d", + "parent436/code/bit/independent/checkword.py": "11bf9620ca9db16d52d9fe806b814fc9ec9a89c4d7645354d1861d96f6e805ad", + "parent436/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "parent436/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99" + } + }, + "idle-axis-hosting": { + "commit": "4e16d001d505d4f21dd2bcfc44591f9be4c279bd", + "files": { + "PROOF.md": "cfe34bf0b64259661312dae22c3a23adc5bf6f6326951eee5c1488ccfc347542", + "audit.py": "38594423a401110bd430b734037c6ecba422ee6a94d71709984e0afa9cd1edf8", + "EXPECTED.json": "ed83c1bf1ca2d01eaab5149a34520806a07ef375dfa9e3ed69d123f4be4c9960", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "complex_hosted.py": "829c5c4f4bdfccedadd31505f1f0a394f7a208d1446b7bbf9cc92d3aa1530c0c", + "bit_hosted.py": "6dfbf26213e8adf87563b3575cfb722bd07ecd65627f056b3293411dd3d89a61", + "assemble.py": "f9a2e6a42aadcf971702a5a867760a092566ed03356f4f34387d38f4093ad1a6", + "README.md": "1151f74cad54ac4937282b7a8b5d1108ed4ce35944ef9b7bb7d17abfce1fe4a0", + "hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "MANIFEST.json": "f68b82604363329618529313ac9c3796dc1e88b176eaee4a7b0dec9be428e987", + "SELECTION.json": "315d54be472842707cce879618be477d8b897050e873bc136d114eec6a232f97", + "verify.py": "737a974d79fdd232b6c4b9e059c56835079971447342ed7ca3b82a614e30cb53", + "NOTICE.md": "027a868628d0408602dbeae688b031ed9b4abfd6e5401f6e8106a3eb25ebc4ca" + } + }, + "e8-early-reset-kernel": { + "commit": "4e16d001d505d4f21dd2bcfc44591f9be4c279bd", + "files": { + "PROOF.md": "fb4e1c3a23e3a0be48b5254133e584dad6fb523042ca8ef70358684fb9185962", + "EXPECTED.json": "6710a99055d7ee1d83d9f811822bb72db84f6ce95bd4e1e17f1df1659c7e958b", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "SOURCE.json": "a5e84250b687624b2158597831fb36a5f2b068983862c491f8e1020c9806cc65", + "bit_global.py": "79c7dc84e65dca10c35c842cf170e4719d45c38a25d03bf762332b24c700b6c9", + "bit_audit.py": "203bb609952ad7b7ca761e9f9883ee9fa35a0a0474503b396d47a31169102e7d", + "README.md": "4d7d736eda667533ab55bf3949e30832d4676d7ebeee00d9608307ecc5aacd4b", + "VALIDATION.json": "77ad775cf69f5d913568b6276b0dfeb2eaef0306f57b71c0a467bff793807267", + "MANIFEST.json": "95a9570287b64d22de30e6ae3acf931d5f6daef1a163f0c99532e1a24639fbc2", + "SELECTION.json": "b5f5d8c78d912820c8ed1a67c21062bec799714b9caa6724dfd515306ad42a2b", + "bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "verify.py": "16c07414bc956744dc93b8e35b642267ea9819be922b0d3e081c543fdbf92a70", + "NOTICE.md": "ff88b6031fe2fb5cbc483e8fcc08d228eaf2c982221adb3659da234dfa24cfeb", + "combined.py": "4d514b6c70e969ec306d8c2bb38edec95b0cb7fa09f48dadbec8aa1eead69ce1", + "source_span.py": "4772d177f37254c6f854af5ee3871aca193cfb24307a53c143c3bf517e56631e", + "apply.py": "0d530e9703e1d1734c7af205bd393cba89ac41f75ed9781ea3dc5e46650f44f5", + "local-evidence/ASSEMBLY.json": "7c3cc4b503e4cf0fd3e050be46ad0da183c5b1c490f4901245df944fd9d6194e", + "local-evidence/SOURCE-SPANS.log": "bdf95dbce8337be57aab8a3d3b42a711ee276496c40cbb4c5356fc9cc9b2e811", + "local-evidence/AUDIT.json": "76a146a9123d8b653e6e46ff93f153653f9cefd0f5c3fdd264a59f1322110262", + "local-evidence/FULL-PYTHON314.json": "85797531db037d06fb597a4c9b6ef6bd71e6a0ab4f220ae70b1b6bf3aeda205f", + "local-evidence/GLOBAL.json": "16c4e829eea1b2d12b70cec7e6a9c0e33ea0eae98a40894a3b779790fd2efbb3", + "local-evidence/BIT-PRICE.json": "9a4a320cab1ce62b0c2329ac1bf3b81f73580fd603a406e4bfaae2962dfdad35", + "local-evidence/FULL-PYTHON311.json": "62b37525bf7b60c0d9101ed571681f3bf46ea75df065939864307e4986018332", + "vendor/kernel417/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/kernel417/e8core.py": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29", + "vendor/kernel417/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "vendor/kernel417/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/kernel417/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/kernel417/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + } + }, + "e8-early-reset-reuse": { + "commit": "4e16d001d505d4f21dd2bcfc44591f9be4c279bd", + "files": { + "PROOF.md": "09388e2f9e6b8fcc626a5172d55c45a957835075c51c68d1e86fd42ff4655ae8", + "EXPECTED.json": "5521c7e995fec77941243b28e090f95f2188f193d5f61275275cfa11215eecc0", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "SOURCE.json": "c52287239c43aece2b3533ef48ee204d845d652066bca716c288b0c47e779521", + "bit_global.py": "9c2178df133dc663416aac13d8c8da80a9e4f5f7174bb36413180fcbad994ffb", + "bit_audit.py": "219eb4dd8e5380fb0432daa6a30c265755a78834616b2c5fc7aa161feb0231ee", + "README.md": "442bf686c0b24b9d7781b7b138f32fddea5d4efffeddc6e41d04719d2545e0cd", + "replay.py": "e0782ba05dda36323500390349d1180f6117a9c6112b09b9e21e29f67c4e5f5f", + "VALIDATION.json": "bcb864a6b73d4ff4a24ab70ad51287653723c2115ce1c81db7817b81df2d9e92", + "MANIFEST.json": "4d23bafa43634a59e25f875333408b67cbecb1c912929824b5d45dea4de51da7", + "SELECTION.json": "9d47ade3fb69b3ef62a1a3ae75cebdddd57d144923977c5f2a07848ab596ea32", + "bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "verify.py": "4e2082878acc1298f4354325b28f3cf047006170a9883148e7cf23002f6f02f1", + "NOTICE.md": "c4085541471fe63d8f735beacd397d356446376ad3e56b2673940a2df3b8437e", + "combined.py": "dc621dce9ac1634a2701318311b30dffee7cce7e0c6be7ae808f44b27eb17f0f", + "local-evidence/PYTHON311-GZIP-FAILURE.log": "ec1937c575536aeebe8f9c22d673fd66d1355ff870e2fdc80346205b29e42784", + "local-evidence/ASSEMBLY.json": "c9ce28f59a5e460d39a888bbbc464e3fd6dd1c0b2c54ae86baeeea99febc8176", + "local-evidence/FULL-PORTABLE-PYTHON311.json": "1dcca855b20cbac311a435f23f60001c342083edbef3194ba42a30e1f24c1982", + "local-evidence/PYTHON311-INITIAL-FAILURE.json": "7902e8ca1e167b98d1c29170f8d57c9896b38ccab89065e4ed4e2c3feea79076", + "local-evidence/BIT-AUDIT.json": "2e458c3936e42539095610a50c730266dddd96e94d1ead171a99dd5f1fe9ef47", + "local-evidence/BIT-GLOBAL.json": "39f89d1e5bf51e9b1f1155e123dc3226627e465a246d37bb00f55d44d20bcaa0", + "local-evidence/FULL-PYTHON314-INITIAL.json": "0966528d4b30459d8b35296f31dbadfa34cdc7792419b34ab2505b7098923325", + "local-evidence/FULL-PORTABLE-PYTHON314.json": "5687ed9209e11e64304d008a4a10678dc07cdc3522f5112c9a80557d45125c4a", + "local-evidence/BIT-PRICE.json": "96ec606146b5157871048e28f6649c31c1b6117d43be732e6a96bcc269c0e1b6", + "local-evidence/PARENT-FULL-REPLAY.json": "0ba447d6de6edd9fbe2371c36e3605dffa0c6526a874cfcb9bd19285c056bf1e", + "local-evidence/FAILED-LATE-RESET.json": "f6ed36b59de745d50f37fcb4c80d129d9a2de0dfe1fe3de2d18e678135f7d9b6", + "local-evidence/FAILED-INLINING.json": "95cbb0e6df953d25a888198c1072edf03db85b7c967a234680db3e095abd2dc7" + } + }, + "split-centres-global": { + "commit": "4e16d001d505d4f21dd2bcfc44591f9be4c279bd", + "files": { + "SOURCES.json": "11aa666d678fed084b01d1e8e47239e1674eaedbc6fe0cee7edb2753477af9be", + "PROOF.md": "6983e75f29af6eeaab20a30b08307ec6fab75ccb8b10291df8f9eb04d497f894", + "EXPECTED.json": "9b8e56eee3d5bdabd2e3e6e4ba0d9eba537525fba25a54126f9f0e41d2491a06", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "README.md": "b432292594adf2fcba2a8ddd87eda6167c76ff055e85aa5e3e2af7dd7e0f976e", + "CERTIFICATE.json": "f71580f22193726fb582eae604807ff70a7302265e001d9484a718e63bbe14c4", + "VALIDATION.json": "656d9bd7bd66058fdeb60cc90bd887e7ce75c0e0f9a100514e2bd84b95de89b6", + ".gitattributes": "2f9541c7c27f084baad73b4cd50ddaeb264cc3aa8dbf13ec21df5ab3f673ca7e", + "MANIFEST.json": "3129eb4321f706542470f8443f66a6b4351a12a9ceec85e7f76aa19db1e1e32f", + "verify.py": "12fcdb20a87f75812b09c4916fbfc86305982cb410247186a123b5c58d517b4c", + "NOTICE.md": "66101a9e74d0ba9c2da4c8802bcb1968534adfa7130b954628eb8bf515fc0389", + "proofs/PR386-BIT-GEOMETRY.txt": "c5f077b849e9add9957ab4ee36095dd47bc678dee7e09baa146dac4c0a0d66b2", + "proofs/INHERITED-COMPLEX-GEOMETRY.txt": "c1ff55536594222a8d2a30bc0e0956959774e1be2d5420b7838ad553ee556df2", + "proofs/PR426.md": "5787738ceb6faf14d3d96e8452592860a6c6a469733a9bcf196e8d1562ba1ffb", + "proofs/PR425-COMPLEX.txt": "2cda27b9b9a1eb24127c38c2c7a6e085155a2472183e220189a3ea2c2b7720dc", + "code/complex_emit.py": "f56d5f01f7c121741f175814138dca7190d769920f0a27e2d5b99c21aebed0f1", + "code/complex_phases_full.py": "0f2795aaffafe0c64d77f3748ef2109a3c42c58da867e4cf269a0a8cb6109466", + "code/bit_global.py": "3b2cb3ba21e5cf9b4deddb9e606322f33e9d8082020c0ee9092c21f4ebd9ad48", + "code/bit_audit.py": "7fdbc077b7501a53662769ff2bf2ab44cc2e32dafc34478d7ef2c10e3144503a", + "code/complex_construct.py": "0f7f45b2333ec7daf4291e2bf675b49bc330b97fb5965dd27220ba353c291d6f", + "code/bit_construct.py": "a461e6c983531beb5c8ac82ff593f39ce4e056387d1d6061f6e6b294dde4395f", + "code/complex_audit.py": "adeba5ea113652b60105db2e8719b18ffa292d3cc23730cca614b40272348330", + "code/bit_price.py": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee", + "code/complex_integrate.py": "3792f41e409383e6989bda22801a4836a646a530f99e99bbd7244a8f3a1a8b4f", + "code/complex_phases.py": "13a959c52092776ae217df554b51c0298fa9eb3a350279acff6dece651c3f9cc", + "code/combined.py": "9c5bc70f2331b7342ceb252adcddb993581c45f80c37bcc58642dbad3b9775c2", + "code/complex_replay.py": "be2dccce2d1ad2c4f5c01a851c9c3896cc88236b5aeae706aad2ab16d6bfdad9", + "notices/PR426.md": "6a5593d0f284a2f0865037f5c5fa9e5f76f9e12cf50ec5284486d3b8137c89da", + "notices/PR426-SOURCE-PINS.json": "18ace817f2f9af22511bb303e99656ed114e534b87f3dd95a65ca4ca670baf2f", + "notices/NOTICE-PR352.md": "967e6d7e76e216e4898cf543c75b527e8d397ec1ddba3800cb20701f24c89524", + "notices/PR386.txt": "ae2241615a23063b18a04f1b7a88a52e62b3d7d42e333fbd21e3668567ab83d1", + "notices/SUSSMAN-NOTICE": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81", + "notices/NOTICE.md": "025773f32fb43667395e64c627a1752877bdc93afbfe01b106703eee438d21d3", + "vendor/clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "vendor/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "vendor/hamming_packets.py": "daa9301e2767a711cfe66c6bebaad68e1a3bdb97ec9e848c927527ab43b37ae5", + "inputs/bit-geometry.json.gz": "5c980202227859e8bb9b863f94503930c2a59d460c0421356688e2b0d828b4a1", + "inputs/complex-template.json.gz": "1b84904a31a733aab9bfdda3f528c06719f590d2133a43687a8bded955dc991e", + "inputs/e8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "inputs/complex-phase-receipt.json": "01763fee5017745de982f2ff5ee68004e815d6684097cc88011dfbfb1e789581", + "inputs/bit-r767.json.gz": "bd3b84244528767b85d8d7fe423b155630b5c659e21e51563674b1dcb6305ad7", + "inputs/complex-ports.json.gz": "77b0c0fa19ef3da1c7316010e13493aa5eea1a50c3506eddc08f7480e659878b", + "inputs/complex-phase-recipes.json.gz": "b5472bb1d3f9ff41b0819780a42886a7686b4caf3c0617bb1dc86158b3fb8671", + "inputs/complex-data-phases.json.gz": "c972b5b60649c2a52354f5160f69adc0f4a270fa09d32012beff9888774ab84f", + "vendor/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + } + }, + "r740-idle-hosted-replicas": { + "commit": "8c4242ea61c67827fe62b07b2edc093d7ddfa631", + "files": { + "PROOF.md": "8757a118f5521c46b9d271a91acdee6cd517dc0082cfeba8d638161df5b7ff9b", + "EXPECTED.json": "b1bfb2e2be69bd56efcc8436cca367dd9647b3144547a1b4eee4066ce46d0763", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "SOURCE.json": "a7b3296796d1803eca966f3adf3bc99da5a53b60c321c077663f72687bb3afeb", + "README.md": "76b018c2aaf43934f84a0db641a13552023ede87cb3cbfe2388078e9d3fa6e27", + "MANIFEST.json": "bf48d4222cef9988f1051562df890c48d5c6f5c694efe9eb15c36b3197130515", + "verify.py": "357aaa68588b79f0fed00efb221fef2ce48ea2399752d1101c74ca6e9de85fa2", + "NOTICE.md": "15f8199a97de6c409e08aac13471307f10575c8590cd881f6423d4013788d6be", + "code/audit.py": "e770305d5b23967bf0fcd3757c9b04587b28931ae1ed30e9bc9e6f53d5e86218", + "code/assemble.py": "47df60e607f72c7b247f9ed7b6be30ca457a92003ac36ead76d6802561f3527d", + "code/emit.py": "29d8a75b4bb934485090688287ef7f26e5e29796bdc3fe162ed9c0b9badfa3fe", + "data/selection.json": "8510b140456e244be5d5f197372d97fd03c634967db487745b7f4be0a5bf83d1" + } + } + }, + "parent444": "8c4242ea61c67827fe62b07b2edc093d7ddfa631", + "inherited_row_proof": { + "INHERITED-ROW-DIVISOR.tex": { + "repository_path": "research/five-stage-source527-banks/proof/three-stage-cover-rows.tex", + "snapshot_commit": "8c4242ea61c67827fe62b07b2edc093d7ddfa631", + "sha256": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8", + "git_blob": "590da4b892a08b9d5182fb3d8a983c6239dd27db" + }, + "UPSTREAM-PR234-NOTICE.md": { + "repository_path": "research/five-stage-source527-banks/UPSTREAM-PR234-NOTICE.md", + "snapshot_commit": "8c4242ea61c67827fe62b07b2edc093d7ddfa631", + "sha256": "ce978c8dfc8a2b36eed7a53014b1a792248b22ef4cee3edd8adab825a571c429", + "git_blob": "5f8fbb25c12781420284bc220a041592619e27c0" + } + } +} diff --git a/research/e8-eleven-hosting-selected/upstream445/code/assemble.py b/research/e8-eleven-hosting-selected/upstream445/code/assemble.py new file mode 100644 index 0000000000..870b027ffa --- /dev/null +++ b/research/e8-eleven-hosting-selected/upstream445/code/assemble.py @@ -0,0 +1,94 @@ +# Adapted from DaysSky PR442 with Claude assistance; Eleven-stage R740 integration by chafreaky with OpenAI Codex. Apache-2.0. +"""Two exact moments for both hosted suppliers, fresh finite invoices with the hosted stock, and the strict outer +assembly of #434 (six bootstrap levels, 47 inequalities, next-grid and parameter controls). +usage: assemble.py VERIFIED444_DIR BIT_DIR""" +import gzip, hashlib, importlib.util, json, math, sys +from fractions import Fraction as Q +from pathlib import Path +parent444, bd = map(Path, sys.argv[1:3]) +upstream=parent444/"upstream442" +ap=bd/"AUDIT.json";outp=bd/"RESULT.json" +from row_bound import bound as row_bound, controls as row_controls +par=upstream / "parent/changed" +cd=upstream / "complex" +def load(name): + sp = importlib.util.spec_from_file_location('hosted_' + name, par / 'work/pr361/code/engines' / (name + '.py')) + mod = importlib.util.module_from_spec(sp); sp.loader.exec_module(mod); return mod +M, Other, Outer = load('moment'), load('base_two_moment'), load('outer') +audit = json.loads(ap.read_text()); ua=json.loads((upstream/'AUDIT.json').read_text()); ur=json.loads((upstream/'RESULT.json').read_text()); bg = json.loads((bd / 'GLOBAL.json').read_text()); ch = json.loads((cd / 'HOSTED.json').read_text()) +assert audit['template_sha256'] == bg['template_sha256'] and ua['complex_template_sha256'] == ch['template_sha256'] +assert json.loads((upstream/'RECEIPT.json').read_text())['status']=='PASS_FULL_IDLE_AXIS_HOSTING_COMPOSITION' +# ---------------- bit: two moments and the parent's invoice formulas with the hosted stock +P = {int(r): n for r, n in audit['profile'].items()}; m, W = 78, audit['live']; E = sum(P.values()) +geo = json.loads((bd / 'GEOMETRY.json').read_text());pg=bg +T, L, R, V, K = 8, 11, 740, 120, 5 +assert pg["replicas"]==T and pg["R"]==R +mass = sum(r * z for r, z in P.items()); assert m * W - mass == (2*K*V-L*72)*T +physical = W + 9; d = m * m; N = 2 * m +unit = L * T * pg['local_additions'] + pg['bridge_additions'] +J = 8 * T * L * (2 * V + R) + 8 * (2 * K * V * T) + 2 * L * T * R + 2 * pg['copy_erase_episodes'] # every helper route charged (bank or hosted) +high = 16 * (d + 1) ** 2; good = 8 * m * m + 8; compiler = 128 * N ** 3 +selectors = 2 * L * T * ((W - 1) + R * m * (geo['max_route_factors'] + 144 + 2 + (m - 1) + m)) # 144: residual isometry; +2: hosted slot permutation and idle basis U_q +prefix = int(pg['global_prefix_bound']); charged_prefix = 64 * ((prefix.bit_length() + 63) // 64) +assert 1<<128 <= prefix < 1< 1 +# ---------------- complex: two moments and the parent's invoice with the hosted stock +PC = {int(r): n for r, n in ua['complex_profile'].items()}; mc, WC = 73, ua['complex_live']; EC = sum(PC.values()) +massc = sum(r * z for r, z in PC.items()); assert mc * WC - massc == 2496 +rc = M.certify(PC, mc, WC, True); b = Q(int(Q(rc['lower']) * 10 ** 18), 10 ** 18) +assert b==Q(ur['complex_lower']) +fbc = 32 * mc * mc * EC +l3, h3 = Other.moment(mc, WC, list(PC.items()), b); b3, bh3 = Other.moment(mc, WC, [(1, fbc)], b); assert h3 + bh3 / 10 ** 16 < 1 +integ = json.loads((par / 'split-centres/INTEGRATION.json').read_text()); inv = integ['finite_invoice'] +physc = ch['physical']; Rc = 560; v = 120 +compilerc = 64 * (mc + 1) ** 3 +pervertex = inv['pervertex'] - integ['physical'] * (64 + 1) + physc * (64 + 1) - integ['live'] + WC # stock-dependent terms re-based +r_ = mc // 2; group = 2 ** (r_ * r_) * math.prod(2 ** (2 * i) - 1 for i in range(1, r_ + 1)); stock = group * physc +smass = group * massc; logical = group * max(pervertex, inv['pervertex']) + 64; router = compilerc * (logical + 1) * (stock + 1) ** 2 +GG, EE, C0 = 1 << 30000, 1 << 100000, 1 << 210000; BB = smass + EE +literal = 2 * GG * stock ** 2 + 8 * smass + 4 * stock + 4 + 32 * mc +assert logical < 1 << 6050 and router < GG and literal < EE and BB < 1 << 100001 and 32 * mc * BB * BB < C0 and 2 * BB + 18 < C0 +depth = 2; assert mc ** depth > 2 * max(PC) ** depth +rowc = depth * stock.bit_length() + 9909 + 252; assert rowc < 20161 +# ---------------- outer assembly exactly as #434's combined.py +eta = beta = Q(1, 10 ** 18); grid = Q(1, 10 ** 18); s = min(c, (1 - beta) * b) - Q(1, 10 ** 24) +assert 0 < s < c and s < (1 - beta) * b +chain = [Q(384599, 10 ** 10)]; cutoffs = [] +def ceil(x): return -((-x.numerator) // x.denominator) +for j 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 old < a < s < 1 - a and gap > 0 + cutoff = max(ceil(36 / gap ** 2), ceil(2 * (4 + charged_two) / gap)); assert cutoff * gap ** 2 >= 36 and cutoff * gap >= 2 * (4 + charged_two) + 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) +parent_k = Q(json.loads((parent444/'RESULT.json').read_text())['kappa']) +assert json.loads((parent444/'RECEIPT.json').read_text())['status']=='PASS_R740_REPLICATED_HOSTING' +res = dict(status='PASS_CONDITIONAL_ELEVEN_STAGE_HOSTING_ASSEMBLY', kappa=str(k), kappa_decimal=format(float(k), '.18f'), + bit_lower=str(c), complex_lower=str(b), binding_component='bit' if c < (1 - beta) * b else 'complex', + gain_over_pr444_percent=float(100 * (k / parent_k - 1)), + bit=dict(live=W, physical=physical, maxchild=max(P), rank_mass=mass, hosted_residuals=audit['hosted_residuals'], + prefix_bits=prefix.bit_length(), charged_prefix_bits=charged_prefix, coefficient_bits=coefficient.bit_length(), + three_level_coefficient_bits=two.bit_length(), charged_three_level_coefficient_bits=charged_two, row_coefficient=row), + complex=dict(live=WC, physical=physc, maxchild=max(PC), rank_mass=massc, hosted_residuals=ua['complex_hosted_residuals'], + physical_stock_bits=stock.bit_length(), router_bits=router.bit_length(), literal_bits=literal.bit_length(), row_coefficient=rowc), + strict_outer_constraints={n: str(x) for n, x in a['strict_constraints'].items()}, outer_controls=controls, bootstrap=cutoffs, + bit_template_sha256=bg['template_sha256'], complex_template_sha256=ch['template_sha256'], emitted_program_sha256=bg['emitted_program_sha256'], bank_assignments=audit['bank_assignments'], bit_profile=audit['profile'], parent_kappa=str(parent_k), additional_interface='PR442 idle-data hosting during untouched windows',row_bound=rows,row_controls=row_rejected, halving_depth=3, finite_controls=['old 128-bit prefix charge insufficient','old 512-bit composite charge insufficient']) +outp.write_text(json.dumps(res, indent=2) + '\n') +print(res['status'], res['kappa_decimal'], 'binding', res['binding_component'], 'gain over #444 %.4f%%' % res['gain_over_pr444_percent']) diff --git a/research/e8-eleven-hosting-selected/upstream445/code/audit.py b/research/e8-eleven-hosting-selected/upstream445/code/audit.py new file mode 100644 index 0000000000..c8730e84dd --- /dev/null +++ b/research/e8-eleven-hosting-selected/upstream445/code/audit.py @@ -0,0 +1,181 @@ +"""Independent eleven-stage schedule, geometry embedding and hosted ownership audit. +Derived from PR386/436/443/444 and DaysSky PR442; all source notices retained. +Eleven-stage integration by chafreaky with OpenAI Codex assistance, Apache-2.0. +No emitter, schedule constructor, hosting solver or expander is imported. +Usage: audit.py PARENT443_CANDIDATE OUT +""" +import copy,gzip,hashlib,json,sys +from collections import Counter,defaultdict +from pathlib import Path +K,L,M,T,V,R=5,11,78,8,120,740 +DATA=2*K*V*T +read=lambda p:json.loads(p.read_text()) +sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +load_template=lambda p:json.loads(gzip.decompress(p.read_bytes())) + +def windows(schedule): + last={};seen=[];win={};ranks={};pairs={} + for position,event in enumerate(schedule): + kind=event['kind'] + if kind=='local_cover_sweep': + seen.append((position,event['stage'],event['pair']));last[event['pair']]=position + elif kind=='bridge': + last[event['dst']]=position;last[event['src']]=position + elif kind=='idle': + i=event['idx'];assert i not in win + win[i]={s for pos,s,p in seen if last.get(event['pair'],-1)0 and 0<=off and off+w<=rank[i] + cells=set(range(off,off+w));assert not cells&used[i,cp];used[i,cp]|=cells + assert (s,h) not in hosted;hosted[s,h]=(i,cp,off,w) + assert set(hosted)=={(s,h) for s in range(L) for h in range(R)} + rem={};summaries={} + for i in rank: + if not rank[i]:continue + for cp in range(2*V):rem[i,cp]=rank[i]-len(used[i,cp]) + if str(i) in hs['windows']: + summaries[str(i)]={str(r):n for r,n in sorted(Counter(rem[i,cp] for cp in range(2*V)).items())} + assert hs['remainders']==summaries + assert len(t['calls'])==L*T;seen=set();paid=Counter() + localhash={ori:hashlib.sha256(json.dumps(es,separators=(',',':')).encode()).hexdigest() for ori,es in t['local_programs'].items()} + for index,c in enumerate(t['calls']): + s,rep=c['stage'],c['replica'];p=max(0,(s-1)//2);rev=bool(s%2) + assert (s,rep)==divmod(index,T) and c['pair']==p and c['orientation']==('reverse' if rev else 'forward') + assert c['local_hash']==localhash[c['orientation']] + own=c['owners'];assert len(own)==2*V+R + assert len({(f,tuple(route)) for f,route in own})==2*V+R + for j,(f,route) in enumerate(own): + assert 0<=f2*max(paid)**3 + return paid + +def expanded_digest(t): + h=hashlib.sha256();count=0 + for call in t['calls']: + for op in t['local_programs'][call['orientation']]: + row=[op[0],call['owners'][op[1]]] + if op[0]==0:row.extend(op[2:]) + else: + row.append(call['owners'][op[2]] if op[2]<2*V+R else [t['live'],['private',0]]) + row.extend(op[3:]) + h.update(json.dumps(row,separators=(',',':')).encode());h.update(b'\n');count+=1 + return h.hexdigest(),count + +def main(): + par,out=map(Path,sys.argv[1:]);t=load_template(out/'GLOBAL-TEMPLATE.json.gz');pt=load_template(par/'nine/GLOBAL-TEMPLATE.json.gz') + g=read(out/'GLOBAL.json');geo=read(out/'GEOMETRY.json');pg=read(par/'nine/GEOMETRY.json') + state=read(par/'records/249-states.json');fs=read(par/'records/frames.json')['frames'] + widths=[8-fs[str(state['initial'][str(h)])]['dim'] for h in range(240,980)] + P=audit(t,pt,widths) + assert geo['m']==78 and geo['stages']==11 and len(geo['ports'])==120 and not geo['bank_slots'] and not geo['bank_permutations'] + for p,old in zip(geo['ports'],pg['ports']): + assert {k:v for k,v in p.items() if k!='routes'}=={k:v for k,v in old.items() if k!='routes'} + assert p['routes'][:9]==old['routes'] and len(p['routes'])==11 + for s,route in enumerate(p['routes']): + if s==0:assert route==dict(stage=0,axes=list(range(8)),identity=True) + else: + assert route==dict(stage=s,axes=list(range(8))+list(range(8+7*(s-1),8+7*s)),elementary_inverse_replay=old['routes'][1]['elementary_inverse_replay']) + assert len(set(route['axes']))==15 and max(route['axes'])/2') + geo=json.loads((out/'GEOMETRY.json').read_text()) + assert geo['status']=='PASS_COMPRESSED_ELEVEN_BIT_GEOMETRY' + # the port routes depend only on the labels: same 120 label vectors, in the same order + assert len(geo['ports'])==V and all(p['port']==t and p['q']==w['lines'][t] for t,p in enumerate(geo['ports'])) + rp=a.local_check/'records/249-records.bin'; raw=rp.read_bytes(); rec=list(struct.iter_unpack('<6i',raw)) + state=json.loads((a.local_check/'records/249-states.json').read_text()) + fs=json.loads((a.local_check/'records/frames.json').read_text())['frames'] + dims={int(f):z['dim'] for f,z in fs.items()} + lg=json.loads((a.local_check/'cout/legality.json').read_text()) + cc=json.loads((a.local_check/'cout/columns.json').read_text()) + assert lg['status'].startswith('PASS') and cc['status'].startswith('PASS') + assert (state['v'],state['n'])==(V,LOCAL) and lg['copies']==lg['erasures']==9 + ADDS=lg['common_frame_ADDs'] + assert cc['formal_columns_checked']==4*V+R and cc['local_scalar_additions']==ADDS + initial=[state['initial'][str(i)] for i in range(LOCAL)] + final=[state['final'][str(i)] for i in range(LOCAL)] + assert all(dims[final[i]]==H for i in range(2*V,LOCAL)) + widths=[H-dims[initial[i]] for i in range(2*V,LOCAL)] + ENT=sum(H-z for z in widths) + NB=0;LIVE=DATA + assert T==8 and M==8+7*(L-1) + isometries=json.loads(a.isometries.read_text()) + assert validate_isometries(isometries,w['frames'],w['lines'],dims)==set(initial[2*V:]) + streams={}; checks={}; localH=None + for reverse in (False,True): + cur=(final if reverse else initial)[:]+[-1]; val=[1<=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') + lines=[S.Matrix(x) for x in w['lines']]; I=S.eye(8); Z=S.zeros(8) + assert lines[0]==S.Matrix([2,0,0,0,0,0,0,0]) + ip=lambda u,v:(u.T*v)[0]/2 + gs={0:I}; todo=[0] + while todo: + more=[] + for i in todo: + for j in range(120): + if j in gs or abs(ip(lines[i],lines[j]))!=1: continue + d=lines[i]-lines[j] if ip(lines[i],lines[j])==1 else lines[i]+lines[j] + r=I-d*d.T/(d.T*d)[0]*2 + gs[j]=r*gs[i]; more.append(j) + todo=more + assert len(gs)==120 + recipes=[]; denoms=set(); max_factors=0 + for t,q in enumerate(lines): + g=gs[t]; assert g.T*g==I and g*lines[0] in (q,-q) + P=q*q.T/4; K=I-P; A=g[:,1:] + assert A.T*A==S.eye(7) and A*A.T==K and P*A==S.zeros(8,7) + rho=P.row_join(A).col_join(A.T.row_join(S.zeros(7))) + assert rho.T==rho and rho*rho==S.eye(15) + expected={'P':S.diag(I,S.zeros(7)), 'H':S.eye(15), + '0':S.diag(K,S.zeros(7)), 'K':S.diag(K,S.eye(7))} + for name,U in [('P',P),('H',I),('0',Z),('K',K)]: + assert rho*S.diag(U,S.eye(7))*rho==expected[name] + # Exact bit address operators D_U: head/tail exchange on U. + # Unlike complex C_U, they carry no omitted scalar/translation phase. + def D(U): return (I-U).row_join(U).col_join(U.row_join(I-U)) + assert D(I)*D(P)==D(K) and D(P)*D(P)==S.eye(16) + ops=factor(rho); max_factors=max(max_factors,len(ops)) + for typ,i,j,c in ops: + if c is not None: denoms.add(int(S.Rational(c).q)) + # Compact exact global matrices: these 15 axes are the first eight + # local coordinates and exterior block s. All other axes are fixed. + routes=[dict(stage=0,axes=list(range(8)),identity=True)] + for s in range(1,11): + axes=list(range(8))+list(range(8+7*(s-1),8+7*s)) + assert len(set(axes))==15 and max(axes)<78 + routes.append(dict(stage=s,axes=axes,elementary_inverse_replay=ops)) + recipes.append(dict(port=t,q=list(map(int,q)),complement_columns=[[str(x) for x in row] for row in A.tolist()], + rho15=[[str(x) for x in row] for row in rho.tolist()],routes=routes)) + if t%30==0: print('compressed geometry',t+1,flush=True) + # Exact nested data levels: local I (or K_q) plus s exterior rank-7 + # blocks. Width 78=8+10*7; each bridge sees identical complete operators. + idle=[] + for j in range(1,5): + idle += [dict(pair=j,source_level=-1,target_level=2*j-1,rank=14*j,phase='before_positive_bridge'), + dict(pair=j,source_level=2*j-1,target_level=2*j,rank=7,phase='before_negative_bridge')] + for j in range(5): + idle.append(dict(pair=j,source_level=2*j+2,target_level=10,rank=14*(4-j),phase='terminal')) + assert sum(z['rank'] for z in idle)==308 + # Every residual is hosted in a data family; no helper bank exists. + slots=[];perms=[] + out=dict(status='PASS_COMPRESSED_ELEVEN_BIT_GEOMETRY',h=8,m=78,stages=11, + word_sha256=digest(p),ports=recipes,idle_per_port_and_data_member=idle, + local_window='U direct_sum E_s, with E_s the first s exterior coordinate 7-blocks', + ambient_form='I_78/2',bank_slots=slots,bank_permutations=perms, + route_checks=1320,exact_bit_endpoint_operator_checks=240, + max_route_factors=max_factors,route_denominators=sorted(denoms), + bad_prime_factors=sorted({int(q) for d in denoms for q in S.factorint(d)}), + missing_route_factor_controls=120,bank_free=True, + scope='All port isometries, stage boundary identities, nested idle ranks, exact bit endpoint operators and coordinate embeddings. No residual banks are used. Full local-word scalar and chronological lowering are checked separately.', + seconds=time.monotonic()-t0) + dump(a.out/'GEOMETRY.json',out) + print(json.dumps({k:v for k,v in out.items() if k not in ('ports','bank_permutations','idle_per_port_and_data_member')}),flush=True) + +if __name__=='__main__': main() diff --git a/research/e8-eleven-hosting-selected/upstream445/code/row_bound.py b/research/e8-eleven-hosting-selected/upstream445/code/row_bound.py new file mode 100644 index 0000000000..11d3c0d48e --- /dev/null +++ b/research/e8-eleven-hosting-selected/upstream445/code/row_bound.py @@ -0,0 +1,47 @@ +"""Elementary orthogonal-cover row count; no exact group-order formula is needed. + +Over an odd finite field, diagonalize a nondegenerate d-dimensional symmetric +form. Fixing d-1 coordinates of a vector leaves a nonzero-coefficient quadratic +in the last coordinate; hence a prescribed nonzero norm has at most 2*q^(d-1) +solutions. The orthogonal complement of such a vector is nondegenerate. +Induction while choosing the images of a diagonal orthogonal basis gives +|O_m(q)| <= product(d=1..m, 2*q^(d-1)) = 2^m*q^(m*(m-1)/2). +Since q>=3, this is strictly below q^(m*(m+1)/2). Physical family stock adds +ceil(log_3(physical)) to this uniform exponent. The restored-row divisor +argument in PR234/PR386 multiplies it by the halving depth, then adds the +unchanged 9909 and 252 allowances. Routing-time bills still use m^2. + +This arithmetic checker verifies the exponent calculation and strict margins; +the preceding elementary induction is the all-q proof, not a finite q sample. +chafreaky with OpenAI Codex assistance, Apache-2.0. +""" +from fractions import Fraction + +def bound(m,physical,child,depth): + assert m>1 and physical>0 and 00 + assert m**depth>2*child**depth + overhead=0 + while 3**overhead<=physical:overhead+=1 + column_exponent=sum(d-1 for d in range(1,m+1)) + assert column_exponent==m*(m-1)//2 and 2**m<3**m + cover_exponent=column_exponent+m + stock_exponent=cover_exponent+overhead + assert physical<3**overhead and 2**m*physical<3**(m+overhead) + row=depth*stock_exponent+9909+252 + assert row<20161 and Fraction(10**6)-Fraction(51*20161,25)>0 + return dict(method='successive nonzero-norm vectors in nondegenerate complements', + minimum_q=3,column_exponent=column_exponent,factor_two_power=m, + cover_exponent=cover_exponent,physical_families=physical, + physical_exponent=overhead,stock_exponent=stock_exponent, + halving_depth=depth,complete_row_coefficient=row,retained_row_coefficient=20161) + +def controls(): + rejected=[] + for name,args in [('false two-level halving',(78,9609,56,2)), + ('understated row reserve',(100,9609,90,7))]: + try:bound(*args) + except AssertionError:rejected.append(name) + else:raise AssertionError('accepted '+name) + # The original coarse enumeration bound does NOT fit this retained row cap. + assert 3*(78**2+1)+9909+252==28416>20161 + return rejected diff --git a/research/e8-eleven-hosting-selected/upstream445/data/selection.json b/research/e8-eleven-hosting-selected/upstream445/data/selection.json new file mode 100644 index 0000000000..8e548e5a92 --- /dev/null +++ b/research/e8-eleven-hosting-selected/upstream445/data/selection.json @@ -0,0 +1,499 @@ +{ + "bit": { + "patterns": [ + [ + 0, + [ + 7, + 7 + ], + 106 + ], + [ + 0, + [ + 8 + ], + 134 + ], + [ + 1, + [], + 134 + ], + [ + 1, + [ + 7 + ], + 106 + ], + [ + 2, + [ + 7, + 7, + 7, + 7 + ], + 26 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 182 + ], + [ + 2, + [ + 8, + 8, + 8, + 4 + ], + 32 + ], + [ + 3, + [], + 134 + ], + [ + 3, + [ + 7 + ], + 106 + ], + [ + 4, + [ + 7, + 7, + 7, + 7, + 7, + 7 + ], + 13 + ], + [ + 4, + [ + 8, + 8, + 8, + 7, + 7, + 4 + ], + 15 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 212 + ], + [ + 5, + [], + 126 + ], + [ + 5, + [ + 4 + ], + 8 + ], + [ + 5, + [ + 7 + ], + 106 + ], + [ + 6, + [], + 47 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8, + 8, + 8 + ], + 193 + ], + [ + 7, + [], + 134 + ], + [ + 7, + [ + 7 + ], + 106 + ], + [ + 8, + [ + 8, + 8, + 8, + 8, + 8, + 8, + 8 + ], + 240 + ], + [ + 9, + [ + 8, + 8, + 8, + 7, + 7, + 4 + ], + 1 + ], + [ + 9, + [ + 8, + 8, + 8, + 8, + 8 + ], + 239 + ], + [ + 10, + [ + 7, + 7, + 7, + 7 + ], + 26 + ], + [ + 10, + [ + 8, + 8, + 8 + ], + 182 + ], + [ + 10, + [ + 8, + 8, + 8, + 4 + ], + 32 + ], + [ + 11, + [ + 7, + 7 + ], + 106 + ], + [ + 11, + [ + 8 + ], + 134 + ] + ], + "proxy_saving": 41284.70059916264, + "stages": [ + [ + 0, + 7, + 0, + 106 + ], + [ + 0, + 7, + 1, + 106 + ], + [ + 0, + 8, + 1, + 134 + ], + [ + 1, + 7, + 2, + 106 + ], + [ + 2, + 4, + 0, + 8 + ], + [ + 2, + 4, + 1, + 8 + ], + [ + 2, + 4, + 2, + 8 + ], + [ + 2, + 4, + 3, + 8 + ], + [ + 2, + 7, + 3, + 104 + ], + [ + 2, + 8, + 1, + 492 + ], + [ + 2, + 8, + 3, + 150 + ], + [ + 3, + 7, + 4, + 106 + ], + [ + 4, + 4, + 4, + 8 + ], + [ + 4, + 4, + 5, + 7 + ], + [ + 4, + 7, + 3, + 2 + ], + [ + 4, + 7, + 5, + 106 + ], + [ + 4, + 8, + 2, + 626 + ], + [ + 4, + 8, + 4, + 479 + ], + [ + 5, + 4, + 6, + 8 + ], + [ + 5, + 7, + 6, + 106 + ], + [ + 6, + 8, + 0, + 626 + ], + [ + 6, + 8, + 4, + 45 + ], + [ + 6, + 8, + 5, + 626 + ], + [ + 6, + 8, + 6, + 54 + ], + [ + 7, + 7, + 8, + 106 + ], + [ + 8, + 8, + 3, + 476 + ], + [ + 8, + 8, + 4, + 102 + ], + [ + 8, + 8, + 9, + 610 + ], + [ + 8, + 8, + 10, + 492 + ], + [ + 9, + 4, + 5, + 1 + ], + [ + 9, + 7, + 7, + 2 + ], + [ + 9, + 8, + 6, + 572 + ], + [ + 9, + 8, + 7, + 626 + ], + [ + 10, + 4, + 7, + 8 + ], + [ + 10, + 4, + 8, + 8 + ], + [ + 10, + 4, + 9, + 8 + ], + [ + 10, + 4, + 10, + 8 + ], + [ + 10, + 7, + 7, + 104 + ], + [ + 10, + 8, + 8, + 626 + ], + [ + 10, + 8, + 9, + 16 + ], + [ + 11, + 7, + 9, + 106 + ], + [ + 11, + 7, + 10, + 106 + ], + [ + 11, + 8, + 10, + 134 + ] + ] + } +} diff --git a/research/e8-eleven-hosting-selected/upstream445/proof/INHERITED-ROW-DIVISOR.tex b/research/e8-eleven-hosting-selected/upstream445/proof/INHERITED-ROW-DIVISOR.tex new file mode 100644 index 0000000000..590da4b892 --- /dev/null +++ b/research/e8-eleven-hosting-selected/upstream445/proof/INHERITED-ROW-DIVISOR.tex @@ -0,0 +1,95 @@ +\subsection{Internal row reserve and ordinary conversion} +The finite cover requires a row divisor $W(w)$ at each coarse level. +All children have ratio at most $66/67$ and depth +$D(n)\le47\lceil\log_2\max(2,n)\rceil+O(1)$. +A sufficient common divisor is $W(w)^{D(n)}$ times the inherited old-leaf +reserve. The old supplier has its retained complete-row contract and +logarithmic reserve. Therefore a sufficient integer $S(e,w)$ satisfies +\[ + \log_qS(e,w)=O(w\log e). +\] +Unused stock is divided only into fresh descendant role fields; exposed +parent low/high fields are spectator prefixes. Their weights cannot depend +on those fresh roles. Every completed call restores its row coordinate, +so successive residuals and the outer wrapper reuse one reserve instead +of multiplying reserves for sequential calls. + +The unweighted reversed endpoint $F_n(H,D)=(C_nD,C_nH)$ converts to an +ordinary interchange by the chronological sequence +\[ + D\leftarrow D-H;\quad F_n;\quad D\leftarrow D+H;\quad + F_n;\quad D\leftarrow H-D. +\] +Indeed the successive values are $(H,D-H)$, $(C_n(D-H),C_nH)$, +$(C_n(D-H),C_nD)$, $(D,D-H)$, and $(D,H)$. +The three additive maps cost $O(Vn)$ in the atom model. The two calls +reuse restored rows; their constant multiplicity is outside the recursion +and does not multiply its characteristic moment. + +\subsection{Borrowing and restoring the stock} +Set $\beta=1/1000$, $w=\lceil e^\beta\rceil$, and +$k=\lceil\log_qS(e,w)\rceil=O(w\log e)$, using the depth bound for the +original width $e$. For sufficiently large $e$, $ka_{\rm bit}$ and $\beta<1-a_{\rm bit}$ make both +the atom-adapter and borrowing terms lower order. The remainder cost +$O(Vw^{1-a_{\rm old}})$ is also covered. Thus the ordinary radix-$q$ +interchange has cost $O(Ve^{1-a_{\rm bit}})$, without an externally supplied +superpolynomial stock of rows. + +For an original binary chunk range $[2^e]$, let +$t=\lceil e/\log_2q\rceil$ and embed it numerically into $[q^t]$. +Pad both exchanged ranges while retaining every spectator. The total +logical-volume increase is below $q^2$. Execute the completed ordinary +radix-$q$ interchange, then remove the padding. Its endpoint preserves the +rectangular genuine set $[2^e]\times[2^e]$; intermediate maps may mix genuine +and padded addresses, which does not affect this endpoint justification. +As $q$ is fixed and $t=\Theta(e)$, the binary interchange has the same +saving exponent. All schedules use a fixed number of finite-alphabet +tapes; low residue tables and port types are fixed independently of $w$. + +The conclusion retains the original local-producer, ordered-affine, +ordinary-leaf and multiplication-framework hypotheses. It adds no free +unit-scaling, dense chart transformation, or external row-stock primitive. diff --git a/research/e8-eleven-hosting-selected/upstream445/proof/UPSTREAM-PR234-NOTICE.md b/research/e8-eleven-hosting-selected/upstream445/proof/UPSTREAM-PR234-NOTICE.md new file mode 100644 index 0000000000..5f8fbb25c1 --- /dev/null +++ b/research/e8-eleven-hosting-selected/upstream445/proof/UPSTREAM-PR234-NOTICE.md @@ -0,0 +1,13 @@ +# Attribution and licence + +This contribution uses Apache-2.0. Original source headers, licences and notices are preserved. These credits do not imply review or endorsement by the named contributors or OpenAI. + +- Jacob Sussman: five-stage complex geometry and published gcert/1 export in wht-power-saving-lean at f010392c923279e3dd59ef3aa5fedad23affc5fd. Original Claude assistance disclosure retained in inputs/complex/NOTICE. +- Avi Eisenberg / ikeboy: retained PR193 source-assisted complex helper and donor selection at 187e1010ac8b259af8e9b5166f68b64bc27b4b47. +- eumemic: current PR210 frames, gauges, source borrowing and retimed bit helper at df95878d11190518e45ef9717c9ee05011f88ace. +- Chafik Boukhalfa / chafreaky: PR200 physical bit construction carried by PR202 at 8d8d67bcf69c5ea67d3a29dbc64ba588156d6e8d. +- Rohan Arun, Dugongue, evmckinney9, icekylinx, James Chang, Douglas Colkitt, OpenAI and earlier contributors retain the attribution and original assistance disclosures in the supplied source notices. The exact outer assembly also credits Zhihao Chen and the RaD / hipotures balanced reduction in its original header. + +The paired-cube helper design predates Sussman’s certificate export. The new contribution here is the explicit source-bound five-stage composition, adapters, paid accounting and reproducible finite verification. No exclusive priority is claimed for the inherited designs or theorem interfaces. + +Assisted with ChatGPT. diff --git a/research/e8-eleven-hosting-selected/upstream445/verify.py b/research/e8-eleven-hosting-selected/upstream445/verify.py new file mode 100644 index 0000000000..b0b82d5dd7 --- /dev/null +++ b/research/e8-eleven-hosting-selected/upstream445/verify.py @@ -0,0 +1,50 @@ +"""Fresh PR444 reconstruction, eleven-stage geometry, hosted ownership and exact composition. +Usage: python -B research/r740-hosted-eleven/verify.py /absolute/new/output [--quick] +--quick skips only PR443's already-inherited exhaustive negative controls. +Apache-2.0; chafreaky with OpenAI Codex assistance. +""" +from pathlib import Path +import hashlib,json,os,subprocess,sys,time +assert __debug__ +ROOT=Path(__file__).resolve().parent +out=Path(sys.argv[1]).resolve();quick='--quick' in sys.argv[2:] +assert not out.exists() and not out.is_relative_to(ROOT.parent) +read=lambda p:json.loads(p.read_text()) +sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +def inventory(p): + return {f.relative_to(p).as_posix():sha(f) for f in p.rglob('*') if f.is_file() and '__pycache__' not in f.parts} +def integrity(): + actual=inventory(ROOT);actual.pop('MANIFEST.json') + assert actual==read(ROOT/'MANIFEST.json'),'package manifest differs' + for name,expected in read(ROOT/'SOURCE.json')['packages'].items(): + assert inventory(ROOT.parent/name)==expected['files'],('upstream package differs',name) +integrity();out.mkdir(parents=True) +env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONINTMAXSTRDIGITS='0',PYTHON=sys.executable) +env.pop('PYTHONOPTIMIZE',None);steps=[] +def run(name,cmd): + log=out/(name+'.log');t=time.monotonic();print('RUN',name,flush=True) + with log.open('w') as f:q=subprocess.run(list(map(str,cmd)),env=env,stdout=f,stderr=subprocess.STDOUT) + if q.returncode:raise RuntimeError((name,q.returncode,log.read_text()[-4000:])) + steps.append(dict(name=name,seconds=round(time.monotonic()-t,2),log_sha256=sha(log))) + print('PASS',name,flush=True) +def py(name,path,*args):run(name,[sys.executable,'-B',path,*args]) +try: + args=['--quick'] if quick else [] + py('parent444',ROOT.parent/'r740-idle-hosted-replicas/verify.py',out/'parent444',*args) + base=out/'parent444/base443/candidate';host=out/'bit' + py('geometry',ROOT/'code/geometry.py','--source',ROOT.parent/'e8-r740-replica32/parent436','--out',host) + py('emit',ROOT/'code/emit.py','--word',ROOT.parent/'e8-r740-replica32/data/word.json.gz', + '--local-check',base,'--out',host,'--isometries',ROOT.parent/'e8-r740-replica32/data/residual-isometries.json') + py('independent-audit',ROOT/'code/audit.py',base,host) + assert len(read(host/'AUDIT.json')['mutations_rejected'])==22 + py('exact-assembly',ROOT/'code/assemble.py',out/'parent444',host) + (out/'RESULT.json').write_bytes((host/'RESULT.json').read_bytes()) + actual=read(out/'RESULT.json') + for k,v in read(ROOT/'EXPECTED.json').items():assert actual[k]==v,(k,actual[k],v) + integrity() + receipt=dict(status='PASS_R740_ELEVEN_STAGE_HOSTING',mode='quick' if quick else 'full',kappa=actual['kappa'], + manifest_sha256=sha(ROOT/'MANIFEST.json'),source_sha256=sha(ROOT/'SOURCE.json'), + emitted_program_sha256=actual['emitted_program_sha256'],checks=steps,python=sys.version.split()[0]) + (out/'RECEIPT.json').write_text(json.dumps(receipt,indent=2)+'\n');print(json.dumps(receipt,indent=2)) +except BaseException as e: + (out/'FAILURE.json').write_text(json.dumps(dict(error=repr(e),completed=steps),indent=2)+'\n');raise diff --git a/research/e8-eleven-hosting-selected/verify.py b/research/e8-eleven-hosting-selected/verify.py new file mode 100644 index 0000000000..5a582d0fb0 --- /dev/null +++ b/research/e8-eleven-hosting-selected/verify.py @@ -0,0 +1,38 @@ +"""Full reconstruction; Python3.11+, SymPy. OpenAI Codex assistance, Apache-2.0.""" +from pathlib import Path +import gzip,hashlib,json,os,subprocess,sys,time +assert __debug__ +ROOT=Path(__file__).resolve().parent;PARENT=ROOT.parent/'e8-hosting-selected-kernel' +OUT=Path(sys.argv[1]).resolve();assert not OUT.exists() and not OUT.is_relative_to(ROOT.parent) +read=lambda p:json.loads(p.read_text());sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +def integrity(): + actual={p.relative_to(ROOT).as_posix():sha(p) for p in ROOT.rglob('*') if p.is_file() and p!=ROOT/'MANIFEST.json' and '__pycache__' not in p.parts} + assert actual==read(ROOT/'MANIFEST.json') + assert sha(PARENT/'MANIFEST.json')==read(ROOT/'SOURCE.json')['parent_manifest_sha256'] +integrity();OUT.mkdir(parents=True);steps=[] +env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONINTMAXSTRDIGITS='0');env.pop('PYTHONOPTIMIZE',None) +def run(name,path,*args): + log=OUT/(name+'.log');t=time.monotonic();print('RUN',name,flush=True) + with log.open('w') as f:q=subprocess.run([sys.executable,'-B',str(path),*map(str,args)],env=env,stdout=f,stderr=subprocess.STDOUT) + assert q.returncode==0,(name,log.read_text()[-3000:]) + steps.append(dict(name=name,seconds=round(time.monotonic()-t,2),log_sha256=sha(log)));print('PASS',name,flush=True) +try: + run('parent-full',PARENT/'verify.py',OUT/'parent') + b=OUT/'parent/changed/bit426-source-centres';candidate=OUT/'candidate';candidate.mkdir() + for n in ('records','nine'):(candidate/n).symlink_to(b/('global' if n=='nine' else n),target_is_directory=True) + (candidate/'word.json.gz').write_bytes(gzip.compress((b/'bit-source-centres.json').read_bytes(),mtime=0)) + template=json.loads(gzip.decompress((b/'global/GLOBAL-TEMPLATE.json.gz').read_bytes())) + (candidate/'isometries.json').write_text(json.dumps(template['residual_isometries'])) + host=OUT/'bit' + run('geometry',ROOT/'code/geometry.py','--source',ROOT.parent/'e8-rank138-idle-hosting/upstream443/parent436','--out',host) + run('emit',ROOT/'code/emit.py','--word',candidate/'word.json.gz','--local-check',candidate,'--out',host,'--isometries',candidate/'isometries.json') + run('independent-audit',ROOT/'code/audit.py',candidate,host) + assert len(read(host/'AUDIT.json')['mutations_rejected'])==22 + run('exact-assembly',ROOT/'code/assemble.py',OUT/'parent',host) + (OUT/'RESULT.json').write_bytes((host/'RESULT.json').read_bytes()) + actual=read(OUT/'RESULT.json') + for k,v in read(ROOT/'EXPECTED.json').items():assert actual[k]==v,(k,actual[k],v) + integrity();receipt=dict(status='PASS_FULL_ELEVEN_HOSTING_SELECTED',python=sys.version.split()[0],kappa=actual['kappa'],manifest_sha256=sha(ROOT/'MANIFEST.json'),checks=steps) + (OUT/'RECEIPT.json').write_text(json.dumps(receipt,indent=2)+'\n');print(json.dumps(receipt,indent=2)) +except BaseException as e: + (OUT/'FAILURE.json').write_text(json.dumps(dict(error=repr(e),completed=steps),indent=2)+'\n');raise diff --git a/research/e8-hosting-selected-kernel/AUDIT.json b/research/e8-hosting-selected-kernel/AUDIT.json new file mode 100644 index 0000000000..2a88108913 --- /dev/null +++ b/research/e8-hosting-selected-kernel/AUDIT.json @@ -0,0 +1,41 @@ +{ + "status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", + "bit_template_sha256": "b099b89581f7dd9034e64239a67d9d67e2cd10023632e5df5c8bbb29831e5772", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", + "bit_profile": { + "1": 1465920, + "2": 619328, + "3": 153728, + "4": 228672, + "5": 62208, + "6": 16000, + "7": 31552, + "8": 5184 + }, + "complex_profile": { + "1": 138384, + "2": 56448, + "3": 15936, + "4": 16128, + "5": 32064, + "7": 3840, + "8": 7488 + }, + "bit_live": 74528, + "complex_live": 8400, + "bit_hosted_residuals": 321536, + "complex_hosted_residuals": 34560, + "bit_maxchild": 8, + "complex_maxchild": 8, + "mutations_rejected": [ + "bit: hosted residual outside its window", + "bit: overlapping hosted coordinates", + "bit: understated live stock", + "bit: hosted owner on the active pair", + "bit: missing remainder child", + "complex: hosted residual outside its window", + "complex: remainder child understated", + "complex: dropped bank", + "complex: duplicated hosted residual" + ] +} diff --git a/research/e8-hosting-selected-kernel/CERTIFICATE.json b/research/e8-hosting-selected-kernel/CERTIFICATE.json new file mode 100644 index 0000000000..d277d21ac4 --- /dev/null +++ b/research/e8-hosting-selected-kernel/CERTIFICATE.json @@ -0,0 +1,116 @@ +{ + "status": "PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY", + "kappa": "312258824824501/250000000000000000", + "kappa_decimal": "0.001249035299298004", + "bit_lower": "625298669760136826673/500000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "bit", + "gain_over_pr434_percent": 10.231638028931764, + "bit": { + "live": 74528, + "physical": 74537, + "maxchild": 8, + "rank_mass": 4749824, + "hosted_residuals": 321536, + "prefix_bits": 123, + "charged_prefix_bits": 128, + "coefficient_bits": 123, + "two_level_coefficient_bits": 288, + "charged_two_level_coefficient_bits": 320, + "row_coefficient": 18355 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "16007645945859502703459697719263921004407398109158311718718546725928705628143217765348018079869732567625774608014604714307774384027019774524485530915302137457211/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "215754489713220496540302280736078995592601890841688281281453274071294371856782234651981920130267432374225391985395285692225615972980225475514469084697862542789/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29982546840970881/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "215754489713220480316901845163355795592601890841688281281453274071294371856782234651981920130267432374225391985395285692225615972980225475514469084697862542789/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "8003822972929751335722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "16007645945859502703459697719263921004407398109158311718718546725928705628143217765348018079869732567625774608014604714307774384027019774524485530915302137457211/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "107877244856610256166096868441180601255998664684765145048124746193958904646937843254696588208351481535130775862430210471887416001094827045531618569368705795880030915302137457211/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "8003822972929752935722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "6391996177027070247064277797086227542201255998664684765145048124746193958904646937843254696588208351481535130775862430210471887416001094827045531618569368705795880030915302137457211/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "16007645945859502703459697719263921004407398109158311718718546725928705628143217765348018079869732567625774608014604714307774384027019774524485530915302137457211/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "215754489713220512547948226595581699052299610105609285688851383229606090575328960580687548273485197722243471855127853318000223987584939783288853111717637067274530915302137457211/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "16007645945859502703459697719263921004407398109158311718718546725928705628143217765348018079869732567625774608014604714307774384027019774524485530915302137457211/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "16007645945859502703459697719263921004407398109158311718718546725928705628143217765348018079869732567625774608014604714307774384027019774524485530915302137457211/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "107877244856610256166096868441180601255998664684765145048124746193958904646937843254696588208351481535130775862430210471887416001094827045531618569368705795880030915302137457211/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "8003822972929751335722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "6399999999999999993600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/6408003822972929751335722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789", + "epsilon_below_one": "8003822972929757735722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789/6408003822972929751335722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789", + "guard_width": "8003822972929757735722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789/6408003822972929751335722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789", + "K_geometry": "4808003822972929752935722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789/6408003822972929751335722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789000000000000000000", + "K_dominates_log": "8003822972929752927718379940842704863021798421542777056207873918490806240401186902939262316438586361719565812345921271063243359861335383426355797431726121249651587654066568338669030915302137457211/6408003822972929751335722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789000000000000000000", + "record_suffix": "8003822972929757735722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789/6408003822972929751335722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789", + "phase_local": "64030583783438055477773800337249911054229807768749421040871000695133093907872622000156386198980125990973650381308909797760031447853671594107634467446145180678491371246951606138192030915302137457211/51264030583783438010685777623310179662389952010682521878839615002030448328762824497253962427294333188147718953793100558316224900671991241383635747051445050353632959752677582900342312000000000000000000", + "phase_boundary": "12806116756687605969151701689106181142268199222731917969178999070774430897613024196986444363513575472798487346828463144780110910260678487199036826290104897772123569104885285864342430915302137457211/10252806116756687602137155524662035932477990402136504375767923000406089665752564899450792485458866637629543790758620111663244980134398248276727149410289010070726591950535516580068462400000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "12799999999999999980791996177027070248664277797086227542201255998664684765145048124746193958904646937843254696588208351481535130775862430210471887416001094827045531618569368705795880030915302137457211/25632015291891719005342888811655089831194976005341260939419807501015224164381412248626981213647166594073859476896550279158112450335995620691817873525722525176816479876338791450171156000000000000000000", + "prime_interval_packing": "8003822972929757735722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789/6408003822972929751335722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789", + "alpha_positive": "16007645945859509063440582854615164261765799756858011911159749172296847335754249059684565728230234880184435036483491060591355943860240556380824178862357415453771556738764430881458030915302137457211/12816007645945859502671444405827544915597488002670630469709903750507612082190706124313490606823583297036929738448275139579056225167997810345908936762861262588408239938169395725085578000000000000000000", + "alpha_below_one": "12799999999999999993608003822972929751335722202913772457798744001335315234854951875253806041095353062156745303411791648518464869224137569789528112583998905172954468381430631294204119969084697862542789/12816007645945859502671444405827544915597488002670630469709903750507612082190706124313490606823583297036929738448275139579056225167997810345908936762861262588408239938169395725085578000000000000000000", + "alpha_below_one_fourth": "3187994265540605366604420518602271064637606200910799605516316188454606173211922282018688085977665589379047999575585293834172700348139212030096410011852958231648288427803584500389936469084697862542789/12816007645945859502671444405827544915597488002670630469709903750507612082190706124313490606823583297036929738448275139579056225167997810345908936762861262588408239938169395725085578000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "81817422943582135104691635556785323569626762018831877177661277590973460301598234661046146051387644062223441412286753777975282124200867722924981511980260058043275928672060753182885461956467155336523145287047019946807761008345576409812174404623085175039082386078418106566118496399120623420234384735159567744623476316002734380886899179928855898521/82022448934053500817097244197296287459823923217092035006143384003248717326020519195606339883670933101036350326068960893305959841075185986213817195282312080565812735604284132640547699200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "358912244670267504155910232455400226553126782694201492404113152020249532334667451603793117541640724691651987540580179412085193813048342640437670314163557118347927083165712557085350855907254093587628367/51264030583783438010685777623310179662389952010682521878839615002030448328762824497253962427294333188147718953793100558316224900671991241383635747051445050353632959752677582900342312000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "2645898842131264516196585566598067266520987908983855019421823096585443301965735724222308494497690026654285161519620271475538403135141320979050566278820970570406114022584815471926711/1602000955743232437833930550728443114449686000333828808713737968813451510273838265539186325852947912129616217306034392447382028145999726293238617095357657823551029992271174465635697250000000000000000", + "coordinate_movement_above_kappa": "19994114845051503459697719263921004407398109158311718718546725928705628143217765348018079869732567625774608014604714307774384027019774524485530915302137457211/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "835118309110425662690124012695699321657041526920020968566468102217593433353517966946497734915793691619735155370868703222525099991313275748649559346770650197484067224250912805032811/1281600764594585950267144440582754491559748800267063046970990375050761208219070612431349060682358329703692973844827513957905622516799781034590893676286126258840823993816939572508557800000000000000000", + "bulk_exposure_above_kappa": "19994114845051503459697719263921004407398109158311718718546725928705628143217765348018079869732567625774608014604714307774384027019774524485530915302137457211/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "52628743833335815761612127116569290239677893080806784447223579714465155457426777864330145306867122610344800822507160838269588337404527745464845779015117901781975048877290605788940807/51264030583783438010685777623310179662389952010682521878839615002030448328762824497253962427294333188147718953793100558316224900671991241383635747051445050353632959752677582900342312000000000000000000", + "scalar_work_above_kappa": "78260759125227534766955015928224380070872869086148045386643387215480379621808190112957126520514289204418660299403711117427700787740523366156663652540840426958791528753629397239111963/51264030583783438010685777623310179662389952010682521878839615002030448328762824497253962427294333188147718953793100558316224900671991241383635747051445050353632959752677582900342312000000000000000000", + "dimension_above_kappa": "1597999044256767561611968291402821401746899566264238457807249940170403509147984831046256976112787812092692277191655634206903133373620545182299786039783663155499536286549796104770416772584815471926711/1602000955743232437833930550728443114449686000333828808713737968813451510273838265539186325852947912129616217306034392447382028145999726293238617095357657823551029992271174465635697250000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "60635834279878833657621288270998129187561/40000000000000000000000000000000000000000000000", + "cutoff_log2": "15666203684619" + }, + { + "gap": "15166202606001735527811873638490069557427922716450327640008309/8000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10016794587070683047" + }, + { + "gap": "3793362525938242303531654446273018863642198826327324781094893932955821181917128721/1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6404625895300929569587758" + }, + { + "gap": "948793816554854176593164799976559622596462848760620538101644058340477446057919335560726765941459444349/320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4095045825508429519876901673793" + }, + { + "gap": "237311804547357441198117541697802072526688310936973526787583684722628795042632495936204365514791859899793562164721589039481/64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2618326282775972067811110728595613513" + }, + { + "gap": "59356302280736078995592601890841688281281453274071294371856782234651981920130267432374225391985395285692225615972980225475514469084697862542789/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1674128401780281260605462057785744226537336" + } + ], + "bit_template_sha256": "b099b89581f7dd9034e64239a67d9d67e2cd10023632e5df5c8bbb29831e5772", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f" +} diff --git a/research/e8-hosting-selected-kernel/EXACT-LOCAL.json b/research/e8-hosting-selected-kernel/EXACT-LOCAL.json new file mode 100644 index 0000000000..a52d92c2f8 --- /dev/null +++ b/research/e8-hosting-selected-kernel/EXACT-LOCAL.json @@ -0,0 +1,22 @@ +{ + "status": "PASS_EXACT_LOCAL_KERNEL_AND_TWO_AGGREGATE_MOMENTS_GLOBAL_PENDING", + "entries": 123, + "entrance_rank": 147, + "donors": 118, + "word_sha256": "f5ae52ba95d0edd76f85fdb4da04cd78ad46b55c9ad3b86cc098146b62032336", + "local_profile": { + "1": 2545, + "2": 1022, + "3": 266, + "5": 108, + "4": 357, + "8": 9, + "7": 14 + }, + "bit_lower": "625298669760136826673/500000000000000000000000", + "bit_upper": "1250597339520273653347/1000000000000000000000000", + "live": 74528, + "replicas": 64, + "local_columns": 980, + "scope": "Global emitted program, ownership, banks, invoice and outer assembly not yet verified." +} diff --git a/research/e8-hosting-selected-kernel/EXPECTED.json b/research/e8-hosting-selected-kernel/EXPECTED.json new file mode 100644 index 0000000000..688a76200a --- /dev/null +++ b/research/e8-hosting-selected-kernel/EXPECTED.json @@ -0,0 +1,33 @@ +{ + "kappa": "312258824824501/250000000000000000", + "kappa_decimal": "0.001249035299298004", + "bit_lower": "625298669760136826673/500000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "bit", + "bit": { + "live": 74528, + "physical": 74537, + "maxchild": 8, + "rank_mass": 4749824, + "hosted_residuals": 321536, + "prefix_bits": 123, + "charged_prefix_bits": 128, + "coefficient_bits": 123, + "two_level_coefficient_bits": 288, + "charged_two_level_coefficient_bits": 320, + "row_coefficient": 18355 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "bit_template_sha256": "b099b89581f7dd9034e64239a67d9d67e2cd10023632e5df5c8bbb29831e5772", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f" +} diff --git a/research/e8-hosting-selected-kernel/INHERITED-HOSTING-PROOF.md b/research/e8-hosting-selected-kernel/INHERITED-HOSTING-PROOF.md new file mode 100644 index 0000000000..ff3eba6770 --- /dev/null +++ b/research/e8-hosting-selected-kernel/INHERITED-HOSTING-PROOF.md @@ -0,0 +1,109 @@ +# Idle-axis hosting: helper residuals on pending idle coordinates + +This package changes only the global nine-stage templates of #434's two suppliers. Both local words are unchanged: + +- the complex word is #433's split-centre word, R = 560, m = 73; +- the bit word is #434's early-reset kernel word, R = 747, m = 64. + +So are their local programs, scalar replays, data routes, bridges, terminal exchange and cover correction. What +changes is where whole dirty-helper residuals live. Many of them move from bank streams onto coordinates of *idle* +data families that would otherwise be advanced later by an idle child. + +## 1. The two inherited facts used + +**(a) Dirty invocations act on a helper stream as its residual.** The complete dirty local invocation is block +diagonal on helpers at its endpoint and admits arbitrary correlated helper values (#425/#433, #386/#434). On the +physical stream that owns a helper residual of width w, it acts as an exact coordinate factor on w coordinates: + +- complex: P_g C_block P_g⁻¹ (PR425-COMPLEX §5, INHERITED-COMPLEX-GEOMETRY); +- bit: D_P with P the width-w coordinate projector (PR386-BIT-GEOMETRY; mixed widths 8 − entrance rank, #434). + +This holds whatever the stream held before. Banks rely on exactly this: eight sequential residuals and a pad tile a +bank stream. + +**(b) An idle child is a product of coordinate factors.** Advancing a data pair from level a to level b applies, on +every physical data stream (F, g) of that pair, the commuting product of coordinate factors on its pending set S: + +- complex: C over S, in the basis U_q ⊕ I used by the inherited idle factorisation; +- bit: D_{P_V−P_U}, an orthogonal coordinate projector difference. + +Factors on disjoint coordinate sets commute and multiply: + +- complex: C_{S'}·C_{S∖S'} = C_S; +- bit: D_{P'}·D_{P−P'} = D_P for P' ≤ P (the parent's identity D_I·D_P = D_{I−P}). + +## 2. Hosting lemma + +Fix a data family F (replica r, pair j, side, port) and an idle child Γ that advances pair j at recipe position τ. +Let λ be the position of the last local invocation or bridge that names pair j before τ; idle children do not +count as touches, since they act on other coordinates or on the other member. Let ι be any local invocation with +λ < ι < τ. Then: + +1. ι is an invocation on another pair, and nothing touches F between ι and τ. +2. A helper residual of ι, of width w, may be owned by stream (F, d·σ⁻¹) instead of a bank slot. Here d is the + invocation's cover class, and σ is a coordinate isometry carrying the local residual block onto a set S' ⊂ S of + w pending coordinates. When S' meets the local block of a level −1 advance, σ is composed with U_q ⊕ I. +3. Γ is replaced by Γ' acting on S ∖ ⋃S' over all hosted residuals of F, which have pairwise disjoint S'. + +The complete program's operator is unchanged: + +- By (a), ι applies exactly the factor on S' to (F, d·σ⁻¹), for any prior contents. +- Nothing else acts on F between ι and τ, so this factor may be moved to τ. +- By (b), the moved factors times Γ' equal Γ. + +Distinct slots of one invocation have distinct σ, so distinct physical classes for every d. They are also disjoint +from the invocation's own data owners, because pair j is not active, and from bank owners, because the families +differ. Residuals of different invocations on F occupy disjoint coordinates. They are sequential, exactly as the +parent's banks are co-owned sequentially by different cover classes. + +Two further points: + +- **Phases.** The stored Z₄ translations after Γ remain valid, because Γ'·∏(hosted factors) = Γ as exact operators. + The final X_δ(g) correction still applies to every live family; hosting changes no data endpoint. +- **Reflection.** The inverse-transpose program reverses chronology and reflects each factor. The window condition + (no touch strictly between ι and τ) is symmetric, so hosting commutes with reflection. + +## 3. What is checked here + +- `bit_hosted.py` and `complex_hosted.py` read #434's freshly regenerated templates and compute windows from each + recipe. They apply a frozen integer-programme selection (`SELECTION.json`; `--discover` recomputes it with scipy) + and emit new owners, remainder children and banks. + - Bit: unhosted residuals keep an exact width-64 tiling with no padding. + - Complex: eight per bank plus one paid pad; a final partial bank pays the larger pad. +- `audit.py` shares no code with the generators. It re-derives every window from the template schedule. For every + replica and invocation it checks that: + - each helper has exactly one owner; + - each hosted slot is inside its child's pending set, disjoint from other slots, outside the active pair, and in + window; + - every remainder child is exact, and the bank tiling is exact. + + It also recomputes the paid profile and the rank deficit 2496, and rejects nine mutations. +- `assemble.py` prices both suppliers with the two inherited rational moment engines and recomputes both finite + invoices with the hosted stock. Route charging is conservative: two extra route factors per helper selector, and + the parent's larger complex per-vertex bill is kept. It then runs #434's strict outer assembly: six bootstrap + levels and 47 inequalities. The next grid point and the zero-η, zero-β and unit-β controls are rejected. + +## 4. Result + +| | live stock | max child | hosted residuals | certified saving | +| --- | ---: | ---: | ---: | --- | +| bit | 14,259 → 9,457 | 42 → 8 | 39,568 of 53,784 | c = 1239085165241180038597/10²⁴ | +| complex | 12,720 → 8,400 | 48 → 8 | 34,560 of 40,320 | b = 1267453159029119/10¹⁸ | + +κ = 618775866623647/(5·10¹⁷) ≈ 1.237551733247294·10⁻³, bit-bound, +9.218% over #434. + +## 5. Scope + +This is a written finite extension of the inherited correlated dirty-bank and compressed-window interfaces. The +streams that own residuals now include data streams during idle windows. It is the principal new review point. + +All other interfaces remain inherited assumptions: the all-size compiler, restored-work, tape/common-grid, precision +and analytic interfaces. + +No Lean proof and no unconditional integer-multiplication theorem is claimed. The global operator identity is argued +from (a) and (b) and checked combinatorially. It is not replayed numerically on the 2⁷³- and 2⁶⁴-point address +spaces; neither parent does that either. + +## R740 composition and additional scope + +The above argument is inherited from PR442 and remains an explicit additional hosting assumption. Here the bit local word has R740 and matches PR441 after two joint B-frame sweeps. The assignment is regenerated for its actual residual-width census, rather than transferred by helper index. Parent residual isometries remain checked, and the finite selector invoice retains the parent extra-helper-route bound of 144 in addition to the two hosting factors. All host windows, owners, disjoint intervals, remainders and bank coverage are independently rechecked. Original PR442 numerical values above describe its historical R747 construction; EXPECTED.json and CERTIFICATE.json describe this R740 composition. diff --git a/research/e8-hosting-selected-kernel/LICENSE b/research/e8-hosting-selected-kernel/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-hosting-selected-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/e8-hosting-selected-kernel/MANIFEST.json b/research/e8-hosting-selected-kernel/MANIFEST.json new file mode 100644 index 0000000000..6eeb64acf9 --- /dev/null +++ b/research/e8-hosting-selected-kernel/MANIFEST.json @@ -0,0 +1,46 @@ +{ + "parent_manifest_sha256": "ff4b2cadd18913f1948adcc3860e446aee39e4e3889df4d15e80117516374b4d", + "files": { + "AUDIT.json": "2d3b59641b26f884e68290cf6b4a566eac766df14a6d666dd3188b8f5ef2014f", + "CERTIFICATE.json": "c8765a22f3a0e43f55b9f6bbf0047477962fe9f045dcb0747a1133fa0b96ee29", + "EXACT-LOCAL.json": "1b7653a551e993dfaa6664a35314b9d58adc3760391082555d5459424993dc4b", + "EXPECTED.json": "fa9736c0cf8546016ee0edba61cd434034be3729f5b23dda5371e72972d1d51a", + "INHERITED-HOSTING-PROOF.md": "4f06d1dead63c62b076f0a6c1521c68c0b0544aa2c5df5e74a408fdfc34f91c4", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "df28c5271e72421eba3c422658449f8388760bdee97cc02e13719dd781955918", + "PRECURSOR.json": "0c5adceaed6ac3b435674be21b781acace7156c66acea091b5aace67c516ef2f", + "PROOF.md": "a840e8463eebb8cbbc88b50aa67851428433e4c43dbe6051c97c3eee771e79c8", + "README.md": "75b6e071f7e8fa06b026bea44f024b3628e30166c2499fa2398796fe66e0901d", + "SELECTION.json": "4d766dd7796fbcdcff8e8497c2d51db6b7ee26a264cea66525e8cf60ae98bdeb", + "VALIDATION.json": "7f018e8e6c23f99707ea7a412b5422b21474b6ed58392934b5bafe67194ed203", + "WORD.json": "f5ae52ba95d0edd76f85fdb4da04cd78ad46b55c9ad3b86cc098146b62032336", + "code/SELECTION.json": "a52eff0c0ed4f30424ceebb319ec80b449a5661dfa88c53a1cc35c8854962b77", + "code/assemble.py": "38a5c2811199503db6f24e74669e5d18d4fbd1a2adb3a3759930fa0f93448fa5", + "code/audit.py": "f74bf5912399068bc5cbef420562255feba4d79d4813ef6df593ac4cd0f94686", + "code/bit_audit.py": "0128a0f46f54614dfdcb130fedfe8975da26cd8c801f247cb22e3a1f9f906479", + "code/bit_global.py": "7e3ef6deadff3c50acd48769eef35a932023e252c41f9f247bd08e1fad7f3107", + "code/bit_hosted.py": "a5c5bee943dce467ac5a15508db7764eefe67f41985d8f13412d0362bff7ac20", + "code/complex_hosted.py": "829c5c4f4bdfccedadd31505f1f0a394f7a208d1446b7bbf9cc92d3aa1530c0c", + "code/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "code/residual_routes.py": "402924994a880d1ee45e42be2e7a51bd0281822046e474f5f5cc0adf885b52c7", + "evidence/assembly.log": "4813c9b302a6b07e1d276c9b939926cf8ebce5197d75703cdb061794827a21b2", + "evidence/bit-hosting.log": "20295c72cee3f6a3856f68889c5ae1a6874bd5892bef548122cc69842555f933", + "evidence/complex-hosting.log": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd", + "evidence/discovery.log": "a4482fec34eabed198c1281d33b085daa8ab1538f4573d107dba28783f568a97", + "evidence/export.log": "76145fe1bd54c65d5f4041e92b2589cb0dede760b5030bbe2042c3e502119594", + "evidence/global-audit.log": "42f3e7906f3f4a40b62923e48c792f93ccf1e58668a7993e5c5805f05666550b", + "evidence/global.log": "fdb53d5389baaf6e3074fd6bb98f320a6351d4ff6b3a7a97c1c7f92ebf85f382", + "evidence/hosting-audit.log": "1359977f74843042c039a81bf2c687cd0b931916b906fe7ca60efd9f745e9c52", + "evidence/rebuild.log": "c04d4e939822acd4f0f91c7690293f2b321c9e1fb2de342ce61b997d19e686d9", + "rebuild.py": "cb55809a7cb4bbc16be97ef0f056f0dc50e9c9e08cf80e176a0bbdabd37f3d63", + "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": "ce37fbf2b1c48fc332825d5b731ffb3bc472b71481f8be02487836d4f6518e90" + } +} diff --git a/research/e8-hosting-selected-kernel/NOTICE.md b/research/e8-hosting-selected-kernel/NOTICE.md new file mode 100644 index 0000000000..fa3b0ac153 --- /dev/null +++ b/research/e8-hosting-selected-kernel/NOTICE.md @@ -0,0 +1,5 @@ +# Attribution + +Rohan Arun with substantial OpenAI Codex assistance: hosting-aware kernel search, nine added relations, frozen hosting assignment, 64-replica composition, independent finite audits and reproducible wrapper. Apache-2.0. + +Credit chafreaky PR443/PR444/PR417/PR439 for the rank138 precursor, replica construction, kernel and residual routes; eumemic PR436/PR440/PR441 for R740 and joint retiming; DaysSky PR442 for the additional idle-data hosting extension with Claude assistance; Rohan Arun PR434/PR435/PR438, icekylinx PR433, the retained PR426/PR389/PR376/PR370, PR425/PR386 and Jacob Sussman lineage. Original source-specific licenses and assistance disclosures remain in the sibling pinned parent and retained vendor subtree. diff --git a/research/e8-hosting-selected-kernel/PRECURSOR.json b/research/e8-hosting-selected-kernel/PRECURSOR.json new file mode 100644 index 0000000000..2c6d86903f --- /dev/null +++ b/research/e8-hosting-selected-kernel/PRECURSOR.json @@ -0,0 +1 @@ +{"A":[[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]]],"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,121,[921]],[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,124,[766]],[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,[794]],[0,136,[843]],[0,136,[857]],[0,136,[871]],[0,136,[897]],[0,136,[911]],[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,[794]],[0,137,[843]],[0,137,[856]],[0,137,[870]],[0,137,[897]],[0,137,[910]],[0,137,[924]],[0,137,[960]],[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,[794]],[0,138,[842]],[0,138,[857]],[0,138,[870]],[0,138,[896]],[0,138,[911]],[0,138,[924]],[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,[794]],[0,139,[842]],[0,139,[856]],[0,139,[871]],[0,139,[896]],[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,[842]],[0,140,[856]],[0,140,[871]],[0,140,[896]],[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,[842]],[0,141,[857]],[0,141,[870]],[0,141,[896]],[0,141,[911]],[0,141,[924]],[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,[897]],[0,142,[910]],[0,142,[924]],[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,[857]],[0,143,[871]],[0,143,[897]],[0,143,[911]],[0,143,[925]],[0,143,[960]],[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,[739]],[0,144,[752]],[0,144,[785]],[0,144,[799]],[0,144,[813]],[0,144,[827]],[0,144,[841]],[0,144,[855]],[0,144,[869]],[0,144,[883]],[0,144,[909]],[0,144,[923]],[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,[739]],[0,145,[752]],[0,145,[785]],[0,145,[798]],[0,145,[812]],[0,145,[827]],[0,145,[840]],[0,145,[855]],[0,145,[869]],[0,145,[882]],[0,145,[908]],[0,145,[922]],[0,145,[957]],[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,[739]],[0,146,[752]],[0,146,[784]],[0,146,[799]],[0,146,[813]],[0,146,[826]],[0,146,[841]],[0,146,[854]],[0,146,[868]],[0,146,[883]],[0,146,[908]],[0,146,[922]],[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,[739]],[0,147,[752]],[0,147,[784]],[0,147,[798]],[0,147,[812]],[0,147,[826]],[0,147,[840]],[0,147,[854]],[0,147,[868]],[0,147,[882]],[0,147,[909]],[0,147,[923]],[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,[750]],[0,148,[785]],[0,148,[799]],[0,148,[813]],[0,148,[827]],[0,148,[840]],[0,148,[854]],[0,148,[868]],[0,148,[882]],[0,148,[909]],[0,148,[923]],[0,148,[957]],[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,[750]],[0,149,[785]],[0,149,[798]],[0,149,[812]],[0,149,[827]],[0,149,[841]],[0,149,[854]],[0,149,[868]],[0,149,[883]],[0,149,[908]],[0,149,[922]],[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,[750]],[0,150,[784]],[0,150,[799]],[0,150,[813]],[0,150,[826]],[0,150,[840]],[0,150,[855]],[0,150,[869]],[0,150,[882]],[0,150,[908]],[0,150,[922]],[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,[750]],[0,151,[784]],[0,151,[798]],[0,151,[812]],[0,151,[826]],[0,151,[841]],[0,151,[855]],[0,151,[869]],[0,151,[883]],[0,151,[909]],[0,151,[923]],[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,[738]],[0,152,[766]],[0,152,[783]],[0,152,[797]],[0,152,[811]],[0,152,[825]],[0,152,[839]],[0,152,[853]],[0,152,[867]],[0,152,[881]],[0,152,[895]],[0,152,[921]],[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,[738]],[0,153,[766]],[0,153,[783]],[0,153,[796]],[0,153,[811]],[0,153,[824]],[0,153,[839]],[0,153,[852]],[0,153,[867]],[0,153,[880]],[0,153,[894]],[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,[738]],[0,154,[766]],[0,154,[782]],[0,154,[797]],[0,154,[810]],[0,154,[825]],[0,154,[838]],[0,154,[853]],[0,154,[866]],[0,154,[881]],[0,154,[894]],[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,[738]],[0,155,[766]],[0,155,[782]],[0,155,[796]],[0,155,[810]],[0,155,[824]],[0,155,[838]],[0,155,[852]],[0,155,[866]],[0,155,[880]],[0,155,[895]],[0,155,[921]],[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,[797]],[0,156,[811]],[0,156,[825]],[0,156,[838]],[0,156,[852]],[0,156,[866]],[0,156,[880]],[0,156,[895]],[0,156,[921]],[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,[796]],[0,157,[811]],[0,157,[824]],[0,157,[838]],[0,157,[853]],[0,157,[866]],[0,157,[881]],[0,157,[894]],[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,[782]],[0,158,[797]],[0,158,[810]],[0,158,[825]],[0,158,[839]],[0,158,[852]],[0,158,[867]],[0,158,[880]],[0,158,[894]],[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,[782]],[0,159,[796]],[0,159,[810]],[0,159,[824]],[0,159,[839]],[0,159,[853]],[0,159,[867]],[0,159,[881]],[0,159,[895]],[0,159,[921]],[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,[845]],[0,160,[859]],[0,160,[885]],[0,160,[899]],[0,160,[913]],[0,160,[927]],[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,[899]],[0,161,[912]],[0,161,[926]],[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,[845]],[0,162,[858]],[0,162,[884]],[0,162,[898]],[0,162,[913]],[0,162,[926]],[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,163,[927]],[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,[927]],[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,[845]],[0,165,[858]],[0,165,[884]],[0,165,[898]],[0,165,[913]],[0,165,[926]],[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,[899]],[0,166,[912]],[0,166,[926]],[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,[845]],[0,167,[859]],[0,167,[885]],[0,167,[899]],[0,167,[913]],[0,167,[927]],[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,168,[836]],[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,[836]],[0,169,[933]],[0,169,[938]],[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,[836]],[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,171,[836]],[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,[744]],[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,[744]],[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,[744]],[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,[744]],[0,175,[834]],[0,175,[934]],[0,175,[938]],[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,[791]],[0,176,[805]],[0,176,[815]],[0,176,[829]],[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,[791]],[0,177,[804]],[0,177,[814]],[0,177,[829]],[0,177,[939]],[0,177,[946]],[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,[790]],[0,178,[805]],[0,178,[815]],[0,178,[828]],[0,178,[940]],[0,178,[945]],[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,179,[790]],[0,179,[804]],[0,179,[814]],[0,179,[828]],[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,[762]],[0,180,[777]],[0,180,[791]],[0,180,[804]],[0,180,[815]],[0,180,[828]],[0,180,[940]],[0,180,[945]],[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,[762]],[0,181,[776]],[0,181,[791]],[0,181,[805]],[0,181,[814]],[0,181,[828]],[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,[762]],[0,182,[776]],[0,182,[790]],[0,182,[804]],[0,182,[815]],[0,182,[829]],[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,[762]],[0,183,[777]],[0,183,[790]],[0,183,[805]],[0,183,[814]],[0,183,[829]],[0,183,[939]],[0,183,[946]],[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,[753]],[0,184,[767]],[0,184,[781]],[0,184,[795]],[0,184,[809]],[0,184,[823]],[0,184,[837]],[0,184,[851]],[0,184,[865]],[0,184,[879]],[0,184,[893]],[0,184,[907]],[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,[753]],[0,185,[767]],[0,185,[781]],[0,185,[795]],[0,185,[807]],[0,185,[821]],[0,185,[837]],[0,185,[851]],[0,185,[863]],[0,185,[877]],[0,185,[891]],[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,[753]],[0,186,[767]],[0,186,[779]],[0,186,[793]],[0,186,[809]],[0,186,[823]],[0,186,[835]],[0,186,[849]],[0,186,[865]],[0,186,[879]],[0,186,[891]],[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,[753]],[0,187,[767]],[0,187,[779]],[0,187,[793]],[0,187,[807]],[0,187,[821]],[0,187,[835]],[0,187,[849]],[0,187,[863]],[0,187,[877]],[0,187,[893]],[0,187,[907]],[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,[751]],[0,188,[765]],[0,188,[781]],[0,188,[795]],[0,188,[809]],[0,188,[823]],[0,188,[835]],[0,188,[849]],[0,188,[863]],[0,188,[877]],[0,188,[893]],[0,188,[907]],[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,[751]],[0,189,[765]],[0,189,[781]],[0,189,[795]],[0,189,[807]],[0,189,[821]],[0,189,[835]],[0,189,[849]],[0,189,[865]],[0,189,[879]],[0,189,[891]],[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,[751]],[0,190,[765]],[0,190,[779]],[0,190,[793]],[0,190,[809]],[0,190,[823]],[0,190,[837]],[0,190,[851]],[0,190,[863]],[0,190,[877]],[0,190,[891]],[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,[751]],[0,191,[765]],[0,191,[779]],[0,191,[793]],[0,191,[807]],[0,191,[821]],[0,191,[837]],[0,191,[851]],[0,191,[865]],[0,191,[879]],[0,191,[893]],[0,191,[907]],[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,[771]],[0,192,[822]],[0,192,[847]],[0,192,[873]],[0,192,[887]],[0,192,[901]],[0,192,[915]],[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,[770]],[0,193,[822]],[0,193,[846]],[0,193,[873]],[0,193,[886]],[0,193,[901]],[0,193,[914]],[0,193,[928]],[0,193,[973]],[0,193,[976]],[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,[754]],[0,194,[771]],[0,194,[822]],[0,194,[846]],[0,194,[872]],[0,194,[887]],[0,194,[900]],[0,194,[915]],[0,194,[928]],[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,[754]],[0,195,[770]],[0,195,[822]],[0,195,[847]],[0,195,[872]],[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,[771]],[0,196,[820]],[0,196,[847]],[0,196,[872]],[0,196,[886]],[0,196,[900]],[0,196,[914]],[0,196,[929]],[0,196,[972]],[0,196,[976]],[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,[770]],[0,197,[820]],[0,197,[846]],[0,197,[872]],[0,197,[887]],[0,197,[900]],[0,197,[915]],[0,197,[928]],[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,[754]],[0,198,[771]],[0,198,[820]],[0,198,[846]],[0,198,[873]],[0,198,[886]],[0,198,[901]],[0,198,[914]],[0,198,[928]],[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,[754]],[0,199,[770]],[0,199,[820]],[0,199,[847]],[0,199,[873]],[0,199,[887]],[0,199,[901]],[0,199,[915]],[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,[789]],[0,208,[801]],[0,208,[819]],[0,208,[831]],[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,[789]],[0,209,[800]],[0,209,[818]],[0,209,[831]],[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,[788]],[0,210,[801]],[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,[788]],[0,211,[800]],[0,211,[818]],[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,[789]],[0,212,[801]],[0,212,[818]],[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,[789]],[0,213,[800]],[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,[788]],[0,214,[801]],[0,214,[818]],[0,214,[831]],[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,[788]],[0,215,[800]],[0,215,[819]],[0,215,[831]],[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,[787]],[0,216,[803]],[0,216,[817]],[0,216,[833]],[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,[787]],[0,217,[802]],[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,[786]],[0,218,[803]],[0,218,[816]],[0,218,[833]],[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,[786]],[0,219,[802]],[0,219,[816]],[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,[787]],[0,220,[803]],[0,220,[816]],[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,[787]],[0,221,[802]],[0,221,[816]],[0,221,[833]],[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,[786]],[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,[786]],[0,223,[802]],[0,223,[817]],[0,223,[833]],[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,[773]],[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,[943]],[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,[760]],[0,226,[773]],[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,[760]],[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,[746]],[0,228,[761]],[0,228,[773]],[0,228,[862]],[0,228,[943]],[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,[746]],[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,[746]],[0,230,[760]],[0,230,[773]],[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,[746]],[0,231,[760]],[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,[743]],[0,232,[757]],[0,232,[769]],[0,232,[808]],[0,232,[861]],[0,232,[875]],[0,232,[889]],[0,232,[903]],[0,232,[917]],[0,232,[931]],[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,[743]],[0,233,[757]],[0,233,[768]],[0,233,[808]],[0,233,[860]],[0,233,[874]],[0,233,[889]],[0,233,[903]],[0,233,[916]],[0,233,[930]],[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,[743]],[0,234,[756]],[0,234,[769]],[0,234,[808]],[0,234,[860]],[0,234,[875]],[0,234,[888]],[0,234,[902]],[0,234,[917]],[0,234,[930]],[0,234,[975]],[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,[743]],[0,235,[756]],[0,235,[768]],[0,235,[808]],[0,235,[861]],[0,235,[874]],[0,235,[888]],[0,235,[902]],[0,235,[916]],[0,235,[931]],[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,[757]],[0,236,[769]],[0,236,[806]],[0,236,[861]],[0,236,[874]],[0,236,[888]],[0,236,[902]],[0,236,[916]],[0,236,[931]],[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,[757]],[0,237,[768]],[0,237,[806]],[0,237,[860]],[0,237,[875]],[0,237,[888]],[0,237,[902]],[0,237,[917]],[0,237,[930]],[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,[769]],[0,238,[806]],[0,238,[860]],[0,238,[874]],[0,238,[889]],[0,238,[903]],[0,238,[916]],[0,238,[930]],[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,[768]],[0,239,[806]],[0,239,[861]],[0,239,[875]],[0,239,[889]],[0,239,[903]],[0,239,[917]],[0,239,[931]],[0,239,[975]],[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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"v":120} \ No newline at end of file diff --git a/research/e8-hosting-selected-kernel/PROOF.md b/research/e8-hosting-selected-kernel/PROOF.md new file mode 100644 index 0000000000..1238db907f --- /dev/null +++ b/research/e8-hosting-selected-kernel/PROOF.md @@ -0,0 +1,9 @@ +# Composition and proof scope + +The precursor is reconstructed from the byte-pinned PR436 R740 word, the 57 PR443 A-frame witnesses and the final PR443 B-frame choices. The B scalar operands are checked unchanged and the canonical precursor hash is bound before applying the selected kernel. Each selected pivot response is the exact XOR of its donor responses. Pivots and donors are disjoint; each donor serves a single entrance; each entrance is contained in every participating first frame. All 980 local columns, arbitrary helper restoration and integer source spans are replayed after construction. + +Sixty-four independent bit replicas make the rank147 residual coordinates integral in complete width-64 banks. The global emitter checks the 7,620-column one-replica identity and emits all 576 calls and 426,240 helper assignments. The independent audit recomputes exact frame ranks, nested projectors, reflected programs, residual isometries, all data owners and bank partitions. The host audit then checks last-touch windows, non-overlapping slots, complete remaining banks and exact remainder children. Nine hosting mutations are rejected. + +The paid profile is reconstructed from emitted local instructions and child remainders, not accepted from the discovery score. Two rational moment engines agree. Both finite invoices are recomputed, including all 64-replica bit costs, extra residual route bound 144 and the two hosting factors. Prefix charge is 128 bits; the two-level coefficient is 288 bits charged at 320. Six bootstrap levels satisfy all 47 strict outer inequalities; the next kappa grid point fails. + +The idle-data hosting extension is inherited from PR442 as an additional mathematical assumption. See INHERITED-HOSTING-PROOF.md for that argument with its historical parameters. The all-size compiler, dirty-bank/compressed-window, restored-work, common-grid, tape, precision and analytic interfaces remain conditional. This is a finite conditional construction, not an unconditional multiplication theorem. diff --git a/research/e8-hosting-selected-kernel/README.md b/research/e8-hosting-selected-kernel/README.md new file mode 100644 index 0000000000..302a20363d --- /dev/null +++ b/research/e8-hosting-selected-kernel/README.md @@ -0,0 +1,11 @@ +# Hosting-selected response kernel + +Conditional kappa = 0.001249035299298004, 0.23769014% above PR444 and the preceding PR434 result, under the same additional idle-data hosting assumption. + +Discovery prices kernel relations together with their optimal idle-slot assignment. It retains nine additional rank-one relations that the unhosted cost model rejected. The final word has 123 pivots, 118 donor slots, total entrance rank 147, R740 and 64 bit replicas. Hosting leaves 74,528 live / 74,537 physical families and 321,536 hosted residuals; rank deficit is 19,968. The unchanged complex supplier remains eight replicas, 8,400 live families and deficit 2,496. Bit binds. + +Run `python -B research/e8-hosting-selected-kernel/verify.py /absolute/new/output`. Standard library only for verification; scipy was used only to nominate the frozen hosting assignment. The wrapper fully reruns the preceding rank138 construction and its complex phase replay, reconstructs the new precursor from pinned witnesses, checks every new response relation and local source span, emits/audits the 64-replica global template, then checks hosting, both exact moment engines, the fresh invoice and strict assembly. + +Changed-program reconstruction, global emission, independent global and hosting audits, two rational moments, fresh invoice, six bootstrap levels and 47 strict outer inequalities PASS. Full uninterrupted Python 3.11/3.14 wrappers and GitHub CI are pending at draft publication. The preceding rank138 result remains fully verified with published receipts. + +The additional hosting operator extension remains an assumption; the finite combinatorial audit does not prove it. This is not a stronger result under only the pre-hosting assumptions. All inherited compiler, dirty-bank/compressed-window, restored-work, tape/common-grid, precision and analytic obligations remain. No unconditional theorem or new Lean proof is claimed. The historical gain_over_pr434_percent field in CERTIFICATE.json compares to the old pre-hosting baseline, not the immediately preceding result. diff --git a/research/e8-hosting-selected-kernel/SELECTION.json b/research/e8-hosting-selected-kernel/SELECTION.json new file mode 100644 index 0000000000..1b700ec0de --- /dev/null +++ b/research/e8-hosting-selected-kernel/SELECTION.json @@ -0,0 +1,1520 @@ +{ + "status": "HOSTING_SCORED_KERNEL_NOMINATION_REQUIRES_EXACT_REPLAY", + "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 + ], + 978, + [ + 974, + 975, + 979 + ] + ], + [ + [ + 5 + ], + 883, + [ + 274, + 882 + ] + ], + [ + [ + 5 + ], + 827, + [ + 274, + 826 + ] + ], + [ + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + 972, + [ + 973, + 976, + 977 + ] + ], + [ + [ + 0 + ], + 950, + [ + 749, + 819, + 830, + 948 + ] + ], + [ + [ + 0 + ], + 954, + [ + 803, + 817, + 952 + ] + ], + [ + [ + 2 + ], + 963, + [ + 783, + 853, + 962 + ] + ], + [ + [ + 4 + ], + 969, + [ + 778, + 844, + 898, + 968 + ] + ], + [ + [ + 4 + ], + 971, + [ + 807, + 835, + 970 + ] + ], + [ + [ + 0 + ], + 775, + [ + 758, + 759, + 774 + ] + ], + [ + [ + 1 + ], + 859, + [ + 740, + 741, + 858 + ] + ], + [ + [ + 1 + ], + 885, + [ + 740, + 741, + 884 + ] + ], + [ + [ + 6 + ], + 920, + [ + 904, + 906, + 918 + ] + ] + ], + "total_entrance_rank": 147, + "history": [ + { + "pivot": 950, + "entrance": 1, + "donors": [ + 749, + 819, + 830, + 948 + ], + "moment": 0.9999987839981915, + "candidates": 22 + }, + { + "pivot": 954, + "entrance": 1, + "donors": [ + 803, + 817, + 952 + ], + "moment": 0.9999974065317905, + "candidates": 21 + }, + { + "pivot": 963, + "entrance": 1, + "donors": [ + 783, + 853, + 962 + ], + "moment": 0.9999962719365906, + "candidates": 18 + }, + { + "pivot": 969, + "entrance": 1, + "donors": [ + 778, + 844, + 898, + 968 + ], + "moment": 0.9999951361271407, + "candidates": 16 + }, + { + "pivot": 971, + "entrance": 1, + "donors": [ + 807, + 835, + 970 + ], + "moment": 0.9999939141423637, + "candidates": 13 + }, + { + "pivot": 775, + "entrance": 1, + "donors": [ + 758, + 759, + 774 + ], + "moment": 0.9999929285371466, + "candidates": 10 + }, + { + "pivot": 859, + "entrance": 1, + "donors": [ + 740, + 741, + 858 + ], + "moment": 0.9999921873182623, + "candidates": 7 + }, + { + "pivot": 885, + "entrance": 1, + "donors": [ + 740, + 741, + 884 + ], + "moment": 0.9999908677882754, + "candidates": 4 + }, + { + "pivot": 920, + "entrance": 1, + "donors": [ + 904, + 906, + 918 + ], + "moment": 0.9999900390922772, + "candidates": 2 + } + ], + "initial_moment": 0.9999999999929197, + "final_moment": 0.9999900390922772, + "widths": { + "4": 8, + "7": 115, + "8": 617 + }, + "replicas": 64, + "live": 74528, + "profile": { + "6": 16000, + "7": 31552, + "4": 228672, + "3": 153728, + "2": 619328, + "1": 1465920, + "5": 62208, + "8": 5184 + }, + "local_profile": { + "1": 2545, + "2": 1022, + "3": 266, + "5": 108, + "4": 357, + "8": 9, + "7": 14 + }, + "frozen_precursor_sha256": "0c5adceaed6ac3b435674be21b781acace7156c66acea091b5aace67c516ef2f" +} diff --git a/research/e8-hosting-selected-kernel/VALIDATION.json b/research/e8-hosting-selected-kernel/VALIDATION.json new file mode 100644 index 0000000000..22bd0422b4 --- /dev/null +++ b/research/e8-hosting-selected-kernel/VALIDATION.json @@ -0,0 +1,6 @@ +{ + "status": "CHANGED_PROGRAM_AND_EXACT_ASSEMBLY_PASS_FULL_WRAPPERS_PENDING", + "kappa": "0.001249035299298004", + "gain_over444_percent": 0.23769013601667183, + "previous_verified_commit": "d21614a4e458b99d1d897eebb6c30370f9aa06f1" +} diff --git a/research/e8-hosting-selected-kernel/WORD.json b/research/e8-hosting-selected-kernel/WORD.json new file mode 100644 index 0000000000..dc716fc5f9 --- /dev/null +++ b/research/e8-hosting-selected-kernel/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]],[7,274,[827,883]],[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,740,[859,885]],[3,741,[859,885]],[3,742,[743,768,769]],[2,745,[744]],[2,747,[746]],[2,748,[788,801,818,831]],[2,749,[789,800,818,831,950]],[3,755,[754,770,771]],[6,756,[757,902,903,930,931]],[2,758,[775]],[2,759,[775]],[2,761,[760]],[2,763,[762,790,791,814,815]],[9,764,[766]],[8,765,[767,821,823]],[2,772,[773]],[2,774,[775]],[2,776,[762,790,804,815,829]],[2,777,[762,791,804,815,828]],[6,778,[845,899,927,969]],[6,779,[751,753,781,863,865,891,893]],[6,780,[845,899,927]],[4,783,[782,796,797,963]],[6,784,[785,868,869,922,923]],[9,792,[794]],[9,793,[795]],[4,799,[798,854,855]],[2,803,[786,787,802,954]],[2,805,[790,791,804,814,815,828,829]],[6,806,[808,902,903,930,931]],[6,807,[809,863,865,891,893,971]],[5,810,[811,866,867,894,895]],[6,812,[750,752,813,868,869,922,923]],[2,817,[786,787,816,954]],[2,819,[800,801,818,950]],[8,820,[822]],[5,824,[825,880,881,894,895]],[7,826,[827]],[2,830,[788,789,831,950]],[2,832,[786,787,833]],[9,834,[836]],[6,835,[751,753,837,863,865,971]],[4,838,[796,797,839]],[6,840,[750,752,841,868,869]],[3,843,[842]],[6,844,[845,926,927,969]],[8,851,[821,823,849]],[4,853,[796,797,852,963]],[3,856,[857]],[3,858,[859]],[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]],[7,882,[883]],[3,884,[885]],[3,886,[770,771,846,847,887]],[3,888,[768,769,889]],[6,898,[899,926,927,969]],[8,904,[920]],[8,905,[821,823,907]],[8,906,[920]],[4,909,[854,855,908]],[5,910,[896,897,911]],[8,914,[915]],[8,918,[920]],[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]],[2,948,[950]],[461,951,[943]],[2,952,[954]],[461,953,[943]],[469,958,[957]],[468,959,[960]],[4,962,[963]],[469,964,[957]],[469,965,[957]],[468,966,[960]],[468,967,[960]],[6,968,[969]],[6,970,[971]],[466,973,[972]],[465,974,[978]],[465,975,[978]],[466,976,[972]],[466,977,[972]],[465,979,[978]],[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,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,274,[827,883]],[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,740,[859,885]],[1,741,[859,885]],[1,742,[743,768,769]],[1,745,[744]],[1,747,[746]],[1,748,[788,801,818,831]],[1,749,[789,800,818,831,950]],[1,755,[754,770,771]],[1,756,[757,902,903,930,931]],[1,758,[775]],[1,759,[775]],[1,761,[760]],[1,763,[762,790,791,814,815]],[1,764,[766]],[1,765,[767,821,823]],[1,772,[773]],[1,774,[775]],[1,776,[762,790,804,815,829]],[1,777,[762,791,804,815,828]],[1,778,[845,899,927,969]],[1,779,[751,753,781,863,865,891,893]],[1,780,[845,899,927]],[1,783,[782,796,797,963]],[1,784,[785,868,869,922,923]],[1,792,[794]],[1,793,[795]],[1,799,[798,854,855]],[1,803,[786,787,802,954]],[1,805,[790,791,804,814,815,828,829]],[1,806,[808,902,903,930,931]],[1,807,[809,863,865,891,893,971]],[1,810,[811,866,867,894,895]],[1,812,[750,752,813,868,869,922,923]],[1,817,[786,787,816,954]],[1,819,[800,801,818,950]],[1,820,[822]],[1,824,[825,880,881,894,895]],[1,826,[827]],[1,830,[788,789,831,950]],[1,832,[786,787,833]],[1,834,[836]],[1,835,[751,753,837,863,865,971]],[1,838,[796,797,839]],[1,840,[750,752,841,868,869]],[1,843,[842]],[1,844,[845,926,927,969]],[1,851,[821,823,849]],[1,853,[796,797,852,963]],[1,856,[857]],[1,858,[859]],[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,882,[883]],[1,884,[885]],[1,886,[770,771,846,847,887]],[1,888,[768,769,889]],[1,898,[899,926,927,969]],[1,904,[920]],[1,905,[821,823,907]],[1,906,[920]],[1,909,[854,855,908]],[1,910,[896,897,911]],[1,914,[915]],[1,918,[920]],[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,948,[950]],[1,951,[943]],[1,952,[954]],[1,953,[943]],[1,958,[957]],[1,959,[960]],[1,962,[963]],[1,964,[957]],[1,965,[957]],[1,966,[960]],[1,967,[960]],[1,968,[969]],[1,970,[971]],[1,973,[972]],[1,974,[978]],[1,975,[978]],[1,976,[972]],[1,977,[972]],[1,979,[978]]],"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,121,[]],[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,124,[]],[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,[]],[0,136,[843]],[0,136,[]],[0,136,[]],[0,136,[]],[0,136,[]],[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,[]],[0,137,[843]],[0,137,[856]],[0,137,[870]],[0,137,[]],[0,137,[910]],[0,137,[]],[0,137,[]],[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,[]],[0,138,[]],[0,138,[]],[0,138,[870]],[0,138,[]],[0,138,[]],[0,138,[]],[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,[]],[0,139,[]],[0,139,[856]],[0,139,[]],[0,139,[]],[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,[]],[0,140,[856]],[0,140,[]],[0,140,[]],[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,[]],[0,141,[]],[0,141,[870]],[0,141,[]],[0,141,[]],[0,141,[]],[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,[]],[0,142,[910]],[0,142,[]],[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,[]],[0,143,[]],[0,143,[]],[0,143,[]],[0,143,[925]],[0,143,[]],[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,[]],[0,144,[]],[0,144,[]],[0,144,[799]],[0,144,[]],[0,144,[]],[0,144,[]],[0,144,[]],[0,144,[]],[0,144,[]],[0,144,[909]],[0,144,[]],[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,[]],[0,145,[]],[0,145,[]],[0,145,[]],[0,145,[812]],[0,145,[]],[0,145,[840]],[0,145,[]],[0,145,[]],[0,145,[882]],[0,145,[]],[0,145,[]],[0,145,[]],[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,[]],[0,146,[]],[0,146,[784]],[0,146,[799]],[0,146,[]],[0,146,[826]],[0,146,[]],[0,146,[]],[0,146,[]],[0,146,[]],[0,146,[]],[0,146,[]],[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,[]],[0,147,[]],[0,147,[784]],[0,147,[]],[0,147,[812]],[0,147,[826]],[0,147,[840]],[0,147,[]],[0,147,[]],[0,147,[882]],[0,147,[909]],[0,147,[]],[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,[]],[0,148,[]],[0,148,[799]],[0,148,[]],[0,148,[]],[0,148,[840]],[0,148,[]],[0,148,[]],[0,148,[882]],[0,148,[909]],[0,148,[]],[0,148,[]],[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,[]],[0,149,[]],[0,149,[]],[0,149,[812]],[0,149,[]],[0,149,[]],[0,149,[]],[0,149,[]],[0,149,[]],[0,149,[]],[0,149,[]],[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,[]],[0,150,[784]],[0,150,[799]],[0,150,[]],[0,150,[826]],[0,150,[840]],[0,150,[]],[0,150,[]],[0,150,[882]],[0,150,[]],[0,150,[]],[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,[]],[0,151,[784]],[0,151,[]],[0,151,[812]],[0,151,[826]],[0,151,[]],[0,151,[]],[0,151,[]],[0,151,[]],[0,151,[909]],[0,151,[]],[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,[]],[0,152,[]],[0,152,[783]],[0,152,[]],[0,152,[]],[0,152,[]],[0,152,[]],[0,152,[853]],[0,152,[]],[0,152,[]],[0,152,[]],[0,152,[]],[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,[]],[0,153,[]],[0,153,[783]],[0,153,[]],[0,153,[]],[0,153,[824]],[0,153,[]],[0,153,[]],[0,153,[]],[0,153,[]],[0,153,[]],[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,[]],[0,154,[]],[0,154,[]],[0,154,[]],[0,154,[810]],[0,154,[]],[0,154,[838]],[0,154,[853]],[0,154,[]],[0,154,[]],[0,154,[]],[0,154,[919]],[0,154,[]],[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,[]],[0,155,[]],[0,155,[]],[0,155,[]],[0,155,[810]],[0,155,[824]],[0,155,[838]],[0,155,[]],[0,155,[]],[0,155,[]],[0,155,[]],[0,155,[]],[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,[]],[0,156,[]],[0,156,[]],[0,156,[838]],[0,156,[]],[0,156,[]],[0,156,[]],[0,156,[]],[0,156,[]],[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,[]],[0,157,[]],[0,157,[824]],[0,157,[838]],[0,157,[853]],[0,157,[]],[0,157,[]],[0,157,[]],[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,[]],[0,158,[]],[0,158,[810]],[0,158,[]],[0,158,[]],[0,158,[]],[0,158,[]],[0,158,[]],[0,158,[]],[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,[]],[0,159,[]],[0,159,[810]],[0,159,[824]],[0,159,[]],[0,159,[853]],[0,159,[]],[0,159,[]],[0,159,[]],[0,159,[]],[0,159,[956]],[0,159,[]],[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,[]],[0,160,[]],[0,160,[]],[0,160,[]],[0,160,[913]],[0,160,[]],[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,[]],[0,161,[884]],[0,161,[]],[0,161,[912]],[0,161,[]],[0,161,[]],[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,[]],[0,162,[858]],[0,162,[884]],[0,162,[898]],[0,162,[913]],[0,162,[]],[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,[]],[0,163,[898]],[0,163,[912]],[0,163,[]],[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,[]],[0,164,[898]],[0,164,[912]],[0,164,[]],[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,[]],[0,165,[858]],[0,165,[884]],[0,165,[898]],[0,165,[913]],[0,165,[]],[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,[]],[0,166,[884]],[0,166,[]],[0,166,[912]],[0,166,[]],[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,[]],[0,167,[]],[0,167,[]],[0,167,[]],[0,167,[913]],[0,167,[]],[0,167,[961]],[0,167,[]],[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,168,[]],[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,[]],[0,169,[933]],[0,169,[]],[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,[]],[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,171,[]],[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,[]],[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,[]],[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,[]],[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,[]],[0,175,[834]],[0,175,[934]],[0,175,[]],[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,[]],[0,176,[805]],[0,176,[]],[0,176,[]],[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,[]],[0,177,[]],[0,177,[]],[0,177,[]],[0,177,[939]],[0,177,[]],[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,[]],[0,178,[805]],[0,178,[]],[0,178,[]],[0,178,[940]],[0,178,[]],[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,179,[]],[0,179,[]],[0,179,[]],[0,179,[]],[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,[]],[0,180,[777]],[0,180,[]],[0,180,[]],[0,180,[]],[0,180,[]],[0,180,[940]],[0,180,[]],[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,[]],[0,181,[776]],[0,181,[]],[0,181,[805]],[0,181,[]],[0,181,[]],[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,[]],[0,182,[776]],[0,182,[]],[0,182,[]],[0,182,[]],[0,182,[]],[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,[]],[0,183,[777]],[0,183,[]],[0,183,[805]],[0,183,[]],[0,183,[]],[0,183,[939]],[0,183,[]],[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,[]],[0,184,[]],[0,184,[]],[0,184,[]],[0,184,[]],[0,184,[]],[0,184,[]],[0,184,[851]],[0,184,[]],[0,184,[]],[0,184,[]],[0,184,[]],[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,[]],[0,185,[]],[0,185,[]],[0,185,[]],[0,185,[807]],[0,185,[]],[0,185,[]],[0,185,[851]],[0,185,[]],[0,185,[877]],[0,185,[]],[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,[]],[0,186,[]],[0,186,[779]],[0,186,[793]],[0,186,[]],[0,186,[]],[0,186,[835]],[0,186,[]],[0,186,[]],[0,186,[]],[0,186,[]],[0,186,[905]],[0,186,[]],[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,[]],[0,187,[]],[0,187,[779]],[0,187,[793]],[0,187,[807]],[0,187,[]],[0,187,[835]],[0,187,[]],[0,187,[]],[0,187,[877]],[0,187,[]],[0,187,[]],[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,[]],[0,188,[765]],[0,188,[]],[0,188,[]],[0,188,[]],[0,188,[]],[0,188,[835]],[0,188,[]],[0,188,[]],[0,188,[877]],[0,188,[]],[0,188,[]],[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,[]],[0,189,[765]],[0,189,[]],[0,189,[]],[0,189,[807]],[0,189,[]],[0,189,[835]],[0,189,[]],[0,189,[]],[0,189,[]],[0,189,[]],[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,[]],[0,190,[765]],[0,190,[779]],[0,190,[793]],[0,190,[]],[0,190,[]],[0,190,[]],[0,190,[851]],[0,190,[]],[0,190,[877]],[0,190,[]],[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,[]],[0,191,[765]],[0,191,[779]],[0,191,[793]],[0,191,[807]],[0,191,[]],[0,191,[]],[0,191,[851]],[0,191,[]],[0,191,[]],[0,191,[]],[0,191,[]],[0,191,[955]],[0,191,[]],[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,[]],[0,192,[]],[0,192,[]],[0,192,[873]],[0,192,[]],[0,192,[901]],[0,192,[]],[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,[]],[0,193,[]],[0,193,[]],[0,193,[873]],[0,193,[886]],[0,193,[901]],[0,193,[914]],[0,193,[]],[0,193,[973]],[0,193,[976]],[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,[]],[0,194,[]],[0,194,[]],[0,194,[]],[0,194,[]],[0,194,[]],[0,194,[900]],[0,194,[]],[0,194,[]],[0,194,[]],[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,[]],[0,195,[]],[0,195,[]],[0,195,[]],[0,195,[]],[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,[]],[0,196,[820]],[0,196,[]],[0,196,[]],[0,196,[886]],[0,196,[900]],[0,196,[914]],[0,196,[929]],[0,196,[]],[0,196,[976]],[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,[]],[0,197,[820]],[0,197,[]],[0,197,[]],[0,197,[]],[0,197,[900]],[0,197,[]],[0,197,[]],[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,[]],[0,198,[]],[0,198,[820]],[0,198,[]],[0,198,[873]],[0,198,[886]],[0,198,[901]],[0,198,[914]],[0,198,[]],[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,[]],[0,199,[]],[0,199,[820]],[0,199,[]],[0,199,[873]],[0,199,[]],[0,199,[901]],[0,199,[]],[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,[]],[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,[]],[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,[]],[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,[]],[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,[]],[0,208,[]],[0,208,[819]],[0,208,[]],[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,[]],[0,209,[]],[0,209,[]],[0,209,[]],[0,209,[892]],[0,209,[]],[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,[]],[0,210,[]],[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,[]],[0,211,[]],[0,211,[]],[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,[]],[0,212,[]],[0,212,[]],[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,[]],[0,213,[]],[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,[]],[0,214,[]],[0,214,[]],[0,214,[]],[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,[]],[0,215,[]],[0,215,[819]],[0,215,[]],[0,215,[890]],[0,215,[]],[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,[]],[0,216,[803]],[0,216,[817]],[0,216,[]],[0,216,[906]],[0,216,[]],[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,[]],[0,217,[]],[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,[]],[0,218,[803]],[0,218,[]],[0,218,[]],[0,218,[906]],[0,218,[918]],[0,218,[]],[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,[]],[0,219,[]],[0,219,[]],[0,219,[832]],[0,219,[906]],[0,219,[]],[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,[]],[0,220,[803]],[0,220,[]],[0,220,[832]],[0,220,[904]],[0,220,[]],[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,[]],[0,221,[]],[0,221,[]],[0,221,[]],[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,[]],[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,[]],[0,223,[]],[0,223,[817]],[0,223,[]],[0,223,[904]],[0,223,[]],[0,223,[942]],[0,223,[]],[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,[]],[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,[]],[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,[]],[0,226,[]],[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,[]],[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,[]],[0,228,[761]],[0,228,[]],[0,228,[862]],[0,228,[]],[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,[]],[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,[]],[0,230,[]],[0,230,[]],[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,[]],[0,231,[]],[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,[]],[0,232,[]],[0,232,[]],[0,232,[]],[0,232,[861]],[0,232,[]],[0,232,[]],[0,232,[]],[0,232,[917]],[0,232,[]],[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,[]],[0,233,[]],[0,233,[]],[0,233,[]],[0,233,[]],[0,233,[874]],[0,233,[]],[0,233,[]],[0,233,[916]],[0,233,[]],[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,[]],[0,234,[756]],[0,234,[]],[0,234,[]],[0,234,[]],[0,234,[]],[0,234,[888]],[0,234,[]],[0,234,[917]],[0,234,[]],[0,234,[975]],[0,234,[]],[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,[]],[0,235,[756]],[0,235,[]],[0,235,[]],[0,235,[861]],[0,235,[874]],[0,235,[888]],[0,235,[]],[0,235,[916]],[0,235,[]],[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,[]],[0,236,[]],[0,236,[806]],[0,236,[861]],[0,236,[874]],[0,236,[888]],[0,236,[]],[0,236,[916]],[0,236,[]],[0,236,[974]],[0,236,[]],[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,[]],[0,237,[]],[0,237,[806]],[0,237,[]],[0,237,[]],[0,237,[888]],[0,237,[]],[0,237,[917]],[0,237,[]],[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,[]],[0,238,[806]],[0,238,[]],[0,238,[874]],[0,238,[]],[0,238,[]],[0,238,[916]],[0,238,[]],[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,[]],[0,239,[806]],[0,239,[861]],[0,239,[]],[0,239,[]],[0,239,[]],[0,239,[917]],[0,239,[]],[0,239,[975]],[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,2,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,7,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,3,3,0,0,6,0,6,5,5,6,6,0,5,3,0,0,6,0,0,0,9,5,5,0,7,0,3,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,8,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,2,0,0,0,2,0,0,469,0,0,468,0,0,4,0,0,0,0,0,6,0,6,466,0,0,0,0,0,465,0],"v":120} \ No newline at end of file diff --git a/research/e8-hosting-selected-kernel/code/SELECTION.json b/research/e8-hosting-selected-kernel/code/SELECTION.json new file mode 100644 index 0000000000..61810feffa --- /dev/null +++ b/research/e8-hosting-selected-kernel/code/SELECTION.json @@ -0,0 +1,583 @@ +{ + "bit": { + "patterns": [ + [ + 0, + [ + 7, + 7 + ], + 115 + ], + [ + 0, + [ + 8 + ], + 125 + ], + [ + 1, + [], + 125 + ], + [ + 1, + [ + 7 + ], + 115 + ], + [ + 2, + [ + 7, + 7, + 7, + 7 + ], + 28 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 180 + ], + [ + 2, + [ + 8, + 8, + 8, + 4 + ], + 32 + ], + [ + 3, + [], + 117 + ], + [ + 3, + [ + 4 + ], + 8 + ], + [ + 3, + [ + 7 + ], + 115 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 240 + ], + [ + 5, + [], + 125 + ], + [ + 5, + [ + 7 + ], + 115 + ], + [ + 6, + [ + 7, + 7, + 7, + 7, + 7, + 7 + ], + 1 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8 + ], + 239 + ], + [ + 7, + [ + 7, + 7, + 7, + 7 + ], + 28 + ], + [ + 7, + [ + 8, + 8, + 8 + ], + 180 + ], + [ + 7, + [ + 8, + 8, + 8, + 4 + ], + 32 + ], + [ + 8, + [ + 7, + 7 + ], + 115 + ], + [ + 8, + [ + 8 + ], + 125 + ] + ], + "proxy_saving": 24352.591703236576, + "stages": [ + [ + 0, + 7, + 0, + 115 + ], + [ + 0, + 7, + 1, + 115 + ], + [ + 0, + 8, + 1, + 125 + ], + [ + 1, + 7, + 2, + 115 + ], + [ + 2, + 4, + 0, + 8 + ], + [ + 2, + 4, + 1, + 8 + ], + [ + 2, + 4, + 2, + 8 + ], + [ + 2, + 4, + 3, + 8 + ], + [ + 2, + 7, + 3, + 112 + ], + [ + 2, + 8, + 0, + 617 + ], + [ + 2, + 8, + 1, + 19 + ], + [ + 3, + 4, + 4, + 8 + ], + [ + 3, + 7, + 4, + 115 + ], + [ + 4, + 8, + 2, + 583 + ], + [ + 4, + 8, + 4, + 617 + ], + [ + 5, + 7, + 6, + 115 + ], + [ + 6, + 7, + 3, + 3 + ], + [ + 6, + 7, + 5, + 3 + ], + [ + 6, + 8, + 5, + 598 + ], + [ + 6, + 8, + 6, + 105 + ], + [ + 6, + 8, + 8, + 492 + ], + [ + 7, + 4, + 5, + 8 + ], + [ + 7, + 4, + 6, + 8 + ], + [ + 7, + 4, + 7, + 8 + ], + [ + 7, + 4, + 8, + 8 + ], + [ + 7, + 7, + 5, + 112 + ], + [ + 7, + 8, + 5, + 19 + ], + [ + 7, + 8, + 7, + 617 + ], + [ + 8, + 7, + 7, + 115 + ], + [ + 8, + 7, + 8, + 115 + ], + [ + 8, + 8, + 8, + 125 + ] + ] + }, + "complex": { + "patterns": [ + [ + 0, + [ + 9 + ], + 120 + ], + [ + 2, + [ + 9 + ], + 120 + ], + [ + 4, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 6, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 8, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 10, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 12, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 13, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 14, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 15, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 16, + [ + 9 + ], + 120 + ], + [ + 17, + [ + 9 + ], + 120 + ] + ], + "proxy_saving": 17393.16581129622, + "stages": [ + [ + 0, + 9, + 0, + 120 + ], + [ + 2, + 9, + 0, + 80 + ], + [ + 2, + 9, + 1, + 40 + ], + [ + 4, + 9, + 3, + 360 + ], + [ + 6, + 9, + 0, + 360 + ], + [ + 8, + 9, + 1, + 520 + ], + [ + 8, + 9, + 5, + 80 + ], + [ + 10, + 9, + 2, + 560 + ], + [ + 10, + 9, + 3, + 40 + ], + [ + 12, + 9, + 4, + 560 + ], + [ + 12, + 9, + 7, + 40 + ], + [ + 13, + 9, + 5, + 360 + ], + [ + 13, + 9, + 6, + 200 + ], + [ + 13, + 9, + 7, + 40 + ], + [ + 14, + 9, + 6, + 360 + ], + [ + 15, + 9, + 7, + 360 + ], + [ + 16, + 9, + 8, + 120 + ], + [ + 17, + 9, + 7, + 120 + ] + ] + } +} diff --git a/research/e8-hosting-selected-kernel/code/assemble.py b/research/e8-hosting-selected-kernel/code/assemble.py new file mode 100644 index 0000000000..a6fd3e0926 --- /dev/null +++ b/research/e8-hosting-selected-kernel/code/assemble.py @@ -0,0 +1,82 @@ +"""Two exact moments for both hosted suppliers, fresh finite invoices with the hosted stock, and the strict outer +assembly of #434 (six bootstrap levels, 47 inequalities, next-grid and parameter controls). +usage: assemble.py PARENT_CHANGED_DIR BIT_DIR COMPLEX_DIR AUDIT.json OUT.json""" +import gzip, hashlib, importlib.util, json, math, sys +from fractions import Fraction as Q +from pathlib import Path +par, bd, cd, ap, outp = map(Path, sys.argv[1:6]) +def load(name): + sp = importlib.util.spec_from_file_location('hosted_' + name, par / 'work/pr361/code/engines' / (name + '.py')) + mod = importlib.util.module_from_spec(sp); sp.loader.exec_module(mod); return mod +M, Other, Outer = load('moment'), load('base_two_moment'), load('outer') +audit = json.loads(ap.read_text()); bg = json.loads((bd / 'GLOBAL.json').read_text()); ch = json.loads((cd / 'HOSTED.json').read_text()) +assert audit['bit_template_sha256'] == bg['template_sha256'] and audit['complex_template_sha256'] == ch['template_sha256'] +# ---------------- bit: two moments and the parent's invoice formulas with the hosted stock +P = {int(r): n for r, n in audit['bit_profile'].items()}; m, W = 64, audit['bit_live']; E = sum(P.values()) +geo = json.loads((par / 'bit426-source-centres/global/GEOMETRY.json').read_text()) +pg = json.loads((par / 'bit426-source-centres/global/GLOBAL.json').read_text()) +T, L, R, V, K = pg['replicas'], 9, pg['R'], 120, 4 +mass = sum(r * z for r, z in P.items()); assert m * W - mass == 312*T +physical = W + 9; d = m * m; N = 2 * m +unit = L * T * pg['local_additions'] + pg['bridge_additions'] +J = 8 * T * L * (2 * V + R) + 8 * (2 * K * V * T) + 2 * L * T * R + 2 * pg['copy_erase_episodes'] # every helper route charged (bank or hosted) +high = 16 * (d + 1) ** 2; good = 8 * m * m + 8; compiler = 128 * N ** 3 +selectors = 2 * L * T * ((W - 1) + R * m * (geo['max_route_factors'] + pg.get('extra_helper_route_factor_bound', 0) + 2 + (m - 1) + m)) # +2: hosted route may add a slot permutation and U_q +prefix = int(pg['global_prefix_bound']); charged_prefix = 64 * ((prefix.bit_length() + 63) // 64) +coefficient = unit + J * high + J * physical + E * (good + compiler) + 16 * m ** 3 + pg['copy_erase_episodes'] + selectors + prefix + 1 +two = (coefficient + 1) ** 2 * (E + 1) ** 2; charged_two = 64 * ((two.bit_length() + 63) // 64) +assert two < 1 << charged_two and 2 * max(P) ** 2 < m * m +row = 2 * (m * m + 1) + 9909 + 252; assert row == 18355 < 20161 +root = M.certify(P, m, W, True); c = Q(root['lower']); chi = Q(root['upper']) +fb = 32 * m * m * E +lo, hi = Other.moment(m, W, list(P.items()), c); bl, bh = Other.moment(m, W, [(1, fb)], c); assert hi + bh / 10 ** 16 < 1 +lo2, hi2 = Other.moment(m, W, list(P.items()), chi); bl2, bh2 = Other.moment(m, W, [(1, fb)], chi); assert lo2 + bl2 / 10 ** 16 > 1 +# ---------------- complex: two moments and the parent's invoice with the hosted stock +PC = {int(r): n for r, n in audit['complex_profile'].items()}; mc, WC = 73, audit['complex_live']; EC = sum(PC.values()) +massc = sum(r * z for r, z in PC.items()); assert mc * WC - massc == 2496 +rc = M.certify(PC, mc, WC, True); b = Q(int(Q(rc['lower']) * 10 ** 18), 10 ** 18) +fbc = 32 * mc * mc * EC +l3, h3 = Other.moment(mc, WC, list(PC.items()), b); b3, bh3 = Other.moment(mc, WC, [(1, fbc)], b); assert h3 + bh3 / 10 ** 16 < 1 +integ = json.loads((par / 'split-centres/INTEGRATION.json').read_text()); inv = integ['finite_invoice'] +physc = ch['physical']; Rc = 560; v = 120 +compilerc = 64 * (mc + 1) ** 3 +pervertex = inv['pervertex'] - integ['physical'] * (64 + 1) + physc * (64 + 1) - integ['live'] + WC # stock-dependent terms re-based +r_ = mc // 2; group = 2 ** (r_ * r_) * math.prod(2 ** (2 * i) - 1 for i in range(1, r_ + 1)); stock = group * physc +smass = group * massc; logical = group * max(pervertex, inv['pervertex']) + 64; router = compilerc * (logical + 1) * (stock + 1) ** 2 +GG, EE, C0 = 1 << 30000, 1 << 100000, 1 << 210000; BB = smass + EE +literal = 2 * GG * stock ** 2 + 8 * smass + 4 * stock + 4 + 32 * mc +assert logical < 1 << 6050 and router < GG and literal < EE and BB < 1 << 100001 and 32 * mc * BB * BB < C0 and 2 * BB + 18 < C0 +depth = 2; assert mc ** depth > 2 * max(PC) ** depth +rowc = depth * stock.bit_length() + 9909 + 252; assert rowc < 20161 +# ---------------- outer assembly exactly as #434's combined.py +eta = beta = Q(1, 10 ** 18); grid = Q(1, 10 ** 18); s = min(c, (1 - beta) * b) - Q(1, 10 ** 24) +assert 0 < s < c and s < (1 - beta) * b +chain = [Q(384599, 10 ** 10)]; cutoffs = [] +def ceil(x): return -((-x.numerator) // x.denominator) +for j 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 old < a < s < 1 - a and gap > 0 + cutoff = max(ceil(36 / gap ** 2), ceil(2 * (4 + charged_two) / gap)); assert cutoff * gap ** 2 >= 36 and cutoff * gap >= 2 * (4 + charged_two) + 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) +parent_k = Q(566550276142217, 500000000000000000) +res = dict(status='PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY', kappa=str(k), kappa_decimal=format(float(k), '.18f'), + bit_lower=str(c), complex_lower=str(b), binding_component='bit' if c < (1 - beta) * b else 'complex', + gain_over_pr434_percent=float(100 * (k / parent_k - 1)), + bit=dict(live=W, physical=physical, maxchild=max(P), rank_mass=mass, hosted_residuals=audit['bit_hosted_residuals'], + prefix_bits=prefix.bit_length(), charged_prefix_bits=charged_prefix, coefficient_bits=coefficient.bit_length(), + two_level_coefficient_bits=two.bit_length(), charged_two_level_coefficient_bits=charged_two, row_coefficient=row), + complex=dict(live=WC, physical=physc, maxchild=max(PC), rank_mass=massc, hosted_residuals=audit['complex_hosted_residuals'], + physical_stock_bits=stock.bit_length(), router_bits=router.bit_length(), literal_bits=literal.bit_length(), row_coefficient=rowc), + strict_outer_constraints={n: str(x) for n, x in a['strict_constraints'].items()}, outer_controls=controls, bootstrap=cutoffs, + bit_template_sha256=bg['template_sha256'], complex_template_sha256=ch['template_sha256']) +outp.write_text(json.dumps(res, indent=2) + '\n') +print(res['status'], res['kappa_decimal'], 'binding', res['binding_component'], 'gain over #434 %.4f%%' % res['gain_over_pr434_percent']) diff --git a/research/e8-hosting-selected-kernel/code/audit.py b/research/e8-hosting-selected-kernel/code/audit.py new file mode 100644 index 0000000000..1485c4d7d9 --- /dev/null +++ b/research/e8-hosting-selected-kernel/code/audit.py @@ -0,0 +1,161 @@ +"""Independent audit of the two idle-axis-hosted templates (no code shared with the generators). +Re-derives hosting windows from each template's own schedule and checks, for every replica and invocation: + * every helper residual has exactly one owner: a bank slot or a hosted slot; + * a hosted slot lies on the data family of the idle child it names, inside that child's pending coordinates, + disjoint from every other hosted slot of the family, and its invocation lies strictly between the last + local invocation or bridge naming that pair and the child (the window); + * the child keeps exactly the remaining coordinates; banks are tiled exactly (bit) or padded (complex); + * the emitted paid profile, live stock and rank deficit 2496 are recomputed from scratch. +Mutation controls must be rejected. usage: audit.py PARENT_CHANGED_DIR BIT_DIR COMPLEX_DIR OUT.json""" +import copy, gzip, hashlib, json, sys +from collections import Counter, defaultdict +from pathlib import Path +V, K, T, L = 120, 4, 8, 9 +DATA = 2 * K * V * T + +def wins(events): + """events: ('local', stage, pair) | ('bridge', a, b) | ('idle', idx, pair); window = local stages after the last + local/bridge touch of the pair and before the child""" + last = {}; seen = []; w = {} + for pos, e in enumerate(events): + if e[0] == 'local': seen.append((pos, e[1], e[2])); last[e[2]] = pos + elif e[0] == 'bridge': last[e[1]] = pos; last[e[2]] = pos + else: + lo = last.get(e[2], -1); w[e[1]] = {s for q, s, p in seen if lo < q < pos and p != e[2]} + return w + +def audit_bit(t, parent_t, widths): + T=64; DATA=960*T + assert t['replicas']==parent_t['replicas']==T + assert t['local_programs'] == parent_t['local_programs'] and len(t['calls']) == 9*T + ev = []; rank = {}; pair = {} + for e in t['schedule']: + if e['kind'] == 'local_cover_sweep': ev.append(('local', e['stage'], e['pair'])) + elif e['kind'] == 'bridge': ev.append(('bridge', e['dst'], e['src'])) + elif e['kind'] == 'idle': + ev.append(('idle', e['idx'], e['pair'])); rank[e['idx']] = e['rank']; pair[e['idx']] = e['pair'] + W = wins(ev); hs = t['hosting'] + used = defaultdict(set); hosted = {} + for i, cp, off, w, s, h in hs['slots']: + assert s in W[i], ('window', i, s) + assert w == widths[h] and 0 <= off and off + w <= rank[i] + cells = set(range(off, off + w)); assert not cells & used[i, cp], ('overlap', i, cp); used[i, cp] |= cells + assert (s, h) not in hosted; hosted[s, h] = (i, cp, off, w) + rem = {} + for i in rank: + if rank[i] == 0: continue + for cp in range(2 * V): rem[i, cp] = rank[i] - len(used[i, cp]) + rr = Counter(rem[i, cp] for cp in range(2 * V)) + if str(i) in hs['remainders']: assert {int(k): v for k, v in hs['remainders'][str(i)].items()} == dict(rr) + else: assert rr == Counter({rank[i]: 2 * V}) + occ = defaultdict(set); LIVE = t['live']; bank_lo = {} + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners']; assert len(own) == 2 * V + len(widths) + assert own[:2 * V] == next(q for q in parent_t['calls'] if (q['stage'], q['replica']) == (s, rep))['owners'][:2 * V] + for h, (f, r) in enumerate(own[2 * V:]): + if (s, h) in hosted: + i, cp, off, w = hosted[s, h]; side, port = divmod(cp, V) + assert r == ['hosted', i, off, w] and f == rep * 960 + (2 * pair[i] + side) * V + port + assert pair[i] != p + occ['h', f, i, s, rep, h] = True + else: + assert r[0] == 'bank' and r[2] == widths[h] and DATA <= f < LIVE + cells = set(range(r[1], r[1] + r[2])); assert cells <= set(range(64)) and not cells & occ[f]; occ[f] |= cells + bank_lo[f] = s + banks = [f for f in occ if isinstance(f, int)] + assert sorted(banks) == list(range(DATA, LIVE)) and all(occ[f] == set(range(64)) for f in banks) + paid = Counter() + for c in t['calls']: + for z in t['local_programs'][c['orientation']]: + if z[0] == 0 and z[4]: paid[z[4]] += 1 + if z[0] == 2: paid[z[5]] += 1 + for (i, cp), r_ in rem.items(): + if r_: paid[r_] += T + mass = sum(r * n for r, n in paid.items()); assert 64 * LIVE - mass == 312*T + assert 64 * 64 > 2 * max(paid) ** 2 + return paid, sum(1 for _ in hosted) * T + +def audit_complex(t, parent_t, local_checks): + R = 560; m = 73 + assert t['local_programs'] == parent_t['local_programs'] and len(t['calls']) == 72 + prank = {} + for it in parent_t['idle_children']: prank.setdefault(it['child'], it['rank']) + stage_pair = {e['stage']: e['pair'] for e in t['recipe'] if e['kind'] == 'local'} + ev = []; side = {}; pairs = {} + for e in t['execution_schedule']: + if e['kind'] == 'local_cover_sweep': ev.append(('local', e['stage'], stage_pair[e['stage']])) + elif e['kind'] == 'bridge': ev.append(('bridge', e['dst'], e['src'])) + elif e['kind'] == 'idle_cover_sweep': + for sd, ch in enumerate(e['child_indices']): + if ch in prank: ev.append(('idle', ch, e['pair'])); side[ch] = sd; pairs[ch] = e['pair'] + W = wins(ev); hs = t['hosting'] + used = defaultdict(set); hosted = {} + for i, port, off, w, s, h in hs['slots']: + assert w == 9 and s in W[i] and 0 <= off and off + 9 <= prank[i] + cells = set(range(off, off + 9)); assert not cells & used[i, port]; used[i, port] |= cells + assert (s, h) not in hosted; hosted[s, h] = (i, port, off) + rem = {} + for it in parent_t['idle_children']: rem[it['child'], it['port']] = it['rank'] - len(used[it['child'], it['port']]) + got = {(it['child'], it['port']): it['rank'] for it in t['idle_children']} + assert got == {k: r for k, r in rem.items() if r} and all(it['replicas'] == T for it in t['idle_children']) + LIVE = t['live']; occ = defaultdict(set) + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners']; assert len(own) == 2 * V + R + assert own[:2 * V] == next(q for q in parent_t['calls'] if (q['stage'], q['replica']) == (s, rep))['owners'][:2 * V] + for h, (f, r) in enumerate(own[2 * V:]): + if (s, h) in hosted: + i, port, off = hosted[s, h] + assert r == [3, i, off] and f == rep * 960 + (2 * pairs[i] + side[i]) * V + port and pairs[i] != p + else: + assert r[0] == 2 and 0 <= r[1] < 8 and DATA <= f < LIVE and r[1] not in occ[f]; occ[f].add(r[1]) + banks = sorted(occ); assert banks == list(range(DATA, LIVE)) + paid = Counter() + for c in t['calls']: + for r_, z in local_checks[c['orientation']]['paid_profile'].items(): paid[int(r_)] += z + for (ch, port), r_ in rem.items(): + if r_: paid[r_] += T + for f in banks: paid[m - 9 * len(occ[f])] += 1 + mass = sum(r * n for r, n in paid.items()); assert m * LIVE - mass == 2496 + assert m * m > 2 * max(paid) ** 2 + return paid, len(hosted) * T + +def main(): + par, bd, cd, outp = map(Path, sys.argv[1:5]) + pbt = json.loads(gzip.decompress((par / 'bit426-source-centres/global/GLOBAL-TEMPLATE.json.gz').read_bytes())) + bt = json.loads(gzip.decompress((bd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())) + bg = json.loads((bd / 'GLOBAL.json').read_text()) + assert hashlib.sha256(gzip.decompress((bd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest() == bg['template_sha256'] + st = json.loads((par / 'bit426-source-centres/records/249-states.json').read_text()) + fs = json.loads((par / 'bit426-source-centres/records/frames.json').read_text())['frames'] + widths = [8 - fs[str(st['initial'][str(i)])]['dim'] for i in range(240, st['n'])] + pct = json.loads(gzip.decompress((par / 'split-centres/GLOBAL-TEMPLATE.json.gz').read_bytes())) + ct = json.loads(gzip.decompress((cd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())) + ch = json.loads((cd / 'HOSTED.json').read_text()) + assert hashlib.sha256(gzip.decompress((cd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest() == ch['template_sha256'] + lc = json.loads((par / 'split-centres/LOCAL-CHECKS.json').read_text()) + bp, bh = audit_bit(bt, pbt, widths); assert bp == Counter({int(k): v for k, v in bg['profile'].items()}) + cp, chh = audit_complex(ct, pct, lc); assert cp == Counter({int(k): v for k, v in ch['global_profile'].items()}) + controls = [] + def reject(name, fn, which): + q = copy.deepcopy(bt if which == 'bit' else ct); fn(q) + try: + (audit_bit(q, pbt, widths) if which == 'bit' else audit_complex(q, pct, lc)) + except (AssertionError, KeyError, IndexError, StopIteration): controls.append(name) + else: raise AssertionError('mutation accepted: ' + name) + def outside(q): # move one hosted residual to a stage outside its window + sl = q['hosting']['slots'][0]; i = sl[0]; s_bad = next(s for s in range(9) if s not in q['hosting']['windows'][str(i)][2]); sl[4] = s_bad + reject('bit: hosted residual outside its window', outside, 'bit') + reject('bit: overlapping hosted coordinates', lambda q: q['hosting']['slots'][1].__setitem__(2, q['hosting']['slots'][0][2]) if q['hosting']['slots'][1][:2] == q['hosting']['slots'][0][:2] else q['hosting']['slots'][1].__setitem__(1, q['hosting']['slots'][0][1]) or q['hosting']['slots'][1].__setitem__(2, q['hosting']['slots'][0][2]), 'bit') + reject('bit: understated live stock', lambda q: q.__setitem__('live', q['live'] - 1), 'bit') + reject('bit: hosted owner on the active pair', lambda q: q['calls'][0]['owners'].__setitem__(240 + next(h for h in range(len(widths)) if q['calls'][0]['owners'][240 + h][1][0] == 'hosted'), [0, ['hosted', 0, 0, 8]]), 'bit') + reject('bit: missing remainder child', lambda q: q['hosting']['slots'].pop(), 'bit') + reject('complex: hosted residual outside its window', lambda q: q['hosting']['slots'][0].__setitem__(4, next(s for s in range(9) if s not in q['hosting']['windows'][str(q['hosting']['slots'][0][0])][2])), 'complex') + reject('complex: remainder child understated', lambda q: q['idle_children'][0].__setitem__('rank', q['idle_children'][0]['rank'] - 1), 'complex') + reject('complex: dropped bank', lambda q: q.__setitem__('live', q['live'] - 1), 'complex') + reject('complex: duplicated hosted residual', lambda q: q['hosting']['slots'].append(list(q['hosting']['slots'][0])), 'complex') + res = dict(status='PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT', bit_template_sha256=bg['template_sha256'], complex_template_sha256=ch['template_sha256'], + bit_profile={str(k): v for k, v in sorted(bp.items())}, complex_profile={str(k): v for k, v in sorted(cp.items())}, + bit_live=bt['live'], complex_live=ct['live'], bit_hosted_residuals=bh, complex_hosted_residuals=chh, + bit_maxchild=max(bp), complex_maxchild=max(cp), mutations_rejected=controls) + outp.write_text(json.dumps(res, indent=2) + '\n'); print(json.dumps({k: v for k, v in res.items() if 'profile' not in k})) +if __name__ == '__main__': main() diff --git a/research/e8-hosting-selected-kernel/code/bit_audit.py b/research/e8-hosting-selected-kernel/code/bit_audit.py new file mode 100644 index 0000000000..41d2b35d55 --- /dev/null +++ b/research/e8-hosting-selected-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); T=64; DATA=960*T; assert T*(8*RR-ENT)%64==0 + NB=T*(8*RR-ENT)//64; LIVE=DATA+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,T,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=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 0 and x[2]} + avail = Counter() + for s in range(L): + for w in width: avail[s, w] += 1 + sel = HERE / 'SELECTION.json'; key = 'bit' + if DISCOVER: + ys, zs, val = HC.solve(win, 2 * V, dict(avail), M, group=None); HC.save_selection(sel, key, ys, zs, val) + ys, zs, val = HC.load_selection(sel, key) + helpers = {s: [(h, width[h]) for h in range(R)] for s in range(L)} + slots, rem = HC.expand(win, ys, zs, helpers, 2 * V) + hosted = {(s, h): (i, c, off, w) for i, c, off, w, s, h in slots} + # remaining helpers -> exact width-64 banks (per stage, same set of helpers in every replica) + left = {s: [h for h in range(R) if (s, h) not in hosted] for s in range(L)} + nb = {}; place = {} + for s in range(L): + wl = {h: width[h] for h in left[s]} + slotsS = sorted(((wl[h], rep, h) for rep in range(T) for h in left[s]), key=lambda x: (-x[0], x[1], x[2])) + by = {} + for w_, rep, h in slotsS: by.setdefault(w_, []).append((rep, h)) + bins = [] + def take(w_): return by[w_].pop(0) + for w_ in sorted(by, reverse=True): + if w_ == 8: continue + while by.get(w_): + cont = []; off = 0 + if w_ == 7: + for _ in range(8): rep, h = take(7); cont.append((rep, h, off, 7)); off += 7 + rep, h = take(8); cont.append((rep, h, off, 8)); off += 8 + else: + for _ in range(64 // w_): rep, h = take(w_); cont.append((rep, h, off, w_)); off += w_ + assert off == 64; bins.append(cont) + while by.get(8): + cont = []; off = 0 + for _ in range(8): rep, h = take(8); cont.append((rep, h, off, 8)); off += 8 + bins.append(cont) + nb[s] = len(bins) + for b, cont in enumerate(bins): + for rep, h, off, w_ in cont: place[s, rep, h] = (b, off, w_) + base = [DATA] + for s in range(L): base.append(base[-1] + nb[s]) + LIVE = base[-1] + # owners + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners'][:2 * V] + for h in range(R): + if (s, h) in hosted: + i, cp, off, w = hosted[s, h]; pair = win[i][0]; side, port = divmod(cp, V) + own.append([rep * 960 + (2 * pair + side) * V + port, ['hosted', i, off, w]]) + else: + b, off, w = place[s, rep, h]; own.append([base[s] + b, ['bank', off, w]]) + assert len({(f, tuple(r)) for f, r in own}) == 2 * V + R and all(0 <= f < LIVE for f, r in own) + c['owners'] = own + # profile: local programs unchanged; idle children replaced by remainders + paid = Counter() + for c in t['calls']: + for z in t['local_programs'][c['orientation']]: + if z[0] == 0 and z[4]: paid[z[4]] += 1 + if z[0] == 2: paid[z[5]] += 1 + remainder = {} + for e in t['schedule']: + if e['kind'] == 'idle' and e['rank']: + i = e['idx'] + if i in win: + rr = Counter(rem[i, cp] for cp in range(2 * V)); remainder[i] = {str(k): v for k, v in sorted(rr.items())} + for r_, n in rr.items(): + if r_: paid[r_] += n * T + else: + paid[e['rank']] += 2 * V * T + mass = sum(r * n for r, n in paid.items()); assert M * LIVE - mass == 312*T, M * LIVE - mass + t.update(version='compressed-nine-e8-bit-v1+idle-axis-hosting', live=LIVE, + hosting=dict(windows={str(i): [w[0], w[1], sorted(w[2])] for i, w in win.items()}, + slots=[list(x) for x in slots], remainders=remainder, banks_per_stage=nb, + rule='helper (stage s, helper h) of replica r owns coordinates [off, off+w) of the pending idle-child ' + 'projector of data family r*960+(2*pair+side)*120+port (copy = side*120+port); s lies strictly between ' + 'the last local/bridge touch of that pair and the child; the child keeps the remaining coordinates.'), + helper_route='bank owner (exact width-64 tiling of the unhosted residuals of each stage) or hosted owner (data family, pending idle coordinates)') + tb = json.dumps(t, separators=(',', ':'), sort_keys=True).encode(); (out / 'GLOBAL-TEMPLATE.json.gz').write_bytes(gzip.compress(tb, mtime=0)) + res = dict(g); res.update(status='PASS_IDLE_AXIS_HOSTED_BIT_TEMPLATE', live=LIVE, physical=LIVE + 9, template_sha256=hashlib.sha256(tb).hexdigest(), + parent_template_sha256=g['template_sha256'], profile=dict(sorted(paid.items())), paid_calls=sum(paid.values()), rank_mass=mass, + maxchild=max(paid), banks_per_stage_hosted=nb, hosted_residuals_per_replica=len(slots), hosted_residuals=len(slots) * T, + hosted_coordinates_per_replica=sum(x[3] for x in slots), saved_idle_cost_proxy=val, seconds=time.monotonic() - t0) + res['bank_assignments'] = sum(1 for c in t['calls'] for f, r in c['owners'][2 * V:] if r[0] == 'bank') + (out / 'GLOBAL.json').write_text(json.dumps(res, indent=2) + '\n') + print(json.dumps({k: res[k] for k in ('live', 'maxchild', 'hosted_residuals', 'banks_per_stage_hosted', 'rank_mass')}), flush=True) +if __name__ == '__main__': + DISCOVER = '--discover' in sys.argv; args = [a for a in sys.argv[1:] if a != '--discover'] + main(Path(args[0]), Path(args[1]), Path(args[2])) diff --git a/research/e8-hosting-selected-kernel/code/complex_hosted.py b/research/e8-hosting-selected-kernel/code/complex_hosted.py new file mode 100644 index 0000000000..56e15c15ae --- /dev/null +++ b/research/e8-hosting-selected-kernel/code/complex_hosted.py @@ -0,0 +1,87 @@ +"""Idle-axis hosting for #433's compressed nine-stage complex template (m=73, R=560, whole rank-nine residuals). +Local programs, data routes and the cover correction are unchanged; bank slots of hosted residuals move onto pending +idle-child coordinates of untouched data families; unhosted residuals are re-tiled eight per bank with one paid pad +(a final partial bank pays the larger pad). usage: complex_hosted.py SPLIT_CENTRES_DIR OUT""" +import gzip, hashlib, json, math, sys, time +from collections import Counter +from pathlib import Path +HERE = Path(__file__).resolve().parent +sys.path.insert(0, str(HERE)) +import hosting_core as HC +V, K, T, L, M, R = 120, 4, 8, 9, 73, 560 +DATA = 2 * K * V * T +DISCOVER = False +def main(src, out): + t0 = time.monotonic(); out.mkdir(parents=True, exist_ok=False) + blob = gzip.decompress((src / 'GLOBAL-TEMPLATE.json.gz').read_bytes()); t = json.loads(blob) + integ = json.loads((src / 'INTEGRATION.json').read_text()); checks = json.loads((src / 'LOCAL-CHECKS.json').read_text()) + assert hashlib.sha256(blob).hexdigest() == integ['global_template_sha256'] and t['live'] == integ['live'] + rank = {} + for it in t['idle_children']: + assert it['replicas'] == T; rank.setdefault(it['child'], it['rank']); assert rank[it['child']] == it['rank'] + pair_of_stage = {e['stage']: e['pair'] for e in t['recipe'] if e['kind'] == 'local'} + sched = []; side_of = {}; pair_of = {} + for e in t['execution_schedule']: + if e['kind'] == 'local_cover_sweep': sched.append(dict(kind='local', stage=e['stage'], pair=pair_of_stage[e['stage']])) + elif e['kind'] == 'bridge': sched.append(dict(kind='bridge', dst=e['dst'], src=e['src'])) + elif e['kind'] == 'idle_cover_sweep': + for sd, ch in enumerate(e['child_indices']): + if ch in rank: + sched.append(dict(kind='idle', pair=e['pair'], rank=rank[ch], idx=ch)); side_of[ch] = sd; pair_of[ch] = e['pair'] + win = {k: x for k, x in HC.windows(sched).items() if x[1] >= 9 and x[2]} + avail = {(s, 9): R for s in range(L)} + sel = HERE / 'SELECTION.json'; key = 'complex' + if DISCOVER: + ys, zs, val = HC.solve(win, V, avail, M, pad_value=HC.cost(1, M) / 8); HC.save_selection(sel, key, ys, zs, val) + ys, zs, val = HC.load_selection(sel, key) + slots, rem = HC.expand(win, ys, zs, {s: [(h, 9) for h in range(R)] for s in range(L)}, V) + hosted = {(s, h): (i, port, off) for i, port, off, w, s, h in slots} + # re-tile unhosted residuals: per stage, z = rank among (replica, helper) unhosted pairs; eight per bank + base = [DATA]; tile = {}; partial = Counter() + for s in range(L): + left = [(rep, h) for rep in range(T) for h in range(R) if (s, h) not in hosted] + for z, (rep, h) in enumerate(left): tile[s, rep, h] = divmod(z, 8) + nb = -(-len(left) // 8); base.append(base[-1] + nb) + if len(left) % 8: partial[M - 9 * (len(left) % 8)] += 1 + full = len(left) // 8 + partial[M - 72] += full + W = base[-1] + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners'][:2 * V] + for h in range(R): + if (s, h) in hosted: + i, port, off = hosted[s, h]; own.append([rep * 960 + (2 * pair_of[i] + side_of[i]) * V + port, [3, i, off]]) + else: + b, sl = tile[s, rep, h]; own.append([base[s] + b, [2, sl]]) + assert len({(f, tuple(r)) for f, r in own}) == 2 * V + R and all(f < W for f, r in own) + c['owners'] = own + paid = Counter() + for c in t['calls']: + for r_, z in checks[c['orientation']]['paid_profile'].items(): paid[int(r_)] += z + newidle = [] + for it in t['idle_children']: + ch, port = it['child'], it['port']; rr = rem.get((ch, port), it['rank']) if ch in win else it['rank'] + if rr: newidle.append(dict(child=ch, port=port, rank=rr, hosted=it['rank'] - rr, replicas=T)); paid[rr] += T + for r_, n in partial.items(): paid[r_] += L * n if False else n * 1 + # padding: one pad child per bank per stage (already per-stage counted above), the template replays all stages + mass = sum(r * n for r, n in paid.items()); D = M * W - mass + assert D == 2496, D + t.update(version='hamming-mutable-basis-nine-v1+idle-axis-hosting', live=W, idle_children=newidle, + physical=W + R + (integ['physical'] - integ['live'] - R), + hosting=dict(windows={str(i): [w[0], w[1], sorted(w[2])] for i, w in win.items()}, sides=side_of, pairs=pair_of, + slots=[list(x) for x in slots], banks=[base[s + 1] - base[s] for s in range(L)])) + t['bank_padding']['families'] = list(range(DATA, W)); t['cover_final_correction']['families'] = [0, W] + t['cover_final_correction']['charged_calls_per_cover'] = W + for e in t['execution_schedule']: + if e['kind'] == 'bank_padding_cover_sweep': e['families'] = [DATA, W] + elif e['kind'] == 'translate_every_live_family': e.update(t['cover_final_correction']) + tb = json.dumps(t, sort_keys=True, separators=(',', ':')).encode(); (out / 'GLOBAL-TEMPLATE.json.gz').write_bytes(gzip.compress(tb, mtime=0)) + res = dict(status='PASS_IDLE_AXIS_HOSTED_COMPLEX_TEMPLATE', parent_template_sha256=integ['global_template_sha256'], + template_sha256=hashlib.sha256(tb).hexdigest(), live=W, physical=t['physical'], global_profile=dict(sorted(paid.items())), + rank_mass=mass, deficit=D, maxchild=max(paid), hosted_residuals=len(slots) * T, banks_per_stage=t['hosting']['banks'], + saved_cost_proxy=val, seconds=time.monotonic() - t0) + (out / 'HOSTED.json').write_text(json.dumps(res, indent=2) + '\n') + print(json.dumps({k: res[k] for k in ('live', 'maxchild', 'hosted_residuals', 'banks_per_stage', 'deficit')})) +if __name__ == '__main__': + DISCOVER = '--discover' in sys.argv; args = [a for a in sys.argv[1:] if a != '--discover'] + main(Path(args[0]), Path(args[1])) diff --git a/research/e8-hosting-selected-kernel/code/hosting_core.py b/research/e8-hosting-selected-kernel/code/hosting_core.py new file mode 100644 index 0000000000..68b536daa9 --- /dev/null +++ b/research/e8-hosting-selected-kernel/code/hosting_core.py @@ -0,0 +1,138 @@ +"""Idle-axis hosting: place whole dirty-helper residuals on the pending coordinates of an idle data family. + +A data family that is advanced by an idle child from level a to level b receives the commuting coordinate factors of +that child. If the family is untouched (no local invocation on its pair and no bridge naming its pair) during an +interval of local invocations ending at the child, a helper residual of width w from an invocation inside that +interval may own w of those pending coordinates instead of a bank slot. The child keeps only the remaining +coordinates. This module computes the windows from the recipe and chooses, per replica, how many residuals of each +width each child hosts (exact integer programme), then expands that choice into explicit slot assignments. +Standard library plus scipy for the integer programme; the emitted assignment is re-checked without scipy.""" +import math +from collections import Counter, defaultdict + +def windows(schedule): + """schedule: ordered events dict(kind='local',stage,pair) | dict(kind='bridge',dst,src) | dict(kind='idle',pair,rank,idx). + Returns {idx: (pair, rank, frozenset(stages))} - stages whose invocation lies strictly between the last touch of + the pair and the idle child.""" + last = {}; out = {}; locals_ = [] + for pos, e in enumerate(schedule): + k = e['kind'] + if k == 'local': + locals_.append((pos, e['stage'], e['pair'])); last[e['pair']] = pos + elif k == 'bridge': + last[e['dst']] = pos; last[e['src']] = pos + elif k == 'idle': + p = e['pair']; lo = last.get(p, -1) + st = frozenset(s for q, s, pp in locals_ if lo < q < pos and pp != p) + out[e['idx']] = (p, e['rank'], st) # an idle child acts on other coordinates (or the other member): not a touch + return out + +def patterns(rank, widths, maxk=12): + """multisets of widths with sum <= rank (as sorted tuples)""" + ws = sorted(set(widths), reverse=True); res = [] + def rec(i, cur, s): + if i == len(ws): res.append(tuple(cur)); return + w = ws[i]; k = 0 + while s + k * w <= rank and len(cur) + k <= maxk: + rec(i + 1, cur + [w] * k, s + k * w); k += 1 + rec(0, [], 0) + return res + +def cost(r, m): + return r * math.log(m / r) if r else 0.0 + +def solve(win, copies, avail, m, pad_value=0.0, group=None): + """win: {idx: (pair, rank, stages)}; copies: piece copies per replica of each idx (2V); + avail: {(stage, width): count per replica}; maximise saved idle cost (+ pad_value per hosted residual). + group: optional {width: g} - remaining count of that width per stage must be a multiple of g (exact bank tiling). + Returns {(idx, pattern): copies} and {(idx, width, stage): count}.""" + import numpy as np + from scipy.optimize import milp, LinearConstraint, Bounds + widths = sorted({w for (_, w) in avail}) + var = []; index = {} + for idx, (p, r, st) in win.items(): + for pat in patterns(r, widths): + index[('y', idx, pat)] = len(var); var.append(('y', idx, pat)) + for w in widths: + for s in st: + if avail.get((s, w), 0): + index[('z', idx, w, s)] = len(var); var.append(('z', idx, w, s)) + stages = sorted({s for (s, _) in avail}) + if group: + for w, g in group.items(): + for s in stages: + index[('g', w, s)] = len(var); var.append(('g', w, s)) + n = len(var); c = np.zeros(n); integ = np.ones(n); lb = np.zeros(n); ub = np.full(n, np.inf) + for key, j in index.items(): + if key[0] == 'y': + _, idx, pat = key; r = win[idx][1]; c[j] = -(cost(r, m) - cost(r - sum(pat), m) + pad_value * len(pat)) + rows, lo, hi = [], [], [] + for idx in win: + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'y' and key[1] == idx: row[j] = 1 + rows.append(row); lo.append(copies); hi.append(copies) + for w in widths: + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'y' and key[1] == idx: row[j] = key[2].count(w) + if key[0] == 'z' and key[1] == idx and key[2] == w: row[j] = -1 + rows.append(row); lo.append(0); hi.append(0) + for (s, w), a in avail.items(): + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'z' and key[2] == w and key[3] == s: row[j] = 1 + if group and w in group: + row[index[('g', w, s)]] = group[w]; rows.append(row); lo.append(a); hi.append(a) # used + g*k = avail + else: + rows.append(row); lo.append(0); hi.append(a) + res = milp(c, constraints=LinearConstraint(np.array(rows), lo, hi), integrality=integ, bounds=Bounds(lb, ub), + options=dict(time_limit=600, disp=False)) + assert res.x is not None, res.message + x = [int(round(t)) for t in res.x] + ys = {(k[1], k[2]): x[j] for k, j in index.items() if k[0] == 'y' and x[j]} + zs = {(k[1], k[2], k[3]): x[j] for k, j in index.items() if k[0] == 'z' and x[j]} + return ys, zs, -res.fun + +def expand(win, ys, zs, helpers, V2): + """helpers: {stage: [(helper, width), ...]} for ONE replica; returns list of + (idx, copy, offset, width, stage, helper) and the remainder rank of every (idx, copy). + Copies of a piece are the 2V (side, port) data families; residuals packed from offset 0 in decreasing width.""" + pool = defaultdict(list) # (stage, width) -> helpers + for s, hs in helpers.items(): + for h, w in hs: pool[s, w].append(h) + for k in pool: pool[k].sort() + need = defaultdict(list) # (idx, width) -> stages multiset in deterministic order + for (idx, w, s), cnt in sorted(zs.items()): need[idx, w] += [s] * cnt + out = []; rem = {} + for idx in sorted(win): + pats = sorted([(pat, cnt) for (i, pat), cnt in ys.items() if i == idx], key=lambda t: (-sum(t[0]), t[0])) + copy = 0; ptr = Counter() + r = win[idx][1] + for pat, cnt in pats: + for _ in range(cnt): + off = 0 + for w in sorted(pat, reverse=True): + s = need[idx, w][ptr[idx, w]]; ptr[idx, w] += 1 + h = pool[s, w].pop(0) + out.append((idx, copy, off, w, s, h)); off += w + rem[idx, copy] = r - off; copy += 1 + while copy < V2: rem[idx, copy] = r; copy += 1 + return out, rem + +def save_selection(path, key, ys, zs, val): + """freeze the integer-programme choice (patterns per child, residual stages per child) for stdlib-only replay""" + import json + from pathlib import Path + p = Path(path); d = json.loads(p.read_text()) if p.exists() else {} + d[key] = dict(patterns=sorted([[i, list(pat), n] for (i, pat), n in ys.items()]), + stages=sorted([[i, w, s, n] for (i, w, s), n in zs.items()]), proxy_saving=val) + p.write_text(json.dumps(d, indent=1, sort_keys=True) + '\n') + +def load_selection(path, key): + import json + from pathlib import Path + d = json.loads(Path(path).read_text())[key] + ys = {(i, tuple(pat)): n for i, pat, n in d['patterns']} + zs = {(i, w, s): n for i, w, s, n in d['stages']} + return ys, zs, d['proxy_saving'] diff --git a/research/e8-hosting-selected-kernel/code/residual_routes.py b/research/e8-hosting-selected-kernel/code/residual_routes.py new file mode 100644 index 0000000000..04feccfe52 --- /dev/null +++ b/research/e8-hosting-selected-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/e8-hosting-selected-kernel/evidence/assembly.log b/research/e8-hosting-selected-kernel/evidence/assembly.log new file mode 100644 index 0000000000..c080c241fb --- /dev/null +++ b/research/e8-hosting-selected-kernel/evidence/assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY 0.001249035299298004 binding bit gain over #434 10.2316% diff --git a/research/e8-hosting-selected-kernel/evidence/bit-hosting.log b/research/e8-hosting-selected-kernel/evidence/bit-hosting.log new file mode 100644 index 0000000000..742edb4ccb --- /dev/null +++ b/research/e8-hosting-selected-kernel/evidence/bit-hosting.log @@ -0,0 +1 @@ +{"live": 74528, "maxchild": 8, "hosted_residuals": 321536, "banks_per_stage_hosted": {"0": 0, "1": 3784, "2": 272, "3": 4936, "4": 0, "5": 0, "6": 4096, "7": 0, "8": 0}, "rank_mass": 4749824} diff --git a/research/e8-hosting-selected-kernel/evidence/complex-hosting.log b/research/e8-hosting-selected-kernel/evidence/complex-hosting.log new file mode 100644 index 0000000000..b8925ed69d --- /dev/null +++ b/research/e8-hosting-selected-kernel/evidence/complex-hosting.log @@ -0,0 +1 @@ +{"live": 8400, "maxchild": 8, "hosted_residuals": 34560, "banks_per_stage": [0, 0, 0, 160, 0, 120, 0, 0, 440], "deficit": 2496} diff --git a/research/e8-hosting-selected-kernel/evidence/discovery.log b/research/e8-hosting-selected-kernel/evidence/discovery.log new file mode 100644 index 0000000000..9fb2d39fdb --- /dev/null +++ b/research/e8-hosting-selected-kernel/evidence/discovery.log @@ -0,0 +1,10 @@ +add {'pivot': 950, 'entrance': 1, 'donors': [749, 819, 830, 948], 'moment': 0.9999987839981915, 'candidates': 22} +add {'pivot': 954, 'entrance': 1, 'donors': [803, 817, 952], 'moment': 0.9999974065317905, 'candidates': 21} +add {'pivot': 963, 'entrance': 1, 'donors': [783, 853, 962], 'moment': 0.9999962719365906, 'candidates': 18} +add {'pivot': 969, 'entrance': 1, 'donors': [778, 844, 898, 968], 'moment': 0.9999951361271407, 'candidates': 16} +add {'pivot': 971, 'entrance': 1, 'donors': [807, 835, 970], 'moment': 0.9999939141423637, 'candidates': 13} +add {'pivot': 775, 'entrance': 1, 'donors': [758, 759, 774], 'moment': 0.9999929285371466, 'candidates': 10} +add {'pivot': 859, 'entrance': 1, 'donors': [740, 741, 858], 'moment': 0.9999921873182623, 'candidates': 7} +add {'pivot': 885, 'entrance': 1, 'donors': [740, 741, 884], 'moment': 0.9999908677882754, 'candidates': 4} +add {'pivot': 920, 'entrance': 1, 'donors': [904, 906, 918], 'moment': 0.9999900390922772, 'candidates': 2} +FINAL 123 147 0.9999900390922772 added 9 diff --git a/research/e8-hosting-selected-kernel/evidence/export.log b/research/e8-hosting-selected-kernel/evidence/export.log new file mode 100644 index 0000000000..2530c07239 --- /dev/null +++ b/research/e8-hosting-selected-kernel/evidence/export.log @@ -0,0 +1 @@ +exported 19776 records, 944 frames, n 980 ZERO 0 diff --git a/research/e8-hosting-selected-kernel/evidence/global-audit.log b/research/e8-hosting-selected-kernel/evidence/global-audit.log new file mode 100644 index 0000000000..b264fea3e9 --- /dev/null +++ b/research/e8-hosting-selected-kernel/evidence/global-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", "template_sha256": "965c825fd8a08e0121156536603d8ffa982a044626fdadd0acc41f05b8ac14eb", "source_frames": 944, "exact_nested_frame_pairs": 3360, "exact_reflected_pairs": 3360, "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", "exact_bank_families": 51957, "mixed_width_slots": true, "entrance_rank_total": 147, "residual_isometries": 16, "mutations_rejected": ["omit an idle child", "omit a bridge", "omit terminal exchange", "remove a local invocation", "re-use a helper bank slot", "understate live stock", "omit a local paid move", "wrong reflected copy charge", "alter residual orthogonal basis", "wrong residual frame", "omit a residual route factor"], "profile": {"1": 1465920, "2": 588672, "3": 153216, "4": 205632, "5": 62208, "7": 54144, "8": 5184, "14": 30720, "28": 30720, "42": 30720}, "seconds": 13.70359254104551} diff --git a/research/e8-hosting-selected-kernel/evidence/global.log b/research/e8-hosting-selected-kernel/evidence/global.log new file mode 100644 index 0000000000..7251e9cc24 --- /dev/null +++ b/research/e8-hosting-selected-kernel/evidence/global.log @@ -0,0 +1,2 @@ +Fresh prefix bits 123 charged 128 +{"status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", "h": 8, "m": 64, "v": 120, "R": 740, "replicas": 64, "live": 113397, "physical": 113406, "word_sha256": "f5ae52ba95d0edd76f85fdb4da04cd78ad46b55c9ad3b86cc098146b62032336", "source_records_sha256": "f9e0f3cdbc6a4eb5bfaf3fd843731a79c26740a6c4715079f2228e94b8706403", "independent_unbanked_scalar_columns": 7620, "all_scalar_columns_restored": true, "geometry_sha256": "40eb149ca9d6034c0e9584e476171b88b124f92c0da1345ff459bdea5d182fb9", "template_sha256": "965c825fd8a08e0121156536603d8ffa982a044626fdadd0acc41f05b8ac14eb", "emitted_program_sha256": "257e0291da1be27c83ce6eaebf508bdffe472cd48a2d73816a2a72fe87a5bb29", "emitted_events": 11390976, "local_invocations": 576, "bank_assignments": 426240, "banks_per_stage": 5773, "entrance_rank_total": 147, "mixed_width_slots": true, "padding_calls": 0, "residual_isometries": 16, "extra_helper_route_factor_bound": 144, "profile": {"1": 1465920, "2": 588672, "3": 153216, "4": 205632, "5": 62208, "7": 54144, "8": 5184, "14": 30720, "28": 30720, "42": 30720}, "paid_calls": 2627136, "rank_mass": 7237440, "deficit": 19968, "maxchild": 42, "halving_depth": 2, "halving_integer_inequality": [4096, 3528], "local_additions": 15446, "bridge_additions": 138240, "copy_erase_episodes": 5184, "global_prefix_bits": 123, "charged_prefix_bits": 128, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 20.562781999935396} diff --git a/research/e8-hosting-selected-kernel/evidence/hosting-audit.log b/research/e8-hosting-selected-kernel/evidence/hosting-audit.log new file mode 100644 index 0000000000..2007d906a0 --- /dev/null +++ b/research/e8-hosting-selected-kernel/evidence/hosting-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", "bit_template_sha256": "b099b89581f7dd9034e64239a67d9d67e2cd10023632e5df5c8bbb29831e5772", "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", "bit_live": 74528, "complex_live": 8400, "bit_hosted_residuals": 321536, "complex_hosted_residuals": 34560, "bit_maxchild": 8, "complex_maxchild": 8, "mutations_rejected": ["bit: hosted residual outside its window", "bit: overlapping hosted coordinates", "bit: understated live stock", "bit: hosted owner on the active pair", "bit: missing remainder child", "complex: hosted residual outside its window", "complex: remainder child understated", "complex: dropped bank", "complex: duplicated hosted residual"]} diff --git a/research/e8-hosting-selected-kernel/evidence/rebuild.log b/research/e8-hosting-selected-kernel/evidence/rebuild.log new file mode 100644 index 0000000000..0c4d6fcc6d --- /dev/null +++ b/research/e8-hosting-selected-kernel/evidence/rebuild.log @@ -0,0 +1 @@ +{"donor_slots": 118, "entries": 123, "local_columns": 980, "local_profile": {"1": 2545, "2": 1022, "3": 266, "4": 357, "5": 108, "7": 14, "8": 9}, "new_frames": 0, "output_sha256": "f5ae52ba95d0edd76f85fdb4da04cd78ad46b55c9ad3b86cc098146b62032336", "status": "PASS_RECONSTRUCTED_HOSTING_SELECTED_KERNEL", "total_entrance_rank": 147} diff --git a/research/e8-hosting-selected-kernel/rebuild.py b/research/e8-hosting-selected-kernel/rebuild.py new file mode 100644 index 0000000000..50ced32fc0 --- /dev/null +++ b/research/e8-hosting-selected-kernel/rebuild.py @@ -0,0 +1,30 @@ +"""Reconstruct the hosted-cost-selected kernel from the pinned R740 precursor. +Prepared with OpenAI Codex assistance; Apache-2.0. +""" +from pathlib import Path +import gzip,hashlib,json,sys +ROOT=Path(__file__).resolve().parent +PRIOR=ROOT.parent/'e8-rank138-idle-hosting' +UP=PRIOR/'upstream443' +read=lambda p:json.loads(p.read_text()) +canonical=lambda x:json.dumps(x,sort_keys=True,separators=(',',':')).encode() +w=json.loads(gzip.decompress((UP/'parent436/data/bit/bitE8-r740.json.gz').read_bytes())) +for ph in ('D','A','B','C'):w[ph]=[[f,d,[s]] for f,d,ss in w[ph] for s in ss] +ids={tuple(sorted(f)):i for i,f in enumerate(w['frames'])} +for ph,i,old,new in read(UP/'data/retiming.json')['changes']: + assert sorted(w['frames'][w[ph][i][0]])==sorted(old) + w[ph][i][0]=ids[tuple(sorted(new))] +priorword=json.loads(gzip.decompress((UP/'data/word.json.gz').read_bytes())) +assert len(w['B'])==len(priorword['B']) and all(a[1:]==b[1:] for a,b in zip(w['B'],priorword['B'])) +w['B']=priorword['B'] +sel=read(ROOT/'SELECTION.json') +assert hashlib.sha256(canonical(w)).hexdigest()==sel['frozen_precursor_sha256'] and w==read(ROOT/'PRECURSOR.json') +sys.path.insert(0,str(UP/'code')) +from replica_kernel import kernel +from e8core import replay +out,entries,rank,donors=kernel(w,sel['entries'],sel['replicas']) +a=replay(out,span_mode='z');assert not a['viol'] +assert dict(a['H'])=={int(k):n for k,n in sel['local_profile'].items()} +assert out==read(ROOT/'WORD.json') and out['frames']==w['frames'] +raw=canonical(out);receipt=dict(status='PASS_RECONSTRUCTED_HOSTING_SELECTED_KERNEL',entries=entries,total_entrance_rank=rank,donor_slots=donors,new_frames=0,output_sha256=hashlib.sha256(raw).hexdigest(),local_columns=a['n'],local_profile=dict(a['H'])) +d=Path(sys.argv[1]);d.mkdir();(d/'bit-source-centres.json').write_bytes(raw);(d/'bit-kernel-receipt.json').write_text(json.dumps(receipt,indent=2)+'\n');print(json.dumps(receipt,sort_keys=True)) diff --git a/research/e8-hosting-selected-kernel/vendor/pr439/LICENSE b/research/e8-hosting-selected-kernel/vendor/pr439/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-hosting-selected-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/e8-hosting-selected-kernel/vendor/pr439/NOTICE.md b/research/e8-hosting-selected-kernel/vendor/pr439/NOTICE.md new file mode 100644 index 0000000000..3dfad2ad57 --- /dev/null +++ b/research/e8-hosting-selected-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/e8-hosting-selected-kernel/vendor/pr439/bank_routes.py b/research/e8-hosting-selected-kernel/vendor/pr439/bank_routes.py new file mode 100644 index 0000000000..919fe32f7e --- /dev/null +++ b/research/e8-hosting-selected-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/e8-hosting-selected-kernel/vendor/pr439/e8core.py b/research/e8-hosting-selected-kernel/vendor/pr439/e8core.py new file mode 100644 index 0000000000..78983b3687 --- /dev/null +++ b/research/e8-hosting-selected-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/e8-hosting-selected-kernel/vendor/pr439/engines/base_two_moment.py b/research/e8-hosting-selected-kernel/vendor/pr439/engines/base_two_moment.py new file mode 100644 index 0000000000..14a90fa0e7 --- /dev/null +++ b/research/e8-hosting-selected-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/e8-hosting-selected-kernel/vendor/pr439/engines/moment.py b/research/e8-hosting-selected-kernel/vendor/pr439/engines/moment.py new file mode 100644 index 0000000000..7d697cb452 --- /dev/null +++ b/research/e8-hosting-selected-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/e8-hosting-selected-kernel/vendor/pr439/tile_m.py b/research/e8-hosting-selected-kernel/vendor/pr439/tile_m.py new file mode 100644 index 0000000000..cd5fd9b539 --- /dev/null +++ b/research/e8-hosting-selected-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/e8-hosting-selected-kernel/verify.py b/research/e8-hosting-selected-kernel/verify.py new file mode 100644 index 0000000000..93371dbc86 --- /dev/null +++ b/research/e8-hosting-selected-kernel/verify.py @@ -0,0 +1,50 @@ +"""Full rank-138 / idle-hosting composition; Python 3.11+, standard library. +Rebuild the full R740/complex parent, reconstruct the hosting-selected kernel, emit and audit +64 bit replicas, then host both suppliers. Complex replication remains eight. +Prepared with OpenAI Codex assistance; Apache-2.0. +""" +from pathlib import Path +import gzip, hashlib, json, os, subprocess, sys, time +assert __debug__ +ROOT=Path(__file__).resolve().parent +PARENT=ROOT.parent/'e8-rank138-idle-hosting' +ORIGINAL=ROOT.parent/'e8-joint-frame-retiming' +OUT=Path(sys.argv[1]).resolve() +assert not OUT.exists() and not OUT.is_relative_to(ROOT.parent) +sha=lambda p:hashlib.sha256(p.read_bytes()).hexdigest() +read=lambda p:json.loads(p.read_text()) +def integrity(): + m=read(ROOT/'MANIFEST.json') + actual={p.relative_to(ROOT).as_posix():sha(p) for p in ROOT.rglob('*') if p.is_file() and p!=ROOT/'MANIFEST.json' and '__pycache__' not in p.parts} + assert actual==m['files'] + assert sha(PARENT/'MANIFEST.json')==m['parent_manifest_sha256'] +integrity();OUT.mkdir(parents=True) +env=dict(os.environ,PYTHONDONTWRITEBYTECODE='1',PYTHONINTMAXSTRDIGITS='0');env.pop('PYTHONOPTIMIZE',None) +steps=[] +def run(name,file,*args,cwd=None): + log=OUT/(name+'.log');start=time.monotonic();print('RUN',name,flush=True) + with log.open('w') as f:q=subprocess.run([sys.executable,'-B',str(file),*map(str,args)],cwd=cwd,env=env,stdout=f,stderr=subprocess.STDOUT) + assert q.returncode==0,(name,log.read_text()[-3000:]) + steps.append(dict(name=name,seconds=round(time.monotonic()-start,2),log_sha256=sha(log))) + print('PASS',name,flush=True) +try: + run('parent-full',PARENT/'verify.py',OUT/'parent') + changed=OUT/'changed';changed.mkdir() + for d in ('work','inherited','split-centres'): + (changed/d).symlink_to(OUT/'parent/changed'/d,target_is_directory=True) + b=changed/'bit426-source-centres' + run('kernel-rebuild',ROOT/'rebuild.py',b) + run('export-records',ORIGINAL/'vendor/export_records.py',b/'bit-source-centres.json',b/'records') + run('bit-global-64',ROOT/'code/bit_global.py','--source',b,'--local-check',b,'--out',b/'global',cwd=changed) + run('bit-global-audit',ROOT/'code/bit_audit.py','--local-check',b,'--out',b/'global',cwd=changed) + run('bit-hosting',ROOT/'code/bit_hosted.py',b/'global',b,OUT/'bit',cwd=changed) + run('complex-hosting',ROOT/'code/complex_hosted.py',changed/'split-centres',OUT/'complex',cwd=changed) + run('independent-hosting-audit',ROOT/'code/audit.py',changed,OUT/'bit',OUT/'complex',OUT/'AUDIT.json') + run('exact-assembly',ROOT/'code/assemble.py',changed,OUT/'bit',OUT/'complex',OUT/'AUDIT.json',OUT/'RESULT.json') + actual=read(OUT/'RESULT.json') + for k,v in read(ROOT/'EXPECTED.json').items():assert actual[k]==v,(k,actual[k],v) + integrity() + receipt=dict(status='PASS_FULL_HOSTING_SELECTED_KERNEL',python=sys.version.split()[0],kappa=actual['kappa'],kappa_decimal=actual['kappa_decimal'],manifest_sha256=sha(ROOT/'MANIFEST.json'),checks=steps) + (OUT/'RECEIPT.json').write_text(json.dumps(receipt,indent=2)+'\n');print(json.dumps(receipt,indent=2)) +except BaseException as e: + (OUT/'FAILURE.json').write_text(json.dumps(dict(error=repr(e),completed=steps),indent=2)+'\n');raise diff --git a/research/e8-joint-frame-retiming/.gitattributes b/research/e8-joint-frame-retiming/.gitattributes new file mode 100644 index 0000000000..a251e913f2 --- /dev/null +++ b/research/e8-joint-frame-retiming/.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/e8-joint-frame-retiming/CERTIFICATE.json b/research/e8-joint-frame-retiming/CERTIFICATE.json new file mode 100644 index 0000000000..eab9a16c81 --- /dev/null +++ b/research/e8-joint-frame-retiming/CERTIFICATE.json @@ -0,0 +1,107 @@ +{ + "status": "PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY", + "kappa": "1138798055343319/1000000000000000000", + "kappa_decimal": "0.001138798055343319", + "bit_lower": "17814006170324008149/15625000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.663365470849168, + "bit_invoice": { + "prefix_bits": 123, + "charged_prefix_bits": 128, + "extra_helper_route_factor_bound": 144, + "selector_charge": 2375347104, + "full_counted_coefficient": "8271410009661736653226855278395470361", + "two_level_coefficient": "7323242093316479963924177312150069573045566553609912891292783054664675728289084971684", + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14187, + "physical": 14196 + }, + "strict_outer_constraints": { + "bit_positive": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "561793975111583755318899079343869984489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "561793975111583740163871249502858784489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "7296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "280896987555791884675169479480856836925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "7296616927364715307747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "6392703383072635284692252683394401362436925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "561793975111583769912132934073297429170711561242364812146848396605205517119521114242518016217267837645828790697405933529381995454757936430882408462422461948391475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "280896987555791884675169479480856836925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "7296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "6399999999999999993600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "epsilon_below_one": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "guard_width": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "K_geometry": "4807296616927364715307747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000", + "K_dominates_log": "235374739592410170982280634781739427591186359788777903970880237514185872696357672241417629322931845013535600673179511963907670740968611784320670684630538885699570024398052336858483077811796097147/206686987642818216571217655374374149598808841734162927502779721971677113375476079643918531004799011488932066605472191000895974276213159612680294946897790151565994516922188203902853000000000000000000", + "record_suffix": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "phase_local": "58372935418917754454681915917424386796845433466807383126296955216873364531896370569805174550396380293678057008334012065307555731225662916937944268044009595277496842871179869361713975412165679011557/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "phase_boundary": "11674587083783545765099089641593106393171233408882566574800116036134070837442169216368623198272500889556042482651317487546259330534795761167426803522443524584184685509040215035678775412165679011557/10251674587083783541932395706568957820100918550014481204137874209795184823423613550338359137838030969851030503631420673644440324100172716788942629366130391517673328039340534913581508800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "12799999999999999980792703383072635286292252683394401362436925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/25629186467709458854830989266422394550252296375036203010344685524487962058559033875845897844595077424627576259078551684111100810250431791972356573415325978794183320098351337283953772000000000000000000", + "prime_interval_packing": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "alpha_positive": "14593233854729433808198016283832561418400870912502867609268668484930276693345556800958407657780243352313668390506485898656340355577974958403084145055041404002516695344173943431055975412165679011557/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "alpha_below_one": "12799999999999999993607296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "alpha_below_one_fourth": "3189055074608952923045675642018966757363136175967022508683817022076064980626533677679778822916604434726133363994312474615231260925725999038141487531860705945270398316949743217063165524587834320988443/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "81826496822092562171882315893595751752399902690116486852838304432755607303153150619225216237579156329475548128864912385926260879534056410653826445668927928937673680050034015948260296943169395903763640168091395592402062955133096133288079820489374838549015828583026644692484032808774556966449204475165761360629808686214538063881707838504539564249/82013396696670268335459165652551662560807348400115849633102993678361478587388908402706873102704247758808244029051365389155522592801381734311541034929043132141386624314724279308652070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "358866983483351341747717718113540406945159983950396044078204190673084545194703056156900337057440514200925643528703135014248295158315822434641030782333039504686200551635115880638897842073763502962965329/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "10428274416196871282531516897522607540915684699387944996351562842329855748924675580097931857187250784626831881239543084291418480285841495843978289147099063037268827644742874203737683/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000", + "coordinate_movement_above_kappa": "16618746334944244681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "100524444981737664220594239522925222583815265140722356094134786530196630857122927778411434900962035711748445411747629081591081943080838696272228644831689208468074940503875997068731/160182415423184117842693682915139965939076852343976268814654284528049762865993961724036861528719233903922351619240948025694380064065198699827228583845787367463645750614695858024711075000000000000000", + "bulk_exposure_above_kappa": "16618746334944244681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "51389712244938146691713398597152867139510107126308306207881645833028893418198612295976082551754159496230184726068155069192471829473692226786380596407635030805421471035003822024959249/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "scalar_work_above_kappa": "77018898712647605546544387863575261689762403501344509218226331357516855476757646171821980396349236920857760985146706753303572639724124018758737169822961009599604791133355159308913021/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "dimension_above_kappa": "6392703383072635283920527099591272644968442803763556788329513318265954481711804373368381287775906223941037792417612863599056678676935136298329336932010001145432459122511228716280384644742874203737683/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "50238871853096532822362240972278860750249/40000000000000000000000000000000000000000000000", + "cutoff_log2": "22821423299056" + }, + { + "gap": "11455431336719088296695724797447540819776987379259584929022443/8000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "17557374861114977035" + }, + { + "gap": "2612059193805271546589956973717711376230817511984641822790221508429225435153562001/1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13507545431071750093791293" + }, + { + "gap": "595599854024942868145937931074452609889067823826597234111825602004869306469267614758018107869138838307/320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10391860116659867549821478467986" + }, + { + "gap": "135808249275448458154076421829336450566886398980362416351705509454393700941063236129602722212894374934350058630123597688249/64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "7994846823599212441742710007613379908" + }, + { + "gap": "30966899079343869984489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6150734807365621625035986466966332327804006" + } + ], + "bit_template_sha256": "b87ed8c20819237f2daacdd1383a2776419551a62a7014eb9720af146a9dd9ec", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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." +} diff --git a/research/e8-joint-frame-retiming/EXPECTED.json b/research/e8-joint-frame-retiming/EXPECTED.json new file mode 100644 index 0000000000..f9021cbb84 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/INDEPENDENT-AUDIT.json b/research/e8-joint-frame-retiming/INDEPENDENT-AUDIT.json new file mode 100644 index 0000000000..48f8f635b6 --- /dev/null +++ b/research/e8-joint-frame-retiming/INDEPENDENT-AUDIT.json @@ -0,0 +1,102 @@ +{ + "local_audit": { + "retiming_changes": 183, + "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/e8-joint-frame-retiming/LICENSE b/research/e8-joint-frame-retiming/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/MANIFEST.json b/research/e8-joint-frame-retiming/MANIFEST.json new file mode 100644 index 0000000000..2536f16019 --- /dev/null +++ b/research/e8-joint-frame-retiming/MANIFEST.json @@ -0,0 +1,109 @@ +{ + "files": { + ".gitattributes": "2f9541c7c27f084baad73b4cd50ddaeb264cc3aa8dbf13ec21df5ab3f673ca7e", + "CERTIFICATE.json": "8d334f728f3124f6d62b4bdf1dc7a838dcd7a0d0fe583ab1b53a5ebf5346a84f", + "EXPECTED.json": "6d938c11d4d404ff33311176e001e9e48e156116bce8e98012caad5ae9df26e9", + "INDEPENDENT-AUDIT.json": "48afdc531cb6ac79394e5df212c57b0f187c41823b2c6a7dcb9857ca0d073672", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "c4e18416662036cd109f989e671443bc386f04aa97b39357591e54dfd63a89d0", + "PROOF.md": "0f685a317211fbd3e0dba74a07d8733975926ab334103cc0f457f6edfdaa84bf", + "README.md": "4dc048e7ab6b630b1ddbe08cd9fe7202954440f52e6d06c38fb0be282edc4e47", + "SOURCE440-PINS.json": "52b8054c2bdf6eb768121dbe6394fb20ec7b83dafb2b911dcbb414faae356ae0", + "SOURCES.json": "05b65a707663b23a0f2e5ffa6e1da7ed067f1151e735a37c5fea90f898fb3687", + "VALIDATION.json": "8aeab6ff1d09277d366b11a0f194734e6f8588638cb89a348e6796738123201e", + "verify.py": "e48fc2734325c298224d0a3b92dfea82e8b0671ad98549f8f189f9ea5d63265e", + "code/bit_audit.py": "6e8cb29cc22109b6854c2e9dd7b38b3b0e0b80e47d5b89a11c8639969c60486e", + "code/bit_construct.py": "6ee33b40c27b67be525da995890ef3d719d426b81ca2e28b7939befee0f8c3c1", + "code/bit_global.py": "9355b2c1122c8569557154f6640edec7cbe0ffe13634309c5b3f9af21e98b091", + "code/bit_kernel.py": "04574cb417405a7bb70518d62b540a8a1ce1e01a77dc8029100ff76ed75bdafb", + "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": "2dbd01bd9ba0996308f7206430b0ec86aa3150e67ca8bcb37a33095ffc20625d", + "code/primitive_retime.py": "178fe5a6dda3346a8fdd78380c73c78b720ec62c2e9d11de0bfabfc84a2ca3c0", + "code/residual_routes.py": "402924994a880d1ee45e42be2e7a51bd0281822046e474f5f5cc0adf885b52c7", + "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", + "local-evidence/first-group-full311.json": "77d3c09cb1223ea18a1f4eef5a2c673b716f3a2da2b73862e321c0fe8ba6e951", + "local-evidence/first-group-full314.json": "77d3c09cb1223ea18a1f4eef5a2c673b716f3a2da2b73862e321c0fe8ba6e951", + "local-evidence/group-search.json": "0475706761762d9f27dba453a610b92d37aa4989a1e60611cad3685837cf1c7b", + "local-evidence/group-sweeps.json": "19a4d9f41bfd132e6f0d9b471af991c003bd302c62360eb31705bb611df9d990", + "local-evidence/KERNEL440-GROUP-FINAL-FRAME-SEARCH.json": "87d4742ccf1ada6608b994b375b521e9eb4c74497c2622854c5f192683b3017d", + "local-evidence/KERNEL440-GROUP2-SEARCH.json": "35dc70ef832870a830d0e3d24a1e2c6a95306e35cd6de26d7c985ffb856346fe", + "local-evidence/nonwinning-kernel-swaps.json": "372a9a1670fc1adc3f0b5daa0a9d8bb7c9dc4a796e61a69c02424286c80763c5", + "local-evidence/source-span.json": "bb3570ef078985f4f3c1066c105ff2adb046bc48c7c65e50ff50cdda905d0b57", + "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/retime-selection.json": "003ea8222b66b6bb5d5c512f23415e2fe71e72820cf076981cd0e3db51e5fdf5", + "vendor/clifford_exact.py": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962", + "vendor/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "vendor/hamming_packets.py": "daa9301e2767a711cfe66c6bebaad68e1a3bdb97ec9e848c927527ab43b37ae5", + "vendor/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "vendor/kernel417/e8core.py": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29", + "vendor/kernel417/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/kernel417/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "vendor/pr436/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr436/NOTICE.md": "eb9cb7eab03977930484fee70d0aea066803917a6304b1ad2644cfcc6bf2acd4", + "vendor/pr436/README.md": "d737a3b77de97bdf67d2a140465be5b8886af6aa57516f78ad8f2839f3dae8cc", + "vendor/pr438/complex_phases.py": "3e2a52198475ee280a314895ab74df8437e3c0de0cad2d90baa370aa2a52c364", + "vendor/pr439/bank_routes.py": "0dd88bd715477cdf804a41577bc096ba7911427f748f3ac6d6added365f7da60", + "vendor/pr439/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "vendor/pr439/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "vendor/pr439/NOTICE.md": "750f199a92e02e1ae45d092c1768f0e1833542787158348ab4af63adbde003e7", + "vendor/pr439/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "vendor/pr439/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/pr439/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/pr439/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "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/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/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/kernel417/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "vendor/kernel417/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "vendor/kernel417/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "local-evidence/upstream440/CERTIFICATE.json": "5d16af5ef43afbbe71046f7e2cf93bf4587b6dd56936bc2222e83b0887cd8aca", + "local-evidence/upstream440/INDEPENDENT-AUDIT.json": "8903f0b1100e7e9728e31b4a7fbe6996c696ad753dc92b730a05c15ab83d661e", + "local-evidence/upstream440/VALIDATION.json": "a95c25eb50dee90b21204442c31db3e22d3db8d9bc20c87bc92146507444bc7c" + } +} diff --git a/research/e8-joint-frame-retiming/NOTICE.md b/research/e8-joint-frame-retiming/NOTICE.md new file mode 100644 index 0000000000..d2dee718d0 --- /dev/null +++ b/research/e8-joint-frame-retiming/NOTICE.md @@ -0,0 +1,21 @@ +New joint B-phase retiming search and composition: Rohan Arun with substantial OpenAI Codex assistance. Upstream #440 by eumemic with OpenAI Codex is retained and credited in full below. Apache-2.0. + +# Attribution and AI disclosure + +This R740 shared-donor kernel and primitive-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 #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 57 A-only frame changes here were selected independently on this package's R740 kernel word, rather than copied from #434's word. +- **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/e8-joint-frame-retiming/PROOF.md b/research/e8-joint-frame-retiming/PROOF.md new file mode 100644 index 0000000000..f2f2d32fe4 --- /dev/null +++ b/research/e8-joint-frame-retiming/PROOF.md @@ -0,0 +1,11 @@ +# Joint frame movements + +The source is #440 at bd03373b6d4d4e380d0b6ea7d55cd2ac8f163544. Its exact R740 word, kernel mechanism and upstream mathematical assumptions are inherited, with full source notices and provenance preserved. + +A single frame change may be blocked by the next or previous gate on a register. Move connected gates at the same frame jointly: intersect the following frames and include all preceding frames to form the feasible interval. The search inspected 88,676 connected pairs, triples and components; 42 groups scored positively and 28 compatible groups in each of two sweeps were selected. They affect 126 B-phase gates. Score calculations only nominate candidates. The frozen combined selection records each of the 57 inherited A-phase and 126 new B-phase changes directly against the primitive kernel word. + +Construction verifies each old frame and unique gate index and preserves every primitive source/target operand. Independent reconstruction separately derives the kernel and the entire frame sequence. Exact scalar replay and integer source-span checks cover all 980 columns. Rational projectors certify all changed transitions and their reflected counterparts. Both emitted global words, every helper owner, residual coordinate isometry and complete bank are audited. Costs, coefficients, two rational moments, six finite bootstrap levels and all 47 outer inequalities are recomputed from the final emitted word; an independent audit supplies a third rational enclosure and repeats the invoice and assembly. + +No isolated improvements are added. The inherited all-size compiler, correlated dirty-bank, compressed-window, restored-work, tape/common-grid, precision and analytic interfaces remain conditional assumptions. The source-bound finite certificate is not an unconditional multiplication theorem or a Lean proof. + +The final canonical word matches PR441 exactly. The earlier one-sweep version passed full Python 3.11 and 3.14 replay at 38b6ea6a023e4cfc47db0177706dcf0b490fd389; the new two-sweep version is replayed as the parent of the idle-hosting composition. diff --git a/research/e8-joint-frame-retiming/README.md b/research/e8-joint-frame-retiming/README.md new file mode 100644 index 0000000000..feb15d7324 --- /dev/null +++ b/research/e8-joint-frame-retiming/README.md @@ -0,0 +1,9 @@ +# Joint B-phase frame retiming on the R740 shared-donor word + +Conditional kappa = 0.001138798055343319. This composes #440's kernel and 57 A-phase moves with two sweeps of 28 jointly moved groups affecting 126 B-phase gates. All primitive ADD operands and their order remain unchanged. The kernel has 112 pivots, entrance rank 136 and 100 donor slots. There are 723 complete banks per stage, 14,187 live and 14,196 physical families. + +Run `python -B research/e8-joint-frame-retiming/verify.py /absolute/new/output --replay-phases`. Python standard library only. The complete verifier rebuilds the pinned R740 producer and kernel, reconstructs all 183 frame changes, replays every upstream complex phase, emits and independently audits both global orientations and residual routes, and recomputes the finite invoice and exact outer assembly. + +The changed scalar/source-span, global banks, residual route mutation tests, two moment engines and finite assembly passed before publication. Full uninterrupted Python 3.11/3.14 runs are pending. Inherited #440 validation files are historical under local-evidence/upstream440. No unconditional multiplication theorem or new Lean proof is claimed; all inherited all-size interfaces remain assumptions. + +The final canonical word matches PR441 exactly. The earlier one-sweep version passed full Python 3.11 and 3.14 replay at 38b6ea6a023e4cfc47db0177706dcf0b490fd389; the new two-sweep version is replayed as the parent of the idle-hosting composition. diff --git a/research/e8-joint-frame-retiming/SOURCE440-PINS.json b/research/e8-joint-frame-retiming/SOURCE440-PINS.json new file mode 100644 index 0000000000..b5ead3ef79 --- /dev/null +++ b/research/e8-joint-frame-retiming/SOURCE440-PINS.json @@ -0,0 +1,475 @@ +{ + "head": "bd03373b6d4d4e380d0b6ea7d55cd2ac8f163544", + "files": [ + { + "path": "research/r740-shared-donor-kernel/.gitattributes", + "git_blob": "a251e913f29ecb0540e6dd6f040e23a599dcf385", + "sha256": "2f9541c7c27f084baad73b4cd50ddaeb264cc3aa8dbf13ec21df5ab3f673ca7e" + }, + { + "path": "research/r740-shared-donor-kernel/CERTIFICATE.json", + "git_blob": "68ce443eb2fce168a60faedf915aee2fb714c518", + "sha256": "5d16af5ef43afbbe71046f7e2cf93bf4587b6dd56936bc2222e83b0887cd8aca" + }, + { + "path": "research/r740-shared-donor-kernel/EXPECTED.json", + "git_blob": "99cc5c0f4a4c67a401f78077c49777f91310bd81", + "sha256": "6b356fafceac0ef134d08e04c9f73a8e47763235d5682d8a41990a198814efbb" + }, + { + "path": "research/r740-shared-donor-kernel/INDEPENDENT-AUDIT.json", + "git_blob": "e75f4d081a5e820adc28335bd0df38479b4c9258", + "sha256": "8903f0b1100e7e9728e31b4a7fbe6996c696ad753dc92b730a05c15ab83d661e" + }, + { + "path": "research/r740-shared-donor-kernel/LICENSE", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/r740-shared-donor-kernel/MANIFEST.json", + "git_blob": "5f4da783570767d16e50e243178e3e6dd5778a98", + "sha256": "0c27346bb5a784e24ceaf3888c710d7947deba2e2cac7e8649af44f83611637b" + }, + { + "path": "research/r740-shared-donor-kernel/NOTICE.md", + "git_blob": "d22794d3d29b2d6f10998193071025989b984046", + "sha256": "9d360b5a1c606a3deb38cd456ff8140687c7d4acf4701266c9fca08a730dd1d2" + }, + { + "path": "research/r740-shared-donor-kernel/PROOF.md", + "git_blob": "e4e69332d7641dff2372c8f9dc01c00dfe5f4a96", + "sha256": "a9fb080e5303f0a0367d71192b525d62575fa84963081f278e11be1f2c15bb75" + }, + { + "path": "research/r740-shared-donor-kernel/README.md", + "git_blob": "8c511e2a3e11c720506fb02e2e424c48703997f3", + "sha256": "b70e407de473ce91a7804ba4c91a4b7870c7fcffca5c92c9d3a393f493d5443e" + }, + { + "path": "research/r740-shared-donor-kernel/SOURCES.json", + "git_blob": "7af4935877efc38e1d010c322c6f22fcc6d786fc", + "sha256": "dd99a562cacaedc5c89070102a3f329250b7c7427398ce6fca4313a353966c0f" + }, + { + "path": "research/r740-shared-donor-kernel/VALIDATION.json", + "git_blob": "f86efc07e8c25eb115c6f08d8f46075351fc87e8", + "sha256": "a95c25eb50dee90b21204442c31db3e22d3db8d9bc20c87bc92146507444bc7c" + }, + { + "path": "research/r740-shared-donor-kernel/code/bit_audit.py", + "git_blob": "33058e814a5d5dad095d16b51748e5f324ba511b", + "sha256": "6e8cb29cc22109b6854c2e9dd7b38b3b0e0b80e47d5b89a11c8639969c60486e" + }, + { + "path": "research/r740-shared-donor-kernel/code/bit_construct.py", + "git_blob": "ffabc19e3be4c6f27000801fdb11119e3ddab6d3", + "sha256": "6ee33b40c27b67be525da995890ef3d719d426b81ca2e28b7939befee0f8c3c1" + }, + { + "path": "research/r740-shared-donor-kernel/code/bit_global.py", + "git_blob": "95c1b2dd7d0303b2d92503ccd3399c8c940f072a", + "sha256": "9355b2c1122c8569557154f6640edec7cbe0ffe13634309c5b3f9af21e98b091" + }, + { + "path": "research/r740-shared-donor-kernel/code/bit_kernel.py", + "git_blob": "b44349203f07158f8536e14132f26f31e5180308", + "sha256": "b0e65d9d8fdada4f7cc8cbfd4730e8a8668e3456b59ce7b02c02116bfc483a28" + }, + { + "path": "research/r740-shared-donor-kernel/code/bit_price.py", + "git_blob": "005da012a3cf28c2e9564b0fd7ba5300ae067c4d", + "sha256": "36bf15803567a95b139a908461541bf19efe1f5b85fb31c270021833ab1393ee" + }, + { + "path": "research/r740-shared-donor-kernel/code/combined.py", + "git_blob": "6ec68dfdcca57c3afb89d1ed3e81cf397508967b", + "sha256": "64e7d98e8a4e3b7cd692c330ef07d0d0eff974592efc401e896f1c9b43b946f7" + }, + { + "path": "research/r740-shared-donor-kernel/code/complex_audit.py", + "git_blob": "ba6789a3a636ea0204786bb0347c495ebba185b8", + "sha256": "adeba5ea113652b60105db2e8719b18ffa292d3cc23730cca614b40272348330" + }, + { + "path": "research/r740-shared-donor-kernel/code/complex_construct.py", + "git_blob": "bbc61e57dc320640a6df5023c23b2483ce2a3f72", + "sha256": "0f7f45b2333ec7daf4291e2bf675b49bc330b97fb5965dd27220ba353c291d6f" + }, + { + "path": "research/r740-shared-donor-kernel/code/complex_emit.py", + "git_blob": "e5fe7b34892e5a1ddbae48b39644f85f25d48a71", + "sha256": "f56d5f01f7c121741f175814138dca7190d769920f0a27e2d5b99c21aebed0f1" + }, + { + "path": "research/r740-shared-donor-kernel/code/complex_integrate.py", + "git_blob": "ffa5c036d7409c3b90d598b64327ae53be1c52df", + "sha256": "3792f41e409383e6989bda22801a4836a646a530f99e99bbd7244a8f3a1a8b4f" + }, + { + "path": "research/r740-shared-donor-kernel/code/complex_phases.py", + "git_blob": "127a042ea76320144dfb81e2b725118b00fb105e", + "sha256": "dff0495a4086dc359158425e71de5f01b5ea3d3bc060db18182f8509e2025c98" + }, + { + "path": "research/r740-shared-donor-kernel/code/complex_phases_full.py", + "git_blob": "b5a5bd64b4dd83a6c75ed97363cd28c0ea74ac0a", + "sha256": "0f2795aaffafe0c64d77f3748ef2109a3c42c58da867e4cf269a0a8cb6109466" + }, + { + "path": "research/r740-shared-donor-kernel/code/complex_replay.py", + "git_blob": "e9f0490478a7d23d5c88fb076e837350163f9387", + "sha256": "be2dccce2d1ad2c4f5c01a851c9c3896cc88236b5aeae706aad2ab16d6bfdad9" + }, + { + "path": "research/r740-shared-donor-kernel/code/independent_audit.py", + "git_blob": "1a689d2b0b43b40bf6dee68ba60cdf5d7fec0093", + "sha256": "692b55e7c721b10926a5c35704d2428ef26129785bc6ee7855dd549f8a1374fa" + }, + { + "path": "research/r740-shared-donor-kernel/code/primitive_retime.py", + "git_blob": "4d8c5b88a6b72a383a6874dd104cada5f6ae631e", + "sha256": "dde8600a6fb576616d9f2e9c848f007450a1d17baff70ec84026efd066a7b90e" + }, + { + "path": "research/r740-shared-donor-kernel/code/residual_routes.py", + "git_blob": "04feccfe5236c5e08aae0a4f24e28f132bf033ba", + "sha256": "402924994a880d1ee45e42be2e7a51bd0281822046e474f5f5cc0adf885b52c7" + }, + { + "path": "research/r740-shared-donor-kernel/inputs/bit-geometry.json.gz", + "git_blob": "19725bec462cbc531e180934c9af965d3ce0637f", + "sha256": "5c980202227859e8bb9b863f94503930c2a59d460c0421356688e2b0d828b4a1" + }, + { + "path": "research/r740-shared-donor-kernel/inputs/complex-canonical-reference.json.gz", + "git_blob": "d604ec1ae8f3b7c352dc244f5261717ac7f9d86a", + "sha256": "79ff8e19335d5d5d1563ef0bc218106945d6a2b88ece53ee24bb3d88b2594ba3" + }, + { + "path": "research/r740-shared-donor-kernel/inputs/complex-data-phases.json.gz", + "git_blob": "22154a8c5875bd3398e1cb112ea0a5307d6793e8", + "sha256": "c972b5b60649c2a52354f5160f69adc0f4a270fa09d32012beff9888774ab84f" + }, + { + "path": "research/r740-shared-donor-kernel/inputs/complex-phase-receipt.json", + "git_blob": "2a370225ea52a580873cf3642d25bb21e899bd8c", + "sha256": "b7e9de8137ed1de3e72a94c3a11525a8ff3770c914a43e3c3b82fd5d75264b32" + }, + { + "path": "research/r740-shared-donor-kernel/inputs/complex-phase-recipes.json.gz", + "git_blob": "03dc5fbe5e54c0f5fe0e104c2d1b27ab6adcfee2", + "sha256": "b5472bb1d3f9ff41b0819780a42886a7686b4caf3c0617bb1dc86158b3fb8671" + }, + { + "path": "research/r740-shared-donor-kernel/inputs/complex-ports.json.gz", + "git_blob": "ccbdc0596c33ea2e02649a740bdc2273ef320a58", + "sha256": "77b0c0fa19ef3da1c7316010e13493aa5eea1a50c3506eddc08f7480e659878b" + }, + { + "path": "research/r740-shared-donor-kernel/inputs/complex-template.json.gz", + "git_blob": "975ce5c0df3e4a7aa22264df7f13b592bd2318e6", + "sha256": "1b84904a31a733aab9bfdda3f528c06719f590d2133a43687a8bded955dc991e" + }, + { + "path": "research/r740-shared-donor-kernel/inputs/e8-r865.json.gz", + "git_blob": "8bec1751f7e33c3a1e4673ef5dbc34d6f205321e", + "sha256": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55" + }, + { + "path": "research/r740-shared-donor-kernel/notices/NOTICE-PR352.md", + "git_blob": "4f9a0194a34a6b3b431d5b452655a2bc787fdb95", + "sha256": "967e6d7e76e216e4898cf543c75b527e8d397ec1ddba3800cb20701f24c89524" + }, + { + "path": "research/r740-shared-donor-kernel/notices/NOTICE.md", + "git_blob": "c244e3f56a947a926ae2b8fd624e677d10da8957", + "sha256": "025773f32fb43667395e64c627a1752877bdc93afbfe01b106703eee438d21d3" + }, + { + "path": "research/r740-shared-donor-kernel/notices/PR386.txt", + "git_blob": "28cfebeb08cdcc5bfa61efca17276237289219e5", + "sha256": "ae2241615a23063b18a04f1b7a88a52e62b3d7d42e333fbd21e3668567ab83d1" + }, + { + "path": "research/r740-shared-donor-kernel/notices/PR426-SOURCE-PINS.json", + "git_blob": "24a25d43424e5d41efcde9b2846d8104186fe028", + "sha256": "18ace817f2f9af22511bb303e99656ed114e534b87f3dd95a65ca4ca670baf2f" + }, + { + "path": "research/r740-shared-donor-kernel/notices/PR426.md", + "git_blob": "2a7a8c0c6bf6c50348b1c38ae72711a72083b9df", + "sha256": "6a5593d0f284a2f0865037f5c5fa9e5f76f9e12cf50ec5284486d3b8137c89da" + }, + { + "path": "research/r740-shared-donor-kernel/notices/PR438-NOTICE.md", + "git_blob": "ee51ac2694522306a1db686086591e1b5485e0dd", + "sha256": "36c3eedbed8c4d3201cb8045615baf9a42a8ccc9ed346e0439857fe1fedebad3" + }, + { + "path": "research/r740-shared-donor-kernel/notices/SUSSMAN-NOTICE", + "git_blob": "63aa295646734f62c4270e653811530f9a570d3a", + "sha256": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81" + }, + { + "path": "research/r740-shared-donor-kernel/proofs/INHERITED-COMPLEX-GEOMETRY.txt", + "git_blob": "c4150cb693414c098690eae79b3aea5f47c184ff", + "sha256": "c1ff55536594222a8d2a30bc0e0956959774e1be2d5420b7838ad553ee556df2" + }, + { + "path": "research/r740-shared-donor-kernel/proofs/PR386-BIT-GEOMETRY.txt", + "git_blob": "31efe312680fdafba0ccfb630bb6b711acad5944", + "sha256": "c5f077b849e9add9957ab4ee36095dd47bc678dee7e09baa146dac4c0a0d66b2" + }, + { + "path": "research/r740-shared-donor-kernel/proofs/PR425-COMPLEX.txt", + "git_blob": "41061757ce0af663f589e4ca8e58b6dec39d028c", + "sha256": "2cda27b9b9a1eb24127c38c2c7a6e085155a2472183e220189a3ea2c2b7720dc" + }, + { + "path": "research/r740-shared-donor-kernel/proofs/PR426.md", + "git_blob": "e589cfbf5060a05b57facc0e2f1b545b4d73b3fc", + "sha256": "5787738ceb6faf14d3d96e8452592860a6c6a469733a9bcf196e8d1562ba1ffb" + }, + { + "path": "research/r740-shared-donor-kernel/proofs/PR438-PROOF.md", + "git_blob": "9f0346913c84644513aaf3214b088de7f3413f2e", + "sha256": "0f482e06aeda510e08055848bc2b68d30c93ed1722b9ed5e7613f96cf6346dde" + }, + { + "path": "research/r740-shared-donor-kernel/proofs/PR438-README.md", + "git_blob": "872109a08e9b1ba51bb6596e99e3f3a5f55ae660", + "sha256": "aebe7e50b25e43818f844886ae01c08c712b5453604fccac393631592fe9d0d2" + }, + { + "path": "research/r740-shared-donor-kernel/stages/final-word.json", + "git_blob": "833a84752735d450dcc597d88625c3c214b20aa3", + "sha256": "bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e" + }, + { + "path": "research/r740-shared-donor-kernel/stages/kernel-selection.json", + "git_blob": "ec0712cb53344e9c65380134fe2a5aba3226e0df", + "sha256": "fe7739e28bf7cfced2f71425242025cfbfa7f129ea61f94927f247b6b3e7df62" + }, + { + "path": "research/r740-shared-donor-kernel/stages/kernel-v2-word.json", + "git_blob": "ce5053efd03b54356db39fb6f4db0000341ce8aa", + "sha256": "b5789bffbf7bafe77a222366ea9a125b1d4a6f9d84b96afc4bb3c509d6b89b1a" + }, + { + "path": "research/r740-shared-donor-kernel/stages/retime-selection.json", + "git_blob": "42a29f7d9a1ad9967c741484da9f9597f1d35ea3", + "sha256": "161b7c17f7fca5df2e52d6887c31acd2b370b2392fcb7d4a638bb9d8b0fc9c95" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/clifford_exact.py", + "git_blob": "166841a037f069249f6f7f6dedb89248812f59e2", + "sha256": "2982ead07721e83358dc67c6f49c2b4c16a236a6bebdfd72f58221be1f5d0962" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/engines/base_two_moment.py", + "git_blob": "14a90fa0e788217856f070382c9e61bd7c603c61", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/engines/moment.py", + "git_blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/engines/outer.py", + "git_blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/export_records.py", + "git_blob": "3632d370486a02f5456f7643ced03f8c925b2350", + "sha256": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/hamming_packets.py", + "git_blob": "c1299966560e91a52cd2c39783f23ef8d8648eaa", + "sha256": "daa9301e2767a711cfe66c6bebaad68e1a3bdb97ec9e848c927527ab43b37ae5" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/kernel417/LICENSE", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/kernel417/e8core.py", + "git_blob": "f2874bae8ef044240211fd892afb457d13759c74", + "sha256": "3f4e25f700b7eb5821ab9cdfc65541f3f921baffeb8704beb21c6d7072052d29" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/kernel417/engines/base_two_moment.py", + "git_blob": "14a90fa0e788217856f070382c9e61bd7c603c61", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/kernel417/engines/moment.py", + "git_blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/kernel417/engines/outer.py", + "git_blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/kernel417/stages.py", + "git_blob": "9ef95d52f4b2ba0389bb2edb15228da698dd75f4", + "sha256": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/LICENSE", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/NOTICE.md", + "git_blob": "2c01026b8b300ccc16c313f652f9e46e61617304", + "sha256": "eb9cb7eab03977930484fee70d0aea066803917a6304b1ad2644cfcc6bf2acd4" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/README.md", + "git_blob": "5ddb576f02f1e3ef8cfee443bd654ad8cf26b837", + "sha256": "d737a3b77de97bdf67d2a140465be5b8886af6aa57516f78ad8f2839f3dae8cc" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/bit/producer/compile.py", + "git_blob": "86b12507ef86308336833a208a989d56072096d1", + "sha256": "60fea6a9d6617a3f87376d3fda040642e9cb70e7c179015e03ede8d289f30357" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/bit/producer/compile2.py", + "git_blob": "a7bdfdfbe417c793b2a8c515f5432bdd10472259", + "sha256": "0e23d4282ceb75768e82631da016aaff9818aec53c7d75a6b2a28ee1b1160dc3" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/bit/producer/e8lib.py", + "git_blob": "8464b956f6a5aa5061695990a14b7a385d370c2e", + "sha256": "4f8a6843e83bc4f7055d7337f33dbe12ce499051f46bee1b81bbf6b34c652574" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/bit/producer/frames.py", + "git_blob": "b28c3b2413b9767e7ffe0a8b2db93836f3455494", + "sha256": "ba71f77dd3e3c1c54f361c066cebe9faadbc78db46376046e7af625bf1de8c24" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/bit/producer/fullword.py", + "git_blob": "104f01b7803481b623809bc8a57682d28f09b5c3", + "sha256": "0daf87599e9e48646b985ad87351c56c1b73cfc99cdf9eca081483846ddbfa90" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/bit/producer/ham1.py", + "git_blob": "8086649a5f71c16698db7059bbada7187d781b56", + "sha256": "359040fb432fd392472af6b8f5dca0234dd6c2be744a791df27ba62bc5da5175" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/bit/producer/ham2.py", + "git_blob": "842f76b245a1bfb4150c53a853f6f472511f5a2f", + "sha256": "fdf0af785ce697bd7f80b4e75f7163735f3b599d9dc42f652f0ffdbdf18ea8bf" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/bit/producer/params-r865.json", + "git_blob": "110b4d94d884f03d4d37be22672ab27d836f1275", + "sha256": "1256c54debe0a551da8e24896ab73ef0bd4a5233ff8e6fedf21a9e6301d6e6f3" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/bit/producer/price.py", + "git_blob": "9014d97d519eea1f8c96e4bfc75afa0febd5903f", + "sha256": "46c858e60ba0a117bf8227b864abf55e85ebee2d56a0dce64472b706499ac405" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/reuse/controls.py", + "git_blob": "ceb15852b726423f8b6978ba80817ba2b4ac5b39", + "sha256": "89df84f78064de12cd11f0f5f63aa9cad2385f5d18d2e4ade7409a5ae0435721" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/reuse/ecost.py", + "git_blob": "4ec2a959b1cd599e3297de17563446d623e2867c", + "sha256": "901c61f0a8082fc87012f91372aafbb2a1b464be685426e32e77cc9f0e393958" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/reuse/regen.py", + "git_blob": "529de1b8b37f28e877a57ab3e22a506002860370", + "sha256": "972740a54e487b12aebc09f2fab5f2878835727cb4ad82fb1aa26a0f2d34f517" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/reuse/retime.py", + "git_blob": "9c3e94b800b70cfe1383ea6478d85bf859903006", + "sha256": "d8530464a6e00e0a509cf8b392cae70579c8d0f636a0dc86677f5dee0863d34d" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/code/reuse/reuse.py", + "git_blob": "df455a0b37cca6ebd1a214661b540e8665467208", + "sha256": "b802483c024d23c92df30f1a2d93838280e39dfa0bd7129b879d6cc0b84c80a4" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/data/bit/bitE8-r740.json.gz", + "git_blob": "8a8ce996b890c7d11b2f8c7fbbd8148747627f46", + "sha256": "f8daa4982d865748fa9a3095b2cf4290f34e2c085d6d35673fd7171cab95623c" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/data/bit/reuse-ledger.json", + "git_blob": "51eb63c7d8b3b4a0640412a215df042e878f1034", + "sha256": "e7bb324150a5342076c9a268f69b83c65f817a7cfc1d14fda9558a9f7e486f0b" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr436/data/params/params-r740.json", + "git_blob": "d9bc74d95b4bd1acde79ada315508f24b4fc06e3", + "sha256": "871fc75ce6fea2638f68553bcfe771d09297e987d59c123338227e29415851d1" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr438/complex_phases.py", + "git_blob": "6f199bc139319321800c42dc67eac2c9276ec1c7", + "sha256": "3e2a52198475ee280a314895ab74df8437e3c0de0cad2d90baa370aa2a52c364" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr439/LICENSE", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr439/NOTICE.md", + "git_blob": "3dfad2ad57a2c4edfcc3bd4dca8ef6c3d8374792", + "sha256": "750f199a92e02e1ae45d092c1768f0e1833542787158348ab4af63adbde003e7" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr439/bank_routes.py", + "git_blob": "919fe32f7eb536a0a6e3f8fbc0fcc4b000277ac2", + "sha256": "0dd88bd715477cdf804a41577bc096ba7911427f748f3ac6d6added365f7da60" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr439/e8core.py", + "git_blob": "78983b368715e89fe8524a6dd2c13585d2b5394e", + "sha256": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr439/engines/base_two_moment.py", + "git_blob": "14a90fa0e788217856f070382c9e61bd7c603c61", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr439/engines/moment.py", + "git_blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "sha256": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr439/engines/outer.py", + "git_blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + { + "path": "research/r740-shared-donor-kernel/vendor/pr439/tile_m.py", + "git_blob": "cd5fd9b5399f5e7afe5d2a95bd3504bd543c0d60", + "sha256": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd" + }, + { + "path": "research/r740-shared-donor-kernel/verify.py", + "git_blob": "36a698beaa68558756e274b1fd9ddc3cf215e19b", + "sha256": "e48fc2734325c298224d0a3b92dfea82e8b0671ad98549f8f189f9ea5d63265e" + } + ] +} diff --git a/research/e8-joint-frame-retiming/SOURCES.json b/research/e8-joint-frame-retiming/SOURCES.json new file mode 100644 index 0000000000..33c7465fde --- /dev/null +++ b/research/e8-joint-frame-retiming/SOURCES.json @@ -0,0 +1,434 @@ +{ + "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": "Rohan Arun with OpenAI Codex: two joint B-phase sweeps, 28 groups in each, yield 126 net changed B frames plus the inherited 57 A moves. This independently reaches the same word later published in PR441 at 6160c13526f5f957902910b462164c93c1d8f39a. Scalar operands/order are unchanged.", + "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": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "kernel_entries": 112, + "retiming_moves": 183, + "discovery_claim": "Selected finite witnesses are regenerated and exactly checked; optimization search is not claimed to be reproduced or globally optimal.", + "new_group_moves": 56, + "new_B_gates": 126 + }, + "pr440": { + "head": "bd03373b6d4d4e380d0b6ea7d55cd2ac8f163544", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/440", + "role": "Complete source package, preserved inherited construction and audit engine. Exact imported Git blobs listed in SOURCE440-PINS.json; local adaptations explicitly described here." + }, + "upstream440_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." + }, + "pr441_matching_word": { + "head": "6160c13526f5f957902910b462164c93c1d8f39a", + "word_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "role": "Independently published same final word; credited without importing its source package." + } +} diff --git a/research/e8-joint-frame-retiming/VALIDATION.json b/research/e8-joint-frame-retiming/VALIDATION.json new file mode 100644 index 0000000000..70bc5df84c --- /dev/null +++ b/research/e8-joint-frame-retiming/VALIDATION.json @@ -0,0 +1,6 @@ +{ + "status": "CHANGED_PROGRAM_PASSED_FULL_WRAPPERS_PENDING", + "kappa": "0.001138798055343319", + "word_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "scope": "Two-sweep word matches PR441; changed program passed. Earlier one-sweep full311/full314 receipts remain historical. New full replay occurs through the hosting wrapper." +} diff --git a/research/e8-joint-frame-retiming/code/bit_audit.py b/research/e8-joint-frame-retiming/code/bit_audit.py new file mode 100644 index 0000000000..33058e814a --- /dev/null +++ b/research/e8-joint-frame-retiming/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 source-bound joint A/B 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.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'], output_sha256=rt['output_sha256'], primitive_retime_moves=len(rt['gates'])) +(D / 'bit-kernel-receipt.json').write_text(json.dumps(res, indent=2) + '\n'); print(json.dumps(res)) diff --git a/research/e8-joint-frame-retiming/code/bit_price.py b/research/e8-joint-frame-retiming/code/bit_price.py new file mode 100644 index 0000000000..005da012a3 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/code/complex_audit.py b/research/e8-joint-frame-retiming/code/complex_audit.py new file mode 100644 index 0000000000..ba6789a3a6 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/code/complex_phases.py b/research/e8-joint-frame-retiming/code/complex_phases.py new file mode 100644 index 0000000000..127a042ea7 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/code/complex_phases_full.py b/research/e8-joint-frame-retiming/code/complex_phases_full.py new file mode 100644 index 0000000000..b5a5bd64b4 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/code/primitive_retime.py b/research/e8-joint-frame-retiming/code/primitive_retime.py new file mode 100644 index 0000000000..e6e7317a14 --- /dev/null +++ b/research/e8-joint-frame-retiming/code/primitive_retime.py @@ -0,0 +1,27 @@ +"""Apply the pinned joint A/B 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 in ('A','B') 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==len(sel['gates']) 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/e8-joint-frame-retiming/code/residual_routes.py b/research/e8-joint-frame-retiming/code/residual_routes.py new file mode 100644 index 0000000000..04feccfe52 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/inputs/bit-geometry.json.gz b/research/e8-joint-frame-retiming/inputs/bit-geometry.json.gz new file mode 100644 index 0000000000..19725bec46 Binary files /dev/null and b/research/e8-joint-frame-retiming/inputs/bit-geometry.json.gz differ diff --git a/research/e8-joint-frame-retiming/inputs/complex-canonical-reference.json.gz b/research/e8-joint-frame-retiming/inputs/complex-canonical-reference.json.gz new file mode 100644 index 0000000000..d604ec1ae8 Binary files /dev/null and b/research/e8-joint-frame-retiming/inputs/complex-canonical-reference.json.gz differ diff --git a/research/e8-joint-frame-retiming/inputs/complex-data-phases.json.gz b/research/e8-joint-frame-retiming/inputs/complex-data-phases.json.gz new file mode 100644 index 0000000000..22154a8c58 Binary files /dev/null and b/research/e8-joint-frame-retiming/inputs/complex-data-phases.json.gz differ diff --git a/research/e8-joint-frame-retiming/inputs/complex-phase-receipt.json b/research/e8-joint-frame-retiming/inputs/complex-phase-receipt.json new file mode 100644 index 0000000000..2a370225ea --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/inputs/complex-phase-recipes.json.gz b/research/e8-joint-frame-retiming/inputs/complex-phase-recipes.json.gz new file mode 100644 index 0000000000..03dc5fbe5e Binary files /dev/null and b/research/e8-joint-frame-retiming/inputs/complex-phase-recipes.json.gz differ diff --git a/research/e8-joint-frame-retiming/inputs/complex-ports.json.gz b/research/e8-joint-frame-retiming/inputs/complex-ports.json.gz new file mode 100644 index 0000000000..ccbdc0596c Binary files /dev/null and b/research/e8-joint-frame-retiming/inputs/complex-ports.json.gz differ diff --git a/research/e8-joint-frame-retiming/inputs/complex-template.json.gz b/research/e8-joint-frame-retiming/inputs/complex-template.json.gz new file mode 100644 index 0000000000..975ce5c0df Binary files /dev/null and b/research/e8-joint-frame-retiming/inputs/complex-template.json.gz differ diff --git a/research/e8-joint-frame-retiming/inputs/e8-r865.json.gz b/research/e8-joint-frame-retiming/inputs/e8-r865.json.gz new file mode 100644 index 0000000000..8bec1751f7 Binary files /dev/null and b/research/e8-joint-frame-retiming/inputs/e8-r865.json.gz differ diff --git a/research/e8-joint-frame-retiming/local-evidence/KERNEL440-GROUP-FINAL-FRAME-SEARCH.json b/research/e8-joint-frame-retiming/local-evidence/KERNEL440-GROUP-FINAL-FRAME-SEARCH.json new file mode 100644 index 0000000000..4cb2392125 --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/KERNEL440-GROUP-FINAL-FRAME-SEARCH.json @@ -0,0 +1,8 @@ +{ + "status": "NOMINATION_NEEDS_EXACT_REPLAY", + "source_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "output_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "tested_gates": 14846, + "candidate_evaluations": 203, + "changes": [] +} diff --git a/research/e8-joint-frame-retiming/local-evidence/KERNEL440-GROUP2-SEARCH.json b/research/e8-joint-frame-retiming/local-evidence/KERNEL440-GROUP2-SEARCH.json new file mode 100644 index 0000000000..54751b966c --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/KERNEL440-GROUP2-SEARCH.json @@ -0,0 +1,709 @@ +{ + "status": "GROUP_NOMINATION_NEEDS_EXACT_REPLAY", + "source_sha256": "b443c9a7a03f35dc767841e736a3b64bcd115a4acaa5efeb80b4f4aa82517e91", + "output_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "groups_tested": 88774, + "positive": 42, + "selected": [ + { + "gates": [ + [ + "B", + 5 + ], + [ + "B", + 6 + ], + [ + "B", + 7 + ] + ], + "old_frame": 458, + "new_frame": 515, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 15 + ], + [ + "B", + 16 + ], + [ + "B", + 17 + ] + ], + "old_frame": 459, + "new_frame": 493, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 23 + ], + [ + "B", + 24 + ], + [ + "B", + 25 + ] + ], + "old_frame": 460, + "new_frame": 492, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 31 + ], + [ + "B", + 32 + ], + [ + "B", + 33 + ] + ], + "old_frame": 461, + "new_frame": 489, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 40 + ], + [ + "B", + 41 + ], + [ + "B", + 42 + ] + ], + "old_frame": 462, + "new_frame": 488, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 48 + ], + [ + "B", + 49 + ], + [ + "B", + 50 + ] + ], + "old_frame": 463, + "new_frame": 485, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 58 + ], + [ + "B", + 59 + ], + [ + "B", + 60 + ] + ], + "old_frame": 464, + "new_frame": 484, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 66 + ], + [ + "B", + 67 + ], + [ + "B", + 68 + ] + ], + "old_frame": 465, + "new_frame": 481, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 74 + ], + [ + "B", + 75 + ], + [ + "B", + 76 + ] + ], + "old_frame": 466, + "new_frame": 480, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 84 + ], + [ + "B", + 85 + ], + [ + "B", + 86 + ] + ], + "old_frame": 467, + "new_frame": 477, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 92 + ], + [ + "B", + 93 + ], + [ + "B", + 94 + ] + ], + "old_frame": 468, + "new_frame": 476, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 100 + ], + [ + "B", + 101 + ], + [ + "B", + 102 + ] + ], + "old_frame": 469, + "new_frame": 473, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 108 + ], + [ + "B", + 109 + ], + [ + "B", + 110 + ] + ], + "old_frame": 470, + "new_frame": 472, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 116 + ], + [ + "B", + 117 + ], + [ + "B", + 118 + ] + ], + "old_frame": 471, + "new_frame": 496, + "delta": { + "5": 3, + "4": -3, + "1": 5, + "2": -4 + }, + "score": -0.0022336800848096333 + }, + { + "gates": [ + [ + "B", + 8 + ], + [ + "B", + 143 + ], + [ + "B", + 343 + ] + ], + "old_frame": 807, + "new_frame": 887, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 18 + ], + [ + "B", + 139 + ], + [ + "B", + 335 + ] + ], + "old_frame": 795, + "new_frame": 919, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 26 + ], + [ + "B", + 127 + ], + [ + "B", + 327 + ] + ], + "old_frame": 783, + "new_frame": 927, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 34 + ], + [ + "B", + 159 + ], + [ + "B", + 319 + ] + ], + "old_frame": 771, + "new_frame": 935, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 43 + ], + [ + "B", + 151 + ], + [ + "B", + 311 + ] + ], + "old_frame": 759, + "new_frame": 911, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 51 + ], + [ + "B", + 175 + ], + [ + "B", + 303 + ] + ], + "old_frame": 747, + "new_frame": 879, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 61 + ], + [ + "B", + 167 + ], + [ + "B", + 295 + ] + ], + "old_frame": 735, + "new_frame": 839, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 69 + ], + [ + "B", + 191 + ], + [ + "B", + 287 + ] + ], + "old_frame": 723, + "new_frame": 943, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 77 + ], + [ + "B", + 183 + ], + [ + "B", + 279 + ] + ], + "old_frame": 711, + "new_frame": 903, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 87 + ], + [ + "B", + 207 + ], + [ + "B", + 271 + ] + ], + "old_frame": 699, + "new_frame": 871, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 95 + ], + [ + "B", + 199 + ], + [ + "B", + 263 + ] + ], + "old_frame": 687, + "new_frame": 847, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 103 + ], + [ + "B", + 231 + ], + [ + "B", + 255 + ] + ], + "old_frame": 675, + "new_frame": 855, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 111 + ], + [ + "B", + 223 + ], + [ + "B", + 247 + ] + ], + "old_frame": 663, + "new_frame": 863, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + }, + { + "gates": [ + [ + "B", + 119 + ], + [ + "B", + 215 + ], + [ + "B", + 239 + ] + ], + "old_frame": 651, + "new_frame": 895, + "delta": { + "7": 1, + "6": -1, + "2": -2, + "1": 3 + }, + "score": -0.00010882426858353604 + } + ] +} diff --git a/research/e8-joint-frame-retiming/local-evidence/first-group-full311.json b/research/e8-joint-frame-retiming/local-evidence/first-group-full311.json new file mode 100644 index 0000000000..e9ceb5707a --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/first-group-full311.json @@ -0,0 +1,126 @@ +{ + "status": "PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY", + "kappa": "1137722673868541/1000000000000000000", + "kappa_decimal": "0.001137722673868541", + "bit_lower": "142377320138934335749/125000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.560753274010498, + "bit_invoice": { + "prefix_bits": 123, + "charged_prefix_bits": 128, + "extra_helper_route_factor_bound": 144, + "selector_charge": 2375347104, + "full_counted_coefficient": "8271410009661736653226854737163514649", + "two_level_coefficient": "7233269207237575534994316092485675546539098099997620909287628171496066767429173102500", + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14187, + "physical": 14196 + }, + "strict_outer_constraints": { + "bit_positive": "1139018561111474683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "44967988094854316412244757258863744371933936552597113568601671604573500487351893848986182753838631699010696266247417858409275824734493556805998725074625890928899031/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "44967988094854315228258208052534744371933936552597113568601671604573500487351893848986182753838631699010696266247417858409275824734493556805998725074625890928899031/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1139018561111474683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "22483994047427158753147665137742055773722211017434812412366899249689636675074275319919590889567422000519165379285077230193941646119828919993723537802819388658450790425374109071100969/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "569509280555737465654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499430490719444262534345140939740906555773722211017434812412366899249689636675074275319919590889567422000519165379285077230193941646119828919993723537802819388658450790425374109071100969/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "1139018561111474683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "44967988094854317551263318370338427959689179293733369196667735051976386918750222244412682266486737850024513512408786159398579558487075698396722900340132334122900305925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1139018561111474683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1139018561111474683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "22483994047427158753147665137742055773722211017434812412366899249689636675074275319919590889567422000519165379285077230193941646119828919993723537802819388658450790425374109071100969/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031", + "epsilon_below_one": "569509280555737840654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031", + "guard_width": "569509280555737840654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031", + "K_geometry": "375569509280555737465654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031000000000000000000", + "K_dominates_log": "569509280555737465085349779703355978571418728723471743361355311767745175737292623929770045785506853319400425510282344770325223733165248310200218108317009531335272747377445279587349821425374109071100969/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031000000000000000000", + "record_suffix": "569509280555737840654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031", + "phase_local": "4556074244445902224669363201517010213155363251601428056474787017019917719011772696690332909558534899315766267855286804158967632210326445870244153343697273810726117214399826516089643038425374109071100969/4004556074244445898725238872482072747553810222311860521500701064806002482906599405797440643272883460623995846676965719382158448466831041368640050211697577444890732393676597007127431192248000000000000000000", + "phase_boundary": "911214848889180044478265215858812170107185402113010855913935172217931393732248058737818291251766400119088926282711298432208858745493350958203983985635317898140202273122220814144689240025374109071100969/800911214848889179745047774496414549510762044462372104300140212961200496581319881159488128654576692124799169335393143876431689693366208273728010042339515488978146478735319401425486238449600000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "999999999999999998499430490719444262659345140939740906555773722211017434812412366899249689636675074275319919590889567422000519165379285077230193941646119828919993723537802819388658450790425374109071100969/2002278037122222949362619436241036373776905111155930260750350532403001241453299702898720321636441730311997923338482859691079224233415520684320025105848788722445366196838298503563715596124000000000000000000", + "prime_interval_packing": "569509280555737840654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031", + "alpha_positive": "1139018561111475180740208839962449547797696517706036930948988412518055539062218348609850454895939431318881260130997267540131282087045419390206494570514190142676821956952071170516248852425374109071100969/1001139018561111474681309718120518186888452555577965130375175266201500620726649851449360160818220865155998961669241429845539612116707760342160012552924394361222683098419149251781857798062000000000000000000", + "alpha_below_one": "999999999999999999500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/1001139018561111474681309718120518186888452555577965130375175266201500620726649851449360160818220865155998961669241429845539612116707760342160012552924394361222683098419149251781857798062000000000000000000", + "alpha_below_one_fourth": "249145736079166393489587220690167097174315442376785245662844828137857099642600244513730189749659276857680859157179360193844771747089894666149796643660584400162993952647835241774948200663074625890928899031/1001139018561111474681309718120518186888452555577965130375175266201500620726649851449360160818220865155998961669241429845539612116707760342160012552924394361222683098419149251781857798062000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "499429842037802983931113225473315640616586926213182352389192386936196588224636220922471948451350494322086857444185646269539818978333276978525728534377170955952901407463879241984702928429199934871747820803774229842898081118164166944180407320590112389148502090895515218645306958789842433194451366314049284989933030444401435281569980033404179878589792738961/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "28036448593955567195303619507698249192452446355675661452338287351814967558815558145681776077273042462166007014643057052791266030238510475717429819868642260072365877978799367598853474185612723877672786697093/4004556074244445898725238872482072747553810222311860521500701064806002482906599405797440643272883460623995846676965719382158448466831041368640050211697577444890732393676597007127431192248000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "518082120141773027488417299398520501678034893446246588891471825313703798331643685161376043800071209724963119095681740790428114696986813832920198596726646592409875263242395570293243716229/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031000000000000000000", + "coordinate_movement_above_kappa": "1295887242933683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "8756305430608645073881220169130704116904307828632011851942096106476743984159379718347981695480388573481819130530512933829154319316466830920096160132224705899266857016410472201157408599/250284754640277868670327429530129546722113138894491282593793816550375155181662462862340040204555216288999740417310357461384903029176940085540003138231098590305670774604787312945464449515500000000000000000", + "bulk_exposure_above_kappa": "1295887242933683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "1641809414731405533204064099886868546203147758625059885193836437005878834836524852667607948355017514909707548592350351709575887284125109807961557391502186836222294359891291432891305234677/4004556074244445898725238872482072747553810222311860521500701064806002482906599405797440643272883460623995846676965719382158448466831041368640050211697577444890732393676597007127431192248000000000000000000", + "scalar_work_above_kappa": "3644087451853628482566683536127904919980052869780990145944186969408880076289824555566328269991459245221705471930833211400655111517540630492281582497350975558667660556729589936455020830801/4004556074244445898725238872482072747553810222311860521500701064806002482906599405797440643272883460623995846676965719382158448466831041368640050211697577444890732393676597007127431192248000000000000000000", + "dimension_above_kappa": "499430490719444262177427261081513934044191021609537936490447260345496278528146899589023717922533252583376562965450494802193313037327860619348108420524616652308857047517071966518946364211395570293243716229/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "1253556742597962988587472702618792051652081/1000000000000000000000000000000000000000000000000", + "cutoff_log2": "22909441739305" + }, + { + "gap": "1427824397225519049045171318072665890391704940609083382256697271/1000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "17658463167048832162" + }, + { + "gap": "1626318490447669376052523046313900596964693501240820349832557132546448580241471630561/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13611039717613121124262056" + }, + { + "gap": "1852406946898689961559123737345037313962898978654397565090174633432169203306316770868559659693522234170951/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10491309489499786814309519817220" + }, + { + "gap": "2109925895249445735533296910485753541242978796651493874380468126490314057919681963101425844746115180585686846372494532938847441/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "8086639748911856603450965654081926338" + }, + { + "gap": "2403244757258863744371933936552597113568601671604573500487351893848986182753838631699010696266247417858409275824734493556805998725074625890928899031/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6233134433230709243370204574243874436982430" + } + ], + "bit_template_sha256": "5172360df70765158c57c17aafa6bc80ee3f3a87a6a3f18c4d6b56d3904b4627", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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.", + "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", + "manifest_sha256": "7e8f1c0f8bac1fdc82dd1f103cb08f75ce3daa21dc8b54a97eb1dc6885ab4bab" +} diff --git a/research/e8-joint-frame-retiming/local-evidence/first-group-full314.json b/research/e8-joint-frame-retiming/local-evidence/first-group-full314.json new file mode 100644 index 0000000000..e9ceb5707a --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/first-group-full314.json @@ -0,0 +1,126 @@ +{ + "status": "PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY", + "kappa": "1137722673868541/1000000000000000000", + "kappa_decimal": "0.001137722673868541", + "bit_lower": "142377320138934335749/125000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.560753274010498, + "bit_invoice": { + "prefix_bits": 123, + "charged_prefix_bits": 128, + "extra_helper_route_factor_bound": 144, + "selector_charge": 2375347104, + "full_counted_coefficient": "8271410009661736653226854737163514649", + "two_level_coefficient": "7233269207237575534994316092485675546539098099997620909287628171496066767429173102500", + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14187, + "physical": 14196 + }, + "strict_outer_constraints": { + "bit_positive": "1139018561111474683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "44967988094854316412244757258863744371933936552597113568601671604573500487351893848986182753838631699010696266247417858409275824734493556805998725074625890928899031/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "44967988094854315228258208052534744371933936552597113568601671604573500487351893848986182753838631699010696266247417858409275824734493556805998725074625890928899031/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1139018561111474683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "22483994047427158753147665137742055773722211017434812412366899249689636675074275319919590889567422000519165379285077230193941646119828919993723537802819388658450790425374109071100969/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "569509280555737465654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499430490719444262534345140939740906555773722211017434812412366899249689636675074275319919590889567422000519165379285077230193941646119828919993723537802819388658450790425374109071100969/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "1139018561111474683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "44967988094854317551263318370338427959689179293733369196667735051976386918750222244412682266486737850024513512408786159398579558487075698396722900340132334122900305925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1139018561111474683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1139018561111474683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "22483994047427158753147665137742055773722211017434812412366899249689636675074275319919590889567422000519165379285077230193941646119828919993723537802819388658450790425374109071100969/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031", + "epsilon_below_one": "569509280555737840654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031", + "guard_width": "569509280555737840654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031", + "K_geometry": "375569509280555737465654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031000000000000000000", + "K_dominates_log": "569509280555737465085349779703355978571418728723471743361355311767745175737292623929770045785506853319400425510282344770325223733165248310200218108317009531335272747377445279587349821425374109071100969/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031000000000000000000", + "record_suffix": "569509280555737840654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031", + "phase_local": "4556074244445902224669363201517010213155363251601428056474787017019917719011772696690332909558534899315766267855286804158967632210326445870244153343697273810726117214399826516089643038425374109071100969/4004556074244445898725238872482072747553810222311860521500701064806002482906599405797440643272883460623995846676965719382158448466831041368640050211697577444890732393676597007127431192248000000000000000000", + "phase_boundary": "911214848889180044478265215858812170107185402113010855913935172217931393732248058737818291251766400119088926282711298432208858745493350958203983985635317898140202273122220814144689240025374109071100969/800911214848889179745047774496414549510762044462372104300140212961200496581319881159488128654576692124799169335393143876431689693366208273728010042339515488978146478735319401425486238449600000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "999999999999999998499430490719444262659345140939740906555773722211017434812412366899249689636675074275319919590889567422000519165379285077230193941646119828919993723537802819388658450790425374109071100969/2002278037122222949362619436241036373776905111155930260750350532403001241453299702898720321636441730311997923338482859691079224233415520684320025105848788722445366196838298503563715596124000000000000000000", + "prime_interval_packing": "569509280555737840654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031", + "alpha_positive": "1139018561111475180740208839962449547797696517706036930948988412518055539062218348609850454895939431318881260130997267540131282087045419390206494570514190142676821956952071170516248852425374109071100969/1001139018561111474681309718120518186888452555577965130375175266201500620726649851449360160818220865155998961669241429845539612116707760342160012552924394361222683098419149251781857798062000000000000000000", + "alpha_below_one": "999999999999999999500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031/1001139018561111474681309718120518186888452555577965130375175266201500620726649851449360160818220865155998961669241429845539612116707760342160012552924394361222683098419149251781857798062000000000000000000", + "alpha_below_one_fourth": "249145736079166393489587220690167097174315442376785245662844828137857099642600244513730189749659276857680859157179360193844771747089894666149796643660584400162993952647835241774948200663074625890928899031/1001139018561111474681309718120518186888452555577965130375175266201500620726649851449360160818220865155998961669241429845539612116707760342160012552924394361222683098419149251781857798062000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "499429842037802983931113225473315640616586926213182352389192386936196588224636220922471948451350494322086857444185646269539818978333276978525728534377170955952901407463879241984702928429199934871747820803774229842898081118164166944180407320590112389148502090895515218645306958789842433194451366314049284989933030444401435281569980033404179878589792738961/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "28036448593955567195303619507698249192452446355675661452338287351814967558815558145681776077273042462166007014643057052791266030238510475717429819868642260072365877978799367598853474185612723877672786697093/4004556074244445898725238872482072747553810222311860521500701064806002482906599405797440643272883460623995846676965719382158448466831041368640050211697577444890732393676597007127431192248000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "518082120141773027488417299398520501678034893446246588891471825313703798331643685161376043800071209724963119095681740790428114696986813832920198596726646592409875263242395570293243716229/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031000000000000000000", + "coordinate_movement_above_kappa": "1295887242933683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "8756305430608645073881220169130704116904307828632011851942096106476743984159379718347981695480388573481819130530512933829154319316466830920096160132224705899266857016410472201157408599/250284754640277868670327429530129546722113138894491282593793816550375155181662462862340040204555216288999740417310357461384903029176940085540003138231098590305670774604787312945464449515500000000000000000", + "bulk_exposure_above_kappa": "1295887242933683587755242741136255628066063447402886431398328395426499512648106151013817246161368300989303733752582141590724175265506443194001274925374109071100969/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "1641809414731405533204064099886868546203147758625059885193836437005878834836524852667607948355017514909707548592350351709575887284125109807961557391502186836222294359891291432891305234677/4004556074244445898725238872482072747553810222311860521500701064806002482906599405797440643272883460623995846676965719382158448466831041368640050211697577444890732393676597007127431192248000000000000000000", + "scalar_work_above_kappa": "3644087451853628482566683536127904919980052869780990145944186969408880076289824555566328269991459245221705471930833211400655111517540630492281582497350975558667660556729589936455020830801/4004556074244445898725238872482072747553810222311860521500701064806002482906599405797440643272883460623995846676965719382158448466831041368640050211697577444890732393676597007127431192248000000000000000000", + "dimension_above_kappa": "499430490719444262177427261081513934044191021609537936490447260345496278528146899589023717922533252583376562965450494802193313037327860619348108420524616652308857047517071966518946364211395570293243716229/500569509280555737340654859060259093444226277788982565187587633100750310363324925724680080409110432577999480834620714922769806058353880171080006276462197180611341549209574625890928899031000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "1253556742597962988587472702618792051652081/1000000000000000000000000000000000000000000000000", + "cutoff_log2": "22909441739305" + }, + { + "gap": "1427824397225519049045171318072665890391704940609083382256697271/1000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "17658463167048832162" + }, + { + "gap": "1626318490447669376052523046313900596964693501240820349832557132546448580241471630561/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13611039717613121124262056" + }, + { + "gap": "1852406946898689961559123737345037313962898978654397565090174633432169203306316770868559659693522234170951/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10491309489499786814309519817220" + }, + { + "gap": "2109925895249445735533296910485753541242978796651493874380468126490314057919681963101425844746115180585686846372494532938847441/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "8086639748911856603450965654081926338" + }, + { + "gap": "2403244757258863744371933936552597113568601671604573500487351893848986182753838631699010696266247417858409275824734493556805998725074625890928899031/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6233134433230709243370204574243874436982430" + } + ], + "bit_template_sha256": "5172360df70765158c57c17aafa6bc80ee3f3a87a6a3f18c4d6b56d3904b4627", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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.", + "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", + "manifest_sha256": "7e8f1c0f8bac1fdc82dd1f103cb08f75ce3daa21dc8b54a97eb1dc6885ab4bab" +} diff --git a/research/e8-joint-frame-retiming/local-evidence/group-search.json b/research/e8-joint-frame-retiming/local-evidence/group-search.json new file mode 100644 index 0000000000..2659e6956e --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/group-search.json @@ -0,0 +1,653 @@ +{ + "status": "GROUP_NOMINATION_NEEDS_EXACT_REPLAY", + "source_sha256": "bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e", + "output_sha256": "b443c9a7a03f35dc767841e736a3b64bcd115a4acaa5efeb80b4f4aa82517e91", + "groups_tested": 88676, + "positive": 42, + "selected": [ + { + "gates": [ + [ + "B", + 8 + ], + [ + "B", + 142 + ], + [ + "B", + 143 + ] + ], + "old_frame": 537, + "new_frame": 807, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 18 + ], + [ + "B", + 138 + ], + [ + "B", + 139 + ] + ], + "old_frame": 536, + "new_frame": 795, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 26 + ], + [ + "B", + 126 + ], + [ + "B", + 127 + ] + ], + "old_frame": 516, + "new_frame": 783, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 34 + ], + [ + "B", + 158 + ], + [ + "B", + 159 + ] + ], + "old_frame": 570, + "new_frame": 771, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 43 + ], + [ + "B", + 150 + ], + [ + "B", + 151 + ] + ], + "old_frame": 554, + "new_frame": 759, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 51 + ], + [ + "B", + 174 + ], + [ + "B", + 175 + ] + ], + "old_frame": 588, + "new_frame": 747, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 61 + ], + [ + "B", + 166 + ], + [ + "B", + 167 + ] + ], + "old_frame": 576, + "new_frame": 735, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 69 + ], + [ + "B", + 190 + ], + [ + "B", + 191 + ] + ], + "old_frame": 619, + "new_frame": 723, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 77 + ], + [ + "B", + 182 + ], + [ + "B", + 183 + ] + ], + "old_frame": 609, + "new_frame": 711, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 87 + ], + [ + "B", + 206 + ], + [ + "B", + 207 + ] + ], + "old_frame": 629, + "new_frame": 699, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 95 + ], + [ + "B", + 198 + ], + [ + "B", + 199 + ] + ], + "old_frame": 623, + "new_frame": 687, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 103 + ], + [ + "B", + 230 + ], + [ + "B", + 231 + ] + ], + "old_frame": 639, + "new_frame": 675, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 111 + ], + [ + "B", + 222 + ], + [ + "B", + 223 + ] + ], + "old_frame": 637, + "new_frame": 663, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 119 + ], + [ + "B", + 214 + ], + [ + "B", + 215 + ] + ], + "old_frame": 635, + "new_frame": 651, + "delta": { + "6": 1, + "5": -1, + "2": 4, + "1": -3, + "3": -2 + }, + "score": -0.0018920646416964865 + }, + { + "gates": [ + [ + "B", + 122 + ], + [ + "B", + 123 + ] + ], + "old_frame": 514, + "new_frame": 777, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 130 + ], + [ + "B", + 131 + ] + ], + "old_frame": 534, + "new_frame": 789, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 134 + ], + [ + "B", + 135 + ] + ], + "old_frame": 535, + "new_frame": 801, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 146 + ], + [ + "B", + 147 + ] + ], + "old_frame": 552, + "new_frame": 753, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 154 + ], + [ + "B", + 155 + ] + ], + "old_frame": 568, + "new_frame": 765, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 162 + ], + [ + "B", + 163 + ] + ], + "old_frame": 574, + "new_frame": 729, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 170 + ], + [ + "B", + 171 + ] + ], + "old_frame": 586, + "new_frame": 741, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 178 + ], + [ + "B", + 179 + ] + ], + "old_frame": 608, + "new_frame": 705, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 186 + ], + [ + "B", + 187 + ] + ], + "old_frame": 618, + "new_frame": 717, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 194 + ], + [ + "B", + 195 + ] + ], + "old_frame": 622, + "new_frame": 681, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 202 + ], + [ + "B", + 203 + ] + ], + "old_frame": 628, + "new_frame": 693, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 210 + ], + [ + "B", + 211 + ] + ], + "old_frame": 634, + "new_frame": 645, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 218 + ], + [ + "B", + 219 + ] + ], + "old_frame": 636, + "new_frame": 657, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + }, + { + "gates": [ + [ + "B", + 226 + ], + [ + "B", + 227 + ] + ], + "old_frame": 638, + "new_frame": 669, + "delta": { + "2": 3, + "1": -3, + "3": -1 + }, + "score": -0.0009870210830255077 + } + ] +} diff --git a/research/e8-joint-frame-retiming/local-evidence/group-sweeps.json b/research/e8-joint-frame-retiming/local-evidence/group-sweeps.json new file mode 100644 index 0000000000..9822dea63a --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/group-sweeps.json @@ -0,0 +1,10 @@ +[ + { + "sweep": 3, + "selected": 0, + "positive": 0, + "groups_tested": 88676, + "source_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "output_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6" + } +] diff --git a/research/e8-joint-frame-retiming/local-evidence/nonwinning-kernel-swaps.json b/research/e8-joint-frame-retiming/local-evidence/nonwinning-kernel-swaps.json new file mode 100644 index 0000000000..eec983c561 --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/nonwinning-kernel-swaps.json @@ -0,0 +1,8 @@ +{ + "status": "ANALYTIC_HISTOGRAM_SCREEN_NEEDS_EMITTED_REPLAY", + "tested": 5564, + "reference_score": 29.55581589087736, + "improving": 0, + "top": [], + "seconds": 0.4292959999293089 +} diff --git a/research/e8-joint-frame-retiming/local-evidence/source-span.json b/research/e8-joint-frame-retiming/local-evidence/source-span.json new file mode 100644 index 0000000000..1e5b7ef6b7 --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/source-span.json @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_F2_AND_INTEGER_SOURCE_SPANS", "columns": 980, "profile": {"1": 2416, "4": 389, "2": 1088, "3": 284, "5": 76, "8": 9, "6": 14}, "word_sha256": "b443c9a7a03f35dc767841e736a3b64bcd115a4acaa5efeb80b4f4aa82517e91"} diff --git a/research/e8-joint-frame-retiming/local-evidence/upstream440/CERTIFICATE.json b/research/e8-joint-frame-retiming/local-evidence/upstream440/CERTIFICATE.json new file mode 100644 index 0000000000..68ce443eb2 --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/upstream440/CERTIFICATE.json @@ -0,0 +1,125 @@ +{ + "status": "PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY", + "kappa": "142050466976941/125000000000000000", + "kappa_decimal": "0.001136403735815528", + "bit_lower": "284424154625755093061/250000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.434901067804583, + "bit_invoice": { + "prefix_bits": 123, + "charged_prefix_bits": 128, + "extra_helper_route_factor_bound": 144, + "selector_charge": 2375347104, + "full_counted_coefficient": "8271410009661736653226855278395470361", + "two_level_coefficient": "7323242093316479963924177312150069573045566553609912891292783054664675728289084971684", + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14187, + "physical": 14196 + }, + "strict_outer_constraints": { + "bit_positive": "1137696618503020369859308594787243437505992066895599371706152085922309735740547487371220810578313217415696836051312848969869155541209051194855644330671605418223004293/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "46289930703308630140691405212756562494007933104400628293847914077690264259452512628779189421686782584303163948687151030130844458790948805144355669328394581776995707/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "46289930703308628956704856006427562494007933104400628293847914077690264259452512628779189421686782584303163948687151030130844458790948805144355669328394581776995707/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "1137696618503020369859308594787243437505992066895599371706152085922309735740547487371220810578313217415696836051312848969869155541209051194855644330671605418223004293/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "23144965351654315616049046506234151106312561339443751652916023934444503835878342236699330451390878663372392552656792930762258280708323372441333375873248485744142184171605418223004293/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "568848309251510308791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "499431151690748489691208042321109398651106312561339443751652916023934444503835878342236699330451390878663372392552656792930762258280708323372441333375873248485744142184171605418223004293/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "1137696618503020369859308594787243437505992066895599371706152085922309735740547487371220810578313217415696836051312848969869155541209051194855644330671605418223004293/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "46289930703308631278388023715776932353316527891644065799839980973289635965604598551088925162234269955523974527000368445827680510103797775013511210537445776632640037671605418223004293/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "1137696618503020369859308594787243437505992066895599371706152085922309735740547487371220810578313217415696836051312848969869155541209051194855644330671605418223004293/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "1137696618503020369859308594787243437505992066895599371706152085922309735740547487371220810578313217415696836051312848969869155541209051194855644330671605418223004293/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "23144965351654315616049046506234151106312561339443751652916023934444503835878342236699330451390878663372392552656792930762258280708323372441333375873248485744142184171605418223004293/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707/500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "499999999999999999500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/500568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707", + "epsilon_below_one": "568848309251510683791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707/500568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707", + "guard_width": "568848309251510683791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707/500568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707", + "K_geometry": "375568848309251510308791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707/500568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707000000000000000000", + "K_dominates_log": "568848309251510308223109369639091040101729759769954899453396537404999247817037681697745173384487463573326937898734085732610134271948469558320924904835074886697191191701643067521137891171605418223004293/500568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707000000000000000000", + "record_suffix": "568848309251510683791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707/500568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707", + "phase_local": "4550786474012084969766813121873300607357541830393848637882984369863887720965889286040849860224751312929720190030136535217274326306990205951231591273722335486488195902500405139960107840171605418223004293/4004550786474012081470335661431124810791149499509284449986776671808524443969312973262106405356388872970693020859578745656553901933754333413020469332993014012114046862526627156654215965656000000000000000000", + "phase_boundary": "910157294802416593498283976973451974437942222966288648461646923044332545515510676355725575113652936375303502367140009974152779303523475534856124879311125795250705881198679816587335315371605418223004293/800910157294802416294067132286224962158229899901856889997355334361704888793862594652421281071277774594138604171915749131310780386750866682604093866598602802422809372505325431330843193131200000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "999999999999999998499431151690748489816208042321109398651106312561339443751652916023934444503835878342236699330451390878663372392552656792930762258280708323372441333375873248485744142184171605418223004293/2002275393237006040735167830715562405395574749754642224993388335904262221984656486631053202678194436485346510429789372828276950966877166706510234666496507006057023431263313578327107982828000000000000000000", + "prime_interval_packing": "568848309251510683791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707/500568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707", + "alpha_positive": "1137696618503020867015067048529692513995417198430511147800480513470554743981159339461045842933096584909954545346077292801847875991240146185879591528961826400953049007530037649298133598171605418223004293/1001137696618503020367583915357781202697787374877321112496694167952131110992328243315526601339097218242673255214894686414138475483438583353255117333248253503028511715631656789163553991414000000000000000000", + "alpha_below_one": "999999999999999999500568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707/1001137696618503020367583915357781202697787374877321112496694167952131110992328243315526601339097218242673255214894686414138475483438583353255117333248253503028511715631656789163553991414000000000000000000", + "alpha_below_one_fourth": "249146727536122734224880911790915608160451426520899766976373061474562223004100901489420604491841207975758359258377594310732770994868405692127899741783101549356174879900384159641590364255328394581776995707/1001137696618503020367583915357781202697787374877321112496694167952131110992328243315526601339097218242673255214894686414138475483438583353255117333248253503028511715631656789163553991414000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "499430504513950612711535939496931777011222707867262702609135115604476351859697846841724205938826110846662756724830005346541163463900632335802486375314121337359644537843498803844203706437453234116431967824526320693320933551200408491412319550694334205344044690930600823394746202924218339328668630236335144032973854354530647265188180498962381849862696429849/500568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "28036406291792096657264391836376753016880571869110947403940894436784177220499545038025047909339603348738834068885275792616441098292376696925371467889101987126795050900085397507776495298695485183745330987121/4004550786474012081470335661431124810791149499509284449986776671808524443969312973262106405356388872970693020859578745656553901933754333413020469332993014012114046862526627156654215965656000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "115105094837015522581400307289975059904712476099517836743449074772674468541139311711512331244692803814399181383079378018365956980781123344296055874963981492525105297958395624850575007713/62571106038656438772973994709861325168611710929832569531043385497008194437020515207220412583693576140167078450930917900883654717714911459578444833328015843939281982226978549322722124463375000000000000000", + "coordinate_movement_above_kappa": "1292882687492369859308594787243437505992066895599371706152085922309735740547487371220810578313217415696836051312848969869155541209051194855644330671605418223004293/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "420271910386872670467410500640909877888806121357482137699245514205330192832950372034335349287993821393856823457187680939858418104529695077740888333087725188686586525851336604222823065997/500568848309251510183791957678890601348893687438660556248347083976065555496164121657763300669548609121336627607447343207069237741719291676627558666624126751514255857815828394581776995707000000000000000000", + "bulk_exposure_above_kappa": "1292882687492369859308594787243437505992066895599371706152085922309735740547487371220810578313217415696836051312848969869155541209051194855644330671605418223004293/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "4863881828022735894290659878163950827157130033175838770339005365570838209152095341247972696312596398514864470479843477140075058061395435651809782664574181764035459780258178017527915515097/4004550786474012081470335661431124810791149499509284449986776671808524443969312973262106405356388872970693020859578745656553901933754333413020469332993014012114046862526627156654215965656000000000000000000", + "scalar_work_above_kappa": "274646288850389677401033108355180529302108191317219239813295748059004017245470073115161035959631633400008439236385313998734080361130904094332800693242827550803699328460859663834200939917/160182031458960483258813426457244992431645979980371377999471066872340977758772518930484256214255554918827720834383149826262156077350173336520818773319720560484561874501065086266168638626240000000000000000", + "dimension_above_kappa": "62428893961343561217131100127154197412788596360142490373669090602509642306428559565454055957445735571345252793761885913515526665364466558787512147453107500356773892737002943202383173495020624850575007713/62571106038656438772973994709861325168611710929832569531043385497008194437020515207220412583693576140167078450930917900883654717714911459578444833328015843939281982226978549322722124463375000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "1250597897575242763610525287539486284851049/1000000000000000000000000000000000000000000000000", + "cutoff_log2": "23017974907545" + }, + { + "gap": "1422800999178340312653279890889609572543300081619049799789032907/1000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "17783374638172503463" + }, + { + "gap": "1618715885567916440793100219686303675733095993018783840885226564194442481748116400401/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13739193599430645235131171" + }, + { + "gap": "1841607589327740611310938077177829655455121533582823098571332765181017054840839149207341788911804254469443/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10614714282487520204312221035891" + }, + { + "gap": "2095190726987669522178880753240416231390911555730030931540522619213201750122720936538560587967794085634841991423744314328870649/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "8200784018613269000871220837618779108" + }, + { + "gap": "2383691405212756562494007933104400628293847914077690264259452512628779189421686782584303163948687151030130844458790948805144355669328394581776995707/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6335814297978666976379790577081687558153548" + } + ], + "bit_template_sha256": "b59a206d355bb257cb06966d15c8542cfc591bfee729b821e3efe30a7ba8cdd9", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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.", + "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" +} diff --git a/research/e8-joint-frame-retiming/local-evidence/upstream440/INDEPENDENT-AUDIT.json b/research/e8-joint-frame-retiming/local-evidence/upstream440/INDEPENDENT-AUDIT.json new file mode 100644 index 0000000000..e75f4d081a --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/upstream440/INDEPENDENT-AUDIT.json @@ -0,0 +1,100 @@ +{ + "local_audit": { + "retiming_changes": 57, + "status": "PASS_INDEPENDENT_R740_KERNEL_AND_RETIMING", + "source_sha256": "d6ec8811541d6ab59a3bbbaaa15bccc8918b3b43b23d9f593198cfe90826fd20", + "candidate_sha256": "bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e", + "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": 2500, + "2": 990, + "3": 326, + "4": 389, + "5": 90, + "8": 9 + } + }, + "reflected": { + "all_columns": 980, + "dirty_columns": 740, + "copies": 9, + "paid_profile": { + "1": 2500, + "2": 990, + "3": 326, + "4": 389, + "5": 90, + "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": "bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e", + "global_template_sha256": "b59a206d355bb257cb06966d15c8542cfc591bfee729b821e3efe30a7ba8cdd9", + "expanded_program_sha256": "2ab85ff14ea58042311334194b0fc4e17cf66cb375cd12af51adb8636c155828", + "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": 180000, + "2": 71280, + "3": 23472, + "4": 28008, + "5": 6480, + "7": 5760, + "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": "284424154625755093061/250000000000000000000000", + "kappa": "142050466976941/125000000000000000", + "kappa_decimal": "0.001136403735815528", + "strict_outer_constraints": 47, + "bridge_omission_controls": 18, + "bootstrap_levels": 6 +} diff --git a/research/e8-joint-frame-retiming/local-evidence/upstream440/VALIDATION.json b/research/e8-joint-frame-retiming/local-evidence/upstream440/VALIDATION.json new file mode 100644 index 0000000000..f86efc07e8 --- /dev/null +++ b/research/e8-joint-frame-retiming/local-evidence/upstream440/VALIDATION.json @@ -0,0 +1,35 @@ +{ + "status": "PASS_FRESH_COMPLETE_PHASE_AND_INDEPENDENT_REPLAY", + "runtime": { + "executable": "/private/tmp/moonshot/primitives/char0/venv/bin/python", + "version": "3.12.13 (main, May 10 2026, 19:20:41) [Clang 22.1.3 ]" + }, + "command": "python3 -B research/r740-shared-donor-kernel/verify.py OUTPUT --replay-phases", + "observed_exit_code": 0, + "full_complex_phase_replay": true, + "independent_audit_no_producer_or_pricing_imports": true, + "independent_script_sha256": "b2d49af260d5d3482010da7986c9701f7a41ef8dcfb3bd8547c22bd25c26aeca", + "word_sha256": "bae58f0692326f180ba49642360fd55557f59a93a96a8fa62bf7babd55d2384e", + "kappa": "142050466976941/125000000000000000", + "bit_template_sha256": "b59a206d355bb257cb06966d15c8542cfc591bfee729b821e3efe30a7ba8cdd9", + "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" + ], + "validation_code_manifest_sha256": "65fdaac82ca44618ffec5bdb9eb3112e792574a7d31f323e73ecde21575ca348", + "post_replay_packaging": "Documentation/attribution, exact template-hash expectations and static certificates added after successful full code replay; no construction, admission or independent-audit code changed. Two whitespace-only lines in the independent audit were trimmed at release; AST equality was checked, and the committed archive is replayed separately before publication." +} diff --git a/research/e8-joint-frame-retiming/notices/NOTICE-PR352.md b/research/e8-joint-frame-retiming/notices/NOTICE-PR352.md new file mode 100644 index 0000000000..4f9a0194a3 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/notices/NOTICE.md b/research/e8-joint-frame-retiming/notices/NOTICE.md new file mode 100644 index 0000000000..c244e3f56a --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/notices/PR386.txt b/research/e8-joint-frame-retiming/notices/PR386.txt new file mode 100644 index 0000000000..28cfebeb08 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/notices/PR426-SOURCE-PINS.json b/research/e8-joint-frame-retiming/notices/PR426-SOURCE-PINS.json new file mode 100644 index 0000000000..24a25d4342 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/notices/PR426.md b/research/e8-joint-frame-retiming/notices/PR426.md new file mode 100644 index 0000000000..2a7a8c0c6b --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/notices/PR438-NOTICE.md b/research/e8-joint-frame-retiming/notices/PR438-NOTICE.md new file mode 100644 index 0000000000..ee51ac2694 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/notices/SUSSMAN-NOTICE b/research/e8-joint-frame-retiming/notices/SUSSMAN-NOTICE new file mode 100644 index 0000000000..63aa295646 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/proofs/INHERITED-COMPLEX-GEOMETRY.txt b/research/e8-joint-frame-retiming/proofs/INHERITED-COMPLEX-GEOMETRY.txt new file mode 100644 index 0000000000..c4150cb693 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/proofs/PR386-BIT-GEOMETRY.txt b/research/e8-joint-frame-retiming/proofs/PR386-BIT-GEOMETRY.txt new file mode 100644 index 0000000000..31efe31268 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/proofs/PR425-COMPLEX.txt b/research/e8-joint-frame-retiming/proofs/PR425-COMPLEX.txt new file mode 100644 index 0000000000..41061757ce --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/proofs/PR426.md b/research/e8-joint-frame-retiming/proofs/PR426.md new file mode 100644 index 0000000000..e589cfbf50 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/proofs/PR438-PROOF.md b/research/e8-joint-frame-retiming/proofs/PR438-PROOF.md new file mode 100644 index 0000000000..9f0346913c --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/proofs/PR438-README.md b/research/e8-joint-frame-retiming/proofs/PR438-README.md new file mode 100644 index 0000000000..872109a08e --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/stages/final-word.json b/research/e8-joint-frame-retiming/stages/final-word.json new file mode 100644 index 0000000000..38c454f38b --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/stages/kernel-selection.json b/research/e8-joint-frame-retiming/stages/kernel-selection.json new file mode 100644 index 0000000000..ec0712cb53 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/stages/kernel-v2-word.json b/research/e8-joint-frame-retiming/stages/kernel-v2-word.json new file mode 100644 index 0000000000..ce5053efd0 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/stages/retime-selection.json b/research/e8-joint-frame-retiming/stages/retime-selection.json new file mode 100644 index 0000000000..c0e615d1f4 --- /dev/null +++ b/research/e8-joint-frame-retiming/stages/retime-selection.json @@ -0,0 +1,8804 @@ +{ + "stage": "retime", + "input_sha256": "b5789bffbf7bafe77a222366ea9a125b1d4a6f9d84b96afc4bb3c509d6b89b1a", + "output_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "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 + ] + ], + [ + "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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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", + 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, + 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 + ] + ] + ], + "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/e8-joint-frame-retiming/vendor/clifford_exact.py b/research/e8-joint-frame-retiming/vendor/clifford_exact.py new file mode 100644 index 0000000000..166841a037 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/engines/moment.py b/research/e8-joint-frame-retiming/vendor/engines/moment.py new file mode 100644 index 0000000000..7d697cb452 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/export_records.py b/research/e8-joint-frame-retiming/vendor/export_records.py new file mode 100644 index 0000000000..3632d37048 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/hamming_packets.py b/research/e8-joint-frame-retiming/vendor/hamming_packets.py new file mode 100644 index 0000000000..c129996656 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/kernel417/LICENSE b/research/e8-joint-frame-retiming/vendor/kernel417/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/kernel417/e8core.py b/research/e8-joint-frame-retiming/vendor/kernel417/e8core.py new file mode 100644 index 0000000000..f2874bae8e --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/kernel417/engines/base_two_moment.py b/research/e8-joint-frame-retiming/vendor/kernel417/engines/base_two_moment.py new file mode 100644 index 0000000000..14a90fa0e7 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/kernel417/engines/moment.py b/research/e8-joint-frame-retiming/vendor/kernel417/engines/moment.py new file mode 100644 index 0000000000..7d697cb452 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/kernel417/stages.py b/research/e8-joint-frame-retiming/vendor/kernel417/stages.py new file mode 100644 index 0000000000..9ef95d52f4 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/LICENSE b/research/e8-joint-frame-retiming/vendor/pr436/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/NOTICE.md b/research/e8-joint-frame-retiming/vendor/pr436/NOTICE.md new file mode 100644 index 0000000000..2c01026b8b --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/README.md b/research/e8-joint-frame-retiming/vendor/pr436/README.md new file mode 100644 index 0000000000..5ddb576f02 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/compile.py b/research/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/compile.py new file mode 100644 index 0000000000..86b12507ef --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/e8lib.py b/research/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/e8lib.py new file mode 100644 index 0000000000..8464b956f6 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/frames.py b/research/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/frames.py new file mode 100644 index 0000000000..b28c3b2413 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/ham1.py b/research/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/ham1.py new file mode 100644 index 0000000000..8086649a5f --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/ham2.py b/research/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/ham2.py new file mode 100644 index 0000000000..842f76b245 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/params-r865.json b/research/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/params-r865.json new file mode 100644 index 0000000000..110b4d94d8 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/price.py b/research/e8-joint-frame-retiming/vendor/pr436/code/bit/producer/price.py new file mode 100644 index 0000000000..9014d97d51 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/reuse/controls.py b/research/e8-joint-frame-retiming/vendor/pr436/code/reuse/controls.py new file mode 100644 index 0000000000..ceb15852b7 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/reuse/ecost.py b/research/e8-joint-frame-retiming/vendor/pr436/code/reuse/ecost.py new file mode 100644 index 0000000000..4ec2a959b1 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/reuse/regen.py b/research/e8-joint-frame-retiming/vendor/pr436/code/reuse/regen.py new file mode 100644 index 0000000000..529de1b8b3 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/reuse/retime.py b/research/e8-joint-frame-retiming/vendor/pr436/code/reuse/retime.py new file mode 100644 index 0000000000..9c3e94b800 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/code/reuse/reuse.py b/research/e8-joint-frame-retiming/vendor/pr436/code/reuse/reuse.py new file mode 100644 index 0000000000..df455a0b37 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/data/bit/bitE8-r740.json.gz b/research/e8-joint-frame-retiming/vendor/pr436/data/bit/bitE8-r740.json.gz new file mode 100644 index 0000000000..8a8ce996b8 Binary files /dev/null and b/research/e8-joint-frame-retiming/vendor/pr436/data/bit/bitE8-r740.json.gz differ diff --git a/research/e8-joint-frame-retiming/vendor/pr436/data/bit/reuse-ledger.json b/research/e8-joint-frame-retiming/vendor/pr436/data/bit/reuse-ledger.json new file mode 100644 index 0000000000..51eb63c7d8 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr436/data/params/params-r740.json b/research/e8-joint-frame-retiming/vendor/pr436/data/params/params-r740.json new file mode 100644 index 0000000000..d9bc74d95b --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr438/complex_phases.py b/research/e8-joint-frame-retiming/vendor/pr438/complex_phases.py new file mode 100644 index 0000000000..6f199bc139 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr439/LICENSE b/research/e8-joint-frame-retiming/vendor/pr439/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr439/NOTICE.md b/research/e8-joint-frame-retiming/vendor/pr439/NOTICE.md new file mode 100644 index 0000000000..3dfad2ad57 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr439/bank_routes.py b/research/e8-joint-frame-retiming/vendor/pr439/bank_routes.py new file mode 100644 index 0000000000..919fe32f7e --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr439/e8core.py b/research/e8-joint-frame-retiming/vendor/pr439/e8core.py new file mode 100644 index 0000000000..78983b3687 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr439/engines/base_two_moment.py b/research/e8-joint-frame-retiming/vendor/pr439/engines/base_two_moment.py new file mode 100644 index 0000000000..14a90fa0e7 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr439/engines/moment.py b/research/e8-joint-frame-retiming/vendor/pr439/engines/moment.py new file mode 100644 index 0000000000..7d697cb452 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/vendor/pr439/tile_m.py b/research/e8-joint-frame-retiming/vendor/pr439/tile_m.py new file mode 100644 index 0000000000..cd5fd9b539 --- /dev/null +++ b/research/e8-joint-frame-retiming/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/e8-joint-frame-retiming/verify.py b/research/e8-joint-frame-retiming/verify.py new file mode 100644 index 0000000000..36a698beaa --- /dev/null +++ b/research/e8-joint-frame-retiming/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']) diff --git a/research/e8-r740-idle-hosting/AUDIT-CHANGED.json b/research/e8-r740-idle-hosting/AUDIT-CHANGED.json new file mode 100644 index 0000000000..4ebab1c89c --- /dev/null +++ b/research/e8-r740-idle-hosting/AUDIT-CHANGED.json @@ -0,0 +1,41 @@ +{ + "status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", + "bit_template_sha256": "c256c1c11027d32d5d800dd8dc3c0c50189ab71157c6c06301bb4283ff23bab1", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", + "bit_profile": { + "1": 182016, + "2": 76128, + "3": 20512, + "4": 27896, + "5": 8496, + "6": 2176, + "7": 4208, + "8": 648 + }, + "complex_profile": { + "1": 138384, + "2": 56448, + "3": 15936, + "4": 16128, + "5": 32064, + "7": 3840, + "8": 7488 + }, + "bit_live": 9376, + "complex_live": 8400, + "bit_hosted_residuals": 39712, + "complex_hosted_residuals": 34560, + "bit_maxchild": 8, + "complex_maxchild": 8, + "mutations_rejected": [ + "bit: hosted residual outside its window", + "bit: overlapping hosted coordinates", + "bit: understated live stock", + "bit: hosted owner on the active pair", + "bit: missing remainder child", + "complex: hosted residual outside its window", + "complex: remainder child understated", + "complex: dropped bank", + "complex: duplicated hosted residual" + ] +} diff --git a/research/e8-r740-idle-hosting/CERTIFICATE.json b/research/e8-r740-idle-hosting/CERTIFICATE.json new file mode 100644 index 0000000000..2613e82a26 --- /dev/null +++ b/research/e8-r740-idle-hosting/CERTIFICATE.json @@ -0,0 +1,116 @@ +{ + "status": "PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY", + "kappa": "124529313073387/100000000000000000", + "kappa_decimal": "0.001245293130733870", + "bit_lower": "249369163853537814231/200000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "bit", + "gain_over_pr434_percent": 9.901378851439578, + "bit": { + "live": 9376, + "physical": 9385, + "maxchild": 8, + "rank_mass": 597568, + "hosted_residuals": 39712, + "prefix_bits": 123, + "charged_prefix_bits": 128, + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 320, + "row_coefficient": 18355 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "160994841886171354580274911366145532969229267939587198707853200424307949633800426071501554290773399554138981060821463706191785706225360964099272884388120768133353/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29982546840970881/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "160994841886171344678297106451153345469229267939587198707853200424307949633800426071501554290773399554138981060821463706191785706225360964099272884388120768133353/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "4870491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "80497420943085682080131516254397505654339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "4870491481514411383281379581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "3901379508518485588616718620418711893599404339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "160994841886171364321257874394966365888954356573441665738623932484720750925947225647193604656972973482637426770048064152052804645403897257907487178162759804034080115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "80497420943085682080131516254397505654339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "4870491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "3906249999999999996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "epsilon_below_one": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "guard_width": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "K_geometry": "2934557991481514411383281379581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353000000000000000000", + "K_dominates_log": "4870491481514411378410888099773695017314280696108245533019642390331081290275650319661123948597460738905874891271948941406611024447346115523099061056322517355890447120356820188100756615611879231866647/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353000000000000000000", + "record_suffix": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "phase_local": "38963931852115310592630545168790440798046402637882709068326761064423113857512321231381024156016356822966899337594487615313912641901307598092094105904541621416118621811073665565034227615611879231866647/31288963931852115283253751036650304851204765282219170815468922421341819465791127623899108457379907309810355456510082901341608344705661670265793137194112250404640260771075104966145066824000000000000000000", + "phase_boundary": "7792786370423058989629715848546559834234176862546056693188823990967541224610222112094258252090508974682534129528166542027236877371971385457584350614741297703910004950989692648980768415611879231866647/6257792786370423056650750207330060970240953056443834163093784484268363893158225524779821691475981461962071091302016580268321668941132334053158627438822450080928052154215020993229013364800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "7812499999999999988276379508518485589593281120418711893599404339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/15644481965926057641626875518325152425602382641109585407734461210670909732895563811949554228689953654905177728255041450670804172352830835132896568597056125202320130385537552483072533412000000000000000000", + "prime_interval_packing": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "alpha_positive": "9740982963028824714817267681061802394472440973504597466634945058058514514166603307049681121085874465200306955032311609107654112655054898747241210320353817935923043504744940956234109615611879231866647/7822240982963028820813437759162576212801191320554792703867230605335454866447781905974777114344976827452588864127520725335402086176415417566448284298528062601160065192768776241536266706000000000000000000", + "alpha_below_one": "7812499999999999996098620491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/7822240982963028820813437759162576212801191320554792703867230605335454866447781905974777114344976827452588864127520725335402086176415417566448284298528062601160065192768776241536266706000000000000000000", + "alpha_below_one_fourth": "1945819262777728380488542172109582250805825389165193578500172706275805202097778873186644597465158332397946909076847869724742867431448799492864829864311661832354093254687449119427832566884388120768133353/7822240982963028820813437759162576212801191320554792703867230605335454866447781905974777114344976827452588864127520725335402086176415417566448284298528062601160065192768776241536266706000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "30479479966926125629230997134694654792599351896850353277226184762136065350003412002927242348797185047194342437771431457140457774613420994778358682893608035881659576476117166475866830769261641860723199598957094614729740364581226259181911233514990188727043572034888783040961088293046109219446265804420207390756698760815036617012717152027961567991022609/30555628839699331331302491246728813331254653595917158999481369552091620572061648070213973102910065732236675250498127833341414399126622724868938610541125244535781504659253032193501041820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "219061711454816922309013369767646982040858278896497230842953166351566744782129866899196049958710931337445009323598128451911750053836574450129448226817521129586794512616392933630900632381153164362304400059/31288963931852115283253751036650304851204765282219170815468922421341819465791127623899108457379907309810355456510082901341608344705661670265793137194112250404640260771075104966145066824000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "690060985307433905226098596957110089122505753645445891931641594270034419237193204683922430583497279447124601468900518397497220947455066466664623492212637791088057857530239712508623389/391112049148151441040671887958128810640059566027739635193361530266772743322389095298738855717248841372629443206376036266770104308820770878322414214926403130058003259638438812076813335300000000000000000", + "coordinate_movement_above_kappa": "12130379170461457919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "2989489361592824641854267089989812784824461876177062567382800640032616759148041093851835748662484380744951582625244821307271166386342955883422092772862346610300545978918009004318100537/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353000000000000000000", + "bulk_exposure_above_kappa": "12130379170461457919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "7129855273437428073210858671732473319559496398049737918972650205652823274571200321955370332163468057427699191438647931692254492071073354683409833726138173356828893124099447279369840871/6257792786370423056650750207330060970240953056443834163093784484268363893158225524779821691475981461962071091302016580268321668941132334053158627438822450080928052154215020993229013364800000000000000000", + "scalar_work_above_kappa": "51293758333113198007681168876987519023399864631358275002597712238935026105751565421726405889507293942043673685448281109132076632708197608549945737227746991986464596006034788879921737767/31288963931852115283253751036650304851204765282219170815468922421341819465791127623899108457379907309810355456510082901341608344705661670265793137194112250404640260771075104966145066824000000000000000000", + "dimension_above_kappa": "390137950851848558868139097349305094586039030929370453929144223378673148609252498971295563519944363311292987377121243180354497160079747519174806732528663336606620232574198979011244522230239712508623389/391112049148151441040671887958128810640059566027739635193361530266772743322389095298738855717248841372629443206376036266770104308820770878322414214926403130058003259638438812076813335300000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "376667732875215341121174631116822818722929/250000000000000000000000000000000000000000000000", + "cutoff_log2": "15858630557976" + }, + { + "gap": "234823293994250466174322372814668165026784914545691992246145033/125000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10200939576290109046" + }, + { + "gap": "146394221191699316621449174804382057630084307698160993149780953280106680510470339041/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6561674279421831238677946" + }, + { + "gap": "91265511328909811763865161183548097235746240163451057576061935206677185325280577424330679604276376561657/31250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4220745454595125991404220610916" + }, + { + "gap": "56897010621889556290941511599987042000960071173944906872621560569584671773082694860939986931588217989892970845088849270571089/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2714961370203082164321471435033117471" + }, + { + "gap": "35470899911366145532969229267939587198707853200424307949633800426071501554290773399554138981060821463706191785706225360964099272884388120768133353/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1746377582109381257242684594400020974931554" + } + ], + "bit_template_sha256": "c256c1c11027d32d5d800dd8dc3c0c50189ab71157c6c06301bb4283ff23bab1", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f" +} diff --git a/research/e8-r740-idle-hosting/EXPECTED.json b/research/e8-r740-idle-hosting/EXPECTED.json new file mode 100644 index 0000000000..fc0a332a96 --- /dev/null +++ b/research/e8-r740-idle-hosting/EXPECTED.json @@ -0,0 +1,10 @@ +{ + "status": "PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY", + "kappa": "124529313073387/100000000000000000", + "kappa_decimal": "0.001245293130733870", + "bit_lower": "249369163853537814231/200000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "bit", + "bit_template_sha256": "c256c1c11027d32d5d800dd8dc3c0c50189ab71157c6c06301bb4283ff23bab1", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f" +} diff --git a/research/e8-r740-idle-hosting/LICENSE b/research/e8-r740-idle-hosting/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-r740-idle-hosting/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/e8-r740-idle-hosting/MANIFEST.json b/research/e8-r740-idle-hosting/MANIFEST.json new file mode 100644 index 0000000000..53374e4cb3 --- /dev/null +++ b/research/e8-r740-idle-hosting/MANIFEST.json @@ -0,0 +1,40 @@ +{ + "parent_manifest_sha256": "344d58298774e9e2bbfd0af6332507c3b3d2172bc70d88a79853e679bdaaa33f", + "files": { + "AUDIT-CHANGED.json": "6320b6fba321cbde5648ca5d07d79d1e05095003cd20c11cee044df54d684842", + "CERTIFICATE.json": "f738a33bf7f079a3ea275a555807f0a6d491a65201859953eac7edeebb5e1fe3", + "EXPECTED.json": "feee5ada0067f1c83f7b21972fb4351b99a3ca24c020a43434b84ca20c48d14d", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "e2bcab601208891189f33c257eb7cfee9261b420c6eceebf96c986135ae65a4c", + "PROOF.md": "4f06d1dead63c62b076f0a6c1521c68c0b0544aa2c5df5e74a408fdfc34f91c4", + "README.md": "d20e8b023a6c87fefbd24d88fe4b8656cc9d2e230da563547b839350a49ee630", + "SELECTION.json": "6e3a436ef9e926019751fd40b08586d695d888f16542f9c8a24ec4d6be8cffae", + "SOURCE442-PINS.json": "489716866ad1d368a5f29a3d37e8d76a40474f5709e4ad593f18f9cd89dc9096", + "VALIDATION.json": "0194fc0b213d43296551349dc163644dfb59459bd52282e8cc2639856747b3c4", + "assemble.py": "fb31ef3d1633effe3a8abeb48bf9bbc0508bfac2a37af101ea89dbb5f622be51", + "audit.py": "8792956a1aab64812cb030dc57456d68c5e90c570594f4d2d7fcf9ab14c89c40", + "bit_hosted.py": "300227c826ea07951738644975915ea11c1c53295440f93b3a7b19f635ce2061", + "complex_hosted.py": "829c5c4f4bdfccedadd31505f1f0a394f7a208d1446b7bbf9cc92d3aa1530c0c", + "hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "local-evidence/TESTED-MANIFEST.json": "aac568b890323ced6d856c0477a4761b6f106a5051ee0811ffd1d97d7ca09ca6", + "local-evidence/full311/RECEIPT.json": "e76d942a92d48129c91dacaf0c743f47ba2e3ab8289d359164eb1267a144591a", + "local-evidence/full311/RESULT.json": "f738a33bf7f079a3ea275a555807f0a6d491a65201859953eac7edeebb5e1fe3", + "local-evidence/full311/bit-hosting.log": "0b2dd019350260407d9d99fe7be94f02ff031997fbf6a4976229b27c6cd7d788", + "local-evidence/full311/complex-hosting.log": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd", + "local-evidence/full311/exact-assembly.log": "1d2c62b500f91f48ada95c0b4c811169705b762098c81f7458dbc8194652b8e9", + "local-evidence/full311/independent-audit.log": "e55ea84119d6b17d16be29a67e8158e357838aec1a3c2d17aa966d8843afe345", + "local-evidence/full311/parent/RESULT.json": "244786938e4901842ce110a450bef6529627c67e3f931134149420c1c8de1568", + "local-evidence/full311/parent-r740-full.log": "b6b21746622747ea37b7423dd7600953185f3da7c5cca1019526ab4d9cfb06f1", + "local-evidence/full314/RECEIPT.json": "381b19bd5ff1c180d643c6f8b3ef2949b362d542ea038d1bdd7aa6ea623c74e1", + "local-evidence/full314/RESULT.json": "f738a33bf7f079a3ea275a555807f0a6d491a65201859953eac7edeebb5e1fe3", + "local-evidence/full314/bit-hosting.log": "0b2dd019350260407d9d99fe7be94f02ff031997fbf6a4976229b27c6cd7d788", + "local-evidence/full314/complex-hosting.log": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd", + "local-evidence/full314/exact-assembly.log": "1d2c62b500f91f48ada95c0b4c811169705b762098c81f7458dbc8194652b8e9", + "local-evidence/full314/independent-audit.log": "e55ea84119d6b17d16be29a67e8158e357838aec1a3c2d17aa966d8843afe345", + "local-evidence/full314/parent/RESULT.json": "244786938e4901842ce110a450bef6529627c67e3f931134149420c1c8de1568", + "local-evidence/full314/parent-r740-full.log": "b6b21746622747ea37b7423dd7600953185f3da7c5cca1019526ab4d9cfb06f1", + "local-evidence/hosting442-exact-cost.json": "a60c72865bbeb7dc8b6fb0ef453944dc6fdd548f74fdd2a14bd2f0b128eb7260", + "local-evidence/hosting442-flexbanks.json": "39b89e7dd5e3179c18670c85b0dda36a369816fc39a13d1f49aad0107fe2dcbb", + "verify.py": "094fab9efc8ce362007f4da9e00beee1867d8503e073eab4a622199bcd3d8ae9" + } +} diff --git a/research/e8-r740-idle-hosting/NOTICE.md b/research/e8-r740-idle-hosting/NOTICE.md new file mode 100644 index 0000000000..64ffcc9af8 --- /dev/null +++ b/research/e8-r740-idle-hosting/NOTICE.md @@ -0,0 +1,20 @@ +R740 composition and exact integration: Rohan Arun with substantial OpenAI Codex assistance. Hosting mechanism, generators and audit from PR442 (Claude-assisted), preserved below. R740 producer/kernel/retiming attribution is retained in the pinned parent package, including PR436, PR440, PR441 and earlier contributors. + +# Notice + +This package adds idle-axis hosting on top of the following work. Their packages are used unchanged and run fresh by +`verify.py`; their notices remain in their own directories. + +- #434, Rohan Arun with OpenAI Codex: early resets and the shared-donor kernel. This is the parent composition and its + verifier. +- #433, icekylinx with Codex: split centres (complex supplier) and source-centre bit composition, together with their + engines and invoices. +- #435 / #417, chafreaky: the response kernel and mixed-width banks. +- #426, ai-nanachi: clean-reset reuse. +- #425 and #386, Zhihao Chen with OpenAI Codex: the mutable-basis complex interface and the compressed nine-stage + geometry, routes and banks. +- #370, Dylan Crow with Anthropic Claude: the Hamming E8 bit producer. +- Jacob Sussman: the E8 unit and the frame/compiler interfaces. + +The hosting construction, its generators, audit and assembly scripts are new here, and were prepared with assistance +from Claude. They are released under the Apache-2.0 license in `LICENSE`. diff --git a/research/e8-r740-idle-hosting/PROOF.md b/research/e8-r740-idle-hosting/PROOF.md new file mode 100644 index 0000000000..ff3eba6770 --- /dev/null +++ b/research/e8-r740-idle-hosting/PROOF.md @@ -0,0 +1,109 @@ +# Idle-axis hosting: helper residuals on pending idle coordinates + +This package changes only the global nine-stage templates of #434's two suppliers. Both local words are unchanged: + +- the complex word is #433's split-centre word, R = 560, m = 73; +- the bit word is #434's early-reset kernel word, R = 747, m = 64. + +So are their local programs, scalar replays, data routes, bridges, terminal exchange and cover correction. What +changes is where whole dirty-helper residuals live. Many of them move from bank streams onto coordinates of *idle* +data families that would otherwise be advanced later by an idle child. + +## 1. The two inherited facts used + +**(a) Dirty invocations act on a helper stream as its residual.** The complete dirty local invocation is block +diagonal on helpers at its endpoint and admits arbitrary correlated helper values (#425/#433, #386/#434). On the +physical stream that owns a helper residual of width w, it acts as an exact coordinate factor on w coordinates: + +- complex: P_g C_block P_g⁻¹ (PR425-COMPLEX §5, INHERITED-COMPLEX-GEOMETRY); +- bit: D_P with P the width-w coordinate projector (PR386-BIT-GEOMETRY; mixed widths 8 − entrance rank, #434). + +This holds whatever the stream held before. Banks rely on exactly this: eight sequential residuals and a pad tile a +bank stream. + +**(b) An idle child is a product of coordinate factors.** Advancing a data pair from level a to level b applies, on +every physical data stream (F, g) of that pair, the commuting product of coordinate factors on its pending set S: + +- complex: C over S, in the basis U_q ⊕ I used by the inherited idle factorisation; +- bit: D_{P_V−P_U}, an orthogonal coordinate projector difference. + +Factors on disjoint coordinate sets commute and multiply: + +- complex: C_{S'}·C_{S∖S'} = C_S; +- bit: D_{P'}·D_{P−P'} = D_P for P' ≤ P (the parent's identity D_I·D_P = D_{I−P}). + +## 2. Hosting lemma + +Fix a data family F (replica r, pair j, side, port) and an idle child Γ that advances pair j at recipe position τ. +Let λ be the position of the last local invocation or bridge that names pair j before τ; idle children do not +count as touches, since they act on other coordinates or on the other member. Let ι be any local invocation with +λ < ι < τ. Then: + +1. ι is an invocation on another pair, and nothing touches F between ι and τ. +2. A helper residual of ι, of width w, may be owned by stream (F, d·σ⁻¹) instead of a bank slot. Here d is the + invocation's cover class, and σ is a coordinate isometry carrying the local residual block onto a set S' ⊂ S of + w pending coordinates. When S' meets the local block of a level −1 advance, σ is composed with U_q ⊕ I. +3. Γ is replaced by Γ' acting on S ∖ ⋃S' over all hosted residuals of F, which have pairwise disjoint S'. + +The complete program's operator is unchanged: + +- By (a), ι applies exactly the factor on S' to (F, d·σ⁻¹), for any prior contents. +- Nothing else acts on F between ι and τ, so this factor may be moved to τ. +- By (b), the moved factors times Γ' equal Γ. + +Distinct slots of one invocation have distinct σ, so distinct physical classes for every d. They are also disjoint +from the invocation's own data owners, because pair j is not active, and from bank owners, because the families +differ. Residuals of different invocations on F occupy disjoint coordinates. They are sequential, exactly as the +parent's banks are co-owned sequentially by different cover classes. + +Two further points: + +- **Phases.** The stored Z₄ translations after Γ remain valid, because Γ'·∏(hosted factors) = Γ as exact operators. + The final X_δ(g) correction still applies to every live family; hosting changes no data endpoint. +- **Reflection.** The inverse-transpose program reverses chronology and reflects each factor. The window condition + (no touch strictly between ι and τ) is symmetric, so hosting commutes with reflection. + +## 3. What is checked here + +- `bit_hosted.py` and `complex_hosted.py` read #434's freshly regenerated templates and compute windows from each + recipe. They apply a frozen integer-programme selection (`SELECTION.json`; `--discover` recomputes it with scipy) + and emit new owners, remainder children and banks. + - Bit: unhosted residuals keep an exact width-64 tiling with no padding. + - Complex: eight per bank plus one paid pad; a final partial bank pays the larger pad. +- `audit.py` shares no code with the generators. It re-derives every window from the template schedule. For every + replica and invocation it checks that: + - each helper has exactly one owner; + - each hosted slot is inside its child's pending set, disjoint from other slots, outside the active pair, and in + window; + - every remainder child is exact, and the bank tiling is exact. + + It also recomputes the paid profile and the rank deficit 2496, and rejects nine mutations. +- `assemble.py` prices both suppliers with the two inherited rational moment engines and recomputes both finite + invoices with the hosted stock. Route charging is conservative: two extra route factors per helper selector, and + the parent's larger complex per-vertex bill is kept. It then runs #434's strict outer assembly: six bootstrap + levels and 47 inequalities. The next grid point and the zero-η, zero-β and unit-β controls are rejected. + +## 4. Result + +| | live stock | max child | hosted residuals | certified saving | +| --- | ---: | ---: | ---: | --- | +| bit | 14,259 → 9,457 | 42 → 8 | 39,568 of 53,784 | c = 1239085165241180038597/10²⁴ | +| complex | 12,720 → 8,400 | 48 → 8 | 34,560 of 40,320 | b = 1267453159029119/10¹⁸ | + +κ = 618775866623647/(5·10¹⁷) ≈ 1.237551733247294·10⁻³, bit-bound, +9.218% over #434. + +## 5. Scope + +This is a written finite extension of the inherited correlated dirty-bank and compressed-window interfaces. The +streams that own residuals now include data streams during idle windows. It is the principal new review point. + +All other interfaces remain inherited assumptions: the all-size compiler, restored-work, tape/common-grid, precision +and analytic interfaces. + +No Lean proof and no unconditional integer-multiplication theorem is claimed. The global operator identity is argued +from (a) and (b) and checked combinatorially. It is not replayed numerically on the 2⁷³- and 2⁶⁴-point address +spaces; neither parent does that either. + +## R740 composition and additional scope + +The above argument is inherited from PR442 and remains an explicit additional hosting assumption. Here the bit local word has R740 and matches PR441 after two joint B-frame sweeps. The assignment is regenerated for its actual residual-width census, rather than transferred by helper index. Parent residual isometries remain checked, and the finite selector invoice retains the parent extra-helper-route bound of 144 in addition to the two hosting factors. All host windows, owners, disjoint intervals, remainders and bank coverage are independently rechecked. Original PR442 numerical values above describe its historical R747 construction; EXPECTED.json and CERTIFICATE.json describe this R740 composition. diff --git a/research/e8-r740-idle-hosting/README.md b/research/e8-r740-idle-hosting/README.md new file mode 100644 index 0000000000..292d2e93a3 --- /dev/null +++ b/research/e8-r740-idle-hosting/README.md @@ -0,0 +1,9 @@ +# R740 joint retiming with idle-data hosting + +Conditional kappa = 0.001245293130733870. Compose the fully reconstructed R740 word (the same final word as PR441) with PR442's idle-data hosting construction. The bit side has 9,376 live and 9,385 physical families, with 39,712 hosted residuals; the complex side remains PR442's 8,400 live families. Both rank deficits are 2,496. + +This uses the additional hosting extension stated in PR442's PROOF.md. Its global operator argument is inherited as an additional mathematical assumption; finite placement checks do not independently prove that extension. All earlier all-size compiler, dirty-bank, restored-work, tape/common-grid, precision and analytic obligations remain. + +Run `python -B research/e8-r740-idle-hosting/verify.py /absolute/new/output`. Standard library only for replay. The wrapper first freshly rebuilds the R740 producer, kernel, both joint retiming sweeps and every selected complex phase. It then regenerates the frozen hosting assignment, independently audits the windows, owners, remainders and full banks, and recomputes both moments, invoices and strict assembly. Discovery used scipy; replay uses frozen exact integers without scipy. + +Full uninterrupted Python 3.11.15 and 3.14.8 wrappers PASS at commit `5702ed7fc47bc43333da0ccbcc013791c21aaa08`. Both freshly replay the final two-sweep parent and produce identical hashes for all five top-level logs. Receipts, logs and the exact tested manifest are in `local-evidence/`. GitHub CI remains pending. Executable code and witnesses are unchanged by this evidence publication. Exact moment-cost optimization and more general complete-bank constraints found no additional gain; their negative results are retained. diff --git a/research/e8-r740-idle-hosting/SELECTION.json b/research/e8-r740-idle-hosting/SELECTION.json new file mode 100644 index 0000000000..41918cc490 --- /dev/null +++ b/research/e8-r740-idle-hosting/SELECTION.json @@ -0,0 +1,553 @@ +{ + "bit": { + "patterns": [ + [ + 0, + [ + 7, + 7 + ], + 104 + ], + [ + 0, + [ + 8 + ], + 136 + ], + [ + 1, + [], + 136 + ], + [ + 1, + [ + 7 + ], + 104 + ], + [ + 2, + [ + 7, + 7, + 7, + 7 + ], + 26 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 182 + ], + [ + 2, + [ + 8, + 8, + 8, + 4 + ], + 32 + ], + [ + 3, + [], + 128 + ], + [ + 3, + [ + 4 + ], + 8 + ], + [ + 3, + [ + 7 + ], + 104 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 240 + ], + [ + 5, + [], + 136 + ], + [ + 5, + [ + 7 + ], + 104 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8 + ], + 240 + ], + [ + 7, + [ + 7, + 7, + 7, + 7 + ], + 26 + ], + [ + 7, + [ + 8, + 8, + 8 + ], + 182 + ], + [ + 7, + [ + 8, + 8, + 8, + 4 + ], + 32 + ], + [ + 8, + [ + 7, + 7 + ], + 104 + ], + [ + 8, + [ + 8 + ], + 136 + ] + ], + "proxy_saving": 23471.92403393749, + "stages": [ + [ + 0, + 7, + 0, + 104 + ], + [ + 0, + 7, + 1, + 104 + ], + [ + 0, + 8, + 1, + 136 + ], + [ + 1, + 7, + 2, + 104 + ], + [ + 2, + 4, + 0, + 8 + ], + [ + 2, + 4, + 1, + 8 + ], + [ + 2, + 4, + 2, + 8 + ], + [ + 2, + 4, + 3, + 8 + ], + [ + 2, + 7, + 3, + 104 + ], + [ + 2, + 8, + 1, + 14 + ], + [ + 2, + 8, + 2, + 628 + ], + [ + 3, + 4, + 4, + 8 + ], + [ + 3, + 7, + 4, + 104 + ], + [ + 4, + 8, + 3, + 628 + ], + [ + 4, + 8, + 5, + 572 + ], + [ + 5, + 7, + 6, + 104 + ], + [ + 6, + 8, + 4, + 572 + ], + [ + 6, + 8, + 6, + 628 + ], + [ + 7, + 4, + 5, + 8 + ], + [ + 7, + 4, + 6, + 8 + ], + [ + 7, + 4, + 7, + 8 + ], + [ + 7, + 4, + 8, + 8 + ], + [ + 7, + 7, + 5, + 104 + ], + [ + 7, + 8, + 7, + 492 + ], + [ + 7, + 8, + 8, + 150 + ], + [ + 8, + 7, + 7, + 104 + ], + [ + 8, + 7, + 8, + 104 + ], + [ + 8, + 8, + 7, + 136 + ] + ] + }, + "complex": { + "patterns": [ + [ + 0, + [ + 9 + ], + 120 + ], + [ + 2, + [ + 9 + ], + 120 + ], + [ + 4, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 6, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 8, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 10, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 12, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 13, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 14, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 15, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 16, + [ + 9 + ], + 120 + ], + [ + 17, + [ + 9 + ], + 120 + ] + ], + "proxy_saving": 17393.16581129622, + "stages": [ + [ + 0, + 9, + 0, + 120 + ], + [ + 2, + 9, + 0, + 80 + ], + [ + 2, + 9, + 1, + 40 + ], + [ + 4, + 9, + 3, + 360 + ], + [ + 6, + 9, + 0, + 360 + ], + [ + 8, + 9, + 1, + 520 + ], + [ + 8, + 9, + 5, + 80 + ], + [ + 10, + 9, + 2, + 560 + ], + [ + 10, + 9, + 3, + 40 + ], + [ + 12, + 9, + 4, + 560 + ], + [ + 12, + 9, + 7, + 40 + ], + [ + 13, + 9, + 5, + 360 + ], + [ + 13, + 9, + 6, + 200 + ], + [ + 13, + 9, + 7, + 40 + ], + [ + 14, + 9, + 6, + 360 + ], + [ + 15, + 9, + 7, + 360 + ], + [ + 16, + 9, + 8, + 120 + ], + [ + 17, + 9, + 7, + 120 + ] + ] + } +} diff --git a/research/e8-r740-idle-hosting/SOURCE442-PINS.json b/research/e8-r740-idle-hosting/SOURCE442-PINS.json new file mode 100644 index 0000000000..d47fc03335 --- /dev/null +++ b/research/e8-r740-idle-hosting/SOURCE442-PINS.json @@ -0,0 +1,70 @@ +{ + "head": "4e16d001d505d4f21dd2bcfc44591f9be4c279bd", + "files": [ + { + "path": "research/idle-axis-hosting/EXPECTED.json", + "git_blob": "1b0811df29bc2eabdabb51219e9b2382da9a48f6", + "sha256": "ed83c1bf1ca2d01eaab5149a34520806a07ef375dfa9e3ed69d123f4be4c9960" + }, + { + "path": "research/idle-axis-hosting/LICENSE", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/idle-axis-hosting/MANIFEST.json", + "git_blob": "542ee2f988de429e8fd94c9940a17c35ec65b16d", + "sha256": "f68b82604363329618529313ac9c3796dc1e88b176eaee4a7b0dec9be428e987" + }, + { + "path": "research/idle-axis-hosting/NOTICE.md", + "git_blob": "391e865e06f77efa9ec0aa3ee9c048673b1f24ab", + "sha256": "027a868628d0408602dbeae688b031ed9b4abfd6e5401f6e8106a3eb25ebc4ca" + }, + { + "path": "research/idle-axis-hosting/PROOF.md", + "git_blob": "4468a00349b4f68dce103e785a8392099435e1d6", + "sha256": "cfe34bf0b64259661312dae22c3a23adc5bf6f6326951eee5c1488ccfc347542" + }, + { + "path": "research/idle-axis-hosting/README.md", + "git_blob": "9d9b80cc3bff337db6f3f0c7c70a57efe8532d82", + "sha256": "1151f74cad54ac4937282b7a8b5d1108ed4ce35944ef9b7bb7d17abfce1fe4a0" + }, + { + "path": "research/idle-axis-hosting/SELECTION.json", + "git_blob": "e3303cd97d132e66145d2fb7e957fd6e5808dd80", + "sha256": "315d54be472842707cce879618be477d8b897050e873bc136d114eec6a232f97" + }, + { + "path": "research/idle-axis-hosting/assemble.py", + "git_blob": "f07a59864346dc622aa5c8d3619473c53ba529d8", + "sha256": "f9a2e6a42aadcf971702a5a867760a092566ed03356f4f34387d38f4093ad1a6" + }, + { + "path": "research/idle-axis-hosting/audit.py", + "git_blob": "bd40b9b7914deeced02d5364162060d8130ab08e", + "sha256": "38594423a401110bd430b734037c6ecba422ee6a94d71709984e0afa9cd1edf8" + }, + { + "path": "research/idle-axis-hosting/bit_hosted.py", + "git_blob": "e2f015dbb78a95c121e187b3c20e0f8d59b60586", + "sha256": "6dfbf26213e8adf87563b3575cfb722bd07ecd65627f056b3293411dd3d89a61" + }, + { + "path": "research/idle-axis-hosting/complex_hosted.py", + "git_blob": "56e15c15aeebf571e60ab2c89e55e4624ecac2d3", + "sha256": "829c5c4f4bdfccedadd31505f1f0a394f7a208d1446b7bbf9cc92d3aa1530c0c" + }, + { + "path": "research/idle-axis-hosting/hosting_core.py", + "git_blob": "68b536daa9e6546c0aa046934bf840aaa3c3fde3", + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + { + "path": "research/idle-axis-hosting/verify.py", + "git_blob": "0aa6cefd0237146967f8e26c540c99e3afca2ffc", + "sha256": "737a974d79fdd232b6c4b9e059c56835079971447342ed7ca3b82a614e30cb53" + } + ] +} diff --git a/research/e8-r740-idle-hosting/VALIDATION.json b/research/e8-r740-idle-hosting/VALIDATION.json new file mode 100644 index 0000000000..5fed6bd833 --- /dev/null +++ b/research/e8-r740-idle-hosting/VALIDATION.json @@ -0,0 +1,14 @@ +{ + "status": "FULL_LOCAL_PYTHON_311_AND_314_PASSED_CI_PENDING", + "kappa": "0.001245293130733870", + "source_pr442": "4e16d001d505d4f21dd2bcfc44591f9be4c279bd", + "new_assumption": "PR442 idle-data hosting extension of the dirty-bank and compressed-window interface is inherited, not independently discharged by combinatorial audits.", + "retained_extra_route_factor_bound": 144, + "tested_code_commit": "5702ed7fc47bc43333da0ccbcc013791c21aaa08", + "tested_manifest_sha256": "aac568b890323ced6d856c0477a4761b6f106a5051ee0811ffd1d97d7ca09ca6", + "full_receipts": { + "311": "local-evidence/full311/RECEIPT.json", + "314": "local-evidence/full314/RECEIPT.json" + }, + "publication_change": "Only documentation and evidence changed after the full runs; executable code, frozen witnesses and parent manifest remain byte-identical." +} diff --git a/research/e8-r740-idle-hosting/assemble.py b/research/e8-r740-idle-hosting/assemble.py new file mode 100644 index 0000000000..77e6e4a0ca --- /dev/null +++ b/research/e8-r740-idle-hosting/assemble.py @@ -0,0 +1,82 @@ +"""Two exact moments for both hosted suppliers, fresh finite invoices with the hosted stock, and the strict outer +assembly of #434 (six bootstrap levels, 47 inequalities, next-grid and parameter controls). +usage: assemble.py PARENT_CHANGED_DIR BIT_DIR COMPLEX_DIR AUDIT.json OUT.json""" +import gzip, hashlib, importlib.util, json, math, sys +from fractions import Fraction as Q +from pathlib import Path +par, bd, cd, ap, outp = map(Path, sys.argv[1:6]) +def load(name): + sp = importlib.util.spec_from_file_location('hosted_' + name, par / 'work/pr361/code/engines' / (name + '.py')) + mod = importlib.util.module_from_spec(sp); sp.loader.exec_module(mod); return mod +M, Other, Outer = load('moment'), load('base_two_moment'), load('outer') +audit = json.loads(ap.read_text()); bg = json.loads((bd / 'GLOBAL.json').read_text()); ch = json.loads((cd / 'HOSTED.json').read_text()) +assert audit['bit_template_sha256'] == bg['template_sha256'] and audit['complex_template_sha256'] == ch['template_sha256'] +# ---------------- bit: two moments and the parent's invoice formulas with the hosted stock +P = {int(r): n for r, n in audit['bit_profile'].items()}; m, W = 64, audit['bit_live']; E = sum(P.values()) +geo = json.loads((par / 'bit426-source-centres/global/GEOMETRY.json').read_text()) +pg = json.loads((par / 'bit426-source-centres/global/GLOBAL.json').read_text()) +T, L, R, V, K = 8, 9, pg['R'], 120, 4 +mass = sum(r * z for r, z in P.items()); assert m * W - mass == 2496 +physical = W + 9; d = m * m; N = 2 * m +unit = L * T * pg['local_additions'] + pg['bridge_additions'] +J = 8 * T * L * (2 * V + R) + 8 * (2 * K * V * T) + 2 * L * T * R + 2 * pg['copy_erase_episodes'] # every helper route charged (bank or hosted) +high = 16 * (d + 1) ** 2; good = 8 * m * m + 8; compiler = 128 * N ** 3 +selectors = 2 * L * T * ((W - 1) + R * m * (geo['max_route_factors'] + pg.get('extra_helper_route_factor_bound', 0) + 2 + (m - 1) + m)) # +2: hosted route may add a slot permutation and U_q +prefix = int(pg['global_prefix_bound']); charged_prefix = 64 * ((prefix.bit_length() + 63) // 64) +coefficient = unit + J * high + J * physical + E * (good + compiler) + 16 * m ** 3 + pg['copy_erase_episodes'] + selectors + prefix + 1 +two = (coefficient + 1) ** 2 * (E + 1) ** 2; charged_two = 64 * ((two.bit_length() + 63) // 64) +assert two < 1 << charged_two and 2 * max(P) ** 2 < m * m +row = 2 * (m * m + 1) + 9909 + 252; assert row == 18355 < 20161 +root = M.certify(P, m, W, True); c = Q(root['lower']); chi = Q(root['upper']) +fb = 32 * m * m * E +lo, hi = Other.moment(m, W, list(P.items()), c); bl, bh = Other.moment(m, W, [(1, fb)], c); assert hi + bh / 10 ** 16 < 1 +lo2, hi2 = Other.moment(m, W, list(P.items()), chi); bl2, bh2 = Other.moment(m, W, [(1, fb)], chi); assert lo2 + bl2 / 10 ** 16 > 1 +# ---------------- complex: two moments and the parent's invoice with the hosted stock +PC = {int(r): n for r, n in audit['complex_profile'].items()}; mc, WC = 73, audit['complex_live']; EC = sum(PC.values()) +massc = sum(r * z for r, z in PC.items()); assert mc * WC - massc == 2496 +rc = M.certify(PC, mc, WC, True); b = Q(int(Q(rc['lower']) * 10 ** 18), 10 ** 18) +fbc = 32 * mc * mc * EC +l3, h3 = Other.moment(mc, WC, list(PC.items()), b); b3, bh3 = Other.moment(mc, WC, [(1, fbc)], b); assert h3 + bh3 / 10 ** 16 < 1 +integ = json.loads((par / 'split-centres/INTEGRATION.json').read_text()); inv = integ['finite_invoice'] +physc = ch['physical']; Rc = 560; v = 120 +compilerc = 64 * (mc + 1) ** 3 +pervertex = inv['pervertex'] - integ['physical'] * (64 + 1) + physc * (64 + 1) - integ['live'] + WC # stock-dependent terms re-based +r_ = mc // 2; group = 2 ** (r_ * r_) * math.prod(2 ** (2 * i) - 1 for i in range(1, r_ + 1)); stock = group * physc +smass = group * massc; logical = group * max(pervertex, inv['pervertex']) + 64; router = compilerc * (logical + 1) * (stock + 1) ** 2 +GG, EE, C0 = 1 << 30000, 1 << 100000, 1 << 210000; BB = smass + EE +literal = 2 * GG * stock ** 2 + 8 * smass + 4 * stock + 4 + 32 * mc +assert logical < 1 << 6050 and router < GG and literal < EE and BB < 1 << 100001 and 32 * mc * BB * BB < C0 and 2 * BB + 18 < C0 +depth = 2; assert mc ** depth > 2 * max(PC) ** depth +rowc = depth * stock.bit_length() + 9909 + 252; assert rowc < 20161 +# ---------------- outer assembly exactly as #434's combined.py +eta = beta = Q(1, 10 ** 18); grid = Q(1, 10 ** 18); s = min(c, (1 - beta) * b) - Q(1, 10 ** 24) +assert 0 < s < c and s < (1 - beta) * b +chain = [Q(384599, 10 ** 10)]; cutoffs = [] +def ceil(x): return -((-x.numerator) // x.denominator) +for j 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 old < a < s < 1 - a and gap > 0 + cutoff = max(ceil(36 / gap ** 2), ceil(2 * (4 + charged_two) / gap)); assert cutoff * gap ** 2 >= 36 and cutoff * gap >= 2 * (4 + charged_two) + 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) +parent_k = Q(566550276142217, 500000000000000000) +res = dict(status='PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY', kappa=str(k), kappa_decimal=format(float(k), '.18f'), + bit_lower=str(c), complex_lower=str(b), binding_component='bit' if c < (1 - beta) * b else 'complex', + gain_over_pr434_percent=float(100 * (k / parent_k - 1)), + bit=dict(live=W, physical=physical, maxchild=max(P), rank_mass=mass, hosted_residuals=audit['bit_hosted_residuals'], + prefix_bits=prefix.bit_length(), charged_prefix_bits=charged_prefix, coefficient_bits=coefficient.bit_length(), + two_level_coefficient_bits=two.bit_length(), charged_two_level_coefficient_bits=charged_two, row_coefficient=row), + complex=dict(live=WC, physical=physc, maxchild=max(PC), rank_mass=massc, hosted_residuals=audit['complex_hosted_residuals'], + physical_stock_bits=stock.bit_length(), router_bits=router.bit_length(), literal_bits=literal.bit_length(), row_coefficient=rowc), + strict_outer_constraints={n: str(x) for n, x in a['strict_constraints'].items()}, outer_controls=controls, bootstrap=cutoffs, + bit_template_sha256=bg['template_sha256'], complex_template_sha256=ch['template_sha256']) +outp.write_text(json.dumps(res, indent=2) + '\n') +print(res['status'], res['kappa_decimal'], 'binding', res['binding_component'], 'gain over #434 %.4f%%' % res['gain_over_pr434_percent']) diff --git a/research/e8-r740-idle-hosting/audit.py b/research/e8-r740-idle-hosting/audit.py new file mode 100644 index 0000000000..1932612d9b --- /dev/null +++ b/research/e8-r740-idle-hosting/audit.py @@ -0,0 +1,159 @@ +"""Independent audit of the two idle-axis-hosted templates (no code shared with the generators). +Re-derives hosting windows from each template's own schedule and checks, for every replica and invocation: + * every helper residual has exactly one owner: a bank slot or a hosted slot; + * a hosted slot lies on the data family of the idle child it names, inside that child's pending coordinates, + disjoint from every other hosted slot of the family, and its invocation lies strictly between the last + local invocation or bridge naming that pair and the child (the window); + * the child keeps exactly the remaining coordinates; banks are tiled exactly (bit) or padded (complex); + * the emitted paid profile, live stock and rank deficit 2496 are recomputed from scratch. +Mutation controls must be rejected. usage: audit.py PARENT_CHANGED_DIR BIT_DIR COMPLEX_DIR OUT.json""" +import copy, gzip, hashlib, json, sys +from collections import Counter, defaultdict +from pathlib import Path +V, K, T, L = 120, 4, 8, 9 +DATA = 2 * K * V * T + +def wins(events): + """events: ('local', stage, pair) | ('bridge', a, b) | ('idle', idx, pair); window = local stages after the last + local/bridge touch of the pair and before the child""" + last = {}; seen = []; w = {} + for pos, e in enumerate(events): + if e[0] == 'local': seen.append((pos, e[1], e[2])); last[e[2]] = pos + elif e[0] == 'bridge': last[e[1]] = pos; last[e[2]] = pos + else: + lo = last.get(e[2], -1); w[e[1]] = {s for q, s, p in seen if lo < q < pos and p != e[2]} + return w + +def audit_bit(t, parent_t, widths): + assert t['local_programs'] == parent_t['local_programs'] and len(t['calls']) == 72 + ev = []; rank = {}; pair = {} + for e in t['schedule']: + if e['kind'] == 'local_cover_sweep': ev.append(('local', e['stage'], e['pair'])) + elif e['kind'] == 'bridge': ev.append(('bridge', e['dst'], e['src'])) + elif e['kind'] == 'idle': + ev.append(('idle', e['idx'], e['pair'])); rank[e['idx']] = e['rank']; pair[e['idx']] = e['pair'] + W = wins(ev); hs = t['hosting'] + used = defaultdict(set); hosted = {} + for i, cp, off, w, s, h in hs['slots']: + assert s in W[i], ('window', i, s) + assert w == widths[h] and 0 <= off and off + w <= rank[i] + cells = set(range(off, off + w)); assert not cells & used[i, cp], ('overlap', i, cp); used[i, cp] |= cells + assert (s, h) not in hosted; hosted[s, h] = (i, cp, off, w) + rem = {} + for i in rank: + if rank[i] == 0: continue + for cp in range(2 * V): rem[i, cp] = rank[i] - len(used[i, cp]) + rr = Counter(rem[i, cp] for cp in range(2 * V)) + if str(i) in hs['remainders']: assert {int(k): v for k, v in hs['remainders'][str(i)].items()} == dict(rr) + else: assert rr == Counter({rank[i]: 2 * V}) + occ = defaultdict(set); LIVE = t['live']; bank_lo = {} + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners']; assert len(own) == 2 * V + len(widths) + assert own[:2 * V] == next(q for q in parent_t['calls'] if (q['stage'], q['replica']) == (s, rep))['owners'][:2 * V] + for h, (f, r) in enumerate(own[2 * V:]): + if (s, h) in hosted: + i, cp, off, w = hosted[s, h]; side, port = divmod(cp, V) + assert r == ['hosted', i, off, w] and f == rep * 960 + (2 * pair[i] + side) * V + port + assert pair[i] != p + occ['h', f, i, s, rep, h] = True + else: + assert r[0] == 'bank' and r[2] == widths[h] and DATA <= f < LIVE + cells = set(range(r[1], r[1] + r[2])); assert cells <= set(range(64)) and not cells & occ[f]; occ[f] |= cells + bank_lo[f] = s + banks = [f for f in occ if isinstance(f, int)] + assert sorted(banks) == list(range(DATA, LIVE)) and all(occ[f] == set(range(64)) for f in banks) + paid = Counter() + for c in t['calls']: + for z in t['local_programs'][c['orientation']]: + if z[0] == 0 and z[4]: paid[z[4]] += 1 + if z[0] == 2: paid[z[5]] += 1 + for (i, cp), r_ in rem.items(): + if r_: paid[r_] += T + mass = sum(r * n for r, n in paid.items()); assert 64 * LIVE - mass == 2496 + assert 64 * 64 > 2 * max(paid) ** 2 + return paid, sum(1 for _ in hosted) * T + +def audit_complex(t, parent_t, local_checks): + R = 560; m = 73 + assert t['local_programs'] == parent_t['local_programs'] and len(t['calls']) == 72 + prank = {} + for it in parent_t['idle_children']: prank.setdefault(it['child'], it['rank']) + stage_pair = {e['stage']: e['pair'] for e in t['recipe'] if e['kind'] == 'local'} + ev = []; side = {}; pairs = {} + for e in t['execution_schedule']: + if e['kind'] == 'local_cover_sweep': ev.append(('local', e['stage'], stage_pair[e['stage']])) + elif e['kind'] == 'bridge': ev.append(('bridge', e['dst'], e['src'])) + elif e['kind'] == 'idle_cover_sweep': + for sd, ch in enumerate(e['child_indices']): + if ch in prank: ev.append(('idle', ch, e['pair'])); side[ch] = sd; pairs[ch] = e['pair'] + W = wins(ev); hs = t['hosting'] + used = defaultdict(set); hosted = {} + for i, port, off, w, s, h in hs['slots']: + assert w == 9 and s in W[i] and 0 <= off and off + 9 <= prank[i] + cells = set(range(off, off + 9)); assert not cells & used[i, port]; used[i, port] |= cells + assert (s, h) not in hosted; hosted[s, h] = (i, port, off) + rem = {} + for it in parent_t['idle_children']: rem[it['child'], it['port']] = it['rank'] - len(used[it['child'], it['port']]) + got = {(it['child'], it['port']): it['rank'] for it in t['idle_children']} + assert got == {k: r for k, r in rem.items() if r} and all(it['replicas'] == T for it in t['idle_children']) + LIVE = t['live']; occ = defaultdict(set) + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners']; assert len(own) == 2 * V + R + assert own[:2 * V] == next(q for q in parent_t['calls'] if (q['stage'], q['replica']) == (s, rep))['owners'][:2 * V] + for h, (f, r) in enumerate(own[2 * V:]): + if (s, h) in hosted: + i, port, off = hosted[s, h] + assert r == [3, i, off] and f == rep * 960 + (2 * pairs[i] + side[i]) * V + port and pairs[i] != p + else: + assert r[0] == 2 and 0 <= r[1] < 8 and DATA <= f < LIVE and r[1] not in occ[f]; occ[f].add(r[1]) + banks = sorted(occ); assert banks == list(range(DATA, LIVE)) + paid = Counter() + for c in t['calls']: + for r_, z in local_checks[c['orientation']]['paid_profile'].items(): paid[int(r_)] += z + for (ch, port), r_ in rem.items(): + if r_: paid[r_] += T + for f in banks: paid[m - 9 * len(occ[f])] += 1 + mass = sum(r * n for r, n in paid.items()); assert m * LIVE - mass == 2496 + assert m * m > 2 * max(paid) ** 2 + return paid, len(hosted) * T + +def main(): + par, bd, cd, outp = map(Path, sys.argv[1:5]) + pbt = json.loads(gzip.decompress((par / 'bit426-source-centres/global/GLOBAL-TEMPLATE.json.gz').read_bytes())) + bt = json.loads(gzip.decompress((bd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())) + bg = json.loads((bd / 'GLOBAL.json').read_text()) + assert hashlib.sha256(gzip.decompress((bd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest() == bg['template_sha256'] + st = json.loads((par / 'bit426-source-centres/records/249-states.json').read_text()) + fs = json.loads((par / 'bit426-source-centres/records/frames.json').read_text())['frames'] + widths = [8 - fs[str(st['initial'][str(i)])]['dim'] for i in range(240, st['n'])] + pct = json.loads(gzip.decompress((par / 'split-centres/GLOBAL-TEMPLATE.json.gz').read_bytes())) + ct = json.loads(gzip.decompress((cd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())) + ch = json.loads((cd / 'HOSTED.json').read_text()) + assert hashlib.sha256(gzip.decompress((cd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest() == ch['template_sha256'] + lc = json.loads((par / 'split-centres/LOCAL-CHECKS.json').read_text()) + bp, bh = audit_bit(bt, pbt, widths); assert bp == Counter({int(k): v for k, v in bg['profile'].items()}) + cp, chh = audit_complex(ct, pct, lc); assert cp == Counter({int(k): v for k, v in ch['global_profile'].items()}) + controls = [] + def reject(name, fn, which): + q = copy.deepcopy(bt if which == 'bit' else ct); fn(q) + try: + (audit_bit(q, pbt, widths) if which == 'bit' else audit_complex(q, pct, lc)) + except (AssertionError, KeyError, IndexError, StopIteration): controls.append(name) + else: raise AssertionError('mutation accepted: ' + name) + def outside(q): # move one hosted residual to a stage outside its window + sl = q['hosting']['slots'][0]; i = sl[0]; s_bad = next(s for s in range(9) if s not in q['hosting']['windows'][str(i)][2]); sl[4] = s_bad + reject('bit: hosted residual outside its window', outside, 'bit') + reject('bit: overlapping hosted coordinates', lambda q: q['hosting']['slots'][1].__setitem__(2, q['hosting']['slots'][0][2]) if q['hosting']['slots'][1][:2] == q['hosting']['slots'][0][:2] else q['hosting']['slots'][1].__setitem__(1, q['hosting']['slots'][0][1]) or q['hosting']['slots'][1].__setitem__(2, q['hosting']['slots'][0][2]), 'bit') + reject('bit: understated live stock', lambda q: q.__setitem__('live', q['live'] - 1), 'bit') + reject('bit: hosted owner on the active pair', lambda q: q['calls'][0]['owners'].__setitem__(240 + next(h for h in range(len(widths)) if q['calls'][0]['owners'][240 + h][1][0] == 'hosted'), [0, ['hosted', 0, 0, 8]]), 'bit') + reject('bit: missing remainder child', lambda q: q['hosting']['slots'].pop(), 'bit') + reject('complex: hosted residual outside its window', lambda q: q['hosting']['slots'][0].__setitem__(4, next(s for s in range(9) if s not in q['hosting']['windows'][str(q['hosting']['slots'][0][0])][2])), 'complex') + reject('complex: remainder child understated', lambda q: q['idle_children'][0].__setitem__('rank', q['idle_children'][0]['rank'] - 1), 'complex') + reject('complex: dropped bank', lambda q: q.__setitem__('live', q['live'] - 1), 'complex') + reject('complex: duplicated hosted residual', lambda q: q['hosting']['slots'].append(list(q['hosting']['slots'][0])), 'complex') + res = dict(status='PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT', bit_template_sha256=bg['template_sha256'], complex_template_sha256=ch['template_sha256'], + bit_profile={str(k): v for k, v in sorted(bp.items())}, complex_profile={str(k): v for k, v in sorted(cp.items())}, + bit_live=bt['live'], complex_live=ct['live'], bit_hosted_residuals=bh, complex_hosted_residuals=chh, + bit_maxchild=max(bp), complex_maxchild=max(cp), mutations_rejected=controls) + outp.write_text(json.dumps(res, indent=2) + '\n'); print(json.dumps({k: v for k, v in res.items() if 'profile' not in k})) +if __name__ == '__main__': main() diff --git a/research/e8-r740-idle-hosting/bit_hosted.py b/research/e8-r740-idle-hosting/bit_hosted.py new file mode 100644 index 0000000000..19225d9c74 --- /dev/null +++ b/research/e8-r740-idle-hosting/bit_hosted.py @@ -0,0 +1,116 @@ +"""Idle-axis hosting for #434's compressed nine-stage bit template (m=64). +Reads the emitted parent template, keeps every local program and scalar replay unchanged, and moves whole helper +residuals from banks onto pending idle-advance coordinates of untouched data families. Emits a new template, +GLOBAL.json with the new live stock and paid profile. usage: bit_hosted.py PARENT_GLOBAL_DIR LOCAL_CHECK_DIR OUT""" +import gzip, hashlib, importlib.util, json, sys, time +from collections import Counter +from pathlib import Path +HERE = Path(__file__).resolve().parent +sys.path.insert(0, str(HERE)) +import hosting_core as HC +H, V, L, K, T, M = 8, 120, 9, 4, 8, 64 +DATA = 2 * K * V * T +DISCOVER = False +sha = lambda p: hashlib.sha256(Path(p).read_bytes()).hexdigest() +def main(parent, local, out): + t0 = time.monotonic(); out.mkdir(parents=True, exist_ok=False) + blob = gzip.decompress((parent / 'GLOBAL-TEMPLATE.json.gz').read_bytes()); t = json.loads(blob) + g = json.loads((parent / 'GLOBAL.json').read_text()) + assert hashlib.sha256(blob).hexdigest() == g['template_sha256'] + st = json.loads((local / 'records/249-states.json').read_text()); R = st['n'] - 2 * V; assert R == g['R'] + fs = json.loads((local / 'records/frames.json').read_text())['frames']; dims = {int(f): z['dim'] for f, z in fs.items()} + width = [H - dims[st['initial'][str(i)]] for i in range(2 * V, 2 * V + R)] + # schedule with indexed idle children + sched = []; idx = 0 + for e in t['schedule']: + if e['kind'] == 'local_cover_sweep': sched.append(dict(kind='local', stage=e['stage'], pair=e['pair'])) + elif e['kind'] == 'bridge': sched.append(dict(kind='bridge', dst=e['dst'], src=e['src'])) + elif e['kind'] == 'idle': + sched.append(dict(kind='idle', pair=e['pair'], rank=e['rank'], idx=idx)); e['idx'] = idx; idx += 1 + win = {k: x for k, x in HC.windows(sched).items() if x[1] > 0 and x[2]} + avail = Counter() + for s in range(L): + for w in width: avail[s, w] += 1 + sel = HERE / 'SELECTION.json'; key = 'bit' + if DISCOVER: + ys, zs, val = HC.solve(win, 2 * V, dict(avail), M, group={7: 8, 4: 2}); HC.save_selection(sel, key, ys, zs, val) + ys, zs, val = HC.load_selection(sel, key) + helpers = {s: [(h, width[h]) for h in range(R)] for s in range(L)} + slots, rem = HC.expand(win, ys, zs, helpers, 2 * V) + hosted = {(s, h): (i, c, off, w) for i, c, off, w, s, h in slots} + # remaining helpers -> exact width-64 banks (per stage, same set of helpers in every replica) + left = {s: [h for h in range(R) if (s, h) not in hosted] for s in range(L)} + nb = {}; place = {} + for s in range(L): + wl = {h: width[h] for h in left[s]} + slotsS = sorted(((wl[h], rep, h) for rep in range(T) for h in left[s]), key=lambda x: (-x[0], x[1], x[2])) + by = {} + for w_, rep, h in slotsS: by.setdefault(w_, []).append((rep, h)) + bins = [] + def take(w_): return by[w_].pop(0) + for w_ in sorted(by, reverse=True): + if w_ == 8: continue + while by.get(w_): + cont = []; off = 0 + if w_ == 7: + for _ in range(8): rep, h = take(7); cont.append((rep, h, off, 7)); off += 7 + rep, h = take(8); cont.append((rep, h, off, 8)); off += 8 + else: + for _ in range(64 // w_): rep, h = take(w_); cont.append((rep, h, off, w_)); off += w_ + assert off == 64; bins.append(cont) + while by.get(8): + cont = []; off = 0 + for _ in range(8): rep, h = take(8); cont.append((rep, h, off, 8)); off += 8 + bins.append(cont) + nb[s] = len(bins) + for b, cont in enumerate(bins): + for rep, h, off, w_ in cont: place[s, rep, h] = (b, off, w_) + base = [DATA] + for s in range(L): base.append(base[-1] + nb[s]) + LIVE = base[-1] + # owners + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners'][:2 * V] + for h in range(R): + if (s, h) in hosted: + i, cp, off, w = hosted[s, h]; pair = win[i][0]; side, port = divmod(cp, V) + own.append([rep * 960 + (2 * pair + side) * V + port, ['hosted', i, off, w]]) + else: + b, off, w = place[s, rep, h]; own.append([base[s] + b, ['bank', off, w]]) + assert len({(f, tuple(r)) for f, r in own}) == 2 * V + R and all(0 <= f < LIVE for f, r in own) + c['owners'] = own + # profile: local programs unchanged; idle children replaced by remainders + paid = Counter() + for c in t['calls']: + for z in t['local_programs'][c['orientation']]: + if z[0] == 0 and z[4]: paid[z[4]] += 1 + if z[0] == 2: paid[z[5]] += 1 + remainder = {} + for e in t['schedule']: + if e['kind'] == 'idle' and e['rank']: + i = e['idx'] + if i in win: + rr = Counter(rem[i, cp] for cp in range(2 * V)); remainder[i] = {str(k): v for k, v in sorted(rr.items())} + for r_, n in rr.items(): + if r_: paid[r_] += n * T + else: + paid[e['rank']] += 2 * V * T + mass = sum(r * n for r, n in paid.items()); assert M * LIVE - mass == 2496, M * LIVE - mass + t.update(version='compressed-nine-e8-bit-v1+idle-axis-hosting', live=LIVE, + hosting=dict(windows={str(i): [w[0], w[1], sorted(w[2])] for i, w in win.items()}, + slots=[list(x) for x in slots], remainders=remainder, banks_per_stage=nb, + rule='helper (stage s, helper h) of replica r owns coordinates [off, off+w) of the pending idle-child ' + 'projector of data family r*960+(2*pair+side)*120+port (copy = side*120+port); s lies strictly between ' + 'the last local/bridge touch of that pair and the child; the child keeps the remaining coordinates.'), + helper_route='bank owner (exact width-64 tiling of the unhosted residuals of each stage) or hosted owner (data family, pending idle coordinates)') + tb = json.dumps(t, separators=(',', ':'), sort_keys=True).encode(); (out / 'GLOBAL-TEMPLATE.json.gz').write_bytes(gzip.compress(tb, mtime=0)) + res = dict(g); res.update(status='PASS_IDLE_AXIS_HOSTED_BIT_TEMPLATE', live=LIVE, physical=LIVE + 9, template_sha256=hashlib.sha256(tb).hexdigest(), + parent_template_sha256=g['template_sha256'], profile=dict(sorted(paid.items())), paid_calls=sum(paid.values()), rank_mass=mass, + maxchild=max(paid), banks_per_stage_hosted=nb, hosted_residuals_per_replica=len(slots), hosted_residuals=len(slots) * T, + hosted_coordinates_per_replica=sum(x[3] for x in slots), saved_idle_cost_proxy=val, seconds=time.monotonic() - t0) + res['bank_assignments'] = sum(1 for c in t['calls'] for f, r in c['owners'][2 * V:] if r[0] == 'bank') + (out / 'GLOBAL.json').write_text(json.dumps(res, indent=2) + '\n') + print(json.dumps({k: res[k] for k in ('live', 'maxchild', 'hosted_residuals', 'banks_per_stage_hosted', 'rank_mass')}), flush=True) +if __name__ == '__main__': + DISCOVER = '--discover' in sys.argv; args = [a for a in sys.argv[1:] if a != '--discover'] + main(Path(args[0]), Path(args[1]), Path(args[2])) diff --git a/research/e8-r740-idle-hosting/complex_hosted.py b/research/e8-r740-idle-hosting/complex_hosted.py new file mode 100644 index 0000000000..56e15c15ae --- /dev/null +++ b/research/e8-r740-idle-hosting/complex_hosted.py @@ -0,0 +1,87 @@ +"""Idle-axis hosting for #433's compressed nine-stage complex template (m=73, R=560, whole rank-nine residuals). +Local programs, data routes and the cover correction are unchanged; bank slots of hosted residuals move onto pending +idle-child coordinates of untouched data families; unhosted residuals are re-tiled eight per bank with one paid pad +(a final partial bank pays the larger pad). usage: complex_hosted.py SPLIT_CENTRES_DIR OUT""" +import gzip, hashlib, json, math, sys, time +from collections import Counter +from pathlib import Path +HERE = Path(__file__).resolve().parent +sys.path.insert(0, str(HERE)) +import hosting_core as HC +V, K, T, L, M, R = 120, 4, 8, 9, 73, 560 +DATA = 2 * K * V * T +DISCOVER = False +def main(src, out): + t0 = time.monotonic(); out.mkdir(parents=True, exist_ok=False) + blob = gzip.decompress((src / 'GLOBAL-TEMPLATE.json.gz').read_bytes()); t = json.loads(blob) + integ = json.loads((src / 'INTEGRATION.json').read_text()); checks = json.loads((src / 'LOCAL-CHECKS.json').read_text()) + assert hashlib.sha256(blob).hexdigest() == integ['global_template_sha256'] and t['live'] == integ['live'] + rank = {} + for it in t['idle_children']: + assert it['replicas'] == T; rank.setdefault(it['child'], it['rank']); assert rank[it['child']] == it['rank'] + pair_of_stage = {e['stage']: e['pair'] for e in t['recipe'] if e['kind'] == 'local'} + sched = []; side_of = {}; pair_of = {} + for e in t['execution_schedule']: + if e['kind'] == 'local_cover_sweep': sched.append(dict(kind='local', stage=e['stage'], pair=pair_of_stage[e['stage']])) + elif e['kind'] == 'bridge': sched.append(dict(kind='bridge', dst=e['dst'], src=e['src'])) + elif e['kind'] == 'idle_cover_sweep': + for sd, ch in enumerate(e['child_indices']): + if ch in rank: + sched.append(dict(kind='idle', pair=e['pair'], rank=rank[ch], idx=ch)); side_of[ch] = sd; pair_of[ch] = e['pair'] + win = {k: x for k, x in HC.windows(sched).items() if x[1] >= 9 and x[2]} + avail = {(s, 9): R for s in range(L)} + sel = HERE / 'SELECTION.json'; key = 'complex' + if DISCOVER: + ys, zs, val = HC.solve(win, V, avail, M, pad_value=HC.cost(1, M) / 8); HC.save_selection(sel, key, ys, zs, val) + ys, zs, val = HC.load_selection(sel, key) + slots, rem = HC.expand(win, ys, zs, {s: [(h, 9) for h in range(R)] for s in range(L)}, V) + hosted = {(s, h): (i, port, off) for i, port, off, w, s, h in slots} + # re-tile unhosted residuals: per stage, z = rank among (replica, helper) unhosted pairs; eight per bank + base = [DATA]; tile = {}; partial = Counter() + for s in range(L): + left = [(rep, h) for rep in range(T) for h in range(R) if (s, h) not in hosted] + for z, (rep, h) in enumerate(left): tile[s, rep, h] = divmod(z, 8) + nb = -(-len(left) // 8); base.append(base[-1] + nb) + if len(left) % 8: partial[M - 9 * (len(left) % 8)] += 1 + full = len(left) // 8 + partial[M - 72] += full + W = base[-1] + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners'][:2 * V] + for h in range(R): + if (s, h) in hosted: + i, port, off = hosted[s, h]; own.append([rep * 960 + (2 * pair_of[i] + side_of[i]) * V + port, [3, i, off]]) + else: + b, sl = tile[s, rep, h]; own.append([base[s] + b, [2, sl]]) + assert len({(f, tuple(r)) for f, r in own}) == 2 * V + R and all(f < W for f, r in own) + c['owners'] = own + paid = Counter() + for c in t['calls']: + for r_, z in checks[c['orientation']]['paid_profile'].items(): paid[int(r_)] += z + newidle = [] + for it in t['idle_children']: + ch, port = it['child'], it['port']; rr = rem.get((ch, port), it['rank']) if ch in win else it['rank'] + if rr: newidle.append(dict(child=ch, port=port, rank=rr, hosted=it['rank'] - rr, replicas=T)); paid[rr] += T + for r_, n in partial.items(): paid[r_] += L * n if False else n * 1 + # padding: one pad child per bank per stage (already per-stage counted above), the template replays all stages + mass = sum(r * n for r, n in paid.items()); D = M * W - mass + assert D == 2496, D + t.update(version='hamming-mutable-basis-nine-v1+idle-axis-hosting', live=W, idle_children=newidle, + physical=W + R + (integ['physical'] - integ['live'] - R), + hosting=dict(windows={str(i): [w[0], w[1], sorted(w[2])] for i, w in win.items()}, sides=side_of, pairs=pair_of, + slots=[list(x) for x in slots], banks=[base[s + 1] - base[s] for s in range(L)])) + t['bank_padding']['families'] = list(range(DATA, W)); t['cover_final_correction']['families'] = [0, W] + t['cover_final_correction']['charged_calls_per_cover'] = W + for e in t['execution_schedule']: + if e['kind'] == 'bank_padding_cover_sweep': e['families'] = [DATA, W] + elif e['kind'] == 'translate_every_live_family': e.update(t['cover_final_correction']) + tb = json.dumps(t, sort_keys=True, separators=(',', ':')).encode(); (out / 'GLOBAL-TEMPLATE.json.gz').write_bytes(gzip.compress(tb, mtime=0)) + res = dict(status='PASS_IDLE_AXIS_HOSTED_COMPLEX_TEMPLATE', parent_template_sha256=integ['global_template_sha256'], + template_sha256=hashlib.sha256(tb).hexdigest(), live=W, physical=t['physical'], global_profile=dict(sorted(paid.items())), + rank_mass=mass, deficit=D, maxchild=max(paid), hosted_residuals=len(slots) * T, banks_per_stage=t['hosting']['banks'], + saved_cost_proxy=val, seconds=time.monotonic() - t0) + (out / 'HOSTED.json').write_text(json.dumps(res, indent=2) + '\n') + print(json.dumps({k: res[k] for k in ('live', 'maxchild', 'hosted_residuals', 'banks_per_stage', 'deficit')})) +if __name__ == '__main__': + DISCOVER = '--discover' in sys.argv; args = [a for a in sys.argv[1:] if a != '--discover'] + main(Path(args[0]), Path(args[1])) diff --git a/research/e8-r740-idle-hosting/hosting_core.py b/research/e8-r740-idle-hosting/hosting_core.py new file mode 100644 index 0000000000..68b536daa9 --- /dev/null +++ b/research/e8-r740-idle-hosting/hosting_core.py @@ -0,0 +1,138 @@ +"""Idle-axis hosting: place whole dirty-helper residuals on the pending coordinates of an idle data family. + +A data family that is advanced by an idle child from level a to level b receives the commuting coordinate factors of +that child. If the family is untouched (no local invocation on its pair and no bridge naming its pair) during an +interval of local invocations ending at the child, a helper residual of width w from an invocation inside that +interval may own w of those pending coordinates instead of a bank slot. The child keeps only the remaining +coordinates. This module computes the windows from the recipe and chooses, per replica, how many residuals of each +width each child hosts (exact integer programme), then expands that choice into explicit slot assignments. +Standard library plus scipy for the integer programme; the emitted assignment is re-checked without scipy.""" +import math +from collections import Counter, defaultdict + +def windows(schedule): + """schedule: ordered events dict(kind='local',stage,pair) | dict(kind='bridge',dst,src) | dict(kind='idle',pair,rank,idx). + Returns {idx: (pair, rank, frozenset(stages))} - stages whose invocation lies strictly between the last touch of + the pair and the idle child.""" + last = {}; out = {}; locals_ = [] + for pos, e in enumerate(schedule): + k = e['kind'] + if k == 'local': + locals_.append((pos, e['stage'], e['pair'])); last[e['pair']] = pos + elif k == 'bridge': + last[e['dst']] = pos; last[e['src']] = pos + elif k == 'idle': + p = e['pair']; lo = last.get(p, -1) + st = frozenset(s for q, s, pp in locals_ if lo < q < pos and pp != p) + out[e['idx']] = (p, e['rank'], st) # an idle child acts on other coordinates (or the other member): not a touch + return out + +def patterns(rank, widths, maxk=12): + """multisets of widths with sum <= rank (as sorted tuples)""" + ws = sorted(set(widths), reverse=True); res = [] + def rec(i, cur, s): + if i == len(ws): res.append(tuple(cur)); return + w = ws[i]; k = 0 + while s + k * w <= rank and len(cur) + k <= maxk: + rec(i + 1, cur + [w] * k, s + k * w); k += 1 + rec(0, [], 0) + return res + +def cost(r, m): + return r * math.log(m / r) if r else 0.0 + +def solve(win, copies, avail, m, pad_value=0.0, group=None): + """win: {idx: (pair, rank, stages)}; copies: piece copies per replica of each idx (2V); + avail: {(stage, width): count per replica}; maximise saved idle cost (+ pad_value per hosted residual). + group: optional {width: g} - remaining count of that width per stage must be a multiple of g (exact bank tiling). + Returns {(idx, pattern): copies} and {(idx, width, stage): count}.""" + import numpy as np + from scipy.optimize import milp, LinearConstraint, Bounds + widths = sorted({w for (_, w) in avail}) + var = []; index = {} + for idx, (p, r, st) in win.items(): + for pat in patterns(r, widths): + index[('y', idx, pat)] = len(var); var.append(('y', idx, pat)) + for w in widths: + for s in st: + if avail.get((s, w), 0): + index[('z', idx, w, s)] = len(var); var.append(('z', idx, w, s)) + stages = sorted({s for (s, _) in avail}) + if group: + for w, g in group.items(): + for s in stages: + index[('g', w, s)] = len(var); var.append(('g', w, s)) + n = len(var); c = np.zeros(n); integ = np.ones(n); lb = np.zeros(n); ub = np.full(n, np.inf) + for key, j in index.items(): + if key[0] == 'y': + _, idx, pat = key; r = win[idx][1]; c[j] = -(cost(r, m) - cost(r - sum(pat), m) + pad_value * len(pat)) + rows, lo, hi = [], [], [] + for idx in win: + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'y' and key[1] == idx: row[j] = 1 + rows.append(row); lo.append(copies); hi.append(copies) + for w in widths: + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'y' and key[1] == idx: row[j] = key[2].count(w) + if key[0] == 'z' and key[1] == idx and key[2] == w: row[j] = -1 + rows.append(row); lo.append(0); hi.append(0) + for (s, w), a in avail.items(): + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'z' and key[2] == w and key[3] == s: row[j] = 1 + if group and w in group: + row[index[('g', w, s)]] = group[w]; rows.append(row); lo.append(a); hi.append(a) # used + g*k = avail + else: + rows.append(row); lo.append(0); hi.append(a) + res = milp(c, constraints=LinearConstraint(np.array(rows), lo, hi), integrality=integ, bounds=Bounds(lb, ub), + options=dict(time_limit=600, disp=False)) + assert res.x is not None, res.message + x = [int(round(t)) for t in res.x] + ys = {(k[1], k[2]): x[j] for k, j in index.items() if k[0] == 'y' and x[j]} + zs = {(k[1], k[2], k[3]): x[j] for k, j in index.items() if k[0] == 'z' and x[j]} + return ys, zs, -res.fun + +def expand(win, ys, zs, helpers, V2): + """helpers: {stage: [(helper, width), ...]} for ONE replica; returns list of + (idx, copy, offset, width, stage, helper) and the remainder rank of every (idx, copy). + Copies of a piece are the 2V (side, port) data families; residuals packed from offset 0 in decreasing width.""" + pool = defaultdict(list) # (stage, width) -> helpers + for s, hs in helpers.items(): + for h, w in hs: pool[s, w].append(h) + for k in pool: pool[k].sort() + need = defaultdict(list) # (idx, width) -> stages multiset in deterministic order + for (idx, w, s), cnt in sorted(zs.items()): need[idx, w] += [s] * cnt + out = []; rem = {} + for idx in sorted(win): + pats = sorted([(pat, cnt) for (i, pat), cnt in ys.items() if i == idx], key=lambda t: (-sum(t[0]), t[0])) + copy = 0; ptr = Counter() + r = win[idx][1] + for pat, cnt in pats: + for _ in range(cnt): + off = 0 + for w in sorted(pat, reverse=True): + s = need[idx, w][ptr[idx, w]]; ptr[idx, w] += 1 + h = pool[s, w].pop(0) + out.append((idx, copy, off, w, s, h)); off += w + rem[idx, copy] = r - off; copy += 1 + while copy < V2: rem[idx, copy] = r; copy += 1 + return out, rem + +def save_selection(path, key, ys, zs, val): + """freeze the integer-programme choice (patterns per child, residual stages per child) for stdlib-only replay""" + import json + from pathlib import Path + p = Path(path); d = json.loads(p.read_text()) if p.exists() else {} + d[key] = dict(patterns=sorted([[i, list(pat), n] for (i, pat), n in ys.items()]), + stages=sorted([[i, w, s, n] for (i, w, s), n in zs.items()]), proxy_saving=val) + p.write_text(json.dumps(d, indent=1, sort_keys=True) + '\n') + +def load_selection(path, key): + import json + from pathlib import Path + d = json.loads(Path(path).read_text())[key] + ys = {(i, tuple(pat)): n for i, pat, n in d['patterns']} + zs = {(i, w, s): n for i, w, s, n in d['stages']} + return ys, zs, d['proxy_saving'] diff --git a/research/e8-r740-idle-hosting/local-evidence/TESTED-MANIFEST.json b/research/e8-r740-idle-hosting/local-evidence/TESTED-MANIFEST.json new file mode 100644 index 0000000000..a15f071143 --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/TESTED-MANIFEST.json @@ -0,0 +1,21 @@ +{ + "parent_manifest_sha256": "344d58298774e9e2bbfd0af6332507c3b3d2172bc70d88a79853e679bdaaa33f", + "files": { + "assemble.py": "fb31ef3d1633effe3a8abeb48bf9bbc0508bfac2a37af101ea89dbb5f622be51", + "AUDIT-CHANGED.json": "6320b6fba321cbde5648ca5d07d79d1e05095003cd20c11cee044df54d684842", + "audit.py": "8792956a1aab64812cb030dc57456d68c5e90c570594f4d2d7fcf9ab14c89c40", + "bit_hosted.py": "300227c826ea07951738644975915ea11c1c53295440f93b3a7b19f635ce2061", + "CERTIFICATE.json": "f738a33bf7f079a3ea275a555807f0a6d491a65201859953eac7edeebb5e1fe3", + "complex_hosted.py": "829c5c4f4bdfccedadd31505f1f0a394f7a208d1446b7bbf9cc92d3aa1530c0c", + "EXPECTED.json": "feee5ada0067f1c83f7b21972fb4351b99a3ca24c020a43434b84ca20c48d14d", + "hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "e2bcab601208891189f33c257eb7cfee9261b420c6eceebf96c986135ae65a4c", + "PROOF.md": "4f06d1dead63c62b076f0a6c1521c68c0b0544aa2c5df5e74a408fdfc34f91c4", + "README.md": "38da638aa8dbb2139a0e3647ab36dbd360c73975b7456cd763bca9173ba47f79", + "SELECTION.json": "6e3a436ef9e926019751fd40b08586d695d888f16542f9c8a24ec4d6be8cffae", + "SOURCE442-PINS.json": "489716866ad1d368a5f29a3d37e8d76a40474f5709e4ad593f18f9cd89dc9096", + "VALIDATION.json": "57a7ff96c9c568d9ef25fffe1ff4e7c19a1de3b2d9c6a45635e7ab233f01f350", + "verify.py": "094fab9efc8ce362007f4da9e00beee1867d8503e073eab4a622199bcd3d8ae9" + } +} diff --git a/research/e8-r740-idle-hosting/local-evidence/full311/RECEIPT.json b/research/e8-r740-idle-hosting/local-evidence/full311/RECEIPT.json new file mode 100644 index 0000000000..7f3f6aaf6e --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full311/RECEIPT.json @@ -0,0 +1,35 @@ +{ + "status": "PASS_FULL_IDLE_AXIS_HOSTING_COMPOSITION", + "kappa": "124529313073387/100000000000000000", + "kappa_decimal": "0.001245293130733870", + "gain_over_pr434_percent": 9.901378851439578, + "manifest_sha256": "aac568b890323ced6d856c0477a4761b6f106a5051ee0811ffd1d97d7ca09ca6", + "checks": [ + { + "name": "parent-r740-full", + "seconds": 149.4, + "log_sha256": "b6b21746622747ea37b7423dd7600953185f3da7c5cca1019526ab4d9cfb06f1" + }, + { + "name": "bit-hosting", + "seconds": 0.4, + "log_sha256": "0b2dd019350260407d9d99fe7be94f02ff031997fbf6a4976229b27c6cd7d788" + }, + { + "name": "complex-hosting", + "seconds": 0.4, + "log_sha256": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd" + }, + { + "name": "independent-audit", + "seconds": 3.3, + "log_sha256": "e55ea84119d6b17d16be29a67e8158e357838aec1a3c2d17aa966d8843afe345" + }, + { + "name": "exact-assembly", + "seconds": 0.2, + "log_sha256": "1d2c62b500f91f48ada95c0b4c811169705b762098c81f7458dbc8194652b8e9" + } + ], + "python": "3.11.15" +} diff --git a/research/e8-r740-idle-hosting/local-evidence/full311/RESULT.json b/research/e8-r740-idle-hosting/local-evidence/full311/RESULT.json new file mode 100644 index 0000000000..2613e82a26 --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full311/RESULT.json @@ -0,0 +1,116 @@ +{ + "status": "PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY", + "kappa": "124529313073387/100000000000000000", + "kappa_decimal": "0.001245293130733870", + "bit_lower": "249369163853537814231/200000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "bit", + "gain_over_pr434_percent": 9.901378851439578, + "bit": { + "live": 9376, + "physical": 9385, + "maxchild": 8, + "rank_mass": 597568, + "hosted_residuals": 39712, + "prefix_bits": 123, + "charged_prefix_bits": 128, + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 320, + "row_coefficient": 18355 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "160994841886171354580274911366145532969229267939587198707853200424307949633800426071501554290773399554138981060821463706191785706225360964099272884388120768133353/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29982546840970881/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "160994841886171344678297106451153345469229267939587198707853200424307949633800426071501554290773399554138981060821463706191785706225360964099272884388120768133353/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "4870491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "80497420943085682080131516254397505654339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "4870491481514411383281379581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "3901379508518485588616718620418711893599404339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "160994841886171364321257874394966365888954356573441665738623932484720750925947225647193604656972973482637426770048064152052804645403897257907487178162759804034080115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "80497420943085682080131516254397505654339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "4870491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "3906249999999999996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "epsilon_below_one": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "guard_width": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "K_geometry": "2934557991481514411383281379581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353000000000000000000", + "K_dominates_log": "4870491481514411378410888099773695017314280696108245533019642390331081290275650319661123948597460738905874891271948941406611024447346115523099061056322517355890447120356820188100756615611879231866647/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353000000000000000000", + "record_suffix": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "phase_local": "38963931852115310592630545168790440798046402637882709068326761064423113857512321231381024156016356822966899337594487615313912641901307598092094105904541621416118621811073665565034227615611879231866647/31288963931852115283253751036650304851204765282219170815468922421341819465791127623899108457379907309810355456510082901341608344705661670265793137194112250404640260771075104966145066824000000000000000000", + "phase_boundary": "7792786370423058989629715848546559834234176862546056693188823990967541224610222112094258252090508974682534129528166542027236877371971385457584350614741297703910004950989692648980768415611879231866647/6257792786370423056650750207330060970240953056443834163093784484268363893158225524779821691475981461962071091302016580268321668941132334053158627438822450080928052154215020993229013364800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "7812499999999999988276379508518485589593281120418711893599404339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/15644481965926057641626875518325152425602382641109585407734461210670909732895563811949554228689953654905177728255041450670804172352830835132896568597056125202320130385537552483072533412000000000000000000", + "prime_interval_packing": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "alpha_positive": "9740982963028824714817267681061802394472440973504597466634945058058514514166603307049681121085874465200306955032311609107654112655054898747241210320353817935923043504744940956234109615611879231866647/7822240982963028820813437759162576212801191320554792703867230605335454866447781905974777114344976827452588864127520725335402086176415417566448284298528062601160065192768776241536266706000000000000000000", + "alpha_below_one": "7812499999999999996098620491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/7822240982963028820813437759162576212801191320554792703867230605335454866447781905974777114344976827452588864127520725335402086176415417566448284298528062601160065192768776241536266706000000000000000000", + "alpha_below_one_fourth": "1945819262777728380488542172109582250805825389165193578500172706275805202097778873186644597465158332397946909076847869724742867431448799492864829864311661832354093254687449119427832566884388120768133353/7822240982963028820813437759162576212801191320554792703867230605335454866447781905974777114344976827452588864127520725335402086176415417566448284298528062601160065192768776241536266706000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "30479479966926125629230997134694654792599351896850353277226184762136065350003412002927242348797185047194342437771431457140457774613420994778358682893608035881659576476117166475866830769261641860723199598957094614729740364581226259181911233514990188727043572034888783040961088293046109219446265804420207390756698760815036617012717152027961567991022609/30555628839699331331302491246728813331254653595917158999481369552091620572061648070213973102910065732236675250498127833341414399126622724868938610541125244535781504659253032193501041820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "219061711454816922309013369767646982040858278896497230842953166351566744782129866899196049958710931337445009323598128451911750053836574450129448226817521129586794512616392933630900632381153164362304400059/31288963931852115283253751036650304851204765282219170815468922421341819465791127623899108457379907309810355456510082901341608344705661670265793137194112250404640260771075104966145066824000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "690060985307433905226098596957110089122505753645445891931641594270034419237193204683922430583497279447124601468900518397497220947455066466664623492212637791088057857530239712508623389/391112049148151441040671887958128810640059566027739635193361530266772743322389095298738855717248841372629443206376036266770104308820770878322414214926403130058003259638438812076813335300000000000000000", + "coordinate_movement_above_kappa": "12130379170461457919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "2989489361592824641854267089989812784824461876177062567382800640032616759148041093851835748662484380744951582625244821307271166386342955883422092772862346610300545978918009004318100537/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353000000000000000000", + "bulk_exposure_above_kappa": "12130379170461457919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "7129855273437428073210858671732473319559496398049737918972650205652823274571200321955370332163468057427699191438647931692254492071073354683409833726138173356828893124099447279369840871/6257792786370423056650750207330060970240953056443834163093784484268363893158225524779821691475981461962071091302016580268321668941132334053158627438822450080928052154215020993229013364800000000000000000", + "scalar_work_above_kappa": "51293758333113198007681168876987519023399864631358275002597712238935026105751565421726405889507293942043673685448281109132076632708197608549945737227746991986464596006034788879921737767/31288963931852115283253751036650304851204765282219170815468922421341819465791127623899108457379907309810355456510082901341608344705661670265793137194112250404640260771075104966145066824000000000000000000", + "dimension_above_kappa": "390137950851848558868139097349305094586039030929370453929144223378673148609252498971295563519944363311292987377121243180354497160079747519174806732528663336606620232574198979011244522230239712508623389/391112049148151441040671887958128810640059566027739635193361530266772743322389095298738855717248841372629443206376036266770104308820770878322414214926403130058003259638438812076813335300000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "376667732875215341121174631116822818722929/250000000000000000000000000000000000000000000000", + "cutoff_log2": "15858630557976" + }, + { + "gap": "234823293994250466174322372814668165026784914545691992246145033/125000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10200939576290109046" + }, + { + "gap": "146394221191699316621449174804382057630084307698160993149780953280106680510470339041/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6561674279421831238677946" + }, + { + "gap": "91265511328909811763865161183548097235746240163451057576061935206677185325280577424330679604276376561657/31250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4220745454595125991404220610916" + }, + { + "gap": "56897010621889556290941511599987042000960071173944906872621560569584671773082694860939986931588217989892970845088849270571089/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2714961370203082164321471435033117471" + }, + { + "gap": "35470899911366145532969229267939587198707853200424307949633800426071501554290773399554138981060821463706191785706225360964099272884388120768133353/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1746377582109381257242684594400020974931554" + } + ], + "bit_template_sha256": "c256c1c11027d32d5d800dd8dc3c0c50189ab71157c6c06301bb4283ff23bab1", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f" +} diff --git a/research/e8-r740-idle-hosting/local-evidence/full311/bit-hosting.log b/research/e8-r740-idle-hosting/local-evidence/full311/bit-hosting.log new file mode 100644 index 0000000000..ce65a77978 --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full311/bit-hosting.log @@ -0,0 +1 @@ +{"live": 9376, "maxchild": 8, "hosted_residuals": 39712, "banks_per_stage_hosted": {"0": 628, "1": 478, "2": 0, "3": 0, "4": 56, "5": 56, "6": 0, "7": 0, "8": 478}, "rank_mass": 597568} diff --git a/research/e8-r740-idle-hosting/local-evidence/full311/complex-hosting.log b/research/e8-r740-idle-hosting/local-evidence/full311/complex-hosting.log new file mode 100644 index 0000000000..b8925ed69d --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full311/complex-hosting.log @@ -0,0 +1 @@ +{"live": 8400, "maxchild": 8, "hosted_residuals": 34560, "banks_per_stage": [0, 0, 0, 160, 0, 120, 0, 0, 440], "deficit": 2496} diff --git a/research/e8-r740-idle-hosting/local-evidence/full311/exact-assembly.log b/research/e8-r740-idle-hosting/local-evidence/full311/exact-assembly.log new file mode 100644 index 0000000000..c09992815d --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full311/exact-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY 0.001245293130733870 binding bit gain over #434 9.9014% diff --git a/research/e8-r740-idle-hosting/local-evidence/full311/independent-audit.log b/research/e8-r740-idle-hosting/local-evidence/full311/independent-audit.log new file mode 100644 index 0000000000..868a926873 --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full311/independent-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", "bit_template_sha256": "c256c1c11027d32d5d800dd8dc3c0c50189ab71157c6c06301bb4283ff23bab1", "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", "bit_live": 9376, "complex_live": 8400, "bit_hosted_residuals": 39712, "complex_hosted_residuals": 34560, "bit_maxchild": 8, "complex_maxchild": 8, "mutations_rejected": ["bit: hosted residual outside its window", "bit: overlapping hosted coordinates", "bit: understated live stock", "bit: hosted owner on the active pair", "bit: missing remainder child", "complex: hosted residual outside its window", "complex: remainder child understated", "complex: dropped bank", "complex: duplicated hosted residual"]} diff --git a/research/e8-r740-idle-hosting/local-evidence/full311/parent-r740-full.log b/research/e8-r740-idle-hosting/local-evidence/full311/parent-r740-full.log new file mode 100644 index 0000000000..ee23b611cb --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full311/parent-r740-full.log @@ -0,0 +1,16 @@ +PASS hamming_packets +PASS complex_construct +PASS complex_audit +PASS complex_emit +PASS complex_phases +PASS bit_construct +PASS bit_kernel +PASS bit_export +PASS bit_global +PASS bit_audit +PASS bit_price +PASS complex_integrate +PASS complex_replay +PASS combined +PASS independent_audit +PASS conditional kappa 0.001138798055343319 diff --git a/research/e8-r740-idle-hosting/local-evidence/full311/parent/RESULT.json b/research/e8-r740-idle-hosting/local-evidence/full311/parent/RESULT.json new file mode 100644 index 0000000000..655468f65f --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full311/parent/RESULT.json @@ -0,0 +1,126 @@ +{ + "status": "PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY", + "kappa": "1138798055343319/1000000000000000000", + "kappa_decimal": "0.001138798055343319", + "bit_lower": "17814006170324008149/15625000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.663365470849168, + "bit_invoice": { + "prefix_bits": 123, + "charged_prefix_bits": 128, + "extra_helper_route_factor_bound": 144, + "selector_charge": 2375347104, + "full_counted_coefficient": "8271410009661736653226855278395470361", + "two_level_coefficient": "7323242093316479963924177312150069573045566553609912891292783054664675728289084971684", + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14187, + "physical": 14196 + }, + "strict_outer_constraints": { + "bit_positive": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "561793975111583755318899079343869984489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "561793975111583740163871249502858784489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "7296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "280896987555791884675169479480856836925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "7296616927364715307747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "6392703383072635284692252683394401362436925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "561793975111583769912132934073297429170711561242364812146848396605205517119521114242518016217267837645828790697405933529381995454757936430882408462422461948391475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "280896987555791884675169479480856836925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "7296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "6399999999999999993600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "epsilon_below_one": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "guard_width": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "K_geometry": "4807296616927364715307747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000", + "K_dominates_log": "235374739592410170982280634781739427591186359788777903970880237514185872696357672241417629322931845013535600673179511963907670740968611784320670684630538885699570024398052336858483077811796097147/206686987642818216571217655374374149598808841734162927502779721971677113375476079643918531004799011488932066605472191000895974276213159612680294946897790151565994516922188203902853000000000000000000", + "record_suffix": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "phase_local": "58372935418917754454681915917424386796845433466807383126296955216873364531896370569805174550396380293678057008334012065307555731225662916937944268044009595277496842871179869361713975412165679011557/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "phase_boundary": "11674587083783545765099089641593106393171233408882566574800116036134070837442169216368623198272500889556042482651317487546259330534795761167426803522443524584184685509040215035678775412165679011557/10251674587083783541932395706568957820100918550014481204137874209795184823423613550338359137838030969851030503631420673644440324100172716788942629366130391517673328039340534913581508800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "12799999999999999980792703383072635286292252683394401362436925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/25629186467709458854830989266422394550252296375036203010344685524487962058559033875845897844595077424627576259078551684111100810250431791972356573415325978794183320098351337283953772000000000000000000", + "prime_interval_packing": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "alpha_positive": "14593233854729433808198016283832561418400870912502867609268668484930276693345556800958407657780243352313668390506485898656340355577974958403084145055041404002516695344173943431055975412165679011557/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "alpha_below_one": "12799999999999999993607296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "alpha_below_one_fourth": "3189055074608952923045675642018966757363136175967022508683817022076064980626533677679778822916604434726133363994312474615231260925725999038141487531860705945270398316949743217063165524587834320988443/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "81826496822092562171882315893595751752399902690116486852838304432755607303153150619225216237579156329475548128864912385926260879534056410653826445668927928937673680050034015948260296943169395903763640168091395592402062955133096133288079820489374838549015828583026644692484032808774556966449204475165761360629808686214538063881707838504539564249/82013396696670268335459165652551662560807348400115849633102993678361478587388908402706873102704247758808244029051365389155522592801381734311541034929043132141386624314724279308652070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "358866983483351341747717718113540406945159983950396044078204190673084545194703056156900337057440514200925643528703135014248295158315822434641030782333039504686200551635115880638897842073763502962965329/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "10428274416196871282531516897522607540915684699387944996351562842329855748924675580097931857187250784626831881239543084291418480285841495843978289147099063037268827644742874203737683/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000", + "coordinate_movement_above_kappa": "16618746334944244681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "100524444981737664220594239522925222583815265140722356094134786530196630857122927778411434900962035711748445411747629081591081943080838696272228644831689208468074940503875997068731/160182415423184117842693682915139965939076852343976268814654284528049762865993961724036861528719233903922351619240948025694380064065198699827228583845787367463645750614695858024711075000000000000000", + "bulk_exposure_above_kappa": "16618746334944244681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "51389712244938146691713398597152867139510107126308306207881645833028893418198612295976082551754159496230184726068155069192471829473692226786380596407635030805421471035003822024959249/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "scalar_work_above_kappa": "77018898712647605546544387863575261689762403501344509218226331357516855476757646171821980396349236920857760985146706753303572639724124018758737169822961009599604791133355159308913021/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "dimension_above_kappa": "6392703383072635283920527099591272644968442803763556788329513318265954481711804373368381287775906223941037792417612863599056678676935136298329336932010001145432459122511228716280384644742874203737683/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "50238871853096532822362240972278860750249/40000000000000000000000000000000000000000000000", + "cutoff_log2": "22821423299056" + }, + { + "gap": "11455431336719088296695724797447540819776987379259584929022443/8000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "17557374861114977035" + }, + { + "gap": "2612059193805271546589956973717711376230817511984641822790221508429225435153562001/1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13507545431071750093791293" + }, + { + "gap": "595599854024942868145937931074452609889067823826597234111825602004869306469267614758018107869138838307/320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10391860116659867549821478467986" + }, + { + "gap": "135808249275448458154076421829336450566886398980362416351705509454393700941063236129602722212894374934350058630123597688249/64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "7994846823599212441742710007613379908" + }, + { + "gap": "30966899079343869984489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6150734807365621625035986466966332327804006" + } + ], + "bit_template_sha256": "b87ed8c20819237f2daacdd1383a2776419551a62a7014eb9720af146a9dd9ec", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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.", + "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", + "manifest_sha256": "344d58298774e9e2bbfd0af6332507c3b3d2172bc70d88a79853e679bdaaa33f" +} diff --git a/research/e8-r740-idle-hosting/local-evidence/full314/RECEIPT.json b/research/e8-r740-idle-hosting/local-evidence/full314/RECEIPT.json new file mode 100644 index 0000000000..5750454614 --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full314/RECEIPT.json @@ -0,0 +1,35 @@ +{ + "status": "PASS_FULL_IDLE_AXIS_HOSTING_COMPOSITION", + "kappa": "124529313073387/100000000000000000", + "kappa_decimal": "0.001245293130733870", + "gain_over_pr434_percent": 9.901378851439578, + "manifest_sha256": "aac568b890323ced6d856c0477a4761b6f106a5051ee0811ffd1d97d7ca09ca6", + "checks": [ + { + "name": "parent-r740-full", + "seconds": 128.9, + "log_sha256": "b6b21746622747ea37b7423dd7600953185f3da7c5cca1019526ab4d9cfb06f1" + }, + { + "name": "bit-hosting", + "seconds": 0.4, + "log_sha256": "0b2dd019350260407d9d99fe7be94f02ff031997fbf6a4976229b27c6cd7d788" + }, + { + "name": "complex-hosting", + "seconds": 0.4, + "log_sha256": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd" + }, + { + "name": "independent-audit", + "seconds": 2.0, + "log_sha256": "e55ea84119d6b17d16be29a67e8158e357838aec1a3c2d17aa966d8843afe345" + }, + { + "name": "exact-assembly", + "seconds": 0.2, + "log_sha256": "1d2c62b500f91f48ada95c0b4c811169705b762098c81f7458dbc8194652b8e9" + } + ], + "python": "3.14.8" +} diff --git a/research/e8-r740-idle-hosting/local-evidence/full314/RESULT.json b/research/e8-r740-idle-hosting/local-evidence/full314/RESULT.json new file mode 100644 index 0000000000..2613e82a26 --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full314/RESULT.json @@ -0,0 +1,116 @@ +{ + "status": "PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY", + "kappa": "124529313073387/100000000000000000", + "kappa_decimal": "0.001245293130733870", + "bit_lower": "249369163853537814231/200000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "bit", + "gain_over_pr434_percent": 9.901378851439578, + "bit": { + "live": 9376, + "physical": 9385, + "maxchild": 8, + "rank_mass": 597568, + "hosted_residuals": 39712, + "prefix_bits": 123, + "charged_prefix_bits": 128, + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 320, + "row_coefficient": 18355 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "160994841886171354580274911366145532969229267939587198707853200424307949633800426071501554290773399554138981060821463706191785706225360964099272884388120768133353/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29982546840970881/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "160994841886171344678297106451153345469229267939587198707853200424307949633800426071501554290773399554138981060821463706191785706225360964099272884388120768133353/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "4870491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "80497420943085682080131516254397505654339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "4870491481514411383281379581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "3901379508518485588616718620418711893599404339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "160994841886171364321257874394966365888954356573441665738623932484720750925947225647193604656972973482637426770048064152052804645403897257907487178162759804034080115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "9740982963028820832919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "80497420943085682080131516254397505654339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "4870491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "3906249999999999996093750000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "epsilon_below_one": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "guard_width": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "K_geometry": "2934557991481514411383281379581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353000000000000000000", + "K_dominates_log": "4870491481514411378410888099773695017314280696108245533019642390331081290275650319661123948597460738905874891271948941406611024447346115523099061056322517355890447120356820188100756615611879231866647/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353000000000000000000", + "record_suffix": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "phase_local": "38963931852115310592630545168790440798046402637882709068326761064423113857512321231381024156016356822966899337594487615313912641901307598092094105904541621416118621811073665565034227615611879231866647/31288963931852115283253751036650304851204765282219170815468922421341819465791127623899108457379907309810355456510082901341608344705661670265793137194112250404640260771075104966145066824000000000000000000", + "phase_boundary": "7792786370423058989629715848546559834234176862546056693188823990967541224610222112094258252090508974682534129528166542027236877371971385457584350614741297703910004950989692648980768415611879231866647/6257792786370423056650750207330060970240953056443834163093784484268363893158225524779821691475981461962071091302016580268321668941132334053158627438822450080928052154215020993229013364800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "7812499999999999988276379508518485589593281120418711893599404339722603648066384697332272566776109047012611442827511586273705567936239637332298956911792291216775857850735968699419967403615611879231866647/15644481965926057641626875518325152425602382641109585407734461210670909732895563811949554228689953654905177728255041450670804172352830835132896568597056125202320130385537552483072533412000000000000000000", + "prime_interval_packing": "4870491481514414312968879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353", + "alpha_positive": "9740982963028824714817267681061802394472440973504597466634945058058514514166603307049681121085874465200306955032311609107654112655054898747241210320353817935923043504744940956234109615611879231866647/7822240982963028820813437759162576212801191320554792703867230605335454866447781905974777114344976827452588864127520725335402086176415417566448284298528062601160065192768776241536266706000000000000000000", + "alpha_below_one": "7812499999999999996098620491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353/7822240982963028820813437759162576212801191320554792703867230605335454866447781905974777114344976827452588864127520725335402086176415417566448284298528062601160065192768776241536266706000000000000000000", + "alpha_below_one_fourth": "1945819262777728380488542172109582250805825389165193578500172706275805202097778873186644597465158332397946909076847869724742867431448799492864829864311661832354093254687449119427832566884388120768133353/7822240982963028820813437759162576212801191320554792703867230605335454866447781905974777114344976827452588864127520725335402086176415417566448284298528062601160065192768776241536266706000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "30479479966926125629230997134694654792599351896850353277226184762136065350003412002927242348797185047194342437771431457140457774613420994778358682893608035881659576476117166475866830769261641860723199598957094614729740364581226259181911233514990188727043572034888783040961088293046109219446265804420207390756698760815036617012717152027961567991022609/30555628839699331331302491246728813331254653595917158999481369552091620572061648070213973102910065732236675250498127833341414399126622724868938610541125244535781504659253032193501041820312500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "219061711454816922309013369767646982040858278896497230842953166351566744782129866899196049958710931337445009323598128451911750053836574450129448226817521129586794512616392933630900632381153164362304400059/31288963931852115283253751036650304851204765282219170815468922421341819465791127623899108457379907309810355456510082901341608344705661670265793137194112250404640260771075104966145066824000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "690060985307433905226098596957110089122505753645445891931641594270034419237193204683922430583497279447124601468900518397497220947455066466664623492212637791088057857530239712508623389/391112049148151441040671887958128810640059566027739635193361530266772743322389095298738855717248841372629443206376036266770104308820770878322414214926403130058003259638438812076813335300000000000000000", + "coordinate_movement_above_kappa": "12130379170461457919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "2989489361592824641854267089989812784824461876177062567382800640032616759148041093851835748662484380744951582625244821307271166386342955883422092772862346610300545978918009004318100537/3911120491481514410406718879581288106400595660277396351933615302667727433223890952987388557172488413726294432063760362667701043088207708783224142149264031300580032596384388120768133353000000000000000000", + "bulk_exposure_above_kappa": "12130379170461457919725088633854467030770732060412801292146799575692050366199573928498445709226600445861018939178536293808214293774639035900727115611879231866647/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "7129855273437428073210858671732473319559496398049737918972650205652823274571200321955370332163468057427699191438647931692254492071073354683409833726138173356828893124099447279369840871/6257792786370423056650750207330060970240953056443834163093784484268363893158225524779821691475981461962071091302016580268321668941132334053158627438822450080928052154215020993229013364800000000000000000", + "scalar_work_above_kappa": "51293758333113198007681168876987519023399864631358275002597712238935026105751565421726405889507293942043673685448281109132076632708197608549945737227746991986464596006034788879921737767/31288963931852115283253751036650304851204765282219170815468922421341819465791127623899108457379907309810355456510082901341608344705661670265793137194112250404640260771075104966145066824000000000000000000", + "dimension_above_kappa": "390137950851848558868139097349305094586039030929370453929144223378673148609252498971295563519944363311292987377121243180354497160079747519174806732528663336606620232574198979011244522230239712508623389/391112049148151441040671887958128810640059566027739635193361530266772743322389095298738855717248841372629443206376036266770104308820770878322414214926403130058003259638438812076813335300000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "376667732875215341121174631116822818722929/250000000000000000000000000000000000000000000000", + "cutoff_log2": "15858630557976" + }, + { + "gap": "234823293994250466174322372814668165026784914545691992246145033/125000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10200939576290109046" + }, + { + "gap": "146394221191699316621449174804382057630084307698160993149780953280106680510470339041/62500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6561674279421831238677946" + }, + { + "gap": "91265511328909811763865161183548097235746240163451057576061935206677185325280577424330679604276376561657/31250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4220745454595125991404220610916" + }, + { + "gap": "56897010621889556290941511599987042000960071173944906872621560569584671773082694860939986931588217989892970845088849270571089/15625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2714961370203082164321471435033117471" + }, + { + "gap": "35470899911366145532969229267939587198707853200424307949633800426071501554290773399554138981060821463706191785706225360964099272884388120768133353/7812500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1746377582109381257242684594400020974931554" + } + ], + "bit_template_sha256": "c256c1c11027d32d5d800dd8dc3c0c50189ab71157c6c06301bb4283ff23bab1", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f" +} diff --git a/research/e8-r740-idle-hosting/local-evidence/full314/bit-hosting.log b/research/e8-r740-idle-hosting/local-evidence/full314/bit-hosting.log new file mode 100644 index 0000000000..ce65a77978 --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full314/bit-hosting.log @@ -0,0 +1 @@ +{"live": 9376, "maxchild": 8, "hosted_residuals": 39712, "banks_per_stage_hosted": {"0": 628, "1": 478, "2": 0, "3": 0, "4": 56, "5": 56, "6": 0, "7": 0, "8": 478}, "rank_mass": 597568} diff --git a/research/e8-r740-idle-hosting/local-evidence/full314/complex-hosting.log b/research/e8-r740-idle-hosting/local-evidence/full314/complex-hosting.log new file mode 100644 index 0000000000..b8925ed69d --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full314/complex-hosting.log @@ -0,0 +1 @@ +{"live": 8400, "maxchild": 8, "hosted_residuals": 34560, "banks_per_stage": [0, 0, 0, 160, 0, 120, 0, 0, 440], "deficit": 2496} diff --git a/research/e8-r740-idle-hosting/local-evidence/full314/exact-assembly.log b/research/e8-r740-idle-hosting/local-evidence/full314/exact-assembly.log new file mode 100644 index 0000000000..c09992815d --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full314/exact-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY 0.001245293130733870 binding bit gain over #434 9.9014% diff --git a/research/e8-r740-idle-hosting/local-evidence/full314/independent-audit.log b/research/e8-r740-idle-hosting/local-evidence/full314/independent-audit.log new file mode 100644 index 0000000000..868a926873 --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full314/independent-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", "bit_template_sha256": "c256c1c11027d32d5d800dd8dc3c0c50189ab71157c6c06301bb4283ff23bab1", "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", "bit_live": 9376, "complex_live": 8400, "bit_hosted_residuals": 39712, "complex_hosted_residuals": 34560, "bit_maxchild": 8, "complex_maxchild": 8, "mutations_rejected": ["bit: hosted residual outside its window", "bit: overlapping hosted coordinates", "bit: understated live stock", "bit: hosted owner on the active pair", "bit: missing remainder child", "complex: hosted residual outside its window", "complex: remainder child understated", "complex: dropped bank", "complex: duplicated hosted residual"]} diff --git a/research/e8-r740-idle-hosting/local-evidence/full314/parent-r740-full.log b/research/e8-r740-idle-hosting/local-evidence/full314/parent-r740-full.log new file mode 100644 index 0000000000..ee23b611cb --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full314/parent-r740-full.log @@ -0,0 +1,16 @@ +PASS hamming_packets +PASS complex_construct +PASS complex_audit +PASS complex_emit +PASS complex_phases +PASS bit_construct +PASS bit_kernel +PASS bit_export +PASS bit_global +PASS bit_audit +PASS bit_price +PASS complex_integrate +PASS complex_replay +PASS combined +PASS independent_audit +PASS conditional kappa 0.001138798055343319 diff --git a/research/e8-r740-idle-hosting/local-evidence/full314/parent/RESULT.json b/research/e8-r740-idle-hosting/local-evidence/full314/parent/RESULT.json new file mode 100644 index 0000000000..655468f65f --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/full314/parent/RESULT.json @@ -0,0 +1,126 @@ +{ + "status": "PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY", + "kappa": "1138798055343319/1000000000000000000", + "kappa_decimal": "0.001138798055343319", + "bit_lower": "17814006170324008149/15625000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.663365470849168, + "bit_invoice": { + "prefix_bits": 123, + "charged_prefix_bits": 128, + "extra_helper_route_factor_bound": 144, + "selector_charge": 2375347104, + "full_counted_coefficient": "8271410009661736653226855278395470361", + "two_level_coefficient": "7323242093316479963924177312150069573045566553609912891292783054664675728289084971684", + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14187, + "physical": 14196 + }, + "strict_outer_constraints": { + "bit_positive": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "561793975111583755318899079343869984489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "561793975111583740163871249502858784489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "7296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "280896987555791884675169479480856836925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "7296616927364715307747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "6392703383072635284692252683394401362436925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "561793975111583769912132934073297429170711561242364812146848396605205517119521114242518016217267837645828790697405933529381995454757936430882408462422461948391475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "280896987555791884675169479480856836925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "7296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "6399999999999999993600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "epsilon_below_one": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "guard_width": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "K_geometry": "4807296616927364715307747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000", + "K_dominates_log": "235374739592410170982280634781739427591186359788777903970880237514185872696357672241417629322931845013535600673179511963907670740968611784320670684630538885699570024398052336858483077811796097147/206686987642818216571217655374374149598808841734162927502779721971677113375476079643918531004799011488932066605472191000895974276213159612680294946897790151565994516922188203902853000000000000000000", + "record_suffix": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "phase_local": "58372935418917754454681915917424386796845433466807383126296955216873364531896370569805174550396380293678057008334012065307555731225662916937944268044009595277496842871179869361713975412165679011557/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "phase_boundary": "11674587083783545765099089641593106393171233408882566574800116036134070837442169216368623198272500889556042482651317487546259330534795761167426803522443524584184685509040215035678775412165679011557/10251674587083783541932395706568957820100918550014481204137874209795184823423613550338359137838030969851030503631420673644440324100172716788942629366130391517673328039340534913581508800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "12799999999999999980792703383072635286292252683394401362436925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/25629186467709458854830989266422394550252296375036203010344685524487962058559033875845897844595077424627576259078551684111100810250431791972356573415325978794183320098351337283953772000000000000000000", + "prime_interval_packing": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "alpha_positive": "14593233854729433808198016283832561418400870912502867609268668484930276693345556800958407657780243352313668390506485898656340355577974958403084145055041404002516695344173943431055975412165679011557/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "alpha_below_one": "12799999999999999993607296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "alpha_below_one_fourth": "3189055074608952923045675642018966757363136175967022508683817022076064980626533677679778822916604434726133363994312474615231260925725999038141487531860705945270398316949743217063165524587834320988443/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "81826496822092562171882315893595751752399902690116486852838304432755607303153150619225216237579156329475548128864912385926260879534056410653826445668927928937673680050034015948260296943169395903763640168091395592402062955133096133288079820489374838549015828583026644692484032808774556966449204475165761360629808686214538063881707838504539564249/82013396696670268335459165652551662560807348400115849633102993678361478587388908402706873102704247758808244029051365389155522592801381734311541034929043132141386624314724279308652070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "358866983483351341747717718113540406945159983950396044078204190673084545194703056156900337057440514200925643528703135014248295158315822434641030782333039504686200551635115880638897842073763502962965329/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "10428274416196871282531516897522607540915684699387944996351562842329855748924675580097931857187250784626831881239543084291418480285841495843978289147099063037268827644742874203737683/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000", + "coordinate_movement_above_kappa": "16618746334944244681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "100524444981737664220594239522925222583815265140722356094134786530196630857122927778411434900962035711748445411747629081591081943080838696272228644831689208468074940503875997068731/160182415423184117842693682915139965939076852343976268814654284528049762865993961724036861528719233903922351619240948025694380064065198699827228583845787367463645750614695858024711075000000000000000", + "bulk_exposure_above_kappa": "16618746334944244681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "51389712244938146691713398597152867139510107126308306207881645833028893418198612295976082551754159496230184726068155069192471829473692226786380596407635030805421471035003822024959249/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "scalar_work_above_kappa": "77018898712647605546544387863575261689762403501344509218226331357516855476757646171821980396349236920857760985146706753303572639724124018758737169822961009599604791133355159308913021/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "dimension_above_kappa": "6392703383072635283920527099591272644968442803763556788329513318265954481711804373368381287775906223941037792417612863599056678676935136298329336932010001145432459122511228716280384644742874203737683/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "50238871853096532822362240972278860750249/40000000000000000000000000000000000000000000000", + "cutoff_log2": "22821423299056" + }, + { + "gap": "11455431336719088296695724797447540819776987379259584929022443/8000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "17557374861114977035" + }, + { + "gap": "2612059193805271546589956973717711376230817511984641822790221508429225435153562001/1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13507545431071750093791293" + }, + { + "gap": "595599854024942868145937931074452609889067823826597234111825602004869306469267614758018107869138838307/320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10391860116659867549821478467986" + }, + { + "gap": "135808249275448458154076421829336450566886398980362416351705509454393700941063236129602722212894374934350058630123597688249/64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "7994846823599212441742710007613379908" + }, + { + "gap": "30966899079343869984489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6150734807365621625035986466966332327804006" + } + ], + "bit_template_sha256": "b87ed8c20819237f2daacdd1383a2776419551a62a7014eb9720af146a9dd9ec", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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.", + "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", + "manifest_sha256": "344d58298774e9e2bbfd0af6332507c3b3d2172bc70d88a79853e679bdaaa33f" +} diff --git a/research/e8-r740-idle-hosting/local-evidence/hosting442-exact-cost.json b/research/e8-r740-idle-hosting/local-evidence/hosting442-exact-cost.json new file mode 100644 index 0000000000..fe39db44f5 --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/hosting442-exact-cost.json @@ -0,0 +1,8 @@ +{ + "status": "MILP_NOMINATION_REQUIRES_EXACT_REPLAY", + "reference_bit_lower": "249369163853537814231/200000000000000000000000", + "prior_score": 23476.37893908448, + "new_score": 23476.37893908448, + "same_patterns": true, + "same_stages": true +} diff --git a/research/e8-r740-idle-hosting/local-evidence/hosting442-flexbanks.json b/research/e8-r740-idle-hosting/local-evidence/hosting442-flexbanks.json new file mode 100644 index 0000000000..ef0d170aab --- /dev/null +++ b/research/e8-r740-idle-hosting/local-evidence/hosting442-flexbanks.json @@ -0,0 +1,8 @@ +{ + "status": "MILP_NOMINATION_REQUIRES_EXACT_REPLAY", + "reference_bit_lower": "249369163853537814231/200000000000000000000000", + "prior_score": 23476.37893908448, + "new_score": 23476.37893908448, + "same_patterns": true, + "same_stages": false +} diff --git a/research/e8-r740-idle-hosting/verify.py b/research/e8-r740-idle-hosting/verify.py new file mode 100644 index 0000000000..fa399bf90c --- /dev/null +++ b/research/e8-r740-idle-hosting/verify.py @@ -0,0 +1,38 @@ +"""Fresh replay: #434 in full, then idle-axis hosting of both suppliers, independent audit and exact assembly. +usage: python -B research/idle-axis-hosting/verify.py /absolute/new/output (Python 3.11+, standard library only)""" +from pathlib import Path +import gzip, hashlib, json, os, subprocess, sys, time +assert __debug__ +ROOT = Path(__file__).resolve().parent; PARENT = ROOT.parent / 'e8-joint-frame-retiming' +out = Path(sys.argv[1]).resolve(); assert not out.exists() and not out.is_relative_to(ROOT.parent) +read = lambda p: json.loads(Path(p).read_text()); sha = lambda p: hashlib.sha256(Path(p).read_bytes()).hexdigest() +def integrity(): + files = {p.relative_to(ROOT).as_posix(): sha(p) for p in ROOT.rglob('*') if p.is_file() and p.name != 'MANIFEST.json' and '__pycache__' not in p.parts} + assert files == read(ROOT / 'MANIFEST.json')['files'], 'manifest mismatch' + assert sha(PARENT / 'MANIFEST.json') == read(ROOT / 'MANIFEST.json')['parent_manifest_sha256'], 'parent package changed' +integrity(); out.mkdir(parents=True) +env = dict(os.environ, PYTHONDONTWRITEBYTECODE='1', PYTHONINTMAXSTRDIGITS='0'); env.pop('PYTHONOPTIMIZE', None); steps = [] +def run(name, file, *args, cwd=None): + t = time.monotonic(); log = out / (name + '.log'); print('RUN', name, flush=True) + with log.open('w') as f: q = subprocess.run([sys.executable, '-B', str(file), *map(str, args)], cwd=cwd, env=env, stdout=f, stderr=subprocess.STDOUT) + if q.returncode: raise RuntimeError((name, q.returncode, log.read_text()[-3000:])) + steps.append(dict(name=name, seconds=round(time.monotonic() - t, 1), log_sha256=sha(log))); print('PASS', name, flush=True) +try: + run('parent-r740-full', PARENT / 'verify.py', out / 'parent', '--replay-phases') + changed = out / 'parent' + run('bit-hosting', ROOT / 'bit_hosted.py', 'bit426-source-centres/global', 'bit426-source-centres', out / 'bit', cwd=changed) + run('complex-hosting', ROOT / 'complex_hosted.py', 'split-centres', out / 'complex', cwd=changed) + run('independent-audit', ROOT / 'audit.py', changed, out / 'bit', out / 'complex', out / 'AUDIT.json') + run('exact-assembly', ROOT / 'assemble.py', changed, out / 'bit', out / 'complex', out / 'AUDIT.json', out / 'RESULT.json') + actual = read(out / 'RESULT.json'); expected = read(ROOT / 'EXPECTED.json') + for k, v in expected.items(): assert actual[k] == v, (k, actual[k], v) + for side, d in (('bit', 'bit'), ('complex', 'complex')): + h = hashlib.sha256(gzip.decompress((out / d / 'GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest() + assert h == expected[side + '_template_sha256'], (side, h) + integrity() + receipt = dict(status='PASS_FULL_IDLE_AXIS_HOSTING_COMPOSITION', kappa=actual['kappa'], kappa_decimal=actual['kappa_decimal'], + gain_over_pr434_percent=actual['gain_over_pr434_percent'], manifest_sha256=sha(ROOT / 'MANIFEST.json'), checks=steps, + python=sys.version.split()[0]) + (out / 'RECEIPT.json').write_text(json.dumps(receipt, indent=2) + '\n'); print(json.dumps(receipt, indent=2)) +except BaseException as e: + (out / 'FAILURE.json').write_text(json.dumps(dict(error=repr(e), completed=steps), indent=2) + '\n'); raise diff --git a/research/e8-rank138-idle-hosting/AUDIT.json b/research/e8-rank138-idle-hosting/AUDIT.json new file mode 100644 index 0000000000..0519d52555 --- /dev/null +++ b/research/e8-rank138-idle-hosting/AUDIT.json @@ -0,0 +1,41 @@ +{ + "status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", + "bit_template_sha256": "50d9302688535aee7196ddba537c99620195b39ec096b3cfde8c2d6b2e691ef7", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", + "bit_profile": { + "1": 728640, + "2": 305600, + "3": 80832, + "4": 111584, + "5": 33984, + "6": 8576, + "7": 16704, + "8": 2592 + }, + "complex_profile": { + "1": 138384, + "2": 56448, + "3": 15936, + "4": 16128, + "5": 32064, + "7": 3840, + "8": 7488 + }, + "bit_live": 37464, + "complex_live": 8400, + "bit_hosted_residuals": 159168, + "complex_hosted_residuals": 34560, + "bit_maxchild": 8, + "complex_maxchild": 8, + "mutations_rejected": [ + "bit: hosted residual outside its window", + "bit: overlapping hosted coordinates", + "bit: understated live stock", + "bit: hosted owner on the active pair", + "bit: missing remainder child", + "complex: hosted residual outside its window", + "complex: remainder child understated", + "complex: dropped bank", + "complex: duplicated hosted residual" + ] +} diff --git a/research/e8-rank138-idle-hosting/CERTIFICATE.json b/research/e8-rank138-idle-hosting/CERTIFICATE.json new file mode 100644 index 0000000000..79f353344d --- /dev/null +++ b/research/e8-rank138-idle-hosting/CERTIFICATE.json @@ -0,0 +1,116 @@ +{ + "status": "PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY", + "kappa": "623036752743971/500000000000000000", + "kappa_decimal": "0.001246073505487942", + "bit_lower": "1247628141860215921989/1000000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "bit", + "gain_over_pr434_percent": 9.97024959309606, + "bit": { + "live": 37464, + "physical": 37473, + "maxchild": 8, + "rank_mass": 2387712, + "hosted_residuals": 159168, + "prefix_bits": 123, + "charged_prefix_bits": 128, + "coefficient_bits": 123, + "two_level_coefficient_bits": 286, + "charged_two_level_coefficient_bits": 320, + "row_coefficient": 18355 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "1210023020562932285909733185753514651895273936640480712747372223547045381556825955966871607749148219279715333863104949343240788001105438628919762573664921739313/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29982546840970881/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "1210023020562932208550531584855138187051523936640480712747372223547045381556825955966871607749148219279715333863104949343240788001105438628919762573664921739313/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "38074589290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "605011510281466180424444372763013272459778782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "38074589290167729642712361076787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "30479503535709832270357287638923212201504881653782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "1210023020562932362058911766088958830829290750886966060852098286906564668809453732419826226192322263312843726113956730063525454138000489285678974572559483110393237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "605011510281466180424444372763013272459778782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "38074589290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "30517578124999999969482421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "epsilon_below_one": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "guard_width": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "K_geometry": "22926258183040167729642712361076787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313000000000000000000", + "K_dominates_log": "1228212557747346116278637799568389317819547907762757283883975535723667216982173271635375856635912664540754979455978835428421967711127628561957611833926475733241366318044901418711281852462421879377/985666216590005410387526381607315735435326398265078492719210373800802159936192547072437535792828459736978290772284438572406712739995566200968670351829492676701911718147537578120623000000000000000000", + "record_suffix": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "phase_local": "304596714321341989691514924324134665947628939912678395869054356381502389880230086139641918599489055525052501948858514110537745578082822095622152313851631592045325193875046396155240737426335078260687/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "phase_boundary": "60919342864268373493780813432692755578871524121105440377716194302353858539628746968034817302322643708559612727625901345045937962962487823437954510880284534386040313403590897023637537426335078260687/48889044342864268355221308527722860477592189353947893238872834540519787132835150334792901775324291602954123222305308153191372951903780083568046049450742836764414821220117863874782900800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "61035156249999999908409191035709832277986682170173212201504881653782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/122222610857160670888053271319307151193980473384869733097182086351299467832087875836982254438310729007385308055763270382978432379759450208920115123626857091911037053050294659686957252000000000000000000", + "prime_interval_packing": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "alpha_positive": "76149178580335474506139195363407874976918862608078750095924829432300641748416330666260261133395544447090418303952939642889175938907508715449466873565993725489745618433056865719362737426335078260687/61111305428580335444026635659653575596990236692434866548591043175649733916043937918491127219155364503692654027881635191489216189879725104460057561813428545955518526525147329843478626000000000000000000", + "alpha_below_one": "61035156249999999969520496464290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/61111305428580335444026635659653575596990236692434866548591043175649733916043937918491127219155364503692654027881635191489216189879725104460057561813428545955518526525147329843478626000000000000000000", + "alpha_below_one_fourth": "15201677178564748386500519719549986024270640310500637887051835964480132837262568148956521543655445581476073088666455858229414871531023767399564923579791142763389886012853775595150293762573664921739313/61111305428580335444026635659653575596990236692434866548591043175649733916043937918491127219155364503692654027881635191489216189879725104460057561813428545955518526525147329843478626000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "1860318361375777835971716568804910774470137061740509136531467936075974298045185231681041481622566244818294714959773011087729104800121343747530183249547614769575520090772329979864591831490202963442824158881097379776855533337218759204748132801963088395741865976055068446531008216776203112366217673904999457051939926327280789302456684109025129711969/1864969037737436994751789418324388903716743063123622636370576268788138852418333066360202857029887832754292420284473730209021490169669345228883592584638322325302689408116068415633502990722656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "1711421148714570734544659924251784922269727527647396092950398736659443785136292578155190671887037570995901619720945372883193899117973656129955666262849301127266679191524857373924593821787720994765217939/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "26676886390601640958575817478941199504343613257003698277665410697642142066198541569477104007541924888402338313813423324686146058481989370871091578007284269104667359512172277305568077/15277826357145083861006658914913393899247559173108716637147760793912433479010984479622781804788841125923163506970408797872304047469931276115014390453357136488879631631286832460869656500000000000000000", + "coordinate_movement_above_kappa": "94887473893671717996516814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "22798120066913114195138317128055611210192108167789963281035299807459417174375114179708644405506167524958349613686029053627684022024116189512154375107854265231575455761770889689396841/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313000000000000000000", + "bulk_exposure_above_kappa": "94887473893671717996516814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "274051918678175416727146490513925253077022220380972006071168963223149938269066820315405846072782386955205777951310685216255296461012517172787321343582976940785881435881888112280392667/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "scalar_work_above_kappa": "396274529535336087615199761833232404271002693765841739168351049574449406101154696152388100511093115962591086007073955599233728840771967381707436467209834032696918488932182771967349919/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "dimension_above_kappa": "15239751767854916135152649350688247059328258305832482867195852463091264798654426218019360261409700443553940500571516090530034266343492048571131668028632234382211946375997436643797703012172277305568077/15277826357145083861006658914913393899247559173108716637147760793912433479010984479622781804788841125923163506970408797872304047469931276115014390453357136488879631631286832460869656500000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "94287020424277834163680254991104056367009/62500000000000000000000000000000000000000000000", + "cutoff_log2": "15818260083840" + }, + { + "gap": "29408785023369495427727557576784775208283541746515592160223473/15625000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10162215197593843554" + }, + { + "gap": "9172806953268257565007102287437866302700738375134023268194695915019528111703606081/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6528569967547151436395053" + }, + { + "gap": "2861063023687136162665647272462448282050413362534253607940694932308513294882957767367031894837944602257/976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4194186502884772884117694502077" + }, + { + "gap": "892385685996938155756805007131692738674820820957983219861627580057577912447454106275234926512117420246977622028593300181729/244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2694495197022448340895066350774684894" + }, + { + "gap": "278341373810753514651895273936640480712747372223547045381556825955966871607749148219279715333863104949343240788001105438628919762573664921739313/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1731039943451104430442680727076306832163430" + } + ], + "bit_template_sha256": "50d9302688535aee7196ddba537c99620195b39ec096b3cfde8c2d6b2e691ef7", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f" +} diff --git a/research/e8-rank138-idle-hosting/EXPECTED.json b/research/e8-rank138-idle-hosting/EXPECTED.json new file mode 100644 index 0000000000..2906256d6b --- /dev/null +++ b/research/e8-rank138-idle-hosting/EXPECTED.json @@ -0,0 +1,33 @@ +{ + "kappa": "623036752743971/500000000000000000", + "kappa_decimal": "0.001246073505487942", + "bit_lower": "1247628141860215921989/1000000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "bit", + "bit": { + "live": 37464, + "physical": 37473, + "maxchild": 8, + "rank_mass": 2387712, + "hosted_residuals": 159168, + "prefix_bits": 123, + "charged_prefix_bits": 128, + "coefficient_bits": 123, + "two_level_coefficient_bits": 286, + "charged_two_level_coefficient_bits": 320, + "row_coefficient": 18355 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "bit_template_sha256": "50d9302688535aee7196ddba537c99620195b39ec096b3cfde8c2d6b2e691ef7", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f" +} diff --git a/research/e8-rank138-idle-hosting/INHERITED-HOSTING-PROOF.md b/research/e8-rank138-idle-hosting/INHERITED-HOSTING-PROOF.md new file mode 100644 index 0000000000..ff3eba6770 --- /dev/null +++ b/research/e8-rank138-idle-hosting/INHERITED-HOSTING-PROOF.md @@ -0,0 +1,109 @@ +# Idle-axis hosting: helper residuals on pending idle coordinates + +This package changes only the global nine-stage templates of #434's two suppliers. Both local words are unchanged: + +- the complex word is #433's split-centre word, R = 560, m = 73; +- the bit word is #434's early-reset kernel word, R = 747, m = 64. + +So are their local programs, scalar replays, data routes, bridges, terminal exchange and cover correction. What +changes is where whole dirty-helper residuals live. Many of them move from bank streams onto coordinates of *idle* +data families that would otherwise be advanced later by an idle child. + +## 1. The two inherited facts used + +**(a) Dirty invocations act on a helper stream as its residual.** The complete dirty local invocation is block +diagonal on helpers at its endpoint and admits arbitrary correlated helper values (#425/#433, #386/#434). On the +physical stream that owns a helper residual of width w, it acts as an exact coordinate factor on w coordinates: + +- complex: P_g C_block P_g⁻¹ (PR425-COMPLEX §5, INHERITED-COMPLEX-GEOMETRY); +- bit: D_P with P the width-w coordinate projector (PR386-BIT-GEOMETRY; mixed widths 8 − entrance rank, #434). + +This holds whatever the stream held before. Banks rely on exactly this: eight sequential residuals and a pad tile a +bank stream. + +**(b) An idle child is a product of coordinate factors.** Advancing a data pair from level a to level b applies, on +every physical data stream (F, g) of that pair, the commuting product of coordinate factors on its pending set S: + +- complex: C over S, in the basis U_q ⊕ I used by the inherited idle factorisation; +- bit: D_{P_V−P_U}, an orthogonal coordinate projector difference. + +Factors on disjoint coordinate sets commute and multiply: + +- complex: C_{S'}·C_{S∖S'} = C_S; +- bit: D_{P'}·D_{P−P'} = D_P for P' ≤ P (the parent's identity D_I·D_P = D_{I−P}). + +## 2. Hosting lemma + +Fix a data family F (replica r, pair j, side, port) and an idle child Γ that advances pair j at recipe position τ. +Let λ be the position of the last local invocation or bridge that names pair j before τ; idle children do not +count as touches, since they act on other coordinates or on the other member. Let ι be any local invocation with +λ < ι < τ. Then: + +1. ι is an invocation on another pair, and nothing touches F between ι and τ. +2. A helper residual of ι, of width w, may be owned by stream (F, d·σ⁻¹) instead of a bank slot. Here d is the + invocation's cover class, and σ is a coordinate isometry carrying the local residual block onto a set S' ⊂ S of + w pending coordinates. When S' meets the local block of a level −1 advance, σ is composed with U_q ⊕ I. +3. Γ is replaced by Γ' acting on S ∖ ⋃S' over all hosted residuals of F, which have pairwise disjoint S'. + +The complete program's operator is unchanged: + +- By (a), ι applies exactly the factor on S' to (F, d·σ⁻¹), for any prior contents. +- Nothing else acts on F between ι and τ, so this factor may be moved to τ. +- By (b), the moved factors times Γ' equal Γ. + +Distinct slots of one invocation have distinct σ, so distinct physical classes for every d. They are also disjoint +from the invocation's own data owners, because pair j is not active, and from bank owners, because the families +differ. Residuals of different invocations on F occupy disjoint coordinates. They are sequential, exactly as the +parent's banks are co-owned sequentially by different cover classes. + +Two further points: + +- **Phases.** The stored Z₄ translations after Γ remain valid, because Γ'·∏(hosted factors) = Γ as exact operators. + The final X_δ(g) correction still applies to every live family; hosting changes no data endpoint. +- **Reflection.** The inverse-transpose program reverses chronology and reflects each factor. The window condition + (no touch strictly between ι and τ) is symmetric, so hosting commutes with reflection. + +## 3. What is checked here + +- `bit_hosted.py` and `complex_hosted.py` read #434's freshly regenerated templates and compute windows from each + recipe. They apply a frozen integer-programme selection (`SELECTION.json`; `--discover` recomputes it with scipy) + and emit new owners, remainder children and banks. + - Bit: unhosted residuals keep an exact width-64 tiling with no padding. + - Complex: eight per bank plus one paid pad; a final partial bank pays the larger pad. +- `audit.py` shares no code with the generators. It re-derives every window from the template schedule. For every + replica and invocation it checks that: + - each helper has exactly one owner; + - each hosted slot is inside its child's pending set, disjoint from other slots, outside the active pair, and in + window; + - every remainder child is exact, and the bank tiling is exact. + + It also recomputes the paid profile and the rank deficit 2496, and rejects nine mutations. +- `assemble.py` prices both suppliers with the two inherited rational moment engines and recomputes both finite + invoices with the hosted stock. Route charging is conservative: two extra route factors per helper selector, and + the parent's larger complex per-vertex bill is kept. It then runs #434's strict outer assembly: six bootstrap + levels and 47 inequalities. The next grid point and the zero-η, zero-β and unit-β controls are rejected. + +## 4. Result + +| | live stock | max child | hosted residuals | certified saving | +| --- | ---: | ---: | ---: | --- | +| bit | 14,259 → 9,457 | 42 → 8 | 39,568 of 53,784 | c = 1239085165241180038597/10²⁴ | +| complex | 12,720 → 8,400 | 48 → 8 | 34,560 of 40,320 | b = 1267453159029119/10¹⁸ | + +κ = 618775866623647/(5·10¹⁷) ≈ 1.237551733247294·10⁻³, bit-bound, +9.218% over #434. + +## 5. Scope + +This is a written finite extension of the inherited correlated dirty-bank and compressed-window interfaces. The +streams that own residuals now include data streams during idle windows. It is the principal new review point. + +All other interfaces remain inherited assumptions: the all-size compiler, restored-work, tape/common-grid, precision +and analytic interfaces. + +No Lean proof and no unconditional integer-multiplication theorem is claimed. The global operator identity is argued +from (a) and (b) and checked combinatorially. It is not replayed numerically on the 2⁷³- and 2⁶⁴-point address +spaces; neither parent does that either. + +## R740 composition and additional scope + +The above argument is inherited from PR442 and remains an explicit additional hosting assumption. Here the bit local word has R740 and matches PR441 after two joint B-frame sweeps. The assignment is regenerated for its actual residual-width census, rather than transferred by helper index. Parent residual isometries remain checked, and the finite selector invoice retains the parent extra-helper-route bound of 144 in addition to the two hosting factors. All host windows, owners, disjoint intervals, remainders and bank coverage are independently rechecked. Original PR442 numerical values above describe its historical R747 construction; EXPECTED.json and CERTIFICATE.json describe this R740 composition. diff --git a/research/e8-rank138-idle-hosting/LICENSE b/research/e8-rank138-idle-hosting/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-rank138-idle-hosting/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/e8-rank138-idle-hosting/MANIFEST.json b/research/e8-rank138-idle-hosting/MANIFEST.json new file mode 100644 index 0000000000..a8cc841d35 --- /dev/null +++ b/research/e8-rank138-idle-hosting/MANIFEST.json @@ -0,0 +1,200 @@ +{ + "parent_manifest_sha256": "344d58298774e9e2bbfd0af6332507c3b3d2172bc70d88a79853e679bdaaa33f", + "files": { + "AUDIT.json": "c8f4f258773e3e03594318ddc35e34ac53917f0b73eca6eb47eab21062fd16ce", + "CERTIFICATE.json": "3e83186e02e98ddc85b6092924c5e37f95b023f5319b130a7285db7e83e26bde", + "EXPECTED.json": "ebbebef5de7bb36085bbb80f547d1c05096ebe2364f553e49567152dfcca1587", + "INHERITED-HOSTING-PROOF.md": "4f06d1dead63c62b076f0a6c1521c68c0b0544aa2c5df5e74a408fdfc34f91c4", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "55c72da491d6d87643708ca7bc65f0193189a920ab43147c0941232db4742355", + "PROOF.md": "a1c23257c8bee1e47419a5a178ce7b3082e77c8e4036ee4ad7f4f0796bc84558", + "README.md": "0d633ec813e4bababea7806c3baebc51131a6fdd8e13e5f80b4af2d5de7b54be", + "SOURCE442-PINS.json": "489716866ad1d368a5f29a3d37e8d76a40474f5709e4ad593f18f9cd89dc9096", + "SOURCE443-PINS.json": "de26d780aff8967d0de75c52629f13621c6b8d4d8c22ad8d9ed6b072f760ebf4", + "VALIDATION.json": "4c36da41ed1baf8ad4170e0ecd7a6d6f3f723a562fdc08b7548517bacc786db5", + "code/SELECTION.json": "047e24485fd82eee38f309e203c426bf93f85f7c1408b5e844c66812e1c6e3f0", + "code/assemble.py": "38a5c2811199503db6f24e74669e5d18d4fbd1a2adb3a3759930fa0f93448fa5", + "code/audit.py": "6ecad15a71136c1b88b71f3efb634683457a5f36e2783865ec7d78cc5ed426cd", + "code/bit_audit.py": "4ca13914a50ab6976d5713321651fefb5e91ba37dfec9378048826cdb3f9dc29", + "code/bit_global.py": "4c59df9c4b9b41ae7bf0155449f1cc0a575edacd2e6184278500490b78b97602", + "code/bit_hosted.py": "775460abaf7fb2cf8a4c9192c570fe4cba13aad71f4a36a634972f83f33e2378", + "code/complex_hosted.py": "829c5c4f4bdfccedadd31505f1f0a394f7a208d1446b7bbf9cc92d3aa1530c0c", + "code/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "code/residual_routes.py": "402924994a880d1ee45e42be2e7a51bd0281822046e474f5f5cc0adf885b52c7", + "local-evidence/TESTED-MANIFEST.json": "cf742207a00951e991a3ed667ee015449dedcd3fc41f3f857f36ed60a77fa7a8", + "local-evidence/full311/AUDIT.json": "c8f4f258773e3e03594318ddc35e34ac53917f0b73eca6eb47eab21062fd16ce", + "local-evidence/full311/RECEIPT.json": "5f0a5be885f49ae44c66d5bc8cda735e26d3e560236aa9b1f83e65d423d03fa4", + "local-evidence/full311/RESULT.json": "3e83186e02e98ddc85b6092924c5e37f95b023f5319b130a7285db7e83e26bde", + "local-evidence/full311/bit-global-32.log": "84a8b999a5ae5257692cea40cdb315ae9dc8b6e309b3f54cbf3c494033d95c9e", + "local-evidence/full311/bit-global-audit.log": "0a7785ca29a6c66f234d7ff6016ee0aba1af7b484f78d6804035b1947300d5ce", + "local-evidence/full311/bit-hosting.log": "fd8b27814b47ded2df679e78a8e9854334589992652cca0292ab6fc57a559535", + "local-evidence/full311/complex-hosting.log": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd", + "local-evidence/full311/exact-assembly.log": "a7f1a4df38e65e43a3e8b3e8b0bf48f77b7b8e1c218ba590559dea28f5bf20bc", + "local-evidence/full311/export-records.log": "9dce550911b0cf793ee3b9d1b02d438a4cf3e7de21854908d90c4c0a17398428", + "local-evidence/full311/independent-hosting-audit.log": "119d2232617c758984b3d5267343ec2841e640cfc2bc882a673b7bb8880ebeff", + "local-evidence/full311/parent/RESULT.json": "244786938e4901842ce110a450bef6529627c67e3f931134149420c1c8de1568", + "local-evidence/full311/parent-full.log": "b6b21746622747ea37b7423dd7600953185f3da7c5cca1019526ab4d9cfb06f1", + "local-evidence/full311/rank138-rebuild.log": "023692adb1c2b7fea087b728940b3ae515f5a0bc3b6b633f0e7c803a83b9ef51", + "local-evidence/full314/AUDIT.json": "c8f4f258773e3e03594318ddc35e34ac53917f0b73eca6eb47eab21062fd16ce", + "local-evidence/full314/RECEIPT.json": "06ff6f978cf6b0c26e024bb593eb48bc2585b8378628a16b687f8ed882c5c85f", + "local-evidence/full314/RESULT.json": "3e83186e02e98ddc85b6092924c5e37f95b023f5319b130a7285db7e83e26bde", + "local-evidence/full314/bit-global-32.log": "80b69cf534526a05dbec64e4c500972436b6b1e33ca139b9a860d337843bb796", + "local-evidence/full314/bit-global-audit.log": "f6d16f9fa3a585590049dc39281fbd2f6a73e48e3a9f10f616ab8d8112099c9d", + "local-evidence/full314/bit-hosting.log": "fd8b27814b47ded2df679e78a8e9854334589992652cca0292ab6fc57a559535", + "local-evidence/full314/complex-hosting.log": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd", + "local-evidence/full314/exact-assembly.log": "a7f1a4df38e65e43a3e8b3e8b0bf48f77b7b8e1c218ba590559dea28f5bf20bc", + "local-evidence/full314/export-records.log": "9dce550911b0cf793ee3b9d1b02d438a4cf3e7de21854908d90c4c0a17398428", + "local-evidence/full314/independent-hosting-audit.log": "119d2232617c758984b3d5267343ec2841e640cfc2bc882a673b7bb8880ebeff", + "local-evidence/full314/parent/RESULT.json": "244786938e4901842ce110a450bef6529627c67e3f931134149420c1c8de1568", + "local-evidence/full314/parent-full.log": "b6b21746622747ea37b7423dd7600953185f3da7c5cca1019526ab4d9cfb06f1", + "local-evidence/full314/rank138-rebuild.log": "023692adb1c2b7fea087b728940b3ae515f5a0bc3b6b633f0e7c803a83b9ef51", + "research/ALL-COORDINATE-AUGMENTED138.json": "4254a7d3eb266a6562c28906c43e07a8e76fc6f410eff6cffd3134fd4ea73a72", + "research/BASIS-EXCHANGES138.json": "5db80bb4749ab5dbdcefdc9a7a62607ed481849a09676f24c1fce91a4dba1529", + "research/KERNEL138-GROUP45-SEARCH.json": "0eff53be4cdc19a2e7d63f93c2302e7799083f4ebcec2a4a8f1378f4d3d7a40c", + "research/KERNEL138-MIXED-FRAMES.json": "f93f8ff03768386310457920ac47a2f2f1f96947d7877e3650f465aae79b9d78", + "research/KERNEL138-MIXED-FRAMES45.json": "2e179aa2afa4e90317881e3122a4b55b0aaade4a3c8ae10d8a368a94fbbdb49a", + "research/STORAGE-FAILURE.json": "fd613981f05ca6016906cbbd9f8ca0013c0515b06b71da2ac5968ae4e6752276", + "research/assembly.log": "a7f1a4df38e65e43a3e8b3e8b0bf48f77b7b8e1c218ba590559dea28f5bf20bc", + "research/bit-hosting.log": "fd8b27814b47ded2df679e78a8e9854334589992652cca0292ab6fc57a559535", + "research/complex-hosting.log": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd", + "research/export.log": "9dce550911b0cf793ee3b9d1b02d438a4cf3e7de21854908d90c4c0a17398428", + "research/global-audit.log": "779a662dcaa8d53cd35ea5b3d61bf8351348f2831ef7c4a56c0c38e206435036", + "research/global-retry.log": "c13a89c8f874c29c650cf51177e6aee23e27aacf30c534018cd3785a7a6a3a6e", + "research/global-retry2.log": "d837282fa6a35a0bb2f0df023bb17c85cbc7f8602b91f7d263fd8e13c59ff354", + "research/group45-negative.json": "81d901662c17eaabb912ed713ebdc84d332923899485f8a11aee08f8da844d99", + "research/hosting-audit.log": "119d2232617c758984b3d5267343ec2841e640cfc2bc882a673b7bb8880ebeff", + "research/hosting138-64-replica-screen.json": "09033dd5d6eefa4ccf9c69a1c8d5a4bd14c0f509f83ae2f9d0ae765884febaac", + "research/hosting443-kernel138-eight-screen.json": "870a3364cc064ebdda3ec6453312ba5a26a8e27dad42a829755b8b5d5d3a46f2", + "research/hosting443-kernel138-screen.json": "1477ea49bfb63b5e8492c1af2f3b3993c9be0dba43ff0dac69c2f4983ec64a03", + "research/hosting443-replica32-screen.json": "39b89e7dd5e3179c18670c85b0dda36a369816fc39a13d1f49aad0107fe2dcbb", + "research/rebuild443.log": "023692adb1c2b7fea087b728940b3ae515f5a0bc3b6b633f0e7c803a83b9ef51", + "research/upstream-shell-path-failure.log": "ae2abbd8913541c301d11aa4ad1f6a44af9ad69c91510c6a31701079a3bb9c50", + "upstream443/EXPECTED.json": "02f3fd3ac40f17f25822fa49d01ae6e84c2e02e2fafbf24f02845f24e02ec931", + "upstream443/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream443/MANIFEST.json": "11f8fc7eb52127b078c1d29029ba71a2e1bd3340e9f4d76c92fae1e22511d550", + "upstream443/NOTICE.md": "cb5bb6520addd9517672136c5519df4a2c06ed17b8afa1ce24e63855689c114d", + "upstream443/PROOF.md": "380a5269e012cb7d54cdf13289b7187aa82c16d23ed1689c5986485398f5cdca", + "upstream443/README.md": "86030e96e06e0df02cc775ed1e41122854bc8dba2d1f90eb30b646436028ae5f", + "upstream443/SOURCE.json": "20b4bc7418b62a7126fc476b0e8757f713f09dbe03b430048e9f66326688ea88", + "upstream443/code/audit_kernel.py": "e49f9b499f98dc2938b10e32db28da3e4f38291dc345c0b5e7b906ca2b0cfb9c", + "upstream443/code/bank_routes.py": "7c6997c455bd55acca3a1603797c34e7733d557c27a7694a1429ff15773a505d", + "upstream443/code/compose_kernel.py": "010e081821f20bcf6e097306289031804b2609e5160dba1c743272126ef7472a", + "upstream443/code/config.py": "283d7fad45155ee91e704d63ec947cf4a60aeff5cc43510bc0e835f7da7d8767", + "upstream443/code/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "upstream443/code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "upstream443/code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "upstream443/code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "upstream443/code/export249.py": "6d9817f7c431573aff695e1eacfa7c2ca6d3a2a10baa3a2ea814ab9b9f7b13ab", + "upstream443/code/global_kernel.py": "01cf4be0ab9affe48598062c4ae3610882aa77a9e18e75c4e596e2f08d8b2173", + "upstream443/code/iface386.py": "1b7c998513759195dee3e82a34c1a46dc3310236530a7f1dfbeefe00f108fc4f", + "upstream443/code/rebuild.py": "3efb6c81a247ac6d5cab87c47030a332292c2c46d482ff996588858f41cdad4d", + "upstream443/code/replica_kernel.py": "780e08ad63983d0256271e8c7803c74bb1623d15cc202d98177c440ff3726aad", + "upstream443/code/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "upstream443/code/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "upstream443/data/post-retiming.json": "d25a636bcebf97b46b01cd39259e8c4f59ab92a188f4cb4bd0b0b34936cf3b56", + "upstream443/data/residual-isometries.json": "e12ed7ddd13cee101ba74a083b54665fd64d0b122b0bad5b83d817dcc8bae9d8", + "upstream443/data/retiming.json": "f2b041a33577eebbf47f740ae1d7b94a68f2424de39df0c4ef075fad055c0793", + "upstream443/data/selection.json": "1a96e47f1889bc690316f95a3858b0062ce212ea876dd15e5123ed89d09a9c39", + "upstream443/data/upstream441/pair-retime-selection.json": "201d8cbc8ac1df10ee74246815f3ce8507b94395af69835e8098a8274bca5651", + "upstream443/data/upstream441/window-retime-selection.json": "170a2190b6bae36de3a18a8b4c1a152cebd95b839ae889da3049f9d9b0109e30", + "upstream443/data/word.json.gz": "d8d6d3d3f336720302bc40b3c1504fe3c3583a7a8d707bb9bd7b21f85e5e69c6", + "upstream443/parent436/EXPECTED.json": "a9655e303cb2c40ce024443b27c0a810ffc24f1ee1e5b07eb19241fad399b5e2", + "upstream443/parent436/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream443/parent436/MANIFEST.sha256": "7c6d4bd2ac74710d8a8a68fd637b31df9028a2376b569732374a739092c34310", + "upstream443/parent436/NOTICE.md": "eb9cb7eab03977930484fee70d0aea066803917a6304b1ad2644cfcc6bf2acd4", + "upstream443/parent436/README.md": "d737a3b77de97bdf67d2a140465be5b8886af6aa57516f78ad8f2839f3dae8cc", + "upstream443/parent436/SOURCE-pr370.json": "352a68f0898535311c63cac879a52b686246ba80844f1a3cc2f3c3f6b1046b4d", + "upstream443/parent436/SOURCE-pr376.json": "1608c15638f874243c3ad00bd6a08b30f0e9608de83002273819365ab300b0e7", + "upstream443/parent436/SOURCE-pr381.json": "c457c422d54645ad841c8528bf2efa6c253d1c134ee86c875b9b7d76d4f9520c", + "upstream443/parent436/SOURCE-pr386.json": "bba849ed0a1af4d45a76ec734d5f0d07806da2b161f1b5ad8ea63cf2d64b5aa4", + "upstream443/parent436/SOURCE-pr417.json": "d9b7e606f09b840ed9fe10dc8c8250b4cab9bbe5d0cacb62864ca8366a28b2b1", + "upstream443/parent436/SOURCE-pr425.json": "a2c5e2f0e03b0dbcba4ca18282a4ff390a6a395f14411410cfff42d5281d0289", + "upstream443/parent436/SOURCE-pr426.json": "f884cc42793a3afd249ebee20985f61422e7b5baf7c1fcab5b990e1959f31697", + "upstream443/parent436/SOURCE-pr431.json": "71cd86e64217fc4db0199ae8e5ef65cb0cc2ed593e15f03bc1501d4b32fdeb66", + "upstream443/parent436/SOURCE-pr433.json": "f1181aa9f30dcc2e5df7e94738fa0c0cabe5f56b31c8eb843fa0a257da79ed91", + "upstream443/parent436/code/b4/kappa_b4.py": "cc47efc71334d7d41d6475c5dfc8080a278d3b694b335c6a9873dad4632d1f7e", + "upstream443/parent436/code/bit/checkers/certify_bit_k.py": "e68a81ef7981a90d613752003cd5cab5351e260f909b094f1668d8a4dfe480df", + "upstream443/parent436/code/bit/checkers/columns_h.cpp": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "upstream443/parent436/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "upstream443/parent436/code/bit/checkers/cost.py": "d55d2b865d1c3d35e343e1a38c592b9172ed8e2596d1107e34d92e2a80c7d03f", + "upstream443/parent436/code/bit/checkers/finite_k.py": "7e67dc75e63a11e38ac6d6615656c7cf6982e5a33dd404d04b967bf474cad02e", + "upstream443/parent436/code/bit/checkers/geometry_k.py": "646b7e8773d9c99376cb00627f109a97319e6d72b439ff513c39035c28c3f70f", + "upstream443/parent436/code/bit/checkers/gram_frames.py": "223a5a07731fc315a90a3e48177796babc155c1d9985c7ae5017eff6af2a0608", + "upstream443/parent436/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "upstream443/parent436/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "upstream443/parent436/code/bit/checkers/tile_k.py": "64255088821f601ede2c3006f08cb97c39a4fa10dbbeb93a8a71fcfa0e1d8d77", + "upstream443/parent436/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "upstream443/parent436/code/bit/independent/checkword.py": "11bf9620ca9db16d52d9fe806b814fc9ec9a89c4d7645354d1861d96f6e805ad", + "upstream443/parent436/code/bit/independent/mutate.py": "0ff65aace5da4b57d96235bf830f8f11969322e75134d498aeb70e9753ec6b0d", + "upstream443/parent436/code/bit/mutate_records.py": "b0e75d6550412a7be4017695e6b237392b611bb852ad8ff309d6682c9f166a4e", + "upstream443/parent436/code/bit/producer/compile.py": "60fea6a9d6617a3f87376d3fda040642e9cb70e7c179015e03ede8d289f30357", + "upstream443/parent436/code/bit/producer/compile2.py": "0e23d4282ceb75768e82631da016aaff9818aec53c7d75a6b2a28ee1b1160dc3", + "upstream443/parent436/code/bit/producer/e8lib.py": "4f8a6843e83bc4f7055d7337f33dbe12ce499051f46bee1b81bbf6b34c652574", + "upstream443/parent436/code/bit/producer/frames.py": "ba71f77dd3e3c1c54f361c066cebe9faadbc78db46376046e7af625bf1de8c24", + "upstream443/parent436/code/bit/producer/fullword.py": "0daf87599e9e48646b985ad87351c56c1b73cfc99cdf9eca081483846ddbfa90", + "upstream443/parent436/code/bit/producer/ham1.py": "359040fb432fd392472af6b8f5dca0234dd6c2be744a791df27ba62bc5da5175", + "upstream443/parent436/code/bit/producer/ham2.py": "fdf0af785ce697bd7f80b4e75f7163735f3b599d9dc42f652f0ffdbdf18ea8bf", + "upstream443/parent436/code/bit/producer/params-r865.json": "1256c54debe0a551da8e24896ab73ef0bd4a5233ff8e6fedf21a9e6301d6e6f3", + "upstream443/parent436/code/bit/producer/price.py": "46c858e60ba0a117bf8227b864abf55e85ebee2d56a0dce64472b706499ac405", + "upstream443/parent436/code/bit/receipts_k.py": "67f714e10a846e9cc62996342f825cd715055031e0b12591abdafd225717e195", + "upstream443/parent436/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "upstream443/parent436/code/complex/code/bridged.py": "5fe7174cd3a6580a74e4c1bf8fa7b426e8673f1c285603bf3076d4e758d70731", + "upstream443/parent436/code/nine/audit_g.py": "48ac1d66a406ed72dd9192a19118776ba253f5c90e96185f5c1b98bb670a6361", + "upstream443/parent436/code/nine/certify_g.py": "97a5f7e9bf2202d170da17d5d17d876903641d7d24433115c27ea95b9fe65ccd", + "upstream443/parent436/code/nine/cited.py": "b6722d990fba39ef41b3d658326bdde97c25b749a454bda2509fdffeabd31a86", + "upstream443/parent436/code/nine/compose433.py": "27dd61574f1f6921238ff9f57c6fd536e6f0a0983138bc5c99aeb141d3ccc195", + "upstream443/parent436/code/nine/geometry.py": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca", + "upstream443/parent436/code/nine/global_word_g.py": "ff8d6be2432b79584dc2f2d2bdcd3cefede0d0730d1eecb0a6859dd527f5fce4", + "upstream443/parent436/code/nine/regress386.py": "bf97418a9aec7c3f55d04d4754e626f17f44aa2059ffd8acd7b315dcf9e89110", + "upstream443/parent436/code/pricing/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "upstream443/parent436/code/pricing/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "upstream443/parent436/code/pricing/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "upstream443/parent436/code/pricing/prime_witnesses.py": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "upstream443/parent436/code/provenance.py": "e28fd87d0e34a6f6f6f1fddb6c4891deac220662c954de855d7aa5a7f9cceca4", + "upstream443/parent436/code/reuse/controls.py": "89df84f78064de12cd11f0f5f63aa9cad2385f5d18d2e4ade7409a5ae0435721", + "upstream443/parent436/code/reuse/ecost.py": "901c61f0a8082fc87012f91372aafbb2a1b464be685426e32e77cc9f0e393958", + "upstream443/parent436/code/reuse/regen.py": "972740a54e487b12aebc09f2fab5f2878835727cb4ad82fb1aa26a0f2d34f517", + "upstream443/parent436/code/reuse/retime.py": "d8530464a6e00e0a509cf8b392cae70579c8d0f636a0dc86677f5dee0863d34d", + "upstream443/parent436/code/reuse/reuse.py": "b802483c024d23c92df30f1a2d93838280e39dfa0bd7129b879d6cc0b84c80a4", + "upstream443/parent436/code/tail/apply376.py": "ac49a9a7da44a1e8fbf468c6d8901b5712705d3caa9dd3e0cb89f056f0e67b2a", + "upstream443/parent436/code/tail/bootstrap.py": "6811203fb7df1ac8a9eee3fbeca722de98dbc99077921fe77e0d452c760f0ffc", + "upstream443/parent436/code/tail/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "upstream443/parent436/code/tail/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "upstream443/parent436/code/tail/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "upstream443/parent436/code/tail/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "upstream443/parent436/data/bit/bitE8-r740.json.gz": "f8daa4982d865748fa9a3095b2cf4290f34e2c085d6d35673fd7171cab95623c", + "upstream443/parent436/data/bit/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "upstream443/parent436/data/bit/reuse-ledger.json": "e7bb324150a5342076c9a268f69b83c65f817a7cfc1d14fda9558a9f7e486f0b", + "upstream443/parent436/data/complex-b-433.json": "161663bf22c8e6a62e2dce194b326016c11e551f31691140ef34355e9b2e4e92", + "upstream443/parent436/data/complex-b-b4.json": "1bdd6a649615ddb6bf7cdf24abd7bb1bbd6cc9284e2aa44f796786310d3e1a3b", + "upstream443/parent436/data/complex-b-nine.json": "2815ca568c88edde758c31e756d0d07aa08233243f365bc111383d7f0c1c757a", + "upstream443/parent436/data/controls/LICENSE-pr426": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream443/parent436/data/controls/pr376/LICENSE-pr376": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream443/parent436/data/controls/pr376/frame-selection.json": "a83d4880579fb1f8cffb701d1d685c157b7fa14ef9d6642e42ff1e4f5a1b8c5c", + "upstream443/parent436/data/controls/pr376/reuse-selection.json": "0b300bab47cf0d69cbc7965bf01c2a27c96b97677ee651334470d8c968b603f1", + "upstream443/parent436/data/controls/pr386/AUDIT.json": "59625785de14c3df03abe009cdc67c7918b8fcfa8dc5f468c3d363af0494cbb7", + "upstream443/parent436/data/controls/pr386/COMBINED.json": "6043a7486790ac8ca04dc67ddf5b57076e7c880b66eb456127c6cd933c77764a", + "upstream443/parent436/data/controls/pr386/GLOBAL.json": "55af2a11552c04f5a87268bc2d1798246297874e9e87b50e49773e91cc495c2d", + "upstream443/parent436/data/controls/pr417-bitE8-nine-kernel.json.gz": "acc2b138ce16be1ff12570d3ec1634fe28cccaf259de797be0f62628fb37cccb", + "upstream443/parent436/data/controls/pr425/FINAL.json": "46ea33ad1979cd14a2b686e8742792739312a07ab72945517c3809b647b31c42", + "upstream443/parent436/data/controls/pr426-bit-candidate.json.gz": "bd3b84244528767b85d8d7fe423b155630b5c659e21e51563674b1dcb6305ad7", + "upstream443/parent436/data/controls/pr431/VALIDATION-LOCAL.json": "2b77c882ac524adbbacc9775ee172c854ecd4027e36db59ed15a7d1b6b9e1ce5", + "upstream443/parent436/data/controls/pr433/CERTIFICATE.json": "f71580f22193726fb582eae604807ff70a7302265e001d9484a718e63bbe14c4", + "upstream443/parent436/data/params/params-r740.json": "871fc75ce6fea2638f68553bcfe771d09297e987d59c123338227e29415851d1", + "upstream443/parent436/discovery/README.md": "d840952ed60b4b460da83b04c4c8be3622b9bef04b62961c0d496c445f8b84d1", + "upstream443/parent436/discovery/search_params.py": "57de04a8ea7e2df8b783e02c454bb102edab48206db0a41a1f28d50e7f164441", + "upstream443/parent436/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99", + "upstream443/parent436/requirements.txt": "b9f87c1ec529679c19b8421a7a69b377b54b89949cfc5e1b1ed8c134bfab8917", + "upstream443/parent436/verify.sh": "19bf483b109163b0ccc941f459e70c2e37d20c9c04e69e7c8eb98f329577b26c", + "upstream443/verify.sh": "3720f542e9cf1ec35b052dec130b9cb6eefa37798f73ba5a4026b400c78d0697", + "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": "3d7cdf274e54852d097cc23a9009856ce79b207bc81da4fcf9874dbeb9c80675" + } +} diff --git a/research/e8-rank138-idle-hosting/NOTICE.md b/research/e8-rank138-idle-hosting/NOTICE.md new file mode 100644 index 0000000000..62327dd3e1 --- /dev/null +++ b/research/e8-rank138-idle-hosting/NOTICE.md @@ -0,0 +1,7 @@ +# Attribution and scope + +Rohan Arun with substantial OpenAI Codex assistance: composition of the rank-138 kernel with idle-data hosting, frozen assignment, standard-library wrapper, replication-aware emitter, independent audit and fresh invoice. + +Credit chafreaky PR443 for the rank-138 local word and 32-replica admission, PR417/PR439 kernel and residual routes; eumemic PR436/PR440/PR441 for R740 and joint retiming; PR442 for idle-data hosting with disclosed Claude assistance; and Rohan Arun PR434/PR435/PR438, icekylinx PR433, the retained PR426/PR389/PR376/PR370, PR425/PR386 and Jacob Sussman lineage. All upstream licenses, notices and source-specific disclosures remain in upstream443 and the sibling pinned parent. Apache-2.0. + +The immutable upstream443 source is pinned to 5a514e94f156edcc5fd827b87494d962f79d0f6c. Its shell wrapper is retained for provenance; our Python wrapper avoids its unquoted-space-path failure and independently reconstructs the bit program using the retained exact audit code. Its upstream full shell wrapper was not passed locally. The unchanged complex supplier is replayed by our parent wrapper rather than merely cited. diff --git a/research/e8-rank138-idle-hosting/PROOF.md b/research/e8-rank138-idle-hosting/PROOF.md new file mode 100644 index 0000000000..a0c76b3056 --- /dev/null +++ b/research/e8-rank138-idle-hosting/PROOF.md @@ -0,0 +1,11 @@ +# Rank-138 kernel with idle-data hosting + +Use PR443's exactly pinned local word, reconstructed by its unchanged rebuild.py: 57 A-frame changes, 114 pivots of total entrance rank 138 and 103 donor slots, followed by the two PR441 B-frame witnesses. All local scalar columns and integer source spans are checked. The complete local frame family is identical to the already checked R740 parent. + +Repeat the nine-stage identity with 32 independent bit replicas, as in PR443. The unhosted residual coordinates partition 2,891 banks per stage, with no padding. The emitter checks all 7,620 columns of the one-replica global identity and emits every one of 288 local invocations and 213,120 helper assignments. The independent audit reconstructs all local records, exact projector inclusions, reflected streams, data owners and bank intervals. Explicit rational residual isometries and the conservative inherited extra route-factor bound of 144 are retained. + +Apply the frozen hosting assignment using PR442's additional idle-data hosting extension. The independent hosting audit re-derives windows, disjoint intervals, owners, remainders and all complete remaining banks. The bit construction has 37,464 live families, 37,473 physical families, 159,168 hosted residuals and rank deficit 9,984. The complex construction stays at eight replicas, 8,400 live families and deficit 2,496. Different suppliers may have different replication counts; each supplies its own certified exponent and finite invoice. + +Two rational moment engines certify both suppliers. The bit invoice is recomputed with 32 replicas everywhere, including local invocations, bridge additions, helper routes, copy/erase episodes and physical stock. Prefix/coefficient charges and the two extra hosting route factors are explicit. Six bootstrap levels and all 47 strict outer inequalities produce the stated kappa, rejecting the next grid point. + +The hosting operator extension is inherited as an additional mathematical assumption, not proved by the finite interval audit. See INHERITED-HOSTING-PROOF.md for the original PR442 argument, with its historical parameters. All-size compiler, dirty-bank/compressed-window, restored-work, tape/common-grid, precision and analytic interfaces remain conditional. No unconditional theorem or new Lean proof is claimed. diff --git a/research/e8-rank138-idle-hosting/README.md b/research/e8-rank138-idle-hosting/README.md new file mode 100644 index 0000000000..b37f1acbf5 --- /dev/null +++ b/research/e8-rank138-idle-hosting/README.md @@ -0,0 +1,9 @@ +# Rank-138 idle-data hosting + +Conditional kappa = 0.001246073505487942, 0.06266595% above the preceding hosted PR434 result and 0.68859927% above PR442. + +Composes PR443's rank-138 kernel / 32 bit replicas with PR442's idle-data hosting. The bit side binds. The extra hosting operator assumption remains explicit; finite combinatorial checks do not discharge it. + +Run `python -B research/e8-rank138-idle-hosting/verify.py /absolute/new/output`. Python 3.11 or newer; standard library only for replay. The wrapper freshly rebuilds the full R740 and complex parent, including every selected Gaussian phase, reconstructs the pinned PR443 word, emits and audits all 32 bit replicas, then regenerates and audits both hosted suppliers and strict assembly. + +Full uninterrupted Python 3.11.15 and 3.14.8 wrappers PASS at commit `d21614a4e458b99d1d897eebb6c30370f9aa06f1`. Both replay all nine top-level stages including the full parent. Exact tested manifest, terminal receipts, parent receipts, audits and logs are in `local-evidence/`. GitHub CI remains pending. Code and frozen witnesses are unchanged by this evidence update. PR444 independently reports the same bound. This shared numerical lead uses the additional hosting extension and must not be presented as a stronger result under only the pre-hosting assumptions. Research and failure evidence are preserved. The inherited `gain_over_pr434_percent` field in CERTIFICATE.json refers to the historical pre-hosting baseline 566550276142217/500000000000000000; the comparisons above use the immediately preceding hosted result. diff --git a/research/e8-rank138-idle-hosting/SOURCE442-PINS.json b/research/e8-rank138-idle-hosting/SOURCE442-PINS.json new file mode 100644 index 0000000000..d47fc03335 --- /dev/null +++ b/research/e8-rank138-idle-hosting/SOURCE442-PINS.json @@ -0,0 +1,70 @@ +{ + "head": "4e16d001d505d4f21dd2bcfc44591f9be4c279bd", + "files": [ + { + "path": "research/idle-axis-hosting/EXPECTED.json", + "git_blob": "1b0811df29bc2eabdabb51219e9b2382da9a48f6", + "sha256": "ed83c1bf1ca2d01eaab5149a34520806a07ef375dfa9e3ed69d123f4be4c9960" + }, + { + "path": "research/idle-axis-hosting/LICENSE", + "git_blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "sha256": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4" + }, + { + "path": "research/idle-axis-hosting/MANIFEST.json", + "git_blob": "542ee2f988de429e8fd94c9940a17c35ec65b16d", + "sha256": "f68b82604363329618529313ac9c3796dc1e88b176eaee4a7b0dec9be428e987" + }, + { + "path": "research/idle-axis-hosting/NOTICE.md", + "git_blob": "391e865e06f77efa9ec0aa3ee9c048673b1f24ab", + "sha256": "027a868628d0408602dbeae688b031ed9b4abfd6e5401f6e8106a3eb25ebc4ca" + }, + { + "path": "research/idle-axis-hosting/PROOF.md", + "git_blob": "4468a00349b4f68dce103e785a8392099435e1d6", + "sha256": "cfe34bf0b64259661312dae22c3a23adc5bf6f6326951eee5c1488ccfc347542" + }, + { + "path": "research/idle-axis-hosting/README.md", + "git_blob": "9d9b80cc3bff337db6f3f0c7c70a57efe8532d82", + "sha256": "1151f74cad54ac4937282b7a8b5d1108ed4ce35944ef9b7bb7d17abfce1fe4a0" + }, + { + "path": "research/idle-axis-hosting/SELECTION.json", + "git_blob": "e3303cd97d132e66145d2fb7e957fd6e5808dd80", + "sha256": "315d54be472842707cce879618be477d8b897050e873bc136d114eec6a232f97" + }, + { + "path": "research/idle-axis-hosting/assemble.py", + "git_blob": "f07a59864346dc622aa5c8d3619473c53ba529d8", + "sha256": "f9a2e6a42aadcf971702a5a867760a092566ed03356f4f34387d38f4093ad1a6" + }, + { + "path": "research/idle-axis-hosting/audit.py", + "git_blob": "bd40b9b7914deeced02d5364162060d8130ab08e", + "sha256": "38594423a401110bd430b734037c6ecba422ee6a94d71709984e0afa9cd1edf8" + }, + { + "path": "research/idle-axis-hosting/bit_hosted.py", + "git_blob": "e2f015dbb78a95c121e187b3c20e0f8d59b60586", + "sha256": "6dfbf26213e8adf87563b3575cfb722bd07ecd65627f056b3293411dd3d89a61" + }, + { + "path": "research/idle-axis-hosting/complex_hosted.py", + "git_blob": "56e15c15aeebf571e60ab2c89e55e4624ecac2d3", + "sha256": "829c5c4f4bdfccedadd31505f1f0a394f7a208d1446b7bbf9cc92d3aa1530c0c" + }, + { + "path": "research/idle-axis-hosting/hosting_core.py", + "git_blob": "68b536daa9e6546c0aa046934bf840aaa3c3fde3", + "sha256": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3" + }, + { + "path": "research/idle-axis-hosting/verify.py", + "git_blob": "0aa6cefd0237146967f8e26c540c99e3afca2ffc", + "sha256": "737a974d79fdd232b6c4b9e059c56835079971447342ed7ca3b82a614e30cb53" + } + ] +} diff --git a/research/e8-rank138-idle-hosting/SOURCE443-PINS.json b/research/e8-rank138-idle-hosting/SOURCE443-PINS.json new file mode 100644 index 0000000000..f668d2b93d --- /dev/null +++ b/research/e8-rank138-idle-hosting/SOURCE443-PINS.json @@ -0,0 +1,42 @@ +{ + "head": "5a514e94f156edcc5fd827b87494d962f79d0f6c", + "files": { + "EXPECTED.json": { + "sha256": "02f3fd3ac40f17f25822fa49d01ae6e84c2e02e2fafbf24f02845f24e02ec931", + "git_blob": "bab80135968c7f27931d297dd1de7aa46e208af2" + }, + "PROOF.md": { + "sha256": "380a5269e012cb7d54cdf13289b7187aa82c16d23ed1689c5986485398f5cdca", + "git_blob": "ae1ad94af0f62456d6fb424da4ff0166d5bf3c6c" + }, + "code/replica_kernel.py": { + "sha256": "780e08ad63983d0256271e8c7803c74bb1623d15cc202d98177c440ff3726aad", + "git_blob": "b61f1d98f27b0dd1d5ca8ad2c0bcf88b1d9094fa" + }, + "code/global_kernel.py": { + "sha256": "01cf4be0ab9affe48598062c4ae3610882aa77a9e18e75c4e596e2f08d8b2173", + "git_blob": "72856bf507250ee0ce83fcbba5698c5283387858" + }, + "code/rebuild.py": { + "sha256": "3efb6c81a247ac6d5cab87c47030a332292c2c46d482ff996588858f41cdad4d", + "git_blob": "f7239ea69f1de840100e249846ea139607fa2f6b" + }, + "code/config.py": { + "sha256": "283d7fad45155ee91e704d63ec947cf4a60aeff5cc43510bc0e835f7da7d8767", + "git_blob": "c6824d9c4ea37d58c0d24cb7a3021c4dfcc6f3bb" + }, + "data/selection.json": { + "sha256": "1a96e47f1889bc690316f95a3858b0062ce212ea876dd15e5123ed89d09a9c39", + "git_blob": "ef068005b1422ac3cc459232e20108b74568122a" + }, + "data/word.json.gz": { + "sha256": "d8d6d3d3f336720302bc40b3c1504fe3c3583a7a8d707bb9bd7b21f85e5e69c6", + "git_blob": "85390b07e4747feddbf2e16f94b5e0a8a308c191" + }, + "MANIFEST.json": { + "sha256": "11f8fc7eb52127b078c1d29029ba71a2e1bd3340e9f4d76c92fae1e22511d550", + "git_blob": "5b72d8bc17fc7e473331ac95373302e1c7c291f8" + } + }, + "manifest_files_verified": 117 +} diff --git a/research/e8-rank138-idle-hosting/VALIDATION.json b/research/e8-rank138-idle-hosting/VALIDATION.json new file mode 100644 index 0000000000..70aeb0e1f9 --- /dev/null +++ b/research/e8-rank138-idle-hosting/VALIDATION.json @@ -0,0 +1,17 @@ +{ + "status": "FULL_LOCAL_PYTHON_311_AND_314_PASS_CI_PENDING", + "kappa": "0.001246073505487942", + "bit_replicas": 32, + "complex_replicas": 8, + "source443_head": "5a514e94f156edcc5fd827b87494d962f79d0f6c", + "gain_over_previous_hosted_percent": 0.06266594866801468, + "gain_over442_percent": 0.6885992732026771, + "tested_commit": "d21614a4e458b99d1d897eebb6c30370f9aa06f1", + "tested_manifest_sha256": "cf742207a00951e991a3ed667ee015449dedcd3fc41f3f857f36ed60a77fa7a8", + "full_receipts": { + "311": "local-evidence/full311/RECEIPT.json", + "314": "local-evidence/full314/RECEIPT.json" + }, + "comparison_scope": "PR434 and PR444 tie at this kappa under the additional PR442 hosting extension. This is not a stronger bound under only the pre-hosting assumptions.", + "publication_change": "Documentation and evidence only; all executable code, frozen witnesses, upstream files and parent manifest are byte-identical to the tested versions." +} diff --git a/research/e8-rank138-idle-hosting/code/SELECTION.json b/research/e8-rank138-idle-hosting/code/SELECTION.json new file mode 100644 index 0000000000..8dc4956837 --- /dev/null +++ b/research/e8-rank138-idle-hosting/code/SELECTION.json @@ -0,0 +1,613 @@ +{ + "bit": { + "patterns": [ + [ + 0, + [ + 7, + 7 + ], + 106 + ], + [ + 0, + [ + 8 + ], + 134 + ], + [ + 1, + [], + 134 + ], + [ + 1, + [ + 7 + ], + 106 + ], + [ + 2, + [ + 7, + 7, + 7, + 7 + ], + 26 + ], + [ + 2, + [ + 8, + 8, + 8 + ], + 182 + ], + [ + 2, + [ + 8, + 8, + 8, + 4 + ], + 32 + ], + [ + 3, + [], + 128 + ], + [ + 3, + [ + 4 + ], + 6 + ], + [ + 3, + [ + 7 + ], + 106 + ], + [ + 4, + [ + 8, + 8, + 8, + 7, + 7, + 4 + ], + 1 + ], + [ + 4, + [ + 8, + 8, + 8, + 8, + 8 + ], + 239 + ], + [ + 5, + [], + 134 + ], + [ + 5, + [ + 7 + ], + 106 + ], + [ + 6, + [ + 8, + 8, + 8, + 7, + 7, + 4 + ], + 1 + ], + [ + 6, + [ + 8, + 8, + 8, + 8, + 8 + ], + 239 + ], + [ + 7, + [ + 7, + 7, + 7, + 7 + ], + 26 + ], + [ + 7, + [ + 8, + 8, + 8 + ], + 182 + ], + [ + 7, + [ + 8, + 8, + 8, + 4 + ], + 32 + ], + [ + 8, + [ + 7, + 7 + ], + 106 + ], + [ + 8, + [ + 8 + ], + 134 + ] + ], + "proxy_saving": 23627.61227164415, + "stages": [ + [ + 0, + 7, + 0, + 106 + ], + [ + 0, + 7, + 1, + 106 + ], + [ + 0, + 8, + 1, + 134 + ], + [ + 1, + 7, + 2, + 106 + ], + [ + 2, + 4, + 0, + 8 + ], + [ + 2, + 4, + 1, + 8 + ], + [ + 2, + 4, + 2, + 8 + ], + [ + 2, + 4, + 3, + 8 + ], + [ + 2, + 7, + 3, + 104 + ], + [ + 2, + 8, + 0, + 54 + ], + [ + 2, + 8, + 1, + 492 + ], + [ + 2, + 8, + 2, + 96 + ], + [ + 3, + 4, + 4, + 6 + ], + [ + 3, + 7, + 4, + 106 + ], + [ + 4, + 4, + 4, + 1 + ], + [ + 4, + 7, + 5, + 2 + ], + [ + 4, + 8, + 0, + 572 + ], + [ + 4, + 8, + 4, + 626 + ], + [ + 5, + 7, + 6, + 106 + ], + [ + 6, + 4, + 4, + 1 + ], + [ + 6, + 7, + 3, + 2 + ], + [ + 6, + 8, + 6, + 626 + ], + [ + 6, + 8, + 7, + 96 + ], + [ + 6, + 8, + 8, + 476 + ], + [ + 7, + 4, + 5, + 8 + ], + [ + 7, + 4, + 6, + 8 + ], + [ + 7, + 4, + 7, + 8 + ], + [ + 7, + 4, + 8, + 8 + ], + [ + 7, + 7, + 5, + 104 + ], + [ + 7, + 8, + 5, + 626 + ], + [ + 7, + 8, + 8, + 16 + ], + [ + 8, + 7, + 7, + 106 + ], + [ + 8, + 7, + 8, + 106 + ], + [ + 8, + 8, + 8, + 134 + ] + ] + }, + "complex": { + "patterns": [ + [ + 0, + [ + 9 + ], + 120 + ], + [ + 2, + [ + 9 + ], + 120 + ], + [ + 4, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 6, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 8, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 10, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 12, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 13, + [ + 9, + 9, + 9, + 9, + 9 + ], + 120 + ], + [ + 14, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 15, + [ + 9, + 9, + 9 + ], + 120 + ], + [ + 16, + [ + 9 + ], + 120 + ], + [ + 17, + [ + 9 + ], + 120 + ] + ], + "proxy_saving": 17393.16581129622, + "stages": [ + [ + 0, + 9, + 0, + 120 + ], + [ + 2, + 9, + 0, + 80 + ], + [ + 2, + 9, + 1, + 40 + ], + [ + 4, + 9, + 3, + 360 + ], + [ + 6, + 9, + 0, + 360 + ], + [ + 8, + 9, + 1, + 520 + ], + [ + 8, + 9, + 5, + 80 + ], + [ + 10, + 9, + 2, + 560 + ], + [ + 10, + 9, + 3, + 40 + ], + [ + 12, + 9, + 4, + 560 + ], + [ + 12, + 9, + 7, + 40 + ], + [ + 13, + 9, + 5, + 360 + ], + [ + 13, + 9, + 6, + 200 + ], + [ + 13, + 9, + 7, + 40 + ], + [ + 14, + 9, + 6, + 360 + ], + [ + 15, + 9, + 7, + 360 + ], + [ + 16, + 9, + 8, + 120 + ], + [ + 17, + 9, + 7, + 120 + ] + ] + } +} diff --git a/research/e8-rank138-idle-hosting/code/assemble.py b/research/e8-rank138-idle-hosting/code/assemble.py new file mode 100644 index 0000000000..a6fd3e0926 --- /dev/null +++ b/research/e8-rank138-idle-hosting/code/assemble.py @@ -0,0 +1,82 @@ +"""Two exact moments for both hosted suppliers, fresh finite invoices with the hosted stock, and the strict outer +assembly of #434 (six bootstrap levels, 47 inequalities, next-grid and parameter controls). +usage: assemble.py PARENT_CHANGED_DIR BIT_DIR COMPLEX_DIR AUDIT.json OUT.json""" +import gzip, hashlib, importlib.util, json, math, sys +from fractions import Fraction as Q +from pathlib import Path +par, bd, cd, ap, outp = map(Path, sys.argv[1:6]) +def load(name): + sp = importlib.util.spec_from_file_location('hosted_' + name, par / 'work/pr361/code/engines' / (name + '.py')) + mod = importlib.util.module_from_spec(sp); sp.loader.exec_module(mod); return mod +M, Other, Outer = load('moment'), load('base_two_moment'), load('outer') +audit = json.loads(ap.read_text()); bg = json.loads((bd / 'GLOBAL.json').read_text()); ch = json.loads((cd / 'HOSTED.json').read_text()) +assert audit['bit_template_sha256'] == bg['template_sha256'] and audit['complex_template_sha256'] == ch['template_sha256'] +# ---------------- bit: two moments and the parent's invoice formulas with the hosted stock +P = {int(r): n for r, n in audit['bit_profile'].items()}; m, W = 64, audit['bit_live']; E = sum(P.values()) +geo = json.loads((par / 'bit426-source-centres/global/GEOMETRY.json').read_text()) +pg = json.loads((par / 'bit426-source-centres/global/GLOBAL.json').read_text()) +T, L, R, V, K = pg['replicas'], 9, pg['R'], 120, 4 +mass = sum(r * z for r, z in P.items()); assert m * W - mass == 312*T +physical = W + 9; d = m * m; N = 2 * m +unit = L * T * pg['local_additions'] + pg['bridge_additions'] +J = 8 * T * L * (2 * V + R) + 8 * (2 * K * V * T) + 2 * L * T * R + 2 * pg['copy_erase_episodes'] # every helper route charged (bank or hosted) +high = 16 * (d + 1) ** 2; good = 8 * m * m + 8; compiler = 128 * N ** 3 +selectors = 2 * L * T * ((W - 1) + R * m * (geo['max_route_factors'] + pg.get('extra_helper_route_factor_bound', 0) + 2 + (m - 1) + m)) # +2: hosted route may add a slot permutation and U_q +prefix = int(pg['global_prefix_bound']); charged_prefix = 64 * ((prefix.bit_length() + 63) // 64) +coefficient = unit + J * high + J * physical + E * (good + compiler) + 16 * m ** 3 + pg['copy_erase_episodes'] + selectors + prefix + 1 +two = (coefficient + 1) ** 2 * (E + 1) ** 2; charged_two = 64 * ((two.bit_length() + 63) // 64) +assert two < 1 << charged_two and 2 * max(P) ** 2 < m * m +row = 2 * (m * m + 1) + 9909 + 252; assert row == 18355 < 20161 +root = M.certify(P, m, W, True); c = Q(root['lower']); chi = Q(root['upper']) +fb = 32 * m * m * E +lo, hi = Other.moment(m, W, list(P.items()), c); bl, bh = Other.moment(m, W, [(1, fb)], c); assert hi + bh / 10 ** 16 < 1 +lo2, hi2 = Other.moment(m, W, list(P.items()), chi); bl2, bh2 = Other.moment(m, W, [(1, fb)], chi); assert lo2 + bl2 / 10 ** 16 > 1 +# ---------------- complex: two moments and the parent's invoice with the hosted stock +PC = {int(r): n for r, n in audit['complex_profile'].items()}; mc, WC = 73, audit['complex_live']; EC = sum(PC.values()) +massc = sum(r * z for r, z in PC.items()); assert mc * WC - massc == 2496 +rc = M.certify(PC, mc, WC, True); b = Q(int(Q(rc['lower']) * 10 ** 18), 10 ** 18) +fbc = 32 * mc * mc * EC +l3, h3 = Other.moment(mc, WC, list(PC.items()), b); b3, bh3 = Other.moment(mc, WC, [(1, fbc)], b); assert h3 + bh3 / 10 ** 16 < 1 +integ = json.loads((par / 'split-centres/INTEGRATION.json').read_text()); inv = integ['finite_invoice'] +physc = ch['physical']; Rc = 560; v = 120 +compilerc = 64 * (mc + 1) ** 3 +pervertex = inv['pervertex'] - integ['physical'] * (64 + 1) + physc * (64 + 1) - integ['live'] + WC # stock-dependent terms re-based +r_ = mc // 2; group = 2 ** (r_ * r_) * math.prod(2 ** (2 * i) - 1 for i in range(1, r_ + 1)); stock = group * physc +smass = group * massc; logical = group * max(pervertex, inv['pervertex']) + 64; router = compilerc * (logical + 1) * (stock + 1) ** 2 +GG, EE, C0 = 1 << 30000, 1 << 100000, 1 << 210000; BB = smass + EE +literal = 2 * GG * stock ** 2 + 8 * smass + 4 * stock + 4 + 32 * mc +assert logical < 1 << 6050 and router < GG and literal < EE and BB < 1 << 100001 and 32 * mc * BB * BB < C0 and 2 * BB + 18 < C0 +depth = 2; assert mc ** depth > 2 * max(PC) ** depth +rowc = depth * stock.bit_length() + 9909 + 252; assert rowc < 20161 +# ---------------- outer assembly exactly as #434's combined.py +eta = beta = Q(1, 10 ** 18); grid = Q(1, 10 ** 18); s = min(c, (1 - beta) * b) - Q(1, 10 ** 24) +assert 0 < s < c and s < (1 - beta) * b +chain = [Q(384599, 10 ** 10)]; cutoffs = [] +def ceil(x): return -((-x.numerator) // x.denominator) +for j 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 old < a < s < 1 - a and gap > 0 + cutoff = max(ceil(36 / gap ** 2), ceil(2 * (4 + charged_two) / gap)); assert cutoff * gap ** 2 >= 36 and cutoff * gap >= 2 * (4 + charged_two) + 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) +parent_k = Q(566550276142217, 500000000000000000) +res = dict(status='PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY', kappa=str(k), kappa_decimal=format(float(k), '.18f'), + bit_lower=str(c), complex_lower=str(b), binding_component='bit' if c < (1 - beta) * b else 'complex', + gain_over_pr434_percent=float(100 * (k / parent_k - 1)), + bit=dict(live=W, physical=physical, maxchild=max(P), rank_mass=mass, hosted_residuals=audit['bit_hosted_residuals'], + prefix_bits=prefix.bit_length(), charged_prefix_bits=charged_prefix, coefficient_bits=coefficient.bit_length(), + two_level_coefficient_bits=two.bit_length(), charged_two_level_coefficient_bits=charged_two, row_coefficient=row), + complex=dict(live=WC, physical=physc, maxchild=max(PC), rank_mass=massc, hosted_residuals=audit['complex_hosted_residuals'], + physical_stock_bits=stock.bit_length(), router_bits=router.bit_length(), literal_bits=literal.bit_length(), row_coefficient=rowc), + strict_outer_constraints={n: str(x) for n, x in a['strict_constraints'].items()}, outer_controls=controls, bootstrap=cutoffs, + bit_template_sha256=bg['template_sha256'], complex_template_sha256=ch['template_sha256']) +outp.write_text(json.dumps(res, indent=2) + '\n') +print(res['status'], res['kappa_decimal'], 'binding', res['binding_component'], 'gain over #434 %.4f%%' % res['gain_over_pr434_percent']) diff --git a/research/e8-rank138-idle-hosting/code/audit.py b/research/e8-rank138-idle-hosting/code/audit.py new file mode 100644 index 0000000000..4c3c28ac96 --- /dev/null +++ b/research/e8-rank138-idle-hosting/code/audit.py @@ -0,0 +1,161 @@ +"""Independent audit of the two idle-axis-hosted templates (no code shared with the generators). +Re-derives hosting windows from each template's own schedule and checks, for every replica and invocation: + * every helper residual has exactly one owner: a bank slot or a hosted slot; + * a hosted slot lies on the data family of the idle child it names, inside that child's pending coordinates, + disjoint from every other hosted slot of the family, and its invocation lies strictly between the last + local invocation or bridge naming that pair and the child (the window); + * the child keeps exactly the remaining coordinates; banks are tiled exactly (bit) or padded (complex); + * the emitted paid profile, live stock and rank deficit 2496 are recomputed from scratch. +Mutation controls must be rejected. usage: audit.py PARENT_CHANGED_DIR BIT_DIR COMPLEX_DIR OUT.json""" +import copy, gzip, hashlib, json, sys +from collections import Counter, defaultdict +from pathlib import Path +V, K, T, L = 120, 4, 8, 9 +DATA = 2 * K * V * T + +def wins(events): + """events: ('local', stage, pair) | ('bridge', a, b) | ('idle', idx, pair); window = local stages after the last + local/bridge touch of the pair and before the child""" + last = {}; seen = []; w = {} + for pos, e in enumerate(events): + if e[0] == 'local': seen.append((pos, e[1], e[2])); last[e[2]] = pos + elif e[0] == 'bridge': last[e[1]] = pos; last[e[2]] = pos + else: + lo = last.get(e[2], -1); w[e[1]] = {s for q, s, p in seen if lo < q < pos and p != e[2]} + return w + +def audit_bit(t, parent_t, widths): + T=32; DATA=960*T + assert t['replicas']==parent_t['replicas']==T + assert t['local_programs'] == parent_t['local_programs'] and len(t['calls']) == 9*T + ev = []; rank = {}; pair = {} + for e in t['schedule']: + if e['kind'] == 'local_cover_sweep': ev.append(('local', e['stage'], e['pair'])) + elif e['kind'] == 'bridge': ev.append(('bridge', e['dst'], e['src'])) + elif e['kind'] == 'idle': + ev.append(('idle', e['idx'], e['pair'])); rank[e['idx']] = e['rank']; pair[e['idx']] = e['pair'] + W = wins(ev); hs = t['hosting'] + used = defaultdict(set); hosted = {} + for i, cp, off, w, s, h in hs['slots']: + assert s in W[i], ('window', i, s) + assert w == widths[h] and 0 <= off and off + w <= rank[i] + cells = set(range(off, off + w)); assert not cells & used[i, cp], ('overlap', i, cp); used[i, cp] |= cells + assert (s, h) not in hosted; hosted[s, h] = (i, cp, off, w) + rem = {} + for i in rank: + if rank[i] == 0: continue + for cp in range(2 * V): rem[i, cp] = rank[i] - len(used[i, cp]) + rr = Counter(rem[i, cp] for cp in range(2 * V)) + if str(i) in hs['remainders']: assert {int(k): v for k, v in hs['remainders'][str(i)].items()} == dict(rr) + else: assert rr == Counter({rank[i]: 2 * V}) + occ = defaultdict(set); LIVE = t['live']; bank_lo = {} + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners']; assert len(own) == 2 * V + len(widths) + assert own[:2 * V] == next(q for q in parent_t['calls'] if (q['stage'], q['replica']) == (s, rep))['owners'][:2 * V] + for h, (f, r) in enumerate(own[2 * V:]): + if (s, h) in hosted: + i, cp, off, w = hosted[s, h]; side, port = divmod(cp, V) + assert r == ['hosted', i, off, w] and f == rep * 960 + (2 * pair[i] + side) * V + port + assert pair[i] != p + occ['h', f, i, s, rep, h] = True + else: + assert r[0] == 'bank' and r[2] == widths[h] and DATA <= f < LIVE + cells = set(range(r[1], r[1] + r[2])); assert cells <= set(range(64)) and not cells & occ[f]; occ[f] |= cells + bank_lo[f] = s + banks = [f for f in occ if isinstance(f, int)] + assert sorted(banks) == list(range(DATA, LIVE)) and all(occ[f] == set(range(64)) for f in banks) + paid = Counter() + for c in t['calls']: + for z in t['local_programs'][c['orientation']]: + if z[0] == 0 and z[4]: paid[z[4]] += 1 + if z[0] == 2: paid[z[5]] += 1 + for (i, cp), r_ in rem.items(): + if r_: paid[r_] += T + mass = sum(r * n for r, n in paid.items()); assert 64 * LIVE - mass == 312*T + assert 64 * 64 > 2 * max(paid) ** 2 + return paid, sum(1 for _ in hosted) * T + +def audit_complex(t, parent_t, local_checks): + R = 560; m = 73 + assert t['local_programs'] == parent_t['local_programs'] and len(t['calls']) == 72 + prank = {} + for it in parent_t['idle_children']: prank.setdefault(it['child'], it['rank']) + stage_pair = {e['stage']: e['pair'] for e in t['recipe'] if e['kind'] == 'local'} + ev = []; side = {}; pairs = {} + for e in t['execution_schedule']: + if e['kind'] == 'local_cover_sweep': ev.append(('local', e['stage'], stage_pair[e['stage']])) + elif e['kind'] == 'bridge': ev.append(('bridge', e['dst'], e['src'])) + elif e['kind'] == 'idle_cover_sweep': + for sd, ch in enumerate(e['child_indices']): + if ch in prank: ev.append(('idle', ch, e['pair'])); side[ch] = sd; pairs[ch] = e['pair'] + W = wins(ev); hs = t['hosting'] + used = defaultdict(set); hosted = {} + for i, port, off, w, s, h in hs['slots']: + assert w == 9 and s in W[i] and 0 <= off and off + 9 <= prank[i] + cells = set(range(off, off + 9)); assert not cells & used[i, port]; used[i, port] |= cells + assert (s, h) not in hosted; hosted[s, h] = (i, port, off) + rem = {} + for it in parent_t['idle_children']: rem[it['child'], it['port']] = it['rank'] - len(used[it['child'], it['port']]) + got = {(it['child'], it['port']): it['rank'] for it in t['idle_children']} + assert got == {k: r for k, r in rem.items() if r} and all(it['replicas'] == T for it in t['idle_children']) + LIVE = t['live']; occ = defaultdict(set) + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners']; assert len(own) == 2 * V + R + assert own[:2 * V] == next(q for q in parent_t['calls'] if (q['stage'], q['replica']) == (s, rep))['owners'][:2 * V] + for h, (f, r) in enumerate(own[2 * V:]): + if (s, h) in hosted: + i, port, off = hosted[s, h] + assert r == [3, i, off] and f == rep * 960 + (2 * pairs[i] + side[i]) * V + port and pairs[i] != p + else: + assert r[0] == 2 and 0 <= r[1] < 8 and DATA <= f < LIVE and r[1] not in occ[f]; occ[f].add(r[1]) + banks = sorted(occ); assert banks == list(range(DATA, LIVE)) + paid = Counter() + for c in t['calls']: + for r_, z in local_checks[c['orientation']]['paid_profile'].items(): paid[int(r_)] += z + for (ch, port), r_ in rem.items(): + if r_: paid[r_] += T + for f in banks: paid[m - 9 * len(occ[f])] += 1 + mass = sum(r * n for r, n in paid.items()); assert m * LIVE - mass == 2496 + assert m * m > 2 * max(paid) ** 2 + return paid, len(hosted) * T + +def main(): + par, bd, cd, outp = map(Path, sys.argv[1:5]) + pbt = json.loads(gzip.decompress((par / 'bit426-source-centres/global/GLOBAL-TEMPLATE.json.gz').read_bytes())) + bt = json.loads(gzip.decompress((bd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())) + bg = json.loads((bd / 'GLOBAL.json').read_text()) + assert hashlib.sha256(gzip.decompress((bd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest() == bg['template_sha256'] + st = json.loads((par / 'bit426-source-centres/records/249-states.json').read_text()) + fs = json.loads((par / 'bit426-source-centres/records/frames.json').read_text())['frames'] + widths = [8 - fs[str(st['initial'][str(i)])]['dim'] for i in range(240, st['n'])] + pct = json.loads(gzip.decompress((par / 'split-centres/GLOBAL-TEMPLATE.json.gz').read_bytes())) + ct = json.loads(gzip.decompress((cd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())) + ch = json.loads((cd / 'HOSTED.json').read_text()) + assert hashlib.sha256(gzip.decompress((cd / 'GLOBAL-TEMPLATE.json.gz').read_bytes())).hexdigest() == ch['template_sha256'] + lc = json.loads((par / 'split-centres/LOCAL-CHECKS.json').read_text()) + bp, bh = audit_bit(bt, pbt, widths); assert bp == Counter({int(k): v for k, v in bg['profile'].items()}) + cp, chh = audit_complex(ct, pct, lc); assert cp == Counter({int(k): v for k, v in ch['global_profile'].items()}) + controls = [] + def reject(name, fn, which): + q = copy.deepcopy(bt if which == 'bit' else ct); fn(q) + try: + (audit_bit(q, pbt, widths) if which == 'bit' else audit_complex(q, pct, lc)) + except (AssertionError, KeyError, IndexError, StopIteration): controls.append(name) + else: raise AssertionError('mutation accepted: ' + name) + def outside(q): # move one hosted residual to a stage outside its window + sl = q['hosting']['slots'][0]; i = sl[0]; s_bad = next(s for s in range(9) if s not in q['hosting']['windows'][str(i)][2]); sl[4] = s_bad + reject('bit: hosted residual outside its window', outside, 'bit') + reject('bit: overlapping hosted coordinates', lambda q: q['hosting']['slots'][1].__setitem__(2, q['hosting']['slots'][0][2]) if q['hosting']['slots'][1][:2] == q['hosting']['slots'][0][:2] else q['hosting']['slots'][1].__setitem__(1, q['hosting']['slots'][0][1]) or q['hosting']['slots'][1].__setitem__(2, q['hosting']['slots'][0][2]), 'bit') + reject('bit: understated live stock', lambda q: q.__setitem__('live', q['live'] - 1), 'bit') + reject('bit: hosted owner on the active pair', lambda q: q['calls'][0]['owners'].__setitem__(240 + next(h for h in range(len(widths)) if q['calls'][0]['owners'][240 + h][1][0] == 'hosted'), [0, ['hosted', 0, 0, 8]]), 'bit') + reject('bit: missing remainder child', lambda q: q['hosting']['slots'].pop(), 'bit') + reject('complex: hosted residual outside its window', lambda q: q['hosting']['slots'][0].__setitem__(4, next(s for s in range(9) if s not in q['hosting']['windows'][str(q['hosting']['slots'][0][0])][2])), 'complex') + reject('complex: remainder child understated', lambda q: q['idle_children'][0].__setitem__('rank', q['idle_children'][0]['rank'] - 1), 'complex') + reject('complex: dropped bank', lambda q: q.__setitem__('live', q['live'] - 1), 'complex') + reject('complex: duplicated hosted residual', lambda q: q['hosting']['slots'].append(list(q['hosting']['slots'][0])), 'complex') + res = dict(status='PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT', bit_template_sha256=bg['template_sha256'], complex_template_sha256=ch['template_sha256'], + bit_profile={str(k): v for k, v in sorted(bp.items())}, complex_profile={str(k): v for k, v in sorted(cp.items())}, + bit_live=bt['live'], complex_live=ct['live'], bit_hosted_residuals=bh, complex_hosted_residuals=chh, + bit_maxchild=max(bp), complex_maxchild=max(cp), mutations_rejected=controls) + outp.write_text(json.dumps(res, indent=2) + '\n'); print(json.dumps({k: v for k, v in res.items() if 'profile' not in k})) +if __name__ == '__main__': main() diff --git a/research/e8-rank138-idle-hosting/code/bit_audit.py b/research/e8-rank138-idle-hosting/code/bit_audit.py new file mode 100644 index 0000000000..4524163ffe --- /dev/null +++ b/research/e8-rank138-idle-hosting/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); T=32; DATA=960*T; assert T*(8*RR-ENT)%64==0 + NB=T*(8*RR-ENT)//64; LIVE=DATA+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,T,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=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 0 and x[2]} + avail = Counter() + for s in range(L): + for w in width: avail[s, w] += 1 + sel = HERE / 'SELECTION.json'; key = 'bit' + if DISCOVER: + ys, zs, val = HC.solve(win, 2 * V, dict(avail), M, group={7: 2}); HC.save_selection(sel, key, ys, zs, val) + ys, zs, val = HC.load_selection(sel, key) + helpers = {s: [(h, width[h]) for h in range(R)] for s in range(L)} + slots, rem = HC.expand(win, ys, zs, helpers, 2 * V) + hosted = {(s, h): (i, c, off, w) for i, c, off, w, s, h in slots} + # remaining helpers -> exact width-64 banks (per stage, same set of helpers in every replica) + left = {s: [h for h in range(R) if (s, h) not in hosted] for s in range(L)} + nb = {}; place = {} + for s in range(L): + wl = {h: width[h] for h in left[s]} + slotsS = sorted(((wl[h], rep, h) for rep in range(T) for h in left[s]), key=lambda x: (-x[0], x[1], x[2])) + by = {} + for w_, rep, h in slotsS: by.setdefault(w_, []).append((rep, h)) + bins = [] + def take(w_): return by[w_].pop(0) + for w_ in sorted(by, reverse=True): + if w_ == 8: continue + while by.get(w_): + cont = []; off = 0 + if w_ == 7: + for _ in range(8): rep, h = take(7); cont.append((rep, h, off, 7)); off += 7 + rep, h = take(8); cont.append((rep, h, off, 8)); off += 8 + else: + for _ in range(64 // w_): rep, h = take(w_); cont.append((rep, h, off, w_)); off += w_ + assert off == 64; bins.append(cont) + while by.get(8): + cont = []; off = 0 + for _ in range(8): rep, h = take(8); cont.append((rep, h, off, 8)); off += 8 + bins.append(cont) + nb[s] = len(bins) + for b, cont in enumerate(bins): + for rep, h, off, w_ in cont: place[s, rep, h] = (b, off, w_) + base = [DATA] + for s in range(L): base.append(base[-1] + nb[s]) + LIVE = base[-1] + # owners + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners'][:2 * V] + for h in range(R): + if (s, h) in hosted: + i, cp, off, w = hosted[s, h]; pair = win[i][0]; side, port = divmod(cp, V) + own.append([rep * 960 + (2 * pair + side) * V + port, ['hosted', i, off, w]]) + else: + b, off, w = place[s, rep, h]; own.append([base[s] + b, ['bank', off, w]]) + assert len({(f, tuple(r)) for f, r in own}) == 2 * V + R and all(0 <= f < LIVE for f, r in own) + c['owners'] = own + # profile: local programs unchanged; idle children replaced by remainders + paid = Counter() + for c in t['calls']: + for z in t['local_programs'][c['orientation']]: + if z[0] == 0 and z[4]: paid[z[4]] += 1 + if z[0] == 2: paid[z[5]] += 1 + remainder = {} + for e in t['schedule']: + if e['kind'] == 'idle' and e['rank']: + i = e['idx'] + if i in win: + rr = Counter(rem[i, cp] for cp in range(2 * V)); remainder[i] = {str(k): v for k, v in sorted(rr.items())} + for r_, n in rr.items(): + if r_: paid[r_] += n * T + else: + paid[e['rank']] += 2 * V * T + mass = sum(r * n for r, n in paid.items()); assert M * LIVE - mass == 312*T, M * LIVE - mass + t.update(version='compressed-nine-e8-bit-v1+idle-axis-hosting', live=LIVE, + hosting=dict(windows={str(i): [w[0], w[1], sorted(w[2])] for i, w in win.items()}, + slots=[list(x) for x in slots], remainders=remainder, banks_per_stage=nb, + rule='helper (stage s, helper h) of replica r owns coordinates [off, off+w) of the pending idle-child ' + 'projector of data family r*960+(2*pair+side)*120+port (copy = side*120+port); s lies strictly between ' + 'the last local/bridge touch of that pair and the child; the child keeps the remaining coordinates.'), + helper_route='bank owner (exact width-64 tiling of the unhosted residuals of each stage) or hosted owner (data family, pending idle coordinates)') + tb = json.dumps(t, separators=(',', ':'), sort_keys=True).encode(); (out / 'GLOBAL-TEMPLATE.json.gz').write_bytes(gzip.compress(tb, mtime=0)) + res = dict(g); res.update(status='PASS_IDLE_AXIS_HOSTED_BIT_TEMPLATE', live=LIVE, physical=LIVE + 9, template_sha256=hashlib.sha256(tb).hexdigest(), + parent_template_sha256=g['template_sha256'], profile=dict(sorted(paid.items())), paid_calls=sum(paid.values()), rank_mass=mass, + maxchild=max(paid), banks_per_stage_hosted=nb, hosted_residuals_per_replica=len(slots), hosted_residuals=len(slots) * T, + hosted_coordinates_per_replica=sum(x[3] for x in slots), saved_idle_cost_proxy=val, seconds=time.monotonic() - t0) + res['bank_assignments'] = sum(1 for c in t['calls'] for f, r in c['owners'][2 * V:] if r[0] == 'bank') + (out / 'GLOBAL.json').write_text(json.dumps(res, indent=2) + '\n') + print(json.dumps({k: res[k] for k in ('live', 'maxchild', 'hosted_residuals', 'banks_per_stage_hosted', 'rank_mass')}), flush=True) +if __name__ == '__main__': + DISCOVER = '--discover' in sys.argv; args = [a for a in sys.argv[1:] if a != '--discover'] + main(Path(args[0]), Path(args[1]), Path(args[2])) diff --git a/research/e8-rank138-idle-hosting/code/complex_hosted.py b/research/e8-rank138-idle-hosting/code/complex_hosted.py new file mode 100644 index 0000000000..56e15c15ae --- /dev/null +++ b/research/e8-rank138-idle-hosting/code/complex_hosted.py @@ -0,0 +1,87 @@ +"""Idle-axis hosting for #433's compressed nine-stage complex template (m=73, R=560, whole rank-nine residuals). +Local programs, data routes and the cover correction are unchanged; bank slots of hosted residuals move onto pending +idle-child coordinates of untouched data families; unhosted residuals are re-tiled eight per bank with one paid pad +(a final partial bank pays the larger pad). usage: complex_hosted.py SPLIT_CENTRES_DIR OUT""" +import gzip, hashlib, json, math, sys, time +from collections import Counter +from pathlib import Path +HERE = Path(__file__).resolve().parent +sys.path.insert(0, str(HERE)) +import hosting_core as HC +V, K, T, L, M, R = 120, 4, 8, 9, 73, 560 +DATA = 2 * K * V * T +DISCOVER = False +def main(src, out): + t0 = time.monotonic(); out.mkdir(parents=True, exist_ok=False) + blob = gzip.decompress((src / 'GLOBAL-TEMPLATE.json.gz').read_bytes()); t = json.loads(blob) + integ = json.loads((src / 'INTEGRATION.json').read_text()); checks = json.loads((src / 'LOCAL-CHECKS.json').read_text()) + assert hashlib.sha256(blob).hexdigest() == integ['global_template_sha256'] and t['live'] == integ['live'] + rank = {} + for it in t['idle_children']: + assert it['replicas'] == T; rank.setdefault(it['child'], it['rank']); assert rank[it['child']] == it['rank'] + pair_of_stage = {e['stage']: e['pair'] for e in t['recipe'] if e['kind'] == 'local'} + sched = []; side_of = {}; pair_of = {} + for e in t['execution_schedule']: + if e['kind'] == 'local_cover_sweep': sched.append(dict(kind='local', stage=e['stage'], pair=pair_of_stage[e['stage']])) + elif e['kind'] == 'bridge': sched.append(dict(kind='bridge', dst=e['dst'], src=e['src'])) + elif e['kind'] == 'idle_cover_sweep': + for sd, ch in enumerate(e['child_indices']): + if ch in rank: + sched.append(dict(kind='idle', pair=e['pair'], rank=rank[ch], idx=ch)); side_of[ch] = sd; pair_of[ch] = e['pair'] + win = {k: x for k, x in HC.windows(sched).items() if x[1] >= 9 and x[2]} + avail = {(s, 9): R for s in range(L)} + sel = HERE / 'SELECTION.json'; key = 'complex' + if DISCOVER: + ys, zs, val = HC.solve(win, V, avail, M, pad_value=HC.cost(1, M) / 8); HC.save_selection(sel, key, ys, zs, val) + ys, zs, val = HC.load_selection(sel, key) + slots, rem = HC.expand(win, ys, zs, {s: [(h, 9) for h in range(R)] for s in range(L)}, V) + hosted = {(s, h): (i, port, off) for i, port, off, w, s, h in slots} + # re-tile unhosted residuals: per stage, z = rank among (replica, helper) unhosted pairs; eight per bank + base = [DATA]; tile = {}; partial = Counter() + for s in range(L): + left = [(rep, h) for rep in range(T) for h in range(R) if (s, h) not in hosted] + for z, (rep, h) in enumerate(left): tile[s, rep, h] = divmod(z, 8) + nb = -(-len(left) // 8); base.append(base[-1] + nb) + if len(left) % 8: partial[M - 9 * (len(left) % 8)] += 1 + full = len(left) // 8 + partial[M - 72] += full + W = base[-1] + for c in t['calls']: + s, rep, p = c['stage'], c['replica'], c['pair']; own = c['owners'][:2 * V] + for h in range(R): + if (s, h) in hosted: + i, port, off = hosted[s, h]; own.append([rep * 960 + (2 * pair_of[i] + side_of[i]) * V + port, [3, i, off]]) + else: + b, sl = tile[s, rep, h]; own.append([base[s] + b, [2, sl]]) + assert len({(f, tuple(r)) for f, r in own}) == 2 * V + R and all(f < W for f, r in own) + c['owners'] = own + paid = Counter() + for c in t['calls']: + for r_, z in checks[c['orientation']]['paid_profile'].items(): paid[int(r_)] += z + newidle = [] + for it in t['idle_children']: + ch, port = it['child'], it['port']; rr = rem.get((ch, port), it['rank']) if ch in win else it['rank'] + if rr: newidle.append(dict(child=ch, port=port, rank=rr, hosted=it['rank'] - rr, replicas=T)); paid[rr] += T + for r_, n in partial.items(): paid[r_] += L * n if False else n * 1 + # padding: one pad child per bank per stage (already per-stage counted above), the template replays all stages + mass = sum(r * n for r, n in paid.items()); D = M * W - mass + assert D == 2496, D + t.update(version='hamming-mutable-basis-nine-v1+idle-axis-hosting', live=W, idle_children=newidle, + physical=W + R + (integ['physical'] - integ['live'] - R), + hosting=dict(windows={str(i): [w[0], w[1], sorted(w[2])] for i, w in win.items()}, sides=side_of, pairs=pair_of, + slots=[list(x) for x in slots], banks=[base[s + 1] - base[s] for s in range(L)])) + t['bank_padding']['families'] = list(range(DATA, W)); t['cover_final_correction']['families'] = [0, W] + t['cover_final_correction']['charged_calls_per_cover'] = W + for e in t['execution_schedule']: + if e['kind'] == 'bank_padding_cover_sweep': e['families'] = [DATA, W] + elif e['kind'] == 'translate_every_live_family': e.update(t['cover_final_correction']) + tb = json.dumps(t, sort_keys=True, separators=(',', ':')).encode(); (out / 'GLOBAL-TEMPLATE.json.gz').write_bytes(gzip.compress(tb, mtime=0)) + res = dict(status='PASS_IDLE_AXIS_HOSTED_COMPLEX_TEMPLATE', parent_template_sha256=integ['global_template_sha256'], + template_sha256=hashlib.sha256(tb).hexdigest(), live=W, physical=t['physical'], global_profile=dict(sorted(paid.items())), + rank_mass=mass, deficit=D, maxchild=max(paid), hosted_residuals=len(slots) * T, banks_per_stage=t['hosting']['banks'], + saved_cost_proxy=val, seconds=time.monotonic() - t0) + (out / 'HOSTED.json').write_text(json.dumps(res, indent=2) + '\n') + print(json.dumps({k: res[k] for k in ('live', 'maxchild', 'hosted_residuals', 'banks_per_stage', 'deficit')})) +if __name__ == '__main__': + DISCOVER = '--discover' in sys.argv; args = [a for a in sys.argv[1:] if a != '--discover'] + main(Path(args[0]), Path(args[1])) diff --git a/research/e8-rank138-idle-hosting/code/hosting_core.py b/research/e8-rank138-idle-hosting/code/hosting_core.py new file mode 100644 index 0000000000..68b536daa9 --- /dev/null +++ b/research/e8-rank138-idle-hosting/code/hosting_core.py @@ -0,0 +1,138 @@ +"""Idle-axis hosting: place whole dirty-helper residuals on the pending coordinates of an idle data family. + +A data family that is advanced by an idle child from level a to level b receives the commuting coordinate factors of +that child. If the family is untouched (no local invocation on its pair and no bridge naming its pair) during an +interval of local invocations ending at the child, a helper residual of width w from an invocation inside that +interval may own w of those pending coordinates instead of a bank slot. The child keeps only the remaining +coordinates. This module computes the windows from the recipe and chooses, per replica, how many residuals of each +width each child hosts (exact integer programme), then expands that choice into explicit slot assignments. +Standard library plus scipy for the integer programme; the emitted assignment is re-checked without scipy.""" +import math +from collections import Counter, defaultdict + +def windows(schedule): + """schedule: ordered events dict(kind='local',stage,pair) | dict(kind='bridge',dst,src) | dict(kind='idle',pair,rank,idx). + Returns {idx: (pair, rank, frozenset(stages))} - stages whose invocation lies strictly between the last touch of + the pair and the idle child.""" + last = {}; out = {}; locals_ = [] + for pos, e in enumerate(schedule): + k = e['kind'] + if k == 'local': + locals_.append((pos, e['stage'], e['pair'])); last[e['pair']] = pos + elif k == 'bridge': + last[e['dst']] = pos; last[e['src']] = pos + elif k == 'idle': + p = e['pair']; lo = last.get(p, -1) + st = frozenset(s for q, s, pp in locals_ if lo < q < pos and pp != p) + out[e['idx']] = (p, e['rank'], st) # an idle child acts on other coordinates (or the other member): not a touch + return out + +def patterns(rank, widths, maxk=12): + """multisets of widths with sum <= rank (as sorted tuples)""" + ws = sorted(set(widths), reverse=True); res = [] + def rec(i, cur, s): + if i == len(ws): res.append(tuple(cur)); return + w = ws[i]; k = 0 + while s + k * w <= rank and len(cur) + k <= maxk: + rec(i + 1, cur + [w] * k, s + k * w); k += 1 + rec(0, [], 0) + return res + +def cost(r, m): + return r * math.log(m / r) if r else 0.0 + +def solve(win, copies, avail, m, pad_value=0.0, group=None): + """win: {idx: (pair, rank, stages)}; copies: piece copies per replica of each idx (2V); + avail: {(stage, width): count per replica}; maximise saved idle cost (+ pad_value per hosted residual). + group: optional {width: g} - remaining count of that width per stage must be a multiple of g (exact bank tiling). + Returns {(idx, pattern): copies} and {(idx, width, stage): count}.""" + import numpy as np + from scipy.optimize import milp, LinearConstraint, Bounds + widths = sorted({w for (_, w) in avail}) + var = []; index = {} + for idx, (p, r, st) in win.items(): + for pat in patterns(r, widths): + index[('y', idx, pat)] = len(var); var.append(('y', idx, pat)) + for w in widths: + for s in st: + if avail.get((s, w), 0): + index[('z', idx, w, s)] = len(var); var.append(('z', idx, w, s)) + stages = sorted({s for (s, _) in avail}) + if group: + for w, g in group.items(): + for s in stages: + index[('g', w, s)] = len(var); var.append(('g', w, s)) + n = len(var); c = np.zeros(n); integ = np.ones(n); lb = np.zeros(n); ub = np.full(n, np.inf) + for key, j in index.items(): + if key[0] == 'y': + _, idx, pat = key; r = win[idx][1]; c[j] = -(cost(r, m) - cost(r - sum(pat), m) + pad_value * len(pat)) + rows, lo, hi = [], [], [] + for idx in win: + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'y' and key[1] == idx: row[j] = 1 + rows.append(row); lo.append(copies); hi.append(copies) + for w in widths: + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'y' and key[1] == idx: row[j] = key[2].count(w) + if key[0] == 'z' and key[1] == idx and key[2] == w: row[j] = -1 + rows.append(row); lo.append(0); hi.append(0) + for (s, w), a in avail.items(): + row = np.zeros(n) + for key, j in index.items(): + if key[0] == 'z' and key[2] == w and key[3] == s: row[j] = 1 + if group and w in group: + row[index[('g', w, s)]] = group[w]; rows.append(row); lo.append(a); hi.append(a) # used + g*k = avail + else: + rows.append(row); lo.append(0); hi.append(a) + res = milp(c, constraints=LinearConstraint(np.array(rows), lo, hi), integrality=integ, bounds=Bounds(lb, ub), + options=dict(time_limit=600, disp=False)) + assert res.x is not None, res.message + x = [int(round(t)) for t in res.x] + ys = {(k[1], k[2]): x[j] for k, j in index.items() if k[0] == 'y' and x[j]} + zs = {(k[1], k[2], k[3]): x[j] for k, j in index.items() if k[0] == 'z' and x[j]} + return ys, zs, -res.fun + +def expand(win, ys, zs, helpers, V2): + """helpers: {stage: [(helper, width), ...]} for ONE replica; returns list of + (idx, copy, offset, width, stage, helper) and the remainder rank of every (idx, copy). + Copies of a piece are the 2V (side, port) data families; residuals packed from offset 0 in decreasing width.""" + pool = defaultdict(list) # (stage, width) -> helpers + for s, hs in helpers.items(): + for h, w in hs: pool[s, w].append(h) + for k in pool: pool[k].sort() + need = defaultdict(list) # (idx, width) -> stages multiset in deterministic order + for (idx, w, s), cnt in sorted(zs.items()): need[idx, w] += [s] * cnt + out = []; rem = {} + for idx in sorted(win): + pats = sorted([(pat, cnt) for (i, pat), cnt in ys.items() if i == idx], key=lambda t: (-sum(t[0]), t[0])) + copy = 0; ptr = Counter() + r = win[idx][1] + for pat, cnt in pats: + for _ in range(cnt): + off = 0 + for w in sorted(pat, reverse=True): + s = need[idx, w][ptr[idx, w]]; ptr[idx, w] += 1 + h = pool[s, w].pop(0) + out.append((idx, copy, off, w, s, h)); off += w + rem[idx, copy] = r - off; copy += 1 + while copy < V2: rem[idx, copy] = r; copy += 1 + return out, rem + +def save_selection(path, key, ys, zs, val): + """freeze the integer-programme choice (patterns per child, residual stages per child) for stdlib-only replay""" + import json + from pathlib import Path + p = Path(path); d = json.loads(p.read_text()) if p.exists() else {} + d[key] = dict(patterns=sorted([[i, list(pat), n] for (i, pat), n in ys.items()]), + stages=sorted([[i, w, s, n] for (i, w, s), n in zs.items()]), proxy_saving=val) + p.write_text(json.dumps(d, indent=1, sort_keys=True) + '\n') + +def load_selection(path, key): + import json + from pathlib import Path + d = json.loads(Path(path).read_text())[key] + ys = {(i, tuple(pat)): n for i, pat, n in d['patterns']} + zs = {(i, w, s): n for i, w, s, n in d['stages']} + return ys, zs, d['proxy_saving'] diff --git a/research/e8-rank138-idle-hosting/code/residual_routes.py b/research/e8-rank138-idle-hosting/code/residual_routes.py new file mode 100644 index 0000000000..04feccfe52 --- /dev/null +++ b/research/e8-rank138-idle-hosting/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/e8-rank138-idle-hosting/local-evidence/TESTED-MANIFEST.json b/research/e8-rank138-idle-hosting/local-evidence/TESTED-MANIFEST.json new file mode 100644 index 0000000000..b6be61282a --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/TESTED-MANIFEST.json @@ -0,0 +1,167 @@ +{ + "parent_manifest_sha256": "344d58298774e9e2bbfd0af6332507c3b3d2172bc70d88a79853e679bdaaa33f", + "files": { + "AUDIT.json": "c8f4f258773e3e03594318ddc35e34ac53917f0b73eca6eb47eab21062fd16ce", + "CERTIFICATE.json": "3e83186e02e98ddc85b6092924c5e37f95b023f5319b130a7285db7e83e26bde", + "EXPECTED.json": "ebbebef5de7bb36085bbb80f547d1c05096ebe2364f553e49567152dfcca1587", + "INHERITED-HOSTING-PROOF.md": "4f06d1dead63c62b076f0a6c1521c68c0b0544aa2c5df5e74a408fdfc34f91c4", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "55c72da491d6d87643708ca7bc65f0193189a920ab43147c0941232db4742355", + "PROOF.md": "a1c23257c8bee1e47419a5a178ce7b3082e77c8e4036ee4ad7f4f0796bc84558", + "README.md": "d6d475107886e912c53a978cbbc9a2ad37f92237ea4b4acbe6a7c0b91a0fb7a5", + "SOURCE442-PINS.json": "489716866ad1d368a5f29a3d37e8d76a40474f5709e4ad593f18f9cd89dc9096", + "SOURCE443-PINS.json": "de26d780aff8967d0de75c52629f13621c6b8d4d8c22ad8d9ed6b072f760ebf4", + "VALIDATION.json": "8675d42b964f715f2070c1e7d15b1e2bd00e9b819b8d35447a745c7655d90609", + "code/SELECTION.json": "047e24485fd82eee38f309e203c426bf93f85f7c1408b5e844c66812e1c6e3f0", + "code/assemble.py": "38a5c2811199503db6f24e74669e5d18d4fbd1a2adb3a3759930fa0f93448fa5", + "code/audit.py": "6ecad15a71136c1b88b71f3efb634683457a5f36e2783865ec7d78cc5ed426cd", + "code/bit_audit.py": "4ca13914a50ab6976d5713321651fefb5e91ba37dfec9378048826cdb3f9dc29", + "code/bit_global.py": "4c59df9c4b9b41ae7bf0155449f1cc0a575edacd2e6184278500490b78b97602", + "code/bit_hosted.py": "775460abaf7fb2cf8a4c9192c570fe4cba13aad71f4a36a634972f83f33e2378", + "code/complex_hosted.py": "829c5c4f4bdfccedadd31505f1f0a394f7a208d1446b7bbf9cc92d3aa1530c0c", + "code/hosting_core.py": "d8b90cd5d152df3c7c351230863d9e61816ad5e1f21d69bea1a86a5daad559a3", + "code/residual_routes.py": "402924994a880d1ee45e42be2e7a51bd0281822046e474f5f5cc0adf885b52c7", + "research/STORAGE-FAILURE.json": "fd613981f05ca6016906cbbd9f8ca0013c0515b06b71da2ac5968ae4e6752276", + "research/assembly.log": "a7f1a4df38e65e43a3e8b3e8b0bf48f77b7b8e1c218ba590559dea28f5bf20bc", + "research/bit-hosting.log": "fd8b27814b47ded2df679e78a8e9854334589992652cca0292ab6fc57a559535", + "research/complex-hosting.log": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd", + "research/export.log": "9dce550911b0cf793ee3b9d1b02d438a4cf3e7de21854908d90c4c0a17398428", + "research/global-audit.log": "779a662dcaa8d53cd35ea5b3d61bf8351348f2831ef7c4a56c0c38e206435036", + "research/global-retry.log": "c13a89c8f874c29c650cf51177e6aee23e27aacf30c534018cd3785a7a6a3a6e", + "research/global-retry2.log": "d837282fa6a35a0bb2f0df023bb17c85cbc7f8602b91f7d263fd8e13c59ff354", + "research/group45-negative.json": "81d901662c17eaabb912ed713ebdc84d332923899485f8a11aee08f8da844d99", + "research/hosting-audit.log": "119d2232617c758984b3d5267343ec2841e640cfc2bc882a673b7bb8880ebeff", + "research/hosting443-kernel138-eight-screen.json": "870a3364cc064ebdda3ec6453312ba5a26a8e27dad42a829755b8b5d5d3a46f2", + "research/hosting443-kernel138-screen.json": "1477ea49bfb63b5e8492c1af2f3b3993c9be0dba43ff0dac69c2f4983ec64a03", + "research/hosting443-replica32-screen.json": "39b89e7dd5e3179c18670c85b0dda36a369816fc39a13d1f49aad0107fe2dcbb", + "research/rebuild443.log": "023692adb1c2b7fea087b728940b3ae515f5a0bc3b6b633f0e7c803a83b9ef51", + "research/upstream-shell-path-failure.log": "ae2abbd8913541c301d11aa4ad1f6a44af9ad69c91510c6a31701079a3bb9c50", + "upstream443/EXPECTED.json": "02f3fd3ac40f17f25822fa49d01ae6e84c2e02e2fafbf24f02845f24e02ec931", + "upstream443/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream443/MANIFEST.json": "11f8fc7eb52127b078c1d29029ba71a2e1bd3340e9f4d76c92fae1e22511d550", + "upstream443/NOTICE.md": "cb5bb6520addd9517672136c5519df4a2c06ed17b8afa1ce24e63855689c114d", + "upstream443/PROOF.md": "380a5269e012cb7d54cdf13289b7187aa82c16d23ed1689c5986485398f5cdca", + "upstream443/README.md": "86030e96e06e0df02cc775ed1e41122854bc8dba2d1f90eb30b646436028ae5f", + "upstream443/SOURCE.json": "20b4bc7418b62a7126fc476b0e8757f713f09dbe03b430048e9f66326688ea88", + "upstream443/code/audit_kernel.py": "e49f9b499f98dc2938b10e32db28da3e4f38291dc345c0b5e7b906ca2b0cfb9c", + "upstream443/code/bank_routes.py": "7c6997c455bd55acca3a1603797c34e7733d557c27a7694a1429ff15773a505d", + "upstream443/code/compose_kernel.py": "010e081821f20bcf6e097306289031804b2609e5160dba1c743272126ef7472a", + "upstream443/code/config.py": "283d7fad45155ee91e704d63ec947cf4a60aeff5cc43510bc0e835f7da7d8767", + "upstream443/code/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "upstream443/code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "upstream443/code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "upstream443/code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "upstream443/code/export249.py": "6d9817f7c431573aff695e1eacfa7c2ca6d3a2a10baa3a2ea814ab9b9f7b13ab", + "upstream443/code/global_kernel.py": "01cf4be0ab9affe48598062c4ae3610882aa77a9e18e75c4e596e2f08d8b2173", + "upstream443/code/iface386.py": "1b7c998513759195dee3e82a34c1a46dc3310236530a7f1dfbeefe00f108fc4f", + "upstream443/code/rebuild.py": "3efb6c81a247ac6d5cab87c47030a332292c2c46d482ff996588858f41cdad4d", + "upstream443/code/replica_kernel.py": "780e08ad63983d0256271e8c7803c74bb1623d15cc202d98177c440ff3726aad", + "upstream443/code/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "upstream443/code/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "upstream443/data/post-retiming.json": "d25a636bcebf97b46b01cd39259e8c4f59ab92a188f4cb4bd0b0b34936cf3b56", + "upstream443/data/residual-isometries.json": "e12ed7ddd13cee101ba74a083b54665fd64d0b122b0bad5b83d817dcc8bae9d8", + "upstream443/data/retiming.json": "f2b041a33577eebbf47f740ae1d7b94a68f2424de39df0c4ef075fad055c0793", + "upstream443/data/selection.json": "1a96e47f1889bc690316f95a3858b0062ce212ea876dd15e5123ed89d09a9c39", + "upstream443/data/upstream441/pair-retime-selection.json": "201d8cbc8ac1df10ee74246815f3ce8507b94395af69835e8098a8274bca5651", + "upstream443/data/upstream441/window-retime-selection.json": "170a2190b6bae36de3a18a8b4c1a152cebd95b839ae889da3049f9d9b0109e30", + "upstream443/data/word.json.gz": "d8d6d3d3f336720302bc40b3c1504fe3c3583a7a8d707bb9bd7b21f85e5e69c6", + "upstream443/parent436/EXPECTED.json": "a9655e303cb2c40ce024443b27c0a810ffc24f1ee1e5b07eb19241fad399b5e2", + "upstream443/parent436/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream443/parent436/MANIFEST.sha256": "7c6d4bd2ac74710d8a8a68fd637b31df9028a2376b569732374a739092c34310", + "upstream443/parent436/NOTICE.md": "eb9cb7eab03977930484fee70d0aea066803917a6304b1ad2644cfcc6bf2acd4", + "upstream443/parent436/README.md": "d737a3b77de97bdf67d2a140465be5b8886af6aa57516f78ad8f2839f3dae8cc", + "upstream443/parent436/SOURCE-pr370.json": "352a68f0898535311c63cac879a52b686246ba80844f1a3cc2f3c3f6b1046b4d", + "upstream443/parent436/SOURCE-pr376.json": "1608c15638f874243c3ad00bd6a08b30f0e9608de83002273819365ab300b0e7", + "upstream443/parent436/SOURCE-pr381.json": "c457c422d54645ad841c8528bf2efa6c253d1c134ee86c875b9b7d76d4f9520c", + "upstream443/parent436/SOURCE-pr386.json": "bba849ed0a1af4d45a76ec734d5f0d07806da2b161f1b5ad8ea63cf2d64b5aa4", + "upstream443/parent436/SOURCE-pr417.json": "d9b7e606f09b840ed9fe10dc8c8250b4cab9bbe5d0cacb62864ca8366a28b2b1", + "upstream443/parent436/SOURCE-pr425.json": "a2c5e2f0e03b0dbcba4ca18282a4ff390a6a395f14411410cfff42d5281d0289", + "upstream443/parent436/SOURCE-pr426.json": "f884cc42793a3afd249ebee20985f61422e7b5baf7c1fcab5b990e1959f31697", + "upstream443/parent436/SOURCE-pr431.json": "71cd86e64217fc4db0199ae8e5ef65cb0cc2ed593e15f03bc1501d4b32fdeb66", + "upstream443/parent436/SOURCE-pr433.json": "f1181aa9f30dcc2e5df7e94738fa0c0cabe5f56b31c8eb843fa0a257da79ed91", + "upstream443/parent436/code/b4/kappa_b4.py": "cc47efc71334d7d41d6475c5dfc8080a278d3b694b335c6a9873dad4632d1f7e", + "upstream443/parent436/code/bit/checkers/certify_bit_k.py": "e68a81ef7981a90d613752003cd5cab5351e260f909b094f1668d8a4dfe480df", + "upstream443/parent436/code/bit/checkers/columns_h.cpp": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "upstream443/parent436/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "upstream443/parent436/code/bit/checkers/cost.py": "d55d2b865d1c3d35e343e1a38c592b9172ed8e2596d1107e34d92e2a80c7d03f", + "upstream443/parent436/code/bit/checkers/finite_k.py": "7e67dc75e63a11e38ac6d6615656c7cf6982e5a33dd404d04b967bf474cad02e", + "upstream443/parent436/code/bit/checkers/geometry_k.py": "646b7e8773d9c99376cb00627f109a97319e6d72b439ff513c39035c28c3f70f", + "upstream443/parent436/code/bit/checkers/gram_frames.py": "223a5a07731fc315a90a3e48177796babc155c1d9985c7ae5017eff6af2a0608", + "upstream443/parent436/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "upstream443/parent436/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "upstream443/parent436/code/bit/checkers/tile_k.py": "64255088821f601ede2c3006f08cb97c39a4fa10dbbeb93a8a71fcfa0e1d8d77", + "upstream443/parent436/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "upstream443/parent436/code/bit/independent/checkword.py": "11bf9620ca9db16d52d9fe806b814fc9ec9a89c4d7645354d1861d96f6e805ad", + "upstream443/parent436/code/bit/independent/mutate.py": "0ff65aace5da4b57d96235bf830f8f11969322e75134d498aeb70e9753ec6b0d", + "upstream443/parent436/code/bit/mutate_records.py": "b0e75d6550412a7be4017695e6b237392b611bb852ad8ff309d6682c9f166a4e", + "upstream443/parent436/code/bit/producer/compile.py": "60fea6a9d6617a3f87376d3fda040642e9cb70e7c179015e03ede8d289f30357", + "upstream443/parent436/code/bit/producer/compile2.py": "0e23d4282ceb75768e82631da016aaff9818aec53c7d75a6b2a28ee1b1160dc3", + "upstream443/parent436/code/bit/producer/e8lib.py": "4f8a6843e83bc4f7055d7337f33dbe12ce499051f46bee1b81bbf6b34c652574", + "upstream443/parent436/code/bit/producer/frames.py": "ba71f77dd3e3c1c54f361c066cebe9faadbc78db46376046e7af625bf1de8c24", + "upstream443/parent436/code/bit/producer/fullword.py": "0daf87599e9e48646b985ad87351c56c1b73cfc99cdf9eca081483846ddbfa90", + "upstream443/parent436/code/bit/producer/ham1.py": "359040fb432fd392472af6b8f5dca0234dd6c2be744a791df27ba62bc5da5175", + "upstream443/parent436/code/bit/producer/ham2.py": "fdf0af785ce697bd7f80b4e75f7163735f3b599d9dc42f652f0ffdbdf18ea8bf", + "upstream443/parent436/code/bit/producer/params-r865.json": "1256c54debe0a551da8e24896ab73ef0bd4a5233ff8e6fedf21a9e6301d6e6f3", + "upstream443/parent436/code/bit/producer/price.py": "46c858e60ba0a117bf8227b864abf55e85ebee2d56a0dce64472b706499ac405", + "upstream443/parent436/code/bit/receipts_k.py": "67f714e10a846e9cc62996342f825cd715055031e0b12591abdafd225717e195", + "upstream443/parent436/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "upstream443/parent436/code/complex/code/bridged.py": "5fe7174cd3a6580a74e4c1bf8fa7b426e8673f1c285603bf3076d4e758d70731", + "upstream443/parent436/code/nine/audit_g.py": "48ac1d66a406ed72dd9192a19118776ba253f5c90e96185f5c1b98bb670a6361", + "upstream443/parent436/code/nine/certify_g.py": "97a5f7e9bf2202d170da17d5d17d876903641d7d24433115c27ea95b9fe65ccd", + "upstream443/parent436/code/nine/cited.py": "b6722d990fba39ef41b3d658326bdde97c25b749a454bda2509fdffeabd31a86", + "upstream443/parent436/code/nine/compose433.py": "27dd61574f1f6921238ff9f57c6fd536e6f0a0983138bc5c99aeb141d3ccc195", + "upstream443/parent436/code/nine/geometry.py": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca", + "upstream443/parent436/code/nine/global_word_g.py": "ff8d6be2432b79584dc2f2d2bdcd3cefede0d0730d1eecb0a6859dd527f5fce4", + "upstream443/parent436/code/nine/regress386.py": "bf97418a9aec7c3f55d04d4754e626f17f44aa2059ffd8acd7b315dcf9e89110", + "upstream443/parent436/code/pricing/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "upstream443/parent436/code/pricing/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "upstream443/parent436/code/pricing/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "upstream443/parent436/code/pricing/prime_witnesses.py": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "upstream443/parent436/code/provenance.py": "e28fd87d0e34a6f6f6f1fddb6c4891deac220662c954de855d7aa5a7f9cceca4", + "upstream443/parent436/code/reuse/controls.py": "89df84f78064de12cd11f0f5f63aa9cad2385f5d18d2e4ade7409a5ae0435721", + "upstream443/parent436/code/reuse/ecost.py": "901c61f0a8082fc87012f91372aafbb2a1b464be685426e32e77cc9f0e393958", + "upstream443/parent436/code/reuse/regen.py": "972740a54e487b12aebc09f2fab5f2878835727cb4ad82fb1aa26a0f2d34f517", + "upstream443/parent436/code/reuse/retime.py": "d8530464a6e00e0a509cf8b392cae70579c8d0f636a0dc86677f5dee0863d34d", + "upstream443/parent436/code/reuse/reuse.py": "b802483c024d23c92df30f1a2d93838280e39dfa0bd7129b879d6cc0b84c80a4", + "upstream443/parent436/code/tail/apply376.py": "ac49a9a7da44a1e8fbf468c6d8901b5712705d3caa9dd3e0cb89f056f0e67b2a", + "upstream443/parent436/code/tail/bootstrap.py": "6811203fb7df1ac8a9eee3fbeca722de98dbc99077921fe77e0d452c760f0ffc", + "upstream443/parent436/code/tail/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "upstream443/parent436/code/tail/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "upstream443/parent436/code/tail/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "upstream443/parent436/code/tail/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "upstream443/parent436/data/bit/bitE8-r740.json.gz": "f8daa4982d865748fa9a3095b2cf4290f34e2c085d6d35673fd7171cab95623c", + "upstream443/parent436/data/bit/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "upstream443/parent436/data/bit/reuse-ledger.json": "e7bb324150a5342076c9a268f69b83c65f817a7cfc1d14fda9558a9f7e486f0b", + "upstream443/parent436/data/complex-b-433.json": "161663bf22c8e6a62e2dce194b326016c11e551f31691140ef34355e9b2e4e92", + "upstream443/parent436/data/complex-b-b4.json": "1bdd6a649615ddb6bf7cdf24abd7bb1bbd6cc9284e2aa44f796786310d3e1a3b", + "upstream443/parent436/data/complex-b-nine.json": "2815ca568c88edde758c31e756d0d07aa08233243f365bc111383d7f0c1c757a", + "upstream443/parent436/data/controls/LICENSE-pr426": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream443/parent436/data/controls/pr376/LICENSE-pr376": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "upstream443/parent436/data/controls/pr376/frame-selection.json": "a83d4880579fb1f8cffb701d1d685c157b7fa14ef9d6642e42ff1e4f5a1b8c5c", + "upstream443/parent436/data/controls/pr376/reuse-selection.json": "0b300bab47cf0d69cbc7965bf01c2a27c96b97677ee651334470d8c968b603f1", + "upstream443/parent436/data/controls/pr386/AUDIT.json": "59625785de14c3df03abe009cdc67c7918b8fcfa8dc5f468c3d363af0494cbb7", + "upstream443/parent436/data/controls/pr386/COMBINED.json": "6043a7486790ac8ca04dc67ddf5b57076e7c880b66eb456127c6cd933c77764a", + "upstream443/parent436/data/controls/pr386/GLOBAL.json": "55af2a11552c04f5a87268bc2d1798246297874e9e87b50e49773e91cc495c2d", + "upstream443/parent436/data/controls/pr417-bitE8-nine-kernel.json.gz": "acc2b138ce16be1ff12570d3ec1634fe28cccaf259de797be0f62628fb37cccb", + "upstream443/parent436/data/controls/pr425/FINAL.json": "46ea33ad1979cd14a2b686e8742792739312a07ab72945517c3809b647b31c42", + "upstream443/parent436/data/controls/pr426-bit-candidate.json.gz": "bd3b84244528767b85d8d7fe423b155630b5c659e21e51563674b1dcb6305ad7", + "upstream443/parent436/data/controls/pr431/VALIDATION-LOCAL.json": "2b77c882ac524adbbacc9775ee172c854ecd4027e36db59ed15a7d1b6b9e1ce5", + "upstream443/parent436/data/controls/pr433/CERTIFICATE.json": "f71580f22193726fb582eae604807ff70a7302265e001d9484a718e63bbe14c4", + "upstream443/parent436/data/params/params-r740.json": "871fc75ce6fea2638f68553bcfe771d09297e987d59c123338227e29415851d1", + "upstream443/parent436/discovery/README.md": "d840952ed60b4b460da83b04c4c8be3622b9bef04b62961c0d496c445f8b84d1", + "upstream443/parent436/discovery/search_params.py": "57de04a8ea7e2df8b783e02c454bb102edab48206db0a41a1f28d50e7f164441", + "upstream443/parent436/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99", + "upstream443/parent436/requirements.txt": "b9f87c1ec529679c19b8421a7a69b377b54b89949cfc5e1b1ed8c134bfab8917", + "upstream443/parent436/verify.sh": "19bf483b109163b0ccc941f459e70c2e37d20c9c04e69e7c8eb98f329577b26c", + "upstream443/verify.sh": "3720f542e9cf1ec35b052dec130b9cb6eefa37798f73ba5a4026b400c78d0697", + "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": "3d7cdf274e54852d097cc23a9009856ce79b207bc81da4fcf9874dbeb9c80675" + } +} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/AUDIT.json b/research/e8-rank138-idle-hosting/local-evidence/full311/AUDIT.json new file mode 100644 index 0000000000..0519d52555 --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/AUDIT.json @@ -0,0 +1,41 @@ +{ + "status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", + "bit_template_sha256": "50d9302688535aee7196ddba537c99620195b39ec096b3cfde8c2d6b2e691ef7", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", + "bit_profile": { + "1": 728640, + "2": 305600, + "3": 80832, + "4": 111584, + "5": 33984, + "6": 8576, + "7": 16704, + "8": 2592 + }, + "complex_profile": { + "1": 138384, + "2": 56448, + "3": 15936, + "4": 16128, + "5": 32064, + "7": 3840, + "8": 7488 + }, + "bit_live": 37464, + "complex_live": 8400, + "bit_hosted_residuals": 159168, + "complex_hosted_residuals": 34560, + "bit_maxchild": 8, + "complex_maxchild": 8, + "mutations_rejected": [ + "bit: hosted residual outside its window", + "bit: overlapping hosted coordinates", + "bit: understated live stock", + "bit: hosted owner on the active pair", + "bit: missing remainder child", + "complex: hosted residual outside its window", + "complex: remainder child understated", + "complex: dropped bank", + "complex: duplicated hosted residual" + ] +} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/RECEIPT.json b/research/e8-rank138-idle-hosting/local-evidence/full311/RECEIPT.json new file mode 100644 index 0000000000..098e9ba8f8 --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/RECEIPT.json @@ -0,0 +1,54 @@ +{ + "status": "PASS_FULL_RANK138_IDLE_HOSTING", + "python": "3.11.15", + "kappa": "623036752743971/500000000000000000", + "kappa_decimal": "0.001246073505487942", + "manifest_sha256": "cf742207a00951e991a3ed667ee015449dedcd3fc41f3f857f36ed60a77fa7a8", + "checks": [ + { + "name": "parent-full", + "seconds": 152.77, + "log_sha256": "b6b21746622747ea37b7423dd7600953185f3da7c5cca1019526ab4d9cfb06f1" + }, + { + "name": "rank138-rebuild", + "seconds": 196.52, + "log_sha256": "023692adb1c2b7fea087b728940b3ae515f5a0bc3b6b633f0e7c803a83b9ef51" + }, + { + "name": "export-records", + "seconds": 0.58, + "log_sha256": "9dce550911b0cf793ee3b9d1b02d438a4cf3e7de21854908d90c4c0a17398428" + }, + { + "name": "bit-global-32", + "seconds": 10.41, + "log_sha256": "84a8b999a5ae5257692cea40cdb315ae9dc8b6e309b3f54cbf3c494033d95c9e" + }, + { + "name": "bit-global-audit", + "seconds": 12.69, + "log_sha256": "0a7785ca29a6c66f234d7ff6016ee0aba1af7b484f78d6804035b1947300d5ce" + }, + { + "name": "bit-hosting", + "seconds": 1.62, + "log_sha256": "fd8b27814b47ded2df679e78a8e9854334589992652cca0292ab6fc57a559535" + }, + { + "name": "complex-hosting", + "seconds": 0.4, + "log_sha256": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd" + }, + { + "name": "independent-hosting-audit", + "seconds": 7.93, + "log_sha256": "119d2232617c758984b3d5267343ec2841e640cfc2bc882a673b7bb8880ebeff" + }, + { + "name": "exact-assembly", + "seconds": 0.24, + "log_sha256": "a7f1a4df38e65e43a3e8b3e8b0bf48f77b7b8e1c218ba590559dea28f5bf20bc" + } + ] +} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/RESULT.json b/research/e8-rank138-idle-hosting/local-evidence/full311/RESULT.json new file mode 100644 index 0000000000..79f353344d --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/RESULT.json @@ -0,0 +1,116 @@ +{ + "status": "PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY", + "kappa": "623036752743971/500000000000000000", + "kappa_decimal": "0.001246073505487942", + "bit_lower": "1247628141860215921989/1000000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "bit", + "gain_over_pr434_percent": 9.97024959309606, + "bit": { + "live": 37464, + "physical": 37473, + "maxchild": 8, + "rank_mass": 2387712, + "hosted_residuals": 159168, + "prefix_bits": 123, + "charged_prefix_bits": 128, + "coefficient_bits": 123, + "two_level_coefficient_bits": 286, + "charged_two_level_coefficient_bits": 320, + "row_coefficient": 18355 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "1210023020562932285909733185753514651895273936640480712747372223547045381556825955966871607749148219279715333863104949343240788001105438628919762573664921739313/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29982546840970881/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "1210023020562932208550531584855138187051523936640480712747372223547045381556825955966871607749148219279715333863104949343240788001105438628919762573664921739313/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "38074589290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "605011510281466180424444372763013272459778782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "38074589290167729642712361076787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "30479503535709832270357287638923212201504881653782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "1210023020562932362058911766088958830829290750886966060852098286906564668809453732419826226192322263312843726113956730063525454138000489285678974572559483110393237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "605011510281466180424444372763013272459778782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "38074589290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "30517578124999999969482421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "epsilon_below_one": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "guard_width": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "K_geometry": "22926258183040167729642712361076787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313000000000000000000", + "K_dominates_log": "1228212557747346116278637799568389317819547907762757283883975535723667216982173271635375856635912664540754979455978835428421967711127628561957611833926475733241366318044901418711281852462421879377/985666216590005410387526381607315735435326398265078492719210373800802159936192547072437535792828459736978290772284438572406712739995566200968670351829492676701911718147537578120623000000000000000000", + "record_suffix": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "phase_local": "304596714321341989691514924324134665947628939912678395869054356381502389880230086139641918599489055525052501948858514110537745578082822095622152313851631592045325193875046396155240737426335078260687/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "phase_boundary": "60919342864268373493780813432692755578871524121105440377716194302353858539628746968034817302322643708559612727625901345045937962962487823437954510880284534386040313403590897023637537426335078260687/48889044342864268355221308527722860477592189353947893238872834540519787132835150334792901775324291602954123222305308153191372951903780083568046049450742836764414821220117863874782900800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "61035156249999999908409191035709832277986682170173212201504881653782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/122222610857160670888053271319307151193980473384869733097182086351299467832087875836982254438310729007385308055763270382978432379759450208920115123626857091911037053050294659686957252000000000000000000", + "prime_interval_packing": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "alpha_positive": "76149178580335474506139195363407874976918862608078750095924829432300641748416330666260261133395544447090418303952939642889175938907508715449466873565993725489745618433056865719362737426335078260687/61111305428580335444026635659653575596990236692434866548591043175649733916043937918491127219155364503692654027881635191489216189879725104460057561813428545955518526525147329843478626000000000000000000", + "alpha_below_one": "61035156249999999969520496464290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/61111305428580335444026635659653575596990236692434866548591043175649733916043937918491127219155364503692654027881635191489216189879725104460057561813428545955518526525147329843478626000000000000000000", + "alpha_below_one_fourth": "15201677178564748386500519719549986024270640310500637887051835964480132837262568148956521543655445581476073088666455858229414871531023767399564923579791142763389886012853775595150293762573664921739313/61111305428580335444026635659653575596990236692434866548591043175649733916043937918491127219155364503692654027881635191489216189879725104460057561813428545955518526525147329843478626000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "1860318361375777835971716568804910774470137061740509136531467936075974298045185231681041481622566244818294714959773011087729104800121343747530183249547614769575520090772329979864591831490202963442824158881097379776855533337218759204748132801963088395741865976055068446531008216776203112366217673904999457051939926327280789302456684109025129711969/1864969037737436994751789418324388903716743063123622636370576268788138852418333066360202857029887832754292420284473730209021490169669345228883592584638322325302689408116068415633502990722656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "1711421148714570734544659924251784922269727527647396092950398736659443785136292578155190671887037570995901619720945372883193899117973656129955666262849301127266679191524857373924593821787720994765217939/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "26676886390601640958575817478941199504343613257003698277665410697642142066198541569477104007541924888402338313813423324686146058481989370871091578007284269104667359512172277305568077/15277826357145083861006658914913393899247559173108716637147760793912433479010984479622781804788841125923163506970408797872304047469931276115014390453357136488879631631286832460869656500000000000000000", + "coordinate_movement_above_kappa": "94887473893671717996516814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "22798120066913114195138317128055611210192108167789963281035299807459417174375114179708644405506167524958349613686029053627684022024116189512154375107854265231575455761770889689396841/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313000000000000000000", + "bulk_exposure_above_kappa": "94887473893671717996516814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "274051918678175416727146490513925253077022220380972006071168963223149938269066820315405846072782386955205777951310685216255296461012517172787321343582976940785881435881888112280392667/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "scalar_work_above_kappa": "396274529535336087615199761833232404271002693765841739168351049574449406101154696152388100511093115962591086007073955599233728840771967381707436467209834032696918488932182771967349919/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "dimension_above_kappa": "15239751767854916135152649350688247059328258305832482867195852463091264798654426218019360261409700443553940500571516090530034266343492048571131668028632234382211946375997436643797703012172277305568077/15277826357145083861006658914913393899247559173108716637147760793912433479010984479622781804788841125923163506970408797872304047469931276115014390453357136488879631631286832460869656500000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "94287020424277834163680254991104056367009/62500000000000000000000000000000000000000000000", + "cutoff_log2": "15818260083840" + }, + { + "gap": "29408785023369495427727557576784775208283541746515592160223473/15625000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10162215197593843554" + }, + { + "gap": "9172806953268257565007102287437866302700738375134023268194695915019528111703606081/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6528569967547151436395053" + }, + { + "gap": "2861063023687136162665647272462448282050413362534253607940694932308513294882957767367031894837944602257/976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4194186502884772884117694502077" + }, + { + "gap": "892385685996938155756805007131692738674820820957983219861627580057577912447454106275234926512117420246977622028593300181729/244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2694495197022448340895066350774684894" + }, + { + "gap": "278341373810753514651895273936640480712747372223547045381556825955966871607749148219279715333863104949343240788001105438628919762573664921739313/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1731039943451104430442680727076306832163430" + } + ], + "bit_template_sha256": "50d9302688535aee7196ddba537c99620195b39ec096b3cfde8c2d6b2e691ef7", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f" +} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/bit-global-32.log b/research/e8-rank138-idle-hosting/local-evidence/full311/bit-global-32.log new file mode 100644 index 0000000000..faa203d683 --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/bit-global-32.log @@ -0,0 +1,2 @@ +Fresh prefix bits 123 charged 128 +{"status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", "h": 8, "m": 64, "v": 120, "R": 740, "replicas": 32, "live": 56739, "physical": 56748, "word_sha256": "64d7d1e0c6ea7a3a8e91254c0dfd51b71637b49703ef4c1fce184fded5040bc9", "source_records_sha256": "93d36bac33afbe2a4b6a20064449766c72f91132d104071692c63c885e7c27d3", "independent_unbanked_scalar_columns": 7620, "all_scalar_columns_restored": true, "geometry_sha256": "51d0165bb89579eaea969630b48b290448dddb22e88a687f83a8c9760929846a", "template_sha256": "4d35d8f9c42d3823d3a40dc88e11dce08f1911131960b081073a13ac3a23fa22", "emitted_program_sha256": "4f83de501c4175bd9c4f3b107d7c24ff5980abfa551b8674a0c0149fdef74e46", "emitted_events": 5681952, "local_invocations": 288, "bank_assignments": 213120, "banks_per_stage": 2891, "entrance_rank_total": 138, "mixed_width_slots": true, "padding_calls": 0, "residual_isometries": 16, "extra_helper_route_factor_bound": 144, "profile": {"1": 728640, "2": 290304, "3": 80640, "4": 99936, "5": 33984, "7": 27072, "8": 2592, "14": 15360, "28": 15360, "42": 15360}, "paid_calls": 1309248, "rank_mass": 3621312, "deficit": 9984, "maxchild": 42, "halving_depth": 2, "halving_integer_inequality": [4096, 3528], "local_additions": 15414, "bridge_additions": 69120, "copy_erase_episodes": 2592, "global_prefix_bits": 123, "charged_prefix_bits": 128, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 10.332607334014028} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/bit-global-audit.log b/research/e8-rank138-idle-hosting/local-evidence/full311/bit-global-audit.log new file mode 100644 index 0000000000..b1ec560f88 --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/bit-global-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", "template_sha256": "4d35d8f9c42d3823d3a40dc88e11dce08f1911131960b081073a13ac3a23fa22", "source_frames": 944, "exact_nested_frame_pairs": 3364, "exact_reflected_pairs": 3364, "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", "exact_bank_families": 26019, "mixed_width_slots": true, "entrance_rank_total": 138, "residual_isometries": 16, "mutations_rejected": ["omit an idle child", "omit a bridge", "omit terminal exchange", "remove a local invocation", "re-use a helper bank slot", "understate live stock", "omit a local paid move", "wrong reflected copy charge", "alter residual orthogonal basis", "wrong residual frame", "omit a residual route factor"], "profile": {"1": 728640, "2": 290304, "3": 80640, "4": 99936, "5": 33984, "7": 27072, "8": 2592, "14": 15360, "28": 15360, "42": 15360}, "seconds": 12.633058750070632} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/bit-hosting.log b/research/e8-rank138-idle-hosting/local-evidence/full311/bit-hosting.log new file mode 100644 index 0000000000..7ce174fb44 --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/bit-hosting.log @@ -0,0 +1 @@ +{"live": 37464, "maxchild": 8, "hosted_residuals": 159168, "banks_per_stage_hosted": {"0": 0, "1": 0, "2": 2120, "3": 2504, "4": 0, "5": 0, "6": 0, "7": 2120, "8": 0}, "rank_mass": 2387712} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/complex-hosting.log b/research/e8-rank138-idle-hosting/local-evidence/full311/complex-hosting.log new file mode 100644 index 0000000000..b8925ed69d --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/complex-hosting.log @@ -0,0 +1 @@ +{"live": 8400, "maxchild": 8, "hosted_residuals": 34560, "banks_per_stage": [0, 0, 0, 160, 0, 120, 0, 0, 440], "deficit": 2496} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/exact-assembly.log b/research/e8-rank138-idle-hosting/local-evidence/full311/exact-assembly.log new file mode 100644 index 0000000000..c761ef84f0 --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/exact-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY 0.001246073505487942 binding bit gain over #434 9.9702% diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/export-records.log b/research/e8-rank138-idle-hosting/local-evidence/full311/export-records.log new file mode 100644 index 0000000000..43c21e206c --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/export-records.log @@ -0,0 +1 @@ +exported 19729 records, 944 frames, n 980 ZERO 0 diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/independent-hosting-audit.log b/research/e8-rank138-idle-hosting/local-evidence/full311/independent-hosting-audit.log new file mode 100644 index 0000000000..e57495e0ef --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/independent-hosting-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", "bit_template_sha256": "50d9302688535aee7196ddba537c99620195b39ec096b3cfde8c2d6b2e691ef7", "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", "bit_live": 37464, "complex_live": 8400, "bit_hosted_residuals": 159168, "complex_hosted_residuals": 34560, "bit_maxchild": 8, "complex_maxchild": 8, "mutations_rejected": ["bit: hosted residual outside its window", "bit: overlapping hosted coordinates", "bit: understated live stock", "bit: hosted owner on the active pair", "bit: missing remainder child", "complex: hosted residual outside its window", "complex: remainder child understated", "complex: dropped bank", "complex: duplicated hosted residual"]} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/parent-full.log b/research/e8-rank138-idle-hosting/local-evidence/full311/parent-full.log new file mode 100644 index 0000000000..ee23b611cb --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/parent-full.log @@ -0,0 +1,16 @@ +PASS hamming_packets +PASS complex_construct +PASS complex_audit +PASS complex_emit +PASS complex_phases +PASS bit_construct +PASS bit_kernel +PASS bit_export +PASS bit_global +PASS bit_audit +PASS bit_price +PASS complex_integrate +PASS complex_replay +PASS combined +PASS independent_audit +PASS conditional kappa 0.001138798055343319 diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/parent/RESULT.json b/research/e8-rank138-idle-hosting/local-evidence/full311/parent/RESULT.json new file mode 100644 index 0000000000..655468f65f --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/parent/RESULT.json @@ -0,0 +1,126 @@ +{ + "status": "PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY", + "kappa": "1138798055343319/1000000000000000000", + "kappa_decimal": "0.001138798055343319", + "bit_lower": "17814006170324008149/15625000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.663365470849168, + "bit_invoice": { + "prefix_bits": 123, + "charged_prefix_bits": 128, + "extra_helper_route_factor_bound": 144, + "selector_charge": 2375347104, + "full_counted_coefficient": "8271410009661736653226855278395470361", + "two_level_coefficient": "7323242093316479963924177312150069573045566553609912891292783054664675728289084971684", + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14187, + "physical": 14196 + }, + "strict_outer_constraints": { + "bit_positive": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "561793975111583755318899079343869984489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "561793975111583740163871249502858784489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "7296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "280896987555791884675169479480856836925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "7296616927364715307747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "6392703383072635284692252683394401362436925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "561793975111583769912132934073297429170711561242364812146848396605205517119521114242518016217267837645828790697405933529381995454757936430882408462422461948391475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "280896987555791884675169479480856836925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "7296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "6399999999999999993600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "epsilon_below_one": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "guard_width": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "K_geometry": "4807296616927364715307747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000", + "K_dominates_log": "235374739592410170982280634781739427591186359788777903970880237514185872696357672241417629322931845013535600673179511963907670740968611784320670684630538885699570024398052336858483077811796097147/206686987642818216571217655374374149598808841734162927502779721971677113375476079643918531004799011488932066605472191000895974276213159612680294946897790151565994516922188203902853000000000000000000", + "record_suffix": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "phase_local": "58372935418917754454681915917424386796845433466807383126296955216873364531896370569805174550396380293678057008334012065307555731225662916937944268044009595277496842871179869361713975412165679011557/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "phase_boundary": "11674587083783545765099089641593106393171233408882566574800116036134070837442169216368623198272500889556042482651317487546259330534795761167426803522443524584184685509040215035678775412165679011557/10251674587083783541932395706568957820100918550014481204137874209795184823423613550338359137838030969851030503631420673644440324100172716788942629366130391517673328039340534913581508800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "12799999999999999980792703383072635286292252683394401362436925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/25629186467709458854830989266422394550252296375036203010344685524487962058559033875845897844595077424627576259078551684111100810250431791972356573415325978794183320098351337283953772000000000000000000", + "prime_interval_packing": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "alpha_positive": "14593233854729433808198016283832561418400870912502867609268668484930276693345556800958407657780243352313668390506485898656340355577974958403084145055041404002516695344173943431055975412165679011557/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "alpha_below_one": "12799999999999999993607296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "alpha_below_one_fourth": "3189055074608952923045675642018966757363136175967022508683817022076064980626533677679778822916604434726133363994312474615231260925725999038141487531860705945270398316949743217063165524587834320988443/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "81826496822092562171882315893595751752399902690116486852838304432755607303153150619225216237579156329475548128864912385926260879534056410653826445668927928937673680050034015948260296943169395903763640168091395592402062955133096133288079820489374838549015828583026644692484032808774556966449204475165761360629808686214538063881707838504539564249/82013396696670268335459165652551662560807348400115849633102993678361478587388908402706873102704247758808244029051365389155522592801381734311541034929043132141386624314724279308652070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "358866983483351341747717718113540406945159983950396044078204190673084545194703056156900337057440514200925643528703135014248295158315822434641030782333039504686200551635115880638897842073763502962965329/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "10428274416196871282531516897522607540915684699387944996351562842329855748924675580097931857187250784626831881239543084291418480285841495843978289147099063037268827644742874203737683/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000", + "coordinate_movement_above_kappa": "16618746334944244681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "100524444981737664220594239522925222583815265140722356094134786530196630857122927778411434900962035711748445411747629081591081943080838696272228644831689208468074940503875997068731/160182415423184117842693682915139965939076852343976268814654284528049762865993961724036861528719233903922351619240948025694380064065198699827228583845787367463645750614695858024711075000000000000000", + "bulk_exposure_above_kappa": "16618746334944244681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "51389712244938146691713398597152867139510107126308306207881645833028893418198612295976082551754159496230184726068155069192471829473692226786380596407635030805421471035003822024959249/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "scalar_work_above_kappa": "77018898712647605546544387863575261689762403501344509218226331357516855476757646171821980396349236920857760985146706753303572639724124018758737169822961009599604791133355159308913021/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "dimension_above_kappa": "6392703383072635283920527099591272644968442803763556788329513318265954481711804373368381287775906223941037792417612863599056678676935136298329336932010001145432459122511228716280384644742874203737683/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "50238871853096532822362240972278860750249/40000000000000000000000000000000000000000000000", + "cutoff_log2": "22821423299056" + }, + { + "gap": "11455431336719088296695724797447540819776987379259584929022443/8000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "17557374861114977035" + }, + { + "gap": "2612059193805271546589956973717711376230817511984641822790221508429225435153562001/1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13507545431071750093791293" + }, + { + "gap": "595599854024942868145937931074452609889067823826597234111825602004869306469267614758018107869138838307/320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10391860116659867549821478467986" + }, + { + "gap": "135808249275448458154076421829336450566886398980362416351705509454393700941063236129602722212894374934350058630123597688249/64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "7994846823599212441742710007613379908" + }, + { + "gap": "30966899079343869984489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6150734807365621625035986466966332327804006" + } + ], + "bit_template_sha256": "b87ed8c20819237f2daacdd1383a2776419551a62a7014eb9720af146a9dd9ec", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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.", + "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", + "manifest_sha256": "344d58298774e9e2bbfd0af6332507c3b3d2172bc70d88a79853e679bdaaa33f" +} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full311/rank138-rebuild.log b/research/e8-rank138-idle-hosting/local-evidence/full311/rank138-rebuild.log new file mode 100644 index 0000000000..376524fe7c --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full311/rank138-rebuild.log @@ -0,0 +1 @@ +{"donor_slots": 103, "entrance_rank": 138, "entries": 114, "input_sha256": "d6ec8811541d6ab59a3bbbaaa15bccc8918b3b43b23d9f593198cfe90826fd20", "interface": {"R": 740, "helper_start_dims": {"0": 626, "1": 106, "4": 8}, "n": 980, "prefix_allow": 192, "prefix_bits": 123, "prefix_ok": true, "streams": {"forward": {"adds": 15414, "copies": 9, "hist": {"1": 2530, "2": 1008, "3": 280, "4": 347, "5": 118, "7": 14, "8": 9}, "row_l1": 780}, "reverse": {"adds": 15414, "copies": 9, "hist": {"1": 2530, "2": 1008, "3": 280, "4": 347, "5": 118, "7": 14, "8": 9}, "row_l1": 18182}}}, "mutations_rejected": ["retained row used as pivot", "duplicate pivot", "eight replicas do not fill integral banks", "omit a kernel dirty-response correction", "wrong primitive input frame"], "output_sha256": "64d7d1e0c6ea7a3a8e91254c0dfd51b71637b49703ef4c1fce184fded5040bc9", "post_kernel_frame_changes": [112, 42], "pre_kernel_frame_changes": 57, "replicas": 32, "retimed_sha256": "fec026cda755e5ef93f7ed56923d1452da925cbe0051585e913e0837d9a70ffb", "status": "PASS_FROZEN_RETIMING_KERNEL_REPLICA_REBUILD"} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/AUDIT.json b/research/e8-rank138-idle-hosting/local-evidence/full314/AUDIT.json new file mode 100644 index 0000000000..0519d52555 --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/AUDIT.json @@ -0,0 +1,41 @@ +{ + "status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", + "bit_template_sha256": "50d9302688535aee7196ddba537c99620195b39ec096b3cfde8c2d6b2e691ef7", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", + "bit_profile": { + "1": 728640, + "2": 305600, + "3": 80832, + "4": 111584, + "5": 33984, + "6": 8576, + "7": 16704, + "8": 2592 + }, + "complex_profile": { + "1": 138384, + "2": 56448, + "3": 15936, + "4": 16128, + "5": 32064, + "7": 3840, + "8": 7488 + }, + "bit_live": 37464, + "complex_live": 8400, + "bit_hosted_residuals": 159168, + "complex_hosted_residuals": 34560, + "bit_maxchild": 8, + "complex_maxchild": 8, + "mutations_rejected": [ + "bit: hosted residual outside its window", + "bit: overlapping hosted coordinates", + "bit: understated live stock", + "bit: hosted owner on the active pair", + "bit: missing remainder child", + "complex: hosted residual outside its window", + "complex: remainder child understated", + "complex: dropped bank", + "complex: duplicated hosted residual" + ] +} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/RECEIPT.json b/research/e8-rank138-idle-hosting/local-evidence/full314/RECEIPT.json new file mode 100644 index 0000000000..24e3926f9b --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/RECEIPT.json @@ -0,0 +1,54 @@ +{ + "status": "PASS_FULL_RANK138_IDLE_HOSTING", + "python": "3.14.8", + "kappa": "623036752743971/500000000000000000", + "kappa_decimal": "0.001246073505487942", + "manifest_sha256": "cf742207a00951e991a3ed667ee015449dedcd3fc41f3f857f36ed60a77fa7a8", + "checks": [ + { + "name": "parent-full", + "seconds": 131.48, + "log_sha256": "b6b21746622747ea37b7423dd7600953185f3da7c5cca1019526ab4d9cfb06f1" + }, + { + "name": "rank138-rebuild", + "seconds": 120.84, + "log_sha256": "023692adb1c2b7fea087b728940b3ae515f5a0bc3b6b633f0e7c803a83b9ef51" + }, + { + "name": "export-records", + "seconds": 0.4, + "log_sha256": "9dce550911b0cf793ee3b9d1b02d438a4cf3e7de21854908d90c4c0a17398428" + }, + { + "name": "bit-global-32", + "seconds": 10.97, + "log_sha256": "80b69cf534526a05dbec64e4c500972436b6b1e33ca139b9a860d337843bb796" + }, + { + "name": "bit-global-audit", + "seconds": 6.97, + "log_sha256": "f6d16f9fa3a585590049dc39281fbd2f6a73e48e3a9f10f616ab8d8112099c9d" + }, + { + "name": "bit-hosting", + "seconds": 1.11, + "log_sha256": "fd8b27814b47ded2df679e78a8e9854334589992652cca0292ab6fc57a559535" + }, + { + "name": "complex-hosting", + "seconds": 0.38, + "log_sha256": "3b42f65586cb5c37e06df560fae4dcde1c42526238697a73d103f9895df24fcd" + }, + { + "name": "independent-hosting-audit", + "seconds": 4.0, + "log_sha256": "119d2232617c758984b3d5267343ec2841e640cfc2bc882a673b7bb8880ebeff" + }, + { + "name": "exact-assembly", + "seconds": 0.23, + "log_sha256": "a7f1a4df38e65e43a3e8b3e8b0bf48f77b7b8e1c218ba590559dea28f5bf20bc" + } + ] +} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/RESULT.json b/research/e8-rank138-idle-hosting/local-evidence/full314/RESULT.json new file mode 100644 index 0000000000..79f353344d --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/RESULT.json @@ -0,0 +1,116 @@ +{ + "status": "PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY", + "kappa": "623036752743971/500000000000000000", + "kappa_decimal": "0.001246073505487942", + "bit_lower": "1247628141860215921989/1000000000000000000000000", + "complex_lower": "1267453159029119/1000000000000000000", + "binding_component": "bit", + "gain_over_pr434_percent": 9.97024959309606, + "bit": { + "live": 37464, + "physical": 37473, + "maxchild": 8, + "rank_mass": 2387712, + "hosted_residuals": 159168, + "prefix_bits": 123, + "charged_prefix_bits": 128, + "coefficient_bits": 123, + "two_level_coefficient_bits": 286, + "charged_two_level_coefficient_bits": 320, + "row_coefficient": 18355 + }, + "complex": { + "live": 8400, + "physical": 8978, + "maxchild": 8, + "rank_mass": 610704, + "hosted_residuals": 34560, + "physical_stock_bits": 2641, + "router_bits": 7983, + "literal_bits": 35283, + "row_coefficient": 15443 + }, + "strict_outer_constraints": { + "bit_positive": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "1210023020562932285909733185753514651895273936640480712747372223547045381556825955966871607749148219279715333863104949343240788001105438628919762573664921739313/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "29982546840970881/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "1210023020562932208550531584855138187051523936640480712747372223547045381556825955966871607749148219279715333863104949343240788001105438628919762573664921739313/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "38074589290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "605011510281466180424444372763013272459778782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "38074589290167729642712361076787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "30479503535709832270357287638923212201504881653782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "1210023020562932362058911766088958830829290750886966060852098286906564668809453732419826226192322263312843726113956730063525454138000489285678974572559483110393237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "76149178580335444178934016814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "605011510281466180424444372763013272459778782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "38074589290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30517578125000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "30517578124999999969482421875000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "epsilon_below_one": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "guard_width": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "K_geometry": "22926258183040167729642712361076787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313000000000000000000", + "K_dominates_log": "1228212557747346116278637799568389317819547907762757283883975535723667216982173271635375856635912664540754979455978835428421967711127628561957611833926475733241366318044901418711281852462421879377/985666216590005410387526381607315735435326398265078492719210373800802159936192547072437535792828459736978290772284438572406712739995566200968670351829492676701911718147537578120623000000000000000000", + "record_suffix": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "phase_local": "304596714321341989691514924324134665947628939912678395869054356381502389880230086139641918599489055525052501948858514110537745578082822095622152313851631592045325193875046396155240737426335078260687/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "phase_boundary": "60919342864268373493780813432692755578871524121105440377716194302353858539628746968034817302322643708559612727625901345045937962962487823437954510880284534386040313403590897023637537426335078260687/48889044342864268355221308527722860477592189353947893238872834540519787132835150334792901775324291602954123222305308153191372951903780083568046049450742836764414821220117863874782900800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "61035156249999999908409191035709832277986682170173212201504881653782566725704478412175133041978031040754436390422317748153672986059182404255391905060137447769971219093285727022240736737426335078260687/122222610857160670888053271319307151193980473384869733097182086351299467832087875836982254438310729007385308055763270382978432379759450208920115123626857091911037053050294659686957252000000000000000000", + "prime_interval_packing": "38074589290167752530895954826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313", + "alpha_positive": "76149178580335474506139195363407874976918862608078750095924829432300641748416330666260261133395544447090418303952939642889175938907508715449466873565993725489745618433056865719362737426335078260687/61111305428580335444026635659653575596990236692434866548591043175649733916043937918491127219155364503692654027881635191489216189879725104460057561813428545955518526525147329843478626000000000000000000", + "alpha_below_one": "61035156249999999969520496464290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313/61111305428580335444026635659653575596990236692434866548591043175649733916043937918491127219155364503692654027881635191489216189879725104460057561813428545955518526525147329843478626000000000000000000", + "alpha_below_one_fourth": "15201677178564748386500519719549986024270640310500637887051835964480132837262568148956521543655445581476073088666455858229414871531023767399564923579791142763389886012853775595150293762573664921739313/61111305428580335444026635659653575596990236692434866548591043175649733916043937918491127219155364503692654027881635191489216189879725104460057561813428545955518526525147329843478626000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "1860318361375777835971716568804910774470137061740509136531467936075974298045185231681041481622566244818294714959773011087729104800121343747530183249547614769575520090772329979864591831490202963442824158881097379776855533337218759204748132801963088395741865976055068446531008216776203112366217673904999457051939926327280789302456684109025129711969/1864969037737436994751789418324388903716743063123622636370576268788138852418333066360202857029887832754292420284473730209021490169669345228883592584638322325302689408116068415633502990722656250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "1711421148714570734544659924251784922269727527647396092950398736659443785136292578155190671887037570995901619720945372883193899117973656129955666262849301127266679191524857373924593821787720994765217939/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "26676886390601640958575817478941199504343613257003698277665410697642142066198541569477104007541924888402338313813423324686146058481989370871091578007284269104667359512172277305568077/15277826357145083861006658914913393899247559173108716637147760793912433479010984479622781804788841125923163506970408797872304047469931276115014390453357136488879631631286832460869656500000000000000000", + "coordinate_movement_above_kappa": "94887473893671717996516814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "22798120066913114195138317128055611210192108167789963281035299807459417174375114179708644405506167524958349613686029053627684022024116189512154375107854265231575455761770889689396841/30555652714290167722013317829826787798495118346217433274295521587824866958021968959245563609577682251846327013940817595744608094939862552230028780906714272977759263262573664921739313000000000000000000", + "bulk_exposure_above_kappa": "94887473893671717996516814246485348104726063359519287252627776452954618443174044033128392250851780720284666136895050656759211998894561371080237426335078260687/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "274051918678175416727146490513925253077022220380972006071168963223149938269066820315405846072782386955205777951310685216255296461012517172787321343582976940785881435881888112280392667/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "scalar_work_above_kappa": "396274529535336087615199761833232404271002693765841739168351049574449406101154696152388100511093115962591086007073955599233728840771967381707436467209834032696918488932182771967349919/244445221714321341776106542638614302387960946769739466194364172702598935664175751673964508876621458014770616111526540765956864759518900417840230247253714183822074106100589319373914504000000000000000000", + "dimension_above_kappa": "15239751767854916135152649350688247059328258305832482867195852463091264798654426218019360261409700443553940500571516090530034266343492048571131668028632234382211946375997436643797703012172277305568077/15277826357145083861006658914913393899247559173108716637147760793912433479010984479622781804788841125923163506970408797872304047469931276115014390453357136488879631631286832460869656500000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "94287020424277834163680254991104056367009/62500000000000000000000000000000000000000000000", + "cutoff_log2": "15818260083840" + }, + { + "gap": "29408785023369495427727557576784775208283541746515592160223473/15625000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10162215197593843554" + }, + { + "gap": "9172806953268257565007102287437866302700738375134023268194695915019528111703606081/3906250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6528569967547151436395053" + }, + { + "gap": "2861063023687136162665647272462448282050413362534253607940694932308513294882957767367031894837944602257/976562500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "4194186502884772884117694502077" + }, + { + "gap": "892385685996938155756805007131692738674820820957983219861627580057577912447454106275234926512117420246977622028593300181729/244140625000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "2694495197022448340895066350774684894" + }, + { + "gap": "278341373810753514651895273936640480712747372223547045381556825955966871607749148219279715333863104949343240788001105438628919762573664921739313/61035156250000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "1731039943451104430442680727076306832163430" + } + ], + "bit_template_sha256": "50d9302688535aee7196ddba537c99620195b39ec096b3cfde8c2d6b2e691ef7", + "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f" +} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/bit-global-32.log b/research/e8-rank138-idle-hosting/local-evidence/full314/bit-global-32.log new file mode 100644 index 0000000000..357fcf412c --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/bit-global-32.log @@ -0,0 +1,2 @@ +Fresh prefix bits 123 charged 128 +{"status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", "h": 8, "m": 64, "v": 120, "R": 740, "replicas": 32, "live": 56739, "physical": 56748, "word_sha256": "64d7d1e0c6ea7a3a8e91254c0dfd51b71637b49703ef4c1fce184fded5040bc9", "source_records_sha256": "93d36bac33afbe2a4b6a20064449766c72f91132d104071692c63c885e7c27d3", "independent_unbanked_scalar_columns": 7620, "all_scalar_columns_restored": true, "geometry_sha256": "51d0165bb89579eaea969630b48b290448dddb22e88a687f83a8c9760929846a", "template_sha256": "4d35d8f9c42d3823d3a40dc88e11dce08f1911131960b081073a13ac3a23fa22", "emitted_program_sha256": "4f83de501c4175bd9c4f3b107d7c24ff5980abfa551b8674a0c0149fdef74e46", "emitted_events": 5681952, "local_invocations": 288, "bank_assignments": 213120, "banks_per_stage": 2891, "entrance_rank_total": 138, "mixed_width_slots": true, "padding_calls": 0, "residual_isometries": 16, "extra_helper_route_factor_bound": 144, "profile": {"1": 728640, "2": 290304, "3": 80640, "4": 99936, "5": 33984, "7": 27072, "8": 2592, "14": 15360, "28": 15360, "42": 15360}, "paid_calls": 1309248, "rank_mass": 3621312, "deficit": 9984, "maxchild": 42, "halving_depth": 2, "halving_integer_inequality": [4096, 3528], "local_additions": 15414, "bridge_additions": 69120, "copy_erase_episodes": 2592, "global_prefix_bits": 123, "charged_prefix_bits": 128, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 10.859118791064247} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/bit-global-audit.log b/research/e8-rank138-idle-hosting/local-evidence/full314/bit-global-audit.log new file mode 100644 index 0000000000..c7f2143a69 --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/bit-global-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", "template_sha256": "4d35d8f9c42d3823d3a40dc88e11dce08f1911131960b081073a13ac3a23fa22", "source_frames": 944, "exact_nested_frame_pairs": 3364, "exact_reflected_pairs": 3364, "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", "exact_bank_families": 26019, "mixed_width_slots": true, "entrance_rank_total": 138, "residual_isometries": 16, "mutations_rejected": ["omit an idle child", "omit a bridge", "omit terminal exchange", "remove a local invocation", "re-use a helper bank slot", "understate live stock", "omit a local paid move", "wrong reflected copy charge", "alter residual orthogonal basis", "wrong residual frame", "omit a residual route factor"], "profile": {"1": 728640, "2": 290304, "3": 80640, "4": 99936, "5": 33984, "7": 27072, "8": 2592, "14": 15360, "28": 15360, "42": 15360}, "seconds": 6.887823792058043} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/bit-hosting.log b/research/e8-rank138-idle-hosting/local-evidence/full314/bit-hosting.log new file mode 100644 index 0000000000..7ce174fb44 --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/bit-hosting.log @@ -0,0 +1 @@ +{"live": 37464, "maxchild": 8, "hosted_residuals": 159168, "banks_per_stage_hosted": {"0": 0, "1": 0, "2": 2120, "3": 2504, "4": 0, "5": 0, "6": 0, "7": 2120, "8": 0}, "rank_mass": 2387712} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/complex-hosting.log b/research/e8-rank138-idle-hosting/local-evidence/full314/complex-hosting.log new file mode 100644 index 0000000000..b8925ed69d --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/complex-hosting.log @@ -0,0 +1 @@ +{"live": 8400, "maxchild": 8, "hosted_residuals": 34560, "banks_per_stage": [0, 0, 0, 160, 0, 120, 0, 0, 440], "deficit": 2496} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/exact-assembly.log b/research/e8-rank138-idle-hosting/local-evidence/full314/exact-assembly.log new file mode 100644 index 0000000000..c761ef84f0 --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/exact-assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY 0.001246073505487942 binding bit gain over #434 9.9702% diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/export-records.log b/research/e8-rank138-idle-hosting/local-evidence/full314/export-records.log new file mode 100644 index 0000000000..43c21e206c --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/export-records.log @@ -0,0 +1 @@ +exported 19729 records, 944 frames, n 980 ZERO 0 diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/independent-hosting-audit.log b/research/e8-rank138-idle-hosting/local-evidence/full314/independent-hosting-audit.log new file mode 100644 index 0000000000..e57495e0ef --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/independent-hosting-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", "bit_template_sha256": "50d9302688535aee7196ddba537c99620195b39ec096b3cfde8c2d6b2e691ef7", "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", "bit_live": 37464, "complex_live": 8400, "bit_hosted_residuals": 159168, "complex_hosted_residuals": 34560, "bit_maxchild": 8, "complex_maxchild": 8, "mutations_rejected": ["bit: hosted residual outside its window", "bit: overlapping hosted coordinates", "bit: understated live stock", "bit: hosted owner on the active pair", "bit: missing remainder child", "complex: hosted residual outside its window", "complex: remainder child understated", "complex: dropped bank", "complex: duplicated hosted residual"]} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/parent-full.log b/research/e8-rank138-idle-hosting/local-evidence/full314/parent-full.log new file mode 100644 index 0000000000..ee23b611cb --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/parent-full.log @@ -0,0 +1,16 @@ +PASS hamming_packets +PASS complex_construct +PASS complex_audit +PASS complex_emit +PASS complex_phases +PASS bit_construct +PASS bit_kernel +PASS bit_export +PASS bit_global +PASS bit_audit +PASS bit_price +PASS complex_integrate +PASS complex_replay +PASS combined +PASS independent_audit +PASS conditional kappa 0.001138798055343319 diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/parent/RESULT.json b/research/e8-rank138-idle-hosting/local-evidence/full314/parent/RESULT.json new file mode 100644 index 0000000000..655468f65f --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/parent/RESULT.json @@ -0,0 +1,126 @@ +{ + "status": "PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY", + "kappa": "1138798055343319/1000000000000000000", + "kappa_decimal": "0.001138798055343319", + "bit_lower": "17814006170324008149/15625000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit", + "gain_over_pr425_percent": 8.663365470849168, + "bit_invoice": { + "prefix_bits": 123, + "charged_prefix_bits": 128, + "extra_helper_route_factor_bound": 144, + "selector_charge": 2375347104, + "full_counted_coefficient": "8271410009661736653226855278395470361", + "two_level_coefficient": "7323242093316479963924177312150069573045566553609912891292783054664675728289084971684", + "coefficient_bits": 123, + "two_level_coefficient_bits": 282, + "charged_two_level_coefficient_bits": 512, + "row_coefficient": 18355, + "live": 14187, + "physical": 14196 + }, + "strict_outer_constraints": { + "bit_positive": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_above_bit": "561793975111583755318899079343869984489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "complex_below_one_over32": "30066013450793671/1000000000000000000", + "beta_positive": "1/1000000000000000000", + "beta_below_one": "999999999999999999/1000000000000000000", + "leaf_saving_above_bit": "561793975111583740163871249502858784489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_positive": "7296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_internal": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_leaf": "280896987555791884675169479480856836925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_positive": "7296616927364715307747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "c_below_one": "6392703383072635284692252683394401362436925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "q_below_reservations": "1/4000000000000000000", + "lambda_above_tau": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_sigma": "561793975111583769912132934073297429170711561242364812146848396605205517119521114242518016217267837645828790697405933529381995454757936430882408462422461948391475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_above_internal": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "lambda_prime_above_lambda": "14593233854729427444681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_leaf": "280896987555791884675169479480856836925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_reservations": "1/4000000000000000000", + "lambda_prime_below_one": "7296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "epsilon_positive": "6399999999999999993600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "epsilon_below_one": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "guard_width": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "K_geometry": "4807296616927364715307747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000", + "K_dominates_log": "235374739592410170982280634781739427591186359788777903970880237514185872696357672241417629322931845013535600673179511963907670740968611784320670684630538885699570024398052336858483077811796097147/206686987642818216571217655374374149598808841734162927502779721971677113375476079643918531004799011488932066605472191000895974276213159612680294946897790151565994516922188203902853000000000000000000", + "record_suffix": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "phase_local": "58372935418917754454681915917424386796845433466807383126296955216873364531896370569805174550396380293678057008334012065307555731225662916937944268044009595277496842871179869361713975412165679011557/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "phase_boundary": "11674587083783545765099089641593106393171233408882566574800116036134070837442169216368623198272500889556042482651317487546259330534795761167426803522443524584184685509040215035678775412165679011557/10251674587083783541932395706568957820100918550014481204137874209795184823423613550338359137838030969851030503631420673644440324100172716788942629366130391517673328039340534913581508800000000000000000", + "gamma_sublinear": "1/2000000000000000000", + "cell_above_band": "12799999999999999980792703383072635286292252683394401362436925906240949247413828618878009485360241531038525538851230643843105935230362078972224797437392052006910856646168505301454169975412165679011557/25629186467709458854830989266422394550252296375036203010344685524487962058559033875845897844595077424627576259078551684111100810250431791972356573415325978794183320098351337283953772000000000000000000", + "prime_interval_packing": "7296616927364720107747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443", + "alpha_positive": "14593233854729433808198016283832561418400870912502867609268668484930276693345556800958407657780243352313668390506485898656340355577974958403084145055041404002516695344173943431055975412165679011557/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "alpha_below_one": "12799999999999999993607296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "alpha_below_one_fourth": "3189055074608952923045675642018966757363136175967022508683817022076064980626533677679778822916604434726133363994312474615231260925725999038141487531860705945270398316949743217063165524587834320988443/12814593233854729427415494633211197275126148187518101505172342762243981029279516937922948922297538712313788129539275842055550405125215895986178286707662989397091660049175668641976886000000000000000000", + "delta_positive": "1/8000000000000000000", + "delta_below_one_eighth": "999999999999999999/8000000000000000000", + "short_record_fallback": "81826496822092562171882315893595751752399902690116486852838304432755607303153150619225216237579156329475548128864912385926260879534056410653826445668927928937673680050034015948260296943169395903763640168091395592402062955133096133288079820489374838549015828583026644692484032808774556966449204475165761360629808686214538063881707838504539564249/82013396696670268335459165652551662560807348400115849633102993678361478587388908402706873102704247758808244029051365389155522592801381734311541034929043132141386624314724279308652070400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "small_field_exposure": "1/1000000000000000000", + "artificial_boundary": "358866983483351341747717718113540406945159983950396044078204190673084545194703056156900337057440514200925643528703135014248295158315822434641030782333039504686200551635115880638897842073763502962965329/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "literal_scalar_guard": "1", + "row_product_gap": "23971789/25", + "balanced_prefix_above_kappa": "10428274416196871282531516897522607540915684699387944996351562842329855748924675580097931857187250784626831881239543084291418480285841495843978289147099063037268827644742874203737683/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000", + "coordinate_movement_above_kappa": "16618746334944244681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "compact_phase_layer_above_kappa": "100524444981737664220594239522925222583815265140722356094134786530196630857122927778411434900962035711748445411747629081591081943080838696272228644831689208468074940503875997068731/160182415423184117842693682915139965939076852343976268814654284528049762865993961724036861528719233903922351619240948025694380064065198699827228583845787367463645750614695858024711075000000000000000", + "bulk_exposure_above_kappa": "16618746334944244681100920656130015510389359413765203363540962808559686244019848566041670026752010920212879329346077390830883874588140959948475412165679011557/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "Gaussian_arithmetic_above_kappa": "51389712244938146691713398597152867139510107126308306207881645833028893418198612295976082551754159496230184726068155069192471829473692226786380596407635030805421471035003822024959249/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "scalar_work_above_kappa": "77018898712647605546544387863575261689762403501344509218226331357516855476757646171821980396349236920857760985146706753303572639724124018758737169822961009599604791133355159308913021/51258372935418917709661978532844789100504592750072406020689371048975924117118067751691795689190154849255152518157103368222201620500863583944713146830651957588366640196702674567907544000000000000000000", + "dimension_above_kappa": "6392703383072635283920527099591272644968442803763556788329513318265954481711804373368381287775906223941037792417612863599056678676935136298329336932010001145432459122511228716280384644742874203737683/6407296616927364713707747316605598637563074093759050752586171381121990514639758468961474461148769356156894064769637921027775202562607947993089143353831494698545830024587834320988443000000000000000000" + }, + "outer_controls": [ + "next_grid", + "zero_eta", + "zero_beta", + "unit_beta" + ], + "bootstrap": [ + { + "gap": "50238871853096532822362240972278860750249/40000000000000000000000000000000000000000000000", + "cutoff_log2": "22821423299056" + }, + { + "gap": "11455431336719088296695724797447540819776987379259584929022443/8000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "17557374861114977035" + }, + { + "gap": "2612059193805271546589956973717711376230817511984641822790221508429225435153562001/1600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "13507545431071750093791293" + }, + { + "gap": "595599854024942868145937931074452609889067823826597234111825602004869306469267614758018107869138838307/320000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "10391860116659867549821478467986" + }, + { + "gap": "135808249275448458154076421829336450566886398980362416351705509454393700941063236129602722212894374934350058630123597688249/64000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "7994846823599212441742710007613379908" + }, + { + "gap": "30966899079343869984489610640586234796636459037191440313755980151433958329973247989079787120670653922609169116125411859040051524587834320988443/12800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "cutoff_log2": "6150734807365621625035986466966332327804006" + } + ], + "bit_template_sha256": "b87ed8c20819237f2daacdd1383a2776419551a62a7014eb9720af146a9dd9ec", + "complex_template_sha256": "942d030fa43316c560c88d7d7d904583446e1a96945b3ebd37a91c88a192ab4f", + "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.", + "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", + "manifest_sha256": "344d58298774e9e2bbfd0af6332507c3b3d2172bc70d88a79853e679bdaaa33f" +} diff --git a/research/e8-rank138-idle-hosting/local-evidence/full314/rank138-rebuild.log b/research/e8-rank138-idle-hosting/local-evidence/full314/rank138-rebuild.log new file mode 100644 index 0000000000..376524fe7c --- /dev/null +++ b/research/e8-rank138-idle-hosting/local-evidence/full314/rank138-rebuild.log @@ -0,0 +1 @@ +{"donor_slots": 103, "entrance_rank": 138, "entries": 114, "input_sha256": "d6ec8811541d6ab59a3bbbaaa15bccc8918b3b43b23d9f593198cfe90826fd20", "interface": {"R": 740, "helper_start_dims": {"0": 626, "1": 106, "4": 8}, "n": 980, "prefix_allow": 192, "prefix_bits": 123, "prefix_ok": true, "streams": {"forward": {"adds": 15414, "copies": 9, "hist": {"1": 2530, "2": 1008, "3": 280, "4": 347, "5": 118, "7": 14, "8": 9}, "row_l1": 780}, "reverse": {"adds": 15414, "copies": 9, "hist": {"1": 2530, "2": 1008, "3": 280, "4": 347, "5": 118, "7": 14, "8": 9}, "row_l1": 18182}}}, "mutations_rejected": ["retained row used as pivot", "duplicate pivot", "eight replicas do not fill integral banks", "omit a kernel dirty-response correction", "wrong primitive input frame"], "output_sha256": "64d7d1e0c6ea7a3a8e91254c0dfd51b71637b49703ef4c1fce184fded5040bc9", "post_kernel_frame_changes": [112, 42], "pre_kernel_frame_changes": 57, "replicas": 32, "retimed_sha256": "fec026cda755e5ef93f7ed56923d1452da925cbe0051585e913e0837d9a70ffb", "status": "PASS_FROZEN_RETIMING_KERNEL_REPLICA_REBUILD"} diff --git a/research/e8-rank138-idle-hosting/research/ALL-COORDINATE-AUGMENTED138.json b/research/e8-rank138-idle-hosting/research/ALL-COORDINATE-AUGMENTED138.json new file mode 100644 index 0000000000..05cbd3ba33 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/ALL-COORDINATE-AUGMENTED138.json @@ -0,0 +1,1298 @@ +{ + "status": "EXACT_RELATION_NOMINATIONS_NEED_FULL_REPLAY", + "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 + ], + 978, + [ + 974, + 975, + 979 + ] + ], + [ + [ + 5 + ], + 883, + [ + 274, + 882 + ] + ], + [ + [ + 5 + ], + 827, + [ + 274, + 826 + ] + ], + [ + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + 972, + [ + 973, + 976, + 977 + ] + ] + ], + "total_entrance_rank": 138, + "added": [], + "local_profile": { + "1": 2530, + "4": 347, + "2": 1008, + "3": 280, + "5": 118, + "8": 9, + "7": 14 + }, + "integral_bank_rank": false +} diff --git a/research/e8-rank138-idle-hosting/research/BASIS-EXCHANGES138.json b/research/e8-rank138-idle-hosting/research/BASIS-EXCHANGES138.json new file mode 100644 index 0000000000..1a8a089c50 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/BASIS-EXCHANGES138.json @@ -0,0 +1,7 @@ +{ + "status": "BASIS_EXCHANGE_NOMINATIONS_REQUIRE_REPLAY", + "tested": 281, + "reference_score": 32.25815033883536, + "improving": 0, + "top": [] +} diff --git a/research/e8-rank138-idle-hosting/research/KERNEL138-GROUP45-SEARCH.json b/research/e8-rank138-idle-hosting/research/KERNEL138-GROUP45-SEARCH.json new file mode 100644 index 0000000000..268513c261 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/KERNEL138-GROUP45-SEARCH.json @@ -0,0 +1,8 @@ +{ + "status": "GROUP_NOMINATION_NEEDS_EXACT_REPLAY", + "source_sha256": "64d7d1e0c6ea7a3a8e91254c0dfd51b71637b49703ef4c1fce184fded5040bc9", + "output_sha256": "fb0d1109e54a9e8b2c88a08f0360515dd5273d3a177ba15383ce23c0a862c2d4", + "groups_tested": 49681, + "positive": 0, + "selected": [] +} diff --git a/research/e8-rank138-idle-hosting/research/KERNEL138-MIXED-FRAMES.json b/research/e8-rank138-idle-hosting/research/KERNEL138-MIXED-FRAMES.json new file mode 100644 index 0000000000..e572b02d53 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/KERNEL138-MIXED-FRAMES.json @@ -0,0 +1,8 @@ +{ + "status": "MIXED_FRAME_NOMINATION_NEEDS_EXACT_REPLAY", + "source_sha256": "64d7d1e0c6ea7a3a8e91254c0dfd51b71637b49703ef4c1fce184fded5040bc9", + "output_sha256": "fb0d1109e54a9e8b2c88a08f0360515dd5273d3a177ba15383ce23c0a862c2d4", + "groups_tested": 21420, + "positive": 0, + "selected": [] +} diff --git a/research/e8-rank138-idle-hosting/research/KERNEL138-MIXED-FRAMES45.json b/research/e8-rank138-idle-hosting/research/KERNEL138-MIXED-FRAMES45.json new file mode 100644 index 0000000000..bd4e38b889 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/KERNEL138-MIXED-FRAMES45.json @@ -0,0 +1,8 @@ +{ + "status": "MIXED_FRAME_NOMINATION_NEEDS_EXACT_REPLAY", + "source_sha256": "64d7d1e0c6ea7a3a8e91254c0dfd51b71637b49703ef4c1fce184fded5040bc9", + "output_sha256": "fb0d1109e54a9e8b2c88a08f0360515dd5273d3a177ba15383ce23c0a862c2d4", + "groups_tested": 223744, + "positive": 0, + "selected": [] +} diff --git a/research/e8-rank138-idle-hosting/research/STORAGE-FAILURE.json b/research/e8-rank138-idle-hosting/research/STORAGE-FAILURE.json new file mode 100644 index 0000000000..a343090f22 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/STORAGE-FAILURE.json @@ -0,0 +1,6 @@ +{ + "status": "FAILED_STORAGE", + "process": "32-replica global replay", + "exit_code": 120, + "error": "SSD filled while lossless archive was also being created; unfinished archive removed, original run retained. Global output must be rebuilt in a fresh directory." +} diff --git a/research/e8-rank138-idle-hosting/research/assembly.log b/research/e8-rank138-idle-hosting/research/assembly.log new file mode 100644 index 0000000000..c761ef84f0 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/assembly.log @@ -0,0 +1 @@ +PASS_CONDITIONAL_IDLE_AXIS_HOSTING_ASSEMBLY 0.001246073505487942 binding bit gain over #434 9.9702% diff --git a/research/e8-rank138-idle-hosting/research/bit-hosting.log b/research/e8-rank138-idle-hosting/research/bit-hosting.log new file mode 100644 index 0000000000..7ce174fb44 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/bit-hosting.log @@ -0,0 +1 @@ +{"live": 37464, "maxchild": 8, "hosted_residuals": 159168, "banks_per_stage_hosted": {"0": 0, "1": 0, "2": 2120, "3": 2504, "4": 0, "5": 0, "6": 0, "7": 2120, "8": 0}, "rank_mass": 2387712} diff --git a/research/e8-rank138-idle-hosting/research/complex-hosting.log b/research/e8-rank138-idle-hosting/research/complex-hosting.log new file mode 100644 index 0000000000..b8925ed69d --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/complex-hosting.log @@ -0,0 +1 @@ +{"live": 8400, "maxchild": 8, "hosted_residuals": 34560, "banks_per_stage": [0, 0, 0, 160, 0, 120, 0, 0, 440], "deficit": 2496} diff --git a/research/e8-rank138-idle-hosting/research/export.log b/research/e8-rank138-idle-hosting/research/export.log new file mode 100644 index 0000000000..43c21e206c --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/export.log @@ -0,0 +1 @@ +exported 19729 records, 944 frames, n 980 ZERO 0 diff --git a/research/e8-rank138-idle-hosting/research/global-audit.log b/research/e8-rank138-idle-hosting/research/global-audit.log new file mode 100644 index 0000000000..c097a95a7b --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/global-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_COMPRESSED_BIT_TEMPLATE_AUDIT", "template_sha256": "4d35d8f9c42d3823d3a40dc88e11dce08f1911131960b081073a13ac3a23fa22", "source_frames": 944, "exact_nested_frame_pairs": 3364, "exact_reflected_pairs": 3364, "orthogonal_lift_argument": "Adding the same orthogonal E_s leaves P_V-P_U unchanged; each audited projector is therefore the literal child projector in every one of the nine windows.", "exact_bank_families": 26019, "mixed_width_slots": true, "entrance_rank_total": 138, "residual_isometries": 16, "mutations_rejected": ["omit an idle child", "omit a bridge", "omit terminal exchange", "remove a local invocation", "re-use a helper bank slot", "understate live stock", "omit a local paid move", "wrong reflected copy charge", "alter residual orthogonal basis", "wrong residual frame", "omit a residual route factor"], "profile": {"1": 728640, "2": 290304, "3": 80640, "4": 99936, "5": 33984, "7": 27072, "8": 2592, "14": 15360, "28": 15360, "42": 15360}, "seconds": 6.769209749996662} diff --git a/research/e8-rank138-idle-hosting/research/global-retry.log b/research/e8-rank138-idle-hosting/research/global-retry.log new file mode 100644 index 0000000000..2a5d6fe409 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/global-retry.log @@ -0,0 +1,6 @@ +Traceback (most recent call last): + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/hosted138-screen/code/bit_global.py", line 10, in + from residual_routes import generate + File "/Volumes/SP AI 01_16/CodexWorkspaces/imb-retime2/frontier390/hosted138-screen/code/residual_routes.py", line 7, in + from bank_routes import validate_isometries +ModuleNotFoundError: No module named 'bank_routes' diff --git a/research/e8-rank138-idle-hosting/research/global-retry2.log b/research/e8-rank138-idle-hosting/research/global-retry2.log new file mode 100644 index 0000000000..41a40b0917 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/global-retry2.log @@ -0,0 +1,2 @@ +Fresh prefix bits 123 charged 128 +{"status": "PASS_SOURCE_BOUND_NINE_STAGE_BIT_TEMPLATE", "h": 8, "m": 64, "v": 120, "R": 740, "replicas": 32, "live": 56739, "physical": 56748, "word_sha256": "64d7d1e0c6ea7a3a8e91254c0dfd51b71637b49703ef4c1fce184fded5040bc9", "source_records_sha256": "93d36bac33afbe2a4b6a20064449766c72f91132d104071692c63c885e7c27d3", "independent_unbanked_scalar_columns": 7620, "all_scalar_columns_restored": true, "geometry_sha256": "51d0165bb89579eaea969630b48b290448dddb22e88a687f83a8c9760929846a", "template_sha256": "4d35d8f9c42d3823d3a40dc88e11dce08f1911131960b081073a13ac3a23fa22", "emitted_program_sha256": "4f83de501c4175bd9c4f3b107d7c24ff5980abfa551b8674a0c0149fdef74e46", "emitted_events": 5681952, "local_invocations": 288, "bank_assignments": 213120, "banks_per_stage": 2891, "entrance_rank_total": 138, "mixed_width_slots": true, "padding_calls": 0, "residual_isometries": 16, "extra_helper_route_factor_bound": 144, "profile": {"1": 728640, "2": 290304, "3": 80640, "4": 99936, "5": 33984, "7": 27072, "8": 2592, "14": 15360, "28": 15360, "42": 15360}, "paid_calls": 1309248, "rank_mass": 3621312, "deficit": 9984, "maxchild": 42, "halving_depth": 2, "halving_integer_inequality": [4096, 3528], "local_additions": 15414, "bridge_additions": 69120, "copy_erase_episodes": 2592, "global_prefix_bits": 123, "charged_prefix_bits": 128, "omitted_bridge_shears_rejected": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "scope": "Complete source-bound finite cover template. Local and unbanked global F2 columns are replayed; arbitrary physical bank dirt follows by injective owner routes and the all-column local theorem. Astronomical cover enumeration and all-size compiler interfaces remain explicit inherited assumptions.", "seconds": 9.94310954096727} diff --git a/research/e8-rank138-idle-hosting/research/group45-negative.json b/research/e8-rank138-idle-hosting/research/group45-negative.json new file mode 100644 index 0000000000..82aeb6e166 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/group45-negative.json @@ -0,0 +1,8 @@ +{ + "status": "GROUP_NOMINATION_NEEDS_EXACT_REPLAY", + "source_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "output_sha256": "00d8aa8608e40b53fd8752399de06cb730cc55caaadc528f88379cb31b8460a6", + "groups_tested": 613, + "positive": 0, + "selected": [] +} diff --git a/research/e8-rank138-idle-hosting/research/hosting-audit.log b/research/e8-rank138-idle-hosting/research/hosting-audit.log new file mode 100644 index 0000000000..e57495e0ef --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/hosting-audit.log @@ -0,0 +1 @@ +{"status": "PASS_INDEPENDENT_IDLE_AXIS_HOSTING_AUDIT", "bit_template_sha256": "50d9302688535aee7196ddba537c99620195b39ec096b3cfde8c2d6b2e691ef7", "complex_template_sha256": "6f48c811e981bbd76436dfe19f497ed627794987fd4347daf123d0d698a5fe3f", "bit_live": 37464, "complex_live": 8400, "bit_hosted_residuals": 159168, "complex_hosted_residuals": 34560, "bit_maxchild": 8, "complex_maxchild": 8, "mutations_rejected": ["bit: hosted residual outside its window", "bit: overlapping hosted coordinates", "bit: understated live stock", "bit: hosted owner on the active pair", "bit: missing remainder child", "complex: hosted residual outside its window", "complex: remainder child understated", "complex: dropped bank", "complex: duplicated hosted residual"]} diff --git a/research/e8-rank138-idle-hosting/research/hosting138-64-replica-screen.json b/research/e8-rank138-idle-hosting/research/hosting138-64-replica-screen.json new file mode 100644 index 0000000000..e64b48f227 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/hosting138-64-replica-screen.json @@ -0,0 +1,48 @@ +{ + "status": "PASS_TWO_EXACT_AGGREGATE_MOMENTS_EMITTED_TEMPLATE_AND_INVOICE_PENDING", + "reference_bit_lower": "249369163853537814231/200000000000000000000000", + "prior_score": 23476.37893908448, + "new_score": 23627.612271644153, + "same_patterns": false, + "same_stages": false, + "widths": { + "8": 626, + "7": 106, + "4": 8 + }, + "local_profile": { + "1": 2530, + "4": 347, + "2": 1008, + "3": 280, + "5": 118, + "8": 9, + "7": 14 + }, + "replicas": 64, + "live": 74928, + "profile": { + "1": 1457280, + "4": 223168, + "2": 611200, + "3": 161664, + "5": 67968, + "8": 5184, + "7": 33408, + "6": 17152 + }, + "rank_mass": 4775424, + "banks": { + "0": 0, + "1": 4256, + "2": 5008, + "3": 0, + "4": 0, + "5": 0, + "6": 4224, + "7": 0, + "8": 0 + }, + "bit_lower": "1247628141860215921989/1000000000000000000000000", + "bit_upper": "124762814186021592199/100000000000000000000000" +} diff --git a/research/e8-rank138-idle-hosting/research/hosting443-kernel138-eight-screen.json b/research/e8-rank138-idle-hosting/research/hosting443-kernel138-eight-screen.json new file mode 100644 index 0000000000..0d82c7e4bd --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/hosting443-kernel138-eight-screen.json @@ -0,0 +1,48 @@ +{ + "status": "PASS_TWO_EXACT_AGGREGATE_MOMENTS_EMITTED_TEMPLATE_AND_INVOICE_PENDING", + "reference_bit_lower": "249369163853537814231/200000000000000000000000", + "prior_score": 23476.37893908448, + "new_score": 23627.612271644153, + "same_patterns": false, + "same_stages": false, + "widths": { + "8": 626, + "7": 106, + "4": 8 + }, + "local_profile": { + "1": 2530, + "4": 347, + "2": 1008, + "3": 280, + "5": 118, + "8": 9, + "7": 14 + }, + "replicas": 8, + "live": 9366, + "profile": { + "1": 182160, + "4": 27896, + "2": 76400, + "3": 20208, + "5": 8496, + "8": 648, + "7": 4176, + "6": 2144 + }, + "rank_mass": 596928, + "banks": { + "0": 0, + "1": 0, + "2": 0, + "3": 532, + "4": 626, + "5": 0, + "6": 528, + "7": 0, + "8": 0 + }, + "bit_lower": "1247628141860215921989/1000000000000000000000000", + "bit_upper": "124762814186021592199/100000000000000000000000" +} diff --git a/research/e8-rank138-idle-hosting/research/hosting443-kernel138-screen.json b/research/e8-rank138-idle-hosting/research/hosting443-kernel138-screen.json new file mode 100644 index 0000000000..55fc0ae0e8 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/hosting443-kernel138-screen.json @@ -0,0 +1,48 @@ +{ + "status": "PASS_TWO_EXACT_AGGREGATE_MOMENTS_EMITTED_TEMPLATE_AND_INVOICE_PENDING", + "reference_bit_lower": "249369163853537814231/200000000000000000000000", + "prior_score": 23476.37893908448, + "new_score": 23627.612271644153, + "same_patterns": false, + "same_stages": false, + "widths": { + "8": 626, + "7": 106, + "4": 8 + }, + "local_profile": { + "1": 2530, + "4": 347, + "2": 1008, + "3": 280, + "5": 118, + "8": 9, + "7": 14 + }, + "replicas": 32, + "live": 37464, + "profile": { + "1": 728640, + "4": 111584, + "2": 305600, + "3": 80832, + "5": 33984, + "8": 2592, + "7": 16704, + "6": 8576 + }, + "rank_mass": 2387712, + "banks": { + "0": 0, + "1": 0, + "2": 2120, + "3": 2504, + "4": 0, + "5": 0, + "6": 0, + "7": 2120, + "8": 0 + }, + "bit_lower": "1247628141860215921989/1000000000000000000000000", + "bit_upper": "124762814186021592199/100000000000000000000000" +} diff --git a/research/e8-rank138-idle-hosting/research/hosting443-replica32-screen.json b/research/e8-rank138-idle-hosting/research/hosting443-replica32-screen.json new file mode 100644 index 0000000000..ef0d170aab --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/hosting443-replica32-screen.json @@ -0,0 +1,8 @@ +{ + "status": "MILP_NOMINATION_REQUIRES_EXACT_REPLAY", + "reference_bit_lower": "249369163853537814231/200000000000000000000000", + "prior_score": 23476.37893908448, + "new_score": 23476.37893908448, + "same_patterns": true, + "same_stages": false +} diff --git a/research/e8-rank138-idle-hosting/research/rebuild443.log b/research/e8-rank138-idle-hosting/research/rebuild443.log new file mode 100644 index 0000000000..376524fe7c --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/rebuild443.log @@ -0,0 +1 @@ +{"donor_slots": 103, "entrance_rank": 138, "entries": 114, "input_sha256": "d6ec8811541d6ab59a3bbbaaa15bccc8918b3b43b23d9f593198cfe90826fd20", "interface": {"R": 740, "helper_start_dims": {"0": 626, "1": 106, "4": 8}, "n": 980, "prefix_allow": 192, "prefix_bits": 123, "prefix_ok": true, "streams": {"forward": {"adds": 15414, "copies": 9, "hist": {"1": 2530, "2": 1008, "3": 280, "4": 347, "5": 118, "7": 14, "8": 9}, "row_l1": 780}, "reverse": {"adds": 15414, "copies": 9, "hist": {"1": 2530, "2": 1008, "3": 280, "4": 347, "5": 118, "7": 14, "8": 9}, "row_l1": 18182}}}, "mutations_rejected": ["retained row used as pivot", "duplicate pivot", "eight replicas do not fill integral banks", "omit a kernel dirty-response correction", "wrong primitive input frame"], "output_sha256": "64d7d1e0c6ea7a3a8e91254c0dfd51b71637b49703ef4c1fce184fded5040bc9", "post_kernel_frame_changes": [112, 42], "pre_kernel_frame_changes": 57, "replicas": 32, "retimed_sha256": "fec026cda755e5ef93f7ed56923d1452da925cbe0051585e913e0837d9a70ffb", "status": "PASS_FROZEN_RETIMING_KERNEL_REPLICA_REBUILD"} diff --git a/research/e8-rank138-idle-hosting/research/upstream-shell-path-failure.log b/research/e8-rank138-idle-hosting/research/upstream-shell-path-failure.log new file mode 100644 index 0000000000..215cfbf7c8 --- /dev/null +++ b/research/e8-rank138-idle-hosting/research/upstream-shell-path-failure.log @@ -0,0 +1,4 @@ +== Frozen package and complete upstream provenance +PASS package manifest, byte-identical PR436 parent, PR417 code and PR441 witnesses +== Reproduce PR436 with its unchanged verification wrapper +mkdir: /Volumes/SP: Permission denied diff --git a/research/e8-rank138-idle-hosting/upstream443/EXPECTED.json b/research/e8-rank138-idle-hosting/upstream443/EXPECTED.json new file mode 100644 index 0000000000..bab8013596 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/EXPECTED.json @@ -0,0 +1,35 @@ +{ + "global": { + "R": 740, + "replicas": 32, + "live": 56739, + "physical": 56748, + "banks_per_stage": 2891, + "entrance_rank_total": 138, + "bank_assignments": 213120, + "local_invocations": 288, + "independent_unbanked_scalar_columns": 7620, + "deficit": 9984, + "global_prefix_bits": 123, + "local_additions": 15414, + "copy_erase_episodes": 2592, + "profile": { + "1": 728640, + "4": 99936, + "2": 290304, + "3": 80640, + "5": 33984, + "8": 2592, + "7": 27072, + "14": 15360, + "28": 15360, + "42": 15360 + } + }, + "result": { + "kappa": "1138823042306561/1000000000000000000", + "bit_lower": "1140121438872176364117/1000000000000000000000000", + "complex_lower": "1183986549206329/1000000000000000000", + "binding_component": "bit" + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/LICENSE b/research/e8-rank138-idle-hosting/upstream443/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/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/e8-rank138-idle-hosting/upstream443/MANIFEST.json b/research/e8-rank138-idle-hosting/upstream443/MANIFEST.json new file mode 100644 index 0000000000..5b72d8bc17 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/MANIFEST.json @@ -0,0 +1,119 @@ +{ + "EXPECTED.json": "02f3fd3ac40f17f25822fa49d01ae6e84c2e02e2fafbf24f02845f24e02ec931", + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "NOTICE.md": "cb5bb6520addd9517672136c5519df4a2c06ed17b8afa1ce24e63855689c114d", + "PROOF.md": "380a5269e012cb7d54cdf13289b7187aa82c16d23ed1689c5986485398f5cdca", + "README.md": "86030e96e06e0df02cc775ed1e41122854bc8dba2d1f90eb30b646436028ae5f", + "SOURCE.json": "20b4bc7418b62a7126fc476b0e8757f713f09dbe03b430048e9f66326688ea88", + "code/audit_kernel.py": "e49f9b499f98dc2938b10e32db28da3e4f38291dc345c0b5e7b906ca2b0cfb9c", + "code/bank_routes.py": "7c6997c455bd55acca3a1603797c34e7733d557c27a7694a1429ff15773a505d", + "code/compose_kernel.py": "010e081821f20bcf6e097306289031804b2609e5160dba1c743272126ef7472a", + "code/config.py": "283d7fad45155ee91e704d63ec947cf4a60aeff5cc43510bc0e835f7da7d8767", + "code/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "code/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "code/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "code/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "code/export249.py": "6d9817f7c431573aff695e1eacfa7c2ca6d3a2a10baa3a2ea814ab9b9f7b13ab", + "code/global_kernel.py": "01cf4be0ab9affe48598062c4ae3610882aa77a9e18e75c4e596e2f08d8b2173", + "code/iface386.py": "1b7c998513759195dee3e82a34c1a46dc3310236530a7f1dfbeefe00f108fc4f", + "code/rebuild.py": "3efb6c81a247ac6d5cab87c47030a332292c2c46d482ff996588858f41cdad4d", + "code/replica_kernel.py": "780e08ad63983d0256271e8c7803c74bb1623d15cc202d98177c440ff3726aad", + "code/stages.py": "e73ab7836519510ed30dd7e3022dae557fa50fc513d723197929bff741859668", + "code/tile_m.py": "d6ae4a556472d403773cd2117c992bfc10e1187112da1b3893f3fae628a131dd", + "data/post-retiming.json": "d25a636bcebf97b46b01cd39259e8c4f59ab92a188f4cb4bd0b0b34936cf3b56", + "data/residual-isometries.json": "e12ed7ddd13cee101ba74a083b54665fd64d0b122b0bad5b83d817dcc8bae9d8", + "data/retiming.json": "f2b041a33577eebbf47f740ae1d7b94a68f2424de39df0c4ef075fad055c0793", + "data/selection.json": "1a96e47f1889bc690316f95a3858b0062ce212ea876dd15e5123ed89d09a9c39", + "data/upstream441/pair-retime-selection.json": "201d8cbc8ac1df10ee74246815f3ce8507b94395af69835e8098a8274bca5651", + "data/upstream441/window-retime-selection.json": "170a2190b6bae36de3a18a8b4c1a152cebd95b839ae889da3049f9d9b0109e30", + "data/word.json.gz": "d8d6d3d3f336720302bc40b3c1504fe3c3583a7a8d707bb9bd7b21f85e5e69c6", + "parent436/EXPECTED.json": "a9655e303cb2c40ce024443b27c0a810ffc24f1ee1e5b07eb19241fad399b5e2", + "parent436/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "parent436/MANIFEST.sha256": "7c6d4bd2ac74710d8a8a68fd637b31df9028a2376b569732374a739092c34310", + "parent436/NOTICE.md": "eb9cb7eab03977930484fee70d0aea066803917a6304b1ad2644cfcc6bf2acd4", + "parent436/README.md": "d737a3b77de97bdf67d2a140465be5b8886af6aa57516f78ad8f2839f3dae8cc", + "parent436/SOURCE-pr370.json": "352a68f0898535311c63cac879a52b686246ba80844f1a3cc2f3c3f6b1046b4d", + "parent436/SOURCE-pr376.json": "1608c15638f874243c3ad00bd6a08b30f0e9608de83002273819365ab300b0e7", + "parent436/SOURCE-pr381.json": "c457c422d54645ad841c8528bf2efa6c253d1c134ee86c875b9b7d76d4f9520c", + "parent436/SOURCE-pr386.json": "bba849ed0a1af4d45a76ec734d5f0d07806da2b161f1b5ad8ea63cf2d64b5aa4", + "parent436/SOURCE-pr417.json": "d9b7e606f09b840ed9fe10dc8c8250b4cab9bbe5d0cacb62864ca8366a28b2b1", + "parent436/SOURCE-pr425.json": "a2c5e2f0e03b0dbcba4ca18282a4ff390a6a395f14411410cfff42d5281d0289", + "parent436/SOURCE-pr426.json": "f884cc42793a3afd249ebee20985f61422e7b5baf7c1fcab5b990e1959f31697", + "parent436/SOURCE-pr431.json": "71cd86e64217fc4db0199ae8e5ef65cb0cc2ed593e15f03bc1501d4b32fdeb66", + "parent436/SOURCE-pr433.json": "f1181aa9f30dcc2e5df7e94738fa0c0cabe5f56b31c8eb843fa0a257da79ed91", + "parent436/code/b4/kappa_b4.py": "cc47efc71334d7d41d6475c5dfc8080a278d3b694b335c6a9873dad4632d1f7e", + "parent436/code/bit/checkers/certify_bit_k.py": "e68a81ef7981a90d613752003cd5cab5351e260f909b094f1668d8a4dfe480df", + "parent436/code/bit/checkers/columns_h.cpp": "d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce", + "parent436/code/bit/checkers/columns_k.cpp": "1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2", + "parent436/code/bit/checkers/cost.py": "d55d2b865d1c3d35e343e1a38c592b9172ed8e2596d1107e34d92e2a80c7d03f", + "parent436/code/bit/checkers/finite_k.py": "7e67dc75e63a11e38ac6d6615656c7cf6982e5a33dd404d04b967bf474cad02e", + "parent436/code/bit/checkers/geometry_k.py": "646b7e8773d9c99376cb00627f109a97319e6d72b439ff513c39035c28c3f70f", + "parent436/code/bit/checkers/gram_frames.py": "223a5a07731fc315a90a3e48177796babc155c1d9985c7ae5017eff6af2a0608", + "parent436/code/bit/checkers/json.hpp": "aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63", + "parent436/code/bit/checkers/legality_h.cpp": "6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3", + "parent436/code/bit/checkers/tile_k.py": "64255088821f601ede2c3006f08cb97c39a4fa10dbbeb93a8a71fcfa0e1d8d77", + "parent436/code/bit/export_records.py": "8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3", + "parent436/code/bit/independent/checkword.py": "11bf9620ca9db16d52d9fe806b814fc9ec9a89c4d7645354d1861d96f6e805ad", + "parent436/code/bit/independent/mutate.py": "0ff65aace5da4b57d96235bf830f8f11969322e75134d498aeb70e9753ec6b0d", + "parent436/code/bit/mutate_records.py": "b0e75d6550412a7be4017695e6b237392b611bb852ad8ff309d6682c9f166a4e", + "parent436/code/bit/producer/compile.py": "60fea6a9d6617a3f87376d3fda040642e9cb70e7c179015e03ede8d289f30357", + "parent436/code/bit/producer/compile2.py": "0e23d4282ceb75768e82631da016aaff9818aec53c7d75a6b2a28ee1b1160dc3", + "parent436/code/bit/producer/e8lib.py": "4f8a6843e83bc4f7055d7337f33dbe12ce499051f46bee1b81bbf6b34c652574", + "parent436/code/bit/producer/frames.py": "ba71f77dd3e3c1c54f361c066cebe9faadbc78db46376046e7af625bf1de8c24", + "parent436/code/bit/producer/fullword.py": "0daf87599e9e48646b985ad87351c56c1b73cfc99cdf9eca081483846ddbfa90", + "parent436/code/bit/producer/ham1.py": "359040fb432fd392472af6b8f5dca0234dd6c2be744a791df27ba62bc5da5175", + "parent436/code/bit/producer/ham2.py": "fdf0af785ce697bd7f80b4e75f7163735f3b599d9dc42f652f0ffdbdf18ea8bf", + "parent436/code/bit/producer/params-r865.json": "1256c54debe0a551da8e24896ab73ef0bd4a5233ff8e6fedf21a9e6301d6e6f3", + "parent436/code/bit/producer/price.py": "46c858e60ba0a117bf8227b864abf55e85ebee2d56a0dce64472b706499ac405", + "parent436/code/bit/receipts_k.py": "67f714e10a846e9cc62996342f825cd715055031e0b12591abdafd225717e195", + "parent436/code/bit/regression/stage_cohort.py": "6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a", + "parent436/code/complex/code/bridged.py": "5fe7174cd3a6580a74e4c1bf8fa7b426e8673f1c285603bf3076d4e758d70731", + "parent436/code/nine/audit_g.py": "48ac1d66a406ed72dd9192a19118776ba253f5c90e96185f5c1b98bb670a6361", + "parent436/code/nine/certify_g.py": "97a5f7e9bf2202d170da17d5d17d876903641d7d24433115c27ea95b9fe65ccd", + "parent436/code/nine/cited.py": "b6722d990fba39ef41b3d658326bdde97c25b749a454bda2509fdffeabd31a86", + "parent436/code/nine/compose433.py": "27dd61574f1f6921238ff9f57c6fd536e6f0a0983138bc5c99aeb141d3ccc195", + "parent436/code/nine/geometry.py": "36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca", + "parent436/code/nine/global_word_g.py": "ff8d6be2432b79584dc2f2d2bdcd3cefede0d0730d1eecb0a6859dd527f5fce4", + "parent436/code/nine/regress386.py": "bf97418a9aec7c3f55d04d4754e626f17f44aa2059ffd8acd7b315dcf9e89110", + "parent436/code/pricing/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "parent436/code/pricing/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "parent436/code/pricing/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "parent436/code/pricing/prime_witnesses.py": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "parent436/code/provenance.py": "e28fd87d0e34a6f6f6f1fddb6c4891deac220662c954de855d7aa5a7f9cceca4", + "parent436/code/reuse/controls.py": "89df84f78064de12cd11f0f5f63aa9cad2385f5d18d2e4ade7409a5ae0435721", + "parent436/code/reuse/ecost.py": "901c61f0a8082fc87012f91372aafbb2a1b464be685426e32e77cc9f0e393958", + "parent436/code/reuse/regen.py": "972740a54e487b12aebc09f2fab5f2878835727cb4ad82fb1aa26a0f2d34f517", + "parent436/code/reuse/retime.py": "d8530464a6e00e0a509cf8b392cae70579c8d0f636a0dc86677f5dee0863d34d", + "parent436/code/reuse/reuse.py": "b802483c024d23c92df30f1a2d93838280e39dfa0bd7129b879d6cc0b84c80a4", + "parent436/code/tail/apply376.py": "ac49a9a7da44a1e8fbf468c6d8901b5712705d3caa9dd3e0cb89f056f0e67b2a", + "parent436/code/tail/bootstrap.py": "6811203fb7df1ac8a9eee3fbeca722de98dbc99077921fe77e0d452c760f0ffc", + "parent436/code/tail/e8core.py": "1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb", + "parent436/code/tail/engines/base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "parent436/code/tail/engines/moment.py": "81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482", + "parent436/code/tail/engines/outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "parent436/data/bit/bitE8-r740.json.gz": "f8daa4982d865748fa9a3095b2cf4290f34e2c085d6d35673fd7171cab95623c", + "parent436/data/bit/bitE8-r865.json.gz": "1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55", + "parent436/data/bit/reuse-ledger.json": "e7bb324150a5342076c9a268f69b83c65f817a7cfc1d14fda9558a9f7e486f0b", + "parent436/data/complex-b-433.json": "161663bf22c8e6a62e2dce194b326016c11e551f31691140ef34355e9b2e4e92", + "parent436/data/complex-b-b4.json": "1bdd6a649615ddb6bf7cdf24abd7bb1bbd6cc9284e2aa44f796786310d3e1a3b", + "parent436/data/complex-b-nine.json": "2815ca568c88edde758c31e756d0d07aa08233243f365bc111383d7f0c1c757a", + "parent436/data/controls/LICENSE-pr426": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "parent436/data/controls/pr376/LICENSE-pr376": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "parent436/data/controls/pr376/frame-selection.json": "a83d4880579fb1f8cffb701d1d685c157b7fa14ef9d6642e42ff1e4f5a1b8c5c", + "parent436/data/controls/pr376/reuse-selection.json": "0b300bab47cf0d69cbc7965bf01c2a27c96b97677ee651334470d8c968b603f1", + "parent436/data/controls/pr386/AUDIT.json": "59625785de14c3df03abe009cdc67c7918b8fcfa8dc5f468c3d363af0494cbb7", + "parent436/data/controls/pr386/COMBINED.json": "6043a7486790ac8ca04dc67ddf5b57076e7c880b66eb456127c6cd933c77764a", + "parent436/data/controls/pr386/GLOBAL.json": "55af2a11552c04f5a87268bc2d1798246297874e9e87b50e49773e91cc495c2d", + "parent436/data/controls/pr417-bitE8-nine-kernel.json.gz": "acc2b138ce16be1ff12570d3ec1634fe28cccaf259de797be0f62628fb37cccb", + "parent436/data/controls/pr425/FINAL.json": "46ea33ad1979cd14a2b686e8742792739312a07ab72945517c3809b647b31c42", + "parent436/data/controls/pr426-bit-candidate.json.gz": "bd3b84244528767b85d8d7fe423b155630b5c659e21e51563674b1dcb6305ad7", + "parent436/data/controls/pr431/VALIDATION-LOCAL.json": "2b77c882ac524adbbacc9775ee172c854ecd4027e36db59ed15a7d1b6b9e1ce5", + "parent436/data/controls/pr433/CERTIFICATE.json": "f71580f22193726fb582eae604807ff70a7302265e001d9484a718e63bbe14c4", + "parent436/data/params/params-r740.json": "871fc75ce6fea2638f68553bcfe771d09297e987d59c123338227e29415851d1", + "parent436/discovery/README.md": "d840952ed60b4b460da83b04c4c8be3622b9bef04b62961c0d496c445f8b84d1", + "parent436/discovery/search_params.py": "57de04a8ea7e2df8b783e02c454bb102edab48206db0a41a1f28d50e7f164441", + "parent436/portable-include/bits/stdc++.h": "420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99", + "parent436/requirements.txt": "b9f87c1ec529679c19b8421a7a69b377b54b89949cfc5e1b1ed8c134bfab8917", + "parent436/verify.sh": "19bf483b109163b0ccc941f459e70c2e37d20c9c04e69e7c8eb98f329577b26c", + "verify.sh": "3720f542e9cf1ec35b052dec130b9cb6eefa37798f73ba5a4026b400c78d0697" +} diff --git a/research/e8-rank138-idle-hosting/upstream443/NOTICE.md b/research/e8-rank138-idle-hosting/upstream443/NOTICE.md new file mode 100644 index 0000000000..c47f06f58c --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/NOTICE.md @@ -0,0 +1,37 @@ +# Attribution and scope + +New primitive retiming, untrimmed kernel selection, 32-replica residual banking, +integration and audits: +chafreaky, with substantial OpenAI Codex assistance. Apache-2.0. + +- eumemic, PR #441 (`6160c13526f5f957902910b462164c93c1d8f39a`): + paired-gate and window B-frame retiming witnesses, transplanted and independently + rechecked on the new kernel, with substantial OpenAI Codex assistance. +- eumemic, PR #440 (`bd03373b6d4d4e380d0b6ea7d55cd2ac8f163544`): + primitive-retiming composition and the 112-pivot kernel used as the search + warm start, with substantial OpenAI Codex assistance. +- rohanarun, PR #434: primitive retiming composed with response kernels, + with OpenAI Codex assistance. +- chafreaky, PR #439 (`fa3a588ec1e383083abb8de9c51904fb9d689ad4`): explicit + residual isometries, finite route charges and the starting release verifier. +- 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/e8-rank138-idle-hosting/upstream443/PROOF.md b/research/e8-rank138-idle-hosting/upstream443/PROOF.md new file mode 100644 index 0000000000..ae1ad94af0 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/PROOF.md @@ -0,0 +1,119 @@ +# Replication removes the eight-replica rank restriction + +## Local word and frozen transformations + +Start with eumemic's byte-identical PR #436 R740 word. Expand each grouped ADD +into its ordered primitive ADDs and apply 57 frozen frame changes. The ordered +scalar operands are unchanged. For every changed gate, the PR #417 retimer +checks its integer source-support lower bound and both neighboring register +frames in the joint configuration. All frames remain nested. + +Apply a 114-pivot shared-donor response kernel with 103 donor slots and total +entrance rank 138. Each pivot p has an entrance E contained in its first frame +and every donor's first frame, and response(p) = XOR response(donors). Start p +at E, remove its frame-zero target correction, and add it to those donors at E +before A and again at FULL after C. Pivots and donors are disjoint; each donor +uses one entrance. The exact local replay checks all 980 independent columns, +including all helper dirt, and integer source-span legality. Frozen input, +intermediate and output hashes bind both transformations. + +The PR #417 kernel code is retained unchanged. A separate adaptation keeps its +local checks and replaces only its eight-replica rank congruence with + +``` +T * (8R - entrance_rank) = 0 mod 64. +``` + +After the kernel, transplant the two frozen PR #441 joint B-frame stages: 112 +paired-gate changes and 42 window changes, with 126 net changed B frames. The +original witnesses remain byte-identical and pinned. Their frame choices are +independently checked against the new word's joint feasible intervals, integer +source supports and complete arbitrary-dirt replay; input/output hashes are +recomputed for this composition. Every scalar ADD and its position is retained. + +The complete selected word has local paid profile +`{1:2530, 2:1008, 3:280, 4:347, 5:118, 7:14, 8:9}`. The forward and reflected emitted +streams have the same profile, restore arbitrary input columns and erase each +private copy. The initial 57-frame retiming and PR #440 selection supplied a search +starting point; this selection retains two additional rank-one pivots. + +## Why 32 replicas are admissible + +The compressed nine-stage identity is an identity for one data-replica index. +Its four data pairs, alternating local calls, nine paired bridges and terminal +exchange do not refer to any other replica's data. Repeating that schedule for +four groups of eight replicas therefore gives a direct sum of the original +identities. The local eight-dimensional frames, 64-dimensional ambient form, +42-dimensional largest child, cover class and port maps are unchanged. + +Banking changes only the embeddings of helper residuals. The local theorem holds +for arbitrary independent helper dirt. Assigning every helper residual an +injective isometry into a disjoint bank interval preserves this theorem. The +same proof applies when those intervals belong to different replica groups: +no data owner is shared across groups, and each stage's helper intervals are a +partition of its entire bank coordinate space. The emitter and independent +audit enumerate all 288 calls and all 213,120 helper owner assignments, check +every data owner formula, and reject cross-group data aliasing, omission of a +replica group and an incorrect replica count. They also replay the one-replica +nine-stage identity on 7,620 unbanked scalar columns, which is the repeated +block identity, not a claim to replay 32 separate enlarged matrices. + +Here `8R - entrance_rank = 5782`. Eight replicas would require 722.75 banks; +32 replicas require exactly 2,891 banks. Thus 32 is the least positive multiple +of eight satisfying the exact bank equation. No incomplete bank is counted and +no padding calls or unused bank coordinates are introduced. Merely repeating a +fixed eight-replica word scales its profile and stock equally and gives no +rate improvement; the gain comes from admitting the stronger untrimmed kernel. + +## Residual routes and accounting + +Every distinct entrance has a stored integer matrix N with N N^T = 4I. Its +first dim(E) rows span exactly E, checked against every root of E. The remaining +rows give an isometry of E-perp to a coordinate block. For these 16 entrances, +N/2 is a coordinate permutation, reduced to identity with at most seven swaps. +Extending it by identity on 56 exterior coordinates and permuting coordinates +places the residual into its assigned interval. This is an explicit isometry +for I_64/2 at every inherited odd address prime. Reversal has the same residual +projector I-P_E; the common exterior window cancels from the endpoint difference. + +Per stage, the exact bank partition is: + +- 424 banks with widths `(7,7,7,7,7,7,7,7,8)`; +- 16 banks with sixteen width-four blocks; +- 2,451 banks with eight width-eight blocks. + +Each coordinate is used exactly once. The independent audit checks all intervals, +frame IDs, orthogonal matrices and elementary route factors. It rejects reused +slots, wrong frames, altered bases, missing route factors and omitted calls. +The 32 replicas use `8*120*32 = 30,720` data families. Hence live stock is +`30,720 + 9*2,891 = 56,739`, with nine sequential private-centre reserves giving +physical stock 56,748. The paid profile is 288 times the local profile plus +23,040 rank-seven idle children and 15,360 each of ranks 14, 28 and 42. +Its rank deficit is `64*56,739 - paid_rank_mass = 9,984 = 32*312`. +No rank mass, idle move, copied centre or bridge is omitted. + +## Finite and analytic gates + +The finite invoice is recomputed with T=32, the larger live/physical stock, all +288 local calls, replicated bridges and copy episodes, and explicit residual +routes. It charges 144 additional elementary route factors per helper routing, +covering seven local swaps and 64 coordinate swaps. The prefix bound comes from +the emitted forward and reflected programs. Independent replicas act on separate +data and disjoint residual coordinates; sequential private copies are erased, +so replication does not multiply the per-coordinate coefficient-growth bound. +The invoice nevertheless charges every emitted operation and route. + +Both rational moment engines must certify the bit lower endpoint +`0.001140121438872176364117`, including the inherited 10^-16 bad-branch allowance. +The maximum child still satisfies `2*42^2 < 64^2`. The newly computed two-level +coefficient must fit the retained 512-bit budget and row coefficient 18,355. +With the cited PR #433 complex rate, six ordinary bootstrap levels and all 47 +strict outer inequalities give conditional +`kappa = 1138823042306561 / 1000000000000000000 = 0.001138823042306561`. +The adjacent 10^-18 grid point and invalid outer parameters must be rejected. +These are release-verifier requirements, not substitutes for its receipts. + +The original all-size compiler, correlated dirty-bank, compressed-window, +restored-work, tape/common-grid, precision and analytic assumptions remain. +The complex supplier and its mutable-basis interface are cited from PR #433; +this package does not rerun its Gaussian phases or prove an unconditional theorem. diff --git a/research/e8-rank138-idle-hosting/upstream443/README.md b/research/e8-rank138-idle-hosting/upstream443/README.md new file mode 100644 index 0000000000..c8e8d3042a --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/README.md @@ -0,0 +1,62 @@ +# R740 kernel with 32 replicas and complete residual banks + +The conditional candidate is **κ = 0.001138823042306561**, with bit lower endpoint +**0.001140121438872176364117**. Full verification is required before admission. +It exceeds PR #441 at `6160c13526f5f957902910b462164c93c1d8f39a` by about 0.00219%. + +Eight replicas forced the previous search to drop kernel pivots so that residuals +filled whole width-64 banks. Four independent groups of eight replicas allow a +114-pivot kernel with entrance rank 138 to fill 2,891 banks per stage exactly. +This preserves two rank-one pivots that the eight-replica packing discarded. +All bank coordinates are occupied; there is no padding. The primitive ADD +sequence retains PR #440's 57 A-frame choices and PR #441's two B-frame stages +(112 and 42 changes, 126 net changed B gates). Both stages are rechecked on the +new kernel word. + +| Quantity | Result | +| --- | ---: | +| Helpers / local arbitrary input columns | 740 / 980 | +| Replicas / local invocations | 32 / 288 | +| Kernel pivots / donor slots / entrance rank | 114 / 103 / 138 | +| Banks per stage | 2,891 | +| Live / physical families | 56,739 / 56,748 | +| One-replica unbanked global columns | 7,620 | +| Helper owner assignments | 213,120 | +| Rank deficit | 9,984 | +| Cited complex lower endpoint (#433) | 0.001183986549206329 | +| Binding side | Bit | + +## Reproduction + +Python 3.11 or newer, numpy, mpmath, sympy, a C++17 compiler and Boost headers: + +```sh +python3 -m pip install -r research/e8-r740-replica32/parent436/requirements.txt +bash research/e8-r740-replica32/verify.sh /tmp/e8-r740-replica32-full +``` + +Set `PYTHON`, `CXX` or `BOOST_INCLUDE` when needed. `--quick` skips only the +parent's historical regressions. Every mode checks the frozen manifest and +parent source blobs, reconstructs PR #436 and both new transformations, verifies +local arbitrary-dirt columns, reflected copy chronology, exact frame projectors, +all replica owners and residual bank coordinates, 16 explicit orthogonal routes, +mutation controls, two rational moments, a fresh finite invoice, six bootstrap +levels and 47 strict outer inequalities. The next grid point is rejected. + +## Scope + +PR #442 reports a larger bound using an additional idle-data hosting extension. +This package isolates the gain from exact replica banking within the prior +helper-bank interface. + +This is a finite conditional construction for the retained +`T(n) = O(n (log n)^(1-κ))` assembly. The complex supplier is cited from #433, +including its #425 mutable-basis interface; its construction and Gaussian-phase +audits are not rerun here. Astronomical cover enumeration, all-size compiler, +correlated dirty-bank, restored-work, precision, tape/common-grid and analytic +interfaces remain assumptions. This is not a Lean proof or an unconditional +integer-multiplication theorem. κ = 1 remains open. + +Search scores only nominated candidates. The admitted witnesses, costs, maps and +strict comparisons use integers or exact rationals. See `PROOF.md`, `NOTICE.md`, +`SOURCE.json` and the unchanged parent package for dependencies and proof scope. diff --git a/research/e8-rank138-idle-hosting/upstream443/SOURCE.json b/research/e8-rank138-idle-hosting/upstream443/SOURCE.json new file mode 100644 index 0000000000..405be7ad31 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/SOURCE.json @@ -0,0 +1,125 @@ +{ + "repository": "https://github.com/CrocSwap/integer-mult-bounds", + "parent436_commit": "da8ca2025472553ac9b36f4400138ed48a6a0e3b", + "parent436_pr": "https://github.com/CrocSwap/integer-mult-bounds/pull/436", + "parent436_blobs": { + "EXPECTED.json": "7f5f7f3f9da9864220d4c6ee6bac23010f590d47", + "LICENSE": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "MANIFEST.sha256": "399beb5da45c2e226ee7320b513f622938c0fdc1", + "NOTICE.md": "2c01026b8b300ccc16c313f652f9e46e61617304", + "README.md": "5ddb576f02f1e3ef8cfee443bd654ad8cf26b837", + "SOURCE-pr370.json": "db86b22e15681b5d120bdc7acd0a1e9cd5e6e363", + "SOURCE-pr376.json": "818f17fb6a01e198956b7faffc5d6ce87a0a4bbf", + "SOURCE-pr381.json": "042a26c7c2ec22de93dd2aa509a6087e71302f28", + "SOURCE-pr386.json": "ac24e5d262d38909a13ecc35fbf7bccb75f977aa", + "SOURCE-pr417.json": "33f0ae053c284e12097aaf810c56f7b235c160bc", + "SOURCE-pr425.json": "8d9c976b02a418eb2877375f1d83fcac17cc3df7", + "SOURCE-pr426.json": "7c72390e09ead086207b74e7d8029e9d14499545", + "SOURCE-pr431.json": "00f1075773f5db3d95075d524f412bd79d160c70", + "SOURCE-pr433.json": "910a7c34903b855e219a7ff47e48de018db2490d", + "code/b4/kappa_b4.py": "402a510e15fc8a3541ddd84d2044e79e288fef89", + "code/bit/checkers/certify_bit_k.py": "37ce2ee2b412b3b97a397159f48b912ef893b014", + "code/bit/checkers/columns_h.cpp": "00c5a3a5d81d083582f60f33dd2e7bea5049c37f", + "code/bit/checkers/columns_k.cpp": "42bb232fbec4de703e70cc13dc2f39a3b43a3a01", + "code/bit/checkers/cost.py": "677584c1c6b0e959c19f58521b68d4b3e847f97e", + "code/bit/checkers/finite_k.py": "8781815ee6ee663edc0e0afdf1380186594ec913", + "code/bit/checkers/geometry_k.py": "2a052980816d9b56b33c5e41132bb7f86286462b", + "code/bit/checkers/gram_frames.py": "b740d47295c02692260d7cc01874a49fe48f78ab", + "code/bit/checkers/json.hpp": "82d69f7c5d044c9887c96b90c97f5639083ecd14", + "code/bit/checkers/legality_h.cpp": "cb1233c7e96b1aa8bbf4d2e4165d75ab0dca64b9", + "code/bit/checkers/tile_k.py": "a4635e6681c2f1521b44f24364cc457d304cb077", + "code/bit/export_records.py": "3632d370486a02f5456f7643ced03f8c925b2350", + "code/bit/independent/checkword.py": "da4e0fe05067184d4dab1e130ae1384c1fa983f5", + "code/bit/independent/mutate.py": "eba592fd468e0d7e7e5100fe99da6eb548c5906b", + "code/bit/mutate_records.py": "6794516f665d36eac189894e350a5ad01113cb4c", + "code/bit/producer/compile.py": "86b12507ef86308336833a208a989d56072096d1", + "code/bit/producer/compile2.py": "a7bdfdfbe417c793b2a8c515f5432bdd10472259", + "code/bit/producer/e8lib.py": "8464b956f6a5aa5061695990a14b7a385d370c2e", + "code/bit/producer/frames.py": "b28c3b2413b9767e7ffe0a8b2db93836f3455494", + "code/bit/producer/fullword.py": "104f01b7803481b623809bc8a57682d28f09b5c3", + "code/bit/producer/ham1.py": "8086649a5f71c16698db7059bbada7187d781b56", + "code/bit/producer/ham2.py": "842f76b245a1bfb4150c53a853f6f472511f5a2f", + "code/bit/producer/params-r865.json": "110b4d94d884f03d4d37be22672ab27d836f1275", + "code/bit/producer/price.py": "9014d97d519eea1f8c96e4bfc75afa0febd5903f", + "code/bit/receipts_k.py": "428261488b4af028fd04df4f84eead1dad79a389", + "code/bit/regression/stage_cohort.py": "f6d7afe3e623208c4207b6a683a1e3e49249e31c", + "code/complex/code/bridged.py": "626a28614b07066528fd5f189d87cffa5015ac60", + "code/nine/audit_g.py": "719b378a0e20e99a79a3da6462be0e430fe7ee60", + "code/nine/certify_g.py": "9f4ae1600ae2f2cedd17ea37338f5d54ec7e83b9", + "code/nine/cited.py": "3aedb7a5c5bb06e04dae1f135ca5d5a4a5fdd2fe", + "code/nine/compose433.py": "b2f3fb6ba1a35b6dfcc6da12f0425c16be832cde", + "code/nine/geometry.py": "91594e0223e8fac49162b5aef834ffaa8e94a254", + "code/nine/global_word_g.py": "10eab502ded5374cf05bf89864044007e37458ed", + "code/nine/regress386.py": "8cbca55668a445502b3a0f07f27687474d0d764f", + "code/pricing/base_two_moment.py": "14a90fa0e788217856f070382c9e61bd7c603c61", + "code/pricing/moment.py": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "code/pricing/outer.py": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "code/pricing/prime_witnesses.py": "7f16d930302ae879c562dd58e085d9747fcac077", + "code/provenance.py": "9bfcb106230e454d9405ce5eb42dd2218d905ea6", + "code/reuse/controls.py": "ceb15852b726423f8b6978ba80817ba2b4ac5b39", + "code/reuse/ecost.py": "4ec2a959b1cd599e3297de17563446d623e2867c", + "code/reuse/regen.py": "529de1b8b37f28e877a57ab3e22a506002860370", + "code/reuse/retime.py": "9c3e94b800b70cfe1383ea6478d85bf859903006", + "code/reuse/reuse.py": "df455a0b37cca6ebd1a214661b540e8665467208", + "code/tail/apply376.py": "c401a84d8f549e0752464ab8313ce648bb4d14fa", + "code/tail/bootstrap.py": "1bc17e768259c342fb8b94b919bfeaea10304153", + "code/tail/e8core.py": "78983b368715e89fe8524a6dd2c13585d2b5394e", + "code/tail/engines/base_two_moment.py": "14a90fa0e788217856f070382c9e61bd7c603c61", + "code/tail/engines/moment.py": "7d697cb45203fe72d97037403d6da41f71f3b7fd", + "code/tail/engines/outer.py": "43007488ad2c43187c77cc6798beff8b1cd76ad2", + "data/bit/bitE8-r740.json.gz": "8a8ce996b890c7d11b2f8c7fbbd8148747627f46", + "data/bit/bitE8-r865.json.gz": "8bec1751f7e33c3a1e4673ef5dbc34d6f205321e", + "data/bit/reuse-ledger.json": "51eb63c7d8b3b4a0640412a215df042e878f1034", + "data/complex-b-433.json": "2d1db891592346fa225924d8d1666743c2144e11", + "data/complex-b-b4.json": "4fd117cd047ebbe86db44c732e72f1b75e9e45d4", + "data/complex-b-nine.json": "a215ba618871f09cdea2ede90240b980f62228e5", + "data/controls/LICENSE-pr426": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "data/controls/pr376/LICENSE-pr376": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64", + "data/controls/pr376/frame-selection.json": "647b34368f3f0c7d228c70fa335af872e7946beb", + "data/controls/pr376/reuse-selection.json": "a6954dc65f28137ad16d015b42c40dbbde0bd66f", + "data/controls/pr386/AUDIT.json": "698e827ae87ae9db47fd30cf69537176276cff4e", + "data/controls/pr386/COMBINED.json": "8d6e3f22667fa0f6fa1a5495223e87f90a4cd103", + "data/controls/pr386/GLOBAL.json": "21bc6dcc7bbefedcd3064485d0e82c95e585044c", + "data/controls/pr417-bitE8-nine-kernel.json.gz": "572172b8148538d1937b9f7fa7f3939755008a8c", + "data/controls/pr425/FINAL.json": "1e9c8784c3cb719acb5274126141fe360af253fa", + "data/controls/pr426-bit-candidate.json.gz": "807cea53ebe1322721463ee2319bcd52b9714f24", + "data/controls/pr431/VALIDATION-LOCAL.json": "0f0a80418d7f3e521c980ef0354fc3945eae1795", + "data/controls/pr433/CERTIFICATE.json": "7e807079c1ec4907306035c84be1ba2fb1d69d79", + "data/params/params-r740.json": "d9bc74d95b4bd1acde79ada315508f24b4fc06e3", + "discovery/README.md": "025c3ac932a976b3ad5ff31ba08a39c0d3c9d4ff", + "discovery/search_params.py": "6e57d290f31e748753a4aa77472278c92407edf9", + "portable-include/bits/stdc++.h": "fc5664e929d9a81d9b4926bee049a93330be86ec", + "requirements.txt": "1cc9b96f593a9ce8a70b6b951c633452cb97e778", + "verify.sh": "1f03e028799147b03ecd6339cc951f1debbd9dbe" + }, + "kernel_origin": "https://github.com/CrocSwap/integer-mult-bounds/pull/417", + "kernel_origin_commit": "3f681fb571036ca4a267570318260b0d083f7b9d", + "bank_integration_reference": "https://github.com/CrocSwap/integer-mult-bounds/pull/435", + "bank_reference_commit": "2c9c833ac8709402c37fc88a6a23393fb0d397fb", + "note": "PR439 exact bank routes generalized to 32 replicas. PR440 inspired primitive retiming and supplied the search warm start. The new 114-pivot rank138 selection is re-derived on a frozen primitive-retimed PR436 word. Retained PR417 sources and the complete PR436 package remain byte-identical.", + "kernel_identical_blobs": { + "code/e8core.py": "78983b368715e89fe8524a6dd2c13585d2b5394e", + "code/stages.py": "9ef95d52f4b2ba0389bb2edb15228da698dd75f4", + "code/export249.py": "462a0f121f5363265b02d812cb12bed39e33dc74", + "code/tile_m.py": "cd5fd9b5399f5e7afe5d2a95bd3504bd543c0d60" + }, + "replica_origin": { + "pr": 439, + "commit": "fa3a588ec1e383083abb8de9c51904fb9d689ad4", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/439" + }, + "warm_start": { + "pr": 440, + "commit": "bd03373b6d4d4e380d0b6ea7d55cd2ac8f163544", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/440" + }, + "joint_retiming": { + "pr": 441, + "commit": "6160c13526f5f957902910b462164c93c1d8f39a", + "url": "https://github.com/CrocSwap/integer-mult-bounds/pull/441" + }, + "witness_identical_blobs": { + "data/upstream441/pair-retime-selection.json": "1b7b7f33ff071d9f474ee6623c8a3fbfd7659646", + "data/upstream441/window-retime-selection.json": "d816fc0da675ead91188a8e9565c1275c31a18fc" + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/code/audit_kernel.py b/research/e8-rank138-idle-hosting/upstream443/code/audit_kernel.py new file mode 100644 index 0000000000..5bfcd07320 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/audit_kernel.py @@ -0,0 +1,150 @@ +# Explicit residual-bank audit added by chafreaky with OpenAI Codex assistance. +"""Independent projector, 32-replica ownership and emitted-template audit. +PR386 audit by Zhihao Chen with OpenAI Codex assistance; PR436 generalization by +eumemic with Anthropic Claude assistance; PR439 routes and this replication +extension by chafreaky with OpenAI Codex assistance. Apache-2.0. +Historical regression is performed by the unchanged parent wrapper. +""" +import argparse, copy, gzip, hashlib, json, struct, time +from collections import Counter, defaultdict +from pathlib import Path +import sympy as S +from bank_routes import validate_isometries +from config import REPLICAS + +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) + ap.add_argument('--word',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())) + T=REPLICAS + assert T==32 and T%8==0 and g['replicas']==T + V,R=g['v'],g['R']; LOCAL=2*V+R; DATA=2*4*V*T; LIVE=g['live'] + assert V==120 and DATA==30720 and g['live']==LIVE + I=S.eye(8); proj={}; dimensions={} + for key,f in fs.items(): + k=int(key); B=S.Matrix(f['B']) if f['B'] else S.zeros(0,8) + P=B.T*(B*B.T).inv()*B if B.rows else S.zeros(8) + assert P.T==P and P*P==P and P.trace()==f['dim'] + proj[k]=P; dimensions[k]=f['dim'] + pairs={} + for op,x,y,c,r,z in records: + if op==0: + key=(y,c) + if key not in pairs: + D=proj[c]-proj[y] + assert proj[c]*proj[y]==proj[y] and proj[y]*proj[c]==proj[y] + assert D*D==D and D.trace()==r + # Reflected reverse has exactly the same positive projector. + assert (I-proj[y])-(I-proj[c])==D + pairs[key]=r + assert len(proj)==len(fs) + print('exact frame projectors',len(proj),'nested pairs',len(pairs),flush=True) + 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 + + word=json.loads(gzip.decompress(a.word.read_bytes())) + assert sha(a.word)==g['word_sha256'] + state=json.loads((a.local_check/'records/249-states.json').read_text()) + initial=[state['initial'][str(i)] for i in range(LOCAL)] + assert initial==word['start'] + widths=[8-dimensions[f] for f in initial[2*V:]] + ENT=sum(8-x for x in widths) + assert T*(8*R-ENT)%64==0 + NB=T*(8*R-ENT)//64 + assert LIVE==DATA+9*NB and g['banks_per_stage']==NB + + def validate(q,check_profile=True): + assert validate_isometries(q['residual_isometries'],word['frames'],word['lines'],dimensions)==set(initial[2*V:]) + assert (q['m'],q['live'],q['replicas'],q['stages'])==(64,LIVE,T,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 0 and replicas % 8 == 0 + by_width = {} + for rep in range(replicas): + 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) == replicas * 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/e8-rank138-idle-hosting/upstream443/code/compose_kernel.py b/research/e8-rank138-idle-hosting/upstream443/code/compose_kernel.py new file mode 100644 index 0000000000..0d92ae7c41 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/compose_kernel.py @@ -0,0 +1,179 @@ +# Kernel finite invoice by chafreaky with OpenAI Codex assistance. +"""This word's bit side composed with PR #433's complex supplier, with PR #433's own bit pricing, finite invoice and +outer tail (icekylinx's code/bit_price.py and code/combined.py, ported line by line onto this package's receipts). + +Bit price (#433 bit_price.py): PR #315's moment.certify with the inherited 10^-16 bad-branch allowance; c is its + 10^-24-grid lower endpoint; the second engine (base_two_moment, same allowance) must put the lower endpoint below 1 + and the upper endpoint above 1. +Finite invoice (#433 combined.py): #386's coefficient with the fresh prefix bound charged at the next multiple of 64 + bits (at most 256), two-level coefficient below 2^512, row coefficient 18,355 < 20,161. +Tail (#433 combined.py): eta = beta = 10^-18, seed s = min(c, (1 - beta) b) - 10^-24, six bootstrap levels with the + 512-bit cutoff, kappa = the last 10^-18 grid point below (1 - eta) q / (1 + q), q = a_6 (1 - 2 eta); PR #315's outer + assembly with its 47 strict inequalities; next grid point, zero eta, zero beta and unit beta rejected. +Controls: PR #433's stated R758 profile must price to PR #433's bit c, and (that c, PR #433's b) must give PR #433's + kappa, before this word is composed. +usage: compose433.py --pricing DIR --out DIR --cited FILE --receipt CERTIFICATE.json +Prepared by eumemic with Anthropic Claude assistance; Apache-2.0.""" +import argparse +import hashlib +import importlib.util +import json +from fractions import Fraction as Q +from pathlib import Path +from config import REPLICAS + + +def load(path, name): + s = importlib.util.spec_from_file_location(name, path) + m = importlib.util.module_from_spec(s) + s.loader.exec_module(m) + return m + + +def sha(p): + return hashlib.sha256(p.read_bytes()).hexdigest() + + +ap = argparse.ArgumentParser() +ap.add_argument("--pricing", type=Path, required=True) +ap.add_argument("--out", type=Path, required=True) +ap.add_argument("--cited", type=Path, required=True) +ap.add_argument("--receipt", type=Path, required=True) +a = ap.parse_args() +M = load(a.pricing / "moment.py", "c433_moment") +Other = load(a.pricing / "base_two_moment.py", "c433_other") +Outer = load(a.pricing / "outer.py", "c433_outer") +cited = json.loads(a.cited.read_text()) +cert = json.loads(a.receipt.read_text()) +assert cert["status"] == "PASS_CONDITIONAL_SPLIT_CENTRE_ASSEMBLY" and cert["binding_component"] == "bit" +assert (cert["complex_lower"], cert["bit_lower"], cert["kappa"]) == (cited["b"], cited["bit_c"], cited["kappa"]) +grid = Q(1, 10 ** 18) + + +def price(P, m, W): + """#433 bit_price.py: 10^-24 lower endpoint of PR #315's certify (bad-branch allowance), second engine check""" + root = M.certify(P, m, W, True) + lo, hi = Q(root["lower"]), Q(root["upper"]) + fb = 32 * m * m * sum(P.values()) + + def other(x): + l, u = Other.moment(m, W, list(P.items()), x) + p, q = Other.moment(m, W, [(1, fb)], x) + return l + p / 10 ** 16, u + q / 10 ** 16 + assert other(lo)[1] < 1 < other(hi)[0] + lo2, hi2 = Other.moment(m, W, list(P.items()), lo) + bl, bh = Other.moment(m, W, [(1, fb)], lo) + assert hi2 + bh / 10 ** 16 < 1 # #433 combined.py's check at c + return lo, hi + + +def tail(c, b): + """#433 combined.py: six fixed bootstrap levels and the 47-inequality outer assembly""" + eta = beta = Q(1, 10 ** 18) + s = min(c, (1 - beta) * b) - Q(1, 10 ** 24) + assert 0 < s < c and s < (1 - beta) * b + chain = [Q(384599, 10 ** 10)] + cutoffs = [] + + def ceil(x): + return -((-x.numerator) // x.denominator) + for _ in range(6): + old = chain[-1] + z = (1 - s) * s + s * old + gap = min(s - z, 1 - z - s, 1 - z - s * (1 - old), 1 - s) + assert old < z < s < 1 - z and gap > 0 + 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(z) + q = chain[-1] * (1 - 2 * eta) + ticks = (1 - eta) * q / (1 + q) / 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)}} + asm = Outer.assembly(chain[-1], b, bridge, k, eta=eta, beta=beta) + assert len(asm["strict_constraints"]) == 47 and all(x > 0 for x in asm["strict_constraints"].values()) + rejected = [] + 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: + rejected.append(name) + else: + raise AssertionError(name) + binding = "bit" if c < (1 - beta) * b else "complex" + return k, binding, rejected, cutoffs, asm + + +b = Q(cited["b"]) +# control 1: PR #433's stated R758 profile, priced by the same code, gives PR #433's bit c +L433 = {int(r): n for r, n in cited["bit_local_profile"].items()} +R433 = cited["bit_R"] +P433 = {r: 72 * n for r, n in L433.items()} +for r, n in ((7, 48 * 120), (14, 32 * 120), (28, 32 * 120), (42, 32 * 120)): + P433[r] = P433.get(r, 0) + n +W433 = 64 * 120 + 9 * R433 +assert sum(r * n for r, n in L433.items()) == 8 * R433 + 72 + 2 * 120 * 7 +assert 64 * W433 - sum(r * n for r, n in P433.items()) == 2496 +c433, _ = price(P433, 64, W433) +assert c433 == Q(cited["bit_c"]), (str(c433), cited["bit_c"]) +# control 2: PR #433's (c, b) through the tail gives PR #433's kappa +k433, bind433, _, _, _ = tail(c433, b) +assert k433 == Q(cited["kappa"]) and bind433 == "bit", str(k433) +print(" control: PR #433's R758 profile prices to c = %s (= PR #433 bit_lower); with b = %s the tail gives kappa = %s" + " (= PR #433, bit-bound)" % (c433, b, k433), flush=True) +# this word: the compressed nine-stage receipts of global_word_g.py / audit_g.py, #433's invoice and tail +out = a.out +g = json.loads((out / "GLOBAL.json").read_text()) +geo = json.loads((out / "GEOMETRY.json").read_text()) +audit = json.loads((out / "AUDIT.json").read_text()) +assert audit["template_sha256"] == g["template_sha256"] and len(audit["mutations_rejected"]) == 14 +P = {int(r): z for r, z in audit["profile"].items()} +m, W = 64, g["live"] +E = sum(P.values()) +T, L, R, V, K = REPLICAS, 9, g["R"], 120, 4 +assert T==32 and g["replicas"]==T +mass = sum(r * z for r, z in P.items()) +assert m * W - mass == 312*T and W == 8*T*V + 9 * g["banks_per_stage"] +physical = g["physical"] +d = m * m +N = 2 * m +unit = L * T * g["local_additions"] + g["bridge_additions"] +J = 8 * T * L * (2 * V + R) + 8 * (2 * K * V * T) + 2 * g["bank_assignments"] + 2 * g["copy_erase_episodes"] +high = 16 * (d + 1) ** 2 +good = 8 * m * m + 8 +compiler = 128 * N ** 3 +# Each new bank route is an 8-by-8 rational orthogonal matrix followed by +# a coordinate permutation. A conservative 8^2+16 elementary factors plus +# 64 transpositions is covered by an extra 144 factors per helper route. +selectors = 2 * L * T * ((W - 1) + R * m * (geo["max_route_factors"] + 144 + (m - 1) + m)) +prefix = int(g["global_prefix_bound"]) +charged_prefix = 64 * ((prefix.bit_length() + 63) // 64) +assert prefix < 1 << charged_prefix <= 1 << 256 +coefficient = unit + J * high + J * physical + E * (good + compiler) + 16 * m ** 3 + g["copy_erase_episodes"] + selectors + prefix + 1 +two = (coefficient + 1) ** 2 * (E + 1) ** 2 +assert two < 1 << 512 and 2 * max(P) ** 2 < m * m +row = 2 * (m * m + 1) + 9909 + 252 +assert row == 18355 < 20161 +assert geo["bad_prime_factors"] == [2] and geo["route_denominators"] == [1, 2, 4] +c, chi = price(P, m, W) +k, binding, rejected, cutoffs, asm = tail(c, b) +result = dict(status="PASS_KERNEL_BIT_SIDE_COMPOSED_WITH_CITED_PR433_COMPLEX", bit_lower=str(c), bit_upper=str(chi), + bit_lower_decimal=format(float(c), ".24f"), complex_lower=str(b), kappa=str(k), + kappa_decimal=format(float(k), ".18f"), binding_component=binding, + gain_over_pr433_percent=float(100 * (k / Q(cited["kappa"]) - 1)), + bit_gain_over_pr433_percent=float(100 * (c / Q(cited["bit_c"]) - 1)), + bit_invoice=dict(prefix_bits=prefix.bit_length(), charged_prefix_bits=charged_prefix, + 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 asm["strict_constraints"].items()}, + minimum_strict_constraint=str(min(asm["strict_constraints"].values())), outer_controls=rejected, + bootstrap=cutoffs, bit_global_sha256=sha(out / "GLOBAL.json"), bit_audit_sha256=sha(out / "AUDIT.json"), + controls=dict(pr433_bit_c=str(c433), pr433_kappa=str(k433)), source=cited["source"]) +(out / "COMPOSED-433.json").write_text(json.dumps(result, indent=2) + "\n") +print("PASS this word with PR #433's bit engine and invoice: c = %s = %.24f (prefix %d bits, charged %d; two-level %d" + " bits < 512)" % (c, float(c), prefix.bit_length(), charged_prefix, two.bit_length()), flush=True) +print("PASS composed with PR #433's complex b = %s: kappa = %s = %.18f (%s-bound; PR #433: %s, %+.6f%%; 47 strict" + " inequalities, next grid point, zero eta, zero beta and unit beta rejected)" + % (b, k, float(k), binding, cited["kappa"], result["gain_over_pr433_percent"]), flush=True) diff --git a/research/e8-rank138-idle-hosting/upstream443/code/config.py b/research/e8-rank138-idle-hosting/upstream443/code/config.py new file mode 100644 index 0000000000..c6824d9c4e --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/config.py @@ -0,0 +1,2 @@ +"""Four independent groups of eight replicas; no bank padding.""" +REPLICAS = 32 diff --git a/research/e8-rank138-idle-hosting/upstream443/code/e8core.py b/research/e8-rank138-idle-hosting/upstream443/code/e8core.py new file mode 100644 index 0000000000..78983b3687 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/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/e8-rank138-idle-hosting/upstream443/code/engines/base_two_moment.py b/research/e8-rank138-idle-hosting/upstream443/code/engines/base_two_moment.py new file mode 100644 index 0000000000..14a90fa0e7 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/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/e8-rank138-idle-hosting/upstream443/code/engines/moment.py b/research/e8-rank138-idle-hosting/upstream443/code/engines/moment.py new file mode 100644 index 0000000000..7d697cb452 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/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/e8-rank138-idle-hosting/upstream443/code/export249.py b/research/e8-rank138-idle-hosting/upstream443/code/export249.py new file mode 100644 index 0000000000..462a0f121f --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/export249.py @@ -0,0 +1,86 @@ +"""Export a bitE8/1 word to PR249 snapshot format (249-records.bin, 249-states.json, frames.json) and stage it for +PR #266's official cohort checkers. Our own exporter (helpers may start at a kernel entrance E, sigma = dim E). +Records (int32 x 6): 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 gate with several sources: MOVE every participant to the gate frame, then one ADD +per source. Frames: B = integer label vectors of a basis among the frame's root lines; A = primitive integer +annihilator rows under the standard dot product (exact over Q). +usage: export249.py WORD.json.gz SNAPDIR COHORT_IN COHORT_OUT +Chafik Boukhalfa (chafreaky) with Anthropic Claude assistance; Apache-2.0.""" +import sys, os, json, struct, math, shutil +from fractions import Fraction as Q +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from e8core import load_word, Lat, to_masks + + +def nullspace(B, h): + M = [[Q(x) for x in r] for r in B]; piv = []; rk = 0 + for col in range(h): + p = next((i for i in range(rk, len(M)) if M[i][col] != 0), None) + if p is None: continue + M[rk], M[p] = M[p], M[rk]; pv = M[rk][col]; M[rk] = [x / pv for x in M[rk]] + for i in range(len(M)): + if i != rk and M[i][col] != 0: + f = M[i][col]; M[i] = [a - f * b for a, b in zip(M[i], M[rk])] + piv.append(col); rk += 1 + A = [] + for fc in [x for x in range(h) if x not in piv]: + a = [Q(0)] * h; a[fc] = Q(1) + for i, pc in enumerate(piv): a[pc] = -M[i][fc] + den = 1 + for x in a: den = den * x.denominator // math.gcd(den, x.denominator) + ai = [int(x * den) for x in a]; g = 0 + for x in ai: g = math.gcd(g, abs(x)) + A.append([x // g for x in ai]) + return A + + +def export(c, out): + os.makedirs(out, exist_ok=True) + L = Lat(c['lines']); masks = to_masks(c, L); v, R, h = c['v'], c['R'], c['h']; n = 2 * v + R + fid = {}; frames = {} + for k, m in enumerate(masks): + if m in fid: continue + fid[m] = k; B = [list(L.lines[i]) for i in L.basis(m)] + A = nullspace(B, h) if B else [[int(i == j) for j in range(h)] for i in range(h)] + assert len(A) + len(B) == h and all(sum(x * y for x, y in zip(a, b)) == 0 for a in A for b in B) + frames[str(k)] = dict(dim=len(B), B=B, A=A) + F = lambda f: fid[masks[f]] + ZERO = fid[0]; FULL = fid[(1 << v) - 1] + dim = {int(a): b['dim'] for a, b in frames.items()} + cur = [F(f) for f in 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: + f = F(f) + 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, F(c['final'][r])) + with open(out + '/249-records.bin', 'wb') as fh: + for e in rec: fh.write(struct.pack('<6i', *e)) + st = dict(n=n, v=v, h=h, R=R, ZERO=ZERO, FULL=FULL, initial={str(r): F(c['start'][r]) for r in range(n)}, + final={str(r): F(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=(',', ':')) + return st, frames, rec + + +if __name__ == '__main__': + c = load_word(sys.argv[1]); snap, cin, cout = sys.argv[2:5] + st, frames, rec = export(c, snap) + os.makedirs(cin, exist_ok=True); os.makedirs(cout, exist_ok=True) + json.dump(st, open(cin + '/249-states.json', 'w')); json.dump(dict(frames=frames), open(cin + '/frames.json', 'w')) + json.dump({'donor_keys': []}, open(cin + '/249-DONOR-OWNERSHIP.json', 'w')) + json.dump({}, open(cout + '/COHORT249-FRAMES.json', 'w')) + json.dump({k: int(x) for k, x in st['initial'].items()}, open(cout + '/COHORT249-INITIAL.json', 'w')) + json.dump([], open(cout + '/COHORT249-SELECTION.json', 'w')) + shutil.copy(snap + '/249-records.bin', cout + '/COHORT249-RECORDS.bin') + print(' exported %d records, %d distinct frames, n %d, ZERO %d, FULL %d' % (len(rec), len(frames), st['n'], st['ZERO'], st['FULL'])) diff --git a/research/e8-rank138-idle-hosting/upstream443/code/global_kernel.py b/research/e8-rank138-idle-hosting/upstream443/code/global_kernel.py new file mode 100644 index 0000000000..72856bf507 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/global_kernel.py @@ -0,0 +1,243 @@ +# Kernel integration of PR436/PR386 by chafreaky, with OpenAI Codex assistance. +# Original copyright and attribution retained below. This variant uses explicit +# residual isometries and mixed-width banks; the original all-zero-start +# requirement is replaced by the verified kernel entrance contract. +"""Source-bound nine-stage bit template with 32 independent replicas. +PR386 global identity and PR436 generalization by Zhihao Chen and eumemic, +with their disclosed OpenAI Codex and Anthropic Claude assistance, Apache-2.0. +PR439 explicit residual routes and this replication extension by chafreaky, +with OpenAI Codex assistance. All owner assignments and emitted calls are checked. +Historical PR386 regression is performed by the unchanged parent wrapper. +""" +import argparse, gzip, hashlib, json, struct, time +from collections import Counter +from pathlib import Path +from bank_routes import placement, validate_isometries +from config import REPLICAS + +H,L,K,T,M=8,9,4,REPLICAS,64 +def sha(p): return hashlib.sha256(p.read_bytes()).hexdigest() +def write(p,x): p.write_text(json.dumps(x,indent=2)+'\n') + +def recipe(): + out=[dict(kind='local',stage=0,pair=0,reverse=False)]; stage=1 + for j in range(K): + out.append(dict(kind='local',stage=stage,pair=j,reverse=True)); stage+=1 + if j/2') + geo=json.loads((out/'GEOMETRY.json').read_text()) + assert geo['status']=='PASS_COMPRESSED_NINE_BIT_GEOMETRY_AND_BANK_BLOCKS' + # the port routes depend only on the labels: same 120 label vectors, in the same order + assert len(geo['ports'])==V and all(p['port']==t and p['q']==w['lines'][t] for t,p in enumerate(geo['ports'])) + rp=a.local_check/'records/249-records.bin'; raw=rp.read_bytes(); rec=list(struct.iter_unpack('<6i',raw)) + state=json.loads((a.local_check/'records/249-states.json').read_text()) + fs=json.loads((a.local_check/'records/frames.json').read_text())['frames'] + dims={int(f):z['dim'] for f,z in fs.items()} + lg=json.loads((a.local_check/'cout/legality.json').read_text()) + cc=json.loads((a.local_check/'cout/columns.json').read_text()) + assert lg['status'].startswith('PASS') and cc['status'].startswith('PASS') + assert (state['v'],state['n'])==(V,LOCAL) and lg['copies']==lg['erasures']==9 + ADDS=lg['common_frame_ADDs'] + assert cc['formal_columns_checked']==4*V+R and cc['local_scalar_additions']==ADDS + initial=[state['initial'][str(i)] for i in range(LOCAL)] + final=[state['final'][str(i)] for i in range(LOCAL)] + assert all(dims[final[i]]==H for i in range(2*V,LOCAL)) + widths=[H-dims[initial[i]] for i in range(2*V,LOCAL)] + ENT=sum(H-z for z in widths) + place,NB=placement(widths,T) + assert T%8==0 and T*(H*R-ENT)%M==0 and NB==T*(H*R-ENT)//M + LIVE=DATA+L*NB + isometries=json.loads(a.isometries.read_text()) + assert validate_isometries(isometries,w['frames'],w['lines'],dims)==set(initial[2*V:]) + streams={}; checks={}; localH=None + for reverse in (False,True): + cur=(final if reverse else initial)[:]+[-1]; val=[1<=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 U-perp, ERASE -> fresh COPY), F2 on all local columns + private centre, 9 copies of rank 8, +equal forward/reverse paid histograms, cancellation-free row l1 bounds and the nine-stage prefix 2^18 cf^5 cb^4 < 2^192, +helper initial/final frames (0 / FULL in #386; kernel pivots start at their entrance). usage: iface386.py WORD.json.gz""" +import sys, os, json, tempfile +from collections import Counter +sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) +from e8core import load_word +from export249 import export +H = 8 +def check(c, allow=int(os.environ.get("PREFIX_ALLOW", "192"))): + st, frames, rec = export(c, tempfile.mkdtemp()) + v, n = st['v'], st['n']; dims = {int(k): z['dim'] for k, z in frames.items()} + initial = [st['initial'][str(i)] for i in range(n)]; final = [st['final'][str(i)] for i in range(n)] + nz_start = Counter(dims[initial[i]] for i in range(2 * v, n)); assert all(dims[final[i]] == H for i in range(2 * v, n)) + out = {} + for reverse in (False, True): + cur = (final if reverse else initial)[:] + [-1]; val = [1 << i for i in range(n)] + [0] + norm = [1] * n + [0]; mx = 1; centre = None; hist = Counter(); copies = adds = 0 + dim = (lambda f: H - dims[f]) if reverse else (lambda f: dims[f]) + for op, x, y, cc, f, z in (reversed(rec) if reverse else rec): + if op == 0: + old, new = (cc, y) if reverse else (y, cc) + assert cur[x] == old and dim(new) - dim(old) == f >= 0; cur[x] = new + if f: hist[f] += 1 + elif op == 1: + assert cur[x] == cur[y] == f and x != y and x < n + if centre is not None: assert x != centre + if y == n: assert centre is not None + if cc & 1: val[x] ^= val[y] + norm[x] += abs(cc) * norm[y]; mx = max(mx, norm[x]); adds += 1 + elif op == (3 if reverse else 2): + assert centre is None and y == n and cur[x] == cc and val[n] == 0 + r = abs(dim(cc) - dim(f)); assert r == 8 + centre = x; cur[n] = f; val[n] = val[x]; norm[n] = norm[x]; hist[r] += 1; copies += 1 + else: + assert centre == x and y == n and cur[x] == cc and cur[n] == f and val[n] == val[x] + val[n] = 0; norm[n] = 0; cur[n] = -1; centre = None + assert centre is None and copies == 9 and cur[:n] == (initial if reverse else final) + for i in range(n): assert val[i] == (1 << i) ^ ((1 << (i - v)) if v <= i < 2 * v else 0) + out['reverse' if reverse else 'forward'] = dict(adds=adds, copies=copies, row_l1=mx, hist=dict(sorted(hist.items()))) + assert out['forward']['hist'] == out['reverse']['hist'] + cf, cb = out['forward']['row_l1'], out['reverse']['row_l1']; pre = (1 << 18) * cf ** 5 * cb ** 4 + return dict(n=n, R=st['R'], helper_start_dims=dict(sorted(nz_start.items())), streams=out, prefix_bits=pre.bit_length(), prefix_ok=pre < 1 << allow, prefix_allow=allow) +if __name__ == '__main__': + print(json.dumps(check(load_word(sys.argv[1])))) diff --git a/research/e8-rank138-idle-hosting/upstream443/code/rebuild.py b/research/e8-rank138-idle-hosting/upstream443/code/rebuild.py new file mode 100644 index 0000000000..f7239ea69f --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/rebuild.py @@ -0,0 +1,65 @@ +"""Reconstruct primitive retiming and the kernel with 32 exact bank replicas. +Prepared by chafreaky with OpenAI Codex assistance; Apache-2.0. +""" +import copy +import json +from pathlib import Path +from e8core import load_word, replay +from iface386 import check +from stages import content_sha, retime +from replica_kernel import kernel +from config import REPLICAS + +ROOT=Path(__file__).resolve().parents[1] +parent=load_word(str(ROOT/'parent436/data/bit/bitE8-r740.json.gz')) +timing=json.loads((ROOT/'data/retiming.json').read_text()) +assert content_sha(parent)==timing['input_sha256'] +primitive=copy.deepcopy(parent) +for phase in ('D','A','B','C'): + primitive[phase]=[[f,d,[s]] for f,d,ss in parent[phase] for s in ss] +retimed=retime(primitive,timing['changes']) +assert len(timing['changes'])==57 and content_sha(retimed)==timing['output_sha256'] +for phase in ('D','A','B','C'): + assert [(d,s) for f,d,ss in parent[phase] for s in ss]==[(d,s) for f,d,ss in retimed[phase] for s in ss] +selected=json.loads((ROOT/'data/selection.json').read_text()) +assert content_sha(retimed)==selected['input_sha256'] +word,entries,rank,donors=kernel(retimed,selected['entries'],REPLICAS) +assert (entries,rank,donors,REPLICAS)==(114,138,103,32) +assert content_sha(word)==selected['output_sha256'] +post=json.loads((ROOT/'data/post-retiming.json').read_text()) +assert [len(s['gates']) for s in post]==[112,42] +for stage in post: + original=json.loads((ROOT/'data/upstream441'/stage['source']).read_text()) + assert stage['gates']==original['gates'] and all(g[0]=='B' for g in stage['gates']) + assert content_sha(word)==stage['input_sha256'] + word=retime(word,stage['gates']) + assert content_sha(word)==stage['output_sha256'] +assert word==load_word(str(ROOT/'data/word.json.gz')) +audit=replay(word,span_mode='z');assert not audit['viol'],audit['viol'][:5] +interface=check(word,192);assert interface['prefix_ok'] + +rejected=[] +for name,mutate in [ + ('retained row used as pivot',lambda s:s[0].__setitem__(1,parent['ret'][0])), + ('duplicate pivot',lambda s:s.append(copy.deepcopy(s[0]))), +]: + bad=copy.deepcopy(selected['entries']);mutate(bad) + try:kernel(retimed,bad,REPLICAS) + except AssertionError:rejected.append(name) + else:raise AssertionError('accepted invalid kernel selection: '+name) +try:kernel(retimed,selected['entries'],8) +except AssertionError:rejected.append('eight replicas do not fill integral banks') +else:raise AssertionError('accepted nonintegral bank stock') +bad=copy.deepcopy(word);bad['A'][0][2].pop() +try:bad_audit=replay(bad,span_mode='z') +except AssertionError:pass +else:assert bad_audit['viol'],'missing dirty-response correction accepted' +rejected.append('omit a kernel dirty-response correction') +bad=copy.deepcopy(timing['changes']);bad[0][2]=[] +try:retime(primitive,bad) +except AssertionError:rejected.append('wrong primitive input frame') +else:raise AssertionError('accepted incorrect frame binding') +print(json.dumps(dict(status='PASS_FROZEN_RETIMING_KERNEL_REPLICA_REBUILD', + input_sha256=content_sha(parent),retimed_sha256=content_sha(retimed),output_sha256=content_sha(word), + pre_kernel_frame_changes=57,post_kernel_frame_changes=[112,42],entries=entries,entrance_rank=rank,donor_slots=donors,replicas=REPLICAS, + interface=interface,mutations_rejected=rejected),sort_keys=True)) diff --git a/research/e8-rank138-idle-hosting/upstream443/code/replica_kernel.py b/research/e8-rank138-idle-hosting/upstream443/code/replica_kernel.py new file mode 100644 index 0000000000..b61f1d98f2 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/replica_kernel.py @@ -0,0 +1,42 @@ +"""PR417 kernel with a checked replication count instead of the eight-replica +rank congruence. All local response and frame checks are retained verbatim. +Generalization by chafreaky with OpenAI Codex assistance; Apache-2.0. +""" +from stages import Lat, to_masks, occurrences, Framer, mask_of, json + +def kernel(c, sel, replicas=32): + 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 replicas > 0 and replicas % 8 == 0 + assert replicas * (8*c['R']-tot) % 64 == 0, 'residual coordinates must fill whole banks' + 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) diff --git a/research/e8-rank138-idle-hosting/upstream443/code/stages.py b/research/e8-rank138-idle-hosting/upstream443/code/stages.py new file mode 100644 index 0000000000..9ef95d52f4 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/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/e8-rank138-idle-hosting/upstream443/code/tile_m.py b/research/e8-rank138-idle-hosting/upstream443/code/tile_m.py new file mode 100644 index 0000000000..cd5fd9b539 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/code/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/e8-rank138-idle-hosting/upstream443/data/post-retiming.json b/research/e8-rank138-idle-hosting/upstream443/data/post-retiming.json new file mode 100644 index 0000000000..f3306fa80d --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/data/post-retiming.json @@ -0,0 +1,9998 @@ +[ + { + "source": "pair-retime-selection.json", + "input_sha256": "baf86c9d11d1819be0eb4349b606a6773d29790739b755dabee10bdbf771a78d", + "output_sha256": "653c24f51f8af2d267c573931edfd92a891cd5a3695d1f4a54279a3f9840cd1a", + "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 + ] + ] + ] + }, + { + "source": "window-retime-selection.json", + "input_sha256": "653c24f51f8af2d267c573931edfd92a891cd5a3695d1f4a54279a3f9840cd1a", + "output_sha256": "64d7d1e0c6ea7a3a8e91254c0dfd51b71637b49703ef4c1fce184fded5040bc9", + "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 + ] + ] + ] + } +] diff --git a/research/e8-rank138-idle-hosting/upstream443/data/residual-isometries.json b/research/e8-rank138-idle-hosting/upstream443/data/residual-isometries.json new file mode 100644 index 0000000000..9b8b35cb15 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/data/residual-isometries.json @@ -0,0 +1,1974 @@ +[ + { + "frame": 0, + "entrance_rank": 0, + "denominator": 2, + "entrance_basis": [], + "residual_basis": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 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 + ] + ], + "gaussian_reduction": [] + }, + { + "frame": 2, + "entrance_rank": 1, + "denominator": 2, + "entrance_basis": [ + 0 + ], + "residual_basis": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 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 + ] + ], + "gaussian_reduction": [] + }, + { + "frame": 3, + "entrance_rank": 1, + "denominator": 2, + "entrance_basis": [ + 1 + ], + "residual_basis": [ + 0, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 0, + 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 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 1, + null + ] + ] + }, + { + "frame": 4, + "entrance_rank": 1, + "denominator": 2, + "entrance_basis": [ + 2 + ], + "residual_basis": [ + 0, + 1, + 3, + 4, + 5, + 6, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0 + ], + [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 2, + 0, + 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 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 1, + null + ], + [ + "swap", + 1, + 2, + null + ] + ] + }, + { + "frame": 5, + "entrance_rank": 1, + "denominator": 2, + "entrance_basis": [ + 3 + ], + "residual_basis": [ + 0, + 1, + 2, + 4, + 5, + 6, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 0, + 0, + 0, + 2, + 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, + 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 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 1, + null + ], + [ + "swap", + 1, + 2, + null + ], + [ + "swap", + 2, + 3, + null + ] + ] + }, + { + "frame": 6, + "entrance_rank": 1, + "denominator": 2, + "entrance_basis": [ + 4 + ], + "residual_basis": [ + 0, + 1, + 2, + 3, + 5, + 6, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 0, + 0, + 0, + 0, + 2, + 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, + 0, + 2, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 1, + null + ], + [ + "swap", + 1, + 2, + null + ], + [ + "swap", + 2, + 3, + null + ], + [ + "swap", + 3, + 4, + null + ] + ] + }, + { + "frame": 7, + "entrance_rank": 1, + "denominator": 2, + "entrance_basis": [ + 5 + ], + "residual_basis": [ + 0, + 1, + 2, + 3, + 4, + 6, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 0, + 0, + 0, + 0, + 0, + 2, + 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, + 0, + 2, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 1, + null + ], + [ + "swap", + 1, + 2, + null + ], + [ + "swap", + 2, + 3, + null + ], + [ + "swap", + 3, + 4, + null + ], + [ + "swap", + 4, + 5, + null + ] + ] + }, + { + "frame": 8, + "entrance_rank": 1, + "denominator": 2, + "entrance_basis": [ + 6 + ], + "residual_basis": [ + 0, + 1, + 2, + 3, + 4, + 5, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 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, + 0, + 2 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 1, + null + ], + [ + "swap", + 1, + 2, + null + ], + [ + "swap", + 2, + 3, + null + ], + [ + "swap", + 3, + 4, + null + ], + [ + "swap", + 4, + 5, + null + ], + [ + "swap", + 5, + 6, + null + ] + ] + }, + { + "frame": 9, + "entrance_rank": 1, + "denominator": 2, + "entrance_basis": [ + 7 + ], + "residual_basis": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "orthogonal_rows_numerator": [ + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 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 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 1, + null + ], + [ + "swap", + 1, + 2, + null + ], + [ + "swap", + 2, + 3, + null + ], + [ + "swap", + 3, + 4, + null + ], + [ + "swap", + 4, + 5, + null + ], + [ + "swap", + 5, + 6, + null + ], + [ + "swap", + 6, + 7, + null + ] + ] + }, + { + "frame": 458, + "entrance_rank": 4, + "denominator": 2, + "entrance_basis": [ + 0, + 1, + 2, + 3 + ], + "residual_basis": [ + 4, + 5, + 6, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 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 + ] + ], + "gaussian_reduction": [] + }, + { + "frame": 461, + "entrance_rank": 4, + "denominator": 2, + "entrance_basis": [ + 0, + 2, + 4, + 6 + ], + "residual_basis": [ + 1, + 3, + 5, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0 + ], + [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 1, + 4, + null + ], + [ + "swap", + 2, + 4, + null + ], + [ + "swap", + 3, + 5, + null + ], + [ + "swap", + 5, + 6, + null + ] + ] + }, + { + "frame": 463, + "entrance_rank": 4, + "denominator": 2, + "entrance_basis": [ + 0, + 3, + 4, + 7 + ], + "residual_basis": [ + 1, + 2, + 5, + 6 + ], + "orthogonal_rows_numerator": [ + [ + 2, + 0, + 0, + 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, + 0, + 0, + 2 + ], + [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 1, + 4, + null + ], + [ + "swap", + 2, + 5, + null + ], + [ + "swap", + 3, + 4, + null + ], + [ + "swap", + 4, + 5, + null + ], + [ + "swap", + 5, + 6, + null + ], + [ + "swap", + 6, + 7, + null + ] + ] + }, + { + "frame": 465, + "entrance_rank": 4, + "denominator": 2, + "entrance_basis": [ + 1, + 2, + 4, + 7 + ], + "residual_basis": [ + 0, + 3, + 5, + 6 + ], + "orthogonal_rows_numerator": [ + [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 4, + null + ], + [ + "swap", + 1, + 4, + null + ], + [ + "swap", + 2, + 4, + null + ], + [ + "swap", + 3, + 5, + null + ], + [ + "swap", + 5, + 6, + null + ], + [ + "swap", + 6, + 7, + null + ] + ] + }, + { + "frame": 466, + "entrance_rank": 4, + "denominator": 2, + "entrance_basis": [ + 1, + 2, + 5, + 6 + ], + "residual_basis": [ + 0, + 3, + 4, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0 + ], + [ + 2, + 0, + 0, + 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, + 0, + 0, + 2 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 4, + null + ], + [ + "swap", + 1, + 4, + null + ], + [ + "swap", + 2, + 4, + null + ], + [ + "swap", + 3, + 5, + null + ], + [ + "swap", + 4, + 6, + null + ], + [ + "swap", + 5, + 6, + null + ] + ] + }, + { + "frame": 468, + "entrance_rank": 4, + "denominator": 2, + "entrance_basis": [ + 1, + 3, + 5, + 7 + ], + "residual_basis": [ + 0, + 2, + 4, + 6 + ], + "orthogonal_rows_numerator": [ + [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ], + [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 2, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 4, + null + ], + [ + "swap", + 1, + 4, + null + ], + [ + "swap", + 2, + 5, + null + ], + [ + "swap", + 3, + 4, + null + ], + [ + "swap", + 4, + 6, + null + ], + [ + "swap", + 6, + 7, + null + ] + ] + }, + { + "frame": 469, + "entrance_rank": 4, + "denominator": 2, + "entrance_basis": [ + 2, + 3, + 4, + 5 + ], + "residual_basis": [ + 0, + 1, + 6, + 7 + ], + "orthogonal_rows_numerator": [ + [ + 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 + ], + [ + 2, + 0, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 2, + 0, + 0, + 0, + 0, + 0, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0 + ], + [ + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2 + ] + ], + "gaussian_reduction": [ + [ + "swap", + 0, + 4, + null + ], + [ + "swap", + 1, + 5, + null + ], + [ + "swap", + 2, + 4, + null + ], + [ + "swap", + 3, + 5, + null + ] + ] + } +] diff --git a/research/e8-rank138-idle-hosting/upstream443/data/retiming.json b/research/e8-rank138-idle-hosting/upstream443/data/retiming.json new file mode 100644 index 0000000000..5769e8a928 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/data/retiming.json @@ -0,0 +1,723 @@ +{ + "input_sha256": "d6ec8811541d6ab59a3bbbaaa15bccc8918b3b43b23d9f593198cfe90826fd20", + "output_sha256": "fec026cda755e5ef93f7ed56923d1452da925cbe0051585e913e0837d9a70ffb", + "changes": [ + [ + "A", + 272, + [ + 64, + 67 + ], + [ + 64 + ] + ], + [ + "A", + 275, + [ + 65, + 66 + ], + [ + 65 + ] + ], + [ + "A", + 278, + [ + 68, + 71 + ], + [ + 68 + ] + ], + [ + "A", + 281, + [ + 69, + 70 + ], + [ + 69 + ] + ], + [ + "A", + 300, + [ + 32, + 35 + ], + [ + 32 + ] + ], + [ + "A", + 303, + [ + 33, + 34 + ], + [ + 33 + ] + ], + [ + "A", + 306, + [ + 36, + 39 + ], + [ + 36 + ] + ], + [ + "A", + 309, + [ + 37, + 38 + ], + [ + 37 + ] + ], + [ + "A", + 328, + [ + 24, + 27 + ], + [ + 24 + ] + ], + [ + "A", + 331, + [ + 25, + 26 + ], + [ + 25 + ] + ], + [ + "A", + 334, + [ + 28, + 31 + ], + [ + 28 + ] + ], + [ + "A", + 337, + [ + 29, + 30 + ], + [ + 29 + ] + ], + [ + "A", + 356, + [ + 16, + 19 + ], + [ + 16 + ] + ], + [ + "A", + 359, + [ + 17, + 18 + ], + [ + 17 + ] + ], + [ + "A", + 362, + [ + 20, + 23 + ], + [ + 20 + ] + ], + [ + "A", + 365, + [ + 21, + 22 + ], + [ + 21 + ] + ], + [ + "A", + 384, + [ + 40, + 43 + ], + [ + 40 + ] + ], + [ + "A", + 387, + [ + 41, + 42 + ], + [ + 41 + ] + ], + [ + "A", + 390, + [ + 44, + 47 + ], + [ + 44 + ] + ], + [ + "A", + 393, + [ + 45, + 46 + ], + [ + 45 + ] + ], + [ + "A", + 412, + [ + 72, + 75 + ], + [ + 72 + ] + ], + [ + "A", + 415, + [ + 73, + 74 + ], + [ + 73 + ] + ], + [ + "A", + 418, + [ + 76, + 79 + ], + [ + 76 + ] + ], + [ + "A", + 421, + [ + 77, + 78 + ], + [ + 77 + ] + ], + [ + "A", + 440, + [ + 112, + 115 + ], + [ + 112 + ] + ], + [ + "A", + 443, + [ + 113, + 114 + ], + [ + 113 + ] + ], + [ + "A", + 446, + [ + 116, + 119 + ], + [ + 116 + ] + ], + [ + "A", + 449, + [ + 117, + 118 + ], + [ + 117 + ] + ], + [ + "A", + 468, + [ + 8, + 11 + ], + [ + 8 + ] + ], + [ + "A", + 471, + [ + 9, + 10 + ], + [ + 9 + ] + ], + [ + "A", + 474, + [ + 12, + 15 + ], + [ + 12 + ] + ], + [ + "A", + 477, + [ + 13, + 14 + ], + [ + 13 + ] + ], + [ + "A", + 496, + [ + 48, + 51 + ], + [ + 48 + ] + ], + [ + "A", + 499, + [ + 49, + 50 + ], + [ + 49 + ] + ], + [ + "A", + 502, + [ + 52, + 55 + ], + [ + 52 + ] + ], + [ + "A", + 505, + [ + 53, + 54 + ], + [ + 53 + ] + ], + [ + "A", + 524, + [ + 80, + 83 + ], + [ + 80 + ] + ], + [ + "A", + 527, + [ + 81, + 82 + ], + [ + 81 + ] + ], + [ + "A", + 530, + [ + 84, + 87 + ], + [ + 84 + ] + ], + [ + "A", + 533, + [ + 85, + 86 + ], + [ + 85 + ] + ], + [ + "A", + 552, + [ + 104, + 107 + ], + [ + 104 + ] + ], + [ + "A", + 555, + [ + 105, + 106 + ], + [ + 105 + ] + ], + [ + "A", + 558, + [ + 108, + 111 + ], + [ + 108 + ] + ], + [ + "A", + 561, + [ + 109, + 110 + ], + [ + 109 + ] + ], + [ + "A", + 580, + [ + 96, + 99 + ], + [ + 96 + ] + ], + [ + "A", + 583, + [ + 97, + 98 + ], + [ + 97 + ] + ], + [ + "A", + 586, + [ + 100, + 103 + ], + [ + 100 + ] + ], + [ + "A", + 589, + [ + 101, + 102 + ], + [ + 101 + ] + ], + [ + "A", + 608, + [ + 88, + 91 + ], + [ + 88 + ] + ], + [ + "A", + 611, + [ + 89, + 90 + ], + [ + 89 + ] + ], + [ + "A", + 614, + [ + 92, + 95 + ], + [ + 92 + ] + ], + [ + "A", + 617, + [ + 93, + 94 + ], + [ + 93 + ] + ], + [ + "A", + 636, + [ + 56, + 59 + ], + [ + 56 + ] + ], + [ + "A", + 639, + [ + 57, + 58 + ], + [ + 57 + ] + ], + [ + "A", + 642, + [ + 60, + 63 + ], + [ + 60 + ] + ], + [ + "A", + 645, + [ + 61, + 62 + ], + [ + 61 + ] + ], + [ + "A", + 2035, + [ + 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 + ] + ] + ] +} diff --git a/research/e8-rank138-idle-hosting/upstream443/data/selection.json b/research/e8-rank138-idle-hosting/upstream443/data/selection.json new file mode 100644 index 0000000000..ef068005b1 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/data/selection.json @@ -0,0 +1,1291 @@ +{ + "input_sha256": "fec026cda755e5ef93f7ed56923d1452da925cbe0051585e913e0837d9a70ffb", + "output_sha256": "baf86c9d11d1819be0eb4349b606a6773d29790739b755dabee10bdbf771a78d", + "entries_count": 114, + "total_entrance_rank": 138, + "donor_slots": 103, + "replicas": 32, + "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 + ], + 978, + [ + 974, + 975, + 979 + ] + ], + [ + [ + 5 + ], + 883, + [ + 274, + 882 + ] + ], + [ + [ + 5 + ], + 827, + [ + 274, + 826 + ] + ], + [ + [ + 1, + 2, + 5, + 6, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55 + ], + 972, + [ + 973, + 976, + 977 + ] + ] + ] +} diff --git a/research/e8-rank138-idle-hosting/upstream443/data/upstream441/pair-retime-selection.json b/research/e8-rank138-idle-hosting/upstream443/data/upstream441/pair-retime-selection.json new file mode 100644 index 0000000000..1b7b7f33ff --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/data/upstream441/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/e8-rank138-idle-hosting/upstream443/data/upstream441/window-retime-selection.json b/research/e8-rank138-idle-hosting/upstream443/data/upstream441/window-retime-selection.json new file mode 100644 index 0000000000..d816fc0da6 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/data/upstream441/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/e8-rank138-idle-hosting/upstream443/data/word.json.gz b/research/e8-rank138-idle-hosting/upstream443/data/word.json.gz new file mode 100644 index 0000000000..85390b07e4 Binary files /dev/null and b/research/e8-rank138-idle-hosting/upstream443/data/word.json.gz differ diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/EXPECTED.json b/research/e8-rank138-idle-hosting/upstream443/parent436/EXPECTED.json new file mode 100644 index 0000000000..7f5f7f3f9d --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/EXPECTED.json @@ -0,0 +1,45 @@ +{ + "note": "Exact values that verify.sh must reproduce. Rationals are on the 10^-18 grid of the hub's pricing; each c is the largest grid point admitted by both PR #315 moment engines (with the 1e-16 fallback), and the next grid point is rejected.", + "word": { + "R": 740, + "content_sha256": "d6ec8811541d6ab59a3bbbaaa15bccc8918b3b43b23d9f593198cfe90826fd20", + "local_histogram": {"1": 2355, "2": 884, "3": 489, "4": 425, "5": 62, "8": 9} + }, + "pr433": { + "bit_lower": "282564789736676592463/250000000000000000000000", + "kappa": "1128983115440183/1000000000000000000" + }, + "nine": { + "c": "565129579473353/500000000000000000", + "controls": { + "pr376": "1084538480613107/1000000000000000000", + "pr426": "1116714040089377/1000000000000000000" + }, + "kappa": { + "pr431": "1056975315151441/1000000000000000000", + "pr425": "524002754014103/500000000000000000", + "pr386": "998243154231047/1000000000000000000" + } + }, + "b4": { + "c": "1064525457834209/1000000000000000000", + "controls": { + "pr370": "249162322049641/250000000000000000", + "pr376": "255384852701747/250000000000000000", + "pr417": "1044063934627389/1000000000000000000" + }, + "kappa": { + "pr424": "1018509848057013/1000000000000000000", + "pr410": "508781072593909/500000000000000000", + "pr409": "508625250464133/500000000000000000", + "pr407": "7941615395831/7812500000000000" + } + }, + "b3": { + "c": "1058066102700151/1000000000000000000", + "controls": { + "pr376": "8128527708459/8000000000000000", + "pr426": "104575879789097/100000000000000000" + } + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/LICENSE b/research/e8-rank138-idle-hosting/upstream443/parent436/LICENSE new file mode 100644 index 0000000000..261eeb9e9f --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/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/e8-rank138-idle-hosting/upstream443/parent436/MANIFEST.sha256 b/research/e8-rank138-idle-hosting/upstream443/parent436/MANIFEST.sha256 new file mode 100644 index 0000000000..399beb5da4 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/MANIFEST.sha256 @@ -0,0 +1,87 @@ +a9655e303cb2c40ce024443b27c0a810ffc24f1ee1e5b07eb19241fad399b5e2 EXPECTED.json +c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 LICENSE +eb9cb7eab03977930484fee70d0aea066803917a6304b1ad2644cfcc6bf2acd4 NOTICE.md +d737a3b77de97bdf67d2a140465be5b8886af6aa57516f78ad8f2839f3dae8cc README.md +352a68f0898535311c63cac879a52b686246ba80844f1a3cc2f3c3f6b1046b4d SOURCE-pr370.json +1608c15638f874243c3ad00bd6a08b30f0e9608de83002273819365ab300b0e7 SOURCE-pr376.json +c457c422d54645ad841c8528bf2efa6c253d1c134ee86c875b9b7d76d4f9520c SOURCE-pr381.json +bba849ed0a1af4d45a76ec734d5f0d07806da2b161f1b5ad8ea63cf2d64b5aa4 SOURCE-pr386.json +d9b7e606f09b840ed9fe10dc8c8250b4cab9bbe5d0cacb62864ca8366a28b2b1 SOURCE-pr417.json +a2c5e2f0e03b0dbcba4ca18282a4ff390a6a395f14411410cfff42d5281d0289 SOURCE-pr425.json +f884cc42793a3afd249ebee20985f61422e7b5baf7c1fcab5b990e1959f31697 SOURCE-pr426.json +71cd86e64217fc4db0199ae8e5ef65cb0cc2ed593e15f03bc1501d4b32fdeb66 SOURCE-pr431.json +f1181aa9f30dcc2e5df7e94738fa0c0cabe5f56b31c8eb843fa0a257da79ed91 SOURCE-pr433.json +cc47efc71334d7d41d6475c5dfc8080a278d3b694b335c6a9873dad4632d1f7e code/b4/kappa_b4.py +e68a81ef7981a90d613752003cd5cab5351e260f909b094f1668d8a4dfe480df code/bit/checkers/certify_bit_k.py +d1297f9052be4f2496e1ff2a77e4db2c0cdbd7d460d489b4c03e50bf317238ce code/bit/checkers/columns_h.cpp +1c344d18fcd494eeca93e259f10cafae7705780e6592f6dcb35b34752dab9bc2 code/bit/checkers/columns_k.cpp +d55d2b865d1c3d35e343e1a38c592b9172ed8e2596d1107e34d92e2a80c7d03f code/bit/checkers/cost.py +7e67dc75e63a11e38ac6d6615656c7cf6982e5a33dd404d04b967bf474cad02e code/bit/checkers/finite_k.py +646b7e8773d9c99376cb00627f109a97319e6d72b439ff513c39035c28c3f70f code/bit/checkers/geometry_k.py +223a5a07731fc315a90a3e48177796babc155c1d9985c7ae5017eff6af2a0608 code/bit/checkers/gram_frames.py +aaf127c04cb31c406e5b04a63f1ae89369fccde6d8fa7cdda1ed4f32dfc5de63 code/bit/checkers/json.hpp +6c1ef2b24e57781d6951c172a1024fc4300e6fd392c9d6672079a7806ab663b3 code/bit/checkers/legality_h.cpp +64255088821f601ede2c3006f08cb97c39a4fa10dbbeb93a8a71fcfa0e1d8d77 code/bit/checkers/tile_k.py +8a5999601f917dbb492bb9ae9a344611f18cc7cedc53dc3c76496a369e530eb3 code/bit/export_records.py +11bf9620ca9db16d52d9fe806b814fc9ec9a89c4d7645354d1861d96f6e805ad code/bit/independent/checkword.py +0ff65aace5da4b57d96235bf830f8f11969322e75134d498aeb70e9753ec6b0d code/bit/independent/mutate.py +b0e75d6550412a7be4017695e6b237392b611bb852ad8ff309d6682c9f166a4e code/bit/mutate_records.py +60fea6a9d6617a3f87376d3fda040642e9cb70e7c179015e03ede8d289f30357 code/bit/producer/compile.py +0e23d4282ceb75768e82631da016aaff9818aec53c7d75a6b2a28ee1b1160dc3 code/bit/producer/compile2.py +4f8a6843e83bc4f7055d7337f33dbe12ce499051f46bee1b81bbf6b34c652574 code/bit/producer/e8lib.py +ba71f77dd3e3c1c54f361c066cebe9faadbc78db46376046e7af625bf1de8c24 code/bit/producer/frames.py +0daf87599e9e48646b985ad87351c56c1b73cfc99cdf9eca081483846ddbfa90 code/bit/producer/fullword.py +359040fb432fd392472af6b8f5dca0234dd6c2be744a791df27ba62bc5da5175 code/bit/producer/ham1.py +fdf0af785ce697bd7f80b4e75f7163735f3b599d9dc42f652f0ffdbdf18ea8bf code/bit/producer/ham2.py +1256c54debe0a551da8e24896ab73ef0bd4a5233ff8e6fedf21a9e6301d6e6f3 code/bit/producer/params-r865.json +46c858e60ba0a117bf8227b864abf55e85ebee2d56a0dce64472b706499ac405 code/bit/producer/price.py +67f714e10a846e9cc62996342f825cd715055031e0b12591abdafd225717e195 code/bit/receipts_k.py +6c288f6f234b528c1a7c0a4adfb724e91e0fe6b18c8dffad96af3f973de1829a code/bit/regression/stage_cohort.py +5fe7174cd3a6580a74e4c1bf8fa7b426e8673f1c285603bf3076d4e758d70731 code/complex/code/bridged.py +48ac1d66a406ed72dd9192a19118776ba253f5c90e96185f5c1b98bb670a6361 code/nine/audit_g.py +97a5f7e9bf2202d170da17d5d17d876903641d7d24433115c27ea95b9fe65ccd code/nine/certify_g.py +b6722d990fba39ef41b3d658326bdde97c25b749a454bda2509fdffeabd31a86 code/nine/cited.py +27dd61574f1f6921238ff9f57c6fd536e6f0a0983138bc5c99aeb141d3ccc195 code/nine/compose433.py +36eeda3184bd009e89462b65c8725d10860c444f8da8f1f87e5f6e50120011ca code/nine/geometry.py +ff8d6be2432b79584dc2f2d2bdcd3cefede0d0730d1eecb0a6859dd527f5fce4 code/nine/global_word_g.py +bf97418a9aec7c3f55d04d4754e626f17f44aa2059ffd8acd7b315dcf9e89110 code/nine/regress386.py +aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098 code/pricing/base_two_moment.py +81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482 code/pricing/moment.py +c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c code/pricing/outer.py +98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab code/pricing/prime_witnesses.py +e28fd87d0e34a6f6f6f1fddb6c4891deac220662c954de855d7aa5a7f9cceca4 code/provenance.py +89df84f78064de12cd11f0f5f63aa9cad2385f5d18d2e4ade7409a5ae0435721 code/reuse/controls.py +901c61f0a8082fc87012f91372aafbb2a1b464be685426e32e77cc9f0e393958 code/reuse/ecost.py +972740a54e487b12aebc09f2fab5f2878835727cb4ad82fb1aa26a0f2d34f517 code/reuse/regen.py +d8530464a6e00e0a509cf8b392cae70579c8d0f636a0dc86677f5dee0863d34d code/reuse/retime.py +b802483c024d23c92df30f1a2d93838280e39dfa0bd7129b879d6cc0b84c80a4 code/reuse/reuse.py +ac49a9a7da44a1e8fbf468c6d8901b5712705d3caa9dd3e0cb89f056f0e67b2a code/tail/apply376.py +6811203fb7df1ac8a9eee3fbeca722de98dbc99077921fe77e0d452c760f0ffc code/tail/bootstrap.py +1cb286196c1530d06f50f0997febc5993b388f33464e295611b920ba30a24eeb code/tail/e8core.py +aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098 code/tail/engines/base_two_moment.py +81cbc864e106418fc7854322746f72180cb8110ff39f74450a3b8d55a82c1482 code/tail/engines/moment.py +c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c code/tail/engines/outer.py +f8daa4982d865748fa9a3095b2cf4290f34e2c085d6d35673fd7171cab95623c data/bit/bitE8-r740.json.gz +1fb726ea3818fe0837cceb0dd22a71a0814f064e5e781628104610d6468e0e55 data/bit/bitE8-r865.json.gz +e7bb324150a5342076c9a268f69b83c65f817a7cfc1d14fda9558a9f7e486f0b data/bit/reuse-ledger.json +161663bf22c8e6a62e2dce194b326016c11e551f31691140ef34355e9b2e4e92 data/complex-b-433.json +1bdd6a649615ddb6bf7cdf24abd7bb1bbd6cc9284e2aa44f796786310d3e1a3b data/complex-b-b4.json +2815ca568c88edde758c31e756d0d07aa08233243f365bc111383d7f0c1c757a data/complex-b-nine.json +c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 data/controls/LICENSE-pr426 +c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4 data/controls/pr376/LICENSE-pr376 +a83d4880579fb1f8cffb701d1d685c157b7fa14ef9d6642e42ff1e4f5a1b8c5c data/controls/pr376/frame-selection.json +0b300bab47cf0d69cbc7965bf01c2a27c96b97677ee651334470d8c968b603f1 data/controls/pr376/reuse-selection.json +59625785de14c3df03abe009cdc67c7918b8fcfa8dc5f468c3d363af0494cbb7 data/controls/pr386/AUDIT.json +6043a7486790ac8ca04dc67ddf5b57076e7c880b66eb456127c6cd933c77764a data/controls/pr386/COMBINED.json +55af2a11552c04f5a87268bc2d1798246297874e9e87b50e49773e91cc495c2d data/controls/pr386/GLOBAL.json +acc2b138ce16be1ff12570d3ec1634fe28cccaf259de797be0f62628fb37cccb data/controls/pr417-bitE8-nine-kernel.json.gz +46ea33ad1979cd14a2b686e8742792739312a07ab72945517c3809b647b31c42 data/controls/pr425/FINAL.json +bd3b84244528767b85d8d7fe423b155630b5c659e21e51563674b1dcb6305ad7 data/controls/pr426-bit-candidate.json.gz +2b77c882ac524adbbacc9775ee172c854ecd4027e36db59ed15a7d1b6b9e1ce5 data/controls/pr431/VALIDATION-LOCAL.json +f71580f22193726fb582eae604807ff70a7302265e001d9484a718e63bbe14c4 data/controls/pr433/CERTIFICATE.json +871fc75ce6fea2638f68553bcfe771d09297e987d59c123338227e29415851d1 data/params/params-r740.json +d840952ed60b4b460da83b04c4c8be3622b9bef04b62961c0d496c445f8b84d1 discovery/README.md +57de04a8ea7e2df8b783e02c454bb102edab48206db0a41a1f28d50e7f164441 discovery/search_params.py +420094be2af295eed03a983dd66debbbe9cfb78d8252859f4498a615a0074b99 portable-include/bits/stdc++.h +b9f87c1ec529679c19b8421a7a69b377b54b89949cfc5e1b1ed8c134bfab8917 requirements.txt +19bf483b109163b0ccc941f459e70c2e37d20c9c04e69e7c8eb98f329577b26c verify.sh diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/NOTICE.md b/research/e8-rank138-idle-hosting/upstream443/parent436/NOTICE.md new file mode 100644 index 0000000000..2c01026b8b --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/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/e8-rank138-idle-hosting/upstream443/parent436/README.md b/research/e8-rank138-idle-hosting/upstream443/parent436/README.md new file mode 100644 index 0000000000..5ddb576f02 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/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/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr370.json b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr370.json new file mode 100644 index 0000000000..db86b22e15 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr370.json @@ -0,0 +1,105 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/370", + "head_repository": "utcorvusvolat-dotcom/e8-bit-kappa-8.7548e-4", + "commit": "b7fe9cdf2da009c947ff6b334c562bc190b30373", + "note": "PR #370 (Dylan Crow / utcorvusvolat-dotcom): E8 bit word, producer, independent checker, generalised official checkers, PR #315 engines as vendored there. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "LICENSE": { + "source_path": "research/e8-bit/LICENSE", + "blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64" + }, + "code/bit/producer/compile.py": { + "source_path": "research/e8-bit/code/bit/producer/compile.py", + "blob": "86b12507ef86308336833a208a989d56072096d1" + }, + "code/bit/producer/compile2.py": { + "source_path": "research/e8-bit/code/bit/producer/compile2.py", + "blob": "a7bdfdfbe417c793b2a8c515f5432bdd10472259" + }, + "code/bit/producer/e8lib.py": { + "source_path": "research/e8-bit/code/bit/producer/e8lib.py", + "blob": "8464b956f6a5aa5061695990a14b7a385d370c2e" + }, + "code/bit/producer/frames.py": { + "source_path": "research/e8-bit/code/bit/producer/frames.py", + "blob": "b28c3b2413b9767e7ffe0a8b2db93836f3455494" + }, + "code/bit/producer/fullword.py": { + "source_path": "research/e8-bit/code/bit/producer/fullword.py", + "blob": "104f01b7803481b623809bc8a57682d28f09b5c3" + }, + "code/bit/producer/ham1.py": { + "source_path": "research/e8-bit/code/bit/producer/ham1.py", + "blob": "8086649a5f71c16698db7059bbada7187d781b56" + }, + "code/bit/producer/ham2.py": { + "source_path": "research/e8-bit/code/bit/producer/ham2.py", + "blob": "842f76b245a1bfb4150c53a853f6f472511f5a2f" + }, + "code/bit/producer/price.py": { + "source_path": "research/e8-bit/code/bit/producer/price.py", + "blob": "9014d97d519eea1f8c96e4bfc75afa0febd5903f" + }, + "code/bit/producer/params-r865.json": { + "source_path": "research/e8-bit/code/bit/producer/params-r865.json", + "blob": "110b4d94d884f03d4d37be22672ab27d836f1275" + }, + "code/bit/independent/checkword.py": { + "source_path": "research/e8-bit/code/bit/independent/checkword.py", + "blob": "da4e0fe05067184d4dab1e130ae1384c1fa983f5" + }, + "code/bit/independent/mutate.py": { + "source_path": "research/e8-bit/code/bit/independent/mutate.py", + "blob": "eba592fd468e0d7e7e5100fe99da6eb548c5906b" + }, + "code/bit/checkers/legality_h.cpp": { + "source_path": "research/e8-bit/code/bit/checkers/legality_h.cpp", + "blob": "cb1233c7e96b1aa8bbf4d2e4165d75ab0dca64b9" + }, + "code/bit/checkers/columns_h.cpp": { + "source_path": "research/e8-bit/code/bit/checkers/columns_h.cpp", + "blob": "00c5a3a5d81d083582f60f33dd2e7bea5049c37f" + }, + "code/bit/checkers/json.hpp": { + "source_path": "research/e8-bit/code/bit/checkers/json.hpp", + "blob": "82d69f7c5d044c9887c96b90c97f5639083ecd14" + }, + "code/bit/checkers/gram_frames.py": { + "source_path": "research/e8-bit/code/bit/checkers/gram_frames.py", + "blob": "b740d47295c02692260d7cc01874a49fe48f78ab" + }, + "code/bit/export_records.py": { + "source_path": "research/e8-bit/code/bit/export_records.py", + "blob": "3632d370486a02f5456f7643ced03f8c925b2350" + }, + "code/bit/mutate_records.py": { + "source_path": "research/e8-bit/code/bit/mutate_records.py", + "blob": "6794516f665d36eac189894e350a5ad01113cb4c" + }, + "code/bit/regression/stage_cohort.py": { + "source_path": "research/e8-bit/code/bit/regression/stage_cohort.py", + "blob": "f6d7afe3e623208c4207b6a683a1e3e49249e31c" + }, + "code/pricing/moment.py": { + "source_path": "research/e8-bit/code/pricing/moment.py", + "blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd" + }, + "code/pricing/base_two_moment.py": { + "source_path": "research/e8-bit/code/pricing/base_two_moment.py", + "blob": "14a90fa0e788217856f070382c9e61bd7c603c61" + }, + "code/pricing/outer.py": { + "source_path": "research/e8-bit/code/pricing/outer.py", + "blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2" + }, + "code/pricing/prime_witnesses.py": { + "source_path": "research/e8-bit/code/pricing/prime_witnesses.py", + "blob": "7f16d930302ae879c562dd58e085d9747fcac077" + }, + "data/bit/bitE8-r865.json.gz": { + "source_path": "research/e8-bit/data/bit/bitE8-r865.json.gz", + "blob": "8bec1751f7e33c3a1e4673ef5dbc34d6f205321e" + } + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr376.json b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr376.json new file mode 100644 index 0000000000..818f17fb6a --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr376.json @@ -0,0 +1,21 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/376", + "head_repository": "applecrusher/integer-mult-bounds", + "commit": "92328da595bc688146c79ab8308f0d2012bb491e", + "note": "PR #376 (applecrusher): frame and helper-reuse witnesses of the R822 word (here as vendored by PR #417, byte-identical). Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/controls/pr376/frame-selection.json": { + "source_path": "research/e8-bit-helper-reuse/frame-selection.json", + "blob": "647b34368f3f0c7d228c70fa335af872e7946beb" + }, + "data/controls/pr376/reuse-selection.json": { + "source_path": "research/e8-bit-helper-reuse/reuse-selection.json", + "blob": "a6954dc65f28137ad16d015b42c40dbbde0bd66f" + }, + "data/controls/pr376/LICENSE-pr376": { + "source_path": "research/e8-bit-helper-reuse/LICENSE", + "blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64" + } + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr381.json b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr381.json new file mode 100644 index 0000000000..042a26c7c2 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr381.json @@ -0,0 +1,41 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/381", + "head_repository": "DaysSky/integer-mult-bounds", + "commit": "00765b291d0f924f337298eb1e2930cb0878b95e", + "note": "PR #381 (DaysSky): B_K checkers (formal columns, PR234 geometry, banks, price, finite bill) and PR #363's bridged.py. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "code/bit/checkers/columns_k.cpp": { + "source_path": "research/e8-nine-stage-kappa/code/bit/checkers/columns_k.cpp", + "blob": "42bb232fbec4de703e70cc13dc2f39a3b43a3a01" + }, + "code/bit/checkers/geometry_k.py": { + "source_path": "research/e8-nine-stage-kappa/code/bit/checkers/geometry_k.py", + "blob": "2a052980816d9b56b33c5e41132bb7f86286462b" + }, + "code/bit/checkers/tile_k.py": { + "source_path": "research/e8-nine-stage-kappa/code/bit/checkers/tile_k.py", + "blob": "a4635e6681c2f1521b44f24364cc457d304cb077" + }, + "code/bit/checkers/certify_bit_k.py": { + "source_path": "research/e8-nine-stage-kappa/code/bit/checkers/certify_bit_k.py", + "blob": "37ce2ee2b412b3b97a397159f48b912ef893b014" + }, + "code/bit/checkers/finite_k.py": { + "source_path": "research/e8-nine-stage-kappa/code/bit/checkers/finite_k.py", + "blob": "8781815ee6ee663edc0e0afdf1380186594ec913" + }, + "code/bit/checkers/cost.py": { + "source_path": "research/e8-nine-stage-kappa/code/bit/checkers/cost.py", + "blob": "677584c1c6b0e959c19f58521b68d4b3e847f97e" + }, + "code/bit/receipts_k.py": { + "source_path": "research/e8-nine-stage-kappa/code/bit/receipts_k.py", + "blob": "428261488b4af028fd04df4f84eead1dad79a389" + }, + "code/complex/code/bridged.py": { + "source_path": "research/e8-nine-stage-kappa/code/complex/code/bridged.py", + "blob": "626a28614b07066528fd5f189d87cffa5015ac60" + } + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr386.json b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr386.json new file mode 100644 index 0000000000..ac24e5d262 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr386.json @@ -0,0 +1,29 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/386", + "head_repository": "jacklightChen/integer-mult-bounds", + "commit": "dd11cf8069554f0333afde398f12a56c3a7c29dd", + "note": "PR #386 (Zhihao Chen / jacklightChen): compressed nine-stage bit geometry (unchanged), portable header, and the validation receipts used as regression references. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "code/nine/geometry.py": { + "source_path": "research/e8-bit-complex-nine/geometry.py", + "blob": "91594e0223e8fac49162b5aef834ffaa8e94a254" + }, + "portable-include/bits/stdc++.h": { + "source_path": "research/e8-bit-complex-nine/portable-include/bits/stdc++.h", + "blob": "fc5664e929d9a81d9b4926bee049a93330be86ec" + }, + "data/controls/pr386/GLOBAL.json": { + "source_path": "research/e8-bit-complex-nine-validation/GLOBAL.json", + "blob": "21bc6dcc7bbefedcd3064485d0e82c95e585044c" + }, + "data/controls/pr386/AUDIT.json": { + "source_path": "research/e8-bit-complex-nine-validation/AUDIT.json", + "blob": "698e827ae87ae9db47fd30cf69537176276cff4e" + }, + "data/controls/pr386/COMBINED.json": { + "source_path": "research/e8-bit-complex-nine-validation/COMBINED.json", + "blob": "8d6e3f22667fa0f6fa1a5495223e87f90a4cd103" + } + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr417.json b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr417.json new file mode 100644 index 0000000000..33f0ae053c --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr417.json @@ -0,0 +1,49 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/417", + "head_repository": "chafreaky/integer-mult-bounds", + "commit": "3f681fb571036ca4a267570318260b0d083f7b9d", + "note": "PR #417 (Chafik Boukhalfa / chafreaky): refined pricing tail (bootstrap.refine), its engine module and PR #315 engine copies, PR #376 rebuild (apply376.py), the vendored PR #376 witnesses, and the final kernel word used as a B_4 control. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "code/tail/e8core.py": { + "source_path": "research/e8-kernel-bit-nine/code/e8core.py", + "blob": "78983b368715e89fe8524a6dd2c13585d2b5394e" + }, + "code/tail/bootstrap.py": { + "source_path": "research/e8-kernel-bit-nine/code/bootstrap.py", + "blob": "1bc17e768259c342fb8b94b919bfeaea10304153" + }, + "code/tail/apply376.py": { + "source_path": "research/e8-kernel-bit-nine/code/apply376.py", + "blob": "c401a84d8f549e0752464ab8313ce648bb4d14fa" + }, + "code/tail/engines/moment.py": { + "source_path": "research/e8-kernel-bit-nine/code/engines/moment.py", + "blob": "7d697cb45203fe72d97037403d6da41f71f3b7fd" + }, + "code/tail/engines/base_two_moment.py": { + "source_path": "research/e8-kernel-bit-nine/code/engines/base_two_moment.py", + "blob": "14a90fa0e788217856f070382c9e61bd7c603c61" + }, + "code/tail/engines/outer.py": { + "source_path": "research/e8-kernel-bit-nine/code/engines/outer.py", + "blob": "43007488ad2c43187c77cc6798beff8b1cd76ad2" + }, + "data/controls/pr376/frame-selection.json": { + "source_path": "research/e8-kernel-bit-nine/data/pr376/frame-selection.json", + "blob": "647b34368f3f0c7d228c70fa335af872e7946beb" + }, + "data/controls/pr376/reuse-selection.json": { + "source_path": "research/e8-kernel-bit-nine/data/pr376/reuse-selection.json", + "blob": "a6954dc65f28137ad16d015b42c40dbbde0bd66f" + }, + "data/controls/pr376/LICENSE-pr376": { + "source_path": "research/e8-kernel-bit-nine/data/pr376/LICENSE-pr376", + "blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64" + }, + "data/controls/pr417-bitE8-nine-kernel.json.gz": { + "source_path": "research/e8-kernel-bit-nine/data/final/bitE8-nine-kernel.json.gz", + "blob": "572172b8148538d1937b9f7fa7f3939755008a8c" + } + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr425.json b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr425.json new file mode 100644 index 0000000000..8d9c976b02 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr425.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/425", + "head_repository": "jacklightChen/integer-mult-bounds", + "commit": "e11ccea1d092beb1b01b4ee4ce49da478234254c", + "note": "PR #425 (Zhihao Chen / jacklightChen): the fresh validation receipt that states the cited complex coarse saving b and kappa. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/controls/pr425/FINAL.json": { + "source_path": "research/hamming-mutable-basis-complex-validation/FINAL.json", + "blob": "1e9c8784c3cb719acb5274126141fe360af253fa" + } + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr426.json b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr426.json new file mode 100644 index 0000000000..7c72390e09 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr426.json @@ -0,0 +1,17 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/426", + "head_repository": "ai-nanachi/integer-mult-bounds", + "commit": "88d552526893cd15325948bb1487e9a4d4bf32f6", + "note": "PR #426 (ai-nanachi): R767 bit word (clean-reset reuse), used only as a priced comparison and B_3 control. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/controls/pr426-bit-candidate.json.gz": { + "source_path": "research/e8-clean-reuse-extension/data/bit-candidate.json.gz", + "blob": "807cea53ebe1322721463ee2319bcd52b9714f24" + }, + "data/controls/LICENSE-pr426": { + "source_path": "research/e8-clean-reuse-extension/LICENSE", + "blob": "261eeb9e9f8b2b4b0d119366dda99c6fd7d35c64" + } + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr431.json b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr431.json new file mode 100644 index 0000000000..00f1075773 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr431.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/431", + "head_repository": "rohanarun/integer-mult-bounds", + "commit": "db4f46579b95bec6e2a0c59e3e1ee2b6584dbab3", + "note": "PR #431 (Rohan Arun / rohanarun, draft): the local validation receipt that states the cited complex coarse saving b and kappa. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/controls/pr431/VALIDATION-LOCAL.json": { + "source_path": "research/hamming-frame-retiming/VALIDATION-LOCAL.json", + "blob": "0f0a80418d7f3e521c980ef0354fc3945eae1795" + } + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr433.json b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr433.json new file mode 100644 index 0000000000..910a7c3490 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/SOURCE-pr433.json @@ -0,0 +1,13 @@ +{ + "schema": "source-pins/1", + "source": "https://github.com/CrocSwap/integer-mult-bounds/pull/433", + "head_repository": "icekylinx/integer-mult-bounds", + "commit": "6d9244518175caf9e0089f92486959bc2c317273", + "note": "PR #433 (icekylinx): the certificate that states the cited complex lower bound, the R758 bit lower bound and kappa of the split-centre composition. Every file listed has, in this package, the git blob id it has at the commit above (git ls-tree -r -- ).", + "identical": { + "data/controls/pr433/CERTIFICATE.json": { + "source_path": "research/split-centres-global/CERTIFICATE.json", + "blob": "7e807079c1ec4907306035c84be1ba2fb1d69d79" + } + } +} diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/code/b4/kappa_b4.py b/research/e8-rank138-idle-hosting/upstream443/parent436/code/b4/kappa_b4.py new file mode 100644 index 0000000000..402a510e15 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/code/b4/kappa_b4.py @@ -0,0 +1,31 @@ +"""kappa with cited complex savings when the bit side is this word in B_4 (or B_3). + +The bit coarse saving c is read from certify_bit_k.py's receipt (PR #381's checker, unchanged). For every cited +complex supplier b, kappa is computed by PR #417's bootstrap.refine (chafreaky's reimplementation of rohanarun's PR #392 +refined pricing tail: six fixed bootstrap levels, PR #315's outer assembly, 47 strict constraints, next grid point and +invalid parameters rejected) and must equal the value cited with b. Since c > b for every cited supplier, the result is +complex-bound and does not depend on c; it is recomputed with the best previously published bit c as a control. +usage: kappa_b4.py KAPPA.json (certify_bit_k receipt) CONTROL_C COMPLEX_B.json OUT.json +Prepared by eumemic with Anthropic Claude assistance; Apache-2.0.""" +import json +import os +import sys +from fractions import Fraction as Q + +sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "tail")) +from bootstrap import refine # noqa: E402 (PR #417, unchanged) + +rec = json.load(open(sys.argv[1])) +c = Q(rec["bit_coarse"]) +c0 = Q(sys.argv[2]) +out = dict(K=rec["K"], m=rec["m"], bit_coarse=str(c), control_bit_coarse=str(c0), kappa={}) +for s in json.load(open(sys.argv[3]))["suppliers"]: + b = Q(s["b"]) + k, rej = refine(b, c) + k0, _ = refine(b, c0) + assert c > b and c0 > b and k == k0 == Q(s["kappa"]), (s["name"], str(k), s["kappa"]) + out["kappa"][s["name"]] = dict(b=str(b), kappa=str(k), kappa_float=float(k), binding="complex", rejected=rej, + bit_headroom_percent=100 * float(c / b - 1), source=s["source"]) + print(" with %s b = %.12e: kappa = %s = %.15e (complex-bound, equal to the cited value and unchanged with the" + " control bit c; bit headroom c/b - 1 = %.3f%%)" % (s["name"], float(b), k, float(k), 100 * float(c / b - 1))) +json.dump(out, open(sys.argv[4], "w"), indent=1) diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/certify_bit_k.py b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/certify_bit_k.py new file mode 100644 index 0000000000..37ce2ee2b4 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/certify_bit_k.py @@ -0,0 +1,59 @@ +"""Generalized (Dylan Crow, with Anthropic Claude assistance): h, the normalization T and the output path are arguments; +h = 20, T = 12 is the original. Bridged word B_K (DaysSky, assisted with Claude): the one-level histogram is +(2K+1) x the local histogram + 2v x the idle blocks of PR #363's bridged.check(K, h) (split below m/2 for K > 2), +W = 2Kv + resid/h, m = (2K+1) h; K = 2 is certify_bit_g.py. With a seventh argument 'unsplit' the idle climbs are +not split and the least halving degree t (m^t > 2 max child^t) replaces the half-shrink guard. +usage: certify_bit_k.py WORDDIR B K H T OUT.json [unsplit] +Exact bit coarse saving + outer assembly for a PR249-format local word, using PR #315's engines +(moment.py, base_two_moment.py, outer.py) and its math_check.run logic, with a given complex coarse b.""" +import sys, json, importlib.util, os +from fractions import Fraction as Q +from collections import Counter +sys.path.insert(0,os.path.dirname(os.path.abspath(__file__))) +import cost as C +sys.path.insert(0,os.path.join(os.path.dirname(os.path.abspath(__file__)),'..','..','complex','code')) +import bridged +P=os.environ.get('PR315',os.path.join(os.path.dirname(os.path.abspath(__file__)),'..','..','pricing'))+'/' +def load(n): + s=importlib.util.spec_from_file_location(n,P+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') +d=sys.argv[1]; b=Q(sys.argv[2]); KP=int(sys.argv[3]); HH=int(sys.argv[4]); T=int(sys.argv[5]); OUT=sys.argv[6]; S=2*KP+1 +s,fr,dim,rec=C.load_snapshot(d) +H,resid,v=C.local_profile(rec,s,dim,h=HH); m=S*HH +UNSPLIT=len(sys.argv)>7 and sys.argv[7]=='unsplit' +lay=bridged.check(KP,HH,split=(m-1)//2 if (KP>2 and not UNSPLIT) else None) +prof=Counter({j:S*c for j,c in H.items()}) +for r in lay['blocks_per_role_pair']: prof[r]+=2*v +norm={int(k):int(c)*T for k,c in prof.items() if c}; Wn=Q(2*KP*v*HH+resid,HH)*T; assert Wn.denominator==1; Wn=int(Wn) +t_half=1 +while m**t_half<=2*max(norm)**t_half: t_half+=1 +assert UNSPLIT or t_half==1, 'half-shrink guard' +mass=sum(k*c for k,c in norm.items()); print('normalized W',Wn,'calls',sum(norm.values()),'mass',mass,'deficit',m*Wn-mass,'maxchild',max(norm)) +root=moment.certify(dict(norm),m,Wn,True); c=Q(int(Q(root['lower'])*10**18),10**18) +bm=moment.moment(norm,m,Wn,c,True); nextbm=moment.moment(norm,m,Wn,c+Q(1,10**18),True); assert bm[1]<1cap-grid, 'complex-bound saving not tight against the cap' +chain=[Q(384599,10**10)] +for _ in range(3): + a=(1-sv)*sv+sv*chain[-1]; assert chain[-1]0 +try: + outer.assembly(bit,b,bridge,k+Q(1,10**18),eta=eta,beta=beta); raise SystemExit('ADJACENT ADMITTED') +except AssertionError: pass +if binding=='complex': + try: outer.assembly(cap,b,bridge,k,eta=eta,beta=beta) + except AssertionError as e: assert 'leaf_saving_above_bit' in str(e); print('complex leaf cap itself rejected (leaf_saving_above_bit), as in PR #315 math_check') + else: raise SystemExit('complex leaf cap admitted') +print('complex b =',b,float(b),'| binding:',binding) +print('KAPPA =',k,'=',format(float(k),'.12e'),'| 47 strict constraints positive, adjacent grid point rejected') +json.dump(dict(word=d,K=KP,stages=S,halving_degree=t_half,idle_blocks_per_role_pair=lay['blocks_per_role_pair'],h=HH,T=T,maxchild=max(norm),bit_moment_interval=[str(x) for x in bm],normalized_histogram=norm,W=Wn,m=m,bit_coarse=str(c),complex_coarse=str(b),binding=binding,kappa=str(k),kappa_float=float(k)),open(OUT,'w'),indent=1) diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/columns_h.cpp b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/columns_h.cpp new file mode 100644 index 0000000000..00c5a3a5d8 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/columns_h.cpp @@ -0,0 +1,48 @@ +// Generalization (Dylan Crow, with Anthropic Claude assistance): the copied-centre count is the macro NCOPY, defaulting to +// HDIM, so the unmodified PR #346/#352 build (no -DNCOPY) is exactly the original checker. The E8 bit word has 9 +// retained totals at h = 8 (-DNCOPY=9). +#ifndef NCOPY +#define NCOPY HDIM +#endif +#include "json.hpp" +#include +#include +using boost::multiprecision::cpp_int; +#include +#include +#include +#include +#include +#include +#include +using J=nlohmann::json; +struct E{int kind,dst,src,c;}; +void need(bool x,const char*s){if(!x)throw std::runtime_error(s);} +int main(int argc,char**argv){try{ +need(argc==3,"usage RAW6_RECORDS OUTPUT");std::string pre=argv[1];int v=VPORTS,r=RHELP,loc=2*v+r,global=4*v+r,temp=global; +struct Raw{int op,a,b,c,f,z;};std::ifstream f(pre,std::ios::binary|std::ios::ate);size_t sz=f.tellg();need(sz%sizeof(Raw)==0,"stream alignment");std::vectorp(sz/sizeof(Raw));f.seekg(0);f.read((char*)p.data(),sz);std::vectore;std::mapH;for(auto q:p){if(q.op==0){if(q.f)H[q.f]++;}else if(q.op==1)e.push_back({0,q.a,q.b,q.c});else if(q.op==2){H[q.z]++;e.push_back({1,loc,q.a,0});}else if(q.op==3)e.push_back({2,loc,q.a,0});else need(false,"opcode");} +J prefix=J::array();cpp_int largestF=0,largestB=0;for(int rev=0;rev<2;rev++){std::vectornorms(loc+1,1);cpp_int maxrow=1;bool isopen=false;for(size_t z=0;zmaxrow)maxrow=norms[q.dst];}else if(k==1){need(!isopen,"boundcopy");norms[loc]=norms[q.src];isopen=true;}else {need(isopen,"bounderase");norms[loc]=0;isopen=false;}}need(!isopen,"prefix copy closure");if(rev)largestB=maxrow;else largestF=maxrow;prefix.push_back({{"reverse",bool(rev)},{"cancellation_free_signed_row_l1_upper",maxrow.convert_to()},{"bits",boost::multiprecision::msb(maxrow)+1}});} +cpp_int payload=64*largestF*largestF*largestF*largestB*largestB;need(payload<(cpp_int(1)<<104),"payloadfiniteprefix2^104"); +long long copies=0,adds=0,odd=0;bool open=false;int center=-1;long long reverseCopies=0; +for(auto q:e){need(q.kind>=0&&q.kind<=2,"kind");need(q.dst>=0&&q.dst<=loc,"local dst");if(q.kind==0){need(q.src>=0&&q.src<=loc&&q.dst!=q.src,"source distinct");need(q.dst!=loc,"copy immutable");need(q.src!=loc||open,"temp not open");if(open)need(q.dst!=center,"source changes inside copied-center block");adds++;odd+=q.c&1;} +else if(q.kind==1){need(!open&&q.dst==loc&&q.src>=0&&q.srca((size_t)(global+1)*words);auto row=[&](int i){return a.data()+(size_t)i*words;};for(int i=0;i=v&&i<2*v&&w==(size_t)(i-v)/64)want^=1ull<<((i-v)%64);need(x[w]==want,"local defining-decoder full formal column");}}} +if(stage==1||stage==2||stage==4){int b=stage==1?0:stage==2?1:2;for(auto q:bridges[b])for(int i=0;i(std::chrono::steady_clock::now()-t0).count()<<"s\n";} +for(int bank=0;bank<4;bank+=2)for(int i=0;i()},{"payload_prefix_bits",boost::multiprecision::msb(payload)+1},{"new_Q_categories",{28,29}},{"local_raw_H",H},{"negative_controls",controls},{"seconds",std::chrono::duration(std::chrono::steady_clock::now()-t0).count()}};std::ofstream(argv[2])< +#include +using boost::multiprecision::cpp_int; +#include +#include +#include +#include +#include +#include +#include +using J=nlohmann::json; +struct E{int kind,dst,src,c;}; +void need(bool x,const char*s){if(!x)throw std::runtime_error(s);} +int main(int argc,char**argv){try{ +need(argc==3,"usage RAW6_RECORDS OUTPUT");std::string pre=argv[1];int v=VPORTS,r=RHELP,loc=2*v+r,global=2*KPAIRS*v+r,temp=global;const int S=2*KPAIRS+1; +struct Raw{int op,a,b,c,f,z;};std::ifstream f(pre,std::ios::binary|std::ios::ate);size_t sz=f.tellg();need(sz%sizeof(Raw)==0,"stream alignment");std::vectorp(sz/sizeof(Raw));f.seekg(0);f.read((char*)p.data(),sz);std::vectore;std::mapH;for(auto q:p){if(q.op==0){if(q.f)H[q.f]++;}else if(q.op==1)e.push_back({0,q.a,q.b,q.c});else if(q.op==2){H[q.z]++;e.push_back({1,loc,q.a,0});}else if(q.op==3)e.push_back({2,loc,q.a,0});else need(false,"opcode");} +J prefix=J::array();cpp_int largestF=0,largestB=0;for(int rev=0;rev<2;rev++){std::vectornorms(loc+1,1);cpp_int maxrow=1;bool isopen=false;for(size_t z=0;zmaxrow)maxrow=norms[q.dst];}else if(k==1){need(!isopen,"boundcopy");norms[loc]=norms[q.src];isopen=true;}else {need(isopen,"bounderase");norms[loc]=0;isopen=false;}}need(!isopen,"prefix copy closure");if(rev)largestB=maxrow;else largestF=maxrow;prefix.push_back({{"reverse",bool(rev)},{"cancellation_free_signed_row_l1_upper",maxrow.convert_to()},{"bits",boost::multiprecision::msb(maxrow)+1}});} +cpp_int payload=64*largestF*largestF*largestF*largestB*largestB;need(payload<(cpp_int(1)<<104),"payloadfiniteprefix2^104"); +long long copies=0,adds=0,odd=0;bool open=false;int center=-1;long long reverseCopies=0; +for(auto q:e){need(q.kind>=0&&q.kind<=2,"kind");need(q.dst>=0&&q.dst<=loc,"local dst");if(q.kind==0){need(q.src>=0&&q.src<=loc&&q.dst!=q.src,"source distinct");need(q.dst!=loc,"copy immutable");need(q.src!=loc||open,"temp not open");if(open)need(q.dst!=center,"source changes inside copied-center block");adds++;odd+=q.c&1;} +else if(q.kind==1){need(!open&&q.dst==loc&&q.src>=0&&q.src>active;std::vectorbackward;std::vector>>after(S); +auto X=[](int p){return 2*(p-1);};auto Y=[](int p){return 2*(p-1)+1;}; +for(int t=0;t=3&&t%2==1);backward.push_back(b);active.push_back(b?std::array{Y(p),X(p)}:std::array{X(p),Y(p)});} +for(int q=2;q<=KPAIRS;q++){after[2*q-3].push_back({X(q-1),X(q),1});after[2*q-3].push_back({Y(q),Y(q-1),-1}); + after[2*q-2].push_back({Y(q),Y(q-1),1});after[2*q-2].push_back({X(q-1),X(q),-1});} +for(int p=KPAIRS;p>=2;p--){after[S-1].push_back({Y(p-1),Y(p),-1});after[S-1].push_back({X(p),X(p-1),1});} +int nbridges=0;for(auto&a:after)nbridges+=a.size();need(nbridges==6*(KPAIRS-1),"twin bridge count"); +size_t words=(global+63)/64;std::vectora((size_t)(global+1)*words);auto row=[&](int i){return a.data()+(size_t)i*words;};for(int i=0;i=v&&i<2*v&&w==(size_t)(i-v)/64)want^=1ull<<((i-v)%64);need(x[w]==want,"local defining-decoder full formal column");}}} +for(auto q:after[stage])for(int i=0;i(std::chrono::steady_clock::now()-t0).count()<<"s\n";} +for(int bank=0;bank<2*KPAIRS;bank+=2)for(int i=0;ib(2*KPAIRS);for(int z=0;z<2*KPAIRS;z++)b[z]=1u<()},{"payload_prefix_bits",boost::multiprecision::msb(payload)+1},{"new_Q_categories",{28,29}},{"local_raw_H",H},{"negative_controls",controls},{"seconds",std::chrono::duration(std::chrono::steady_clock::now()-t0).count()}};std::ofstream(argv[2])< 0: H[int(r[4])] += 1 + copies = rec[rec[:, 0] == 2] + for r in copies: + if r[5] > 0: H[int(r[5])] += 1 + init = s['initial'] + resid = sum(h - dim[init[str(r)]] for r in range(2 * v, n)) + return H, resid, v + +def five_stage(H, resid, v, h=24, stages=5): + m = stages * h + prof = collections.Counter() + for j, c in H.items(): prof[j] += stages * c + for j in (2*h - 2, h - 1, 2*h + 2, 4): prof[j] += 2 * v + W = mpf(4 * v) + mpf(resid) / h + mass = sum(j * c for j, c in prof.items()) + return prof, W, m, W * m - mass + +def solve_moment(prof, W, m, bad=mpf('1e-16')): + calls = sum(prof.values()) + items = [(mpf(j) / m, c) for j, c in prof.items()] + def mu(sv): + t = 1 - sv + return (sum(c * x ** t for x, c in items) + bad * 32 * m * m * calls * (mpf(1) / m) ** t) / W - 1 + return findroot(mu, mpf('0.0007')) + +def evaluate(rec, s, dim, h=24): + H, resid, v = local_profile(rec, s, dim, h) + prof, W, m, deficit = five_stage(H, resid, v, h) + sv = solve_moment(prof, W, m) + return dict(saving=sv, kappa_approx=sv / (1 + sv), W=W, deficit=deficit, m=m, + calls=sum(prof.values()), local=dict(sorted(H.items())), resid=resid) + +if __name__ == '__main__': + import sys + s, fr, dim, rec = load_snapshot(sys.argv[1]) + r = evaluate(rec, s, dim) + print({k: (float(v) if hasattr(v, 'real') and not isinstance(v, dict) else v) for k, v in r.items() if k != 'local'}) diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/finite_k.py b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/finite_k.py new file mode 100644 index 0000000000..8781815ee6 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/finite_k.py @@ -0,0 +1,154 @@ +"""Finite bill for the banked five-stage bit word, generalized from the source527/p10 finite_check.run (Dylan Crow, with +Anthropic Claude assistance). The arithmetic is the original line by line; the changes are explicit parameters: + * h, m = 5h, v, R, replicas T, literal stock, literal paid histogram, weighted/unit additions and the forward and + inverse cancellation-free row bounds are inputs (from this package's receipts); + * NCOPY, the copied-centre temporaries per invocation and 5*NCOPY copy/erase episodes per replica (the original + writes h for both, since the paired cube has h centres; the E8 word has 9 retained totals at h = 8); + * the 2h-dimensional rational route template: [[p*, k*], [k*, p*]] for the reference port line q* of the label + family under its form (original: a triple line under G = I - J/9, denominators 1,2,3,6; E8: a root line under + /2), recomputed and factored into elementary operations, exact inverse replay, omitted factor rejected; + * K, the conservative extra bank-selector calls, by the original formula 2*5*T*((live-1) + R*m*factors) with + factors = maxops + (m-1) + m (maxops of the actual charts; an ungauged word has only the identity chart, 0 ops). +Bridged word B_K (DaysSky, assisted with Claude): x['Kpairs'] (default 2) gives S = 2K + 1 invocations, m = S h, +S invocations' additions plus 6(K-1)v twin-bridge additions, route families 2S(2v + R) + 2Kv (each invocation routes +its 2v data and R helper roles in and out; the terminal exchange moves the 2Kv data roles), S*NCOPY*T copy/erase +episodes and the selector bill 2*S*T*(...) (receipts_k.py). K = 2 gives exactly finite_g.py's 5, 6v, 20v + 10R + 4v +and 5*NCOPY*T; the p = 10 regression path is five-stage and unchanged. +usage: python3 finite_k.py e8 RECEIPTS.json OUT.json | python3 finite_k.py regression P10_RECEIPT_DIR""" +from fractions import Fraction as Q +from collections import Counter +from hashlib import sha256 +import json, sys, os, importlib.util, gzip +HERE=os.path.dirname(os.path.abspath(__file__)) +def ceilq(x): return -((-x.numerator)//x.denominator) +def cutoff_log2(delta,C): + assert 0=1 + return max(1,ceilq(36/delta**2),ceilq(2*(4+(C-1).bit_length())/delta)) +def mm(A,B): return [[sum(A[i][k]*B[k][j] for k in range(len(B))) for j in range(len(B[0]))] for i in range(len(A))] +def route_template(h,q,form,g=None,ginv=None): + """[[g p* g^-1, g k*], [k* g^-1, p*]] with p* = q q^T G/; G given by form(x,y) on coordinate vectors + (bilinear); g = I (the original's reference port) unless a port isometry is given.""" + I=lambda n:[[Q(i==j)for j in range(n)]for i in range(n)] + Gq=[sum(form(i,j)*q[j] for j in range(h)) for i in range(h)]; nq=sum(q[i]*Gq[i] for i in range(h)) + P=[[Q(q[i])*Gq[j]/nq for j in range(h)]for i in range(h)] + K=[[Q(i==j)-P[i][j]for j in range(h)]for i in range(h)] + if g is None: TL,TR,BL=P,K,K + else: TL,TR,BL=mm(mm(g,P),ginv),mm(g,K),mm(K,ginv) + rho=[TL[i]+TR[i]for i in range(h)]+[BL[i]+P[i]for i in range(h)] + a=[r[:]for r in rho];factors=[] + for j in range(2*h): + p=next(i for i in range(j,2*h)if a[i][j]) + if p!=j:a[j],a[p]=a[p],a[j];factors.append(('swap',j,p,None)) + if a[j][j]!=1: + c=1/a[j][j];a[j]=[c*x for x in a[j]];factors.append(('scale',j,None,c)) + for i in range(2*h): + if i!=j and a[i][j]: + c=-a[i][j];a[i]=[x+c*y for x,y in zip(a[i],a[j])];factors.append(('add',i,j,c)) + assert a==I(2*h) + def replay(omit=None): + a=I(2*h) + for z in reversed(range(len(factors))): + if z==omit:continue + kind,i,j,c=factors[z] + if kind=='swap':a[i],a[j]=a[j],a[i] + elif kind=='scale':a[i]=[x/c for x in a[i]] + else:a[i]=[x-c*y for x,y in zip(a[i],a[j])] + return a + assert replay()==rho + omit=next((i for i,f in enumerate(factors)if f[0]=='add'),0) # original: the first addition; a route without additions: the first factor + assert factors and replay(omit)!=rho + counts=dict(Counter(f[0]for f in factors));denoms=sorted({c.denominator for kind,i,j,c in factors if c is not None}) + serialization=[[kind,i,j,None if c is None else str(c)]for kind,i,j,c in factors] + return dict(factors=len(factors),factor_counts=counts,denominators=denoms, + factor_program_sha256=sha256(json.dumps(serialization,separators=(',',':')).encode()).hexdigest(), + exact_inverse_reconstruction=True,missing_addition_rejected=True) +def bill(x): + """x: dict with h,m,v,R,T,stock,literal(hist),ncopy,weighted,unit,fwd_row,inv_row,K,coarse,moment_module,route.""" + h,m,v,R,T,stock,ncopy=x['h'],x['m'],x['v'],x['R'],x['T'],x['stock'],x['ncopy'] + literal=Counter(x['literal']);E=sum(literal.values());mass=sum(r*c for r,c in literal.items()) + KP=x.get('Kpairs',2);S=2*KP+1 + assert m==S*h and 00 and delta1>0 + chain=[Q(384599,10**10)];gaps=[] + for j in range(3): + old=chain[-1];a=(1-c)*c+c*old;ds=dict(atom=c-a,borrowing=1-a-c,remainder=1-a-c*(1-old),stock=1-c);assert old0 + delta=min(ds.values());L=cutoff_log2(delta,coefficient);assert Q(L)*delta**2>=36 and Q(L)*delta>=2*(4+(coefficient-1).bit_length()) + gaps.append(dict(stage=j+1,minimum_gap=str(delta),cutoff_log2_at_charged_coefficient=str(L)));chain.append(a) + controls=[] + for name,test in [('zero cutoff gap',lambda:cutoff_log2(Q(0),coefficient)),('negative constant',lambda:cutoff_log2(Q(1,2),0))]: + try:test() + except AssertionError:controls.append(name) + else:raise AssertionError('bad finite cutoff accepted') + return dict(coefficient=coefficient,coefficient_bits=coefficient.bit_length(),low_matrix_power=d,strict_upper='q^'+str(d+1), + positive_rank_children=E,rank_mass=mass,weighted_additions=weighted,unit_expanded_additions=unit,route_families=J, + copy_erase_episodes=S*ncopy*T,payload_prefix_upper=payload,payload_prefix_bits=payload.bit_length(), + delta_tau_lower=str(delta_tau),delta_linear=str(delta1),bootstrap_chain=list(map(str,chain)),gaps=gaps, + row_reserve=dict(internal_coefficient=t*(d+1),external_complex_coefficient=20161,**({'halving_degree':t} if t>1 else {})),route=x['route'],rejected_controls=controls) +def load_moment(): + s=importlib.util.spec_from_file_location('m',os.path.join(HERE,'..','..','pricing','moment.py'));m=importlib.util.module_from_spec(s);s.loader.exec_module(m);return m +def hist(x): return Counter({int(k):v for k,v in x.items() if v}) +if __name__=='__main__': + mod=load_moment() + if sys.argv[1]=='regression': + d=sys.argv[2]; raw=json.load(open(d+'/raw.json')); sc=json.load(open(d+'/scalar.json')); bk=json.load(open(d+'/banks.json'))['banks'] + ma=json.load(open(d+'/math.json'))['mathematics']; fin=json.load(open(d+'/finite.json')); gl=json.load(open(d+'/global_result.json')) + h=raw['h'];m=5*h;H=hist(raw['five_stage_profile']['histogram']) + for a,cnt in hist(raw.get('completion_rank_histogram',raw['auxiliary_entrance_rank_histogram'])).items(): + H[5*a]-=cnt + if not H[5*a]: del H[5*a] + T=bk['physical_replicas']; literal=Counter({r:T*c for r,c in H.items()}) + q=[int(i<3) for i in range(h)]; form=lambda i,j: Q(int(i==j))-Q(1,9) + x=dict(h=h,m=m,v=raw['v'],R=raw['physical_R'],T=T,stock=bk['literal_stock'],literal=literal,ncopy=h,deficit=4*raw['v']-5*h*(h-2), + weighted=sc['forward']['weighted_additions'],unit=sc['forward']['literal_unit_additions'],fwd_row=sc['forward']['max_intermediate_row_l1'], + inv_row=sc['inverse']['max_intermediate_row_l1'],K=bk['conservative_extra_selector_calls'],coarse=ma['bit_coarse'],moment_module=mod, + route=route_template(h,q,form)) + r=bill(x) + assert r['coefficient']==fin['q_power_bound']['coefficient'],(r['coefficient'],fin['q_power_bound']) + assert r['bootstrap_chain']==fin['bootstrap']['chain'] and r['delta_tau_lower']==fin['moment']['delta_tau_lower'] and r['delta_linear']==fin['moment']['delta_linear'] + assert r['route']['factor_counts']==fin['rational_route']['factor_counts'] and r['route']['factor_program_sha256']==fin['rational_route']['factor_program_sha256'] + assert r['route']['denominators']==[1,2,3,6] + print('PASS regression: on the p = 10 receipts in',d,'the generalized bill reproduces the coefficient',r['coefficient'], + ', the moment gaps, the bootstrap chain and the 40-dimensional route program (sha',r['route']['factor_program_sha256'][:12]+'...)') + else: + x=json.load(open(sys.argv[2])) + q=x['qstar']; form=lambda i,j: Q(int(i==j),2) # E8 form /2 in Construction-A coordinates + x['route']=route_template(x['h'],q,form); x['moment_module']=mod; x['literal']=hist(x['literal']) + # every port: route conjugated by its W(E8) reflection word (the original's coordinate permutations are free + # relabelings; here the isometry is a rational program and is charged as part of the port route) + w=json.load(gzip.open(x['word'],'rt')); Lw=w['lines']; h=x['h'] + ip=lambda a,b: Q(sum(u*t for u,t in zip(a,b)),2) + def refl(r): + return [[Q(int(i==j))-Q(r[i]*r[j],2)*2/ip(r,r) for j in range(h)] for i in range(h)] + isom={0:[[Q(int(i==j)) for j in range(h)] for i in range(h)]}; fr=[0] + while fr: + nx=[] + for a_ in fr: + for b_ in range(len(Lw)): + if b_ in isom or abs(ip(Lw[a_],Lw[b_]))!=1: continue + d_=[u-t for u,t in zip(Lw[a_],Lw[b_])] if ip(Lw[a_],Lw[b_])==1 else [u+t for u,t in zip(Lw[a_],Lw[b_])] + isom[b_]=mm(refl(d_),isom[a_]); nx.append(b_) + fr=nx + assert len(isom)==len(Lw) and Lw[0]==q + ports=[]; allden=set(); maxf=0 + for t,g in isom.items(): + ginv=[[g[j][i]*1 for j in range(h)] for i in range(h)] # G = I/2 is scalar, so g^-1 = g^T + assert mm(g,ginv)==[[Q(int(i==j)) for j in range(h)] for i in range(h)] + gq=[sum(g[i][j]*q[j] for j in range(h)) for i in range(h)]; assert gq==Lw[t] or gq==[-u for u in Lw[t]] + r_=route_template(h,q,form,g,ginv); allden|=set(r_['denominators']); maxf=max(maxf,r_['factors']) + assert all(d_&(d_-1)==0 for d_ in allden), allden # powers of two: units modulo every odd prime q + x['route']['all_ports']=dict(ports=len(isom),max_factors=maxf,denominators=sorted(allden)) + r=bill(x); r.pop('route') if False else None + json.dump({k:(v if not isinstance(v,Counter) else dict(v)) for k,v in r.items()},open(sys.argv[3],'w'),indent=1,default=str) + print('PASS finite bill (E8, K = %d, m = %d): coefficient %d (%d bits) < 2^80, q-power bound %s, payload prefix %d bits < 104, delta_tau %s, reference route %s; all %d port routes exact elementary programs, at most %d factors, denominators %s (powers of two: units modulo every odd q)'%( + x.get('Kpairs',2),x['m'],r['coefficient'],r['coefficient_bits'],r['strict_upper'],r['payload_prefix_bits'],r['delta_tau_lower'][:14],r['route']['factor_counts'],r['route']['all_ports']['ports'],r['route']['all_ports']['max_factors'],r['route']['all_ports']['denominators'])) diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/geometry_k.py b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/geometry_k.py new file mode 100644 index 0000000000..2a05298081 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/geometry_k.py @@ -0,0 +1,163 @@ +"""PR234's route and idle geometry for the bridged word B_K (DaysSky, assisted with Claude), generalizing PR #370's +geometry_g.py (five stages) to 2K + 1 stages. Every formula is geometry_g.py's; only the number of blocks and the idle +chronology change. + + H^S with S = 2K + 1 blocks, ambient form G (+) ... (+) G; p* = q* q*^T G / , k* = I - p* + route rho(i,t) [[g p* g^-1, g k*], [k* g^-1, p*]] on blocks (0, i), identity elsewhere; rho(0,t) = I (i < S) + stage projector P (+) K (+) ... (+) K (K = k* on blocks 1..i) + data(i,kind) rho(i,t) * stage_projector(i, frame(kind)) * rho(i,t), kinds P (port line), K, H, 0 +Checks for every port t: rho^2 = I; data(i-1,H) = data(i,P) and data(i-1,K) = data(i,0) for i = 1..S-1; the idle +boundary pairs of B_K (PR #363's bridged.py chronology), each commuting with a*b = a and an idempotent gap whose rank +equals bridged.check(K, h)'s idle climb: + pair q = 2..K, X: (p, data(2q-3,H)) and (data(2q-2,P), data(2q-1,P)); Y: (0, data(2q-3,K)) and (data(2q-2,0), data(2q-1,0)) + pair 1, final: (data(2,H), I) and (data(2,K), I - p); pair q, final: (data(2q,H), I) and (data(2q,K), I - p) +For K = 2 this is geometry_g.py's list of eight pairs, in the same order. Every gap of rank above floor((m - 1)/2) +gets an explicit intermediate frame Q = b - D, D a sum of mutually orthogonal E8 root projectors r r^T G/ in a +diagonal block where the gap is block-diagonal (dyadic entries only, so the prime-witness set stays {2}): +a Q = Q a = a, Q b = b Q = Q, Q^2 = Q, ranks (split, rest), so the paid children obey the half-shrink guard +2 max child < m. Entrance census (every helper starts at frame 0): the S tau-conjugates of +(I_h - P_sigma) (+) 0 are pairwise orthogonal and sum to I - completion(sigma); a duplicated window is rejected. +With the third argument 'unsplit' no climb is split: the idle children are the whole climbs, and the least halving +degree t (m^t > 2 max child^t) is reported instead of the half-shrink guard. +usage: python3 geometry_k.py K WORD.json[.gz] [unsplit]""" +import sys, os, json, gzip, time +import sympy as sp +sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', 'complex', 'code')) +import bridged +def eye(n): return sp.eye(n) +class Geo: + def __init__(self, h, G, qstar, S): + self.h = h; self.S = S; self.M = S * h; self.G = G; self.q = qstar + nq = (qstar.T * G * qstar)[0]; assert nq != 0 + self.pstar = qstar * (qstar.T * G) / nq; self.kstar = eye(h) - self.pstar + self.GG = sp.diag(*([G] * S)) + def frame_projector(self, B): + if B.rows == 0: return sp.zeros(self.h) + return B.T * (B * self.G * B.T).inv() * B * self.G + def rho(self, stage, g, ginv): + h, M = self.h, self.M; I = eye(M) + if stage == 0: return I + I[:h, :h] = g * self.pstar * ginv; I[stage*h:(stage+1)*h, stage*h:(stage+1)*h] = self.pstar + I[:h, stage*h:(stage+1)*h] = g * self.kstar; I[stage*h:(stage+1)*h, :h] = self.kstar * ginv + return I + def tau(self, stage): + I = eye(self.M) + if stage: + for j in range(self.h): I.row_swap(j, stage * self.h + j) + return I + def stage_projector(self, stage, P): + A = sp.zeros(self.M); A[:self.h, :self.h] = P + for j in range(1, stage + 1): A[j*self.h:(j+1)*self.h, j*self.h:(j+1)*self.h] = self.kstar + return A + def intermediate(self, a, b, split, lines): + """Q = b - D with D a sum of mutually G-orthogonal root projectors r r^T G/ (dyadic) inside diagonal blocks + on which the gap b - a is block-diagonal; rank(Q - a) = split.""" + h, M = self.h, self.M; gap = b - a; need = int(gap.trace()) - split; D = sp.zeros(M); got = 0 + proj = [r * (r.T * self.G) / (r.T * self.G * r)[0] for r in lines] + for j in range(self.S - 1, 0, -1): + blk = slice(j * h, (j + 1) * h) + off = gap.copy(); off[blk, blk] = sp.zeros(h) + if not (off[blk, :].is_zero_matrix and off[:, blk].is_zero_matrix): continue + Gj = gap[blk, blk]; chosen = [] + for e in proj: + if got == need: break + if Gj * e == e and all(e * f == sp.zeros(h) for f in chosen): + chosen.append(e); D[blk, blk] = D[blk, blk] + e; got += 1 + if got == need: break + assert got == need, ('no dyadic intermediate frame', need, got) + Q = b - D + assert D * D == D and D * a == a * D == sp.zeros(M) and b * D == D * b == D and Q * Q == Q + assert a * Q == Q * a == a and Q * b == b * Q == Q + assert int((Q - a).trace()) == split and int((b - Q).trace()) == need + assert all(sp.Rational(x).q & (sp.Rational(x).q - 1) == 0 for x in Q), 'intermediate frame not dyadic' + return Q + def check_port(self, K, qt, g, ginv, split, lines): + h, M, S = self.h, self.M, self.S; I = eye(M); Z = sp.zeros(M) + assert g * ginv == eye(h) and g.T * self.G * g == self.G, 'port map is not a G-isometry' + assert g * self.q == qt or g * self.q == -qt, 'port map does not send q* to the port line' + routes = [self.rho(i, g, ginv) for i in range(S)] + assert all(r * r == I for r in routes) + P = self.frame_projector(qt.T); assert P * P == P and P.trace() == 1 + Ph = {'P': P, 'K': eye(h) - P, 'H': eye(h), '0': sp.zeros(h)} + cache = {} + def data(i, kind): + if (i, kind) not in cache: cache[i, kind] = routes[i] * self.stage_projector(i, Ph[kind]) * routes[i] + return cache[i, kind] + for i in range(1, S): + assert data(i-1, 'H') == data(i, 'P'); assert data(i-1, 'K') == data(i, '0') + p = data(0, 'P'); pairs = [] + for q in range(2, K + 1): + pairs += [(p, data(2*q-3, 'H')), (Z, data(2*q-3, 'K')), (data(2*q-2, 'P'), data(2*q-1, 'P')), (data(2*q-2, '0'), data(2*q-1, '0'))] + pairs += [(data(2, 'H'), I), (data(2, 'K'), I - p)] + for q in range(2, K + 1): + pairs += [(data(2*q, 'H'), I), (data(2*q, 'K'), I - p)] + ranks = []; children = [] + for a, b in pairs: + assert a * b == b * a == a; gap = b - a; assert gap * gap == gap; r = int(gap.trace()); ranks.append(r) + if r > split: + Q = self.intermediate(a, b, split, lines); children += [split, r - split] + else: + children.append(r) + assert p * (I - p) == Z and p + (I - p) == I + return ranks, children + def check_entrance(self, Psigma): + h, M, S = self.h, self.M, self.S; Z = sp.zeros(M) + completion = sp.diag(*([Psigma] * S)); residual = eye(M) - completion + assert completion * completion == completion and completion.trace() == S * Psigma.trace() + actual = [] + for i in range(S): + t = self.tau(i); local = sp.zeros(M); local[:h, :h] = eye(h) - Psigma; actual.append(t * local * t) + assert sum(actual, Z) == residual + assert all(a * b == Z for i, a in enumerate(actual) for j, b in enumerate(actual) if i != j) + assert sum(actual[:S-1] + [actual[S-2]], Z) != residual + return True +def expected(K, h): + """idle climbs of bridged.check in the order of check_port's pair list (X and Y of each climb)""" + idle = bridged.check(K, h)['per_pair_idle']; out = [] + for q in range(2, K + 1): + a, b, _ = idle[q]; out += [a, a, b, b] + out += [idle[1][0]] * 2 + for q in range(2, K + 1): out += [idle[q][2]] * 2 + return out +def main(K, word, unsplit=False): + c = json.load(gzip.open(word, 'rt') if word.endswith('.gz') else open(word)) + assert c['form'] == '/2' and c['h'] == 8 + h = 8; S = 2 * K + 1; m = S * h; split = m if unsplit else (m - 1) // 2 + G = eye(h) / 2; L = [sp.Matrix(x) for x in c['lines']]; v = len(L) + ip = lambda a, b: (a.T * G * b)[0] + def refl(r): return eye(h) - r * (r.T * G) * 2 / ip(r, r) + star = 0; geo = Geo(h, G, L[star], S) + isom = {star: (eye(h), [])}; frontier = [star] + while frontier: + nxt = [] + for a in frontier: + for r in range(v): + if r == a: continue + if abs(ip(L[a], L[r])) == 1: + d = L[a] - L[r] if ip(L[a], L[r]) == 1 else L[a] + L[r] + if r not in isom: + isom[r] = (refl(d) * isom[a][0], isom[a][1] + [d]); nxt.append(r) + frontier = nxt + assert len(isom) == v + want = expected(K, h); idle = None; kids = None; t0 = time.time() + for t in range(v): + g, w_ = isom[t] + ranks, children = geo.check_port(K, L[t], g, g.inv(), split, L) + if idle is None: idle, kids = ranks, children + assert ranks == idle == want, (ranks, want) + assert children == kids and (unsplit or 2 * max(children) < m) + if t % 30 == 0: print(' port %d/%d checked (%d reflections) %.0fs' % (t + 1, v, len(w_), time.time() - t0), flush=True) + nreg = 2 * v + c['R']; starts = {c['start'][r] for r in range(2 * v, nreg)} + assert starts == {c['start'][v]} and len(c['frames'][c['start'][v]]) == 0 + geo.check_entrance(sp.zeros(h)) + lay = bridged.check(K, h, split=None if (unsplit or K <= 2) else split)['blocks_per_role_pair'] + t = 1 + while m ** t <= 2 * max(kids) ** t: t += 1 + assert sorted(kids) == sorted(lay * 2), (kids, lay) # X and Y of every role pair: PR #363's priced idle blocks + print('PASS E8 geometry in B_%d (%d stages, m = %d): all %d ports (W(E8) reflection words), routes involutive, %d stage boundaries chained,' + ' idle gap ranks %s (= bridged.py), paid idle children %s (%s); entrance census {0: %d helpers}:' + ' %d-window completion exact, duplicate window rejected' % (K, S, m, v, S - 1, idle, kids, + 'unsplit, halving degree %d' % t if unsplit else 'explicit dyadic intermediate frames, 2 x %d < %d' % (max(kids), m), c['R'], S)) + if unsplit: print(' unsplit: largest idle child %d of m = %d, least halving degree t = %d (%d^%d > 2 * %d^%d)' % (max(kids), m, t, m, t, max(kids), t)) +if __name__ == '__main__': + main(int(sys.argv[1]), sys.argv[2], len(sys.argv) > 3 and sys.argv[3] == 'unsplit') diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/gram_frames.py b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/gram_frames.py new file mode 100644 index 0000000000..b740d47295 --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/gram_frames.py @@ -0,0 +1,54 @@ +"""Exact nondegeneracy and PR #315's prime-witness rule for every frame of a PR249-format word, with the ambient Gram +matrix as a parameter. Generalizes PR #346's exactnd_h.py and prime_new.py (Dylan Crow, with Anthropic Claude assistance). + --gram triple9 : the paired-cube form G = I - J/9, integer Gram 9 B G B^t = 9 B B^t - s s^t (exactnd_h/prime_new, verbatim) + --gram e8ham : the E8 form /2 in Construction-A (Hamming) coordinates, integer Gram 2 B G B^t = B B^t +Checks per frame: rank(B) = dim, A.B = 0 and |A| + dim = h (when A given), det(integer Gram) != 0 (exact Bareiss), and +the prime witness: |det| = residual * prod p^e over PR #315's allowed primes with 0 < residual < 2^80. With --new BASE +only frames absent from BASE are checked (prime_new.py's scope); otherwise every frame. +usage: python3 gram_frames.py WORDDIR --gram {triple9,e8ham} --h H [--new BASEDIR] [--positive]""" +import json, sys, argparse, importlib.util, os, collections +ap=argparse.ArgumentParser(); ap.add_argument('word'); ap.add_argument('--gram',required=True); ap.add_argument('--h',type=int,required=True) +ap.add_argument('--new'); ap.add_argument('--positive',action='store_true'); a=ap.parse_args() +HERE=os.path.dirname(os.path.abspath(__file__)) +s=importlib.util.spec_from_file_location('pw',os.path.join(HERE,'..','..','pricing','prime_witnesses.py')); pw=importlib.util.module_from_spec(s); s.loader.exec_module(pw) +def validate_record(row, dimension, determinant, allowed_primes): # PR #315 prime_check.validate_record, verbatim logic + assert type(row['dimension']) is int and type(row['determinant']) is int and type(row['residual']) is int, 'exact integer witness fields' + assert row['dimension'] == dimension and row['determinant'] == determinant != 0, 'exact determinant mismatch or singular basis' + assert 0 < row['residual'] < 2**80, 'retained prime lower bound' + product = row['residual'] + for prime, exponent in row['factors'].items(): + q = int(prime); assert q in allowed_primes and type(exponent) is int and exponent > 0, 'factor shape'; product *= q**exponent + assert product == abs(determinant), 'factor identity' +def gram(B): + if a.gram=='triple9': + s_=list(map(sum,B)); return [[9*sum(x*y for x,y in zip(B[i],B[j]))-s_[i]*s_[j] for j in range(len(B))] for i in range(len(B))] + if a.gram=='e8ham': + return [[sum(x*y for x,y in zip(B[i],B[j])) for j in range(len(B))] for i in range(len(B))] + raise SystemExit('unknown gram') +def rank_int(B): + M=[r[:] for r in B]; r=0 + for c in range(len(M[0]) if M else 0): + p=next((i for i in range(r,len(M)) if M[i][c]!=0),None) + if p is None: continue + M[r],M[p]=M[p],M[r] + for i in range(len(M)): + if i!=r and M[i][c]!=0: x,y=M[r][c],M[i][c]; M[i]=[u*x-w*y for u,w in zip(M[i],M[r])] + r+=1 + return r +fr=json.load(open(a.word+'/frames.json'))['frames'] +old=json.load(open(a.new+'/frames.json'))['frames'] if a.new else {} +keys=[k for k in fr if k not in old] +stats=collections.Counter(); primes=set(); bits=0; nonpos=0 +for k in keys: + B=fr[k]['B']; A=fr[k].get('A',[]); d=len(B); assert fr[k]['dim']==d + assert d==0 or rank_int(B)==d,('basis rank',k) + if A: assert all(sum(x*y for x,y in zip(r,b))==0 for r in A for b in B) and len(A)+d==a.h,('annihilator',k) + M=gram(B) if d else []; det=pw.det(M); assert det!=0,('degenerate frame',k) + if a.positive: # positive-definite ambient form: every leading principal minor positive + for j in range(1,d+1): + if pw.det([r[:j] for r in M[:j]])<=0: nonpos+=1; break + powers,residual=pw.factor_witness(det); row=dict(dimension=d,determinant=det,residual=residual,factors={p:e for p,e in powers.items() if e}) + validate_record(row,d,det,pw.PRIMES); primes.update(map(int,row['factors'])); bits=max(bits,abs(det).bit_length()); stats[d]+=1 +assert nonpos==0 +print('PASS %s Gram: %d frames checked, all nondegenerate%s; prime witnesses valid; max determinant bits %d; primes %s; by dim %s'%( + a.gram,sum(stats.values()),' and positive definite' if a.positive else '',bits,sorted(primes),dict(sorted(stats.items())))) diff --git a/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/json.hpp b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/json.hpp new file mode 100644 index 0000000000..82d69f7c5d --- /dev/null +++ b/research/e8-rank138-idle-hosting/upstream443/parent436/code/bit/checkers/json.hpp @@ -0,0 +1,25526 @@ +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + +/****************************************************************************\ + * Note on documentation: The source files contain links to the online * + * documentation of the public API at https://json.nlohmann.me. This URL * + * contains the most recent documentation and should also be applicable to * + * previous versions; documentation for deprecated functions is not * + * removed, but marked deprecated. See "Generate documentation" section in * + * file docs/README.md. * +\****************************************************************************/ + +#ifndef INCLUDE_NLOHMANN_JSON_HPP_ +#define INCLUDE_NLOHMANN_JSON_HPP_ + +#include // all_of, find, for_each +#include // nullptr_t, ptrdiff_t, size_t +#include // hash, less +#include // initializer_list +#ifndef JSON_NO_IO + #include // istream, ostream +#endif // JSON_NO_IO +#include // random_access_iterator_tag +#include // unique_ptr +#include // string, stoi, to_string +#include // declval, forward, move, pair, swap +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// This file contains all macro definitions affecting or depending on the ABI + +#ifndef JSON_SKIP_LIBRARY_VERSION_CHECK + #if defined(NLOHMANN_JSON_VERSION_MAJOR) && defined(NLOHMANN_JSON_VERSION_MINOR) && defined(NLOHMANN_JSON_VERSION_PATCH) + #if NLOHMANN_JSON_VERSION_MAJOR != 3 || NLOHMANN_JSON_VERSION_MINOR != 12 || NLOHMANN_JSON_VERSION_PATCH != 0 + #warning "Already included a different version of the library!" + #endif + #endif +#endif + +#define NLOHMANN_JSON_VERSION_MAJOR 3 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_MINOR 12 // NOLINT(modernize-macro-to-enum) +#define NLOHMANN_JSON_VERSION_PATCH 0 // NOLINT(modernize-macro-to-enum) + +#ifndef JSON_DIAGNOSTICS + #define JSON_DIAGNOSTICS 0 +#endif + +#ifndef JSON_DIAGNOSTIC_POSITIONS + #define JSON_DIAGNOSTIC_POSITIONS 0 +#endif + +#ifndef JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON 0 +#endif + +#if JSON_DIAGNOSTICS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS _diag +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS +#endif + +#if JSON_DIAGNOSTIC_POSITIONS + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS _dp +#else + #define NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS +#endif + +#if JSON_USE_LEGACY_DISCARDED_VALUE_COMPARISON + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON _ldvcmp +#else + #define NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_NO_VERSION + #define NLOHMANN_JSON_NAMESPACE_NO_VERSION 0 +#endif + +// Construct the namespace ABI tags component +#define NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) json_abi ## a ## b ## c +#define NLOHMANN_JSON_ABI_TAGS_CONCAT(a, b, c) \ + NLOHMANN_JSON_ABI_TAGS_CONCAT_EX(a, b, c) + +#define NLOHMANN_JSON_ABI_TAGS \ + NLOHMANN_JSON_ABI_TAGS_CONCAT( \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTICS, \ + NLOHMANN_JSON_ABI_TAG_LEGACY_DISCARDED_VALUE_COMPARISON, \ + NLOHMANN_JSON_ABI_TAG_DIAGNOSTIC_POSITIONS) + +// Construct the namespace version component +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) \ + _v ## major ## _ ## minor ## _ ## patch +#define NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(major, minor, patch) \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT_EX(major, minor, patch) + +#if NLOHMANN_JSON_NAMESPACE_NO_VERSION +#define NLOHMANN_JSON_NAMESPACE_VERSION +#else +#define NLOHMANN_JSON_NAMESPACE_VERSION \ + NLOHMANN_JSON_NAMESPACE_VERSION_CONCAT(NLOHMANN_JSON_VERSION_MAJOR, \ + NLOHMANN_JSON_VERSION_MINOR, \ + NLOHMANN_JSON_VERSION_PATCH) +#endif + +// Combine namespace components +#define NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) a ## b +#define NLOHMANN_JSON_NAMESPACE_CONCAT(a, b) \ + NLOHMANN_JSON_NAMESPACE_CONCAT_EX(a, b) + +#ifndef NLOHMANN_JSON_NAMESPACE +#define NLOHMANN_JSON_NAMESPACE \ + nlohmann::NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_BEGIN +#define NLOHMANN_JSON_NAMESPACE_BEGIN \ + namespace nlohmann \ + { \ + inline namespace NLOHMANN_JSON_NAMESPACE_CONCAT( \ + NLOHMANN_JSON_ABI_TAGS, \ + NLOHMANN_JSON_NAMESPACE_VERSION) \ + { +#endif + +#ifndef NLOHMANN_JSON_NAMESPACE_END +#define NLOHMANN_JSON_NAMESPACE_END \ + } /* namespace (inline namespace) NOLINT(readability/namespace) */ \ + } // namespace nlohmann +#endif + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // transform +#include // array +#include // forward_list +#include // inserter, front_inserter, end +#include // map +#ifdef JSON_HAS_CPP_17 + #include // optional +#endif +#include // string +#include // tuple, make_tuple +#include // is_arithmetic, is_same, is_enum, underlying_type, is_convertible +#include // unordered_map +#include // pair, declval +#include // valarray + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // nullptr_t +#include // exception +#if JSON_DIAGNOSTICS + #include // accumulate +#endif +#include // runtime_error +#include // to_string +#include // vector + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // uint8_t +#include // string + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // declval, pair +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template struct make_void +{ + using type = void; +}; +template using void_t = typename make_void::type; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +// https://en.cppreference.com/w/cpp/experimental/is_detected +struct nonesuch +{ + nonesuch() = delete; + ~nonesuch() = delete; + nonesuch(nonesuch const&) = delete; + nonesuch(nonesuch const&&) = delete; + void operator=(nonesuch const&) = delete; + void operator=(nonesuch&&) = delete; +}; + +template class Op, + class... Args> +struct detector +{ + using value_t = std::false_type; + using type = Default; +}; + +template class Op, class... Args> +struct detector>, Op, Args...> +{ + using value_t = std::true_type; + using type = Op; +}; + +template class Op, class... Args> +using is_detected = typename detector::value_t; + +template class Op, class... Args> +struct is_detected_lazy : is_detected { }; + +template class Op, class... Args> +using detected_t = typename detector::type; + +template class Op, class... Args> +using detected_or = detector; + +template class Op, class... Args> +using detected_or_t = typename detected_or::type; + +template class Op, class... Args> +using is_detected_exact = std::is_same>; + +template class Op, class... Args> +using is_detected_convertible = + std::is_convertible, To>; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + + +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-FileCopyrightText: 2016 - 2021 Evan Nemerson +// SPDX-License-Identifier: MIT + +/* Hedley - https://nemequ.github.io/hedley + * Created by Evan Nemerson + */ + +#if !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < 15) +#if defined(JSON_HEDLEY_VERSION) + #undef JSON_HEDLEY_VERSION +#endif +#define JSON_HEDLEY_VERSION 15 + +#if defined(JSON_HEDLEY_STRINGIFY_EX) + #undef JSON_HEDLEY_STRINGIFY_EX +#endif +#define JSON_HEDLEY_STRINGIFY_EX(x) #x + +#if defined(JSON_HEDLEY_STRINGIFY) + #undef JSON_HEDLEY_STRINGIFY +#endif +#define JSON_HEDLEY_STRINGIFY(x) JSON_HEDLEY_STRINGIFY_EX(x) + +#if defined(JSON_HEDLEY_CONCAT_EX) + #undef JSON_HEDLEY_CONCAT_EX +#endif +#define JSON_HEDLEY_CONCAT_EX(a,b) a##b + +#if defined(JSON_HEDLEY_CONCAT) + #undef JSON_HEDLEY_CONCAT +#endif +#define JSON_HEDLEY_CONCAT(a,b) JSON_HEDLEY_CONCAT_EX(a,b) + +#if defined(JSON_HEDLEY_CONCAT3_EX) + #undef JSON_HEDLEY_CONCAT3_EX +#endif +#define JSON_HEDLEY_CONCAT3_EX(a,b,c) a##b##c + +#if defined(JSON_HEDLEY_CONCAT3) + #undef JSON_HEDLEY_CONCAT3 +#endif +#define JSON_HEDLEY_CONCAT3(a,b,c) JSON_HEDLEY_CONCAT3_EX(a,b,c) + +#if defined(JSON_HEDLEY_VERSION_ENCODE) + #undef JSON_HEDLEY_VERSION_ENCODE +#endif +#define JSON_HEDLEY_VERSION_ENCODE(major,minor,revision) (((major) * 1000000) + ((minor) * 1000) + (revision)) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MAJOR) + #undef JSON_HEDLEY_VERSION_DECODE_MAJOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MAJOR(version) ((version) / 1000000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_MINOR) + #undef JSON_HEDLEY_VERSION_DECODE_MINOR +#endif +#define JSON_HEDLEY_VERSION_DECODE_MINOR(version) (((version) % 1000000) / 1000) + +#if defined(JSON_HEDLEY_VERSION_DECODE_REVISION) + #undef JSON_HEDLEY_VERSION_DECODE_REVISION +#endif +#define JSON_HEDLEY_VERSION_DECODE_REVISION(version) ((version) % 1000) + +#if defined(JSON_HEDLEY_GNUC_VERSION) + #undef JSON_HEDLEY_GNUC_VERSION +#endif +#if defined(__GNUC__) && defined(__GNUC_PATCHLEVEL__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__) +#elif defined(__GNUC__) + #define JSON_HEDLEY_GNUC_VERSION JSON_HEDLEY_VERSION_ENCODE(__GNUC__, __GNUC_MINOR__, 0) +#endif + +#if defined(JSON_HEDLEY_GNUC_VERSION_CHECK) + #undef JSON_HEDLEY_GNUC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GNUC_VERSION) + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GNUC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION) + #undef JSON_HEDLEY_MSVC_VERSION +#endif +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 140000000) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 10000000, (_MSC_FULL_VER % 10000000) / 100000, (_MSC_FULL_VER % 100000) / 100) +#elif defined(_MSC_FULL_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_FULL_VER / 1000000, (_MSC_FULL_VER % 1000000) / 10000, (_MSC_FULL_VER % 10000) / 10) +#elif defined(_MSC_VER) && !defined(__ICL) + #define JSON_HEDLEY_MSVC_VERSION JSON_HEDLEY_VERSION_ENCODE(_MSC_VER / 100, _MSC_VER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_MSVC_VERSION_CHECK) + #undef JSON_HEDLEY_MSVC_VERSION_CHECK +#endif +#if !defined(JSON_HEDLEY_MSVC_VERSION) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (0) +#elif defined(_MSC_VER) && (_MSC_VER >= 1400) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 10000000) + (minor * 100000) + (patch))) +#elif defined(_MSC_VER) && (_MSC_VER >= 1200) + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_FULL_VER >= ((major * 1000000) + (minor * 10000) + (patch))) +#else + #define JSON_HEDLEY_MSVC_VERSION_CHECK(major,minor,patch) (_MSC_VER >= ((major * 100) + (minor))) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION) + #undef JSON_HEDLEY_INTEL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, __INTEL_COMPILER_UPDATE) +#elif defined(__INTEL_COMPILER) && !defined(__ICL) + #define JSON_HEDLEY_INTEL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER / 100, __INTEL_COMPILER % 100, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_VERSION) + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #undef JSON_HEDLEY_INTEL_CL_VERSION +#endif +#if defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE) && defined(__ICL) + #define JSON_HEDLEY_INTEL_CL_VERSION JSON_HEDLEY_VERSION_ENCODE(__INTEL_COMPILER, __INTEL_COMPILER_UPDATE, 0) +#endif + +#if defined(JSON_HEDLEY_INTEL_CL_VERSION_CHECK) + #undef JSON_HEDLEY_INTEL_CL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_INTEL_CL_VERSION) + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_INTEL_CL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_INTEL_CL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION) + #undef JSON_HEDLEY_PGI_VERSION +#endif +#if defined(__PGI) && defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__) + #define JSON_HEDLEY_PGI_VERSION JSON_HEDLEY_VERSION_ENCODE(__PGIC__, __PGIC_MINOR__, __PGIC_PATCHLEVEL__) +#endif + +#if defined(JSON_HEDLEY_PGI_VERSION_CHECK) + #undef JSON_HEDLEY_PGI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PGI_VERSION) + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PGI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PGI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #undef JSON_HEDLEY_SUNPRO_VERSION +#endif +#if defined(__SUNPRO_C) && (__SUNPRO_C > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_C >> 16) & 0xf) * 10) + ((__SUNPRO_C >> 12) & 0xf), (((__SUNPRO_C >> 8) & 0xf) * 10) + ((__SUNPRO_C >> 4) & 0xf), (__SUNPRO_C & 0xf) * 10) +#elif defined(__SUNPRO_C) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_C >> 8) & 0xf, (__SUNPRO_C >> 4) & 0xf, (__SUNPRO_C) & 0xf) +#elif defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x1000) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((((__SUNPRO_CC >> 16) & 0xf) * 10) + ((__SUNPRO_CC >> 12) & 0xf), (((__SUNPRO_CC >> 8) & 0xf) * 10) + ((__SUNPRO_CC >> 4) & 0xf), (__SUNPRO_CC & 0xf) * 10) +#elif defined(__SUNPRO_CC) + #define JSON_HEDLEY_SUNPRO_VERSION JSON_HEDLEY_VERSION_ENCODE((__SUNPRO_CC >> 8) & 0xf, (__SUNPRO_CC >> 4) & 0xf, (__SUNPRO_CC) & 0xf) +#endif + +#if defined(JSON_HEDLEY_SUNPRO_VERSION_CHECK) + #undef JSON_HEDLEY_SUNPRO_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_SUNPRO_VERSION) + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_SUNPRO_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_SUNPRO_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION +#endif +#if defined(__EMSCRIPTEN__) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION JSON_HEDLEY_VERSION_ENCODE(__EMSCRIPTEN_major__, __EMSCRIPTEN_minor__, __EMSCRIPTEN_tiny__) +#endif + +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK) + #undef JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_EMSCRIPTEN_VERSION) + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_EMSCRIPTEN_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_EMSCRIPTEN_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION) + #undef JSON_HEDLEY_ARM_VERSION +#endif +#if defined(__CC_ARM) && defined(__ARMCOMPILER_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCOMPILER_VERSION / 1000000, (__ARMCOMPILER_VERSION % 1000000) / 10000, (__ARMCOMPILER_VERSION % 10000) / 100) +#elif defined(__CC_ARM) && defined(__ARMCC_VERSION) + #define JSON_HEDLEY_ARM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ARMCC_VERSION / 1000000, (__ARMCC_VERSION % 1000000) / 10000, (__ARMCC_VERSION % 10000) / 100) +#endif + +#if defined(JSON_HEDLEY_ARM_VERSION_CHECK) + #undef JSON_HEDLEY_ARM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_ARM_VERSION) + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_ARM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_ARM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION) + #undef JSON_HEDLEY_IBM_VERSION +#endif +#if defined(__ibmxl__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__ibmxl_version__, __ibmxl_release__, __ibmxl_modification__) +#elif defined(__xlC__) && defined(__xlC_ver__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, (__xlC_ver__ >> 8) & 0xff) +#elif defined(__xlC__) + #define JSON_HEDLEY_IBM_VERSION JSON_HEDLEY_VERSION_ENCODE(__xlC__ >> 8, __xlC__ & 0xff, 0) +#endif + +#if defined(JSON_HEDLEY_IBM_VERSION_CHECK) + #undef JSON_HEDLEY_IBM_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IBM_VERSION) + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IBM_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IBM_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_VERSION) + #undef JSON_HEDLEY_TI_VERSION +#endif +#if \ + defined(__TI_COMPILER_VERSION__) && \ + ( \ + defined(__TMS470__) || defined(__TI_ARM__) || \ + defined(__MSP430__) || \ + defined(__TMS320C2000__) \ + ) +#if (__TI_COMPILER_VERSION__ >= 16000000) + #define JSON_HEDLEY_TI_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif +#endif + +#if defined(JSON_HEDLEY_TI_VERSION_CHECK) + #undef JSON_HEDLEY_TI_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_VERSION) + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #undef JSON_HEDLEY_TI_CL2000_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C2000__) + #define JSON_HEDLEY_TI_CL2000_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL2000_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL2000_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL2000_VERSION) + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL2000_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL2000_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #undef JSON_HEDLEY_TI_CL430_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__MSP430__) + #define JSON_HEDLEY_TI_CL430_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL430_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL430_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL430_VERSION) + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL430_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL430_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #undef JSON_HEDLEY_TI_ARMCL_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && (defined(__TMS470__) || defined(__TI_ARM__)) + #define JSON_HEDLEY_TI_ARMCL_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION_CHECK) + #undef JSON_HEDLEY_TI_ARMCL_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_ARMCL_VERSION) + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_ARMCL_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #undef JSON_HEDLEY_TI_CL6X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__TMS320C6X__) + #define JSON_HEDLEY_TI_CL6X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL6X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL6X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL6X_VERSION) + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL6X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL6X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #undef JSON_HEDLEY_TI_CL7X_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__C7000__) + #define JSON_HEDLEY_TI_CL7X_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CL7X_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CL7X_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CL7X_VERSION) + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CL7X_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CL7X_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #undef JSON_HEDLEY_TI_CLPRU_VERSION +#endif +#if defined(__TI_COMPILER_VERSION__) && defined(__PRU__) + #define JSON_HEDLEY_TI_CLPRU_VERSION JSON_HEDLEY_VERSION_ENCODE(__TI_COMPILER_VERSION__ / 1000000, (__TI_COMPILER_VERSION__ % 1000000) / 1000, (__TI_COMPILER_VERSION__ % 1000)) +#endif + +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION_CHECK) + #undef JSON_HEDLEY_TI_CLPRU_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TI_CLPRU_VERSION) + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TI_CLPRU_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION) + #undef JSON_HEDLEY_CRAY_VERSION +#endif +#if defined(_CRAYC) + #if defined(_RELEASE_PATCHLEVEL) + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, _RELEASE_PATCHLEVEL) + #else + #define JSON_HEDLEY_CRAY_VERSION JSON_HEDLEY_VERSION_ENCODE(_RELEASE_MAJOR, _RELEASE_MINOR, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_CRAY_VERSION_CHECK) + #undef JSON_HEDLEY_CRAY_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_CRAY_VERSION) + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_CRAY_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_CRAY_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION) + #undef JSON_HEDLEY_IAR_VERSION +#endif +#if defined(__IAR_SYSTEMS_ICC__) + #if __VER__ > 1000 + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE((__VER__ / 1000000), ((__VER__ / 1000) % 1000), (__VER__ % 1000)) + #else + #define JSON_HEDLEY_IAR_VERSION JSON_HEDLEY_VERSION_ENCODE(__VER__ / 100, __VER__ % 100, 0) + #endif +#endif + +#if defined(JSON_HEDLEY_IAR_VERSION_CHECK) + #undef JSON_HEDLEY_IAR_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_IAR_VERSION) + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_IAR_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_IAR_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION) + #undef JSON_HEDLEY_TINYC_VERSION +#endif +#if defined(__TINYC__) + #define JSON_HEDLEY_TINYC_VERSION JSON_HEDLEY_VERSION_ENCODE(__TINYC__ / 1000, (__TINYC__ / 100) % 10, __TINYC__ % 100) +#endif + +#if defined(JSON_HEDLEY_TINYC_VERSION_CHECK) + #undef JSON_HEDLEY_TINYC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_TINYC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_TINYC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION) + #undef JSON_HEDLEY_DMC_VERSION +#endif +#if defined(__DMC__) + #define JSON_HEDLEY_DMC_VERSION JSON_HEDLEY_VERSION_ENCODE(__DMC__ >> 8, (__DMC__ >> 4) & 0xf, __DMC__ & 0xf) +#endif + +#if defined(JSON_HEDLEY_DMC_VERSION_CHECK) + #undef JSON_HEDLEY_DMC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_DMC_VERSION) + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_DMC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_DMC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #undef JSON_HEDLEY_COMPCERT_VERSION +#endif +#if defined(__COMPCERT_VERSION__) + #define JSON_HEDLEY_COMPCERT_VERSION JSON_HEDLEY_VERSION_ENCODE(__COMPCERT_VERSION__ / 10000, (__COMPCERT_VERSION__ / 100) % 100, __COMPCERT_VERSION__ % 100) +#endif + +#if defined(JSON_HEDLEY_COMPCERT_VERSION_CHECK) + #undef JSON_HEDLEY_COMPCERT_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_COMPCERT_VERSION) + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_COMPCERT_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_COMPCERT_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION) + #undef JSON_HEDLEY_PELLES_VERSION +#endif +#if defined(__POCC__) + #define JSON_HEDLEY_PELLES_VERSION JSON_HEDLEY_VERSION_ENCODE(__POCC__ / 100, __POCC__ % 100, 0) +#endif + +#if defined(JSON_HEDLEY_PELLES_VERSION_CHECK) + #undef JSON_HEDLEY_PELLES_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_PELLES_VERSION) + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_PELLES_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_PELLES_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #undef JSON_HEDLEY_MCST_LCC_VERSION +#endif +#if defined(__LCC__) && defined(__LCC_MINOR__) + #define JSON_HEDLEY_MCST_LCC_VERSION JSON_HEDLEY_VERSION_ENCODE(__LCC__ / 100, __LCC__ % 100, __LCC_MINOR__) +#endif + +#if defined(JSON_HEDLEY_MCST_LCC_VERSION_CHECK) + #undef JSON_HEDLEY_MCST_LCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_MCST_LCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_MCST_LCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION) + #undef JSON_HEDLEY_GCC_VERSION +#endif +#if \ + defined(JSON_HEDLEY_GNUC_VERSION) && \ + !defined(__clang__) && \ + !defined(JSON_HEDLEY_INTEL_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_ARM_VERSION) && \ + !defined(JSON_HEDLEY_CRAY_VERSION) && \ + !defined(JSON_HEDLEY_TI_VERSION) && \ + !defined(JSON_HEDLEY_TI_ARMCL_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL430_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL2000_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL6X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CL7X_VERSION) && \ + !defined(JSON_HEDLEY_TI_CLPRU_VERSION) && \ + !defined(__COMPCERT__) && \ + !defined(JSON_HEDLEY_MCST_LCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION JSON_HEDLEY_GNUC_VERSION +#endif + +#if defined(JSON_HEDLEY_GCC_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_VERSION_CHECK +#endif +#if defined(JSON_HEDLEY_GCC_VERSION) + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (JSON_HEDLEY_GCC_VERSION >= JSON_HEDLEY_VERSION_ENCODE(major, minor, patch)) +#else + #define JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_ATTRIBUTE +#endif +#if \ + defined(__has_attribute) && \ + ( \ + (!defined(JSON_HEDLEY_IAR_VERSION) || JSON_HEDLEY_IAR_VERSION_CHECK(8,5,9)) \ + ) +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) __has_attribute(attribute) +#else +# define JSON_HEDLEY_HAS_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_ATTRIBUTE +#endif +#if defined(__has_attribute) + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE +#endif +#if \ + defined(__has_cpp_attribute) && \ + defined(__cplusplus) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS) + #undef JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS +#endif +#if !defined(__cplusplus) || !defined(__has_cpp_attribute) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#elif \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION) && \ + (!defined(JSON_HEDLEY_SUNPRO_VERSION) || JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0)) && \ + (!defined(JSON_HEDLEY_MSVC_VERSION) || JSON_HEDLEY_MSVC_VERSION_CHECK(19,20,0)) + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(ns::attribute) +#else + #define JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(ns,attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE +#endif +#if defined(__has_cpp_attribute) && defined(__cplusplus) + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) __has_cpp_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_CPP_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_BUILTIN) + #undef JSON_HEDLEY_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_HAS_BUILTIN(builtin) __has_builtin(builtin) +#else + #define JSON_HEDLEY_HAS_BUILTIN(builtin) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_BUILTIN) + #undef JSON_HEDLEY_GNUC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GNUC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_BUILTIN) + #undef JSON_HEDLEY_GCC_HAS_BUILTIN +#endif +#if defined(__has_builtin) + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) __has_builtin(builtin) +#else + #define JSON_HEDLEY_GCC_HAS_BUILTIN(builtin,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_FEATURE) + #undef JSON_HEDLEY_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_HAS_FEATURE(feature) __has_feature(feature) +#else + #define JSON_HEDLEY_HAS_FEATURE(feature) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_FEATURE) + #undef JSON_HEDLEY_GNUC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GNUC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_FEATURE) + #undef JSON_HEDLEY_GCC_HAS_FEATURE +#endif +#if defined(__has_feature) + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) __has_feature(feature) +#else + #define JSON_HEDLEY_GCC_HAS_FEATURE(feature,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_EXTENSION) + #undef JSON_HEDLEY_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_HAS_EXTENSION(extension) __has_extension(extension) +#else + #define JSON_HEDLEY_HAS_EXTENSION(extension) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_EXTENSION) + #undef JSON_HEDLEY_GNUC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GNUC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_EXTENSION) + #undef JSON_HEDLEY_GCC_HAS_EXTENSION +#endif +#if defined(__has_extension) + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) __has_extension(extension) +#else + #define JSON_HEDLEY_GCC_HAS_EXTENSION(extension,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GNUC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE +#endif +#if defined(__has_declspec_attribute) + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) __has_declspec_attribute(attribute) +#else + #define JSON_HEDLEY_GCC_HAS_DECLSPEC_ATTRIBUTE(attribute,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_HAS_WARNING) + #undef JSON_HEDLEY_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_HAS_WARNING(warning) __has_warning(warning) +#else + #define JSON_HEDLEY_HAS_WARNING(warning) (0) +#endif + +#if defined(JSON_HEDLEY_GNUC_HAS_WARNING) + #undef JSON_HEDLEY_GNUC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GNUC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GNUC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_GCC_HAS_WARNING) + #undef JSON_HEDLEY_GCC_HAS_WARNING +#endif +#if defined(__has_warning) + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) __has_warning(warning) +#else + #define JSON_HEDLEY_GCC_HAS_WARNING(warning,major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + defined(__clang__) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,17) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(8,0,0) || \ + (JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) && defined(__C99_PRAGMA_OPERATOR)) + #define JSON_HEDLEY_PRAGMA(value) _Pragma(#value) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_PRAGMA(value) __pragma(value) +#else + #define JSON_HEDLEY_PRAGMA(value) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_PUSH) + #undef JSON_HEDLEY_DIAGNOSTIC_PUSH +#endif +#if defined(JSON_HEDLEY_DIAGNOSTIC_POP) + #undef JSON_HEDLEY_DIAGNOSTIC_POP +#endif +#if defined(__clang__) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("clang diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("clang diagnostic pop") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("GCC diagnostic push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("GCC diagnostic pop") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH __pragma(warning(push)) + #define JSON_HEDLEY_DIAGNOSTIC_POP __pragma(warning(pop)) +#elif JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("pop") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("diag_push") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("diag_pop") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_PUSH _Pragma("warning(push)") + #define JSON_HEDLEY_DIAGNOSTIC_POP _Pragma("warning(pop)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_PUSH + #define JSON_HEDLEY_DIAGNOSTIC_POP +#endif + +/* JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_ +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat") +# if JSON_HEDLEY_HAS_WARNING("-Wc++17-extensions") +# if JSON_HEDLEY_HAS_WARNING("-Wc++1z-extensions") +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + _Pragma("clang diagnostic ignored \"-Wc++1z-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + _Pragma("clang diagnostic ignored \"-Wc++17-extensions\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# else +# define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(xpr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wc++98-compat\"") \ + xpr \ + JSON_HEDLEY_DIAGNOSTIC_POP +# endif +# endif +#endif +#if !defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(x) x +#endif + +#if defined(JSON_HEDLEY_CONST_CAST) + #undef JSON_HEDLEY_CONST_CAST +#endif +#if defined(__cplusplus) +# define JSON_HEDLEY_CONST_CAST(T, expr) (const_cast(expr)) +#elif \ + JSON_HEDLEY_HAS_WARNING("-Wcast-qual") || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_CONST_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_CONST_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_REINTERPRET_CAST) + #undef JSON_HEDLEY_REINTERPRET_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) (reinterpret_cast(expr)) +#else + #define JSON_HEDLEY_REINTERPRET_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_STATIC_CAST) + #undef JSON_HEDLEY_STATIC_CAST +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_STATIC_CAST(T, expr) (static_cast(expr)) +#else + #define JSON_HEDLEY_STATIC_CAST(T, expr) ((T) (expr)) +#endif + +#if defined(JSON_HEDLEY_CPP_CAST) + #undef JSON_HEDLEY_CPP_CAST +#endif +#if defined(__cplusplus) +# if JSON_HEDLEY_HAS_WARNING("-Wold-style-cast") +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wold-style-cast\"") \ + ((T) (expr)) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# elif JSON_HEDLEY_IAR_VERSION_CHECK(8,3,0) +# define JSON_HEDLEY_CPP_CAST(T, expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("diag_suppress=Pe137") \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_CPP_CAST(T, expr) ((T) (expr)) +# endif +#else +# define JSON_HEDLEY_CPP_CAST(T, expr) (expr) +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wdeprecated-declarations") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warning(disable:1478 1786)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:1478 1786)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1216,1444,1445") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED __pragma(warning(disable:4996)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1215,1444") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress 1291,1718") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && !defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,E_DEPRECATED_ATT,E_DEPRECATED_ATT_MESS)") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("error_messages(off,symdeprecated,symdeprecated2)") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("diag_suppress=Pe1444,Pe1215") +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,90,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED _Pragma("warn(disable:2241)") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_DEPRECATED +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("clang diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("warning(disable:161)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:161)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 1675") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("GCC diagnostic ignored \"-Wunknown-pragmas\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS __pragma(warning(disable:4068)) +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(16,9,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 163") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress=Pe161") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS _Pragma("diag_suppress 161") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-attributes") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("clang diagnostic ignored \"-Wunknown-attributes\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(4,6,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("warning(disable:1292)") +#elif JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:1292)) +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES __pragma(warning(disable:5030)) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(20,7,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097,1098") +#elif JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("error_messages(off,attrskipunsup)") +#elif \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1173") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress=Pe1097") +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES _Pragma("diag_suppress 1097") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_CPP_ATTRIBUTES +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wcast-qual") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("clang diagnostic ignored \"-Wcast-qual\"") +#elif JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("warning(disable:2203 2331)") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL _Pragma("GCC diagnostic ignored \"-Wcast-qual\"") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL +#endif + +#if defined(JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION) + #undef JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunused-function") + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("clang diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("GCC diagnostic ignored \"-Wunused-function\"") +#elif JSON_HEDLEY_MSVC_VERSION_CHECK(1,0,0) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION __pragma(warning(disable:4505)) +#elif JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION _Pragma("diag_suppress 3142") +#else + #define JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNUSED_FUNCTION +#endif + +#if defined(JSON_HEDLEY_DEPRECATED) + #undef JSON_HEDLEY_DEPRECATED +#endif +#if defined(JSON_HEDLEY_DEPRECATED_FOR) + #undef JSON_HEDLEY_DEPRECATED_FOR +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated("Since " # since)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated("Since " #since "; use " #replacement)) +#elif \ + (JSON_HEDLEY_HAS_EXTENSION(attribute_deprecated_with_message) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,13,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(18,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,3,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,3,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__("Since " #since))) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__("Since " #since "; use " #replacement))) +#elif defined(__cplusplus) && (__cplusplus >= 201402L) + #define JSON_HEDLEY_DEPRECATED(since) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since)]]) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[deprecated("Since " #since "; use " #replacement)]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(deprecated) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_DEPRECATED(since) __attribute__((__deprecated__)) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __attribute__((__deprecated__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_PELLES_VERSION_CHECK(6,50,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_DEPRECATED(since) __declspec(deprecated) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) __declspec(deprecated) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_DEPRECATED(since) _Pragma("deprecated") + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) _Pragma("deprecated") +#else + #define JSON_HEDLEY_DEPRECATED(since) + #define JSON_HEDLEY_DEPRECATED_FOR(since, replacement) +#endif + +#if defined(JSON_HEDLEY_UNAVAILABLE) + #undef JSON_HEDLEY_UNAVAILABLE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warning) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNAVAILABLE(available_since) __attribute__((__warning__("Not available until " #available_since))) +#else + #define JSON_HEDLEY_UNAVAILABLE(available_since) +#endif + +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT +#endif +#if defined(JSON_HEDLEY_WARN_UNUSED_RESULT_MSG) + #undef JSON_HEDLEY_WARN_UNUSED_RESULT_MSG +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(warn_unused_result) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) __attribute__((__warn_unused_result__)) +#elif (JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) >= 201907L) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard(msg)]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(nodiscard) + #define JSON_HEDLEY_WARN_UNUSED_RESULT JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[nodiscard]]) +#elif defined(_Check_return_) /* SAL */ + #define JSON_HEDLEY_WARN_UNUSED_RESULT _Check_return_ + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) _Check_return_ +#else + #define JSON_HEDLEY_WARN_UNUSED_RESULT + #define JSON_HEDLEY_WARN_UNUSED_RESULT_MSG(msg) +#endif + +#if defined(JSON_HEDLEY_SENTINEL) + #undef JSON_HEDLEY_SENTINEL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(sentinel) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_SENTINEL(position) __attribute__((__sentinel__(position))) +#else + #define JSON_HEDLEY_SENTINEL(position) +#endif + +#if defined(JSON_HEDLEY_NO_RETURN) + #undef JSON_HEDLEY_NO_RETURN +#endif +#if JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NO_RETURN __noreturn +#elif \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L + #define JSON_HEDLEY_NO_RETURN _Noreturn +#elif defined(__cplusplus) && (__cplusplus >= 201103L) + #define JSON_HEDLEY_NO_RETURN JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[noreturn]]) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(noreturn) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,2,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NO_RETURN __attribute__((__noreturn__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_NO_RETURN _Pragma("does_not_return") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NO_RETURN _Pragma("FUNC_NEVER_RETURNS;") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NO_RETURN __attribute((noreturn)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NO_RETURN __declspec(noreturn) +#else + #define JSON_HEDLEY_NO_RETURN +#endif + +#if defined(JSON_HEDLEY_NO_ESCAPE) + #undef JSON_HEDLEY_NO_ESCAPE +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(noescape) + #define JSON_HEDLEY_NO_ESCAPE __attribute__((__noescape__)) +#else + #define JSON_HEDLEY_NO_ESCAPE +#endif + +#if defined(JSON_HEDLEY_UNREACHABLE) + #undef JSON_HEDLEY_UNREACHABLE +#endif +#if defined(JSON_HEDLEY_UNREACHABLE_RETURN) + #undef JSON_HEDLEY_UNREACHABLE_RETURN +#endif +#if defined(JSON_HEDLEY_ASSUME) + #undef JSON_HEDLEY_ASSUME +#endif +#if \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_ASSUME(expr) __assume(expr) +#elif JSON_HEDLEY_HAS_BUILTIN(__builtin_assume) + #define JSON_HEDLEY_ASSUME(expr) __builtin_assume(expr) +#elif \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #if defined(__cplusplus) + #define JSON_HEDLEY_ASSUME(expr) std::_nassert(expr) + #else + #define JSON_HEDLEY_ASSUME(expr) _nassert(expr) + #endif +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_unreachable) && (!defined(JSON_HEDLEY_ARM_VERSION))) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,5,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,10,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,5) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(10,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_UNREACHABLE() __builtin_unreachable() +#elif defined(JSON_HEDLEY_ASSUME) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif +#if !defined(JSON_HEDLEY_ASSUME) + #if defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, ((expr) ? 1 : (JSON_HEDLEY_UNREACHABLE(), 1))) + #else + #define JSON_HEDLEY_ASSUME(expr) JSON_HEDLEY_STATIC_CAST(void, expr) + #endif +#endif +#if defined(JSON_HEDLEY_UNREACHABLE) + #if \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (JSON_HEDLEY_STATIC_CAST(void, JSON_HEDLEY_ASSUME(0)), (value)) + #else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) JSON_HEDLEY_UNREACHABLE() + #endif +#else + #define JSON_HEDLEY_UNREACHABLE_RETURN(value) return (value) +#endif +#if !defined(JSON_HEDLEY_UNREACHABLE) + #define JSON_HEDLEY_UNREACHABLE() JSON_HEDLEY_ASSUME(0) +#endif + +JSON_HEDLEY_DIAGNOSTIC_PUSH +#if JSON_HEDLEY_HAS_WARNING("-Wpedantic") + #pragma clang diagnostic ignored "-Wpedantic" +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wc++98-compat-pedantic") && defined(__cplusplus) + #pragma clang diagnostic ignored "-Wc++98-compat-pedantic" +#endif +#if JSON_HEDLEY_GCC_HAS_WARNING("-Wvariadic-macros",4,0,0) + #if defined(__clang__) + #pragma clang diagnostic ignored "-Wvariadic-macros" + #elif defined(JSON_HEDLEY_GCC_VERSION) + #pragma GCC diagnostic ignored "-Wvariadic-macros" + #endif +#endif +#if defined(JSON_HEDLEY_NON_NULL) + #undef JSON_HEDLEY_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NON_NULL(...) __attribute__((__nonnull__(__VA_ARGS__))) +#else + #define JSON_HEDLEY_NON_NULL(...) +#endif +JSON_HEDLEY_DIAGNOSTIC_POP + +#if defined(JSON_HEDLEY_PRINTF_FORMAT) + #undef JSON_HEDLEY_PRINTF_FORMAT +#endif +#if defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && !defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(ms_printf, string_idx, first_to_check))) +#elif defined(__MINGW32__) && JSON_HEDLEY_GCC_HAS_ATTRIBUTE(format,4,4,0) && defined(__USE_MINGW_ANSI_STDIO) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(gnu_printf, string_idx, first_to_check))) +#elif \ + JSON_HEDLEY_HAS_ATTRIBUTE(format) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,6,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __attribute__((__format__(__printf__, string_idx, first_to_check))) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(6,0,0) + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) __declspec(vaformat(printf,string_idx,first_to_check)) +#else + #define JSON_HEDLEY_PRINTF_FORMAT(string_idx,first_to_check) +#endif + +#if defined(JSON_HEDLEY_CONSTEXPR) + #undef JSON_HEDLEY_CONSTEXPR +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_CONSTEXPR JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(constexpr) + #endif +#endif +#if !defined(JSON_HEDLEY_CONSTEXPR) + #define JSON_HEDLEY_CONSTEXPR +#endif + +#if defined(JSON_HEDLEY_PREDICT) + #undef JSON_HEDLEY_PREDICT +#endif +#if defined(JSON_HEDLEY_LIKELY) + #undef JSON_HEDLEY_LIKELY +#endif +#if defined(JSON_HEDLEY_UNLIKELY) + #undef JSON_HEDLEY_UNLIKELY +#endif +#if defined(JSON_HEDLEY_UNPREDICTABLE) + #undef JSON_HEDLEY_UNPREDICTABLE +#endif +#if JSON_HEDLEY_HAS_BUILTIN(__builtin_unpredictable) + #define JSON_HEDLEY_UNPREDICTABLE(expr) __builtin_unpredictable((expr)) +#endif +#if \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect_with_probability) && !defined(JSON_HEDLEY_PGI_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(9,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, value, probability) __builtin_expect_with_probability( (expr), (value), (probability)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) __builtin_expect_with_probability(!!(expr), 1 , (probability)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) __builtin_expect_with_probability(!!(expr), 0 , (probability)) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect (!!(expr), 1 ) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect (!!(expr), 0 ) +#elif \ + (JSON_HEDLEY_HAS_BUILTIN(__builtin_expect) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,15,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,7,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,27) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PREDICT(expr, expected, probability) \ + (((probability) >= 0.9) ? __builtin_expect((expr), (expected)) : (JSON_HEDLEY_STATIC_CAST(void, expected), (expr))) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 1) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 0) : !!(expr))); \ + })) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) \ + (__extension__ ({ \ + double hedley_probability_ = (probability); \ + ((hedley_probability_ >= 0.9) ? __builtin_expect(!!(expr), 0) : ((hedley_probability_ <= 0.1) ? __builtin_expect(!!(expr), 1) : !!(expr))); \ + })) +# define JSON_HEDLEY_LIKELY(expr) __builtin_expect(!!(expr), 1) +# define JSON_HEDLEY_UNLIKELY(expr) __builtin_expect(!!(expr), 0) +#else +# define JSON_HEDLEY_PREDICT(expr, expected, probability) (JSON_HEDLEY_STATIC_CAST(void, expected), (expr)) +# define JSON_HEDLEY_PREDICT_TRUE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_PREDICT_FALSE(expr, probability) (!!(expr)) +# define JSON_HEDLEY_LIKELY(expr) (!!(expr)) +# define JSON_HEDLEY_UNLIKELY(expr) (!!(expr)) +#endif +#if !defined(JSON_HEDLEY_UNPREDICTABLE) + #define JSON_HEDLEY_UNPREDICTABLE(expr) JSON_HEDLEY_PREDICT(expr, 1, 0.5) +#endif + +#if defined(JSON_HEDLEY_MALLOC) + #undef JSON_HEDLEY_MALLOC +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(malloc) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_MALLOC __attribute__((__malloc__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_MALLOC _Pragma("returns_new_memory") +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_MALLOC __declspec(restrict) +#else + #define JSON_HEDLEY_MALLOC +#endif + +#if defined(JSON_HEDLEY_PURE) + #undef JSON_HEDLEY_PURE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(pure) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,96,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PURE __attribute__((__pure__)) +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) +# define JSON_HEDLEY_PURE _Pragma("does_not_write_global_data") +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(2,0,1) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) \ + ) +# define JSON_HEDLEY_PURE _Pragma("FUNC_IS_PURE;") +#else +# define JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_CONST) + #undef JSON_HEDLEY_CONST +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(const) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(2,5,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_CONST __attribute__((__const__)) +#elif \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) + #define JSON_HEDLEY_CONST _Pragma("no_side_effect") +#else + #define JSON_HEDLEY_CONST JSON_HEDLEY_PURE +#endif + +#if defined(JSON_HEDLEY_RESTRICT) + #undef JSON_HEDLEY_RESTRICT +#endif +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT restrict +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(14,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(17,10,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,4) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,14,0) && defined(__cplusplus)) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) || \ + defined(__clang__) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RESTRICT __restrict +#elif JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,3,0) && !defined(__cplusplus) + #define JSON_HEDLEY_RESTRICT _Restrict +#else + #define JSON_HEDLEY_RESTRICT +#endif + +#if defined(JSON_HEDLEY_INLINE) + #undef JSON_HEDLEY_INLINE +#endif +#if \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)) || \ + (defined(__cplusplus) && (__cplusplus >= 199711L)) + #define JSON_HEDLEY_INLINE inline +#elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(6,2,0) + #define JSON_HEDLEY_INLINE __inline__ +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,1,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(3,1,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,2,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(8,0,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_INLINE __inline +#else + #define JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_ALWAYS_INLINE) + #undef JSON_HEDLEY_ALWAYS_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(always_inline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) +# define JSON_HEDLEY_ALWAYS_INLINE __attribute__((__always_inline__)) JSON_HEDLEY_INLINE +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(12,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_ALWAYS_INLINE __forceinline +#elif defined(__cplusplus) && \ + ( \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) \ + ) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("FUNC_ALWAYS_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_ALWAYS_INLINE _Pragma("inline=forced") +#else +# define JSON_HEDLEY_ALWAYS_INLINE JSON_HEDLEY_INLINE +#endif + +#if defined(JSON_HEDLEY_NEVER_INLINE) + #undef JSON_HEDLEY_NEVER_INLINE +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(noinline) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(10,1,0) || \ + JSON_HEDLEY_TI_VERSION_CHECK(15,12,0) || \ + (JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(4,8,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_ARMCL_VERSION_CHECK(5,2,0) || \ + (JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL2000_VERSION_CHECK(6,4,0) || \ + (JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,0,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(4,3,0) || \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) || \ + JSON_HEDLEY_TI_CL7X_VERSION_CHECK(1,2,0) || \ + JSON_HEDLEY_TI_CLPRU_VERSION_CHECK(2,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) || \ + JSON_HEDLEY_IAR_VERSION_CHECK(8,10,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute__((__noinline__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,10,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#elif JSON_HEDLEY_PGI_VERSION_CHECK(10,2,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("noinline") +#elif JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,0,0) && defined(__cplusplus) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("FUNC_CANNOT_INLINE;") +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) + #define JSON_HEDLEY_NEVER_INLINE _Pragma("inline=never") +#elif JSON_HEDLEY_COMPCERT_VERSION_CHECK(3,2,0) + #define JSON_HEDLEY_NEVER_INLINE __attribute((noinline)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(9,0,0) + #define JSON_HEDLEY_NEVER_INLINE __declspec(noinline) +#else + #define JSON_HEDLEY_NEVER_INLINE +#endif + +#if defined(JSON_HEDLEY_PRIVATE) + #undef JSON_HEDLEY_PRIVATE +#endif +#if defined(JSON_HEDLEY_PUBLIC) + #undef JSON_HEDLEY_PUBLIC +#endif +#if defined(JSON_HEDLEY_IMPORT) + #undef JSON_HEDLEY_IMPORT +#endif +#if defined(_WIN32) || defined(__CYGWIN__) +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC __declspec(dllexport) +# define JSON_HEDLEY_IMPORT __declspec(dllimport) +#else +# if \ + JSON_HEDLEY_HAS_ATTRIBUTE(visibility) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,11,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + ( \ + defined(__TI_EABI__) && \ + ( \ + (JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,2,0) && defined(__TI_GNU_ATTRIBUTE_SUPPORT__)) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(7,5,0) \ + ) \ + ) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) +# define JSON_HEDLEY_PRIVATE __attribute__((__visibility__("hidden"))) +# define JSON_HEDLEY_PUBLIC __attribute__((__visibility__("default"))) +# else +# define JSON_HEDLEY_PRIVATE +# define JSON_HEDLEY_PUBLIC +# endif +# define JSON_HEDLEY_IMPORT extern +#endif + +#if defined(JSON_HEDLEY_NO_THROW) + #undef JSON_HEDLEY_NO_THROW +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(nothrow) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,3,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_NO_THROW __attribute__((__nothrow__)) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) + #define JSON_HEDLEY_NO_THROW __declspec(nothrow) +#else + #define JSON_HEDLEY_NO_THROW +#endif + +#if defined(JSON_HEDLEY_FALL_THROUGH) + #undef JSON_HEDLEY_FALL_THROUGH +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(fallthrough) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(7,0,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_FALL_THROUGH __attribute__((__fallthrough__)) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE_NS(clang,fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[clang::fallthrough]]) +#elif JSON_HEDLEY_HAS_CPP_ATTRIBUTE(fallthrough) + #define JSON_HEDLEY_FALL_THROUGH JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_([[fallthrough]]) +#elif defined(__fallthrough) /* SAL */ + #define JSON_HEDLEY_FALL_THROUGH __fallthrough +#else + #define JSON_HEDLEY_FALL_THROUGH +#endif + +#if defined(JSON_HEDLEY_RETURNS_NON_NULL) + #undef JSON_HEDLEY_RETURNS_NON_NULL +#endif +#if \ + JSON_HEDLEY_HAS_ATTRIBUTE(returns_nonnull) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_RETURNS_NON_NULL __attribute__((__returns_nonnull__)) +#elif defined(_Ret_notnull_) /* SAL */ + #define JSON_HEDLEY_RETURNS_NON_NULL _Ret_notnull_ +#else + #define JSON_HEDLEY_RETURNS_NON_NULL +#endif + +#if defined(JSON_HEDLEY_ARRAY_PARAM) + #undef JSON_HEDLEY_ARRAY_PARAM +#endif +#if \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) && \ + !defined(__STDC_NO_VLA__) && \ + !defined(__cplusplus) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_TINYC_VERSION) + #define JSON_HEDLEY_ARRAY_PARAM(name) (name) +#else + #define JSON_HEDLEY_ARRAY_PARAM(name) +#endif + +#if defined(JSON_HEDLEY_IS_CONSTANT) + #undef JSON_HEDLEY_IS_CONSTANT +#endif +#if defined(JSON_HEDLEY_REQUIRE_CONSTEXPR) + #undef JSON_HEDLEY_REQUIRE_CONSTEXPR +#endif +/* JSON_HEDLEY_IS_CONSTEXPR_ is for + HEDLEY INTERNAL USE ONLY. API subject to change without notice. */ +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #undef JSON_HEDLEY_IS_CONSTEXPR_ +#endif +#if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_constant_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,19) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(4,1,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_TI_CL6X_VERSION_CHECK(6,1,0) || \ + (JSON_HEDLEY_SUNPRO_VERSION_CHECK(5,10,0) && !defined(__cplusplus)) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_MCST_LCC_VERSION_CHECK(1,25,10) + #define JSON_HEDLEY_IS_CONSTANT(expr) __builtin_constant_p(expr) +#endif +#if !defined(__cplusplus) +# if \ + JSON_HEDLEY_HAS_BUILTIN(__builtin_types_compatible_p) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(3,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(13,1,0) || \ + JSON_HEDLEY_CRAY_VERSION_CHECK(8,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,4,0) || \ + JSON_HEDLEY_TINYC_VERSION_CHECK(0,9,24) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0)), int*) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) __builtin_types_compatible_p(__typeof__((1 ? (void*) ((intptr_t) ((expr) * 0)) : (int*) 0)), int*) +#endif +# elif \ + ( \ + defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(JSON_HEDLEY_SUNPRO_VERSION) && \ + !defined(JSON_HEDLEY_PGI_VERSION) && \ + !defined(JSON_HEDLEY_IAR_VERSION)) || \ + (JSON_HEDLEY_HAS_EXTENSION(c_generic_selections) && !defined(JSON_HEDLEY_IAR_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,9,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(17,0,0) || \ + JSON_HEDLEY_IBM_VERSION_CHECK(12,1,0) || \ + JSON_HEDLEY_ARM_VERSION_CHECK(5,3,0) +#if defined(__INTPTR_TYPE__) + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((__INTPTR_TYPE__) ((expr) * 0)) : (int*) 0), int*: 1, void*: 0) +#else + #include + #define JSON_HEDLEY_IS_CONSTEXPR_(expr) _Generic((1 ? (void*) ((intptr_t) * 0) : (int*) 0), int*: 1, void*: 0) +#endif +# elif \ + defined(JSON_HEDLEY_GCC_VERSION) || \ + defined(JSON_HEDLEY_INTEL_VERSION) || \ + defined(JSON_HEDLEY_TINYC_VERSION) || \ + defined(JSON_HEDLEY_TI_ARMCL_VERSION) || \ + JSON_HEDLEY_TI_CL430_VERSION_CHECK(18,12,0) || \ + defined(JSON_HEDLEY_TI_CL2000_VERSION) || \ + defined(JSON_HEDLEY_TI_CL6X_VERSION) || \ + defined(JSON_HEDLEY_TI_CL7X_VERSION) || \ + defined(JSON_HEDLEY_TI_CLPRU_VERSION) || \ + defined(__clang__) +# define JSON_HEDLEY_IS_CONSTEXPR_(expr) ( \ + sizeof(void) != \ + sizeof(*( \ + 1 ? \ + ((void*) ((expr) * 0L) ) : \ +((struct { char v[sizeof(void) * 2]; } *) 1) \ + ) \ + ) \ + ) +# endif +#endif +#if defined(JSON_HEDLEY_IS_CONSTEXPR_) + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) JSON_HEDLEY_IS_CONSTEXPR_(expr) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (JSON_HEDLEY_IS_CONSTEXPR_(expr) ? (expr) : (-1)) +#else + #if !defined(JSON_HEDLEY_IS_CONSTANT) + #define JSON_HEDLEY_IS_CONSTANT(expr) (0) + #endif + #define JSON_HEDLEY_REQUIRE_CONSTEXPR(expr) (expr) +#endif + +#if defined(JSON_HEDLEY_BEGIN_C_DECLS) + #undef JSON_HEDLEY_BEGIN_C_DECLS +#endif +#if defined(JSON_HEDLEY_END_C_DECLS) + #undef JSON_HEDLEY_END_C_DECLS +#endif +#if defined(JSON_HEDLEY_C_DECL) + #undef JSON_HEDLEY_C_DECL +#endif +#if defined(__cplusplus) + #define JSON_HEDLEY_BEGIN_C_DECLS extern "C" { + #define JSON_HEDLEY_END_C_DECLS } + #define JSON_HEDLEY_C_DECL extern "C" +#else + #define JSON_HEDLEY_BEGIN_C_DECLS + #define JSON_HEDLEY_END_C_DECLS + #define JSON_HEDLEY_C_DECL +#endif + +#if defined(JSON_HEDLEY_STATIC_ASSERT) + #undef JSON_HEDLEY_STATIC_ASSERT +#endif +#if \ + !defined(__cplusplus) && ( \ + (defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L)) || \ + (JSON_HEDLEY_HAS_FEATURE(c_static_assert) && !defined(JSON_HEDLEY_INTEL_CL_VERSION)) || \ + JSON_HEDLEY_GCC_VERSION_CHECK(6,0,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) || \ + defined(_Static_assert) \ + ) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) _Static_assert(expr, message) +#elif \ + (defined(__cplusplus) && (__cplusplus >= 201103L)) || \ + JSON_HEDLEY_MSVC_VERSION_CHECK(16,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(static_assert(expr, message)) +#else +# define JSON_HEDLEY_STATIC_ASSERT(expr, message) +#endif + +#if defined(JSON_HEDLEY_NULL) + #undef JSON_HEDLEY_NULL +#endif +#if defined(__cplusplus) + #if __cplusplus >= 201103L + #define JSON_HEDLEY_NULL JSON_HEDLEY_DIAGNOSTIC_DISABLE_CPP98_COMPAT_WRAP_(nullptr) + #elif defined(NULL) + #define JSON_HEDLEY_NULL NULL + #else + #define JSON_HEDLEY_NULL JSON_HEDLEY_STATIC_CAST(void*, 0) + #endif +#elif defined(NULL) + #define JSON_HEDLEY_NULL NULL +#else + #define JSON_HEDLEY_NULL ((void*) 0) +#endif + +#if defined(JSON_HEDLEY_MESSAGE) + #undef JSON_HEDLEY_MESSAGE +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_MESSAGE(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(message msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message msg) +#elif JSON_HEDLEY_CRAY_VERSION_CHECK(5,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(_CRI message msg) +#elif JSON_HEDLEY_IAR_VERSION_CHECK(8,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#elif JSON_HEDLEY_PELLES_VERSION_CHECK(2,0,0) +# define JSON_HEDLEY_MESSAGE(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_WARNING) + #undef JSON_HEDLEY_WARNING +#endif +#if JSON_HEDLEY_HAS_WARNING("-Wunknown-pragmas") +# define JSON_HEDLEY_WARNING(msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + JSON_HEDLEY_DIAGNOSTIC_DISABLE_UNKNOWN_PRAGMAS \ + JSON_HEDLEY_PRAGMA(clang warning msg) \ + JSON_HEDLEY_DIAGNOSTIC_POP +#elif \ + JSON_HEDLEY_GCC_VERSION_CHECK(4,8,0) || \ + JSON_HEDLEY_PGI_VERSION_CHECK(18,4,0) || \ + JSON_HEDLEY_INTEL_VERSION_CHECK(13,0,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(GCC warning msg) +#elif \ + JSON_HEDLEY_MSVC_VERSION_CHECK(15,0,0) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_PRAGMA(message(msg)) +#else +# define JSON_HEDLEY_WARNING(msg) JSON_HEDLEY_MESSAGE(msg) +#endif + +#if defined(JSON_HEDLEY_REQUIRE) + #undef JSON_HEDLEY_REQUIRE +#endif +#if defined(JSON_HEDLEY_REQUIRE_MSG) + #undef JSON_HEDLEY_REQUIRE_MSG +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(diagnose_if) +# if JSON_HEDLEY_HAS_WARNING("-Wgcc-compat") +# define JSON_HEDLEY_REQUIRE(expr) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), #expr, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("clang diagnostic ignored \"-Wgcc-compat\"") \ + __attribute__((diagnose_if(!(expr), msg, "error"))) \ + JSON_HEDLEY_DIAGNOSTIC_POP +# else +# define JSON_HEDLEY_REQUIRE(expr) __attribute__((diagnose_if(!(expr), #expr, "error"))) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) __attribute__((diagnose_if(!(expr), msg, "error"))) +# endif +#else +# define JSON_HEDLEY_REQUIRE(expr) +# define JSON_HEDLEY_REQUIRE_MSG(expr,msg) +#endif + +#if defined(JSON_HEDLEY_FLAGS) + #undef JSON_HEDLEY_FLAGS +#endif +#if JSON_HEDLEY_HAS_ATTRIBUTE(flag_enum) && (!defined(__cplusplus) || JSON_HEDLEY_HAS_WARNING("-Wbitfield-enum-conversion")) + #define JSON_HEDLEY_FLAGS __attribute__((__flag_enum__)) +#else + #define JSON_HEDLEY_FLAGS +#endif + +#if defined(JSON_HEDLEY_FLAGS_CAST) + #undef JSON_HEDLEY_FLAGS_CAST +#endif +#if JSON_HEDLEY_INTEL_VERSION_CHECK(19,0,0) +# define JSON_HEDLEY_FLAGS_CAST(T, expr) (__extension__ ({ \ + JSON_HEDLEY_DIAGNOSTIC_PUSH \ + _Pragma("warning(disable:188)") \ + ((T) (expr)); \ + JSON_HEDLEY_DIAGNOSTIC_POP \ + })) +#else +# define JSON_HEDLEY_FLAGS_CAST(T, expr) JSON_HEDLEY_STATIC_CAST(T, expr) +#endif + +#if defined(JSON_HEDLEY_EMPTY_BASES) + #undef JSON_HEDLEY_EMPTY_BASES +#endif +#if \ + (JSON_HEDLEY_MSVC_VERSION_CHECK(19,0,23918) && !JSON_HEDLEY_MSVC_VERSION_CHECK(20,0,0)) || \ + JSON_HEDLEY_INTEL_CL_VERSION_CHECK(2021,1,0) + #define JSON_HEDLEY_EMPTY_BASES __declspec(empty_bases) +#else + #define JSON_HEDLEY_EMPTY_BASES +#endif + +/* Remaining macros are deprecated. */ + +#if defined(JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK) + #undef JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK +#endif +#if defined(__clang__) + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) (0) +#else + #define JSON_HEDLEY_GCC_NOT_CLANG_VERSION_CHECK(major,minor,patch) JSON_HEDLEY_GCC_VERSION_CHECK(major,minor,patch) +#endif + +#if defined(JSON_HEDLEY_CLANG_HAS_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_CPP_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_CPP_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_BUILTIN) + #undef JSON_HEDLEY_CLANG_HAS_BUILTIN +#endif +#define JSON_HEDLEY_CLANG_HAS_BUILTIN(builtin) JSON_HEDLEY_HAS_BUILTIN(builtin) + +#if defined(JSON_HEDLEY_CLANG_HAS_FEATURE) + #undef JSON_HEDLEY_CLANG_HAS_FEATURE +#endif +#define JSON_HEDLEY_CLANG_HAS_FEATURE(feature) JSON_HEDLEY_HAS_FEATURE(feature) + +#if defined(JSON_HEDLEY_CLANG_HAS_EXTENSION) + #undef JSON_HEDLEY_CLANG_HAS_EXTENSION +#endif +#define JSON_HEDLEY_CLANG_HAS_EXTENSION(extension) JSON_HEDLEY_HAS_EXTENSION(extension) + +#if defined(JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE) + #undef JSON_HEDLEY_CLANG_HAS_DECLSPEC_DECLSPEC_ATTRIBUTE +#endif +#define JSON_HEDLEY_CLANG_HAS_DECLSPEC_ATTRIBUTE(attribute) JSON_HEDLEY_HAS_DECLSPEC_ATTRIBUTE(attribute) + +#if defined(JSON_HEDLEY_CLANG_HAS_WARNING) + #undef JSON_HEDLEY_CLANG_HAS_WARNING +#endif +#define JSON_HEDLEY_CLANG_HAS_WARNING(warning) JSON_HEDLEY_HAS_WARNING(warning) + +#endif /* !defined(JSON_HEDLEY_VERSION) || (JSON_HEDLEY_VERSION < X) */ + + +// This file contains all internal macro definitions (except those affecting ABI) +// You MUST include macro_unscope.hpp at the end of json.hpp to undef all of them + +// #include + + +// exclude unsupported compilers +#if !defined(JSON_SKIP_UNSUPPORTED_COMPILER_CHECK) + #if defined(__clang__) + #if (__clang_major__ * 10000 + __clang_minor__ * 100 + __clang_patchlevel__) < 30400 + #error "unsupported Clang version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #elif defined(__GNUC__) && !(defined(__ICC) || defined(__INTEL_COMPILER)) + #if (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) < 40800 + #error "unsupported GCC version - see https://github.com/nlohmann/json#supported-compilers" + #endif + #endif +#endif + +// C++ language standard detection +// if the user manually specified the used c++ version this is skipped +#if !defined(JSON_HAS_CPP_23) && !defined(JSON_HAS_CPP_20) && !defined(JSON_HAS_CPP_17) && !defined(JSON_HAS_CPP_14) && !defined(JSON_HAS_CPP_11) + #if (defined(__cplusplus) && __cplusplus > 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG > 202002L) + #define JSON_HAS_CPP_23 + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus > 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG > 201703L) + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus > 201402L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 + #elif (defined(__cplusplus) && __cplusplus > 201103L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) + #define JSON_HAS_CPP_14 + #endif + // the cpp 11 flag is always specified because it is the minimal required version + #define JSON_HAS_CPP_11 +#endif + +#ifdef __has_include + #if __has_include() + #include + #endif +#endif + +#if !defined(JSON_HAS_FILESYSTEM) && !defined(JSON_HAS_EXPERIMENTAL_FILESYSTEM) + #ifdef JSON_HAS_CPP_17 + #if defined(__cpp_lib_filesystem) + #define JSON_HAS_FILESYSTEM 1 + #elif defined(__cpp_lib_experimental_filesystem) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif !defined(__has_include) + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_FILESYSTEM 1 + #elif __has_include() + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 1 + #endif + + // std::filesystem does not work on MinGW GCC 8: https://sourceforge.net/p/mingw-w64/bugs/737/ + #if defined(__MINGW32__) && defined(__GNUC__) && __GNUC__ == 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before GCC 8: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__GNUC__) && !defined(__clang__) && __GNUC__ < 8 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before Clang 7: https://en.cppreference.com/w/cpp/compiler_support + #if defined(__clang_major__) && __clang_major__ < 7 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before MSVC 19.14: https://en.cppreference.com/w/cpp/compiler_support + #if defined(_MSC_VER) && _MSC_VER < 1914 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before iOS 13 + #if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED < 130000 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + + // no filesystem support before macOS Catalina + #if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 101500 + #undef JSON_HAS_FILESYSTEM + #undef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #endif + #endif +#endif + +#ifndef JSON_HAS_EXPERIMENTAL_FILESYSTEM + #define JSON_HAS_EXPERIMENTAL_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_FILESYSTEM + #define JSON_HAS_FILESYSTEM 0 +#endif + +#ifndef JSON_HAS_THREE_WAY_COMPARISON + #if defined(__cpp_impl_three_way_comparison) && __cpp_impl_three_way_comparison >= 201907L \ + && defined(__cpp_lib_three_way_comparison) && __cpp_lib_three_way_comparison >= 201907L + #define JSON_HAS_THREE_WAY_COMPARISON 1 + #else + #define JSON_HAS_THREE_WAY_COMPARISON 0 + #endif +#endif + +#ifndef JSON_HAS_RANGES + // ranges header shipping in GCC 11.1.0 (released 2021-04-27) has syntax error + #if defined(__GLIBCXX__) && __GLIBCXX__ == 20210427 + #define JSON_HAS_RANGES 0 + #elif defined(__cpp_lib_ranges) + #define JSON_HAS_RANGES 1 + #else + #define JSON_HAS_RANGES 0 + #endif +#endif + +#ifndef JSON_HAS_STATIC_RTTI + #if !defined(_HAS_STATIC_RTTI) || _HAS_STATIC_RTTI != 0 + #define JSON_HAS_STATIC_RTTI 1 + #else + #define JSON_HAS_STATIC_RTTI 0 + #endif +#endif + +#ifdef JSON_HAS_CPP_17 + #define JSON_INLINE_VARIABLE inline +#else + #define JSON_INLINE_VARIABLE +#endif + +#if JSON_HEDLEY_HAS_ATTRIBUTE(no_unique_address) + #define JSON_NO_UNIQUE_ADDRESS [[no_unique_address]] +#else + #define JSON_NO_UNIQUE_ADDRESS +#endif + +// disable documentation warnings on clang +#if defined(__clang__) + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wdocumentation" + #pragma clang diagnostic ignored "-Wdocumentation-unknown-command" +#endif + +// allow disabling exceptions +#if (defined(__cpp_exceptions) || defined(__EXCEPTIONS) || defined(_CPPUNWIND)) && !defined(JSON_NOEXCEPTION) + #define JSON_THROW(exception) throw exception + #define JSON_TRY try + #define JSON_CATCH(exception) catch(exception) + #define JSON_INTERNAL_CATCH(exception) catch(exception) +#else + #include + #define JSON_THROW(exception) std::abort() + #define JSON_TRY if(true) + #define JSON_CATCH(exception) if(false) + #define JSON_INTERNAL_CATCH(exception) if(false) +#endif + +// override exception macros +#if defined(JSON_THROW_USER) + #undef JSON_THROW + #define JSON_THROW JSON_THROW_USER +#endif +#if defined(JSON_TRY_USER) + #undef JSON_TRY + #define JSON_TRY JSON_TRY_USER +#endif +#if defined(JSON_CATCH_USER) + #undef JSON_CATCH + #define JSON_CATCH JSON_CATCH_USER + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_CATCH_USER +#endif +#if defined(JSON_INTERNAL_CATCH_USER) + #undef JSON_INTERNAL_CATCH + #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER +#endif + +// allow overriding assert +#if !defined(JSON_ASSERT) + #include // assert + #define JSON_ASSERT(x) assert(x) +#endif + +// allow to access some private functions (needed by the test suite) +#if defined(JSON_TESTS_PRIVATE) + #define JSON_PRIVATE_UNLESS_TESTED public +#else + #define JSON_PRIVATE_UNLESS_TESTED private +#endif + +/*! +@brief macro to briefly define a mapping between an enum and JSON +@def NLOHMANN_JSON_SERIALIZE_ENUM +@since version 3.4.0 +*/ +#define NLOHMANN_JSON_SERIALIZE_ENUM(ENUM_TYPE, ...) \ + template \ + inline void to_json(BasicJsonType& j, const ENUM_TYPE& e) \ + { \ + /* NOLINTNEXTLINE(modernize-type-traits) we use C++11 */ \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + /* NOLINTNEXTLINE(modernize-avoid-c-arrays) we don't want to depend on */ \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [e](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.first == e; \ + }); \ + j = ((it != std::end(m)) ? it : std::begin(m))->second; \ + } \ + template \ + inline void from_json(const BasicJsonType& j, ENUM_TYPE& e) \ + { \ + /* NOLINTNEXTLINE(modernize-type-traits) we use C++11 */ \ + static_assert(std::is_enum::value, #ENUM_TYPE " must be an enum!"); \ + /* NOLINTNEXTLINE(modernize-avoid-c-arrays) we don't want to depend on */ \ + static const std::pair m[] = __VA_ARGS__; \ + auto it = std::find_if(std::begin(m), std::end(m), \ + [&j](const std::pair& ej_pair) -> bool \ + { \ + return ej_pair.second == j; \ + }); \ + e = ((it != std::end(m)) ? it : std::begin(m))->first; \ + } + +// Ugly macros to avoid uglier copy-paste when specializing basic_json. They +// may be removed in the future once the class is split. + +#define NLOHMANN_BASIC_JSON_TPL_DECLARATION \ + template class ObjectType, \ + template class ArrayType, \ + class StringType, class BooleanType, class NumberIntegerType, \ + class NumberUnsignedType, class NumberFloatType, \ + template class AllocatorType, \ + template class JSONSerializer, \ + class BinaryType, \ + class CustomBaseClass> + +#define NLOHMANN_BASIC_JSON_TPL \ + basic_json + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_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, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); +#define NLOHMANN_JSON_FROM_WITH_DEFAULT(v1) nlohmann_json_t.v1 = !nlohmann_json_j.is_null() ? nlohmann_json_j.value(#v1, nlohmann_json_default_obj.v1) : nlohmann_json_default_obj.v1; + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT +@since version 3.11.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE +@since version 3.11.3 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT +@since version 3.11.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE +@since version 3.11.3 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_type_non_intrusive/ +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE(Type, BaseType, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_WITH_DEFAULT(Type, BaseType, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + friend void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_INTRUSIVE_ONLY_SERIALIZE(Type, BaseType, ...) \ + template::value, int> = 0> \ + friend void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE(Type, BaseType, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_WITH_DEFAULT(Type, BaseType, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + template::value, int> = 0> \ + void from_json(const BasicJsonType& nlohmann_json_j, Type& nlohmann_json_t) { nlohmann::from_json(nlohmann_json_j, static_cast(nlohmann_json_t)); const Type nlohmann_json_default_obj{}; NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM_WITH_DEFAULT, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE +@since version 3.12.0 +@sa https://json.nlohmann.me/api/macros/nlohmann_define_derived_type/ +*/ +#define NLOHMANN_DEFINE_DERIVED_TYPE_NON_INTRUSIVE_ONLY_SERIALIZE(Type, BaseType, ...) \ + template::value, int> = 0> \ + void to_json(BasicJsonType& nlohmann_json_j, const Type& nlohmann_json_t) { nlohmann::to_json(nlohmann_json_j, static_cast(nlohmann_json_t)); NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } + +// inspired from https://stackoverflow.com/a/26745591 +// allows calling any std function as if (e.g., with begin): +// using std::begin; begin(x); +// +// it allows using the detected idiom to retrieve the return type +// of such an expression +#define NLOHMANN_CAN_CALL_STD_FUNC_IMPL(std_name) \ + namespace detail { \ + using std::std_name; \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + } \ + \ + namespace detail2 { \ + struct std_name##_tag \ + { \ + }; \ + \ + template \ + std_name##_tag std_name(T&&...); \ + \ + template \ + using result_of_##std_name = decltype(std_name(std::declval()...)); \ + \ + template \ + struct would_call_std_##std_name \ + { \ + static constexpr auto const value = ::nlohmann::detail:: \ + is_detected_exact::value; \ + }; \ + } /* namespace detail2 */ \ + \ + template \ + struct would_call_std_##std_name : detail2::would_call_std_##std_name \ + { \ + } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_EXPLICIT +#else + #define JSON_EXPLICIT explicit +#endif + +#ifndef JSON_DISABLE_ENUM_SERIALIZATION + #define JSON_DISABLE_ENUM_SERIALIZATION 0 +#endif + +#ifndef JSON_USE_GLOBAL_UDLS + #define JSON_USE_GLOBAL_UDLS 1 +#endif + +#if JSON_HAS_THREE_WAY_COMPARISON + #include // partial_ordering +#endif + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/////////////////////////// +// JSON type enumeration // +/////////////////////////// + +/*! +@brief the JSON type enumeration + +This enumeration collects the different JSON types. It is internally used to +distinguish the stored values, and the functions @ref basic_json::is_null(), +@ref basic_json::is_object(), @ref basic_json::is_array(), +@ref basic_json::is_string(), @ref basic_json::is_boolean(), +@ref basic_json::is_number() (with @ref basic_json::is_number_integer(), +@ref basic_json::is_number_unsigned(), and @ref basic_json::is_number_float()), +@ref basic_json::is_discarded(), @ref basic_json::is_primitive(), and +@ref basic_json::is_structured() rely on it. + +@note There are three enumeration entries (number_integer, number_unsigned, and +number_float), because the library distinguishes these three types for numbers: +@ref basic_json::number_unsigned_t is used for unsigned integers, +@ref basic_json::number_integer_t is used for signed integers, and +@ref basic_json::number_float_t is used for floating-point numbers or to +approximate integers which do not fit in the limits of their respective type. + +@sa see @ref basic_json::basic_json(const value_t value_type) -- create a JSON +value with the default value for a given type + +@since version 1.0.0 +*/ +enum class value_t : std::uint8_t +{ + null, ///< null value + object, ///< object (unordered set of name/value pairs) + array, ///< array (ordered collection of values) + string, ///< string value + boolean, ///< boolean value + number_integer, ///< number value (signed integer) + number_unsigned, ///< number value (unsigned integer) + number_float, ///< number value (floating-point) + binary, ///< binary array (ordered collection of bytes) + discarded ///< discarded by the parser callback function +}; + +/*! +@brief comparison operator for JSON types + +Returns an ordering that is similar to Python: +- order: null < boolean < number < object < array < string < binary +- furthermore, each type is not smaller than itself +- discarded values are not comparable +- binary is represented as a b"" string in python and directly comparable to a + string; however, making a binary array directly comparable with a string would + be surprising behavior in a JSON file. + +@since version 1.0.0 +*/ +#if JSON_HAS_THREE_WAY_COMPARISON + inline std::partial_ordering operator<=>(const value_t lhs, const value_t rhs) noexcept // *NOPAD* +#else + inline bool operator<(const value_t lhs, const value_t rhs) noexcept +#endif +{ + static constexpr std::array order = {{ + 0 /* null */, 3 /* object */, 4 /* array */, 5 /* string */, + 1 /* boolean */, 2 /* integer */, 2 /* unsigned */, 2 /* float */, + 6 /* binary */ + } + }; + + const auto l_index = static_cast(lhs); + const auto r_index = static_cast(rhs); +#if JSON_HAS_THREE_WAY_COMPARISON + if (l_index < order.size() && r_index < order.size()) + { + return order[l_index] <=> order[r_index]; // *NOPAD* + } + return std::partial_ordering::unordered; +#else + return l_index < order.size() && r_index < order.size() && order[l_index] < order[r_index]; +#endif +} + +// GCC selects the built-in operator< over an operator rewritten from +// a user-defined spaceship operator +// Clang, MSVC, and ICC select the rewritten candidate +// (see GCC bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105200) +#if JSON_HAS_THREE_WAY_COMPARISON && defined(__GNUC__) +inline bool operator<(const value_t lhs, const value_t rhs) noexcept +{ + return std::is_lt(lhs <=> rhs); // *NOPAD* +} +#endif + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/*! +@brief replace all occurrences of a substring by another string + +@param[in,out] s the string to manipulate; changed so that all + occurrences of @a f are replaced with @a t +@param[in] f the substring to replace with @a t +@param[in] t the string to replace @a f + +@pre The search string @a f must not be empty. **This precondition is +enforced with an assertion.** + +@since version 2.0.0 +*/ +template +inline void replace_substring(StringType& s, const StringType& f, + const StringType& t) +{ + JSON_ASSERT(!f.empty()); + for (auto pos = s.find(f); // find first occurrence of f + pos != StringType::npos; // make sure f was found + s.replace(pos, f.size(), t), // replace with t, and + pos = s.find(f, pos + t.size())) // find next occurrence of f + {} +} + +/*! + * @brief string escaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to escape + * @return escaped string + * + * Note the order of escaping "~" to "~0" and "/" to "~1" is important. + */ +template +inline StringType escape(StringType s) +{ + replace_substring(s, StringType{"~"}, StringType{"~0"}); + replace_substring(s, StringType{"/"}, StringType{"~1"}); + return s; +} + +/*! + * @brief string unescaping as described in RFC 6901 (Sect. 4) + * @param[in] s string to unescape + * @return unescaped string + * + * Note the order of escaping "~1" to "/" and "~0" to "~" is important. + */ +template +static void unescape(StringType& s) +{ + replace_substring(s, StringType{"~1"}, StringType{"/"}); + replace_substring(s, StringType{"~0"}, StringType{"~"}); +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // size_t + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +/// struct to capture the start position of the current token +struct position_t +{ + /// the total number of characters read + std::size_t chars_read_total = 0; + /// the number of characters read in the current line + std::size_t chars_read_current_line = 0; + /// the number of lines read + std::size_t lines_read = 0; + + /// conversion to size_t to preserve SAX interface + constexpr operator size_t() const + { + return chars_read_total; + } +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-FileCopyrightText: 2018 The Abseil Authors +// SPDX-License-Identifier: MIT + + + +#include // array +#include // size_t +#include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type +#include // index_sequence, make_index_sequence, index_sequence_for + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +using uncvref_t = typename std::remove_cv::type>::type; + +#ifdef JSON_HAS_CPP_14 + +// the following utilities are natively available in C++14 +using std::enable_if_t; +using std::index_sequence; +using std::make_index_sequence; +using std::index_sequence_for; + +#else + +// alias templates to reduce boilerplate +template +using enable_if_t = typename std::enable_if::type; + +// The following code is taken from https://github.com/abseil/abseil-cpp/blob/10cb35e459f5ecca5b2ff107635da0bfa41011b4/absl/utility/utility.h +// which is part of Google Abseil (https://github.com/abseil/abseil-cpp), licensed under the Apache License 2.0. + +//// START OF CODE FROM GOOGLE ABSEIL + +// integer_sequence +// +// Class template representing a compile-time integer sequence. An instantiation +// of `integer_sequence` has a sequence of integers encoded in its +// type through its template arguments (which is a common need when +// working with C++11 variadic templates). `absl::integer_sequence` is designed +// to be a drop-in replacement for C++14's `std::integer_sequence`. +// +// Example: +// +// template< class T, T... Ints > +// void user_function(integer_sequence); +// +// int main() +// { +// // user_function's `T` will be deduced to `int` and `Ints...` +// // will be deduced to `0, 1, 2, 3, 4`. +// user_function(make_integer_sequence()); +// } +template +struct integer_sequence +{ + using value_type = T; + static constexpr std::size_t size() noexcept + { + return sizeof...(Ints); + } +}; + +// index_sequence +// +// A helper template for an `integer_sequence` of `size_t`, +// `absl::index_sequence` is designed to be a drop-in replacement for C++14's +// `std::index_sequence`. +template +using index_sequence = integer_sequence; + +namespace utility_internal +{ + +template +struct Extend; + +// Note that SeqSize == sizeof...(Ints). It's passed explicitly for efficiency. +template +struct Extend, SeqSize, 0> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)... >; +}; + +template +struct Extend, SeqSize, 1> +{ + using type = integer_sequence < T, Ints..., (Ints + SeqSize)..., 2 * SeqSize >; +}; + +// Recursion helper for 'make_integer_sequence'. +// 'Gen::type' is an alias for 'integer_sequence'. +template +struct Gen +{ + using type = + typename Extend < typename Gen < T, N / 2 >::type, N / 2, N % 2 >::type; +}; + +template +struct Gen +{ + using type = integer_sequence; +}; + +} // namespace utility_internal + +// Compile-time sequences of integers + +// make_integer_sequence +// +// This template alias is equivalent to +// `integer_sequence`, and is designed to be a drop-in +// replacement for C++14's `std::make_integer_sequence`. +template +using make_integer_sequence = typename utility_internal::Gen::type; + +// make_index_sequence +// +// This template alias is equivalent to `index_sequence<0, 1, ..., N-1>`, +// and is designed to be a drop-in replacement for C++14's +// `std::make_index_sequence`. +template +using make_index_sequence = make_integer_sequence; + +// index_sequence_for +// +// Converts a typename pack into an index sequence of the same length, and +// is designed to be a drop-in replacement for C++14's +// `std::index_sequence_for()` +template +using index_sequence_for = make_index_sequence; + +//// END OF CODE FROM GOOGLE ABSEIL + +#endif + +// dispatch utility (taken from ranges-v3) +template struct priority_tag : priority_tag < N - 1 > {}; +template<> struct priority_tag<0> {}; + +// taken from ranges-v3 +template +struct static_const +{ + static JSON_INLINE_VARIABLE constexpr T value{}; +}; + +#ifndef JSON_HAS_CPP_17 + template + constexpr T static_const::value; +#endif + +template +constexpr std::array make_array(Args&& ... args) +{ + return std::array {{static_cast(std::forward(args))...}}; +} + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // numeric_limits +#include // char_traits +#include // tuple +#include // false_type, is_constructible, is_integral, is_same, true_type +#include // declval + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +#include // random_access_iterator_tag + +// #include + +// #include + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN +namespace detail +{ + +template +struct iterator_types {}; + +template +struct iterator_types < + It, + void_t> +{ + using difference_type = typename It::difference_type; + using value_type = typename It::value_type; + using pointer = typename It::pointer; + using reference = typename It::reference; + using iterator_category = typename It::iterator_category; +}; + +// This is required as some compilers implement std::iterator_traits in a way that +// doesn't work with SFINAE. See https://github.com/nlohmann/json/issues/1341. +template +struct iterator_traits +{ +}; + +template +struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> + : iterator_types +{ +}; + +template +struct iterator_traits::value>> +{ + using iterator_category = std::random_access_iterator_tag; + using value_type = T; + using difference_type = ptrdiff_t; + using pointer = T*; + using reference = T&; +}; + +} // namespace detail +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(begin); + +NLOHMANN_JSON_NAMESPACE_END + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + + + +// #include + + +NLOHMANN_JSON_NAMESPACE_BEGIN + +NLOHMANN_CAN_CALL_STD_FUNC_IMPL(end); + +NLOHMANN_JSON_NAMESPACE_END + +// #include + +// #include + +// #include +// __ _____ _____ _____ +// __| | __| | | | JSON for Modern C++ +// | | |__ | | | | | | version 3.12.0 +// |_____|_____|_____|_|___| https://github.com/nlohmann/json +// +// SPDX-FileCopyrightText: 2013 - 2025 Niels Lohmann +// SPDX-License-Identifier: MIT + +#ifndef INCLUDE_NLOHMANN_JSON_FWD_HPP_ + #define INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + #include // int64_t, uint64_t + #include // map + #include // allocator + #include // string + #include // vector + + // #include + + + /*! + @brief namespace for Niels Lohmann + @see https://github.com/nlohmann + @since version 1.0.0 + */ + NLOHMANN_JSON_NAMESPACE_BEGIN + + /*! + @brief default JSONSerializer template argument + + This serializer ignores the template arguments and uses ADL + ([argument-dependent lookup](https://en.cppreference.com/w/cpp/language/adl)) + for serialization. + */ + template + struct adl_serializer; + + /// a class to store JSON values + /// @sa https://json.nlohmann.me/api/basic_json/ + template class ObjectType = + std::map, + template class ArrayType = std::vector, + class StringType = std::string, class BooleanType = bool, + class NumberIntegerType = std::int64_t, + class NumberUnsignedType = std::uint64_t, + class NumberFloatType = double, + template class AllocatorType = std::allocator, + template class JSONSerializer = + adl_serializer, + class BinaryType = std::vector, // cppcheck-suppress syntaxError + class CustomBaseClass = void> + class basic_json; + + /// @brief JSON Pointer defines a string syntax for identifying a specific value within a JSON document + /// @sa https://json.nlohmann.me/api/json_pointer/ + template + class json_pointer; + + /*! + @brief default specialization + @sa https://json.nlohmann.me/api/json/ + */ + using json = basic_json<>; + + /// @brief a minimal map-like container that preserves insertion order + /// @sa https://json.nlohmann.me/api/ordered_map/ + template + struct ordered_map; + + /// @brief specialization that maintains the insertion order of object keys + /// @sa https://json.nlohmann.me/api/ordered_json/ + using ordered_json = basic_json; + + NLOHMANN_JSON_NAMESPACE_END + +#endif // INCLUDE_NLOHMANN_JSON_FWD_HPP_ + + +NLOHMANN_JSON_NAMESPACE_BEGIN +/*! +@brief detail namespace with internal helper functions + +This namespace collects functions that should not be exposed, +implementations of some @ref basic_json methods, and meta-programming helpers. + +@since version 2.1.0 +*/ +namespace detail +{ + +///////////// +// helpers // +///////////// + +// Note to maintainers: +// +// Every trait in this file expects a non CV-qualified type. +// The only exceptions are in the 'aliases for detected' section +// (i.e. those of the form: decltype(T::member_function(std::declval()))) +// +// In this case, T has to be properly CV-qualified to constraint the function arguments +// (e.g. to_json(BasicJsonType&, const T&)) + +template struct is_basic_json : std::false_type {}; + +NLOHMANN_BASIC_JSON_TPL_DECLARATION +struct is_basic_json : std::true_type {}; + +// used by exceptions create() member functions +// true_type for pointer to possibly cv-qualified basic_json or std::nullptr_t +// false_type otherwise +template +struct is_basic_json_context : + std::integral_constant < bool, + is_basic_json::type>::type>::value + || std::is_same::value > +{}; + +////////////////////// +// json_ref helpers // +////////////////////// + +template +class json_ref; + +template +struct is_json_ref : std::false_type {}; + +template +struct is_json_ref> : std::true_type {}; + +////////////////////////// +// aliases for detected // +////////////////////////// + +template +using mapped_type_t = typename T::mapped_type; + +template +using key_type_t = typename T::key_type; + +template +using value_type_t = typename T::value_type; + +template +using difference_type_t = typename T::difference_type; + +template +using pointer_t = typename T::pointer; + +template +using reference_t = typename T::reference; + +template +using iterator_category_t = typename T::iterator_category; + +template +using to_json_function = decltype(T::to_json(std::declval()...)); + +template +using from_json_function = decltype(T::from_json(std::declval()...)); + +template +using get_template_function = decltype(std::declval().template get()); + +// trait checking if JSONSerializer::from_json(json const&, udt&) exists +template +struct has_from_json : std::false_type {}; + +// trait checking if j.get is valid +// use this trait instead of std::is_constructible or std::is_convertible, +// both rely on, or make use of implicit conversions, and thus fail when T +// has several constructors/operator= (see https://github.com/nlohmann/json/issues/958) +template +struct is_getable +{ + static constexpr bool value = is_detected::value; +}; + +template +struct has_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if JSONSerializer::from_json(json const&) exists +// this overload is used for non-default-constructible user-defined-types +template +struct has_non_default_from_json : std::false_type {}; + +template +struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +// This trait checks if BasicJsonType::json_serializer::to_json exists +// Do not evaluate the trait when T is a basic_json type, to avoid template instantiation infinite recursion. +template +struct has_to_json : std::false_type {}; + +template +struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json::value >> +{ + using serializer = typename BasicJsonType::template json_serializer; + + static constexpr bool value = + is_detected_exact::value; +}; + +template +using detect_key_compare = typename T::key_compare; + +template +struct has_key_compare : std::integral_constant::value> {}; + +// obtains the actual object key comparator +template +struct actual_object_comparator +{ + using object_t = typename BasicJsonType::object_t; + using object_comparator_t = typename BasicJsonType::default_object_comparator_t; + using type = typename std::conditional < has_key_compare::value, + typename object_t::key_compare, object_comparator_t>::type; +}; + +template +using actual_object_comparator_t = typename actual_object_comparator::type; + +///////////////// +// char_traits // +///////////////// + +// Primary template of char_traits calls std char_traits +template +struct char_traits : std::char_traits +{}; + +// Explicitly define char traits for unsigned char since it is not standard +template<> +struct char_traits : std::char_traits +{ + using char_type = unsigned char; + using int_type = uint64_t; + + // Redefine to_int_type function + static int_type to_int_type(char_type c) noexcept + { + return static_cast(c); + } + + static char_type to_char_type(int_type i) noexcept + { + return static_cast(i); + } + + static constexpr int_type eof() noexcept + { + return static_cast(std::char_traits::eof()); + } +}; + +// Explicitly define char traits for signed char since it is not standard +template<> +struct char_traits : std::char_traits +{ + using char_type = signed char; + using int_type = uint64_t; + + // Redefine to_int_type function + static int_type to_int_type(char_type c) noexcept + { + return static_cast(c); + } + + static char_type to_char_type(int_type i) noexcept + { + return static_cast(i); + } + + static constexpr int_type eof() noexcept + { + return static_cast(std::char_traits::eof()); + } +}; + +/////////////////// +// is_ functions // +/////////////////// + +// https://en.cppreference.com/w/cpp/types/conjunction +template struct conjunction : std::true_type { }; +template struct conjunction : B { }; +template +struct conjunction +: std::conditional(B::value), conjunction, B>::type {}; + +// https://en.cppreference.com/w/cpp/types/negation +template struct negation : std::integral_constant < bool, !B::value > { }; + +// Reimplementation of is_constructible and is_default_constructible, due to them being broken for +// std::pair and std::tuple until LWG 2367 fix (see https://cplusplus.github.io/LWG/lwg-defects.html#2367). +// This causes compile errors in e.g. clang 3.5 or gcc 4.9. +template +struct is_default_constructible : std::is_default_constructible {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction, is_default_constructible> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_default_constructible> + : conjunction...> {}; + +template +struct is_constructible : std::is_constructible {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_constructible> : is_default_constructible> {}; + +template +struct is_iterator_traits : std::false_type {}; + +template +struct is_iterator_traits> +{ + private: + using traits = iterator_traits; + + public: + static constexpr auto value = + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value && + is_detected::value; +}; + +template +struct is_range +{ + private: + using t_ref = typename std::add_lvalue_reference::type; + + using iterator = detected_t; + using sentinel = detected_t; + + // to be 100% correct, it should use https://en.cppreference.com/w/cpp/iterator/input_or_output_iterator + // and https://en.cppreference.com/w/cpp/iterator/sentinel_for + // but reimplementing these would be too much work, as a lot of other concepts are used underneath + static constexpr auto is_iterator_begin = + is_iterator_traits>::value; + + public: + static constexpr bool value = !std::is_same::value && !std::is_same::value && is_iterator_begin; +}; + +template +using iterator_t = enable_if_t::value, result_of_begin())>>; + +template +using range_value_t = value_type_t>>; + +// The following implementation of is_complete_type is taken from +// https://blogs.msdn.microsoft.com/vcblog/2015/12/02/partial-support-for-expression-sfinae-in-vs-2015-update-1/ +// and is written by Xiang Fan who agreed to using it in this library. + +template +struct is_complete_type : std::false_type {}; + +template +struct is_complete_type : std::true_type {}; + +template +struct is_compatible_object_type_impl : std::false_type {}; + +template +struct is_compatible_object_type_impl < + BasicJsonType, CompatibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + // macOS's is_constructible does not play well with nonesuch... + static constexpr bool value = + is_constructible::value && + is_constructible::value; +}; + +template +struct is_compatible_object_type + : is_compatible_object_type_impl {}; + +template +struct is_constructible_object_type_impl : std::false_type {}; + +template +struct is_constructible_object_type_impl < + BasicJsonType, ConstructibleObjectType, + enable_if_t < is_detected::value&& + is_detected::value >> +{ + using object_t = typename BasicJsonType::object_t; + + static constexpr bool value = + (is_default_constructible::value && + (std::is_move_assignable::value || + std::is_copy_assignable::value) && + (is_constructible::value && + std::is_same < + typename object_t::mapped_type, + typename ConstructibleObjectType::mapped_type >::value)) || + (has_from_json::value || + has_non_default_from_json < + BasicJsonType, + typename ConstructibleObjectType::mapped_type >::value); +}; + +template +struct is_constructible_object_type + : is_constructible_object_type_impl {}; + +template +struct is_compatible_string_type +{ + static constexpr auto value = + is_constructible::value; +}; + +template +struct is_constructible_string_type +{ + // launder type through decltype() to fix compilation failure on ICPC +#ifdef __INTEL_COMPILER + using laundered_type = decltype(std::declval()); +#else + using laundered_type = ConstructibleStringType; +#endif + + static constexpr auto value = + conjunction < + is_constructible, + is_detected_exact>::value; +}; + +template +struct is_compatible_array_type_impl : std::false_type {}; + +template +struct is_compatible_array_type_impl < + BasicJsonType, CompatibleArrayType, + enable_if_t < + is_detected::value&& + is_iterator_traits>>::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 + !std::is_same>::value >> +{ + static constexpr bool value = + is_constructible>::value; +}; + +template +struct is_compatible_array_type + : is_compatible_array_type_impl {}; + +template +struct is_constructible_array_type_impl : std::false_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t::value >> + : std::true_type {}; + +template +struct is_constructible_array_type_impl < + BasicJsonType, ConstructibleArrayType, + enable_if_t < !std::is_same::value&& + !is_compatible_string_type::value&& + is_default_constructible::value&& +(std::is_move_assignable::value || + std::is_copy_assignable::value)&& +is_detected::value&& +is_iterator_traits>>::value&& +is_detected::value&& +// special case for types like std::filesystem::path whose iterator's value_type are themselves +// c.f. https://github.com/nlohmann/json/pull/3073 +!std::is_same>::value&& +is_complete_type < +detected_t>::value >> +{ + using value_type = range_value_t; + + static constexpr bool value = + std::is_same::value || + has_from_json::value || + has_non_default_from_json < + BasicJsonType, + value_type >::value; +}; + +template +struct is_constructible_array_type + : is_constructible_array_type_impl {}; + +template +struct is_compatible_integer_type_impl : std::false_type {}; + +template +struct is_compatible_integer_type_impl < + RealIntegerType, CompatibleNumberIntegerType, + enable_if_t < std::is_integral::value&& + std::is_integral::value&& + !std::is_same::value >> +{ + // is there an assert somewhere on overflows? + using RealLimits = std::numeric_limits; + using CompatibleLimits = std::numeric_limits; + + static constexpr auto value = + is_constructible::value && + CompatibleLimits::is_integer && + RealLimits::is_signed == CompatibleLimits::is_signed; +}; + +template +struct is_compatible_integer_type + : is_compatible_integer_type_impl {}; + +template +struct is_compatible_type_impl: std::false_type {}; + +template +struct is_compatible_type_impl < + BasicJsonType, CompatibleType, + enable_if_t::value >> +{ + static constexpr bool value = + has_to_json::value; +}; + +template +struct is_compatible_type + : is_compatible_type_impl {}; + +template +struct is_constructible_tuple : std::false_type {}; + +template +struct is_constructible_tuple> : conjunction...> {}; + +template +struct is_json_iterator_of : std::false_type {}; + +template +struct is_json_iterator_of : std::true_type {}; + +template +struct is_json_iterator_of : std::true_type +{}; + +// checks if a given type T is a template specialization of Primary +template