diff --git a/.eslintignore b/.eslintignore
deleted file mode 100644
index 3515553..0000000
--- a/.eslintignore
+++ /dev/null
@@ -1,2 +0,0 @@
-build/
-tools/
diff --git a/.eslintrc.js b/.eslintrc.js
deleted file mode 100644
index ec4e99d..0000000
--- a/.eslintrc.js
+++ /dev/null
@@ -1,33 +0,0 @@
-module.exports = {
- "env": {
- "es6": true,
- "node": true,
- "mocha": true,
- "es2020": true
- },
- "globals": {
- "WebAssembly": true
- },
- "parserOptions": {
- "ecmaVersion": 2020
- },
- "extends": "eslint:recommended",
- "rules": {
- "indent": [
- "error",
- 4
- ],
- "linebreak-style": [
- "error",
- "unix"
- ],
- "quotes": [
- "error",
- "double"
- ],
- "semi": [
- "error",
- "always"
- ]
- }
-};
diff --git a/.gitattributes b/.gitattributes
index 736e7ee..6df4591 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -1,2 +1,11 @@
-# Autodetect text files
+# Normalize all text to LF in the repository and in every checkout,
+# regardless of the local core.autocrlf setting.
* text=auto eol=lf
+
+# Binary test fixtures and artifacts: never subject to EOL conversion.
+*.zkey -text
+*.ptau -text
+*.wtns -text
+*.r1cs -text
+*.wasm -text
+*.png -text
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 700be04..93a13c3 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -1,30 +1,36 @@
name: Continuous Integration
-on: [push, pull_request]
+on:
+ push:
+ branches:
+ - master
+ pull_request:
jobs:
test:
name: Test
- runs-on: ${{ matrix.os }}
+ timeout-minutes: 15
+ runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
- os: [ubuntu-latest, macos-latest, windows-latest]
- node-version: ["12", "14", "16", "18"]
+ node-version: [lts/*, lts/-1]
steps:
- name: Checkout project
- uses: actions/checkout@v2
+ uses: actions/checkout@v6
- name: Setup Node.js
- uses: actions/setup-node@v3
+ uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
- check-latest: true
- cache: 'npm'
+ cache: "npm"
- name: Install dependencies
run: npm ci
+ - name: Install Playwright dependencies
+ run: npx playwright install --with-deps chromium
+
- name: Run tests
run: npm test
diff --git a/.gitignore b/.gitignore
index 07d2049..7097acb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -66,3 +66,4 @@ typings/
tmp
.DS_Store
+.idea/
diff --git a/build/bls12381.wasm b/build/bls12381.wasm
index abd1727..0686aaa 100644
Binary files a/build/bls12381.wasm and b/build/bls12381.wasm differ
diff --git a/build/bls12381_wasm.js b/build/bls12381_wasm.js
index fe10531..d7d853b 100644
--- a/build/bls12381_wasm.js
+++ b/build/bls12381_wasm.js
@@ -1,18 +1,16 @@
-
- exports.code = "AGFzbQEAAAABlAESYAJ/fwBgAX8AYAF/AX9gAn9/AX9gA39/fwF/YAN/f38AYAN/fn8AYAJ/fgBgBH9/f38AYAV/f39/fwBgBH9/f38Bf2AHf39/f39/fwBgBn9/f39/fwBgCn9/f39/f39/f38AYAV/f39/fwF/YAd/f39/f39/AX9gCX9/f39/f39/fwF/YAt/f39/f39/f39/fwF/Ag8BA2VudgZtZW1vcnkCABkD0wLRAgABAgEDAwQEBQAABgcIBQIFBQAABQAAAAACAgABBQgJBQUFCAgICAACAAECAQMDBAQFAAAGBwgFAgUFAAAFAAAAAAICAAEFCAkFBQUICAgIAAIFAAACAgIBAQAAAAMDAwAABQUFAAAFBQUAAAAAAAICBQAFAAAAAAUFBQUFCgALCQoACwkICAMACAgCAAAJDAwFBQwACA0JCAICAQEABQUABQUAAAAAAwAIAgIJCAACAgIBAQAAAAMDAwAABQUFAAAFBQUAAAAAAAICBQAFAAAAAAUFBQUFCgALCQoACwkICAUDAAgIAgAACQwMBQUMBQMACAgCAAAJDAwFBQwFBQkJCQkJAAICAQEABQAFBQACAAADAAgCCQgAAgIBAQAFBQAFBQAAAAADAAgCAgkIAAIFCAkFAAAAAAAAAAAAAAICAgIFAAAABQAAAAAEDg8QEQUH/Sa6AglpbnRxX2NvcHkAAAlpbnRxX3plcm8AAQhpbnRxX29uZQADC2ludHFfaXNaZXJvAAIHaW50cV9lcQAECGludHFfZ3RlAAUIaW50cV9hZGQABghpbnRxX3N1YgAHCGludHFfbXVsAAgLaW50cV9zcXVhcmUACQ5pbnRxX3NxdWFyZU9sZAAKCGludHFfZGl2AA0PaW50cV9pbnZlcnNlTW9kAA4IZjFtX2NvcHkAAAhmMW1femVybwABCmYxbV9pc1plcm8AAgZmMW1fZXEABAdmMW1fYWRkABAHZjFtX3N1YgARB2YxbV9uZWcAEg5mMW1faXNOZWdhdGl2ZQAZCWYxbV9pc09uZQAPCGYxbV9zaWduABoLZjFtX21SZWR1Y3QAEwdmMW1fbXVsABQKZjFtX3NxdWFyZQAVDWYxbV9zcXVhcmVPbGQAFhJmMW1fZnJvbU1vbnRnb21lcnkAGBBmMW1fdG9Nb250Z29tZXJ5ABcLZjFtX2ludmVyc2UAGwdmMW1fb25lABwIZjFtX2xvYWQAHQ9mMW1fdGltZXNTY2FsYXIAHgdmMW1fZXhwACYQZjFtX2JhdGNoSW52ZXJzZQAfCGYxbV9zcXJ0ACcMZjFtX2lzU3F1YXJlACgVZjFtX2JhdGNoVG9Nb250Z29tZXJ5ACAXZjFtX2JhdGNoRnJvbU1vbnRnb21lcnkAIQlpbnRyX2NvcHkAKQlpbnRyX3plcm8AKghpbnRyX29uZQAsC2ludHJfaXNaZXJvACsHaW50cl9lcQAtCGludHJfZ3RlAC4IaW50cl9hZGQALwhpbnRyX3N1YgAwCGludHJfbXVsADELaW50cl9zcXVhcmUAMg5pbnRyX3NxdWFyZU9sZAAzCGludHJfZGl2ADYPaW50cl9pbnZlcnNlTW9kADcIZnJtX2NvcHkAKQhmcm1femVybwAqCmZybV9pc1plcm8AKwZmcm1fZXEALQdmcm1fYWRkADkHZnJtX3N1YgA6B2ZybV9uZWcAOw5mcm1faXNOZWdhdGl2ZQBCCWZybV9pc09uZQA4CGZybV9zaWduAEMLZnJtX21SZWR1Y3QAPAdmcm1fbXVsAD0KZnJtX3NxdWFyZQA+DWZybV9zcXVhcmVPbGQAPxJmcm1fZnJvbU1vbnRnb21lcnkAQRBmcm1fdG9Nb250Z29tZXJ5AEALZnJtX2ludmVyc2UARAdmcm1fb25lAEUIZnJtX2xvYWQARg9mcm1fdGltZXNTY2FsYXIARwdmcm1fZXhwAE8QZnJtX2JhdGNoSW52ZXJzZQBICGZybV9zcXJ0AFAMZnJtX2lzU3F1YXJlAFEVZnJtX2JhdGNoVG9Nb250Z29tZXJ5AEkXZnJtX2JhdGNoRnJvbU1vbnRnb21lcnkASgZmcl9hZGQAOQZmcl9zdWIAOgZmcl9uZWcAOwZmcl9tdWwAUglmcl9zcXVhcmUAUwpmcl9pbnZlcnNlAFQNZnJfaXNOZWdhdGl2ZQBVB2ZyX2NvcHkAKQdmcl96ZXJvACoGZnJfb25lAEUJZnJfaXNaZXJvACsFZnJfZXEALQxnMW1fbXVsdGlleHAAgAESZzFtX211bHRpZXhwX2NodW5rAH8SZzFtX211bHRpZXhwQWZmaW5lAIQBGGcxbV9tdWx0aWV4cEFmZmluZV9jaHVuawCDAQpnMW1faXNaZXJvAFcQZzFtX2lzWmVyb0FmZmluZQBWBmcxbV9lcQBfC2cxbV9lcU1peGVkAF4MZzFtX2VxQWZmaW5lAF0IZzFtX2NvcHkAWw5nMW1fY29weUFmZmluZQBaCGcxbV96ZXJvAFkOZzFtX3plcm9BZmZpbmUAWApnMW1fZG91YmxlAGEQZzFtX2RvdWJsZUFmZmluZQBgB2cxbV9hZGQAZAxnMW1fYWRkTWl4ZWQAYw1nMW1fYWRkQWZmaW5lAGIHZzFtX25lZwBmDWcxbV9uZWdBZmZpbmUAZQdnMW1fc3ViAGkMZzFtX3N1Yk1peGVkAGgNZzFtX3N1YkFmZmluZQBnEmcxbV9mcm9tTW9udGdvbWVyeQBrGGcxbV9mcm9tTW9udGdvbWVyeUFmZmluZQBqEGcxbV90b01vbnRnb21lcnkAbRZnMW1fdG9Nb250Z29tZXJ5QWZmaW5lAGwPZzFtX3RpbWVzU2NhbGFyAIUBFWcxbV90aW1lc1NjYWxhckFmZmluZQCGAQ1nMW1fbm9ybWFsaXplAHIKZzFtX0xFTXRvVQB0CmcxbV9MRU10b0MAdQpnMW1fVXRvTEVNAHYKZzFtX0N0b0xFTQB3D2cxbV9iYXRjaExFTXRvVQB4D2cxbV9iYXRjaExFTXRvQwB5D2cxbV9iYXRjaFV0b0xFTQB6D2cxbV9iYXRjaEN0b0xFTQB7DGcxbV90b0FmZmluZQBuDmcxbV90b0phY29iaWFuAFwRZzFtX2JhdGNoVG9BZmZpbmUAcRNnMW1fYmF0Y2hUb0phY29iaWFuAHwLZzFtX2luQ3VydmUAcBFnMW1faW5DdXJ2ZUFmZmluZQBvB2ZybV9mZnQAjAEIZnJtX2lmZnQAjQEKZnJtX3Jhd2ZmdACKAQtmcm1fZmZ0Sm9pbgCOAQ5mcm1fZmZ0Sm9pbkV4dACPARFmcm1fZmZ0Sm9pbkV4dEludgCQAQpmcm1fZmZ0TWl4AJEBDGZybV9mZnRGaW5hbACSAR1mcm1fcHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvbgCTAQhwb2xfemVybwCUAQ9wb2xfY29uc3RydWN0TEMAlQEMcWFwX2J1aWxkQUJDAJYBC3FhcF9qb2luQUJDAJcBDHFhcF9iYXRjaEFkZACYAQpmMm1faXNaZXJvAJkBCWYybV9pc09uZQCaAQhmMm1femVybwCbAQdmMm1fb25lAJwBCGYybV9jb3B5AJ0BB2YybV9tdWwAngEIZjJtX211bDEAnwEKZjJtX3NxdWFyZQCgAQdmMm1fYWRkAKEBB2YybV9zdWIAogEHZjJtX25lZwCjAQhmMm1fc2lnbgCqAQ1mMm1fY29uanVnYXRlAKQBEmYybV9mcm9tTW9udGdvbWVyeQCmARBmMm1fdG9Nb250Z29tZXJ5AKUBBmYybV9lcQCnAQtmMm1faW52ZXJzZQCoAQdmMm1fZXhwAK0BD2YybV90aW1lc1NjYWxhcgCpARBmMm1fYmF0Y2hJbnZlcnNlAKwBCGYybV9zcXJ0AK4BDGYybV9pc1NxdWFyZQCvAQ5mMm1faXNOZWdhdGl2ZQCrAQxnMm1fbXVsdGlleHAA2gESZzJtX211bHRpZXhwX2NodW5rANkBEmcybV9tdWx0aWV4cEFmZmluZQDeARhnMm1fbXVsdGlleHBBZmZpbmVfY2h1bmsA3QEKZzJtX2lzWmVybwCxARBnMm1faXNaZXJvQWZmaW5lALABBmcybV9lcQC5AQtnMm1fZXFNaXhlZAC4AQxnMm1fZXFBZmZpbmUAtwEIZzJtX2NvcHkAtQEOZzJtX2NvcHlBZmZpbmUAtAEIZzJtX3plcm8AswEOZzJtX3plcm9BZmZpbmUAsgEKZzJtX2RvdWJsZQC7ARBnMm1fZG91YmxlQWZmaW5lALoBB2cybV9hZGQAvgEMZzJtX2FkZE1peGVkAL0BDWcybV9hZGRBZmZpbmUAvAEHZzJtX25lZwDAAQ1nMm1fbmVnQWZmaW5lAL8BB2cybV9zdWIAwwEMZzJtX3N1Yk1peGVkAMIBDWcybV9zdWJBZmZpbmUAwQESZzJtX2Zyb21Nb250Z29tZXJ5AMUBGGcybV9mcm9tTW9udGdvbWVyeUFmZmluZQDEARBnMm1fdG9Nb250Z29tZXJ5AMcBFmcybV90b01vbnRnb21lcnlBZmZpbmUAxgEPZzJtX3RpbWVzU2NhbGFyAN8BFWcybV90aW1lc1NjYWxhckFmZmluZQDgAQ1nMm1fbm9ybWFsaXplAMwBCmcybV9MRU10b1UAzgEKZzJtX0xFTXRvQwDPAQpnMm1fVXRvTEVNANABCmcybV9DdG9MRU0A0QEPZzJtX2JhdGNoTEVNdG9VANIBD2cybV9iYXRjaExFTXRvQwDTAQ9nMm1fYmF0Y2hVdG9MRU0A1AEPZzJtX2JhdGNoQ3RvTEVNANUBDGcybV90b0FmZmluZQDIAQ5nMm1fdG9KYWNvYmlhbgC2ARFnMm1fYmF0Y2hUb0FmZmluZQDLARNnMm1fYmF0Y2hUb0phY29iaWFuANYBC2cybV9pbkN1cnZlAMoBEWcybV9pbkN1cnZlQWZmaW5lAMkBC2cxbV90aW1lc0ZyAOEBB2cxbV9mZnQA5wEIZzFtX2lmZnQA6AEKZzFtX3Jhd2ZmdADlAQtnMW1fZmZ0Sm9pbgDpAQ5nMW1fZmZ0Sm9pbkV4dADqARFnMW1fZmZ0Sm9pbkV4dEludgDrAQpnMW1fZmZ0TWl4AOwBDGcxbV9mZnRGaW5hbADtAR1nMW1fcHJlcGFyZUxhZ3JhbmdlRXZhbHVhdGlvbgDuAQtnMm1fdGltZXNGcgDvAQdnMm1fZmZ0APUBCGcybV9pZmZ0APYBCmcybV9yYXdmZnQA8wELZzJtX2ZmdEpvaW4A9wEOZzJtX2ZmdEpvaW5FeHQA+AERZzJtX2ZmdEpvaW5FeHRJbnYA+QEKZzJtX2ZmdE1peAD6AQxnMm1fZmZ0RmluYWwA+wEdZzJtX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24A/AERZzFtX3RpbWVzRnJBZmZpbmUA/QERZzJtX3RpbWVzRnJBZmZpbmUA/gERZnJtX2JhdGNoQXBwbHlLZXkA/wERZzFtX2JhdGNoQXBwbHlLZXkAgAIWZzFtX2JhdGNoQXBwbHlLZXlNaXhlZACBAhFnMm1fYmF0Y2hBcHBseUtleQCCAhZnMm1fYmF0Y2hBcHBseUtleU1peGVkAIMCCmY2bV9pc1plcm8AhQIJZjZtX2lzT25lAIYCCGY2bV96ZXJvAIcCB2Y2bV9vbmUAiAIIZjZtX2NvcHkAiQIHZjZtX211bACKAgpmNm1fc3F1YXJlAIsCB2Y2bV9hZGQAjAIHZjZtX3N1YgCNAgdmNm1fbmVnAI4CCGY2bV9zaWduAI8CEmY2bV9mcm9tTW9udGdvbWVyeQCRAhBmNm1fdG9Nb250Z29tZXJ5AJACBmY2bV9lcQCSAgtmNm1faW52ZXJzZQCTAgdmNm1fZXhwAJcCD2Y2bV90aW1lc1NjYWxhcgCUAhBmNm1fYmF0Y2hJbnZlcnNlAJYCDmY2bV9pc05lZ2F0aXZlAJUCCmZ0bV9pc1plcm8AmQIJZnRtX2lzT25lAJoCCGZ0bV96ZXJvAJsCB2Z0bV9vbmUAnAIIZnRtX2NvcHkAnQIHZnRtX211bACeAghmdG1fbXVsMQCfAgpmdG1fc3F1YXJlAKACB2Z0bV9hZGQAoQIHZnRtX3N1YgCiAgdmdG1fbmVnAKMCCGZ0bV9zaWduAKoCDWZ0bV9jb25qdWdhdGUApAISZnRtX2Zyb21Nb250Z29tZXJ5AKYCEGZ0bV90b01vbnRnb21lcnkApQIGZnRtX2VxAKcCC2Z0bV9pbnZlcnNlAKgCB2Z0bV9leHAArQIPZnRtX3RpbWVzU2NhbGFyAKkCEGZ0bV9iYXRjaEludmVyc2UArAIIZnRtX3NxcnQArgIMZnRtX2lzU3F1YXJlAK8CDmZ0bV9pc05lZ2F0aXZlAKsCEWZ0bV9mcm9iZW5pdXNNYXAwALQCEWZ0bV9mcm9iZW5pdXNNYXAxALUCEWZ0bV9mcm9iZW5pdXNNYXAyALYCEWZ0bV9mcm9iZW5pdXNNYXAzALcCEWZ0bV9mcm9iZW5pdXNNYXA0ALgCEWZ0bV9mcm9iZW5pdXNNYXA1ALkCEWZ0bV9mcm9iZW5pdXNNYXA2ALoCEWZ0bV9mcm9iZW5pdXNNYXA3ALsCEWZ0bV9mcm9iZW5pdXNNYXA4ALwCEWZ0bV9mcm9iZW5pdXNNYXA5AL0CE2JsczEyMzgxX3BhaXJpbmdFcTEAywITYmxzMTIzODFfcGFpcmluZ0VxMgDMAhNibHMxMjM4MV9wYWlyaW5nRXEzAM0CE2JsczEyMzgxX3BhaXJpbmdFcTQAzgITYmxzMTIzODFfcGFpcmluZ0VxNQDPAhBibHMxMjM4MV9wYWlyaW5nANACEmJsczEyMzgxX3ByZXBhcmVHMQDEAhJibHMxMjM4MV9wcmVwYXJlRzIAxQITYmxzMTIzODFfbWlsbGVyTG9vcADGAhxibHMxMjM4MV9maW5hbEV4cG9uZW50aWF0aW9uAMoCH2JsczEyMzgxX2ZpbmFsRXhwb25lbnRpYXRpb25PbGQAxwIaYmxzMTIzODFfX2N5Y2xvdG9taWNTcXVhcmUAyAIaYmxzMTIzODFfX2N5Y2xvdG9taWNFeHBfdzAAyQIIZjZtX211bDEAsAIJZjZtX211bDAxALECCmZ0bV9tdWwwMTQAsgIRZzFtX2luR3JvdXBBZmZpbmUAvgILZzFtX2luR3JvdXAAvwIRZzJtX2luR3JvdXBBZmZpbmUAwAILZzJtX2luR3JvdXAAwQIKwJUF0QI+ACABIAApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggASAAKQMgNwMgIAEgACkDKDcDKAssACAAQgA3AwAgAEIANwMIIABCADcDECAAQgA3AxggAEIANwMgIABCADcDKAtNACAAKQMoUARAIAApAyBQBEAgACkDGFAEQCAAKQMQUARAIAApAwhQBEAgACkDAFAPBUEADwsFQQAPCwVBAA8LBUEADwsFQQAPC0EADwssACAAQgE3AwAgAEIANwMIIABCADcDECAAQgA3AxggAEIANwMgIABCADcDKAtrACAAKQMoIAEpAyhRBEAgACkDICABKQMgUQRAIAApAxggASkDGFEEQCAAKQMQIAEpAxBRBEAgACkDCCABKQMIUQRAIAApAwAgASkDAFEPBUEADwsFQQAPCwVBAA8LBUEADwsFQQAPC0EADwvFAQAgACkDKCABKQMoVARAQQAPBSAAKQMoIAEpAyhWBEBBAQ8FIAApAyAgASkDIFQEQEEADwUgACkDICABKQMgVgRAQQEPBSAAKQMYIAEpAxhUBEBBAA8FIAApAxggASkDGFYEQEEBDwUgACkDECABKQMQVARAQQAPBSAAKQMQIAEpAxBWBEBBAQ8FIAApAwggASkDCFQEQEEADwUgACkDCCABKQMIVgRAQQEPBSAAKQMAIAEpAwBaDwsLCwsLCwsLCwtBAA8LvAIBAX4gADUCACABNQIAfCEDIAIgAz4CACAANQIEIAE1AgR8IANCIIh8IQMgAiADPgIEIAA1AgggATUCCHwgA0IgiHwhAyACIAM+AgggADUCDCABNQIMfCADQiCIfCEDIAIgAz4CDCAANQIQIAE1AhB8IANCIIh8IQMgAiADPgIQIAA1AhQgATUCFHwgA0IgiHwhAyACIAM+AhQgADUCGCABNQIYfCADQiCIfCEDIAIgAz4CGCAANQIcIAE1Ahx8IANCIIh8IQMgAiADPgIcIAA1AiAgATUCIHwgA0IgiHwhAyACIAM+AiAgADUCJCABNQIkfCADQiCIfCEDIAIgAz4CJCAANQIoIAE1Aih8IANCIIh8IQMgAiADPgIoIAA1AiwgATUCLHwgA0IgiHwhAyACIAM+AiwgA0IgiKcLkAMBAX4gADUCACABNQIAfSEDIAIgA0L/////D4M+AgAgADUCBCABNQIEfSADQiCHfCEDIAIgA0L/////D4M+AgQgADUCCCABNQIIfSADQiCHfCEDIAIgA0L/////D4M+AgggADUCDCABNQIMfSADQiCHfCEDIAIgA0L/////D4M+AgwgADUCECABNQIQfSADQiCHfCEDIAIgA0L/////D4M+AhAgADUCFCABNQIUfSADQiCHfCEDIAIgA0L/////D4M+AhQgADUCGCABNQIYfSADQiCHfCEDIAIgA0L/////D4M+AhggADUCHCABNQIcfSADQiCHfCEDIAIgA0L/////D4M+AhwgADUCICABNQIgfSADQiCHfCEDIAIgA0L/////D4M+AiAgADUCJCABNQIkfSADQiCHfCEDIAIgA0L/////D4M+AiQgADUCKCABNQIofSADQiCHfCEDIAIgA0L/////D4M+AiggADUCLCABNQIsfSADQiCHfCEDIAIgA0L/////D4M+AiwgA0Igh6cLpyIaAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfiADQv////8PgyAANQIAIgUgATUCACIGfnwhAyAEIANCIIh8IQQgAiADPgIAIARCIIghAyAEQv////8PgyAFIAE1AgQiCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgQiByAGfnwhBCADIARCIIh8IQMgAiAEPgIEIANCIIghBCADQv////8PgyAFIAE1AggiCn58IQMgBCADQiCIfCEEIANC/////w+DIAcgCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AggiCSAGfnwhAyAEIANCIIh8IQQgAiADPgIIIARCIIghAyAEQv////8PgyAFIAE1AgwiDH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgCn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgwiCyAGfnwhBCADIARCIIh8IQMgAiAEPgIMIANCIIghBCADQv////8PgyAFIAE1AhAiDn58IQMgBCADQiCIfCEEIANC/////w+DIAcgDH58IQMgBCADQiCIfCEEIANC/////w+DIAkgCn58IQMgBCADQiCIfCEEIANC/////w+DIAsgCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AhAiDSAGfnwhAyAEIANCIIh8IQQgAiADPgIQIARCIIghAyAEQv////8PgyAFIAE1AhQiEH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgDn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgDH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgCn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhQiDyAGfnwhBCADIARCIIh8IQMgAiAEPgIUIANCIIghBCADQv////8PgyAFIAE1AhgiEn58IQMgBCADQiCIfCEEIANC/////w+DIAcgEH58IQMgBCADQiCIfCEEIANC/////w+DIAkgDn58IQMgBCADQiCIfCEEIANC/////w+DIAsgDH58IQMgBCADQiCIfCEEIANC/////w+DIA0gCn58IQMgBCADQiCIfCEEIANC/////w+DIA8gCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AhgiESAGfnwhAyAEIANCIIh8IQQgAiADPgIYIARCIIghAyAEQv////8PgyAFIAE1AhwiFH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgEn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgEH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgDn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gDH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gCn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhwiEyAGfnwhBCADIARCIIh8IQMgAiAEPgIcIANCIIghBCADQv////8PgyAFIAE1AiAiFn58IQMgBCADQiCIfCEEIANC/////w+DIAcgFH58IQMgBCADQiCIfCEEIANC/////w+DIAkgEn58IQMgBCADQiCIfCEEIANC/////w+DIAsgEH58IQMgBCADQiCIfCEEIANC/////w+DIA0gDn58IQMgBCADQiCIfCEEIANC/////w+DIA8gDH58IQMgBCADQiCIfCEEIANC/////w+DIBEgCn58IQMgBCADQiCIfCEEIANC/////w+DIBMgCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AiAiFSAGfnwhAyAEIANCIIh8IQQgAiADPgIgIARCIIghAyAEQv////8PgyAFIAE1AiQiGH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgFn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgFH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgEn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gEH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gDn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgDH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgCn58IQQgAyAEQiCIfCEDIARC/////w+DIBUgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AiQiFyAGfnwhBCADIARCIIh8IQMgAiAEPgIkIANCIIghBCADQv////8PgyAFIAE1AigiGn58IQMgBCADQiCIfCEEIANC/////w+DIAcgGH58IQMgBCADQiCIfCEEIANC/////w+DIAkgFn58IQMgBCADQiCIfCEEIANC/////w+DIAsgFH58IQMgBCADQiCIfCEEIANC/////w+DIA0gEn58IQMgBCADQiCIfCEEIANC/////w+DIA8gEH58IQMgBCADQiCIfCEEIANC/////w+DIBEgDn58IQMgBCADQiCIfCEEIANC/////w+DIBMgDH58IQMgBCADQiCIfCEEIANC/////w+DIBUgCn58IQMgBCADQiCIfCEEIANC/////w+DIBcgCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AigiGSAGfnwhAyAEIANCIIh8IQQgAiADPgIoIARCIIghAyAEQv////8PgyAFIAE1AiwiHH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgGn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgGH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgFn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gFH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gEn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgEH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgDn58IQQgAyAEQiCIfCEDIARC/////w+DIBUgDH58IQQgAyAEQiCIfCEDIARC/////w+DIBcgCn58IQQgAyAEQiCIfCEDIARC/////w+DIBkgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AiwiGyAGfnwhBCADIARCIIh8IQMgAiAEPgIsIANCIIghBCADQv////8PgyAHIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIBp+fCEDIAQgA0IgiHwhBCADQv////8PgyALIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyANIBZ+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyARIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyATIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyAXIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyAZIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyAbIAh+fCEDIAQgA0IgiHwhBCACIAM+AjAgBEIgiCEDIARC/////w+DIAkgHH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgGn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gGH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gFn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgFH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgEn58IQQgAyAEQiCIfCEDIARC/////w+DIBUgEH58IQQgAyAEQiCIfCEDIARC/////w+DIBcgDn58IQQgAyAEQiCIfCEDIARC/////w+DIBkgDH58IQQgAyAEQiCIfCEDIARC/////w+DIBsgCn58IQQgAyAEQiCIfCEDIAIgBD4CNCADQiCIIQQgA0L/////D4MgCyAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAafnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAWfnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSASfnwhAyAEIANCIIh8IQQgA0L/////D4MgFyAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgGyAMfnwhAyAEIANCIIh8IQQgAiADPgI4IARCIIghAyAEQv////8PgyANIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIBp+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIBZ+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAXIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAbIA5+fCEEIAMgBEIgiHwhAyACIAQ+AjwgA0IgiCEEIANC/////w+DIA8gHH58IQMgBCADQiCIfCEEIANC/////w+DIBEgGn58IQMgBCADQiCIfCEEIANC/////w+DIBMgGH58IQMgBCADQiCIfCEEIANC/////w+DIBUgFn58IQMgBCADQiCIfCEEIANC/////w+DIBcgFH58IQMgBCADQiCIfCEEIANC/////w+DIBkgEn58IQMgBCADQiCIfCEEIANC/////w+DIBsgEH58IQMgBCADQiCIfCEEIAIgAz4CQCAEQiCIIQMgBEL/////D4MgESAcfnwhBCADIARCIIh8IQMgBEL/////D4MgEyAafnwhBCADIARCIIh8IQMgBEL/////D4MgFSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgFyAWfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgGyASfnwhBCADIARCIIh8IQMgAiAEPgJEIANCIIghBCADQv////8PgyATIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIBp+fCEDIAQgA0IgiHwhBCADQv////8PgyAXIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyAZIBZ+fCEDIAQgA0IgiHwhBCADQv////8PgyAbIBR+fCEDIAQgA0IgiHwhBCACIAM+AkggBEIgiCEDIARC/////w+DIBUgHH58IQQgAyAEQiCIfCEDIARC/////w+DIBcgGn58IQQgAyAEQiCIfCEDIARC/////w+DIBkgGH58IQQgAyAEQiCIfCEDIARC/////w+DIBsgFn58IQQgAyAEQiCIfCEDIAIgBD4CTCADQiCIIQQgA0L/////D4MgFyAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAafnwhAyAEIANCIIh8IQQgA0L/////D4MgGyAYfnwhAyAEIANCIIh8IQQgAiADPgJQIARCIIghAyAEQv////8PgyAZIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAbIBp+fCEEIAMgBEIgiHwhAyACIAQ+AlQgA0IgiCEEIANC/////w+DIBsgHH58IQMgBCADQiCIfCEEIAIgAz4CWCAEQiCIIQMgAiAEPgJcC84gEAF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+QgAhAkIAIQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgADUCACIGIAZ+fCECIAMgAkIgiHwhAyABIAI+AgAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCBCIHfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CBCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIIIgh+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAHIAd+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIIIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AgwiCX58IQIgAyACQiCIfCEDIAJC/////w+DIAcgCH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AgwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCECIKfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAJfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCCAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CECADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIUIgt+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAp+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIUIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhgiDH58IQIgAyACQiCIfCEDIAJC/////w+DIAcgC358IQIgAyACQiCIfCEDIAJC/////w+DIAggCn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAkgCX58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCHCINfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCALfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSAKfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CHCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIgIg5+fCECIAMgAkIgiHwhAyACQv////8PgyAHIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAJIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAKIAp+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIgIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AiQiD358IQIgAyACQiCIfCEDIAJC/////w+DIAcgDn58IQIgAyACQiCIfCEDIAJC/////w+DIAggDX58IQIgAyACQiCIfCEDIAJC/////w+DIAkgDH58IQIgAyACQiCIfCEDIAJC/////w+DIAogC358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCKCIQfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAPfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAMfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCyALfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CKCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIsIhF+fCECIAMgAkIgiHwhAyACQv////8PgyAHIBB+fCECIAMgAkIgiHwhAyACQv////8PgyAIIA9+fCECIAMgAkIgiHwhAyACQv////8PgyAJIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAKIA1+fCECIAMgAkIgiHwhAyACQv////8PgyALIAx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIsIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAIIBB+fCECIAMgAkIgiHwhAyACQv////8PgyAJIA9+fCECIAMgAkIgiHwhAyACQv////8PgyAKIA5+fCECIAMgAkIgiHwhAyACQv////8PgyALIA1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAMIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIwIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAIIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAJIBB+fCECIAMgAkIgiHwhAyACQv////8PgyAKIA9+fCECIAMgAkIgiHwhAyACQv////8PgyALIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAMIA1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgI0IAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAJIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBB+fCECIAMgAkIgiHwhAyACQv////8PgyALIA9+fCECIAMgAkIgiHwhAyACQv////8PgyAMIA5+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyANIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgI4IAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAKIBF+fCECIAMgAkIgiHwhAyACQv////8PgyALIBB+fCECIAMgAkIgiHwhAyACQv////8PgyAMIA9+fCECIAMgAkIgiHwhAyACQv////8PgyANIA5+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgI8IAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyALIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAMIBB+fCECIAMgAkIgiHwhAyACQv////8PgyANIA9+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAOIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgJAIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAMIBF+fCECIAMgAkIgiHwhAyACQv////8PgyANIBB+fCECIAMgAkIgiHwhAyACQv////8PgyAOIA9+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgJEIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyANIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAOIBB+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAPIA9+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgJIIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAOIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBB+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgJMIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAPIBF+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAQIBB+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgJQIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAQIBF+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgJUIAMhBCAEQiCIIQVCACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyARIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8P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UCAANQJUIANCIIh8QcgFNQIsIAR+fCEDIAAgAz4CVEH4CCADQiCIPgIoQgAhAyAANQIsIAJ+Qv////8PgyEEIAA1AiwgA0IgiHxByAU1AgAgBH58IQMgACADPgIsIAA1AjAgA0IgiHxByAU1AgQgBH58IQMgACADPgIwIAA1AjQgA0IgiHxByAU1AgggBH58IQMgACADPgI0IAA1AjggA0IgiHxByAU1AgwgBH58IQMgACADPgI4IAA1AjwgA0IgiHxByAU1AhAgBH58IQMgACADPgI8IAA1AkAgA0IgiHxByAU1AhQgBH58IQMgACADPgJAIAA1AkQgA0IgiHxByAU1AhggBH58IQMgACADPgJEIAA1AkggA0IgiHxByAU1AhwgBH58IQMgACADPgJIIAA1AkwgA0IgiHxByAU1AiAgBH58IQMgACADPgJMIAA1AlAgA0IgiHxByAU1AiQgBH58IQMgACADPgJQIAA1AlQgA0IgiHxByAU1AiggBH58IQMgACADPgJUIAA1AlggA0IgiHxByAU1AiwgBH58IQMgACADPgJYQfgIIANCIIg+AixB+AggAEEwaiABEBALpkMzAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+Qv3/8/8PIQUgA0L/////D4MgADUCACIGIAE1AgAiB358IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEIIANC/////w+DQQA1AsgFIgkgCH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AgQiC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgQiCiAHfnwhBCADIARCIIh8IQMgBEL/////D4NBADUCzAUiDSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DIQwgBEL/////D4MgCSAMfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAYgATUCCCIPfnwhAyAEIANCIIh8IQQgA0L/////D4MgCiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCCCIOIAd+fCEDIAQgA0IgiHwhBCADQv////8PgyANIAx+fCEDIAQgA0IgiHwhBCADQv////8Pg0EANQLQBSIRIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAFfkL/////D4MhECADQv////8PgyAJIBB+fCEDIAQgA0IgiHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIMIhN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAKIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAOIAt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIMIhIgB358IQQgAyAEQiCIfCEDIARC/////w+DIA0gEH58IQQgAyAEQiCIfCEDIARC/////w+DIBEgDH58IQQgAyAEQiCIfCEDIARC/////w+DQQA1AtQFIhUgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEUIARC/////w+DIAkgFH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAGIAE1AhAiF358IQMgBCADQiCIfCEEIANC/////w+DIAogE358IQMgBCADQiCIfCEEIANC/////w+DIA4gD358IQMgBCADQiCIfCEEIANC/////w+DIBIgC358IQMgBCADQiCIfCEEIANC/////w+DIAA1AhAiFiAHfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAMfnwhAyAEIANCIIh8IQQgA0L/////D4NBADUC2AUiGSAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DIRggA0L/////D4MgCSAYfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCFCIbfnwhBCADIARCIIh8IQMgBEL/////D4MgCiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgDiATfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgFiALfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCFCIaIAd+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIAx+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQLcBSIdIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhHCAEQv////8PgyAJIBx+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgBiABNQIYIh9+fCEDIAQgA0IgiHwhBCADQv////8PgyAKIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAOIBd+fCEDIAQgA0IgiHwhBCADQv////8PgyASIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAWIA9+fCEDIAQgA0IgiHwhBCADQv////8PgyAaIAt+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIYIh4gB358IQMgBCADQiCIfCEEIANC/////w+DIA0gHH58IQMgBCADQiCIfCEEIANC/////w+DIBEgGH58IQMgBCADQiCIfCEEIANC/////w+DIBUgFH58IQMgBCADQiCIfCEEIANC/////w+DIBkgEH58IQMgBCADQiCIfCEEIANC/////w+DIB0gDH58IQMgBCADQiCIfCEEIANC/////w+DQQA1AuAFIiEgCH58IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEgIANC/////w+DIAkgIH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AhwiI358IQQgAyAEQiCIfCEDIARC/////w+DIAogH358IQQgAyAEQiCIfCEDIARC/////w+DIA4gG358IQQgAyAEQiCIfCEDIARC/////w+DIBIgF358IQQgAyAEQiCIfCEDIARC/////w+DIBYgE358IQQgAyAEQiCIfCEDIARC/////w+DIBogD358IQQgAyAEQiCIfCEDIARC/////w+DIB4gC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhwiIiAHfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgESAcfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgISAMfnwhBCADIARCIIh8IQMgBEL/////D4NBADUC5AUiJSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DISQgBEL/////D4MgCSAkfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAYgATUCICInfnwhAyAEIANCIIh8IQQgA0L/////D4MgCiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgDiAffnwhAyAEIANCIIh8IQQgA0L/////D4MgEiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgFiAXfnwhAyAEIANCIIh8IQQgA0L/////D4MgGiATfnwhAyAEIANCIIh8IQQgA0L/////D4MgHiAPfnwhAyAEIANCIIh8IQQgA0L/////D4MgIiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCICImIAd+fCEDIAQgA0IgiHwhBCADQv////8PgyANICR+fCEDIAQgA0IgiHwhBCADQv////8PgyARICB+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyAZIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyAdIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyAhIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAlIAx+fCEDIAQgA0IgiHwhBCADQv////8Pg0EANQLoBSIpIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAFfkL/////D4MhKCADQv////8PgyAJICh+fCEDIAQgA0IgiHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIkIit+fCEEIAMgBEIgiHwhAyAEQv////8PgyAKICd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAOICN+fCEEIAMgBEIgiHwhAyAEQv////8PgyASIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAWIBt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAaIBd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAeIBN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAiIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAmIAt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIkIiogB358IQQgAyAEQiCIfCEDIARC/////w+DIA0gKH58IQQgAyAEQiCIfCEDIARC/////w+DIBEgJH58IQQgAyAEQiCIfCEDIARC/////w+DIBUgIH58IQQgAyAEQiCIfCEDIARC/////w+DIBkgHH58IQQgAyAEQiCIfCEDIARC/////w+DIB0gGH58IQQgAyAEQiCIfCEDIARC/////w+DICEgFH58IQQgAyAEQiCIfCEDIARC/////w+DICUgEH58IQQgAyAEQiCIfCEDIARC/////w+DICkgDH58IQQgAyAEQiCIfCEDIARC/////w+DQQA1AuwFIi0gCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEsIARC/////w+DIAkgLH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAGIAE1AigiL358IQMgBCADQiCIfCEEIANC/////w+DIAogK358IQMgBCADQiCIfCEEIANC/////w+DIA4gJ358IQMgBCADQiCIfCEEIANC/////w+DIBIgI358IQMgBCADQiCIfCEEIANC/////w+DIBYgH358IQMgBCADQiCIfCEEIANC/////w+DIBogG358IQMgBCADQiCIfCEEIANC/////w+DIB4gF358IQMgBCADQiCIfCEEIANC/////w+DICIgE358IQMgBCADQiCIfCEEIANC/////w+DICYgD358IQMgBCADQiCIfCEEIANC/////w+DICogC358IQMgBCADQiCIfCEEIANC/////w+DIAA1AigiLiAHfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAsfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAofnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAkfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAgfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgISAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgKSAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgLSAMfnwhAyAEIANCIIh8IQQgA0L/////D4NBADUC8AUiMSAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DITAgA0L/////D4MgCSAwfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCLCIzfnwhBCADIARCIIh8IQMgBEL/////D4MgCiAvfnwhBCADIARCIIh8IQMgBEL/////D4MgDiArfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAnfnwhBCADIARCIIh8IQMgBEL/////D4MgFiAjfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAffnwhBCADIARCIIh8IQMgBEL/////D4MgHiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgIiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgJiATfnwhBCADIARCIIh8IQMgBEL/////D4MgKiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgLiALfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCLCIyIAd+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIDB+fCEEIAMgBEIgiHwhAyAEQv////8PgyARICx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVICh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZICR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAdICB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAlIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyApIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAtIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAxIAx+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQL0BSI1IAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhNCAEQv////8PgyAJIDR+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgCiAzfnwhAyAEIANCIIh8IQQgA0L/////D4MgDiAvfnwhAyAEIANCIIh8IQQgA0L/////D4MgEiArfnwhAyAEIANCIIh8IQQgA0L/////D4MgFiAnfnwhAyAEIANCIIh8IQQgA0L/////D4MgGiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgHiAffnwhAyAEIANCIIh8IQQgA0L/////D4MgIiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgJiAXfnwhAyAEIANCIIh8IQQgA0L/////D4MgKiATfnwhAyAEIANCIIh8IQQgA0L/////D4MgLiAPfnwhAyAEIANCIIh8IQQgA0L/////D4MgMiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSA0fnwhAyAEIANCIIh8IQQgA0L/////D4MgESAwfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAsfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAofnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAkfnwhAyAEIANCIIh8IQQgA0L/////D4MgISAgfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgKSAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgLSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgMSAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgNSAMfnwhAyAEIANCIIh8IQQgAiADPgIAIARCIIghAyAEQv////8PgyAOIDN+fCEEIAMgBEIgiHwhAyAEQv////8PgyASIC9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAWICt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAaICd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAeICN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAiIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAmIBt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAqIBd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAuIBN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAyIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIDR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIDB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZICx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAdICh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhICR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAlICB+fCEEIAMgBEIgiHwhAyAEQv////8PgyApIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAtIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAxIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyA1IBB+fCEEIAMgBEIgiHwhAyACIAQ+AgQgA0IgiCEEIANC/////w+DIBIgM358IQMgBCADQiCIfCEEIANC/////w+DIBYgL358IQMgBCADQiCIfCEEIANC/////w+DIBogK358IQMgBCADQiCIfCEEIANC/////w+DIB4gJ358IQMgBCADQiCIfCEEIANC/////w+DICIgI358IQMgBCADQiCIfCEEIANC/////w+DICYgH358IQMgBCADQiCIfCEEIANC/////w+DICogG358IQMgBCADQiCIfCEEIANC/////w+DIC4gF358IQMgBCADQiCIfCEEIANC/////w+DIDIgE358IQMgBCADQiCIfCEEIANC/////w+DIBUgNH58IQMgBCADQiCIfCEEIANC/////w+DIBkgMH58IQMgBCADQiCIfCEEIANC/////w+DIB0gLH58IQMgBCADQiCIfCEEIANC/////w+DICEgKH58IQMgBCADQiCIfCEEIANC/////w+DICUgJH58IQMgBCADQiCIfCEEIANC/////w+DICkgIH58IQMgBCADQiCIfCEEIANC/////w+DIC0gHH58IQMgBCADQiCIfCEEIANC/////w+DIDEgGH58IQMgBCADQiCIfCEEIANC/////w+DIDUgFH58IQMgBCADQiCIfCEEIAIgAz4CCCAEQiCIIQMgBEL/////D4MgFiAzfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAvfnwhBCADIARCIIh8IQMgBEL/////D4MgHiArfnwhBCADIARCIIh8IQMgBEL/////D4MgIiAnfnwhBCADIARCIIh8IQMgBEL/////D4MgJiAjfnwhBCADIARCIIh8IQMgBEL/////D4MgKiAffnwhBCADIARCIIh8IQMgBEL/////D4MgLiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgMiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgGSA0fnwhBCADIARCIIh8IQMgBEL/////D4MgHSAwfnwhBCADIARCIIh8IQMgBEL/////D4MgISAsfnwhBCADIARCIIh8IQMgBEL/////D4MgJSAofnwhBCADIARCIIh8IQMgBEL/////D4MgKSAkfnwhBCADIARCIIh8IQMgBEL/////D4MgLSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgMSAcfnwhBCADIARCIIh8IQMgBEL/////D4MgNSAYfnwhBCADIARCIIh8IQMgAiAEPgIMIANCIIghBCADQv////8PgyAaIDN+fCEDIAQgA0IgiHwhBCADQv////8PgyAeIC9+fCEDIAQgA0IgiHwhBCADQv////8PgyAiICt+fCEDIAQgA0IgiHwhBCADQv////8PgyAmICd+fCEDIAQgA0IgiHwhBCADQv////8PgyAqICN+fCEDIAQgA0IgiHwhBCADQv////8PgyAuIB9+fCEDIAQgA0IgiHwhBCADQv////8PgyAyIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAdIDR+fCEDIAQgA0IgiHwhBCADQv////8PgyAhIDB+fCEDIAQgA0IgiHwhBCADQv////8PgyAlICx+fCEDIAQgA0IgiHwhBCADQv////8PgyApICh+fCEDIAQgA0IgiHwhBCADQv////8PgyAtICR+fCEDIAQgA0IgiHwhBCADQv////8PgyAxICB+fCEDIAQgA0IgiHwhBCADQv////8PgyA1IBx+fCEDIAQgA0IgiHwhBCACIAM+AhAgBEIgiCEDIARC/////w+DIB4gM358IQQgAyAEQiCIfCEDIARC/////w+DICIgL358IQQgAyAEQiCIfCEDIARC/////w+DICYgK358IQQgAyAEQiCIfCEDIARC/////w+DICogJ358IQQgAyAEQiCIfCEDIARC/////w+DIC4gI358IQQgAyAEQiCIfCEDIARC/////w+DIDIgH358IQQgAyAEQiCIfCEDIARC/////w+DICEgNH58IQQgAyAEQiCIfCEDIARC/////w+DICUgMH58IQQgAyAEQiCIfCEDIARC/////w+DICkgLH58IQQgAyAEQiCIfCEDIARC/////w+DIC0gKH58IQQgAyAEQiCIfCEDIARC/////w+DIDEgJH58IQQgAyAEQiCIfCEDIARC/////w+DIDUgIH58IQQgAyAEQiCIfCEDIAIgBD4CFCADQiCIIQQgA0L/////D4MgIiAzfnwhAyAEIANCIIh8IQQgA0L/////D4MgJiAvfnwhAyAEIANCIIh8IQQgA0L/////D4MgKiArfnwhAyAEIANCIIh8IQQgA0L/////D4MgLiAnfnwhAyAEIANCIIh8IQQgA0L/////D4MgMiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSA0fnwhAyAEIANCIIh8IQQgA0L/////D4MgKSAwfnwhAyAEIANCIIh8IQQgA0L/////D4MgLSAsfnwhAyAEIANCIIh8IQQgA0L/////D4MgMSAofnwhAyAEIANCIIh8IQQgA0L/////D4MgNSAkfnwhAyAEIANCIIh8IQQgAiADPgIYIARCIIghAyAEQv////8PgyAmIDN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAqIC9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAuICt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAyICd+fCEEIAMgBEIgiHwhAyAEQv////8PgyApIDR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAtIDB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAxICx+fCEEIAMgBEIgiHwhAyAEQv////8PgyA1ICh+fCEEIAMgBEIgiHwhAyACIAQ+AhwgA0IgiCEEIANC/////w+DICogM358IQMgBCADQiCIfCEEIANC/////w+DIC4gL358IQMgBCADQiCIfCEEIANC/////w+DIDIgK358IQMgBCADQiCIfCEEIANC/////w+DIC0gNH58IQMgBCADQiCIfCEEIANC/////w+DIDEgMH58IQMgBCADQiCIfCEEIANC/////w+DIDUgLH58IQMgBCADQiCIfCEEIAIgAz4CICAEQiCIIQMgBEL/////D4MgLiAzfnwhBCADIARCIIh8IQMgBEL/////D4MgMiAvfnwhBCADIARCIIh8IQMgBEL/////D4MgMSA0fnwhBCADIARCIIh8IQMgBEL/////D4MgNSAwfnwhBCADIARCIIh8IQMgAiAEPgIkIANCIIghBCADQv////8PgyAyIDN+fCEDIAQgA0IgiHwhBCADQv////8PgyA1IDR+fCEDIAQgA0IgiHwhBCACIAM+AiggBEIgiCEDIAIgBD4CLCADpwRAIAJByAUgAhAHGgUgAkHIBRAFBEAgAkHIBSACEAcaCwsLzUEpAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfkL9//P/DyEGQgAhAkIAIQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgADUCACIHIAd+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhCCACQv////8Pg0EANQLIBSIJIAh+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIEIgp+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4NBADUCzAUiDCAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIQsgAkL/////D4MgCSALfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCCCINfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCiAKfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AtAFIg8gCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEOIAJC/////w+DIAkgDn58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AgwiEH58IQIgAyACQiCIfCEDIAJC/////w+DIAogDX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAPIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQLUBSISIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhESACQv////8PgyAJIBF+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIQIhN+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBB+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyANIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCARfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUC2AUiFSAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIRQgAkL/////D4MgCSAUfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCFCIWfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiATfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAQfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgFH58IQIgAyACQiCIfCEDIAJC/////w+DIA8gEX58IQIgAyACQiCIfCEDIAJC/////w+DIBIgDn58IQIgAyACQiCIfCEDIAJC/////w+DIBUgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AtwFIhggCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEXIAJC/////w+DIAkgF358IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhgiGX58IQIgAyACQiCIfCEDIAJC/////w+DIAogFn58IQIgAyACQiCIfCEDIAJC/////w+DIA0gE358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIBAgEH58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBd+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBR+fCECIAMgAkIgiHwhAyACQv////8PgyASIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAVIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAYIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQLgBSIbIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhGiACQv////8PgyAJIBp+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIcIhx+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBl+fCECIAMgAkIgiHwhAyACQv////8PgyANIBZ+fCECIAMgAkIgiHwhAyACQv////8PgyAQIBN+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAafnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSARfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUC5AUiHiAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIR0gAkL/////D4MgCSAdfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCICIffnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgECAWfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgEyATfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgHX58IQIgAyACQiCIfCEDIAJC/////w+DIA8gGn58IQIgAyACQiCIfCEDIAJC/////w+DIBIgF358IQIgAyACQiCIfCEDIAJC/////w+DIBUgFH58IQIgAyACQiCIfCEDIAJC/////w+DIBggEX58IQIgAyACQiCIfCEDIAJC/////w+DIBsgDn58IQIgAyACQiCIfCEDIAJC/////w+DIB4gC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AugFIiEgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEgIAJC/////w+DIAkgIH58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AiQiIn58IQIgAyACQiCIfCEDIAJC/////w+DIAogH358IQIgAyACQiCIfCEDIAJC/////w+DIA0gHH58IQIgAyACQiCIfCEDIAJC/////w+DIBAgGX58IQIgAyACQiCIfCEDIAJC/////w+DIBMgFn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMICB+fCECIAMgAkIgiHwhAyACQv////8PgyAPIB1+fCECIAMgAkIgiHwhAyACQv////8PgyASIBp+fCECIAMgAkIgiHwhAyACQv////8PgyAVIBd+fCECIAMgAkIgiHwhAyACQv////8PgyAYIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAbIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAeIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAhIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQLsBSIkIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhIyACQv////8PgyAJICN+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIoIiV+fCECIAMgAkIgiHwhAyACQv////8PgyAKICJ+fCECIAMgAkIgiHwhAyACQv////8PgyANIB9+fCECIAMgAkIgiHwhAyACQv////8PgyAQIBx+fCECIAMgAkIgiHwhAyACQv////8PgyATIBl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAWIBZ+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAjfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAgfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAafnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiARfnwhAiADIAJCIIh8IQMgAkL/////D4MgISAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgJCALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUC8AUiJyAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DISYgAkL/////D4MgCSAmfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCLCIofnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAlfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAifnwhAiADIAJCIIh8IQMgAkL/////D4MgECAffnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgFiAZfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgJn58IQIgAyACQiCIfCEDIAJC/////w+DIA8gI358IQIgAyACQiCIfCEDIAJC/////w+DIBIgIH58IQIgAyACQiCIfCEDIAJC/////w+DIBUgHX58IQIgAyACQiCIfCEDIAJC/////w+DIBggGn58IQIgAyACQiCIfCEDIAJC/////w+DIBsgF358IQIgAyACQiCIfCEDIAJC/////w+DIB4gFH58IQIgAyACQiCIfCEDIAJC/////w+DICEgEX58IQIgAyACQiCIfCEDIAJC/////w+DICQgDn58IQIgAyACQiCIfCEDIAJC/////w+DICcgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AvQFIiogCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEpIAJC/////w+DIAkgKX58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAKICh+fCECIAMgAkIgiHwhAyACQv////8PgyANICV+fCECIAMgAkIgiHwhAyACQv////8PgyAQICJ+fCECIAMgAkIgiHwhAyACQv////8PgyATIB9+fCECIAMgAkIgiHwhAyACQv////8PgyAWIBx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAZIBl+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCApfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAmfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAjfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAgfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAafnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgISAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgJCARfnwhAiADIAJCIIh8IQMgAkL/////D4MgJyAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgKiALfnwhAiADIAJCIIh8IQMgASACPgIAIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyANICh+fCECIAMgAkIgiHwhAyACQv////8PgyAQICV+fCECIAMgAkIgiHwhAyACQv////8PgyATICJ+fCECIAMgAkIgiHwhAyACQv////8PgyAWIB9+fCECIAMgAkIgiHwhAyACQv////8PgyAZIBx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDyApfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAmfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAjfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAgfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAafnwhAiADIAJCIIh8IQMgAkL/////D4MgISAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgJCAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgJyARfnwhAiADIAJCIIh8IQMgAkL/////D4MgKiAOfnwhAiADIAJCIIh8IQMgASACPgIEIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAQICh+fCECIAMgAkIgiHwhAyACQv////8PgyATICV+fCECIAMgAkIgiHwhAyACQv////8PgyAWICJ+fCECIAMgAkIgiHwhAyACQv////8PgyAZIB9+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAcIBx+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgEiApfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAmfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAjfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAgfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgISAafnwhAiADIAJCIIh8IQMgAkL/////D4MgJCAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgJyAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgKiARfnwhAiADIAJCIIh8IQMgASACPgIIIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyATICh+fCECIAMgAkIgiHwhAyACQv////8PgyAWICV+fCECIAMgAkIgiHwhAyACQv////8PgyAZICJ+fCECIAMgAkIgiHwhAyACQv////8PgyAcIB9+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgFSApfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAmfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAjfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAgfnwhAiADIAJCIIh8IQMgAkL/////D4MgISAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgJCAafnwhAiADIAJCIIh8IQMgAkL/////D4MgJyAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgKiAUfnwhAiADIAJCIIh8IQMgASACPgIMIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAWICh+fCECIAMgAkIgiHwhAyACQv////8PgyAZICV+fCECIAMgAkIgiHwhAyACQv////8PgyAcICJ+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAfIB9+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgGCApfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAmfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAjfnwhAiADIAJCIIh8IQMgAkL/////D4MgISAgfnwhAiADIAJCIIh8IQMgAkL/////D4MgJCAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgJyAafnwhAiADIAJCIIh8IQMgAkL/////D4MgKiAXfnwhAiADIAJCIIh8IQMgASACPgIQIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAZICh+fCECIAMgAkIgiHwhAyACQv////8PgyAcICV+fCECIAMgAkIgiHwhAyACQv////8PgyAfICJ+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgGyApfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAmfnwhAiADIAJCIIh8IQMgAkL/////D4MgISAjfnwhAiADIAJCIIh8IQMgAkL/////D4MgJCAgfnwhAiADIAJCIIh8IQMgAkL/////D4MgJyAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgKiAafnwhAiADIAJCIIh8IQMgASACPgIUIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAcICh+fCECIAMgAkIgiHwhAyACQv////8PgyAfICV+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAiICJ+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgHiApfnwhAiADIAJCIIh8IQMgAkL/////D4MgISAmfnwhAiADIAJCIIh8IQMgAkL/////D4MgJCAjfnwhAiADIAJCIIh8IQMgAkL/////D4MgJyAgfnwhAiADIAJCIIh8IQMgAkL/////D4MgKiAdfnwhAiADIAJCIIh8IQMgASACPgIYIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAfICh+fCECIAMgAkIgiHwhAyACQv////8PgyAiICV+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgISApfnwhAiADIAJCIIh8IQMgAkL/////D4MgJCAmfnwhAiADIAJCIIh8IQMgAkL/////D4MgJyAjfnwhAiADIAJCIIh8IQMgAkL/////D4MgKiAgfnwhAiADIAJCIIh8IQMgASACPgIcIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAiICh+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAlICV+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgJCApfnwhAiADIAJCIIh8IQMgAkL/////D4MgJyAmfnwhAiADIAJCIIh8IQMgAkL/////D4MgKiAjfnwhAiADIAJCIIh8IQMgASACPgIgIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAlICh+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgJyApfnwhAiADIAJCIIh8IQMgAkL/////D4MgKiAmfnwhAiADIAJCIIh8IQMgASACPgIkIAMhBCAEQiCIIQVCACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAoICh+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgKiApfnwhAiADIAJCIIh8IQMgASACPgIoIAMhBCAEQiCIIQUgASAEPgIsIAWnBEAgAUHIBSABEAcaBSABQcgFEAUEQCABQcgFIAEQBxoLCwsKACAAIAAgARAUCwsAIABB+AUgARAUCxUAIABB+BEQAEGoEhABQfgRIAEQEwsRACAAQdgSEBhB2BJBuAcQBQskACAAEAIEQEEADwsgAEGIExAYQYgTQbgHEAUEQEF/DwtBAQ8LFwAgACABEBggAUHIBSABEA4gASABEBcLCQBBqAYgABAAC8sBBAF/AX8BfwF/IAIQAUEwIQUgACEDAkADQCAFIAFLDQEgBUEwRgRAQbgTEBwFQbgTQfgFQbgTEBQLIANBuBNB6BMQFCACQegTIAIQECADQTBqIQMgBUEwaiEFDAALCyABQTBwIQQgBEUEQA8LQegTEAFBACEGAkADQCAGIARGDQEgBiADLQAAOgDoEyADQQFqIQMgBkEBaiEGDAALCyAFQTBGBEBBuBMQHAVBuBNB+AVBuBMQFAtB6BNBuBNB6BMQFCACQegTIAIQEAscACABIAJBmBQQHUGYFEGYFBAXIABBmBQgAxAUC/gBBAF/AX8BfwF/QQAoAgAhBUEAIAUgAkEBakEwbGo2AgAgBRAcIAAhBiAFQTBqIQVBACEIAkADQCAIIAJGDQEgBhACBEAgBUEwayAFEAAFIAYgBUEwayAFEBQLIAYgAWohBiAFQTBqIQUgCEEBaiEIDAALCyAGIAFrIQYgBUEwayEFIAMgAkEBayAEbGohByAFIAUQGwJAA0AgCEUNASAGEAIEQCAFIAVBMGsQACAHEAEFIAVBMGtByBQQACAFIAYgBUEwaxAUIAVByBQgBxAUCyAGIAFrIQYgByAEayEHIAVBMGshBSAIQQFrIQgMAAsLQQAgBTYCAAs+AwF/AX8BfyAAIQQgAiEFQQAhAwJAA0AgAyABRg0BIAQgBRAXIARBMGohBCAFQTBqIQUgA0EBaiEDDAALCws+AwF/AX8BfyAAIQQgAiEFQQAhAwJAA0AgAyABRg0BIAQgBRAYIARBMGohBCAFQTBqIQUgA0EBaiEDDAALCws+AwF/AX8BfyAAIQQgAiEFQQAhAwJAA0AgAyABRg0BIAQgBRASIARBMGohBCAFQTBqIQUgA0EBaiEDDAALCwtNBAF/AX8BfwF/IAAhBSABIQYgAyEHQQAhBAJAA0AgBCACRg0BIAUgBiAHEBAgBUEwaiEFIAZBMGohBiAHQTBqIQcgBEEBaiEEDAALCwtNBAF/AX8BfwF/IAAhBSABIQYgAyEHQQAhBAJAA0AgBCACRg0BIAUgBiAHEBEgBUEwaiEFIAZBMGohBiAHQTBqIQcgBEEBaiEEDAALCwtNBAF/AX8BfwF/IAAhBSABIQYgAyEHQQAhBAJAA0AgBCACRg0BIAUgBiAHEBQgBUEwaiEFIAZBMGohBiAHQTBqIQcgBEEBaiEEDAALCwuyAgIBfwF/IAJFBEAgAxAcDwsgAEH4FBAAIAMQHCACIQQCQANAIARBAWshBCABIARqLQAAIQUgAyADEBUgBUGAAU8EQCAFQYABayEFIANB+BQgAxAUCyADIAMQFSAFQcAATwRAIAVBwABrIQUgA0H4FCADEBQLIAMgAxAVIAVBIE8EQCAFQSBrIQUgA0H4FCADEBQLIAMgAxAVIAVBEE8EQCAFQRBrIQUgA0H4FCADEBQLIAMgAxAVIAVBCE8EQCAFQQhrIQUgA0H4FCADEBQLIAMgAxAVIAVBBE8EQCAFQQRrIQUgA0H4FCADEBQLIAMgAxAVIAVBAk8EQCAFQQJrIQUgA0H4FCADEBQLIAMgAxAVIAVBAU8EQCAFQQFrIQUgA0H4FCADEBQLIARFDQEMAAsLC94BAwF/AX8BfyAAEAIEQCABEAEPC0EBIQJBmAhBqBUQACAAQegHQTBB2BUQJiAAQcgIQTBBiBYQJgJAA0BB2BVBqAYQBA0BQdgVQbgWEBVBASEDAkADQEG4FkGoBhAEDQFBuBZBuBYQFSADQQFqIQMMAAsLQagVQegWEAAgAiADa0EBayEEAkADQCAERQ0BQegWQegWEBUgBEEBayEEDAALCyADIQJB6BZBqBUQFUHYFUGoFUHYFRAUQYgWQegWQYgWEBQMAAsLQYgWEBkEQEGIFiABEBIFQYgWIAEQAAsLIAAgABACBEBBAQ8LIABBiAdBMEGYFxAmQZgXQagGEAQLKgAgASAAKQMANwMAIAEgACkDCDcDCCABIAApAxA3AxAgASAAKQMYNwMYCx4AIABCADcDACAAQgA3AwggAEIANwMQIABCADcDGAszACAAKQMYUARAIAApAxBQBEAgACkDCFAEQCAAKQMAUA8FQQAPCwVBAA8LBUEADwtBAA8LHgAgAEIBNwMAIABCADcDCCAAQgA3AxAgAEIANwMYC0cAIAApAxggASkDGFEEQCAAKQMQIAEpAxBRBEAgACkDCCABKQMIUQRAIAApAwAgASkDAFEPBUEADwsFQQAPCwVBAA8LQQAPC30AIAApAxggASkDGFQEQEEADwUgACkDGCABKQMYVgRAQQEPBSAAKQMQIAEpAxBUBEBBAA8FIAApAxAgASkDEFYEQEEBDwUgACkDCCABKQMIVARAQQAPBSAAKQMIIAEpAwhWBEBBAQ8FIAApAwAgASkDAFoPCwsLCwsLQQAPC9QBAQF+IAA1AgAgATUCAHwhAyACIAM+AgAgADUCBCABNQIEfCADQiCIfCEDIAIgAz4CBCAANQIIIAE1Agh8IANCIIh8IQMgAiADPgIIIAA1AgwgATUCDHwgA0IgiHwhAyACIAM+AgwgADUCECABNQIQfCADQiCIfCEDIAIgAz4CECAANQIUIAE1AhR8IANCIIh8IQMgAiADPgIUIAA1AhggATUCGHwgA0IgiHwhAyACIAM+AhggADUCHCABNQIcfCADQiCIfCEDIAIgAz4CHCADQiCIpwuMAgEBfiAANQIAIAE1AgB9IQMgAiADQv////8Pgz4CACAANQIEIAE1AgR9IANCIId8IQMgAiADQv////8Pgz4CBCAANQIIIAE1Agh9IANCIId8IQMgAiADQv////8Pgz4CCCAANQIMIAE1Agx9IANCIId8IQMgAiADQv////8Pgz4CDCAANQIQIAE1AhB9IANCIId8IQMgAiADQv////8Pgz4CECAANQIUIAE1AhR9IANCIId8IQMgAiADQv////8Pgz4CFCAANQIYIAE1Ahh9IANCIId8IQMgAiADQv////8Pgz4CGCAANQIcIAE1Ahx9IANCIId8IQMgAiADQv////8Pgz4CHCADQiCHpwuPEBIBfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4gA0L/////D4MgADUCACIFIAE1AgAiBn58IQMgBCADQiCIfCEEIAIgAz4CACAEQiCIIQMgBEL/////D4MgBSABNQIEIgh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIEIgcgBn58IQQgAyAEQiCIfCEDIAIgBD4CBCADQiCIIQQgA0L/////D4MgBSABNQIIIgp+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIIIgkgBn58IQMgBCADQiCIfCEEIAIgAz4CCCAEQiCIIQMgBEL/////D4MgBSABNQIMIgx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIMIgsgBn58IQQgAyAEQiCIfCEDIAIgBD4CDCADQiCIIQQgA0L/////D4MgBSABNQIQIg5+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyALIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIQIg0gBn58IQMgBCADQiCIfCEEIAIgAz4CECAEQiCIIQMgBEL/////D4MgBSABNQIUIhB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIUIg8gBn58IQQgAyAEQiCIfCEDIAIgBD4CFCADQiCIIQQgA0L/////D4MgBSABNQIYIhJ+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyALIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyANIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIYIhEgBn58IQMgBCADQiCIfCEEIAIgAz4CGCAEQiCIIQMgBEL/////D4MgBSABNQIcIhR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIcIhMgBn58IQQgAyAEQiCIfCEDIAIgBD4CHCADQiCIIQQgA0L/////D4MgByAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSASfnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAIfnwhAyAEIANCIIh8IQQgAiADPgIgIARCIIghAyAEQv////8PgyAJIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIAp+fCEEIAMgBEIgiHwhAyACIAQ+AiQgA0IgiCEEIANC/////w+DIAsgFH58IQMgBCADQiCIfCEEIANC/////w+DIA0gEn58IQMgBCADQiCIfCEEIANC/////w+DIA8gEH58IQMgBCADQiCIfCEEIANC/////w+DIBEgDn58IQMgBCADQiCIfCEEIANC/////w+DIBMgDH58IQMgBCADQiCIfCEEIAIgAz4CKCAEQiCIIQMgBEL/////D4MgDSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgDyASfnwhBCADIARCIIh8IQMgBEL/////D4MgESAQfnwhBCADIARCIIh8IQMgBEL/////D4MgEyAOfnwhBCADIARCIIh8IQMgAiAEPgIsIANCIIghBCADQv////8PgyAPIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyARIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyATIBB+fCEDIAQgA0IgiHwhBCACIAM+AjAgBEIgiCEDIARC/////w+DIBEgFH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgEn58IQQgAyAEQiCIfCEDIAIgBD4CNCADQiCIIQQgA0L/////D4MgEyAUfnwhAyAEIANCIIh8IQQgAiADPgI4IARCIIghAyACIAQ+AjwLjBIMAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+QgAhAkIAIQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgADUCACIGIAZ+fCECIAMgAkIgiHwhAyABIAI+AgAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCBCIHfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CBCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIIIgh+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAHIAd+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIIIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AgwiCX58IQIgAyACQiCIfCEDIAJC/////w+DIAcgCH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AgwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCECIKfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAJfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCCAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CECADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIUIgt+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAp+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIUIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhgiDH58IQIgAyACQiCIfCEDIAJC/////w+DIAcgC358IQIgAyACQiCIfCEDIAJC/////w+DIAggCn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAkgCX58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCHCINfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCALfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSAKfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CHCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSALfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCiAKfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CICADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCCANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiALfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CJCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCSANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAMfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCyALfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CKCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCiANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCyAMfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CLCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCyANfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgDCAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CMCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgDCANfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CNCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgDSANfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4COCADIQQgBEIgiCEFIAEgBD4CPAsKACAAIAAgARAx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PgIcIAA1AiAgA0IgiHxBiBs1AgggBH58IQMgACADPgIgIAA1AiQgA0IgiHxBiBs1AgwgBH58IQMgACADPgIkIAA1AiggA0IgiHxBiBs1AhAgBH58IQMgACADPgIoIAA1AiwgA0IgiHxBiBs1AhQgBH58IQMgACADPgIsIAA1AjAgA0IgiHxBiBs1AhggBH58IQMgACADPgIwIAA1AjQgA0IgiHxBiBs1AhwgBH58IQMgACADPgI0QagdIANCIIg+AhhCACEDIAA1AhwgAn5C/////w+DIQQgADUCHCADQiCIfEGIGzUCACAEfnwhAyAAIAM+AhwgADUCICADQiCIfEGIGzUCBCAEfnwhAyAAIAM+AiAgADUCJCADQiCIfEGIGzUCCCAEfnwhAyAAIAM+AiQgADUCKCADQiCIfEGIGzUCDCAEfnwhAyAAIAM+AiggADUCLCADQiCIfEGIGzUCECAEfnwhAyAAIAM+AiwgADUCMCADQiCIfEGIGzUCFCAEfnwhAyAAIAM+AjAgADUCNCADQiCIfEGIGzUCGCAEfnwhAyAAIAM+AjQgADUCOCADQiCIfEGIGzUCHCAEfnwhAyAAIAM+AjhBqB0gA0IgiD4CHEGoHSAAQSBqIAEQOQu+HyMBfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+Qv////8PIQUgA0L/////D4MgADUCACIGIAE1AgAiB358IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEIIANC/////w+DQQA1AogbIgkgCH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AgQiC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgQiCiAHfnwhBCADIARCIIh8IQMgBEL/////D4NBADUCjBsiDSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DIQwgBEL/////D4MgCSAMfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAYgATUCCCIPfnwhAyAEIANCIIh8IQQgA0L/////D4MgCiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCCCIOIAd+fCEDIAQgA0IgiHwhBCADQv////8PgyANIAx+fCEDIAQgA0IgiHwhBCADQv////8Pg0EANQKQGyIRIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAFfkL/////D4MhECADQv////8PgyAJIBB+fCEDIAQgA0IgiHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIMIhN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAKIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAOIAt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIMIhIgB358IQQgAyAEQiCIfCEDIARC/////w+DIA0gEH58IQQgAyAEQiCIfCEDIARC/////w+DIBEgDH58IQQgAyAEQiCIfCEDIARC/////w+DQQA1ApQbIhUgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEUIARC/////w+DIAkgFH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAGIAE1AhAiF358IQMgBCADQiCIfCEEIANC/////w+DIAogE358IQMgBCADQiCIfCEEIANC/////w+DIA4gD358IQMgBCADQiCIfCEEIANC/////w+DIBIgC358IQMgBCADQiCIfCEEIANC/////w+DIAA1AhAiFiAHfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAMfnwhAyAEIANCIIh8IQQgA0L/////D4NBADUCmBsiGSAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DIRggA0L/////D4MgCSAYfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCFCIbfnwhBCADIARCIIh8IQMgBEL/////D4MgCiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgDiATfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgFiALfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCFCIaIAd+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIAx+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQKcGyIdIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhHCAEQv////8PgyAJIBx+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgBiABNQIYIh9+fCEDIAQgA0IgiHwhBCADQv////8PgyAKIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAOIBd+fCEDIAQgA0IgiHwhBCADQv////8PgyASIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAWIA9+fCEDIAQgA0IgiHwhBCADQv////8PgyAaIAt+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIYIh4gB358IQMgBCADQiCIfCEEIANC/////w+DIA0gHH58IQMgBCADQiCIfCEEIANC/////w+DIBEgGH58IQMgBCADQiCIfCEEIANC/////w+DIBUgFH58IQMgBCADQiCIfCEEIANC/////w+DIBkgEH58IQMgBCADQiCIfCEEIANC/////w+DIB0gDH58IQMgBCADQiCIfCEEIANC/////w+DQQA1AqAbIiEgCH58IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEgIANC/////w+DIAkgIH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AhwiI358IQQgAyAEQiCIfCEDIARC/////w+DIAogH358IQQgAyAEQiCIfCEDIARC/////w+DIA4gG358IQQgAyAEQiCIfCEDIARC/////w+DIBIgF358IQQgAyAEQiCIfCEDIARC/////w+DIBYgE358IQQgAyAEQiCIfCEDIARC/////w+DIBogD358IQQgAyAEQiCIfCEDIARC/////w+DIB4gC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhwiIiAHfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgESAcfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgISAMfnwhBCADIARCIIh8IQMgBEL/////D4NBADUCpBsiJSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DISQgBEL/////D4MgCSAkfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAogI358IQMgBCADQiCIfCEEIANC/////w+DIA4gH358IQMgBCADQiCIfCEEIANC/////w+DIBIgG358IQMgBCADQiCIfCEEIANC/////w+DIBYgF358IQMgBCADQiCIfCEEIANC/////w+DIBogE358IQMgBCADQiCIfCEEIANC/////w+DIB4gD358IQMgBCADQiCIfCEEIANC/////w+DICIgC358IQMgBCADQiCIfCEEIANC/////w+DIA0gJH58IQMgBCADQiCIfCEEIANC/////w+DIBEgIH58IQMgBCADQiCIfCEEIANC/////w+DIBUgHH58IQMgBCADQiCIfCEEIANC/////w+DIBkgGH58IQMgBCADQiCIfCEEIANC/////w+DIB0gFH58IQMgBCADQiCIfCEEIANC/////w+DICEgEH58IQMgBCADQiCIfCEEIANC/////w+DICUgDH58IQMgBCADQiCIfCEEIAIgAz4CACAEQiCIIQMgBEL/////D4MgDiAjfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAffnwhBCADIARCIIh8IQMgBEL/////D4MgFiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgHiATfnwhBCADIARCIIh8IQMgBEL/////D4MgIiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgESAkfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAcfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgISAUfnwhBCADIARCIIh8IQMgBEL/////D4MgJSAQfnwhBCADIARCIIh8IQMgAiAEPgIEIANCIIghBCADQv////8PgyASICN+fCEDIAQgA0IgiHwhBCADQv////8PgyAWIB9+fCEDIAQgA0IgiHwhBCADQv////8PgyAaIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAeIBd+fCEDIAQgA0IgiHwhBCADQv////8PgyAiIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAVICR+fCEDIAQgA0IgiHwhBCADQv////8PgyAZICB+fCEDIAQgA0IgiHwhBCADQv////8PgyAdIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyAhIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyAlIBR+fCEDIAQgA0IgiHwhBCACIAM+AgggBEIgiCEDIARC/////w+DIBYgI358IQQgAyAEQiCIfCEDIARC/////w+DIBogH358IQQgAyAEQiCIfCEDIARC/////w+DIB4gG358IQQgAyAEQiCIfCEDIARC/////w+DICIgF358IQQgAyAEQiCIfCEDIARC/////w+DIBkgJH58IQQgAyAEQiCIfCEDIARC/////w+DIB0gIH58IQQgAyAEQiCIfCEDIARC/////w+DICEgHH58IQQgAyAEQiCIfCEDIARC/////w+DICUgGH58IQQgAyAEQiCIfCEDIAIgBD4CDCADQiCIIQQgA0L/////D4MgGiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgHiAffnwhAyAEIANCIIh8IQQgA0L/////D4MgIiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAkfnwhAyAEIANCIIh8IQQgA0L/////D4MgISAgfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAcfnwhAyAEIANCIIh8IQQgAiADPgIQIARCIIghAyAEQv////8PgyAeICN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAiIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhICR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAlICB+fCEEIAMgBEIgiHwhAyACIAQ+AhQgA0IgiCEEIANC/////w+DICIgI358IQMgBCADQiCIfCEEIANC/////w+DICUgJH58IQMgBCADQiCIfCEEIAIgAz4CGCAEQiCIIQMgAiAEPgIcIAOnBEAgAkGIGyACEDAaBSACQYgbEC4EQCACQYgbIAIQMBoLCwu7IR0BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+Qv////8PIQZCACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAANQIAIgcgB358IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEIIAJC/////w+DQQA1AogbIgkgCH58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AgQiCn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8Pg0EANQKMGyIMIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhCyACQv////8PgyAJIAt+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIIIg1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAKIAp+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUCkBsiDyAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIQ4gAkL/////D4MgCSAOfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCDCIQfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiANfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgDn58IQIgAyACQiCIfCEDIAJC/////w+DIA8gC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1ApQbIhIgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyERIAJC/////w+DIAkgEX58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhAiE358IQIgAyACQiCIfCEDIAJC/////w+DIAogEH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIA0gDX58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAPIA5+fCECIAMgAkIgiHwhAyACQv////8PgyASIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQKYGyIVIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhFCACQv////8PgyAJIBR+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIUIhZ+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBN+fCECIAMgAkIgiHwhAyACQv////8PgyANIBB+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyARfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUCnBsiGCAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIRcgAkL/////D4MgCSAXfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCGCIZfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAWfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSATfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgECAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgF358IQIgAyACQiCIfCEDIAJC/////w+DIA8gFH58IQIgAyACQiCIfCEDIAJC/////w+DIBIgEX58IQIgAyACQiCIfCEDIAJC/////w+DIBUgDn58IQIgAyACQiCIfCEDIAJC/////w+DIBggC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AqAbIhsgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEaIAJC/////w+DIAkgGn58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhwiHH58IQIgAyACQiCIfCEDIAJC/////w+DIAogGX58IQIgAyACQiCIfCEDIAJC/////w+DIA0gFn58IQIgAyACQiCIfCEDIAJC/////w+DIBAgE358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBp+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBd+fCECIAMgAkIgiHwhAyACQv////8PgyASIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAVIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAYIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAbIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQKkGyIeIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhHSACQv////8PgyAJIB1+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCiAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgECAWfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgEyATfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgHX58IQIgAyACQiCIfCEDIAJC/////w+DIA8gGn58IQIgAyACQiCIfCEDIAJC/////w+DIBIgF358IQIgAyACQiCIfCEDIAJC/////w+DIBUgFH58IQIgAyACQiCIfCEDIAJC/////w+DIBggEX58IQIgAyACQiCIfCEDIAJC/////w+DIBsgDn58IQIgAyACQiCIfCEDIAJC/////w+DIB4gC358IQIgAyACQiCIfCEDIAEgAj4CACADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgDSAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgECAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAWfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIA8gHX58IQIgAyACQiCIfCEDIAJC/////w+DIBIgGn58IQIgAyACQiCIfCEDIAJC/////w+DIBUgF358IQIgAyACQiCIfCEDIAJC/////w+DIBggFH58IQIgAyACQiCIfCEDIAJC/////w+DIBsgEX58IQIgAyACQiCIfCEDIAJC/////w+DIB4gDn58IQIgAyACQiCIfCEDIAEgAj4CBCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgECAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAZfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgFiAWfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBIgHX58IQIgAyACQiCIfCEDIAJC/////w+DIBUgGn58IQIgAyACQiCIfCEDIAJC/////w+DIBggF358IQIgAyACQiCIfCEDIAJC/////w+DIBsgFH58IQIgAyACQiCIfCEDIAJC/////w+DIB4gEX58IQIgAyACQiCIfCEDIAEgAj4CCCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgEyAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgFiAZfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBUgHX58IQIgAyACQiCIfCEDIAJC/////w+DIBggGn58IQIgAyACQiCIfCEDIAJC/////w+DIBsgF358IQIgAyACQiCIfCEDIAJC/////w+DIB4gFH58IQIgAyACQiCIfCEDIAEgAj4CDCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgFiAcfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgGSAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBggHX58IQIgAyACQiCIfCEDIAJC/////w+DIBsgGn58IQIgAyACQiCIfCEDIAJC/////w+DIB4gF358IQIgAyACQiCIfCEDIAEgAj4CECADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgGSAcfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBsgHX58IQIgAyACQiCIfCEDIAJC/////w+DIB4gGn58IQIgAyACQiCIfCEDIAEgAj4CFCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgHCAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIB4gHX58IQIgAyACQiCIfCEDIAEgAj4CGCADIQQgBEIgiCEFIAEgBD4CHCAFpwRAIAFBiBsgARAwGgUgAUGIGxAuBEAgAUGIGyABEDAaCwsLCgAgACAAIAEQPQsLACAAQagbIAEQPQsVACAAQaghEClByCEQKkGoISABEDwLEQAgAEHoIRBBQeghQagcEC4LJAAgABArBEBBAA8LIABBiCIQQUGIIkGoHBAuBEBBfw8LQQEPCxcAIAAgARBBIAFBiBsgARA3IAEgARBACwkAQcgbIAAQKQvLAQQBfwF/AX8BfyACECpBICEFIAAhAwJAA0AgBSABSw0BIAVBIEYEQEGoIhBFBUGoIkGoG0GoIhA9CyADQagiQcgiED0gAkHIIiACEDkgA0EgaiEDIAVBIGohBQwACwsgAUEgcCEEIARFBEAPC0HIIhAqQQAhBgJAA0AgBiAERg0BIAYgAy0AADoAyCIgA0EBaiEDIAZBAWohBgwACwsgBUEgRgRAQagiEEUFQagiQagbQagiED0LQcgiQagiQcgiED0gAkHIIiACEDkLHAAgASACQegiEEZB6CJB6CIQQCAAQegiIAMQPQv4AQQBfwF/AX8Bf0EAKAIAIQVBACAFIAJBAWpBIGxqNgIAIAUQRSAAIQYgBUEgaiEFQQAhCAJAA0AgCCACRg0BIAYQKwRAIAVBIGsgBRApBSAGIAVBIGsgBRA9CyAGIAFqIQYgBUEgaiEFIAhBAWohCAwACwsgBiABayEGIAVBIGshBSADIAJBAWsgBGxqIQcgBSAFEEQCQANAIAhFDQEgBhArBEAgBSAFQSBrECkgBxAqBSAFQSBrQYgjECkgBSAGIAVBIGsQPSAFQYgjIAcQPQsgBiABayEGIAcgBGshByAFQSBrIQUgCEEBayEIDAALC0EAIAU2AgALPgMBfwF/AX8gACEEIAIhBUEAIQMCQANAIAMgAUYNASAEIAUQQCAEQSBqIQQgBUEgaiEFIANBAWohAwwACwsLPgMBfwF/AX8gACEEIAIhBUEAIQMCQANAIAMgAUYNASAEIAUQQSAEQSBqIQQgBUEgaiEFIANBAWohAwwACwsLPgMBfwF/AX8gACEEIAIhBUEAIQMCQANAIAMgAUYNASAEIAUQOyAEQSBqIQQgBUEgaiEFIANBAWohAwwACwsLTQQBfwF/AX8BfyAAIQUgASEGIAMhB0EAIQQCQANAIAQgAkYNASAFIAYgBxA5IAVBIGohBSAGQSBqIQYgB0EgaiEHIARBAWohBAwACwsLTQQBfwF/AX8BfyAAIQUgASEGIAMhB0EAIQQCQANAIAQgAkYNASAFIAYgBxA6IAVBIGohBSAGQSBqIQYgB0EgaiEHIARBAWohBAwACwsLTQQBfwF/AX8BfyAAIQUgASEGIAMhB0EAIQQCQANAIAQgAkYNASAFIAYgBxA9IAVBIGohBSAGQSBqIQYgB0EgaiEHIARBAWohBAwACwsLsgICAX8BfyACRQRAIAMQRQ8LIABBqCMQKSADEEUgAiEEAkADQCAEQQFrIQQgASAEai0AACEFIAMgAxA+IAVBgAFPBEAgBUGAAWshBSADQagjIAMQPQsgAyADED4gBUHAAE8EQCAFQcAAayEFIANBqCMgAxA9CyADIAMQPiAFQSBPBEAgBUEgayEFIANBqCMgAxA9CyADIAMQPiAFQRBPBEAgBUEQayEFIANBqCMgAxA9CyADIAMQPiAFQQhPBEAgBUEIayEFIANBqCMgAxA9CyADIAMQPiAFQQRPBEAgBUEEayEFIANBqCMgAxA9CyADIAMQPiAFQQJPBEAgBUECayEFIANBqCMgAxA9CyADIAMQPiAFQQFPBEAgBUEBayEFIANBqCMgAxA9CyAERQ0BDAALCwveAQMBfwF/AX8gABArBEAgARAqDwtBICECQegcQcgjECkgAEHIHEEgQegjEE8gAEGIHUEgQYgkEE8CQANAQegjQcgbEC0NAUHoI0GoJBA+QQEhAwJAA0BBqCRByBsQLQ0BQagkQagkED4gA0EBaiEDDAALC0HII0HIJBApIAIgA2tBAWshBAJAA0AgBEUNAUHIJEHIJBA+IARBAWshBAwACwsgAyECQcgkQcgjED5B6CNByCNB6CMQPUGIJEHIJEGIJBA9DAALC0GIJBBCBEBBiCQgARA7BUGIJCABECkLCyAAIAAQKwRAQQEPCyAAQYgcQSBB6CQQT0HoJEHIGxAtCxUAIAAgAUGIJRA9QYglQagbIAIQPQsKACAAIAAgARBSCwsAIABBiBsgARA3CwkAIABBqBwQLgsOACAAEAIgAEEwahACcQsKACAAQeAAahACCw0AIAAQASAAQTBqEAELFQAgABABIABBMGoQHCAAQeAAahABC3oAIAEgACkDADcDACABIAApAwg3AwggASAAKQMQNwMQIAEgACkDGDcDGCABIAApAyA3AyAgASAAKQMoNwMoIAEgACkDMDcDMCABIAApAzg3AzggASAAKQNANwNAIAEgACkDSDcDSCABIAApA1A3A1AgASAAKQNYNwNYC7oBACABIAApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggASAAKQMgNwMgIAEgACkDKDcDKCABIAApAzA3AzAgASAAKQM4NwM4IAEgACkDQDcDQCABIAApA0g3A0ggASAAKQNQNwNQIAEgACkDWDcDWCABIAApA2A3A2AgASAAKQNoNwNoIAEgACkDcDcDcCABIAAp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wwEgBkHgAGoQngELIARBoAJqIQQgBkHAAWohBiAFQeAAaiEFIAdBAWohBwwACwtBACADNgIAC14AIAAQsQEEQCABELMBBSAAQcABakG4xAEQqAFBuMQBQZjFARCgAUG4xAFBmMUBQfjFARCeASAAQZjFASABEJ4BIABB4ABqQfjFASABQeAAahCeASABQcABahCcAQsLOwIBfwF/IAIgAWpBAWshAyAAIQQCQANAIAMgAkgNASADIAQtAAA6AAAgA0EBayEDIARBAWohBAwACwsLNQAgABCwAQRAIAEQsgEPCyAAQdjGARDEAUHYxgFB4AAgARDNAUG4xwFB4AAgAUHgAGoQzQELSgAgABCwAQRAIAEQmwEgAUHAADoAAA8LIABBmMgBEKYBQZjIAUHgACABEM0BIABB4ABqEKoBQX9GBEAgASABLQAAQYABcjoAAAsLOQAgAC0AAEHAAHEEQCABELIBDwsgAEHgAEH4yAEQzQEgAEHgAGpB4ABB2MkBEM0BQfjIASABEMYBC9kBAgF/AX8gAC0AACECIAJBwABxBEAgARCyAQ8LIAJBgAFxIQMgAEGYywEQnQFBmMsBIAJBP3E6AABBmMsBQeAAQbjKARDNAUG4ygEgARClASABQZjLARCgASABQZjLAUGYywEQngFBmMsBQdiEAUGYywEQoQFBmMsBQZjLARCuAUGYywFBuMoBEKMBQZjLARCqAUF/RgRAIAMEQEGYywEgAUHgAGoQnQEFQZjLASABQeAAahCjAQsFIAMEQEGYywEgAUHgAGoQowEFQZjLASABQeAAahCdAQsLC0EDAX8BfwF/IAAhBCACIQVBACEDAkADQCADIAFGDQEgBCAFEM4BIARBwAFqIQQgBUHAAWohBSADQQFqIQMMAAsLC0EDAX8BfwF/IAAhBCACIQVBACEDAkADQCADIAFGDQEgBCAFEM8BIARBwAFqIQQgBUHgAGohBSADQQFqIQMMAAsLC0EDAX8BfwF/IAAhBCACIQVBACEDAkADQCADIAFGDQEgBCAFENABIARBwAFqIQQgBUHAAWohBSADQQFqIQMMAAsLC1UDAX8BfwF/IAAgAUEBa0HgAGxqIQQgAiABQQFrQcABbGohBUEAIQMCQANAIAMgAUYNASAEIAUQ0QEgBEHgAGshBCAFQcABayEFIANBAWohAwwACwsL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kQMgAxCeAgsgAyADEKACIAVBAk8EQCAFQQJrIQUgA0GokQMgAxCeAgsgAyADEKACIAVBAU8EQCAFQQFrIQUgA0GokQMgAxCeAgsgBEUNAQwACwsL0QEAQeinAxCcAkHopwNB6KcDEKMCIABB6JUDQaACQaiaAxCtAkGomgNB6J4DEKACIABB6J4DQeieAxCeAkHongNBqKMDEKQCQaijA0HongNBqKMDEJ4CQaijA0HopwMQpwIEQAALQaiaAyAAQaisAxCeAkHongNB6KcDEKcCBEBB6KcDEIcCQYiqAxCIAkHopwNBqKwDIAEQngIFQeiwAxCcAkHosANB6J4DQeiwAxChAkHosANBiJgDQaACQeiwAxCtAkHosANBqKwDIAEQngILC2oAQYjFAxCcAkGIxQNBiMUDEKMCIABBqLUDQaACQci3AxCtAkHItwNBiLwDEKACIABBiLwDQYi8AxCeAkGIvANByMADEKQCQcjAA0GIvANByMADEJ4CQcjAA0GIxQMQpwIEQEEADwtBAQ8LeAAgACAAQeAAakGIygMQoQEgAEHgAGogAEHAAWpB6MoDEKEBIABB4ABqIAEgAkHAAWoQngFB6MoDIAEgAhCeASACIAJBwAFqIAIQogEgAiACEIQCQYjKAyABIAJB4ABqEJ4BIAJB4ABqIAJBwAFqIAJB4ABqEKIBC+wBACAAIAFByMsDEJ4BIABB4ABqIAJBqMwDEJ4BIAAgAEHgAGpBiM0DEKEBIAAgAEHAAWpB6M0DEKEBIABB4ABqIABBwAFqIAMQoQEgAyACIAMQngEgA0GozAMgAxCiASADIAMQhAIgA0HIywMgAxChASABIAIgA0HgAGoQoQEgA0HgAGpBiM0DIANB4ABqEJ4BIANB4ABqQcjLAyADQeAAahCiASADQeAAakGozAMgA0HgAGoQogFB6M0DIAEgA0HAAWoQngEgA0HAAWpByMsDIANBwAFqEKIBIANBwAFqQajMAyADQcABahChAQuQAQAgACABIAJByM4DELECIABBoAJqIANB6NADELACIAIgA0GI0wMQoQEgAEGgAmogACAEQaACahCMAiAEQaACaiABQYjTAyAEQaACahCxAiAEQaACakHIzgMgBEGgAmoQjQIgBEGgAmpB6NADIARBoAJqEI0CQejQAyAEEIkCIAQgBBCYAiAEQcjOAyAEEIwCC1AAIAEgAEEwakHo0wMQFCABQTBqIABBMGpBmNQDEBQgAUHgAGogAEHI1AMQFCABQZABaiAAQfjUAxAUIAIgAUHAAWpByNQDQejTAyACELICC2wAIABBqPcEIAEQngEgAEHgAGpBiPgEIAFB4ABqEJ4BIABBwAFqQej4BCABQcABahCeASAAQaACakHI+QQgAUGgAmoQngEgAEGAA2pBqPoEIAFBgANqEJ4BIABB4ANqQYj7BCABQeADahCeAQuKAgAgACABEAAgAEEwaiABQTBqEBIgAUHo+wQgARCeASAAQeAAaiABQeAAahAAIABBkAFqIAFBkAFqEBIgAUHgAGpByPwEIAFB4ABqEJ4BIABBwAFqIAFBwAFqEAAgAEHwAWogAUHwAWoQEiABQcABakGo/QQgAUHAAWoQngEgAEGgAmogAUGgAmoQACAAQdACaiABQdACahASIAFBoAJqQYj+BCABQaACahCeASAAQYADaiABQYADahAAIABBsANqIAFBsANqEBIgAUGAA2pB6P4EIAFBgANqEJ4BIABB4ANqIAFB4ANqEAAgAEGQBGogAUGQBGoQEiABQeADakHI/wQgAUHgA2oQngELbAAgAEGogAUgARCeASAAQeAAakGIgQUgAUHgAGoQngEgAEHAAWpB6IEFIAFBwAFqEJ4BIABBoAJqQciCBSABQaACahCeASAAQYADakGogwUgAUGAA2oQngEgAEHgA2pBiIQFIAFB4ANqEJ4BC4oCACAAIAEQACAAQTBqIAFBMGoQEiABQeiEBSABEJ4BIABB4ABqIAFB4ABqEAAgAEGQAWogAUGQAWoQEiABQeAAakHIhQUgAUHgAGoQngEgAEHAAWogAUHAAWoQACAAQfABaiABQfABahASIAFBwAFqQaiGBSABQcABahCeASAAQaACaiABQaACahAAIABB0AJqIAFB0AJqEBIgAUGgAmpBiIcFIAFBoAJqEJ4BIABBgANqIAFBgANqEAAgAEGwA2ogAUGwA2oQEiABQYADakHohwUgAUGAA2oQngEgAEHgA2ogAUHgA2oQACAAQZAEaiABQZAEahASIAFB4ANqQciIBSABQeADahCeAQtsACAAQaiJBSABEJ4BIABB4ABqQYiKBSABQeAAahCeASAAQcABakHoigUgAUHAAWoQngEgAEGgAmpByIsFIAFBoAJqEJ4BIABBgANqQaiMBSABQYADahCeASAAQeADakGIjQUgAUHgA2oQngELigIAIAAgARAAIABBMGogAUEwahASIAFB6I0FIAEQngEgAEHgAGogAUHgAGoQACAAQZABaiABQZABahASIAFB4ABqQciOBSABQeAAahCeASAAQcABaiABQcABahAAIABB8AFqIAFB8AFqEBIgAUHAAWpBqI8FIAFBwAFqEJ4BIABBoAJqIAFBoAJqEAAgAEHQAmogAUHQAmoQEiABQaACakGIkAUgAUGgAmoQngEgAEGAA2ogAUGAA2oQACAAQbADaiABQbADahASIAFBgANqQeiQBSABQYADahCeASAAQeADaiABQeADahAAIABBkARqIAFBkARqEBIgAUHgA2pByJEFIAFB4ANqEJ4BC2wAIABBqJIFIAEQngEgAEHgAGpBiJMFIAFB4ABqEJ4BIABBwAFqQeiTBSABQcABahCeASAAQaACakHIlAUgAUGgAmoQngEgAEGAA2pBqJUFIAFBgANqEJ4BIABB4ANqQYiWBSABQeADahCeAQuKAgAgACABEAAgAEEwaiABQTBqEBIgAUHolgUgARCeASAAQeAAaiABQeAAahAAIABBkAFqIAFBkAFqEBIgAUHgAGpByJcFIAFB4ABqEJ4BIABBwAFqIAFBwAFqEAAgAEHwAWogAUHwAWoQEiABQcABakGomAUgAUHAAWoQngEgAEGgAmogAUGgAmoQACAAQdACaiABQdACahASIAFBoAJqQYiZBSABQaACahCeASAAQYADaiABQYADahAAIABBsANqIAFBsANqEBIgAUGAA2pB6JkFIAFBgANqEJ4BIABB4ANqIAFB4ANqEAAgAEGQBGogAUGQBGoQEiABQeADakHImgUgAUHgA2oQngELbAAgAEGomwUgARCeASAAQeAAakGInAUgAUHgAGoQngEgAEHAAWpB6JwFIAFBwAFqEJ4BIABBoAJqQcidBSABQaACahCeASAAQYADakGongUgAUGAA2oQngEgAEHgA2pBiJ8FIAFB4ANqEJ4BC4oCACAAIAEQACAAQTBqIAFBMGoQEiABQeifBSABEJ4BIABB4ABqIAFB4ABqEAAgAEGQAWogAUGQAWoQEiABQeAAakHIoAUgAUHgAGoQngEgAEHAAWogAUHAAWoQACAA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AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAA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W0Ks+ide9vcnxsy3gmLWrFgSDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAA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";
- exports.pq = 712;
- exports.pr = 3464;
- exports.pG1gen = 42104;
- exports.pG1zero = 42248;
- exports.pG1b = 4776;
- exports.pG2gen = 42392;
- exports.pG2zero = 42680;
- exports.pG2b = 16984;
- exports.pOneT = 42968;
- exports.prePSize = 288;
- exports.preQSize = 20448;
- exports.n8q = 48;
- exports.n8r = 32;
- exports.q = "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787";
- exports.r = "52435875175126190479447740508185965837690552500527637822603658699938581184513";
-
\ No newline at end of file
+export const code = "AGFzbQEAAAABlQESYAJ/fwBgAX8AYAF/AX9gAn9/AX9gA39/fwF/YAN/f38AYAN/fn8AYAJ/fgBgBH9/f38AYAV/f39/fwBgBH9/f38Bf2AGf39/f39/AGAIf39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38Bf2AHf39/f39/fwF/YAl/f39/f39/f38Bf2ALf39/f39/f39/f38BfwIPAQNlbnYGbWVtb3J5AgAZA9MC0QIAAQIBAwMEBAUAAAYHCAUCBQUAAAUAAAAAAgIAAQUICQUFBQgICAgAAgABAgEDAwQEBQAABgcIBQIFBQAABQAAAAACAgABBQgJBQUFCAgICAACBQAAAgICAQEAAAADAwMAAAUFBQAABQUFAAAAAAACAgUABQAAAAAFBQUFBQoLDAkKCwwJCAgDAAgIAgAACQsLBQULAAgNCQgCAgEBAAUFAAUFAAAAAAMACAICCQgAAgICAQEAAAADAwMAAAUFBQAABQUFAAAAAAACAgUABQAAAAAFBQUFBQoLDAkKCwwJCAgFAwAICAIAAAkLCwUFCwUDAAgIAgAACQsLBQULBQUJCQkJCQACAgEBAAUABQUAAgAAAwAIAgkIAAICAQEABQUABQUAAAAAAwAIAgIJCAACBQgJBQAAAAAAAAAAAAACAgICBQAAAAUAAAAABA4PEBEFB84nvQIJaW50cV9jb3B5AAAJaW50cV96ZXJvAAEIaW50cV9vbmUAAwtpbnRxX2lzWmVybwACB2ludHFfZXEABAhpbnRxX2d0ZQAFCGludHFfYWRkAAYIaW50cV9zdWIABwhpbnRxX211bAAIC2ludHFfc3F1YXJlAAkOaW50cV9zcXVhcmVPbGQACghpbnRxX2RpdgAND2ludHFfaW52ZXJzZU1vZAAOCGYxbV9jb3B5AAAIZjFtX3plcm8AAQpmMW1faXNaZXJvAAIGZjFtX2VxAAQHZjFtX2FkZAAQB2YxbV9zdWIAEQdmMW1fbmVnABIOZjFtX2lzTmVnYXRpdmUAGQlmMW1faXNPbmUADwhmMW1fc2lnbgAaC2YxbV9tUmVkdWN0ABMHZjFtX211bAAUCmYxbV9zcXVhcmUAFQ1mMW1fc3F1YXJlT2xkABYSZjFtX2Zyb21Nb250Z29tZXJ5ABgQZjFtX3RvTW9udGdvbWVyeQAXC2YxbV9pbnZlcnNlABsHZjFtX29uZQAcCGYxbV9sb2FkAB0PZjFtX3RpbWVzU2NhbGFyAB4HZjFtX2V4cAAmEGYxbV9iYXRjaEludmVyc2UAHwhmMW1fc3FydAAnDGYxbV9pc1NxdWFyZQAoFWYxbV9iYXRjaFRvTW9udGdvbWVyeQAgF2YxbV9iYXRjaEZyb21Nb250Z29tZXJ5ACEJaW50cl9jb3B5ACkJaW50cl96ZXJvACoIaW50cl9vbmUALAtpbnRyX2lzWmVybwArB2ludHJfZXEALQhpbnRyX2d0ZQAuCGludHJfYWRkAC8IaW50cl9zdWIAMAhpbnRyX211bAAxC2ludHJfc3F1YXJlADIOaW50cl9zcXVhcmVPbGQAMwhpbnRyX2RpdgA2D2ludHJfaW52ZXJzZU1vZAA3CGZybV9jb3B5ACkIZnJtX3plcm8AKgpmcm1faXNaZXJvACsGZnJtX2VxAC0HZnJtX2FkZAA5B2ZybV9zdWIAOgdmcm1fbmVnADsOZnJtX2lzTmVnYXRpdmUAQglmcm1faXNPbmUAOAhmcm1fc2lnbgBDC2ZybV9tUmVkdWN0ADwHZnJtX211bAA9CmZybV9zcXVhcmUAPg1mcm1fc3F1YXJlT2xkAD8SZnJtX2Zyb21Nb250Z29tZXJ5AEEQZnJtX3RvTW9udGdvbWVyeQBAC2ZybV9pbnZlcnNlAEQHZnJtX29uZQBFCGZybV9sb2FkAEYPZnJtX3RpbWVzU2NhbGFyAEcHZnJtX2V4cABPEGZybV9iYXRjaEludmVyc2UASAhmcm1fc3FydABQDGZybV9pc1NxdWFyZQBRFWZybV9iYXRjaFRvTW9udGdvbWVyeQBJF2ZybV9iYXRjaEZyb21Nb250Z29tZXJ5AEoGZnJfYWRkADkGZnJfc3ViADoGZnJfbmVnADsGZnJfbXVsAFIJZnJfc3F1YXJlAFMKZnJfaW52ZXJzZQBUDWZyX2lzTmVnYXRpdmUAVQdmcl9jb3B5ACkHZnJfemVybwAqBmZyX29uZQBFCWZyX2lzWmVybwArBWZyX2VxAC0MZzFtX211bHRpZXhwAIABEmcxbV9tdWx0aWV4cF9jaHVuawB/EmcxbV9tdWx0aWV4cEFmZmluZQCEARhnMW1fbXVsdGlleHBBZmZpbmVfY2h1bmsAgwEKZzFtX2lzWmVybwBXEGcxbV9pc1plcm9BZmZpbmUAVgZnMW1fZXEAXwtnMW1fZXFNaXhlZABeDGcxbV9lcUFmZmluZQBdCGcxbV9jb3B5AFsOZzFtX2NvcHlBZmZpbmUAWghnMW1femVybwBZDmcxbV96ZXJvQWZmaW5lAFgKZzFtX2RvdWJsZQBhEGcxbV9kb3VibGVBZmZpbmUAYAdnMW1fYWRkAGQMZzFtX2FkZE1peGVkAGMNZzFtX2FkZEFmZmluZQBiB2cxbV9uZWcAZg1nMW1fbmVnQWZmaW5lAGUHZzFtX3N1YgBpDGcxbV9zdWJNaXhlZABoDWcxbV9zdWJBZmZpbmUAZxJnMW1fZnJvbU1vbnRnb21lcnkAaxhnMW1fZnJvbU1vbnRnb21lcnlBZmZpbmUAahBnMW1fdG9Nb250Z29tZXJ5AG0WZzFtX3RvTW9udGdvbWVyeUFmZmluZQBsD2cxbV90aW1lc1NjYWxhcgCFARVnMW1fdGltZXNTY2FsYXJBZmZpbmUAhgENZzFtX25vcm1hbGl6ZQByCmcxbV9MRU10b1UAdApnMW1fTEVNdG9DAHUKZzFtX1V0b0xFTQB2CmcxbV9DdG9MRU0Adw9nMW1fYmF0Y2hMRU10b1UAeA9nMW1fYmF0Y2hMRU10b0MAeQ9nMW1fYmF0Y2hVdG9MRU0Aeg9nMW1fYmF0Y2hDdG9MRU0AewxnMW1fdG9BZmZpbmUAbg5nMW1fdG9KYWNvYmlhbgBcEWcxbV9iYXRjaFRvQWZmaW5lAHETZzFtX2JhdGNoVG9KYWNvYmlhbgB8C2cxbV9pbkN1cnZlAHARZzFtX2luQ3VydmVBZmZpbmUAbxdmcm1fX3JldmVyc2VQZXJtdXRhdGlvbgCIAQdmcm1fZmZ0AIwBCGZybV9pZmZ0AI0BCmZybV9yYXdmZnQAigELZnJtX2ZmdEpvaW4AjgEOZnJtX2ZmdEpvaW5FeHQAjwERZnJtX2ZmdEpvaW5FeHRJbnYAkAEKZnJtX2ZmdE1peACRAQxmcm1fZmZ0RmluYWwAkgEdZnJtX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24AkwEIcG9sX3plcm8AlAEPcG9sX2NvbnN0cnVjdExDAJUBDHFhcF9idWlsZEFCQwCWAQtxYXBfam9pbkFCQwCXAQxxYXBfYmF0Y2hBZGQAmAEKZjJtX2lzWmVybwCZAQlmMm1faXNPbmUAmgEIZjJtX3plcm8AmwEHZjJtX29uZQCcAQhmMm1fY29weQCdAQdmMm1fbXVsAJ4BCGYybV9tdWwxAJ8BCmYybV9zcXVhcmUAoAEHZjJtX2FkZAChAQdmMm1fc3ViAKIBB2YybV9uZWcAowEIZjJtX3NpZ24AqgENZjJtX2Nvbmp1Z2F0ZQCkARJmMm1fZnJvbU1vbnRnb21lcnkApgEQZjJtX3RvTW9udGdvbWVyeQClAQZmMm1fZXEApwELZjJtX2ludmVyc2UAqAEHZjJtX2V4cACtAQ9mMm1fdGltZXNTY2FsYXIAqQEQZjJtX2JhdGNoSW52ZXJzZQCsAQhmMm1fc3FydACuAQxmMm1faXNTcXVhcmUArwEOZjJtX2lzTmVnYXRpdmUAqwEMZzJtX211bHRpZXhwANoBEmcybV9tdWx0aWV4cF9jaHVuawDZARJnMm1fbXVsdGlleHBBZmZpbmUA3gEYZzJtX211bHRpZXhwQWZmaW5lX2NodW5rAN0BCmcybV9pc1plcm8AsQEQZzJtX2lzWmVyb0FmZmluZQCwAQZnMm1fZXEAuQELZzJtX2VxTWl4ZWQAuAEMZzJtX2VxQWZmaW5lALcBCGcybV9jb3B5ALUBDmcybV9jb3B5QWZmaW5lALQBCGcybV96ZXJvALMBDmcybV96ZXJvQWZmaW5lALIBCmcybV9kb3VibGUAuwEQZzJtX2RvdWJsZUFmZmluZQC6AQdnMm1fYWRkAL4BDGcybV9hZGRNaXhlZAC9AQ1nMm1fYWRkQWZmaW5lALwBB2cybV9uZWcAwAENZzJtX25lZ0FmZmluZQC/AQdnMm1fc3ViAMMBDGcybV9zdWJNaXhlZADCAQ1nMm1fc3ViQWZmaW5lAMEBEmcybV9mcm9tTW9udGdvbWVyeQDFARhnMm1fZnJvbU1vbnRnb21lcnlBZmZpbmUAxAEQZzJtX3RvTW9udGdvbWVyeQDHARZnMm1fdG9Nb250Z29tZXJ5QWZmaW5lAMYBD2cybV90aW1lc1NjYWxhcgDfARVnMm1fdGltZXNTY2FsYXJBZmZpbmUA4AENZzJtX25vcm1hbGl6ZQDMAQpnMm1fTEVNdG9VAM4BCmcybV9MRU10b0MAzwEKZzJtX1V0b0xFTQDQAQpnMm1fQ3RvTEVNANEBD2cybV9iYXRjaExFTXRvVQDSAQ9nMm1fYmF0Y2hMRU10b0MA0wEPZzJtX2JhdGNoVXRvTEVNANQBD2cybV9iYXRjaEN0b0xFTQDVAQxnMm1fdG9BZmZpbmUAyAEOZzJtX3RvSmFjb2JpYW4AtgERZzJtX2JhdGNoVG9BZmZpbmUAywETZzJtX2JhdGNoVG9KYWNvYmlhbgDWAQtnMm1faW5DdXJ2ZQDKARFnMm1faW5DdXJ2ZUFmZmluZQDJAQtnMW1fdGltZXNGcgDhARdnMW1fX3JldmVyc2VQZXJtdXRhdGlvbgDjAQdnMW1fZmZ0AOcBCGcxbV9pZmZ0AOgBCmcxbV9yYXdmZnQA5QELZzFtX2ZmdEpvaW4A6QEOZzFtX2ZmdEpvaW5FeHQA6gERZzFtX2ZmdEpvaW5FeHRJbnYA6wEKZzFtX2ZmdE1peADsAQxnMW1fZmZ0RmluYWwA7QEdZzFtX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24A7gELZzJtX3RpbWVzRnIA7wEXZzJtX19yZXZlcnNlUGVybXV0YXRpb24A8QEHZzJtX2ZmdAD1AQhnMm1faWZmdAD2AQpnMm1fcmF3ZmZ0APMBC2cybV9mZnRKb2luAPcBDmcybV9mZnRKb2luRXh0APgBEWcybV9mZnRKb2luRXh0SW52APkBCmcybV9mZnRNaXgA+gEMZzJtX2ZmdEZpbmFsAPsBHWcybV9wcmVwYXJlTGFncmFuZ2VFdmFsdWF0aW9uAPwBEWcxbV90aW1lc0ZyQWZmaW5lAP0BEWcybV90aW1lc0ZyQWZmaW5lAP4BEWZybV9iYXRjaEFwcGx5S2V5AP8BEWcxbV9iYXRjaEFwcGx5S2V5AIACFmcxbV9iYXRjaEFwcGx5S2V5TWl4ZWQAgQIRZzJtX2JhdGNoQXBwbHlLZXkAggIWZzJtX2JhdGNoQXBwbHlLZXlNaXhlZACDAgpmNm1faXNaZXJvAIUCCWY2bV9pc09uZQCGAghmNm1femVybwCHAgdmNm1fb25lAIgCCGY2bV9jb3B5AIkCB2Y2bV9tdWwAigIKZjZtX3NxdWFyZQCLAgdmNm1fYWRkAIwCB2Y2bV9zdWIAjQIHZjZtX25lZwCOAghmNm1fc2lnbgCPAhJmNm1fZnJvbU1vbnRnb21lcnkAkQIQZjZtX3RvTW9udGdvbWVyeQCQAgZmNm1fZXEAkgILZjZtX2ludmVyc2UAkwIHZjZtX2V4cACXAg9mNm1fdGltZXNTY2FsYXIAlAIQZjZtX2JhdGNoSW52ZXJzZQCWAg5mNm1faXNOZWdhdGl2ZQCVAgpmdG1faXNaZXJvAJkCCWZ0bV9pc09uZQCaAghmdG1femVybwCbAgdmdG1fb25lAJwCCGZ0bV9jb3B5AJ0CB2Z0bV9tdWwAngIIZnRtX211bDEAnwIKZnRtX3NxdWFyZQCgAgdmdG1fYWRkAKECB2Z0bV9zdWIAogIHZnRtX25lZwCjAghmdG1fc2lnbgCqAg1mdG1fY29uanVnYXRlAKQCEmZ0bV9mcm9tTW9udGdvbWVyeQCmAhBmdG1fdG9Nb250Z29tZXJ5AKUCBmZ0bV9lcQCnAgtmdG1faW52ZXJzZQCoAgdmdG1fZXhwAK0CD2Z0bV90aW1lc1NjYWxhcgCpAhBmdG1fYmF0Y2hJbnZlcnNlAKwCCGZ0bV9zcXJ0AK4CDGZ0bV9pc1NxdWFyZQCvAg5mdG1faXNOZWdhdGl2ZQCrAhFmdG1fZnJvYmVuaXVzTWFwMAC0AhFmdG1fZnJvYmVuaXVzTWFwMQC1AhFmdG1fZnJvYmVuaXVzTWFwMgC2AhFmdG1fZnJvYmVuaXVzTWFwMwC3AhFmdG1fZnJvYmVuaXVzTWFwNAC4AhFmdG1fZnJvYmVuaXVzTWFwNQC5AhFmdG1fZnJvYmVuaXVzTWFwNgC6AhFmdG1fZnJvYmVuaXVzTWFwNwC7AhFmdG1fZnJvYmVuaXVzTWFwOAC8AhFmdG1fZnJvYmVuaXVzTWFwOQC9AhNibHMxMjM4MV9wYWlyaW5nRXExAMsCE2JsczEyMzgxX3BhaXJpbmdFcTIAzAITYmxzMTIzODFfcGFpcmluZ0VxMwDNAhNibHMxMjM4MV9wYWlyaW5nRXE0AM4CE2JsczEyMzgxX3BhaXJpbmdFcTUAzwIQYmxzMTIzODFfcGFpcmluZwDQAhJibHMxMjM4MV9wcmVwYXJlRzEAxAISYmxzMTIzODFfcHJlcGFyZUcyAMUCE2JsczEyMzgxX21pbGxlckxvb3AAxgIcYmxzMTIzODFfZmluYWxFeHBvbmVudGlhdGlvbgDKAh9ibHMxMjM4MV9maW5hbEV4cG9uZW50aWF0aW9uT2xkAMcCGmJsczEyMzgxX19jeWNsb3RvbWljU3F1YXJlAMgCGmJsczEyMzgxX19jeWNsb3RvbWljRXhwX3cwAMkCCGY2bV9tdWwxALACCWY2bV9tdWwwMQCxAgpmdG1fbXVsMDE0ALICEWcxbV9pbkdyb3VwQWZmaW5lAL4CC2cxbV9pbkdyb3VwAL8CEWcybV9pbkdyb3VwQWZmaW5lAMACC2cybV9pbkdyb3VwAMECCvK7BdECPgAgASAAKQMANwMAIAEgACkDCDcDCCABIAApAxA3AxAgASAAKQMYNwMYIAEgACkDIDcDICABIAApAyg3AygLLAAgAEIANwMAIABCADcDCCAAQgA3AxAgAEIANwMYIABCADcDICAAQgA3AygLTQAgACkDKFAEQCAAKQMgUARAIAApAxhQBEAgACkDEFAEQCAAKQMIUARAIAApAwBQDwVBAA8LBUEADwsFQQAPCwVBAA8LBUEADwtBAA8LLAAgAEIBNwMAIABCADcDCCAAQgA3AxAgAEIANwMYIABCADcDICAAQgA3AygLawAgACkDKCABKQMoUQRAIAApAyAgASkDIFEEQCAAKQMYIAEpAxhRBEAgACkDECABKQMQUQRAIAApAwggASkDCFEEQCAAKQMAIAEpAwBRDwVBAA8LBUEADwsFQQAPCwVBAA8LBUEADwtBAA8LxQEAIAApAyggASkDKFQEQEEADwUgACkDKCABKQMoVgRAQQEPBSAAKQMgIAEpAyBUBEBBAA8FIAApAyAgASkDIFYEQEEBDwUgACkDGCABKQMYVARAQQAPBSAAKQMYIAEpAxhWBEBBAQ8FIAApAxAgASkDEFQEQEEADwUgACkDECABKQMQVgRAQQEPBSAAKQMIIAEpAwhUBEBBAA8FIAApAwggASkDCFYEQEEBDwUgACkDACABKQMAWg8LCwsLCwsLCwsLQQAPC7wCAQF+IAA1AgAgATUCAHwhAyACIAM+AgAgADUCBCABNQIEfCADQiCIfCEDIAIgAz4CBCAANQIIIAE1Agh8IANCIIh8IQMgAiADPgIIIAA1AgwgATUCDHwgA0IgiHwhAyACIAM+AgwgADUCECABNQIQfCADQiCIfCEDIAIgAz4CECAANQIUIAE1AhR8IANCIIh8IQMgAiADPgIUIAA1AhggATUCGHwgA0IgiHwhAyACIAM+AhggADUCHCABNQIcfCADQiCIfCEDIAIgAz4CHCAANQIgIAE1AiB8IANCIIh8IQMgAiADPgIgIAA1AiQgATUCJHwgA0IgiHwhAyACIAM+AiQgADUCKCABNQIofCADQiCIfCEDIAIgAz4CKCAANQIsIAE1Aix8IANCIIh8IQMgAiADPgIsIANCIIinC5ADAQF+IAA1AgAgATUCAH0hAyACIANC/////w+DPgIAIAA1AgQgATUCBH0gA0Igh3whAyACIANC/////w+DPgIEIAA1AgggATUCCH0gA0Igh3whAyACIANC/////w+DPgIIIAA1AgwgATUCDH0gA0Igh3whAyACIANC/////w+DPgIMIAA1AhAgATUCEH0gA0Igh3whAyACIANC/////w+DPgIQIAA1AhQgATUCFH0gA0Igh3whAyACIANC/////w+DPgIUIAA1AhggATUCGH0gA0Igh3whAyACIANC/////w+DPgIYIAA1AhwgATUCHH0gA0Igh3whAyACIANC/////w+DPgIcIAA1AiAgATUCIH0gA0Igh3whAyACIANC/////w+DPgIgIAA1AiQgATUCJH0gA0Igh3whAyACIANC/////w+DPgIkIAA1AiggATUCKH0gA0Igh3whAyACIANC/////w+DPgIoIAA1AiwgATUCLH0gA0Igh3whAyACIANC/////w+DPgIsIANCIIenC6ciGgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4gA0L/////D4MgADUCACIFIAE1AgAiBn58IQMgBCADQiCIfCEEIAIgAz4CACAEQiCIIQMgBEL/////D4MgBSABNQIEIgh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIEIgcgBn58IQQgAyAEQiCIfCEDIAIgBD4CBCADQiCIIQQgA0L/////D4MgBSABNQIIIgp+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIIIgkgBn58IQMgBCADQiCIfCEEIAIgAz4CCCAEQiCIIQMgBEL/////D4MgBSABNQIMIgx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIMIgsgBn58IQQgAyAEQiCIfCEDIAIgBD4CDCADQiCIIQQgA0L/////D4MgBSABNQIQIg5+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyALIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIQIg0gBn58IQMgBCADQiCIfCEEIAIgAz4CECAEQiCIIQMgBEL/////D4MgBSABNQIUIhB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIUIg8gBn58IQQgAyAEQiCIfCEDIAIgBD4CFCADQiCIIQQgA0L/////D4MgBSABNQIYIhJ+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyALIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyANIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIYIhEgBn58IQMgBCADQiCIfCEEIAIgAz4CGCAEQiCIIQMgBEL/////D4MgBSABNQIcIhR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIcIhMgBn58IQQgAyAEQiCIfCEDIAIgBD4CHCADQiCIIQQgA0L/////D4MgBSABNQIgIhZ+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyALIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyANIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyARIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyATIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIgIhUgBn58IQMgBCADQiCIfCEEIAIgAz4CICAEQiCIIQMgBEL/////D4MgBSABNQIkIhh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIBZ+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIkIhcgBn58IQQgAyAEQiCIfCEDIAIgBD4CJCADQiCIIQQgA0L/////D4MgBSABNQIoIhp+fCEDIAQgA0IgiHwhBCADQv////8PgyAHIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIBZ+fCEDIAQgA0IgiHwhBCADQv////8PgyALIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyANIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyARIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyATIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyAXIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIoIhkgBn58IQMgBCADQiCIfCEEIAIgAz4CKCAEQiCIIQMgBEL/////D4MgBSABNQIsIhx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAHIBp+fCEEIAMgBEIgiHwhAyAEQv////8PgyAJIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIBZ+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAXIAp+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIsIhsgBn58IQQgAyAEQiCIfCEDIAIgBD4CLCADQiCIIQQgA0L/////D4MgByAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSAafnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAWfnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgESASfnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgFyAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgGyAIfnwhAyAEIANCIIh8IQQgAiADPgIwIARCIIghAyAEQv////8PgyAJIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyALIBp+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIBZ+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAXIA5+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIAx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAbIAp+fCEEIAMgBEIgiHwhAyACIAQ+AjQgA0IgiCEEIANC/////w+DIAsgHH58IQMgBCADQiCIfCEEIANC/////w+DIA0gGn58IQMgBCADQiCIfCEEIANC/////w+DIA8gGH58IQMgBCADQiCIfCEEIANC/////w+DIBEgFn58IQMgBCADQiCIfCEEIANC/////w+DIBMgFH58IQMgBCADQiCIfCEEIANC/////w+DIBUgEn58IQMgBCADQiCIfCEEIANC/////w+DIBcgEH58IQMgBCADQiCIfCEEIANC/////w+DIBkgDn58IQMgBCADQiCIfCEEIANC/////w+DIBsgDH58IQMgBCADQiCIfCEEIAIgAz4COCAEQiCIIQMgBEL/////D4MgDSAcfnwhBCADIARCIIh8IQMgBEL/////D4MgDyAafnwhBCADIARCIIh8IQMgBEL/////D4MgESAYfnwhBCADIARCIIh8IQMgBEL/////D4MgEyAWfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgFyASfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgGyAOfnwhBCADIARCIIh8IQMgAiAEPgI8IANCIIghBCADQv////8PgyAPIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyARIBp+fCEDIAQgA0IgiHwhBCADQv////8PgyATIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIBZ+fCEDIAQgA0IgiHwhBCADQv////8PgyAXIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyAZIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyAbIBB+fCEDIAQgA0IgiHwhBCACIAM+AkAgBEIgiCEDIARC/////w+DIBEgHH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgGn58IQQgAyAEQiCIfCEDIARC/////w+DIBUgGH58IQQgAyAEQiCIfCEDIARC/////w+DIBcgFn58IQQgAyAEQiCIfCEDIARC/////w+DIBkgFH58IQQgAyAEQiCIfCEDIARC/////w+DIBsgEn58IQQgAyAEQiCIfCEDIAIgBD4CRCADQiCIIQQgA0L/////D4MgEyAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAafnwhAyAEIANCIIh8IQQgA0L/////D4MgFyAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAWfnwhAyAEIANCIIh8IQQgA0L/////D4MgGyAUfnwhAyAEIANCIIh8IQQgAiADPgJIIARCIIghAyAEQv////8PgyAVIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAXIBp+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAbIBZ+fCEEIAMgBEIgiHwhAyACIAQ+AkwgA0IgiCEEIANC/////w+DIBcgHH58IQMgBCADQiCIfCEEIANC/////w+DIBkgGn58IQMgBCADQiCIfCEEIANC/////w+DIBsgGH58IQMgBCADQiCIfCEEIAIgAz4CUCAEQiCIIQMgBEL/////D4MgGSAcfnwhBCADIARCIIh8IQMgBEL/////D4MgGyAafnwhBCADIARCIIh8IQMgAiAEPgJUIANCIIghBCADQv////8PgyAbIBx+fCEDIAQgA0IgiHwhBCACIAM+AlggBEIgiCEDIAIgBD4CXAvOIBABfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfkIAIQJCACEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAA1AgAiBiAGfnwhAiADIAJCIIh8IQMgASACPgIAIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AgQiB358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AgQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCCCIIfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgByAHfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CCCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIMIgl+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAh+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIMIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhAiCn58IQIgAyACQiCIfCEDIAJC/////w+DIAcgCX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAggCH58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCFCILfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAKfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAJfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CFCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIYIgx+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAt+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAp+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAJIAl+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIYIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhwiDX58IQIgAyACQiCIfCEDIAJC/////w+DIAcgDH58IQIgAyACQiCIfCEDIAJC/////w+DIAggC358IQIgAyACQiCIfCEDIAJC/////w+DIAkgCn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCICIOfnwhAiADIAJCIIh8IQMgAkL/////D4MgByANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSALfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCiAKfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CICADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIkIg9+fCECIAMgAkIgiHwhAyACQv////8PgyAHIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAIIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAJIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAKIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIkIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AigiEH58IQIgAyACQiCIfCEDIAJC/////w+DIAcgD358IQIgAyACQiCIfCEDIAJC/////w+DIAggDn58IQIgAyACQiCIfCEDIAJC/////w+DIAkgDX58IQIgAyACQiCIfCEDIAJC/////w+DIAogDH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAsgC358IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCLCIRfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAPfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiANfnwhAiADIAJCIIh8IQMgAkL/////D4MgCyAMfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CLCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByARfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSAPfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgCyANfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgDCAMfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CMCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCCARfnwhAiADIAJCIIh8IQMgAkL/////D4MgCSAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAPfnwhAiADIAJCIIh8IQMgAkL/////D4MgCyAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgDCANfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CNCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCSARfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgCyAPfnwhAiADIAJCIIh8IQMgAkL/////D4MgDCAOfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgDSANfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4COCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCiARfnwhAiADIAJCIIh8IQMgAkL/////D4MgCyAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgDCAPfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAOfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CPCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCyARfnwhAiADIAJCIIh8IQMgAkL/////D4MgDCAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAPfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgDiAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CQCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgDCARfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgDiAPfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CRCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgDSARfnwhAiADIAJCIIh8IQMgAkL/////D4MgDiAQfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgDyAPfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CSCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgDiARfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAQfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CTCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgDyARfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgECAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CUCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgECARfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CVCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgESARfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CWCADIQQgBEIgiCEFIAEgBD4CXAsKACAAIAAgARAIC5ICAQF+IAA1AAAgAX4hAyACIAM+AAAgADUABCABfiADQiCIfCEDIAIgAz4ABCAANQAIIAF+IANCIIh8IQMgAiADPgAIIAA1AAwgAX4gA0IgiHwhAyACIAM+AAwgADUAECABfiADQiCIfCEDIAIgAz4AECAANQAUIAF+IANCIIh8IQMgAiADPgAUIAA1ABggAX4gA0IgiHwhAyACIAM+ABggADUAHCABfiADQiCIfCEDIAIgAz4AHCAANQAgIAF+IANCIIh8IQMgAiADPgAgIAA1ACQgAX4gA0IgiHwhAyACIAM+ACQgADUAKCABfiADQiCIfCEDIAIgAz4AKCAANQAsIAF+IANCIIh8IQMgAiADPgAsC04CAX4BfyAAIQMgAzUAACABfCECIAMgAj4AACACQiCIIQICQANAIAJQDQEgA0EEaiEDIAM1AAAgAnwhAiADIAI+AAAgAkIgiCECDAALCwurAgcBfwF/AX8BfwF+AX4BfyACBEAgAiEFBUHYACEFCyADBEAgAyEEBUGIASEECyAAIAQQACABQSgQACAFEAFBuAEQAUEvIQZBLyEHAkADQEEoIAdqLQAAIAdBA0ZyDQEgB0EBayEHDAALC0EoIAdqQQNrNQAAQgF8IQggCEIBUQRAQgBCAIAaCwJAA0ACQANAIAQgBmotAAAgBkEHRnINASAGQQFrIQYMAAsLIAQgBmpBB2spAAAhCSAJIAiAIQkgBiAHa0EEayEKAkADQCAJQoCAgIBwg1AgCkEATnENASAJQgiIIQkgCkEBaiEKDAALCyAJUARAIARBKBAFRQ0CQgEhCUEAIQoLQSggCUHoARALIARB6AEgCmsgBBAHGiAFIApqIAkQDAwACwsLtQILAX8BfwF/AX8BfwF/AX8BfwF/AX8Bf0GYAiEDQZgCEAFBACELQcgCIQUgAUHIAhAAQfgCIQRB+AIQA0EAIQxBqAMhCCAAQagDEABB2AMhBkGIBCEHQZgFIQoCQANAIAgQAg0BIAUgCCAGIAcQDSAGIARBuAQQCCALBEAgDARAQbgEIAMQBQRAQbgEIAMgChAHGkEAIQ0FIANBuAQgChAHGkEBIQ0LBUG4BCADIAoQBhpBASENCwUgDARAQbgEIAMgChAGGkEAIQ0FIANBuAQQBQRAIANBuAQgChAHGkEAIQ0FQbgEIAMgChAHGkEBIQ0LCwsgAyEJIAQhAyAKIQQgCSEKIAwhCyANIQwgBSEJIAghBSAHIQggCSEHDAALCyALBEAgASADIAIQBxoFIAMgAhAACwsKACAAQagGEAQPCywAIAAgASACEAYEQCACQcgFIAIQBxoFIAJByAUQBQRAIAJByAUgAhAHGgsLCxcAIAAgASACEAcEQCACQcgFIAIQBhoLCwsAQdgGIAAgARARC/wkAwF+AX4BfkL9//P/DyECQgAhAyAANQIAIAJ+Qv////8PgyEEIAA1AgAgA0IgiHxByAU1AgAgBH58IQMgACADPgIAIAA1AgQgA0IgiHxByAU1AgQgBH58IQMgACADPgIEIAA1AgggA0IgiHxByAU1AgggBH58IQMgACADPgIIIAA1AgwgA0IgiHxByAU1AgwgBH58IQMgACADPgIMIAA1AhAgA0IgiHxByAU1AhAgBH58IQMgACADPgIQIAA1AhQgA0IgiHxByAU1AhQgBH58IQMgACADPgIUIAA1AhggA0IgiHxByAU1AhggBH58IQMgACADPgIYIAA1AhwgA0IgiHxByAU1AhwgBH58IQMgACADPgIcIAA1AiAgA0IgiHxByAU1AiAgBH58IQMgACADPgIgIAA1AiQgA0IgiHxByAU1AiQgBH58IQMgACADPgIkIAA1AiggA0IgiHxByAU1AiggBH58IQMgACADPgIoIAA1AiwgA0IgiHxByAU1AiwgBH58IQMgACADPgIsQfgIIANCIIg+AgBCACEDIAA1AgQgAn5C/////w+DIQQgADUCBCADQiCIfEHIBTUCACAEfnwhAyAAIAM+AgQgADUCCCADQiCIfEHIBTUCBCAEfnwhAyAAIAM+AgggADUCDCADQiCIfEHIBTUCCCAEfnwhAyAAIAM+AgwgADUCECADQiCIfEHIBTUCDCAEfnwhAyAAIAM+AhAgADUCFCADQiCIfEHIBTUCECAEfnwhAyAAIAM+AhQgADUCGCADQiCIfEHIBTUCFCAEfnwhAyAA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DiADfnwgBXwhBiAGQv////8PgyEaIAZCIIghBSAbIA8gA358IAV8IQYgBkL/////D4MhGyAGQiCIIQUgHCAQIAN+fCAFfCEGIAZC/////w+DIRwgBkIgiCEFIB0gESADfnwgBXwhBiAGQv////8PgyEdIAZCIIghBSAeIBIgA358IAV8IQYgBkL/////D4MhHiAGQiCIIQUgBSEfIBNC/f/z/w9+Qv////8PgyEEIBMgBEKr1f7/D358IQYgBkIgiCEFIBQgBEL///vPC358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQv//z4oLfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC/v+v9QF+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBEKk7MO1D358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgGCAEQqClw7kGfnwgBXwhBiAGQv////8PgyEXIAZCIIghBSAZIARCv6WUnA9+fCAFfCEGIAZC/////w+DIRggBkIgiCEFIBogBEKEl92jBn58IAV8IQYgBkL/////D4MhGSAGQiCIIQUgGyAEQtfZrpoEfnwgBXwhBiAGQv////8PgyEaIAZCIIghBSAcIARCts/u2AR+fCAFfCEGIAZC/////w+DIRsgBkIgiCEFIB0gBEKazf/LA358IAV8IQYgBkL/////D4MhHCAGQiCIIQUgHiAEQuqjhNABfnwgBXwhBiAGQv////8PgyEdIAZCIIghBSAfIAV8IR4gATUCBCEDIBMgByADfnwhBiAGQv////8PgyETIAZCIIghBSAUIAggA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSAJIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgCiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAXIAsgA358IAV8IQYgBkL/////D4MhFyAGQiCIIQUgGCAMIAN+fCAFfCEGIAZC/////w+DIRggBkIgiCEFIBkgDSADfnwgBXwhBiAGQv////8PgyEZIAZCIIghBSAaIA4gA358IAV8IQYgBkL/////D4MhGiAGQiCIIQUgGyAPIAN+fCAFfCEGIAZC/////w+DIRsgBkIgiCEFIBwgECADfnwgBXwhBiAGQv////8PgyEcIAZCIIghBSAdIBEgA358IAV8IQYgBkL/////D4MhHSAGQiCIIQUgHiASIAN+fCAFfCEGIAZC/////w+DIR4gBkIgiCEFIAUhHyATQv3/8/8PfkL/////D4MhBCATIARCq9X+/w9+fCEGIAZCIIghBSAUIARC///7zwt+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBUgBEL//8+KC358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFiAEQv7/r/UBfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAXIARCpOzDtQ9+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIBggBEKgpcO5Bn58IAV8IQYgBkL/////D4MhFyAGQiCIIQUgGSAEQr+llJwPfnwgBXwhBiAGQv////8PgyEYIAZCIIghBSAaIARChJfdowZ+fCAFfCEGIAZC/////w+DIRkgBkIgiCEFIBsgBELX2a6aBH58IAV8IQYgBkL/////D4MhGiAGQiCIIQUgHCAEQrbP7tgEfnwgBXwhBiAGQv////8PgyEbIAZCIIghBSAdIARCms3/ywN+fCAFfCEGIAZC/////w+DIRwgBkIgiCEFIB4gBELqo4TQAX58IAV8IQYgBkL/////D4MhHSAGQiCIIQUgHyAFfCEeIAE1AgghAyATIAcgA358IQYgBkL/////D4MhEyAGQiCIIQUgFCAIIAN+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBUgCSADfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAWIAogA358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgFyALIAN+fCAFfCEGIAZC/////w+DIRcgBkIgiCEFIBggDCADfnwgBXwhBiAGQv////8PgyEYIAZCIIghBSAZIA0gA358IAV8IQYgBkL/////D4MhGSAGQiCIIQUgGiAOIAN+fCAFfCEGIAZC/////w+DIRogBkIgiCEFIBsgDyADfnwgBXwhBiAGQv////8PgyEbIAZCIIghBSAcIBAgA358IAV8IQYgBkL/////D4MhHCAGQiCIIQUgHSARIAN+fCAFfCEGIAZC/////w+DIR0gBkIgiCEFIB4gEiADfnwgBXwhBiAGQv////8PgyEeIAZCIIghBSAFIR8gE0L9//P/D35C/////w+DIQQgEyAEQqvV/v8PfnwhBiAGQiCIIQUgFCAEQv//+88LfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAVIARC///Pigt+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBYgBEL+/6/1AX58IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFyAEQqTsw7UPfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAYIARCoKXDuQZ+fCAFfCEGIAZC/////w+DIRcgBkIgiCEFIBkgBEK/pZScD358IAV8IQYgBkL/////D4MhGCAGQiCIIQUgGiAEQoSX3aMGfnwgBXwhBiAGQv////8PgyEZIAZCIIghBSAbIARC19mumgR+fCAFfCEGIAZC/////w+DIRogBkIgiCEFIBwgBEK2z+7YBH58IAV8IQYgBkL/////D4MhGyAGQiCIIQUgHSAEQprN/8sDfnwgBXwhBiAGQv////8PgyEcIAZCIIghBSAeIARC6qOE0AF+fCAFfCEGIAZC/////w+DIR0gBkIgiCEFIB8gBXwhHiABNQIMIQMgEyAHIAN+fCEGIAZC/////w+DIRMgBkIgiCEFIBQgCCADfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAVIAkgA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFiAKIAN+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIBcgCyADfnwgBXwhBiAGQv////8PgyEXIAZCIIghBSAYIAwgA358IAV8IQYgBkL/////D4MhGCAGQiCIIQUgGSANIAN+fCAFfCEGIAZC/////w+DIRkgBkIgiCEFIBogDiADfnwgBXwhBiAGQv////8PgyEaIAZCIIghBSAbIA8gA358IAV8IQYgBkL/////D4MhGyAGQiCIIQUgHCAQIAN+fCAFfCEGIAZC/////w+DIRwgBkIgiCEFIB0gESADfnwgBXwhBiAGQv////8PgyEdIAZCIIghBSAeIBIgA358IAV8IQYgBkL/////D4MhHiAGQiCIIQUgBSEfIBNC/f/z/w9+Qv////8PgyEEIBMgBEKr1f7/D358IQYgBkIgiCEFIBQgBEL///vPC358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQv//z4oLfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC/v+v9QF+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBEKk7MO1D358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgGCAEQqClw7kGfnwgBXwhBiAGQv////8PgyEXIAZCIIghBSAZIARCv6WUnA9+fCAFfCEGIAZC/////w+DIRggBkIgiCEFIBogBEKEl92jBn58IAV8IQYgBkL/////D4MhGSAGQiCIIQUgGyAEQtfZrpoEfnwgBXwhBiAGQv////8PgyEaIAZCIIghBSAcIARCts/u2AR+fCAFfCEGIAZC/////w+DIRsgBkIgiCEFIB0gBEKazf/LA358IAV8IQYgBkL/////D4MhHCAGQiCIIQUgHiAEQuqjhNABfnwgBXwhBiAGQv////8PgyEdIAZCIIghBSAfIAV8IR4gATUCECEDIBMgByADfnwhBiAGQv////8PgyETIAZCIIghBSAUIAggA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSAJIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgCiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAXIAsgA358IAV8IQYgBkL/////D4MhFyAGQiCIIQUgGCAMIAN+fCAFfCEGIAZC/////w+DIRggBkIgiCEFIBkgDSADfnwgBXwhBiAGQv////8PgyEZIAZCIIghBSAaIA4gA358IAV8IQYgBkL/////D4MhGiAGQiCIIQUgGyAPIAN+fCAFfCEGIAZC/////w+DIRsgBkIgiCEFIBwgECADfnwgBXwhBiAGQv////8PgyEcIAZCIIghBSAdIBEgA358IAV8IQYgBkL/////D4MhHSAGQiCIIQUgHiASIAN+fCAFfCEGIAZC/////w+DIR4gBkIgiCEFIAUhHyATQv3/8/8PfkL/////D4MhBCATIARCq9X+/w9+fCEGIAZCIIghBSAUIARC///7zwt+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBUgBEL//8+KC358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFiAEQv7/r/UBfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAXIARCpOzDtQ9+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIBggBEKgpcO5Bn58IAV8IQYgBkL/////D4MhFyAGQiCIIQUgGSAEQr+llJwPfnwgBXwhBiAGQv////8PgyEYIAZCIIghBSAaIARChJfdowZ+fCAFfCEGIAZC/////w+DIRkgBkIgiCEFIBsgBELX2a6aBH58IAV8IQYgBkL/////D4MhGiAGQiCIIQUgHCAEQrbP7tgEfnwgBXwhBiAGQv////8PgyEbIAZCIIghBSAdIARCms3/ywN+fCAFfCEGIAZC/////w+DIRwgBkIgiCEFIB4gBELqo4TQAX58IAV8IQYgBkL/////D4MhHSAGQiCIIQUgHyAFfCEeIAE1AhQhAyATIAcgA358IQYgBkL/////D4MhEyAGQiCIIQUgFCAIIAN+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBUgCSADfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAWIAogA358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgFyALIAN+fCAFfCEGIAZC/////w+DIRcgBkIgiCEFIBggDCADfnwgBXwhBiAGQv////8PgyEYIAZCIIghBSAZIA0gA358IAV8IQYgBkL/////D4MhGSAGQiCIIQUgGiAOIAN+fCAFfCEGIAZC/////w+DIRogBkIgiCEFIBsgDyADfnwgBXwhBiAGQv////8PgyEbIAZCIIghBSAcIBAgA358IAV8IQYgBkL/////D4MhHCAGQiCIIQUgHSARIAN+fCAFfCEGIAZC/////w+DIR0gBkIgiCEFIB4gEiADfnwgBXwhBiAGQv////8PgyEeIAZCIIghBSAFIR8gE0L9//P/D35C/////w+DIQQgEyAEQqvV/v8PfnwhBiAGQiCIIQUgFCAEQv//+88LfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAVIARC///Pigt+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBYgBEL+/6/1AX58IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFyAEQqTsw7UPfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAYIARCoKXDuQZ+fCAFfCEGIAZC/////w+DIRcgBkIgiCEFIBkgBEK/pZScD358IAV8IQYgBkL/////D4MhGCAGQiCIIQUgGiAEQoSX3aMGfnwgBXwhBiAGQv////8PgyEZIAZCIIghBSAbIARC19mumgR+fCAFfCEGIAZC/////w+DIRogBkIgiCEFIBwgBEK2z+7YBH58IAV8IQYgBkL/////D4MhGyAGQiCIIQUgHSAEQprN/8sDfnwgBXwhBiAGQv////8PgyEcIAZCIIghBSAeIARC6qOE0AF+fCAFfCEGIAZC/////w+DIR0gBkIgiCEFIB8gBXwhHiABNQIYIQMgEyAHIAN+fCEGIAZC/////w+DIRMgBkIgiCEFIBQgCCADfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAVIAkgA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFiAKIAN+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIBcgCyADfnwgBXwhBiAGQv////8PgyEXIAZCIIghBSAYIAwgA358IAV8IQYgBkL/////D4MhGCAGQiCIIQUgGSANIAN+fCAFfCEGIAZC/////w+DIRkgBkIgiCEFIBogDiADfnwgBXwhBiAGQv////8PgyEaIAZCIIghBSAbIA8gA358IAV8IQYgBkL/////D4MhGyAGQiCIIQUgHCAQIAN+fCAFfCEGIAZC/////w+DIRwgBkIgiCEFIB0gESADfnwgBXwhBiAGQv////8PgyEdIAZCIIghBSAeIBIgA358IAV8IQYgBkL/////D4MhHiAGQiCIIQUgBSEfIBNC/f/z/w9+Qv////8PgyEEIBMgBEKr1f7/D358IQYgBkIgiCEFIBQgBEL///vPC358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQv//z4oLfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC/v+v9QF+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBEKk7MO1D358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgGCAEQqClw7kGfnwgBXwhBiAGQv////8PgyEXIAZCIIghBSAZIARCv6WUnA9+fCAFfCEGIAZC/////w+DIRggBkIgiCEFIBogBEKEl92jBn58IAV8IQYgBkL/////D4MhGSAGQiCIIQUgGyAEQtfZrpoEfnwgBXwhBiAGQv////8PgyEaIAZCIIghBSAcIARCts/u2AR+fCAFfCEGIAZC/////w+DIRsgBkIgiCEFIB0gBEKazf/LA358IAV8IQYgBkL/////D4MhHCAGQiCIIQUgHiAEQuqjhNABfnwgBXwhBiAGQv////8PgyEdIAZCIIghBSAfIAV8IR4gATUCHCEDIBMgByADfnwhBiAGQv////8PgyETIAZCIIghBSAUIAggA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSAJIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgCiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAXIAsgA358IAV8IQYgBkL/////D4MhFyAGQiCIIQUgGCAMIAN+fCAFfCEGIAZC/////w+DIRggBkIgiCEFIBkgDSADfnwgBXwhBiAGQv////8PgyEZIAZCIIghBSAaIA4gA358IAV8IQYgBkL/////D4MhGiAGQiCIIQUgGyAPIAN+fCAFfCEGIAZC/////w+DIRsgBkIgiCEFIBwgECADfnwgBXwhBiAGQv////8PgyEcIAZCIIghBSAdIBEgA358IAV8IQYgBkL/////D4MhHSAGQiCIIQUgHiASIAN+fCAFfCEGIAZC/////w+DIR4gBkIgiCEFIAUhHyATQv3/8/8PfkL/////D4MhBCATIARCq9X+/w9+fCEGIAZCIIghBSAUIARC///7zwt+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBUgBEL//8+KC358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFiAEQv7/r/UBfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAXIARCpOzDtQ9+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIBggBEKgpcO5Bn58IAV8IQYgBkL/////D4MhFyAGQiCIIQUgGSAEQr+llJwPfnwgBXwhBiAGQv////8PgyEYIAZCIIghBSAaIARChJfdowZ+fCAFfCEGIAZC/////w+DIRkgBkIgiCEFIBsgBELX2a6aBH58IAV8IQYgBkL/////D4MhGiAGQiCIIQUgHCAEQrbP7tgEfnwgBXwhBiAGQv////8PgyEbIAZCIIghBSAdIARCms3/ywN+fCAFfCEGIAZC/////w+DIRwgBkIgiCEFIB4gBELqo4TQAX58IAV8IQYgBkL/////D4MhHSAGQiCIIQUgHyAFfCEeIAE1AiAhAyATIAcgA358IQYgBkL/////D4MhEyAGQiCIIQUgFCAIIAN+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBUgCSADfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAWIAogA358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgFyALIAN+fCAFfCEGIAZC/////w+DIRcgBkIgiCEFIBggDCADfnwgBXwhBiAGQv////8PgyEYIAZCIIghBSAZIA0gA358IAV8IQYgBkL/////D4MhGSAGQiCIIQUgGiAOIAN+fCAFfCEGIAZC/////w+DIRogBkIgiCEFIBsgDyADfnwgBXwhBiAGQv////8PgyEbIAZCIIghBSAcIBAgA358IAV8IQYgBkL/////D4MhHCAGQiCIIQUgHSARIAN+fCAFfCEGIAZC/////w+DIR0gBkIgiCEFIB4gEiADfnwgBXwhBiAGQv////8PgyEeIAZCIIghBSAFIR8gE0L9//P/D35C/////w+DIQQgEyAEQqvV/v8PfnwhBiAGQiCIIQUgFCAEQv//+88LfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAVIARC///Pigt+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBYgBEL+/6/1AX58IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFyAEQqTsw7UPfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAYIARCoKXDuQZ+fCAFfCEGIAZC/////w+DIRcgBkIgiCEFIBkgBEK/pZScD358IAV8IQYgBkL/////D4MhGCAGQiCIIQUgGiAEQoSX3aMGfnwgBXwhBiAGQv////8PgyEZIAZCIIghBSAbIARC19mumgR+fCAFfCEGIAZC/////w+DIRogBkIgiCEFIBwgBEK2z+7YBH58IAV8IQYgBkL/////D4MhGyAGQiCIIQUgHSAEQprN/8sDfnwgBXwhBiAGQv////8PgyEcIAZCIIghBSAeIARC6qOE0AF+fCAFfCEGIAZC/////w+DIR0gBkIgiCEFIB8gBXwhHiABNQIkIQMgEyAHIAN+fCEGIAZC/////w+DIRMgBkIgiCEFIBQgCCADfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAVIAkgA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFiAKIAN+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIBcgCyADfnwgBXwhBiAGQv////8PgyEXIAZCIIghBSAYIAwgA358IAV8IQYgBkL/////D4MhGCAGQiCIIQUgGSANIAN+fCAFfCEGIAZC/////w+DIRkgBkIgiCEFIBogDiADfnwgBXwhBiAGQv////8PgyEaIAZCIIghBSAbIA8gA358IAV8IQYgBkL/////D4MhGyAGQiCIIQUgHCAQIAN+fCAFfCEGIAZC/////w+DIRwgBkIgiCEFIB0gESADfnwgBXwhBiAGQv////8PgyEdIAZCIIghBSAeIBIgA358IAV8IQYgBkL/////D4MhHiAGQiCIIQUgBSEfIBNC/f/z/w9+Qv////8PgyEEIBMgBEKr1f7/D358IQYgBkIgiCEFIBQgBEL///vPC358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQv//z4oLfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC/v+v9QF+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBEKk7MO1D358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgGCAEQqClw7kGfnwgBXwhBiAGQv////8PgyEXIAZCIIghBSAZIARCv6WUnA9+fCAFfCEGIAZC/////w+DIRggBkIgiCEFIBogBEKEl92jBn58IAV8IQYgBkL/////D4MhGSAGQiCIIQUgGyAEQtfZrpoEfnwgBXwhBiAGQv////8PgyEaIAZCIIghBSAcIARCts/u2AR+fCAFfCEGIAZC/////w+DIRsgBkIgiCEFIB0gBEKazf/LA358IAV8IQYgBkL/////D4MhHCAGQiCIIQUgHiAEQuqjhNABfnwgBXwhBiAGQv////8PgyEdIAZCIIghBSAfIAV8IR4gATUCKCEDIBMgByADfnwhBiAGQv////8PgyETIAZCIIghBSAUIAggA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSAJIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgCiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAXIAsgA358IAV8IQYgBkL/////D4MhFyAGQiCIIQUgGCAMIAN+fCAFfCEGIAZC/////w+DIRggBkIgiCEFIBkgDSADfnwgBXwhBiAGQv////8PgyEZIAZCIIghBSAaIA4gA358IAV8IQYgBkL/////D4MhGiAGQiCIIQUgGyAPIAN+fCAFfCEGIAZC/////w+DIRsgBkIgiCEFIBwgECADfnwgBXwhBiAGQv////8PgyEcIAZCIIghBSAdIBEgA358IAV8IQYgBkL/////D4MhHSAGQiCIIQUgHiASIAN+fCAFfCEGIAZC/////w+DIR4gBkIgiCEFIAUhHyATQv3/8/8PfkL/////D4MhBCATIARCq9X+/w9+fCEGIAZCIIghBSAUIARC///7zwt+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBUgBEL//8+KC358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFiAEQv7/r/UBfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAXIARCpOzDtQ9+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIBggBEKgpcO5Bn58IAV8IQYgBkL/////D4MhFyAGQiCIIQUgGSAEQr+llJwPfnwgBXwhBiAGQv////8PgyEYIAZCIIghBSAaIARChJfdowZ+fCAFfCEGIAZC/////w+DIRkgBkIgiCEFIBsgBELX2a6aBH58IAV8IQYgBkL/////D4MhGiAGQiCIIQUgHCAEQrbP7tgEfnwgBXwhBiAGQv////8PgyEbIAZCIIghBSAdIARCms3/ywN+fCAFfCEGIAZC/////w+DIRwgBkIgiCEFIB4gBELqo4TQAX58IAV8IQYgBkL/////D4MhHSAGQiCIIQUgHyAFfCEeIAE1AiwhAyATIAcgA358IQYgBkL/////D4MhEyAGQiCIIQUgFCAIIAN+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBUgCSADfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAWIAogA358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgFyALIAN+fCAFfCEGIAZC/////w+DIRcgBkIgiCEFIBggDCADfnwgBXwhBiAGQv////8PgyEYIAZCIIghBSAZIA0gA358IAV8IQYgBkL/////D4MhGSAGQiCIIQUgGiAOIAN+fCAFfCEGIAZC/////w+DIRogBkIgiCEFIBsgDyADfnwgBXwhBiAGQv////8PgyEbIAZCIIghBSAcIBAgA358IAV8IQYgBkL/////D4MhHCAGQiCIIQUgHSARIAN+fCAFfCEGIAZC/////w+DIR0gBkIgiCEFIB4gEiADfnwgBXwhBiAGQv////8PgyEeIAZCIIghBSAFIR8gE0L9//P/D35C/////w+DIQQgEyAEQqvV/v8PfnwhBiAGQiCIIQUgFCAEQv//+88LfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAVIARC///Pigt+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBYgBEL+/6/1AX58IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFyAEQqTsw7UPfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAYIARCoKXDuQZ+fCAFfCEGIAZC/////w+DIRcgBkIgiCEFIBkgBEK/pZScD358IAV8IQYgBkL/////D4MhGCAGQiCIIQUgGiAEQoSX3aMGfnwgBXwhBiAGQv////8PgyEZIAZCIIghBSAbIARC19mumgR+fCAFfCEGIAZC/////w+DIRogBkIgiCEFIBwgBEK2z+7YBH58IAV8IQYgBkL/////D4MhGyAGQiCIIQUgHSAEQprN/8sDfnwgBXwhBiAGQv////8PgyEcIAZCIIghBSAeIARC6qOE0AF+fCAFfCEGIAZC/////w+DIR0gBkIgiCEFIB8gBXwhHiACIBM+AgAgAiAUPgIEIAIgFT4CCCACIBY+AgwgAiAXPgIQIAIgGD4CFCACIBk+AhggAiAaPgIcIAIgGz4CICACIBw+AiQgAiAdPgIoIAIgHj4CLCACQcgFEAUEQCACQcgFIAIQBxoLC/dNHgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfiAANQIAIQYgADUCBCEHIAA1AgghCCAANQIMIQkgADUCECEKIAA1AhQhCyAANQIYIQwgADUCHCENIAA1AiAhDiAANQIkIQ8gADUCKCEQIAA1AiwhESASIAYgBn58IQQgBEL/////D4MhEiAEQiCIIQMgByAGfiEFIBMgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEyAEQiCIIAVCIIhCAYZ8IQMgCCAGfiEFIBQgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFCAEQiCIIAVCIIhCAYZ8IQMgCSAGfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgCiAGfiEFIBYgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFiAEQiCIIAVCIIhCAYZ8IQMgCyAGfiEFIBcgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFyAEQiCIIAVCIIhCAYZ8IQMgDCAGfiEFIBggBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGCAEQiCIIAVCIIhCAYZ8IQMgDSAGfiEFIBkgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGSAEQiCIIAVCIIhCAYZ8IQMgDiAGfiEFIBogBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGiAEQiCIIAVCIIhCAYZ8IQMgDyAGfiEFIBsgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGyAEQiCIIAVCIIhCAYZ8IQMgECAGfiEFIBwgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhHCAEQiCIIAVCIIhCAYZ8IQMgESAGfiEFIB0gBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhHSAEQiCIIAVCIIhCAYZ8IQMgHiADfCEEIARC/////w+DIR4gHyAEQiCIfCEfIBJC/f/z/w9+Qv////8PgyECIBIgAkKr1f7/D358IQQgBEIgiCEDIBMgAkL///vPC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQv//z4oLfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC/v+v9QF+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgAkKk7MO1D358IAN8IQQgBEL/////D4MhFSAEQiCIIQMgFyACQqClw7kGfnwgA3whBCAEQv////8PgyEWIARCIIghAyAYIAJCv6WUnA9+fCADfCEEIARC/////w+DIRcgBEIgiCEDIBkgAkKEl92jBn58IAN8IQQgBEL/////D4MhGCAEQiCIIQMgGiACQtfZrpoEfnwgA3whBCAEQv////8PgyEZIARCIIghAyAbIAJCts/u2AR+fCADfCEEIARC/////w+DIRogBEIgiCEDIBwgAkKazf/LA358IAN8IQQgBEL/////D4MhGyAEQiCIIQMgHSACQuqjhNABfnwgA3whBCAEQv////8PgyEcIARCIIghAyAeIAN8IQQgBEL/////D4MhHSAfIARCIIh8IR5CACEfIBMgByAHfnwhBCAEQv////8PgyETIARCIIghAyAIIAd+IQUgFCAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEUIARCIIggBUIgiEIBhnwhAyAJIAd+IQUgFSAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEVIARCIIggBUIgiEIBhnwhAyAKIAd+IQUgFiAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEWIARCIIggBUIgiEIBhnwhAyALIAd+IQUgFyAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEXIARCIIggBUIgiEIBhnwhAyAMIAd+IQUgGCAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEYIARCIIggBUIgiEIBhnwhAyANIAd+IQUgGSAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEZIARCIIggBUIgiEIBhnwhAyAOIAd+IQUgGiAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEaIARCIIggBUIgiEIBhnwhAyAPIAd+IQUgGyAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEbIARCIIggBUIgiEIBhnwhAyAQIAd+IQUgHCAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEcIARCIIggBUIgiEIBhnwhAyARIAd+IQUgHSAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEdIARCIIggBUIgiEIBhnwhAyAeIAN8IQQgBEL/////D4MhHiAfIARCIIh8IR8gEkL9//P/D35C/////w+DIQIgEiACQqvV/v8PfnwhBCAEQiCIIQMgEyACQv//+88LfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJC///Pigt+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkL+/6/1AX58IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiACQqTsw7UPfnwgA3whBCAEQv////8PgyEVIARCIIghAyAXIAJCoKXDuQZ+fCADfCEEIARC/////w+DIRYgBEIgiCEDIBggAkK/pZScD358IAN8IQQgBEL/////D4MhFyAEQiCIIQMgGSACQoSX3aMGfnwgA3whBCAEQv////8PgyEYIARCIIghAyAaIAJC19mumgR+fCADfCEEIARC/////w+DIRkgBEIgiCEDIBsgAkK2z+7YBH58IAN8IQQgBEL/////D4MhGiAEQiCIIQMgHCACQprN/8sDfnwgA3whBCAEQv////8PgyEbIARCIIghAyAdIAJC6qOE0AF+fCADfCEEIARC/////w+DIRwgBEIgiCEDIB4gA3whBCAEQv////8PgyEdIB8gBEIgiHwhHkIAIR8gFCAIIAh+fCEEIARC/////w+DIRQgBEIgiCEDIAkgCH4hBSAVIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRUgBEIgiCAFQiCIQgGGfCEDIAogCH4hBSAWIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRYgBEIgiCAFQiCIQgGGfCEDIAsgCH4hBSAXIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRcgBEIgiCAFQiCIQgGGfCEDIAwgCH4hBSAYIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRggBEIgiCAFQiCIQgGGfCEDIA0gCH4hBSAZIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRkgBEIgiCAFQiCIQgGGfCEDIA4gCH4hBSAaIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRogBEIgiCAFQiCIQgGGfCEDIA8gCH4hBSAbIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRsgBEIgiCAFQiCIQgGGfCEDIBAgCH4hBSAcIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRwgBEIgiCAFQiCIQgGGfCEDIBEgCH4hBSAdIAVC/////w+DQgGGfCADfCEEIARC/////w+DIR0gBEIgiCAFQiCIQgGGfCEDIB4gA3whBCAEQv////8PgyEeIB8gBEIgiHwhHyASQv3/8/8PfkL/////D4MhAiASIAJCq9X+/w9+fCEEIARCIIghAyATIAJC///7zwt+fCADfCEEIARC/////w+DIRIgBEIgiCEDIBQgAkL//8+KC358IAN8IQQgBEL/////D4MhEyAEQiCIIQMgFSACQv7/r/UBfnwgA3whBCAEQv////8PgyEUIARCIIghAyAWIAJCpOzDtQ9+fCADfCEEIARC/////w+DIRUgBEIgiCEDIBcgAkKgpcO5Bn58IAN8IQQgBEL/////D4MhFiAEQiCIIQMgGCACQr+llJwPfnwgA3whBCAEQv////8PgyEXIARCIIghAyAZIAJChJfdowZ+fCADfCEEIARC/////w+DIRggBEIgiCEDIBogAkLX2a6aBH58IAN8IQQgBEL/////D4MhGSAEQiCIIQMgGyACQrbP7tgEfnwgA3whBCAEQv////8PgyEaIARCIIghAyAcIAJCms3/ywN+fCADfCEEIARC/////w+DIRsgBEIgiCEDIB0gAkLqo4TQAX58IAN8IQQgBEL/////D4MhHCAEQiCIIQMgHiADfCEEIARC/////w+DIR0gHyAEQiCIfCEeQgAhHyAVIAkgCX58IQQgBEL/////D4MhFSAEQiCIIQMgCiAJfiEFIBYgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFiAEQiCIIAVCIIhCAYZ8IQMgCyAJfiEFIBcgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFyAEQiCIIAVCIIhCAYZ8IQMgDCAJfiEFIBggBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGCAEQiCIIAVCIIhCAYZ8IQMgDSAJfiEFIBkgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGSAEQiCIIAVCIIhCAYZ8IQMgDiAJfiEFIBogBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGiAEQiCIIAVCIIhCAYZ8IQMgDyAJfiEFIBsgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGyAEQiCIIAVCIIhCAYZ8IQMgECAJfiEFIBwgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhHCAEQiCIIAVCIIhCAYZ8IQMgESAJfiEFIB0gBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhHSAEQiCIIAVCIIhCAYZ8IQMgHiADfCEEIARC/////w+DIR4gHyAEQiCIfCEfIBJC/f/z/w9+Qv////8PgyECIBIgAkKr1f7/D358IQQgBEIgiCEDIBMgAkL///vPC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQv//z4oLfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC/v+v9QF+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgAkKk7MO1D358IAN8IQQgBEL/////D4MhFSAEQiCIIQMgFyACQqClw7kGfnwgA3whBCAEQv////8PgyEWIARCIIghAyAYIAJCv6WUnA9+fCADfCEEIARC/////w+DIRcgBEIgiCEDIBkgAkKEl92jBn58IAN8IQQgBEL/////D4MhGCAEQiCIIQMgGiACQtfZrpoEfnwgA3whBCAEQv////8PgyEZIARCIIghAyAbIAJCts/u2AR+fCADfCEEIARC/////w+DIRogBEIgiCEDIBwgAkKazf/LA358IAN8IQQgBEL/////D4MhGyAEQiCIIQMgHSACQuqjhNABfnwgA3whBCAEQv////8PgyEcIARCIIghAyAeIAN8IQQgBEL/////D4MhHSAfIARCIIh8IR5CACEfIBYgCiAKfnwhBCAEQv////8PgyEWIARCIIghAyALIAp+IQUgFyAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEXIARCIIggBUIgiEIBhnwhAyAMIAp+IQUgGCAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEYIARCIIggBUIgiEIBhnwhAyANIAp+IQUgGSAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEZIARCIIggBUIgiEIBhnwhAyAOIAp+IQUgGiAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEaIARCIIggBUIgiEIBhnwhAyAPIAp+IQUgGyAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEbIARCIIggBUIgiEIBhnwhAyAQIAp+IQUgHCAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEcIARCIIggBUIgiEIBhnwhAyARIAp+IQUgHSAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEdIARCIIggBUIgiEIBhnwhAyAeIAN8IQQgBEL/////D4MhHiAfIARCIIh8IR8gEkL9//P/D35C/////w+DIQIgEiACQqvV/v8PfnwhBCAEQiCIIQMgEyACQv//+88LfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJC///Pigt+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkL+/6/1AX58IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiACQqTsw7UPfnwgA3whBCAEQv////8PgyEVIARCIIghAyAXIAJCoKXDuQZ+fCADfCEEIARC/////w+DIRYgBEIgiCEDIBggAkK/pZScD358IAN8IQQgBEL/////D4MhFyAEQiCIIQMgGSACQoSX3aMGfnwgA3whBCAEQv////8PgyEYIARCIIghAyAaIAJC19mumgR+fCADfCEEIARC/////w+DIRkgBEIgiCEDIBsgAkK2z+7YBH58IAN8IQQgBEL/////D4MhGiAEQiCIIQMgHCACQprN/8sDfnwgA3whBCAEQv////8PgyEbIARCIIghAyAdIAJC6qOE0AF+fCADfCEEIARC/////w+DIRwgBEIgiCEDIB4gA3whBCAEQv////8PgyEdIB8gBEIgiHwhHkIAIR8gFyALIAt+fCEEIARC/////w+DIRcgBEIgiCEDIAwgC34hBSAYIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRggBEIgiCAFQiCIQgGGfCEDIA0gC34hBSAZIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRkgBEIgiCAFQiCIQgGGfCEDIA4gC34hBSAaIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRogBEIgiCAFQiCIQgGGfCEDIA8gC34hBSAbIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRsgBEIgiCAFQiCIQgGGfCEDIBAgC34hBSAcIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRwgBEIgiCAFQiCIQgGGfCEDIBEgC34hBSAdIAVC/////w+DQgGGfCADfCEEIARC/////w+DIR0gBEIgiCAFQiCIQgGGfCEDIB4gA3whBCAEQv////8PgyEeIB8gBEIgiHwhHyASQv3/8/8PfkL/////D4MhAiASIAJCq9X+/w9+fCEEIARCIIghAyATIAJC///7zwt+fCADfCEEIARC/////w+DIRIgBEIgiCEDIBQgAkL//8+KC358IAN8IQQgBEL/////D4MhEyAEQiCIIQMgFSACQv7/r/UBfnwgA3whBCAEQv////8PgyEUIARCIIghAyAWIAJCpOzDtQ9+fCADfCEEIARC/////w+DIRUgBEIgiCEDIBcgAkKgpcO5Bn58IAN8IQQgBEL/////D4MhFiAEQiCIIQMgGCACQr+llJwPfnwgA3whBCAEQv////8PgyEXIARCIIghAyAZIAJChJfdowZ+fCADfCEEIARC/////w+DIRggBEIgiCEDIBogAkLX2a6aBH58IAN8IQQgBEL/////D4MhGSAEQiCIIQMgGyACQrbP7tgEfnwgA3whBCAEQv////8PgyEaIARCIIghAyAcIAJCms3/ywN+fCADfCEEIARC/////w+DIRsgBEIgiCEDIB0gAkLqo4TQAX58IAN8IQQgBEL/////D4MhHCAEQiCIIQMgHiADfCEEIARC/////w+DIR0gHyAEQiCIfCEeQgAhHyAYIAwgDH58IQQgBEL/////D4MhGCAEQiCIIQMgDSAMfiEFIBkgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGSAEQiCIIAVCIIhCAYZ8IQMgDiAMfiEFIBogBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGiAEQiCIIAVCIIhCAYZ8IQMgDyAMfiEFIBsgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhGyAEQiCIIAVCIIhCAYZ8IQMgECAMfiEFIBwgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhHCAEQiCIIAVCIIhCAYZ8IQMgESAMfiEFIB0gBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhHSAEQiCIIAVCIIhCAYZ8IQMgHiADfCEEIARC/////w+DIR4gHyAEQiCIfCEfIBJC/f/z/w9+Qv////8PgyECIBIgAkKr1f7/D358IQQgBEIgiCEDIBMgAkL///vPC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQv//z4oLfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC/v+v9QF+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgAkKk7MO1D358IAN8IQQgBEL/////D4MhFSAEQiCIIQMgFyACQqClw7kGfnwgA3whBCAEQv////8PgyEWIARCIIghAyAYIAJCv6WUnA9+fCADfCEEIARC/////w+DIRcgBEIgiCEDIBkgAkKEl92jBn58IAN8IQQgBEL/////D4MhGCAEQiCIIQMgGiACQtfZrpoEfnwgA3whBCAEQv////8PgyEZIARCIIghAyAbIAJCts/u2AR+fCADfCEEIARC/////w+DIRogBEIgiCEDIBwgAkKazf/LA358IAN8IQQgBEL/////D4MhGyAEQiCIIQMgHSACQuqjhNABfnwgA3whBCAEQv////8PgyEcIARCIIghAyAeIAN8IQQgBEL/////D4MhHSAfIARCIIh8IR5CACEfIBkgDSANfnwhBCAEQv////8PgyEZIARCIIghAyAOIA1+IQUgGiAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEaIARCIIggBUIgiEIBhnwhAyAPIA1+IQUgGyAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEbIARCIIggBUIgiEIBhnwhAyAQIA1+IQUgHCAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEcIARCIIggBUIgiEIBhnwhAyARIA1+IQUgHSAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEdIARCIIggBUIgiEIBhnwhAyAeIAN8IQQgBEL/////D4MhHiAfIARCIIh8IR8gEkL9//P/D35C/////w+DIQIgEiACQqvV/v8PfnwhBCAEQiCIIQMgEyACQv//+88LfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJC///Pigt+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkL+/6/1AX58IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiACQqTsw7UPfnwgA3whBCAEQv////8PgyEVIARCIIghAyAXIAJCoKXDuQZ+fCADfCEEIARC/////w+DIRYgBEIgiCEDIBggAkK/pZScD358IAN8IQQgBEL/////D4MhFyAEQiCIIQMgGSACQoSX3aMGfnwgA3whBCAEQv////8PgyEYIARCIIghAyAaIAJC19mumgR+fCADfCEEIARC/////w+DIRkgBEIgiCEDIBsgAkK2z+7YBH58IAN8IQQgBEL/////D4MhGiAEQiCIIQMgHCACQprN/8sDfnwgA3whBCAEQv////8PgyEbIARCIIghAyAdIAJC6qOE0AF+fCADfCEEIARC/////w+DIRwgBEIgiCEDIB4gA3whBCAEQv////8PgyEdIB8gBEIgiHwhHkIAIR8gGiAOIA5+fCEEIARC/////w+DIRogBEIgiCEDIA8gDn4hBSAbIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRsgBEIgiCAFQiCIQgGGfCEDIBAgDn4hBSAcIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRwgBEIgiCAFQiCIQgGGfCEDIBEgDn4hBSAdIAVC/////w+DQgGGfCADfCEEIARC/////w+DIR0gBEIgiCAFQiCIQgGGfCEDIB4gA3whBCAEQv////8PgyEeIB8gBEIgiHwhHyASQv3/8/8PfkL/////D4MhAiASIAJCq9X+/w9+fCEEIARCIIghAyATIAJC///7zwt+fCADfCEEIARC/////w+DIRIgBEIgiCEDIBQgAkL//8+KC358IAN8IQQgBEL/////D4MhEyAEQiCIIQMgFSACQv7/r/UBfnwgA3whBCAEQv////8PgyEUIARCIIghAyAWIAJCpOzDtQ9+fCADfCEEIARC/////w+DIRUgBEIgiCEDIBcgAkKgpcO5Bn58IAN8IQQgBEL/////D4MhFiAEQiCIIQMgGCACQr+llJwPfnwgA3whBCAEQv////8PgyEXIARCIIghAyAZIAJChJfdowZ+fCADfCEEIARC/////w+DIRggBEIgiCEDIBogAkLX2a6aBH58IAN8IQQgBEL/////D4MhGSAEQiCIIQMgGyACQrbP7tgEfnwgA3whBCAEQv////8PgyEaIARCIIghAyAcIAJCms3/ywN+fCADfCEEIARC/////w+DIRsgBEIgiCEDIB0gAkLqo4TQAX58IAN8IQQgBEL/////D4MhHCAEQiCIIQMgHiADfCEEIARC/////w+DIR0gHyAEQiCIfCEeQgAhHyAbIA8gD358IQQgBEL/////D4MhGyAEQiCIIQMgECAPfiEFIBwgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhHCAEQiCIIAVCIIhCAYZ8IQMgESAPfiEFIB0gBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhHSAEQiCIIAVCIIhCAYZ8IQMgHiADfCEEIARC/////w+DIR4gHyAEQiCIfCEfIBJC/f/z/w9+Qv////8PgyECIBIgAkKr1f7/D358IQQgBEIgiCEDIBMgAkL///vPC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQv//z4oLfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC/v+v9QF+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgAkKk7MO1D358IAN8IQQgBEL/////D4MhFSAEQiCIIQMgFyACQqClw7kGfnwgA3whBCAEQv////8PgyEWIARCIIghAyAYIAJCv6WUnA9+fCADfCEEIARC/////w+DIRcgBEIgiCEDIBkgAkKEl92jBn58IAN8IQQgBEL/////D4MhGCAEQiCIIQMgGiACQtfZrpoEfnwgA3whBCAEQv////8PgyEZIARCIIghAyAbIAJCts/u2AR+fCADfCEEIARC/////w+DIRogBEIgiCEDIBwgAkKazf/LA358IAN8IQQgBEL/////D4MhGyAEQiCIIQMgHSACQuqjhNABfnwgA3whBCAEQv////8PgyEcIARCIIghAyAeIAN8IQQgBEL/////D4MhHSAfIARCIIh8IR5CACEfIBwgECAQfnwhBCAEQv////8PgyEcIARCIIghAyARIBB+IQUgHSAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEdIARCIIggBUIgiEIBhnwhAyAeIAN8IQQgBEL/////D4MhHiAfIARCIIh8IR8gEkL9//P/D35C/////w+DIQIgEiACQqvV/v8PfnwhBCAEQiCIIQMgEyACQv//+88LfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJC///Pigt+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkL+/6/1AX58IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiACQqTsw7UPfnwgA3whBCAEQv////8PgyEVIARCIIghAyAXIAJCoKXDuQZ+fCADfCEEIARC/////w+DIRYgBEIgiCEDIBggAkK/pZScD358IAN8IQQgBEL/////D4MhFyAEQiCIIQMgGSACQoSX3aMGfnwgA3whBCAEQv////8PgyEYIARCIIghAyAaIAJC19mumgR+fCADfCEEIARC/////w+DIRkgBEIgiCEDIBsgAkK2z+7YBH58IAN8IQQgBEL/////D4MhGiAEQiCIIQMgHCACQprN/8sDfnwgA3whBCAEQv////8PgyEbIARCIIghAyAdIAJC6qOE0AF+fCADfCEEIARC/////w+DIRwgBEIgiCEDIB4gA3whBCAEQv////8PgyEdIB8gBEIgiHwhHkIAIR8gHSARIBF+fCEEIARC/////w+DIR0gBEIgiCEDIB4gA3whBCAEQv////8PgyEeIB8gBEIgiHwhHyASQv3/8/8PfkL/////D4MhAiASIAJCq9X+/w9+fCEEIARCIIghAyATIAJC///7zwt+fCADfCEEIARC/////w+DIRIgBEIgiCEDIBQgAkL//8+KC358IAN8IQQgBEL/////D4MhEyAEQiCIIQMgFSACQv7/r/UBfnwgA3whBCAEQv////8PgyEUIARCIIghAyAWIAJCpOzDtQ9+fCADfCEEIARC/////w+DIRUgBEIgiCEDIBcgAkKgpcO5Bn58IAN8IQQgBEL/////D4MhFiAEQiCIIQMgGCACQr+llJwPfnwgA3whBCAEQv////8PgyEXIARCIIghAyAZIAJChJfdowZ+fCADfCEEIARC/////w+DIRggBEIgiCEDIBogAkLX2a6aBH58IAN8IQQgBEL/////D4MhGSAEQiCIIQMgGyACQrbP7tgEfnwgA3whBCAEQv////8PgyEaIARCIIghAyAcIAJCms3/ywN+fCADfCEEIARC/////w+DIRsgBEIgiCEDIB0gAkLqo4TQAX58IAN8IQQgBEL/////D4MhHCAEQiCIIQMgHiADfCEEIARC/////w+DIR0gHyAEQiCIfCEeQgAhHyABIBI+AgAgASATPgIEIAEgFD4CCCABIBU+AgwgASAWPgIQIAEgFz4CFCABIBg+AhggASAZPgIcIAEgGj4CICABIBs+AiQgASAcPgIoIAEgHT4CLCAepwRAIAFByAUgARAHGgUgAUHIBRAFBEAgAUHIBSABEAcaCwsLCgAgACAAIAEQFAsLACAAQfgFIAEQFAsVACAAQfgREABBqBIQAUH4ESABEBMLEQAgAEHYEhAYQdgSQbgHEAULJAAgABACBEBBAA8LIABBiBMQGEGIE0G4BxAFBEBBfw8LQQEPCxcAIAAgARAYIAFByAUgARAOIAEgARAXCwkAQagGIAAQAAvLAQQBfwF/AX8BfyACEAFBMCEFIAAhAwJAA0AgBSABSw0BIAVBMEYEQEG4ExAcBUG4E0H4BUG4ExAUCyADQbgTQegTEBQgAkHoEyACEBAgA0EwaiEDIAVBMGohBQwACwsgAUEwcCEEIARFBEAPC0HoExABQQAhBgJAA0AgBiAERg0BIAYgAy0AADoA6BMgA0EBaiEDIAZBAWohBgwACwsgBUEwRgRAQbgTEBwFQbgTQfgFQbgTEBQLQegTQbgTQegTEBQgAkHoEyACEBALHAAgASACQZgUEB1BmBRBmBQQFyAAQZgUIAMQFAv4AQQBfwF/AX8Bf0EAKAIAIQVBACAFIAJBAWpBMGxqNgIAIAUQHCAAIQYgBUEwaiEFQQAhCAJAA0AgCCACRg0BIAYQAgRAIAVBMGsgBRAABSAGIAVBMGsgBRAUCyAGIAFqIQYgBUEwaiEFIAhBAWohCAwACwsgBiABayEGIAVBMGshBSADIAJBAWsgBGxqIQcgBSAFEBsCQANAIAhFDQEgBhACBEAgBSAFQTBrEAAgBxABBSAFQTBrQcgUEAAgBSAGIAVBMGsQFCAFQcgUIAcQFAsgBiABayEGIAcgBGshByAFQTBrIQUgCEEBayEIDAALC0EAIAU2AgALPgMBfwF/AX8gACEEIAIhBUEAIQMCQANAIAMgAUYNASAEIAUQFyAEQTBqIQQgBUEwaiEFIANBAWohAwwACwsLPgMBfwF/AX8gACEEIAIhBUEAIQMCQANAIAMgAUYNASAEIAUQGCAEQTBqIQQgBUEwaiEFIANBAWohAwwACwsLPgMBfwF/AX8gACEEIAIhBUEAIQMCQANAIAMgAUYNASAEIAUQEiAEQTBqIQQgBUEwaiEFIANBAWohAwwACwsLTQQBfwF/AX8BfyAAIQUgASEGIAMhB0EAIQQCQANAIAQgAkYNASAFIAYgBxAQIAVBMGohBSAGQTBqIQYgB0EwaiEHIARBAWohBAwACwsLTQQBfwF/AX8BfyAAIQUgASEGIAMhB0EAIQQCQANAIAQgAkYNASAFIAYgBxARIAVBMGohBSAGQTBqIQYgB0EwaiEHIARBAWohBAwACwsLTQQBfwF/AX8BfyAAIQUgASEGIAMhB0EAIQQCQANAIAQgAkYNASAFIAYgBxAUIAVBMGohBSAGQTBqIQYgB0EwaiEHIARBAWohBAwACwsLsgICAX8BfyACRQRAIAMQHA8LIABB+BQQACADEBwgAiEEAkADQCAEQQFrIQQgASAEai0AACEFIAMgAxAVIAVBgAFPBEAgBUGAAWshBSADQfgUIAMQFAsgAyADEBUgBUHAAE8EQCAFQcAAayEFIANB+BQgAxAUCyADIAMQFSAFQSBPBEAgBUEgayEFIANB+BQgAxAUCyADIAMQFSAFQRBPBEAgBUEQayEFIANB+BQgAxAUCyADIAMQFSAFQQhPBEAgBUEIayEFIANB+BQgAxAUCyADIAMQFSAFQQRPBEAgBUEEayEFIANB+BQgAxAUCyADIAMQFSAFQQJPBEAgBUECayEFIANB+BQgAxAUCyADIAMQFSAFQQFPBEAgBUEBayEFIANB+BQgAxAUCyAERQ0BDAALCwveAQMBfwF/AX8gABACBEAgARABDwtBASECQZgIQagVEAAgAEHoB0EwQdgVECYgAEHICEEwQYgWECYCQANAQdgVQagGEAQNAUHYFUG4FhAVQQEhAwJAA0BBuBZBqAYQBA0BQbgWQbgWEBUgA0EBaiEDDAALC0GoFUHoFhAAIAIgA2tBAWshBAJAA0AgBEUNAUHoFkHoFhAVIARBAWshBAwACwsgAyECQegWQagVEBVB2BVBqBVB2BUQFEGIFkHoFkGIFhAUDAALC0GIFhAZBEBBiBYgARASBUGIFiABEAALCyAAIAAQAgRAQQEPCyAAQYgHQTBBmBcQJkGYF0GoBhAECyoAIAEgACkDADcDACABIAApAwg3AwggASAAKQMQNwMQIAEgACkDGDcDGAseACAAQgA3AwAgAEIANwMIIABCADcDECAAQgA3AxgLMwAgACkDGFAEQCAAKQMQUARAIAApAwhQBEAgACkDAFAPBUEADwsFQQAPCwVBAA8LQQAPCx4AIABCATcDACAAQgA3AwggAEIANwMQIABCADcDGAtHACAAKQMYIAEpAxhRBEAgACkDECABKQMQUQRAIAApAwggASkDCFEEQCAAKQMAIAEpAwBRDwVBAA8LBUEADwsFQQAPC0EADwt9ACAAKQMYIAEpAxhUBEBBAA8FIAApAxggASkDGFYEQEEBDwUgACkDECABKQMQVARAQQAPBSAAKQMQIAEpAxBWBEBBAQ8FIAApAwggASkDCFQEQEEADwUgACkDCCABKQMIVgRAQQEPBSAAKQMAIAEpAwBaDwsLCwsLC0EADwvUAQEBfiAANQIAIAE1AgB8IQMgAiADPgIAIAA1AgQgATUCBHwgA0IgiHwhAyACIAM+AgQgADUCCCABNQIIfCADQiCIfCEDIAIgAz4CCCAANQIMIAE1Agx8IANCIIh8IQMgAiADPgIMIAA1AhAgATUCEHwgA0IgiHwhAyACIAM+AhAgADUCFCABNQIUfCADQiCIfCEDIAIgAz4CFCAANQIYIAE1Ahh8IANCIIh8IQMgAiADPgIYIAA1AhwgATUCHHwgA0IgiHwhAyACIAM+AhwgA0IgiKcLjAIBAX4gADUCACABNQIAfSEDIAIgA0L/////D4M+AgAgADUCBCABNQIEfSADQiCHfCEDIAIgA0L/////D4M+AgQgADUCCCABNQIIfSADQiCHfCEDIAIgA0L/////D4M+AgggADUCDCABNQIMfSADQiCHfCEDIAIgA0L/////D4M+AgwgADUCECABNQIQfSADQiCHfCEDIAIgA0L/////D4M+AhAgADUCFCABNQIUfSADQiCHfCEDIAIgA0L/////D4M+AhQgADUCGCABNQIYfSADQiCHfCEDIAIgA0L/////D4M+AhggADUCHCABNQIcfSADQiCHfCEDIAIgA0L/////D4M+AhwgA0Igh6cLjxASAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+IANC/////w+DIAA1AgAiBSABNQIAIgZ+fCEDIAQgA0IgiHwhBCACIAM+AgAgBEIgiCEDIARC/////w+DIAUgATUCBCIIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCBCIHIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AgQgA0IgiCEEIANC/////w+DIAUgATUCCCIKfnwhAyAEIANCIIh8IQQgA0L/////D4MgByAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCCCIJIAZ+fCEDIAQgA0IgiHwhBCACIAM+AgggBEIgiCEDIARC/////w+DIAUgATUCDCIMfnwhBCADIARCIIh8IQMgBEL/////D4MgByAKfnwhBCADIARCIIh8IQMgBEL/////D4MgCSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCDCILIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AgwgA0IgiCEEIANC/////w+DIAUgATUCECIOfnwhAyAEIANCIIh8IQQgA0L/////D4MgByAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCECINIAZ+fCEDIAQgA0IgiHwhBCACIAM+AhAgBEIgiCEDIARC/////w+DIAUgATUCFCIQfnwhBCADIARCIIh8IQMgBEL/////D4MgByAOfnwhBCADIARCIIh8IQMgBEL/////D4MgCSAMfnwhBCADIARCIIh8IQMgBEL/////D4MgCyAKfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCFCIPIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AhQgA0IgiCEEIANC/////w+DIAUgATUCGCISfnwhAyAEIANCIIh8IQQgA0L/////D4MgByAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgCSAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgCyAMfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAKfnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCGCIRIAZ+fCEDIAQgA0IgiHwhBCACIAM+AhggBEIgiCEDIARC/////w+DIAUgATUCHCIUfnwhBCADIARCIIh8IQMgBEL/////D4MgByASfnwhBCADIARCIIh8IQMgBEL/////D4MgCSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgCyAOfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAMfnwhBCADIARCIIh8IQMgBEL/////D4MgDyAKfnwhBCADIARCIIh8IQMgBEL/////D4MgESAIfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCHCITIAZ+fCEEIAMgBEIgiHwhAyACIAQ+AhwgA0IgiCEEIANC/////w+DIAcgFH58IQMgBCADQiCIfCEEIANC/////w+DIAkgEn58IQMgBCADQiCIfCEEIANC/////w+DIAsgEH58IQMgBCADQiCIfCEEIANC/////w+DIA0gDn58IQMgBCADQiCIfCEEIANC/////w+DIA8gDH58IQMgBCADQiCIfCEEIANC/////w+DIBEgCn58IQMgBCADQiCIfCEEIANC/////w+DIBMgCH58IQMgBCADQiCIfCEEIAIgAz4CICAEQiCIIQMgBEL/////D4MgCSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgCyASfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgDyAOfnwhBCADIARCIIh8IQMgBEL/////D4MgESAMfnwhBCADIARCIIh8IQMgBEL/////D4MgEyAKfnwhBCADIARCIIh8IQMgAiAEPgIkIANCIIghBCADQv////8PgyALIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyANIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyARIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyATIAx+fCEDIAQgA0IgiHwhBCACIAM+AiggBEIgiCEDIARC/////w+DIA0gFH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gEn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgEH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgDn58IQQgAyAEQiCIfCEDIAIgBD4CLCADQiCIIQQgA0L/////D4MgDyAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgESASfnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAQfnwhAyAEIANCIIh8IQQgAiADPgIwIARCIIghAyAEQv////8PgyARIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIBJ+fCEEIAMgBEIgiHwhAyACIAQ+AjQgA0IgiCEEIANC/////w+DIBMgFH58IQMgBCADQiCIfCEEIAIgAz4COCAEQiCIIQMgAiAEPgI8C4wSDAF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfkIAIQJCACEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAA1AgAiBiAGfnwhAiADIAJCIIh8IQMgASACPgIAIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AgQiB358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AgQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCCCIIfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgByAHfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CCCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIMIgl+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAh+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIMIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhAiCn58IQIgAyACQiCIfCEDIAJC/////w+DIAcgCX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAggCH58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCFCILfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAKfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAJfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CFCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIYIgx+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAt+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAp+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAJIAl+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIYIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhwiDX58IQIgAyACQiCIfCEDIAJC/////w+DIAcgDH58IQIgAyACQiCIfCEDIAJC/////w+DIAggC358IQIgAyACQiCIfCEDIAJC/////w+DIAkgCn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgDX58IQIgAyACQiCIfCEDIAJC/////w+DIAggDH58IQIgAyACQiCIfCEDIAJC/////w+DIAkgC358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAogCn58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAggDX58IQIgAyACQiCIfCEDIAJC/////w+DIAkgDH58IQIgAyACQiCIfCEDIAJC/////w+DIAogC358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAkgDX58IQIgAyACQiCIfCEDIAJC/////w+DIAogDH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAsgC358IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAogDX58IQIgAyACQiCIfCEDIAJC/////w+DIAsgDH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AiwgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAsgDX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAwgDH58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AjAgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAwgDX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AjQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIA0gDX58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AjggAyEEIARCIIghBSABIAQ+AjwLCgAgACAAIAEQMQu2AQEBfiAANQAAIAF+IQMgAiADPgAAIAA1AAQgAX4gA0IgiHwhAyACIAM+AAQgADUACCABfiADQiCIfCEDIAIgAz4ACCAANQAMIAF+IANCIIh8IQMgAiADPgAMIAA1ABAgAX4gA0IgiHwhAyACIAM+ABAgADUAFCABfiADQiCIfCEDIAIgAz4AFCAANQAYIAF+IANCIIh8IQMgAiADPgAYIAA1ABwgAX4gA0IgiHwhAyACIAM+ABwLTgIBfgF/IAAhAyADNQAAIAF8IQIgAyACPgAAIAJCIIghAgJAA0AgAlANASADQQRqIQMgAzUAACACfCECIAMgAj4AACACQiCIIQIMAAsLC7ACBwF/AX8BfwF/AX4BfgF/IAIEQCACIQUFQegXIQULIAMEQCADIQQFQYgYIQQLIAAgBBApIAFByBcQKSAFECpBqBgQKkEfIQZBHyEHAkADQEHIFyAHai0AACAHQQNGcg0BIAdBAWshBwwACwtByBcgB2pBA2s1AABCAXwhCCAIQgFRBEBCAEIAgBoLAkADQAJAA0AgBCAGai0AACAGQQdGcg0BIAZBAWshBgwACwsgBCAGakEHaykAACEJIAkgCIAhCSAGIAdrQQRrIQoCQANAIAlCgICAgHCDUCAKQQBOcQ0BIAlCCIghCSAKQQFqIQoMAAsLIAlQBEAgBEHIFxAuRQ0CQgEhCUEAIQoLQcgXIAlByBgQNCAEQcgYIAprIAQQMBogBSAKaiAJEDUMAAsLC7UC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GCENIAA1AhwhDiABNQIAIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0L/////D35C/////w+DIQQgDyAEQgF+fCEGIAZCIIghBSAQIARC/////w9+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEL+t/n/D358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQoLI9p0FfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARChbCHzQB+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEKIsOeZA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQsj69cwCfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC0862nwd+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIEIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0L/////D35C/////w+DIQQgDyAEQgF+fCEGIAZCIIghBSAQIARC/////w9+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEL+t/n/D358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQoLI9p0FfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARChbCHzQB+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEKIsOeZA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQsj69cwCfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC0862nwd+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIIIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0L/////D35C/////w+DIQQgDyAEQgF+fCEGIAZCIIghBSAQIARC/////w9+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEL+t/n/D358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQoLI9p0FfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARChbCHzQB+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEKIsOeZA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQsj69cwCfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC0862nwd+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIMIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0L/////D35C/////w+DIQQgDyAEQgF+fCEGIAZCIIghBSAQIARC/////w9+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEL+t/n/D358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQoLI9p0FfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARChbCHzQB+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEKIsOeZA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQsj69cwCfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC0862nwd+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIQIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0L/////D35C/////w+DIQQgDyAEQgF+fCEGIAZCIIghBSAQIARC/////w9+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEL+t/n/D358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQoLI9p0FfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARChbCHzQB+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEKIsOeZA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQsj69cwCfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC0862nwd+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIUIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0L/////D35C/////w+DIQQgDyAEQgF+fCEGIAZCIIghBSAQIARC/////w9+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEL+t/n/D358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQoLI9p0FfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARChbCHzQB+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEKIsOeZA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQsj69cwCfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC0862nwd+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIYIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0L/////D35C/////w+DIQQgDyAEQgF+fCEGIAZCIIghBSAQIARC/////w9+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEL+t/n/D358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQoLI9p0FfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARChbCHzQB+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEKIsOeZA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQsj69cwCfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC0862nwd+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIcIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0L/////D35C/////w+DIQQgDyAEQgF+fCEGIAZCIIghBSAQIARC/////w9+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEL+t/n/D358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQoLI9p0FfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARChbCHzQB+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEKIsOeZA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQsj69cwCfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC0862nwd+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiACIA8+AgAgAiAQPgIEIAIgET4CCCACIBI+AgwgAiATPgIQIAIgFD4CFCACIBU+AhggAiAWPgIcIAJBiBsQLgRAIAJBiBsgAhAwGgsLqyQWAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4gADUCACEGIAA1AgQhByAANQIIIQggADUCDCEJIAA1AhAhCiAANQIUIQsgADUCGCEMIAA1AhwhDSAOIAYgBn58IQQgBEL/////D4MhDiAEQiCIIQMgByAGfiEFIA8gBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhDyAEQiCIIAVCIIhCAYZ8IQMgCCAGfiEFIBAgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhECAEQiCIIAVCIIhCAYZ8IQMgCSAGfiEFIBEgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhESAEQiCIIAVCIIhCAYZ8IQMgCiAGfiEFIBIgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEiAEQiCIIAVCIIhCAYZ8IQMgCyAGfiEFIBMgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEyAEQiCIIAVCIIhCAYZ8IQMgDCAGfiEFIBQgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFCAEQiCIIAVCIIhCAYZ8IQMgDSAGfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w9+Qv////8PgyECIA4gAkIBfnwhBCAEQiCIIQMgDyACQv////8PfnwgA3whBCAEQv////8PgyEOIARCIIghAyAQIAJC/rf5/w9+fCADfCEEIARC/////w+DIQ8gBEIgiCEDIBEgAkKCyPadBX58IAN8IQQgBEL/////D4MhECAEQiCIIQMgEiACQoWwh80AfnwgA3whBCAEQv////8PgyERIARCIIghAyATIAJCiLDnmQN+fCADfCEEIARC/////w+DIRIgBEIgiCEDIBQgAkLI+vXMAn58IAN8IQQgBEL/////D4MhEyAEQiCIIQMgFSACQtPOtp8HfnwgA3whBCAEQv////8PgyEUIARCIIghAyAWIAN8IQQgBEL/////D4MhFSAXIARCIIh8IRZCACEXIA8gByAHfnwhBCAEQv////8PgyEPIARCIIghAyAIIAd+IQUgECAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEQIARCIIggBUIgiEIBhnwhAyAJIAd+IQUgESAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyERIARCIIggBUIgiEIBhnwhAyAKIAd+IQUgEiAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyESIARCIIggBUIgiEIBhnwhAyALIAd+IQUgEyAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyETIARCIIggBUIgiEIBhnwhAyAMIAd+IQUgFCAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEUIARCIIggBUIgiEIBhnwhAyANIAd+IQUgFSAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEVIARCIIggBUIgiEIBhnwhAyAWIAN8IQQgBEL/////D4MhFiAXIARCIIh8IRcgDkL/////D35C/////w+DIQIgDiACQgF+fCEEIARCIIghAyAPIAJC/////w9+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkL+t/n/D358IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQoLI9p0FfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJChbCHzQB+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkKIsOeZA358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQsj69cwCfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC0862nwd+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgECAIIAh+fCEEIARC/////w+DIRAgBEIgiCEDIAkgCH4hBSARIAVC/////w+DQgGGfCADfCEEIARC/////w+DIREgBEIgiCAFQiCIQgGGfCEDIAogCH4hBSASIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRIgBEIgiCAFQiCIQgGGfCEDIAsgCH4hBSATIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRMgBEIgiCAFQiCIQgGGfCEDIAwgCH4hBSAUIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRQgBEIgiCAFQiCIQgGGfCEDIA0gCH4hBSAVIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRUgBEIgiCAFQiCIQgGGfCEDIBYgA3whBCAEQv////8PgyEWIBcgBEIgiHwhFyAOQv////8PfkL/////D4MhAiAOIAJCAX58IQQgBEIgiCEDIA8gAkL/////D358IAN8IQQgBEL/////D4MhDiAEQiCIIQMgECACQv63+f8PfnwgA3whBCAEQv////8PgyEPIARCIIghAyARIAJCgsj2nQV+fCADfCEEIARC/////w+DIRAgBEIgiCEDIBIgAkKFsIfNAH58IAN8IQQgBEL/////D4MhESAEQiCIIQMgEyACQoiw55kDfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJCyPr1zAJ+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkLTzrafB358IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiADfCEEIARC/////w+DIRUgFyAEQiCIfCEWQgAhFyARIAkgCX58IQQgBEL/////D4MhESAEQiCIIQMgCiAJfiEFIBIgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEiAEQiCIIAVCIIhCAYZ8IQMgCyAJfiEFIBMgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEyAEQiCIIAVCIIhCAYZ8IQMgDCAJfiEFIBQgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFCAEQiCIIAVCIIhCAYZ8IQMgDSAJfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w9+Qv////8PgyECIA4gAkIBfnwhBCAEQiCIIQMgDyACQv////8PfnwgA3whBCAEQv////8PgyEOIARCIIghAyAQIAJC/rf5/w9+fCADfCEEIARC/////w+DIQ8gBEIgiCEDIBEgAkKCyPadBX58IAN8IQQgBEL/////D4MhECAEQiCIIQMgEiACQoWwh80AfnwgA3whBCAEQv////8PgyERIARCIIghAyATIAJCiLDnmQN+fCADfCEEIARC/////w+DIRIgBEIgiCEDIBQgAkLI+vXMAn58IAN8IQQgBEL/////D4MhEyAEQiCIIQMgFSACQtPOtp8HfnwgA3whBCAEQv////8PgyEUIARCIIghAyAWIAN8IQQgBEL/////D4MhFSAXIARCIIh8IRZCACEXIBIgCiAKfnwhBCAEQv////8PgyESIARCIIghAyALIAp+IQUgEyAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyETIARCIIggBUIgiEIBhnwhAyAMIAp+IQUgFCAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEUIARCIIggBUIgiEIBhnwhAyANIAp+IQUgFSAFQv////8Pg0IBhnwgA3whBCAEQv////8PgyEVIARCIIggBUIgiEIBhnwhAyAWIAN8IQQgBEL/////D4MhFiAXIARCIIh8IRcgDkL/////D35C/////w+DIQIgDiACQgF+fCEEIARCIIghAyAPIAJC/////w9+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkL+t/n/D358IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQoLI9p0FfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJChbCHzQB+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkKIsOeZA358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQsj69cwCfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC0862nwd+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgEyALIAt+fCEEIARC/////w+DIRMgBEIgiCEDIAwgC34hBSAUIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRQgBEIgiCAFQiCIQgGGfCEDIA0gC34hBSAVIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRUgBEIgiCAFQiCIQgGGfCEDIBYgA3whBCAEQv////8PgyEWIBcgBEIgiHwhFyAOQv////8PfkL/////D4MhAiAOIAJCAX58IQQgBEIgiCEDIA8gAkL/////D358IAN8IQQgBEL/////D4MhDiAEQiCIIQMgECACQv63+f8PfnwgA3whBCAEQv////8PgyEPIARCIIghAyARIAJCgsj2nQV+fCADfCEEIARC/////w+DIRAgBEIgiCEDIBIgAkKFsIfNAH58IAN8IQQgBEL/////D4MhESAEQiCIIQMgEyACQoiw55kDfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJCyPr1zAJ+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkLTzrafB358IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiADfCEEIARC/////w+DIRUgFyAEQiCIfCEWQgAhFyAUIAwgDH58IQQgBEL/////D4MhFCAEQiCIIQMgDSAMfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w9+Qv////8PgyECIA4gAkIBfnwhBCAEQiCIIQMgDyACQv////8PfnwgA3whBCAEQv////8PgyEOIARCIIghAyAQIAJC/rf5/w9+fCADfCEEIARC/////w+DIQ8gBEIgiCEDIBEgAkKCyPadBX58IAN8IQQgBEL/////D4MhECAEQiCIIQMgEiACQoWwh80AfnwgA3whBCAEQv////8PgyERIARCIIghAyATIAJCiLDnmQN+fCADfCEEIARC/////w+DIRIgBEIgiCEDIBQgAkLI+vXMAn58IAN8IQQgBEL/////D4MhEyAEQiCIIQMgFSACQtPOtp8HfnwgA3whBCAEQv////8PgyEUIARCIIghAyAWIAN8IQQgBEL/////D4MhFSAXIARCIIh8IRZCACEXIBUgDSANfnwhBCAEQv////8PgyEVIARCIIghAyAWIAN8IQQgBEL/////D4MhFiAXIARCIIh8IRcgDkL/////D35C/////w+DIQIgDiACQgF+fCEEIARCIIghAyAPIAJC/////w9+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkL+t/n/D358IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQoLI9p0FfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJChbCHzQB+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkKIsOeZA358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQsj69cwCfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC0862nwd+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgASAOPgIAIAEg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KQOIATcDiAEgASAAKQOQATcDkAEgASAAKQOYATcDmAEgASAAKQOgATcDoAEgASAAKQOoATcDqAEgASAAKQOwATcDsAEgASAAKQO4ATcDuAELkgMAIAEgACkDADcDACABIAApAwg3AwggASAAKQMQNwMQIAEgACkDGDcDGCABIAApAyA3AyAgASAAKQMoNwMoIAEgACkDMDcDMCABIAApAzg3AzggASAAKQNANwNAIAEgACkDSDcDSCABIAApA1A3A1AgASAAKQNYNwNYIAEgACkDYDcDYCABIAApA2g3A2ggASAAKQNwNwNwIAEgACkDeDcDeCABIAApA4ABNwOAASABIAApA4gBNwOIASABIAApA5ABNwOQASABIAApA5gBNwOYASABIAApA6ABNwOgASABIAApA6gBNwOoASABIAApA7ABNwOwASABIAApA7gBNwO4ASABIAApA8ABNwPAASABIAApA8gBNwPIASABIAApA9ABNwPQASABIAApA9gBNwPYASABIAApA+ABNwPgASABIAApA+gBNwPoASABIAApA/ABNwPwASABIAApA/gBNwP4ASABIAApA4ACNwOAAiABIAApA4gCNwOIAiABIAApA5ACNwOQAiABIAApA5gCNwOYAgsvACAAELABBEAgARCzAQUgAUHAAWoQnAEgAEHgAGogAUHgAGoQnQEgACABEJ0BCwscAQF/IAAgARCnASAAQeAAaiABQeAAahCnAXEPC4sBAQF/IABBwAFqIQIgABCxAQRAIAEQsAEPCyABELABBEBBAA8LIAIQmgEEQCAAIAEQtwEPCyACQdiHARCgASABQdiHAUG4iAEQngEgAkHYhwFBmIkBEJ4BIAFB4ABqQZiJAUH4iQEQngEgAEG4iAEQpwEEQCAAQeAAakH4iQEQpwEEQEEBDwsLQQAPC9kBAgF/AX8gAEHAAWohAiABQcABaiEDIAAQsQEEQCABELEBDwsgARCxAQRAQQAPCyACEJoBBEAgASAAELgBDwsgAxCaAQRAIAAgARC4AQ8LIAJB2IoBEKABIANBuIsBEKABIABBuIsBQZiMARCeASABQdiKAUH4jAEQngEgAkHYigFB2I0BEJ4BIANBuIsBQbiOARCeASAAQeAAakG4jgFBmI8BEJ4BIAFB4ABqQdiNAUH4jwEQngFBmIwBQfiMARCnAQRA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IABB4ABqIABBwAFqQajhAhChASABQeAAaiABQcABakGI4gIQoQFBiNwCQejcAkHo4gIQoQFBiNwCQcjdAkHI4wIQoQFB6NwCQcjdAkGo5AIQoQFBqOECQYjiAiACEJ4BIAJBqOQCIAIQogEgAiACEIQCQYjcAiACIAIQoQFBqN4CQYjfAiACQeAAahCeASACQeAAakHo4gIgAkHgAGoQogFByN0CQYjlAhCEAiACQeAAakGI5QIgAkHgAGoQoQFB6N8CQcjgAiACQcABahCeASACQcABakHI4wIgAkHAAWoQogEgAkHAAWpB6NwCIAJBwAFqEKEBC4ECACAAQejlAhCgASAAIABB4ABqQcjmAhCeAUHI5gJByOYCQajnAhChASAAIABB4ABqQYjoAhCiAUGI6AIgAEHAAWpBiOgCEKEBQYjoAkGI6AIQoAEgAEHgAGogAEHAAWpB6OgCEJ4BQejoAkHo6AJByOkCEKEBIABBwAFqQajqAhCgAUHI6QIgARCEAkHo5QIgASABEKEBQajqAiABQeAAahCEAkGo5wIgAUHgAGogAUHgAGoQoQFB6OUCQajqAiABQcABahChAUHI6QIgAUHAAWogAUHAAWoQogFBiOgCIAFBwAFqIAFBwAFqEKEBQajnAiABQcABaiABQcABahChAQs1ACAAIAEgAhChASAAQeAAaiABQeAAaiACQeAAahChASAAQcABaiABQcABaiACQcABahChAQs1ACAAIAEgAhCiASAAQeAAaiABQeAAaiACQeAAahCiASAAQcABaiABQcABaiACQcABahCiAQsnACAAIAEQowEgAEHgAGogAUHgAGoQowEgAEHAAWogAUHAAWoQowELMAEBfyAAQcABahCqASEBIAEEQCABDwsgAEHgAGoQqgEhASABBEAgAQ8LIAAQqgEPCycAIAAgARClASAAQeAAaiABQeAAahClASAAQcABaiABQcABahClAQsnACAAIAEQpgEgAEHgAGogAUHgAGoQpgEgAEHAAWogAUHAAWoQpgELKQAgACABEKcBIABB4ABqIAFB4ABqEKcBcSAAQcABaiABQcABahCnAXELqwIAIABBiOsCEKABIABB4ABqQejrAhCgASAAQcABakHI7AIQoAEgACAAQeAAakGo7QIQngEgACAAQcABakGI7gIQngEgAEHgAGogAEHAAWpB6O4CEJ4BQejuAkHI7wIQhAJBiOsCQcjvAkHI7wIQogFByOwCQajwAhCEAkGo8AJBqO0CQajwAhCiAUHo6wJBiO4CQYjxAhCiASAAQcABakGo8AJB6PECEJ4BIABB4ABqQYjxAkHI8gIQngFB6PECQcjyAkHo8QIQoQFB6PECQejxAhCEAiAAQcjvAkHI8gIQngFByPICQejxAkHo8QIQoQFB6PECQejxAhCoAUHo8QJByO8CIAEQngFB6PECQajwAiABQeAAahCeAUHo8QJBiPECIAFBwAFqEJ4BCzMAIAAgASACIAMQqQEgAEHgAGogASACIANB4ABqEKkBIABBwAFqIAEgAiADQcABahCpAQs1ACAAQcABahCZAQRAIABB4ABqEJkBBEAgABCrAQ8FIABB4ABqEKsBDwsLIABBwAFqEKsBDwuPAgQBfwF/AX8Bf0EAKAIAIQVBACAFIAJBAWpBoAJsajYCACAFEIgCIAAhBiAFQaACaiEFQQAhCAJAA0AgCCACRg0BIAYQhQIEQCAFQaACayAFEIkCBSAGIAVBoAJrIAUQigILIAYgAWohBiAFQaACaiEFIAhBAWohCAwACwsgBiABayEGIAVBoAJrIQUgAyACQQFrIARsaiEHIAUgBRCTAgJAA0AgCEUNASAGEIUCBEAgBSAFQaACaxCJAiAHEIcCBSAFQaACa0Go8wIQiQIgBSAGIAVBoAJrEIoCIAVBqPMCIAcQigILIAYgAWshBiAHIARrIQcgBUGgAmshBSAIQQFrIQgMAAsLQQAgBTYCAAvOAgIBfwF/IAJFBEAgAxCIAg8LIABByPUCEIkCIAMQiAIgAiEEAkADQCAEQQFrIQQgASAEai0AACEFIAMgAxCLAiAFQYABTwRAIAVBgAFrIQUgA0HI9QIgAxCKAgsgAyADEIsCIAVBwABPBEAgBUHAAGshBSADQcj1AiADEIoCCyADIAMQiwIgBUEgTwRAIAVBIGshBSADQcj1AiADEIoCCyADIAMQiwIgBUEQTwRAIAVBEGshBSADQcj1AiADEIoCCyADIAMQiwIgBUEITwRAIAVBCGshBSADQcj1AiADEIoCCyADIAMQiwIgBUEETwRAIAVBBGshBSADQcj1AiADEIoCCyADIAMQiwIgBUECTwRAIAVBAmshBSADQcj1AiADEIoCCyADIAMQiwIgBUEBTwRAIAVBAWshBSADQcj1AiADEIoCCyAERQ0BDAALCwsyACAAQej3AhCdASAAQcABaiABEIQCIABB4ABqIAFBwAFqEJ0BQej3AiABQeAAahCdAQsRACAAEIUCIABBoAJqEIUCcQsSACAAEIYCIABBoAJqEIUCcQ8LEAAgABCHAiAAQaACahCHAgsQACAAEIgCIABBoAJqEIcCCxgAIAAgARCJAiAAQaACaiABQaACahCJAguFAQAgACABQcj4AhCKAiAAQaACaiABQaACakHo+gIQigIgACAAQaACakGI/QIQjAIgASABQaACakGo/wIQjAJBiP0CQaj/AkGI/QIQigJB6PoCIAIQmAJByPgCIAIgAhCMAkHI+AJB6PoCIAJBoAJqEIwCQYj9AiACQaACaiACQaACahCNAgscACAAIAEgAhCKAiAAQaACaiABIAJBoAJqEIoCC30AIAAgAEGgAmpByIEDEIoCIAAgAEGgAmpB6IMDEIwCIABBoAJqQYiGAxCYAiAAQYiGA0GIhgMQjAJByIEDQaiIAxCYAkGoiANByIEDQaiIAxCMAkHogwNBiIYDIAEQigIgAUGoiAMgARCNAkHIgQNByIEDIAFBoAJqEIwCCyAAIAAgASACEIwCIABBoAJqIAFBoAJqIAJBoAJqEIwCCyAAIAAgASACEI0CIABBoAJqIAFBoAJqIAJBoAJqEI0CCxgAIAAgARCOAiAAQaACaiABQaACahCOAgsYACAAIAEQiQIgAEGgAmogAUGgAmoQjgILGAAgACABEJACIABBoAJqIAFBoAJqEJACCxgAIAAgARCRAiAAQaACaiABQaACahCRAgsZACAAIAEQkgIgAEGgAmogAUGgAmoQkgJxC2oAIABByIoDEIsCIABBoAJqQeiMAxCLAkHojANBiI8DEJgCQciKA0GIjwNBiI8DEI0CQYiPA0GokQMQkwIgAEGokQMgARCKAiAAQaACakGokQMgAUGgAmoQigIgAUGgAmogAUGgAmoQjgILIAAgACABIAIgAxCUAiAAQaACaiABIAIgA0GgAmoQlAILHQEBfyAAQaACahCPAiEBIAEEQCABDwsgABCPAg8LHgAgAEGgAmoQhQIEQCAAEJUCDwsgAEGgAmoQlQIPC48CBAF/AX8BfwF/QQAoAgAhBUEAIAUgAkEBakHABGxqNgIAIAUQnAIgACEGIAVBwARqIQVBACEIAkADQCAIIAJGDQEgBhCZAgRAIAVBwARrIAUQnQIFIAYgBUHABGsgBRCeAgsgBiABaiEGIAVBwARqIQUgCEEBaiEIDAALCyAGIAFrIQYgBUHABGshBSADIAJBAWsgBGxqIQcgBSAFEKgCAkADQCAIRQ0BIAYQmQIEQCAFIAVBwARrEJ0CIAcQmwIFIAVBwARrQciTAxCdAiAFIAYgBUHABGsQngIgBUHIkwMgBxCeAgsgBiABayEGIAcgBGshByAFQcAEayEFIAhBAWshCAwACwtBACAFNgIAC84CAgF/AX8gAkUEQCADEJwCDwsgAEGImAMQnQIgAxCcAiACIQQCQANAIARBAWshBCABIARqLQAAIQUgAyADEKACIAVBgAFPBEAgBUGAAWshBSADQYiYAyADEJ4CCyADIAMQoAIgBUHAAE8EQCAFQcAAayEFIANBiJgDIAMQngILIAMgAxCgAiAFQSBPBEAgBUEgayEFIANBiJgDIAMQngILIAMgAxCgAiAFQRBPBEAgBUEQayEFIANBiJgDIAMQngILIAMgAxCgAiAFQQhPBEAgBUEIayEFIANBiJgDIAMQngILIAMgAxCgAiAFQQRPBEAgBUEEayEFIANBiJgDIAMQngILIAMgAxCgAiAFQQJPBEAgBUECayEFIANBiJgDIAMQngILIAMgAxCgAiAFQQFPBEAgBUEBayEFIANBiJgDIAMQngILIARFDQEMAAsLC9EBAEHIrgMQnAJByK4DQciuAxCjAiAAQcicA0GgAkGIoQMQrQJBiKEDQcilAxCgAiAAQcilA0HIpQMQngJByKUDQYiqAxCkAkGIqgNByKUDQYiqAxCeAkGIqgNByK4DEKcCBEAAC0GIoQMgAEGIswMQngJByKUDQciuAxCnAgRAQciuAxCHAkHosAMQiAJByK4DQYizAyABEJ4CBUHItwMQnAJByLcDQcilA0HItwMQoQJByLcDQeieA0GgAkHItwMQrQJByLcDQYizAyABEJ4CCwtqAEHoywMQnAJB6MsDQejLAxCjAiAAQYi8A0GgAkGovgMQrQJBqL4DQejCAxCgAiAAQejCA0HowgMQngJB6MIDQajHAxCkAkGoxwNB6MIDQajHAxCeAkGoxwNB6MsDEKcCBEBBAA8LQQEPC3gAIAAgAEHgAGpB6NADEKEBIABB4ABqIABBwAFqQcjRAxChASAAQeAAaiABIAJBwAFqEJ4BQcjRAyABIAIQngEgAiACQcABaiACEKIBIAIgAhCEAkHo0AMgASACQeAAahCeASACQeAAaiACQcABaiACQeAAahCiAQvsAQAgACABQajSAxCeASAAQeAAaiACQYjTAxCeASAAIABB4ABqQejTAxChASAAIABBwAFqQcjUAxChASAAQeAAaiAAQcABaiADEKEBIAMgAiADEJ4BIANBiNMDIAMQogEgAyADEIQCIANBqNIDIAMQoQEgASACIANB4ABqEKEBIANB4ABqQejTAyADQeAAahCeASADQeAAakGo0gMgA0HgAGoQogEgA0HgAGpBiNMDIANB4ABqEKIBQcjUAyABIANBwAFqEJ4BIANBwAFqQajSAyADQcABahCiASADQcABakGI0wMgA0HAAWoQoQELkAEAIAAgASACQajVAxCxAiAAQaACaiADQcjXAxCwAiACIANB6NkDEKEBIABBoAJqIAAgBEGgAmoQjAIgBEGgAmogAUHo2QMgBEGgAmoQsQIgBEGgAmpBqNUDIARBoAJqEI0CIARBoAJqQcjXAyAEQaACahCNAkHI1wMgBBCJAiAEIAQQmAIgBEGo1QMgBBCMAgtQACABIABBMGpByNoDEBQgAUEwaiAAQTBqQfjaAxAUIAFB4ABqIABBqNsDEBQgAUGQAWogAEHY2wMQFCACIAFBwAFqQajbA0HI2gMgAhCyAgtsACAAQYj+BCABEJ4BIABB4ABqQej+BCABQeAAahCeASAAQcABakHI/wQgAUHAAWoQngEgAEGgAmpBqIAFIAFBoAJqEJ4BIABBgANqQYiBBSABQYADahCeASAAQeADakHogQUgAUHgA2oQngELigIAIAAgARAAIABBMGogAUEwahASIAFByIIFIAEQngEgAEHgAGogAUHgAGoQACAAQZABaiABQZABahASIAFB4ABqQaiDBSABQeAAahCeASAAQcABaiABQcABahAAIABB8AFqIAFB8AFqEBIgAUHAAWpBiIQFIAFBwAFqEJ4BIABBoAJqIAFBoAJqEAAgAEHQAmogAUHQAmoQEiABQaACakHohAUgAUGgAmoQngEgAEGAA2ogAUGAA2oQACAAQbADaiABQbADahASIAFBgANqQciFBSABQYADahCeASAAQeADaiABQeADahAAIABBkARqIAFBkARqEBIgAUHgA2pBqIYFIAFB4ANqEJ4BC2wAIABBiIcFIAEQngEgAEHgAGpB6IcFIAFB4ABqEJ4BIABBwAFqQciIBSABQcABahCeASAAQaACakGoiQUgAUGgAmoQngEgAEGAA2pBiIoFIAFBgANqEJ4BIABB4ANqQeiKBSABQeADahCeAQuKAgAgACABEAAgAEEwaiABQTBqEBIgAUHIiwUgARCeASAAQeAAaiABQeAAahAAIABBkAFqIAFBkAFqEBIgAUHgAGpBqIwFIAFB4ABqEJ4BIABBwAFqIAFBwAFqEAAgAEHwAWogAUHwAWoQEiABQcABakGIjQUgAUHAAWoQngEgAEGgAmogAUGgAmoQACAAQdACaiABQdACahASIAFBoAJqQeiNBSABQaACahCeASAAQYADaiABQYADahAAIABBsANqIAFBsANqEBIgAUGAA2pByI4FIAFBgANqEJ4BIABB4ANqIAFB4ANqEAAgAEGQBGogAUGQBGoQEiABQeADakGojwUgAUHgA2oQngELbAAgAEGIkAUgARCeASAAQeAAakHokAUgAUHgAGoQngEgAEHAAWpByJEFIAFBwAFqEJ4BIABBoAJqQaiSBSABQaACahCeASAAQYADakGIkwUgAUGAA2oQngEgAEHgA2pB6JMFIAFB4ANqEJ4BC4oCACAAIAEQACAAQTBqIAFBMGoQEiABQciUBSABEJ4BIABB4ABqIAFB4ABqEAAgAEGQAWogAUGQAWoQEiABQeAAakGolQUgAUHgAGoQngEgAEHAAWogAUHAAWoQACAAQfABaiABQfABahASIAFBwAFqQYiWBSABQcABahCeASAAQaACaiABQaACahAAIABB0AJqIAFB0AJqEBIgAUGgAmpB6JYFIAFBoAJqEJ4BIABBgANqIAFBgANqEAAgAEGwA2ogAUGwA2oQEiABQYADakHIlwUgAUGAA2oQngEgAEHgA2ogAUHgA2oQACAAQZAEaiABQZAEahASIAFB4ANqQaiYBSABQeADahCeAQtsACAAQYiZBSABEJ4BIABB4ABqQeiZBSABQeAAahCeASAAQcABakHImgUgAUHAAWoQngEgAEGgAmpBqJsFIAFBoAJqEJ4BIABBgANqQYicBSABQYADahCeASAAQeADakHonAUgAUHgA2oQngELigIAIAAgARAAIABBMGogAUEwahASIAFByJ0FIAEQngEgAEHgAGogAUHgAGoQACAAQZABaiABQZABahASIAFB4ABqQaieBSABQeAAahCeASAAQcABaiABQcABahAAIABB8AFqIAFB8AFqEBIgAUHAAWpBiJ8FIAFBwAFqEJ4BIABBoAJqIAFBoAJqEAAgAEHQAmogAUHQAmoQEiABQaACakHonwUgAUGgAmoQngEgAEGAA2ogAUGAA2oQACAAQbADaiABQbADahASIAFBgANqQcigBSABQYADahCeASAAQeADaiABQeADahAAIABBkARqIAFBkARqEBIgAUHgA2pBqKEFIAFB4ANqEJ4BC2wAIABBiKIFIAEQngEgAEHgAGpB6KIFIAFB4ABqEJ4BIABBwAFqQcijBSABQcABahCeASAAQaACakGopAUgAUGgAmoQngEgAEGAA2pBiKUFIAFBgANqEJ4BIABB4ANqQeilBSABQeADahCeAQuKAgAgACABEAAgAEEwaiABQTBqEBIgAUHIpgUgARCeASAAQeAAaiABQeAAahAAIABBkAFqIAFBkAFqEBIgAUHgAGpBqKcFIAFB4ABqEJ4BIABBwAFqIAFBwAFqEAAgAEHwAWogAUHwAWoQEiABQcABakGIqAUgAUHAAWoQngEgAEGgAmogAUGgAmoQACAAQdACaiABQdACahASIAFBoAJqQeioBSABQaACahCeASAAQYADaiABQYADahAAIABBsANqIAFBsANqEBIgAUGAA2pByKkFIAFBgANqEJ4BIABB4ANqIAFB4ANqEAAgAEGQBGogAUGQBGoQEiABQeADakGoqgUgAUHgA2oQngELhQEAIAAQVgRAQQEPCyAAEG9FBEBBAA8LIABBiKsFQfirBRAUIABBMGpBqKwFEAAgAEG4qwVBiK0FEBQgAEEwakG4rQUQAEH4qwVB+KsFEGBB+KsFIABB+KsFEGhB+KsFQYitBUH4qwUQaEH4qwVB6KsFQRBB+KsFEIUBQfirBUGIrQUQXg8LEgAgAEHorQUQbkHorQUQvgIPC7QCACAAELABBEBBAQ8LIAAQyQFFBEBBAA8LIABByK4FQfCwBRCeASAAQeAAakHIrgVB0LEFEJ4BQfCwBUGorwVBsLIFEJ8BQdCxBUGQswUQowFB8LAFQfCzBRCjAUHQsQVB2K8FQdC0BRCeAUGwsgVB4LIFQcCwBRARQbCyBUHgsgVB4LIFEBBBwLAFQbCyBRAAQZCzBUHAswVBwLAFEBFBkLMFQcCzBUHAswUQEEHAsAVBkLMFEABB8LMFQaC0BUHAsAUQEEHwswVBoLQFQaC0BRARQcCwBUHwswUQAEGAtQVB0LQFQcCwBRARQdC0BUGAtQVBgLUFEBBBwLAFQdC0BRAAQbC1BRCcAUHwswVBuLAFQQhB8LMFEN8BQfCzBUGwsgVB8LMFEL0BQfCzBSAAELgBDwsTACAAQZC2BRDIAUGQtgUQwAIPC9gEACAAQcABakHQtwUQoAEgAUHgAGpBsLgFEKABQdC3BSABQfC5BRCeASABQeAAaiAAQcABaiACQeAAahChASACQeAAaiACQeAAahCgASACQeAAakGwuAUgAkHgAGoQogEgAkHgAGpB0LcFIAJB4ABqEKIBIAJB4ABqQdC3BSACQeAAahCeAUHwuQUgAEHQugUQogFB0LoFQbC7BRCgAUGwuwVBsLsFQZC8BRChAUGQvAVBkLwFQZC8BRChAUGQvAVB0LoFQfC8BRCeASACQeAAaiAAQeAAakHQvQUQogFB0L0FIABB4ABqQdC9BRCiAUHQvQUgASACQcABahCeAUGQvAUgAEGwvgUQngFB0L0FIAAQoAEgAEHwvAUgABCiASAAQbC+BSAAEKIBIABBsL4FIAAQogEgAEHAAWpB0LoFIABBwAFqEKEBIABBwAFqIABBwAFqEKABIABBwAFqQdC3BSAAQcABahCiASAAQcABakGwuwUgAEHAAWoQogEgAUHgAGogAEHAAWogAhChAUGwvgUgAEGQvwUQogFBkL8FQdC9BUGQvwUQngEgAEHgAGpB8LwFQfC5BRCeAUHwuQVB8LkFQfC5BRChAUGQvwVB8LkFIABB4ABqEKIBIAIgAhCgASACQbC4BSACEKIBIABBwAFqQZC5BRCgASACQZC5BSACEKIBIAJBwAFqIAJBwAFqIAJBwAFqEKEBIAJBwAFqIAIgAkHAAWoQogEgAEHAAWogAEHAAWogAhChAUHQvQVB0L0FEKMBQdC9BUHQvQUgAkHgAGoQoQELsgQAIAAgARCgASAAQeAAakHQwAUQoAFB0MAFQbDBBRCgAUHQwAUgACABQeAAahChASABQeAAaiABQeAAahCgASABQeAAaiABIAFB4ABqEKIBIAFB4ABqQbDBBSABQeAAahCiASABQeAAaiABQeAAaiABQeAAahChASABIAFBkMIFEKEBQZDCBSABQZDCBRChASAAQZDCBSABQcABahChAUGQwgVB8MIFEKABIABBwAFqQfC/BRCgAUHwwgUgAUHgAGogABCiASAAIAFB4ABqIAAQogEgAEHAAWogAEHgAGogAEHAAWoQoQEgAEHAAWogAEHAAWoQoAEgAEHAAWpB0MAFIABBwAFqEKIBIABBwAFqQfC/BSAAQcABahCiASABQeAAaiAAIABB4ABqEKIBIABB4ABqQZDCBSAAQeAAahCeAUGwwQVBsMEFQbDBBRChAUGwwQVBsMEFQbDBBRChAUGwwQVBsMEFQbDBBRChASAAQeAAakGwwQUgAEHgAGoQogFBkMIFQfC/BSABQeAAahCeASABQeAAaiABQeAAaiABQeAAahChASABQeAAaiABQeAAahCjASABQcABaiABQcABahCgASABQcABaiABIAFBwAFqEKIBIAFBwAFqQfDCBSABQcABahCiAUHQwAVB0MAFQdDABRChAUHQwAVB0MAFQdDABRChASABQcABakHQwAUgAUHAAWoQogEgAEHAAWpB8L8FIAEQngEgASABIAEQoQELCAAgACABEHILbQIBfwF/IAAgARDMASABELEBBEAPCyABQdDDBRC1ASABQaACaiECQT4hAwJAA0BB0MMFIAIQwwIgAkGgAmohAiADLACo0AMEQEHQwwUgASACEMICIAJBoAJqIQILIANFDQEgA0EBayEDDAALCwuAAQIBfwF/IAIQnAIgABBXBEAPCyABEFcEQA8LIAFBoAJqIQNBPiEEAkADQCAAIAMgAhCzAiADQaACaiEDIAQsAKjQAwRAIAAgAyACELMCIANBoAJqIQMLIAIgAhCgAiAEQQFGDQEgBEEBayEEDAALCyAAIAMgAhCzAiACIAIQpAILEAAgAEHwxQVBoAQgARCtAgvsBQAgACAAQYADakHQzgUQngEgAEGAA2pBkMoFEIQCIABBkMoFQZDKBRChASAAIABBgANqQbDPBRChAUGwzwVBkMoFQZDKBRCeAUHQzgVBsM8FEIQCQdDOBUGwzwVBsM8FEKEBQZDKBUGwzwVBkMoFEKIB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";
+export const pq = 712;
+export const pr = 3464;
+export const pG1gen = 42968;
+export const pG1zero = 43112;
+export const pG1b = 4776;
+export const pG2gen = 43256;
+export const pG2zero = 43544;
+export const pG2b = 17272;
+export const pOneT = 43832;
+export const prePSize = 288;
+export const preQSize = 20448;
+export const n8q = 48;
+export const n8r = 32;
+export const q = "4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787";
+export const r = "52435875175126190479447740508185965837690552500527637822603658699938581184513";
diff --git a/build/bn128.wasm b/build/bn128.wasm
index f0500e9..5f853c0 100644
Binary files a/build/bn128.wasm and b/build/bn128.wasm differ
diff --git a/build/bn128_wasm.js b/build/bn128_wasm.js
index 789a9f6..e08686b 100644
--- a/build/bn128_wasm.js
+++ b/build/bn128_wasm.js
@@ -1,18 +1,16 @@
-
- exports.code = "AGFzbQEAAAABlAESYAJ/fwBgAX8AYAF/AX9gAn9/AX9gA39/fwF/YAN/f38AYAN/fn8AYAJ/fgBgBH9/f38AYAV/f39/fwBgBH9/f38Bf2AHf39/f39/fwBgBn9/f39/fwBgCn9/f39/f39/f38AYAV/f39/fwF/YAd/f39/f39/AX9gCX9/f39/f39/fwF/YAt/f39/f39/f39/fwF/Ag8BA2VudgZtZW1vcnkCABkDwQK/AgABAgEDAwQEBQAABgcIBQIFBQAABQAAAAACAgABBQgJBQUFCAgICAACAgUFAAAFAAAAAAICAAEFCAkFBQUICAgIAAIFAAACAgIBAQAAAAMDAwAABQUFAAAFBQUAAAAAAAICBQAFAAAAAAUFBQUFCgALCQoACwkICAMACAgCAAAJDAwFBQwACA0JCAICAQEABQUABQUAAAAAAwAIAgIJCAACAgIBAQAAAAMDAwAABQUFAAAFBQUAAAAAAAICBQAFAAAAAAUFBQUFCgALCQoACwkICAUDAAgIAgAACQwMBQUMBQMACAgCAAAJDAwFBQwFBQkJCQkJAAICAQEABQAFBQACAAADAAgCCQgAAgIBAQAFBQAFBQAAAAADAAgCAgkIAAIFAAAAAAgIBQAAAAAAAAAAAAAAAAAAAAAEDg8QEQUH9SSoAghpbnRfY29weQAACGludF96ZXJvAAEHaW50X29uZQADCmludF9pc1plcm8AAgZpbnRfZXEABAdpbnRfZ3RlAAUHaW50X2FkZAAGB2ludF9zdWIABwdpbnRfbXVsAAgKaW50X3NxdWFyZQAJDWludF9zcXVhcmVPbGQACgdpbnRfZGl2AA0OaW50X2ludmVyc2VNb2QADghmMW1fY29weQAACGYxbV96ZXJvAAEKZjFtX2lzWmVybwACBmYxbV9lcQAEB2YxbV9hZGQAEAdmMW1fc3ViABEHZjFtX25lZwASDmYxbV9pc05lZ2F0aXZlABkJZjFtX2lzT25lAA8IZjFtX3NpZ24AGgtmMW1fbVJlZHVjdAATB2YxbV9tdWwAFApmMW1fc3F1YXJlABUNZjFtX3NxdWFyZU9sZAAWEmYxbV9mcm9tTW9udGdvbWVyeQAYEGYxbV90b01vbnRnb21lcnkAFwtmMW1faW52ZXJzZQAbB2YxbV9vbmUAHAhmMW1fbG9hZAAdD2YxbV90aW1lc1NjYWxhcgAeB2YxbV9leHAAJhBmMW1fYmF0Y2hJbnZlcnNlAB8IZjFtX3NxcnQAJwxmMW1faXNTcXVhcmUAKBVmMW1fYmF0Y2hUb01vbnRnb21lcnkAIBdmMW1fYmF0Y2hGcm9tTW9udGdvbWVyeQAhCGZybV9jb3B5AAAIZnJtX3plcm8AAQpmcm1faXNaZXJvAAIGZnJtX2VxAAQHZnJtX2FkZAAqB2ZybV9zdWIAKwdmcm1fbmVnACwOZnJtX2lzTmVnYXRpdmUAMwlmcm1faXNPbmUAKQhmcm1fc2lnbgA0C2ZybV9tUmVkdWN0AC0HZnJtX211bAAuCmZybV9zcXVhcmUALw1mcm1fc3F1YXJlT2xkADASZnJtX2Zyb21Nb250Z29tZXJ5ADIQZnJtX3RvTW9udGdvbWVyeQAxC2ZybV9pbnZlcnNlADUHZnJtX29uZQA2CGZybV9sb2FkADcPZnJtX3RpbWVzU2NhbGFyADgHZnJtX2V4cABAEGZybV9iYXRjaEludmVyc2UAOQhmcm1fc3FydABBDGZybV9pc1NxdWFyZQBCFWZybV9iYXRjaFRvTW9udGdvbWVyeQA6F2ZybV9iYXRjaEZyb21Nb250Z29tZXJ5ADsGZnJfYWRkACoGZnJfc3ViACsGZnJfbmVnACwGZnJfbXVsAEMJZnJfc3F1YXJlAEQKZnJfaW52ZXJzZQBFDWZyX2lzTmVnYXRpdmUARgdmcl9jb3B5AAAHZnJfemVybwABBmZyX29uZQA2CWZyX2lzWmVybwACBWZyX2VxAAQMZzFtX211bHRpZXhwAHESZzFtX211bHRpZXhwX2NodW5rAHASZzFtX211bHRpZXhwQWZmaW5lAHUYZzFtX211bHRpZXhwQWZmaW5lX2NodW5rAHQKZzFtX2lzWmVybwBIEGcxbV9pc1plcm9BZmZpbmUARwZnMW1fZXEAUAtnMW1fZXFNaXhlZABPDGcxbV9lcUFmZmluZQBOCGcxbV9jb3B5AEwOZzFtX2NvcHlBZmZpbmUASwhnMW1femVybwBKDmcxbV96ZXJvQWZmaW5lAEkKZzFtX2RvdWJsZQBSEGcxbV9kb3VibGVBZmZpbmUAUQdnMW1fYWRkAFUMZzFtX2FkZE1peGVkAFQNZzFtX2FkZEFmZmluZQBTB2cxbV9uZWcAVw1nMW1fbmVnQWZmaW5lAFYHZzFtX3N1YgBaDGcxbV9zdWJNaXhlZABZDWcxbV9zdWJBZmZpbmUAWBJnMW1fZnJvbU1vbnRnb21lcnkAXBhnMW1fZnJvbU1vbnRnb21lcnlBZmZpbmUAWxBnMW1fdG9Nb250Z29tZXJ5AF4WZzFtX3RvTW9udGdvbWVyeUFmZmluZQBdD2cxbV90aW1lc1NjYWxhcgB2FWcxbV90aW1lc1NjYWxhckFmZmluZQB3DWcxbV9ub3JtYWxpemUAYwpnMW1fTEVNdG9VAGUKZzFtX0xFTXRvQwBmCmcxbV9VdG9MRU0AZwpnMW1fQ3RvTEVNAGgPZzFtX2JhdGNoTEVNdG9VAGkPZzFtX2JhdGNoTEVNdG9DAGoPZzFtX2JhdGNoVXRvTEVNAGsPZzFtX2JhdGNoQ3RvTEVNAGwMZzFtX3RvQWZmaW5lAF8OZzFtX3RvSmFjb2JpYW4ATRFnMW1fYmF0Y2hUb0FmZmluZQBiE2cxbV9iYXRjaFRvSmFjb2JpYW4AbQtnMW1faW5DdXJ2ZQBhEWcxbV9pbkN1cnZlQWZmaW5lAGAHZnJtX2ZmdAB9CGZybV9pZmZ0AH4KZnJtX3Jhd2ZmdAB7C2ZybV9mZnRKb2luAH8OZnJtX2ZmdEpvaW5FeHQAgAERZnJtX2ZmdEpvaW5FeHRJbnYAgQEKZnJtX2ZmdE1peACCAQxmcm1fZmZ0RmluYWwAgwEdZnJtX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24AhAEIcG9sX3plcm8AhQEPcG9sX2NvbnN0cnVjdExDAIYBDHFhcF9idWlsZEFCQwCHAQtxYXBfam9pbkFCQwCIAQxxYXBfYmF0Y2hBZGQAiQEKZjJtX2lzWmVybwCKAQlmMm1faXNPbmUAiwEIZjJtX3plcm8AjAEHZjJtX29uZQCNAQhmMm1fY29weQCOAQdmMm1fbXVsAI8BCGYybV9tdWwxAJABCmYybV9zcXVhcmUAkQEHZjJtX2FkZACSAQdmMm1fc3ViAJMBB2YybV9uZWcAlAEIZjJtX3NpZ24AmwENZjJtX2Nvbmp1Z2F0ZQCVARJmMm1fZnJvbU1vbnRnb21lcnkAlwEQZjJtX3RvTW9udGdvbWVyeQCWAQZmMm1fZXEAmAELZjJtX2ludmVyc2UAmQEHZjJtX2V4cACeAQ9mMm1fdGltZXNTY2FsYXIAmgEQZjJtX2JhdGNoSW52ZXJzZQCdAQhmMm1fc3FydACfAQxmMm1faXNTcXVhcmUAoAEOZjJtX2lzTmVnYXRpdmUAnAEMZzJtX211bHRpZXhwAMsBEmcybV9tdWx0aWV4cF9jaHVuawDKARJnMm1fbXVsdGlleHBBZmZpbmUAzwEYZzJtX211bHRpZXhwQWZmaW5lX2NodW5rAM4BCmcybV9pc1plcm8AogEQZzJtX2lzWmVyb0FmZmluZQChAQZnMm1fZXEAqgELZzJtX2VxTWl4ZWQAqQEMZzJtX2VxQWZmaW5lAKgBCGcybV9jb3B5AKYBDmcybV9jb3B5QWZmaW5lAKUBCGcybV96ZXJvAKQBDmcybV96ZXJvQWZmaW5lAKMBCmcybV9kb3VibGUArAEQZzJtX2RvdWJsZUFmZmluZQCrAQdnMm1fYWRkAK8BDGcybV9hZGRNaXhlZACuAQ1nMm1fYWRkQWZmaW5lAK0BB2cybV9uZWcAsQENZzJtX25lZ0FmZmluZQCwAQdnMm1fc3ViALQBDGcybV9zdWJNaXhlZACzAQ1nMm1fc3ViQWZmaW5lALIBEmcybV9mcm9tTW9udGdvbWVyeQC2ARhnMm1fZnJvbU1vbnRnb21lcnlBZmZpbmUAtQEQZzJtX3RvTW9udGdvbWVyeQC4ARZnMm1fdG9Nb250Z29tZXJ5QWZmaW5lALcBD2cybV90aW1lc1NjYWxhcgDQARVnMm1fdGltZXNTY2FsYXJBZmZpbmUA0QENZzJtX25vcm1hbGl6ZQC9AQpnMm1fTEVNdG9VAL8BCmcybV9MRU10b0MAwAEKZzJtX1V0b0xFTQDBAQpnMm1fQ3RvTEVNAMIBD2cybV9iYXRjaExFTXRvVQDDAQ9nMm1fYmF0Y2hMRU10b0MAxAEPZzJtX2JhdGNoVXRvTEVNAMUBD2cybV9iYXRjaEN0b0xFTQDGAQxnMm1fdG9BZmZpbmUAuQEOZzJtX3RvSmFjb2JpYW4ApwERZzJtX2JhdGNoVG9BZmZpbmUAvAETZzJtX2JhdGNoVG9KYWNvYmlhbgDHAQtnMm1faW5DdXJ2ZQC7ARFnMm1faW5DdXJ2ZUFmZmluZQC6AQtnMW1fdGltZXNGcgDSAQdnMW1fZmZ0ANgBCGcxbV9pZmZ0ANkBCmcxbV9yYXdmZnQA1gELZzFtX2ZmdEpvaW4A2gEOZzFtX2ZmdEpvaW5FeHQA2wERZzFtX2ZmdEpvaW5FeHRJbnYA3AEKZzFtX2ZmdE1peADdAQxnMW1fZmZ0RmluYWwA3gEdZzFtX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24A3wELZzJtX3RpbWVzRnIA4AEHZzJtX2ZmdADmAQhnMm1faWZmdADnAQpnMm1fcmF3ZmZ0AOQBC2cybV9mZnRKb2luAOgBDmcybV9mZnRKb2luRXh0AOkBEWcybV9mZnRKb2luRXh0SW52AOoBCmcybV9mZnRNaXgA6wEMZzJtX2ZmdEZpbmFsAOwBHWcybV9wcmVwYXJlTGFncmFuZ2VFdmFsdWF0aW9uAO0BEWcxbV90aW1lc0ZyQWZmaW5lAO4BEWcybV90aW1lc0ZyQWZmaW5lAO8BEWZybV9iYXRjaEFwcGx5S2V5APABEWcxbV9iYXRjaEFwcGx5S2V5APEBFmcxbV9iYXRjaEFwcGx5S2V5TWl4ZWQA8gERZzJtX2JhdGNoQXBwbHlLZXkA8wEWZzJtX2JhdGNoQXBwbHlLZXlNaXhlZAD0AQpmNm1faXNaZXJvAPYBCWY2bV9pc09uZQD3AQhmNm1femVybwD4AQdmNm1fb25lAPkBCGY2bV9jb3B5APoBB2Y2bV9tdWwA+wEKZjZtX3NxdWFyZQD8AQdmNm1fYWRkAP0BB2Y2bV9zdWIA/gEHZjZtX25lZwD/AQhmNm1fc2lnbgCAAhJmNm1fZnJvbU1vbnRnb21lcnkAggIQZjZtX3RvTW9udGdvbWVyeQCBAgZmNm1fZXEAgwILZjZtX2ludmVyc2UAhAIHZjZtX2V4cACIAg9mNm1fdGltZXNTY2FsYXIAhQIQZjZtX2JhdGNoSW52ZXJzZQCHAg5mNm1faXNOZWdhdGl2ZQCGAgpmdG1faXNaZXJvAIoCCWZ0bV9pc09uZQCLAghmdG1femVybwCMAgdmdG1fb25lAI0CCGZ0bV9jb3B5AI4CB2Z0bV9tdWwAjwIIZnRtX211bDEAkAIKZnRtX3NxdWFyZQCRAgdmdG1fYWRkAJICB2Z0bV9zdWIAkwIHZnRtX25lZwCUAghmdG1fc2lnbgCbAg1mdG1fY29uanVnYXRlAJUCEmZ0bV9mcm9tTW9udGdvbWVyeQCXAhBmdG1fdG9Nb250Z29tZXJ5AJYCBmZ0bV9lcQCYAgtmdG1faW52ZXJzZQCZAgdmdG1fZXhwAJ4CD2Z0bV90aW1lc1NjYWxhcgCaAhBmdG1fYmF0Y2hJbnZlcnNlAJ0CCGZ0bV9zcXJ0AJ8CDGZ0bV9pc1NxdWFyZQCgAg5mdG1faXNOZWdhdGl2ZQCcAhRibjEyOF9fZnJvYmVuaXVzTWFwMACpAhRibjEyOF9fZnJvYmVuaXVzTWFwMQCqAhRibjEyOF9fZnJvYmVuaXVzTWFwMgCrAhRibjEyOF9fZnJvYmVuaXVzTWFwMwCsAhRibjEyOF9fZnJvYmVuaXVzTWFwNACtAhRibjEyOF9fZnJvYmVuaXVzTWFwNQCuAhRibjEyOF9fZnJvYmVuaXVzTWFwNgCvAhRibjEyOF9fZnJvYmVuaXVzTWFwNwCwAhRibjEyOF9fZnJvYmVuaXVzTWFwOACxAhRibjEyOF9fZnJvYmVuaXVzTWFwOQCyAhBibjEyOF9wYWlyaW5nRXExALkCEGJuMTI4X3BhaXJpbmdFcTIAugIQYm4xMjhfcGFpcmluZ0VxMwC7AhBibjEyOF9wYWlyaW5nRXE0ALwCEGJuMTI4X3BhaXJpbmdFcTUAvQINYm4xMjhfcGFpcmluZwC+Ag9ibjEyOF9wcmVwYXJlRzEAowIPYm4xMjhfcHJlcGFyZUcyAKUCEGJuMTI4X21pbGxlckxvb3AAqAIZYm4xMjhfZmluYWxFeHBvbmVudGlhdGlvbgC4AhxibjEyOF9maW5hbEV4cG9uZW50aWF0aW9uT2xkALMCD2JuMTI4X19tdWxCeTAyNACmAhJibjEyOF9fbXVsQnkwMjRPbGQApwIXYm4xMjhfX2N5Y2xvdG9taWNTcXVhcmUAtQIXYm4xMjhfX2N5Y2xvdG9taWNFeHBfdzAAtgIK/d8DvwIqACABIAApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxgLHgAgAEIANwMAIABCADcDCCAAQgA3AxAgAEIANwMYCzMAIAApAxhQBEAgACkDEFAEQCAAKQMIUARAIAApAwBQDwVBAA8LBUEADwsFQQAPC0EADwseACAAQgE3AwAgAEIANwMIIABCADcDECAAQgA3AxgLRwAgACkDGCABKQMYUQRAIAApAxAgASkDEFEEQCAAKQMIIAEpAwhRBEAgACkDACABKQMAUQ8FQQAPCwVBAA8LBUEADwtBAA8LfQAgACkDGCABKQMYVARAQQAPBSAAKQMYIAEpAxhWBEBBAQ8FIAApAxAgASkDEFQEQEEADwUgACkDECABKQMQVgRAQQEPBSAAKQMIIAEpAwhUBEBBAA8FIAApAwggASkDCFYEQEEBDwUgACkDACABKQMAWg8LCwsLCwtBAA8L1AEBAX4gADUCACABNQIAfCEDIAIgAz4CACAANQIEIAE1AgR8IANCIIh8IQMgAiADPgIEIAA1AgggATUCCHwgA0IgiHwhAyACIAM+AgggADUCDCABNQIMfCADQiCIfCEDIAIgAz4CDCAANQIQIAE1AhB8IANCIIh8IQMgAiADPgIQIAA1AhQgATUCFHwgA0IgiHwhAyACIAM+AhQgADUCGCABNQIYfCADQiCIfCEDIAIgAz4CGCAANQIcIAE1Ahx8IANCIIh8IQMgAiADPgIcIANCIIinC4wCAQF+IAA1AgAgATUCAH0hAyACIANC/////w+DPgIAIAA1AgQgATUCBH0gA0Igh3whAyACIANC/////w+DPgIEIAA1AgggATUCCH0gA0Igh3whAyACIANC/////w+DPgIIIAA1AgwgATUCDH0gA0Igh3whAyACIANC/////w+DPgIMIAA1AhAgATUCEH0gA0Igh3whAyACIANC/////w+DPgIQIAA1AhQgATUCFH0gA0Igh3whAyACIANC/////w+DPgIUIAA1AhggATUCGH0gA0Igh3whAyACIANC/////w+DPgIYIAA1AhwgATUCHH0gA0Igh3whAyACIANC/////w+DPgIcIANCIIenC48QEgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfiADQv////8PgyAANQIAIgUgATUCACIGfnwhAyAEIANCIIh8IQQgAiADPgIAIARCIIghAyAEQv////8PgyAFIAE1AgQiCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgQiByAGfnwhBCADIARCIIh8IQMgAiAEPgIEIANCIIghBCADQv////8PgyAFIAE1AggiCn58IQMgBCADQiCIfCEEIANC/////w+DIAcgCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AggiCSAGfnwhAyAEIANCIIh8IQQgAiADPgIIIARCIIghAyAEQv////8PgyAFIAE1AgwiDH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgCn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgwiCyAGfnwhBCADIARCIIh8IQMgAiAEPgIMIANCIIghBCADQv////8PgyAFIAE1AhAiDn58IQMgBCADQiCIfCEEIANC/////w+DIAcgDH58IQMgBCADQiCIfCEEIANC/////w+DIAkgCn58IQMgBCADQiCIfCEEIANC/////w+DIAsgCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AhAiDSAGfnwhAyAEIANCIIh8IQQgAiADPgIQIARCIIghAyAEQv////8PgyAFIAE1AhQiEH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgDn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgDH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgCn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhQiDyAGfnwhBCADIARCIIh8IQMgAiAEPgIUIANCIIghBCADQv////8PgyAFIAE1AhgiEn58IQMgBCADQiCIfCEEIANC/////w+DIAcgEH58IQMgBCADQiCIfCEEIANC/////w+DIAkgDn58IQMgBCADQiCIfCEEIANC/////w+DIAsgDH58IQMgBCADQiCIfCEEIANC/////w+DIA0gCn58IQMgBCADQiCIfCEEIANC/////w+DIA8gCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AhgiESAGfnwhAyAEIANCIIh8IQQgAiADPgIYIARCIIghAyAEQv////8PgyAFIAE1AhwiFH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgEn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgEH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgDn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gDH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gCn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhwiEyAGfnwhBCADIARCIIh8IQMgAiAEPgIcIANCIIghBCADQv////8PgyAHIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyALIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyANIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyARIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyATIAh+fCEDIAQgA0IgiHwhBCACIAM+AiAgBEIgiCEDIARC/////w+DIAkgFH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgEn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gEH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gDn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgDH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgCn58IQQgAyAEQiCIfCEDIAIgBD4CJCADQiCIIQQgA0L/////D4MgCyAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSASfnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAMfnwhAyAEIANCIIh8IQQgAiADPgIoIARCIIghAyAEQv////8PgyANIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIA5+fCEEIAMgBEIgiHwhAyACIAQ+AiwgA0IgiCEEIANC/////w+DIA8gFH58IQMgBCADQiCIfCEEIANC/////w+DIBEgEn58IQMgBCADQiCIfCEEIANC/////w+DIBMgEH58IQMgBCADQiCIfCEEIAIgAz4CMCAEQiCIIQMgBEL/////D4MgESAUfnwhBCADIARCIIh8IQMgBEL/////D4MgEyASfnwhBCADIARCIIh8IQMgAiAEPgI0IANCIIghBCADQv////8PgyATIBR+fCEDIAQgA0IgiHwhBCACIAM+AjggBEIgiCEDIAIgBD4CPAuMEgwBfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX5CACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAANQIAIgYgBn58IQIgAyACQiCIfCEDIAEgAj4CACADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIEIgd+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIEIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AggiCH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAcgB358IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AgggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCDCIJfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAIfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CDCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIQIgp+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAIIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIQIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhQiC358IQIgAyACQiCIfCEDIAJC/////w+DIAcgCn58IQIgAyACQiCIfCEDIAJC/////w+DIAggCX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCGCIMfnwhAiADIAJCIIh8IQMgAkL/////D4MgByALfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAKfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCSAJfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CGCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIcIg1+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAt+fCECIAMgAkIgiHwhAyACQv////8PgyAJIAp+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIcIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAJIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAKIAp+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIgIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAIIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAJIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAKIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIkIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAJIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAKIAx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyALIAt+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIoIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAKIA1+fCECIAMgAkIgiHwhAyACQv////8PgyALIAx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIsIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyALIA1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAMIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIwIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAMIA1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgI0IAMhBCAEQiCIIQVCACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyANIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgI4IAMhBCAEQiCIIQUgASAEPgI8CwoAIAAgACABEAgLtgEBAX4gADUAACABfiEDIAIgAz4AACAANQAEIAF+IANCIIh8IQMgAiADPgAEIAA1AAggAX4gA0IgiHwhAyACIAM+AAggADUADCABfiADQiCIfCEDIAIgAz4ADCAANQAQIAF+IANCIIh8IQMgAiADPgAQIAA1ABQgAX4gA0IgiHwhAyACIAM+ABQgADUAGCABfiADQiCIfCEDIAIgAz4AGCAANQAcIAF+IANCIIh8IQMgAiADPgAcC04CAX4BfyAAIQMgAzUAACABfCECIAMgAj4AACACQiCIIQICQANAIAJQDQEgA0EEaiEDIAM1AAAgAnwhAiADIAI+AAAgAkIgiCECDAALCwurAgcBfwF/AX8BfwF+AX4BfyACBEAgAiEFBUHIACEFCyADBEAgAyEEBUHoACEECyAAIAQQACABQSgQACAFEAFBiAEQAUEf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LCADQiCIfEHoAzUCECAEfnwhAyAAIAM+AiwgADUCMCADQiCIfEHoAzUCFCAEfnwhAyAAIAM+AjAgADUCNCADQiCIfEHoAzUCGCAEfnwhAyAAIAM+AjQgADUCOCADQiCIfEHoAzUCHCAEfnwhAyAAIAM+AjhBiAYgA0IgiD4CHEGIBiAAQSBqIAEQEAu+HyMBfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+QonHmaQOIQUgA0L/////D4MgADUCACIGIAE1AgAiB358IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEIIANC/////w+DQQA1AugDIgkgCH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AgQiC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgQiCiAHfnwhBCADIARCIIh8IQMgBEL/////D4NBADUC7AMiDSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DIQwgBEL/////D4MgCSAMfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAYgATUCCCIPfnwhAyAEIANCIIh8IQQgA0L/////D4MgCiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCCCIOIAd+fCEDIAQgA0IgiHwhBCADQv////8PgyANIAx+fCEDIAQgA0IgiHwhBCADQv////8Pg0EANQLwAyIRIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAFfkL/////D4MhECADQv////8PgyAJIBB+fCEDIAQgA0IgiHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIMIhN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAKIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAOIAt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIMIhIgB358IQQgAyAEQiCIfCEDIARC/////w+DIA0gEH58IQQgAyAEQiCIfCEDIARC/////w+DIBEgDH58IQQgAyAEQiCIfCEDIARC/////w+DQQA1AvQDIhUgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEUIARC/////w+DIAkgFH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAGIAE1AhAiF358IQMgBCADQiCIfCEEIANC/////w+DIAogE358IQMgBCADQiCIfCEEIANC/////w+DIA4gD358IQMgBCADQiCIfCEEIANC/////w+DIBIgC358IQMgBCADQiCIfCEEIANC/////w+DIAA1AhAiFiAHfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAMfnwhAyAEIANCIIh8IQQgA0L/////D4NBADUC+AMiGSAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DIRggA0L/////D4MgCSAYfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCFCIbfnwhBCADIARCIIh8IQMgBEL/////D4MgCiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgDiATfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgFiALfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCFCIaIAd+fCEEIAMgBEIgiHwhAyAEQv////8PgyANIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIAx+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQL8AyIdIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhHCAEQv////8PgyAJIBx+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgBiABNQIYIh9+fCEDIAQgA0IgiHwhBCADQv////8PgyAKIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAOIBd+fCEDIAQgA0IgiHwhBCADQv////8PgyASIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAWIA9+fCEDIAQgA0IgiHwhBCADQv////8PgyAaIAt+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIYIh4gB358IQMgBCADQiCIfCEEIANC/////w+DIA0gHH58IQMgBCADQiCIfCEEIANC/////w+DIBEgGH58IQMgBCADQiCIfCEEIANC/////w+DIBUgFH58IQMgBCADQiCIfCEEIANC/////w+DIBkgEH58IQMgBCADQiCIfCEEIANC/////w+DIB0gDH58IQMgBCADQiCIfCEEIANC/////w+DQQA1AoAEIiEgCH58IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEgIANC/////w+DIAkgIH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AhwiI358IQQgAyAEQiCIfCEDIARC/////w+DIAogH358IQQgAyAEQiCIfCEDIARC/////w+DIA4gG358IQQgAyAEQiCIfCEDIARC/////w+DIBIgF358IQQgAyAEQiCIfCEDIARC/////w+DIBYgE358IQQgAyAEQiCIfCEDIARC/////w+DIBogD358IQQgAyAEQiCIfCEDIARC/////w+DIB4gC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhwiIiAHfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgESAcfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAUfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgISAMfnwhBCADIARCIIh8IQMgBEL/////D4NBADUChAQiJSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DISQgBEL/////D4MgCSAkfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAogI358IQMgBCADQiCIfCEEIANC/////w+DIA4gH358IQMgBCADQiCIfCEEIANC/////w+DIBIgG358IQMgBCADQiCIfCEEIANC/////w+DIBYgF358IQMgBCADQiCIfCEEIANC/////w+DIBogE358IQMgBCADQiCIfCEEIANC/////w+DIB4gD358IQMgBCADQiCIfCEEIANC/////w+DICIgC358IQMgBCADQiCIfCEEIANC/////w+DIA0gJH58IQMgBCADQiCIfCEEIANC/////w+DIBEgIH58IQMgBCADQiCIfCEEIANC/////w+DIBUgHH58IQMgBCADQiCIfCEEIANC/////w+DIBkgGH58IQMgBCADQiCIfCEEIANC/////w+DIB0gFH58IQMgBCADQiCIfCEEIANC/////w+DICEgEH58IQMgBCADQiCIfCEEIANC/////w+DICUgDH58IQMgBCADQiCIfCEEIAIgAz4CACAEQiCIIQMgBEL/////D4MgDiAjfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAffnwhBCADIARCIIh8IQMgBEL/////D4MgFiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgHiATfnwhBCADIARCIIh8IQMgBEL/////D4MgIiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgESAkfnwhBCADIARCIIh8IQMgBEL/////D4MgFSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAcfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAYfnwhBCADIARCIIh8IQMgBEL/////D4MgISAUfnwhBCADIARCIIh8IQMgBEL/////D4MgJSAQfnwhBCADIARCIIh8IQMgAiAEPgIEIANCIIghBCADQv////8PgyASICN+fCEDIAQgA0IgiHwhBCADQv////8PgyAWIB9+fCEDIAQgA0IgiHwhBCADQv////8PgyAaIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAeIBd+fCEDIAQgA0IgiHwhBCADQv////8PgyAiIBN+fCEDIAQgA0IgiHwhBCADQv////8PgyAVICR+fCEDIAQgA0IgiHwhBCADQv////8PgyAZICB+fCEDIAQgA0IgiHwhBCADQv////8PgyAdIBx+fCEDIAQgA0IgiHwhBCADQv////8PgyAhIBh+fCEDIAQgA0IgiHwhBCADQv////8PgyAlIBR+fCEDIAQgA0IgiHwhBCACIAM+AgggBEIgiCEDIARC/////w+DIBYgI358IQQgAyAEQiCIfCEDIARC/////w+DIBogH358IQQgAyAEQiCIfCEDIARC/////w+DIB4gG358IQQgAyAEQiCIfCEDIARC/////w+DICIgF358IQQgAyAEQiCIfCEDIARC/////w+DIBkgJH58IQQgAyAEQiCIfCEDIARC/////w+DIB0gIH58IQQgAyAEQiCIfCEDIARC/////w+DICEgHH58IQQgAyAEQiCIfCEDIARC/////w+DICUgGH58IQQgAyAEQiCIfCEDIAIgBD4CDCADQiCIIQQgA0L/////D4MgGiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgHiAffnwhAyAEIANCIIh8IQQgA0L/////D4MgIiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAkfnwhAyAEIANCIIh8IQQgA0L/////D4MgISAgfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAcfnwhAyAEIANCIIh8IQQgAiADPgIQIARCIIghAyAEQv////8PgyAeICN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAiIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhICR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAlICB+fCEEIAMgBEIgiHwhAyACIAQ+AhQgA0IgiCEEIANC/////w+DICIgI358IQMgBCADQiCIfCEEIANC/////w+DICUgJH58IQMgBCADQiCIfCEEIAIgAz4CGCAEQiCIIQMgAiAEPgIcIAOnBEAgAkHoAyACEAcaBSACQegDEAUEQCACQegDIAIQBxoLCwu7IR0BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+QonHmaQOIQZCACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAANQIAIgcgB358IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEIIAJC/////w+DQQA1AugDIgkgCH58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AgQiCn58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8Pg0EANQLsAyIMIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhCyACQv////8PgyAJIAt+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIIIg1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAKIAp+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUC8AMiDyAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIQ4gAkL/////D4MgCSAOfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCDCIQfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiANfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgDn58IQIgAyACQiCIfCEDIAJC/////w+DIA8gC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AvQDIhIgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyERIAJC/////w+DIAkgEX58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhAiE358IQIgAyACQiCIfCEDIAJC/////w+DIAogEH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIA0gDX58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAPIA5+fCECIAMgAkIgiHwhAyACQv////8PgyASIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQL4AyIVIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhFCACQv////8PgyAJIBR+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIUIhZ+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBN+fCECIAMgAkIgiHwhAyACQv////8PgyANIBB+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyARfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUC/AMiGCAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIRcgAkL/////D4MgCSAXfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCGCIZfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAWfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSATfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgECAQfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgF358IQIgAyACQiCIfCEDIAJC/////w+DIA8gFH58IQIgAyACQiCIfCEDIAJC/////w+DIBIgEX58IQIgAyACQiCIfCEDIAJC/////w+DIBUgDn58IQIgAyACQiCIfCEDIAJC/////w+DIBggC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AoAEIhsgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEaIAJC/////w+DIAkgGn58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhwiHH58IQIgAyACQiCIfCEDIAJC/////w+DIAogGX58IQIgAyACQiCIfCEDIAJC/////w+DIA0gFn58IQIgAyACQiCIfCEDIAJC/////w+DIBAgE358IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBp+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBd+fCECIAMgAkIgiHwhAyACQv////8PgyASIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAVIBF+fCECIAMgAkIgiHwhAyACQv////8PgyAYIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAbIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQKEBCIeIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhHSACQv////8PgyAJIB1+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgCiAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgECAWfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgEyATfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgHX58IQIgAyACQiCIfCEDIAJC/////w+DIA8gGn58IQIgAyACQiCIfCEDIAJC/////w+DIBIgF358IQIgAyACQiCIfCEDIAJC/////w+DIBUgFH58IQIgAyACQiCIfCEDIAJC/////w+DIBggEX58IQIgAyACQiCIfCEDIAJC/////w+DIBsgDn58IQIgAyACQiCIfCEDIAJC/////w+DIB4gC358IQIgAyACQiCIfCEDIAEgAj4CACADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgDSAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgECAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAWfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIA8gHX58IQIgAyACQiCIfCEDIAJC/////w+DIBIgGn58IQIgAyACQiCIfCEDIAJC/////w+DIBUgF358IQIgAyACQiCIfCEDIAJC/////w+DIBggFH58IQIgAyACQiCIfCEDIAJC/////w+DIBsgEX58IQIgAyACQiCIfCEDIAJC/////w+DIB4gDn58IQIgAyACQiCIfCEDIAEgAj4CBCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgECAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgEyAZfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgFiAWfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBIgHX58IQIgAyACQiCIfCEDIAJC/////w+DIBUgGn58IQIgAyACQiCIfCEDIAJC/////w+DIBggF358IQIgAyACQiCIfCEDIAJC/////w+DIBsgFH58IQIgAyACQiCIfCEDIAJC/////w+DIB4gEX58IQIgAyACQiCIfCEDIAEgAj4CCCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgEyAcfnwhAiADIAJCIIh8IQMgAkL/////D4MgFiAZfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBUgHX58IQIgAyACQiCIfCEDIAJC/////w+DIBggGn58IQIgAyACQiCIfCEDIAJC/////w+DIBsgF358IQIgAyACQiCIfCEDIAJC/////w+DIB4gFH58IQIgAyACQiCIfCEDIAEgAj4CDCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgFiAcfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgGSAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIBggHX58IQIgAyACQiCIfCEDIAJC/////w+DIBsgGn58IQIgAyACQiCIfCEDIAJC/////w+DIB4gF358IQIgAyACQiCIfCEDIAEgAj4CECADIQQgBEIg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AhAgA0IgiHxB6A01AgggBH58IQMgACADPgIQIAA1AhQgA0IgiHxB6A01AgwgBH58IQMgACADPgIUIAA1AhggA0IgiHxB6A01AhAgBH58IQMgACADPgIYIAA1AhwgA0IgiHxB6A01AhQgBH58IQMgACADPgIcIAA1AiAgA0IgiHxB6A01AhggBH58IQMgACADPgIgIAA1AiQgA0IgiHxB6A01AhwgBH58IQMgACADPgIkQYgQIANCIIg+AghCACEDIAA1AgwgAn5C/////w+DIQQgADUCDCADQiCIfEHoDTUCACAEfnwhAyAAIAM+AgwgADUCECADQiCIfEHoDTUCBCAEfnwhAyAAIAM+AhAgADUCFCADQiCIfEHoDTUCCCAEfnwhAyAAIAM+AhQgADUCGCADQiCIfEHoDTUCDCAEfnwhAyAAIAM+AhggADUCHCADQiCIfEHoDTUCECAEfnwhAyAAIAM+AhwgADUCICADQiCIfEHoDTUCFCAEfnwhAyAAIAM+AiAgADUCJCADQiCIfEHoDTUCGCAEfnwhAyAAIAM+AiQgADUCKCADQiCIfEHoDTUCHCAEfnwhAyAAIAM+AihBiBAgA0IgiD4CDEIAIQMgADUCECACfkL/////D4MhBCAANQIQIANCIIh8QegNNQIAIAR+fCEDIAAgAz4CECAANQIUIANCIIh8QegNNQIEIAR+fCEDIAAgAz4CFCAANQIYIANCIIh8QegNNQIIIAR+fCEDIAAgAz4CGCAANQIcIANCIIh8QegNNQIMIAR+fCEDIAAgAz4CHCAANQIgIANCIIh8QegNNQIQIAR+fCEDIAAgAz4CICAANQIkIANCIIh8QegNNQIUIAR+fCEDIAAgAz4CJCAANQIoIANCIIh8QegNNQIYIAR+fCEDIAAgAz4CKCAANQIsIANCIIh8QegNNQIcIAR+fCEDIAAgAz4CLEGIECADQiCIPgIQQgAhAyAANQIUIAJ+Qv////8PgyEEIAA1AhQgA0IgiHxB6A01AgAgBH58IQMgACADPgIUIAA1AhggA0IgiHxB6A01AgQgBH58IQMgACADPgIYIAA1AhwgA0IgiHxB6A01AgggBH58IQMgACADPgIcIAA1AiAgA0IgiHxB6A01AgwgBH58IQMgACADPgIgIAA1AiQgA0IgiHxB6A01AhAgBH58IQMgACADPgIkIAA1AiggA0IgiHxB6A01AhQgBH58IQMgACADPgIoIAA1AiwgA0IgiHxB6A01AhggBH58IQMgACADPgIsIAA1AjAgA0IgiHxB6A01AhwgBH58IQMgACADPgIwQYgQIANCIIg+AhRCACEDIAA1AhggAn5C/////w+DIQQgADUCGCADQiCIfEHoDTUCACAEfnwhAyAAIAM+AhggADUCHCADQiCIfEHoDTUCBCAEfnwhAyAAIAM+AhwgADUCICADQiCIfEHoDTUCCCAEfnwhAyAAIAM+AiAgADUCJCADQiCIfEHoDTUCDCAEfnwhAyAAIAM+AiQgADUCKCADQiCIfEHoDTUCECAEfnwhAyAAIAM+AiggADUCLCADQiCIfEHoDTUCFCAEfnwhAyAAIAM+AiwgADUCMCADQiCIfEHoDTUCGCAEfnwhAyAAIAM+AjAgADUCNCADQiCIfEHoDTUCHCAEfnwhAyAAIAM+AjRBiBAgA0IgiD4CGEIAIQMgADUCHCACfkL/////D4MhBCAANQIcIANCIIh8QegNNQIAIAR+fCEDIAAgAz4CHCAANQIgIANCIIh8QegNNQIEIAR+fCEDIAAgAz4CICAANQIkIANCIIh8QegNNQIIIAR+fCEDIAAgAz4CJCAANQIoIANCIIh8QegNNQIMIAR+fCEDIAAgAz4CKCAANQIsIANCIIh8QegNNQIQIAR+fCEDIAAgAz4CLCAANQIwIANCIIh8QegNNQIUIAR+fCEDIAAgAz4CMCAANQI0IANCIIh8QegNNQIYIAR+fCEDIAAgAz4CNCAANQI4IANCIIh8QegNNQIcIAR+fCEDIAAgAz4COEGIECADQiCIPgIcQYgQIABBIGogARAqC74fIwF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX5C/////w4hBSADQv////8PgyAANQIAIgYgATUCACIHfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DIQggA0L/////D4NBADUC6A0iCSAIfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCBCILfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCBCIKIAd+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQLsDSINIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhDCAEQv////8PgyAJIAx+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgBiABNQIIIg9+fCEDIAQgA0IgiHwhBCADQv////8PgyAKIAt+fCEDIAQgA0IgiHwhBCADQv////8PgyAANQIIIg4gB358IQMgBCADQiCIfCEEIANC/////w+DIA0gDH58IQMgBCADQiCIfCEEIANC/////w+DQQA1AvANIhEgCH58IQMgBCADQiCIfCEEIANC/////w+DIAV+Qv////8PgyEQIANC/////w+DIAkgEH58IQMgBCADQiCIfCEEIARCIIghAyAEQv////8PgyAGIAE1AgwiE358IQQgAyAEQiCIfCEDIARC/////w+DIAogD358IQQgAyAEQiCIfCEDIARC/////w+DIA4gC358IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgwiEiAHfnwhBCADIARCIIh8IQMgBEL/////D4MgDSAQfnwhBCADIARCIIh8IQMgBEL/////D4MgESAMfnwhBCADIARCIIh8IQMgBEL/////D4NBADUC9A0iFSAIfnwhBCADIARCIIh8IQMgBEL/////D4MgBX5C/////w+DIRQgBEL/////D4MgCSAUfnwhBCADIARCIIh8IQMgA0IgiCEEIANC/////w+DIAYgATUCECIXfnwhAyAEIANCIIh8IQQgA0L/////D4MgCiATfnwhAyAEIANCIIh8IQQgA0L/////D4MgDiAPfnwhAyAEIANCIIh8IQQgA0L/////D4MgEiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgADUCECIWIAd+fCEDIAQgA0IgiHwhBCADQv////8PgyANIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyARIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyAVIAx+fCEDIAQgA0IgiHwhBCADQv////8Pg0EANQL4DSIZIAh+fCEDIAQgA0IgiHwhBCADQv////8PgyAFfkL/////D4MhGCADQv////8PgyAJIBh+fCEDIAQgA0IgiHwhBCAEQiCIIQMgBEL/////D4MgBiABNQIUIht+fCEEIAMgBEIgiHwhAyAEQv////8PgyAKIBd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAOIBN+fCEEIAMgBEIgiHwhAyAEQv////8PgyASIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAWIAt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAANQIUIhogB358IQQgAyAEQiCIfCEDIARC/////w+DIA0gGH58IQQgAyAEQiCIfCEDIARC/////w+DIBEgFH58IQQgAyAEQiCIfCEDIARC/////w+DIBUgEH58IQQgAyAEQiCIfCEDIARC/////w+DIBkgDH58IQQgAyAEQiCIfCEDIARC/////w+DQQA1AvwNIh0gCH58IQQgAyAEQiCIfCEDIARC/////w+DIAV+Qv////8PgyEcIARC/////w+DIAkgHH58IQQgAyAEQiCIfCEDIANCIIghBCADQv////8PgyAGIAE1AhgiH358IQMgBCADQiCIfCEEIANC/////w+DIAogG358IQMgBCADQiCIfCEEIANC/////w+DIA4gF358IQMgBCADQiCIfCEEIANC/////w+DIBIgE358IQMgBCADQiCIfCEEIANC/////w+DIBYgD358IQMgBCADQiCIfCEEIANC/////w+DIBogC358IQMgBCADQiCIfCEEIANC/////w+DIAA1AhgiHiAHfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAMfnwhAyAEIANCIIh8IQQgA0L/////D4NBADUCgA4iISAIfnwhAyAEIANCIIh8IQQgA0L/////D4MgBX5C/////w+DISAgA0L/////D4MgCSAgfnwhAyAEIANCIIh8IQQgBEIgiCEDIARC/////w+DIAYgATUCHCIjfnwhBCADIARCIIh8IQMgBEL/////D4MgCiAffnwhBCADIARCIIh8IQMgBEL/////D4MgDiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgEiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgFiATfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAPfnwhBCADIARCIIh8IQMgBEL/////D4MgHiALfnwhBCADIARCIIh8IQMgBEL/////D4MgADUCHCIiIAd+fCEEIAMgBEIgiHwhAyAEQv////8PgyANICB+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAdIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhIAx+fCEEIAMgBEIgiHwhAyAEQv////8Pg0EANQKEDiIlIAh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAFfkL/////D4MhJCAEQv////8PgyAJICR+fCEEIAMgBEIgiHwhAyADQiCIIQQgA0L/////D4MgCiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgDiAffnwhAyAEIANCIIh8IQQgA0L/////D4MgEiAbfnwhAyAEIANCIIh8IQQgA0L/////D4MgFiAXfnwhAyAEIANCIIh8IQQgA0L/////D4MgGiATfnwhAyAEIANCIIh8IQQgA0L/////D4MgHiAPfnwhAyAEIANCIIh8IQQgA0L/////D4MgIiALfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSAkfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAgfnwhAyAEIANCIIh8IQQgA0L/////D4MgFSAcfnwhAyAEIANCIIh8IQQgA0L/////D4MgGSAYfnwhAyAEIANCIIh8IQQgA0L/////D4MgHSAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgISAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAMfnwhAyAEIANCIIh8IQQgAiADPgIAIARCIIghAyAEQv////8PgyAOICN+fCEEIAMgBEIgiHwhAyAEQv////8PgyASIB9+fCEEIAMgBEIgiHwhAyAEQv////8PgyAWIBt+fCEEIAMgBEIgiHwhAyAEQv////8PgyAaIBd+fCEEIAMgBEIgiHwhAyAEQv////8PgyAeIBN+fCEEIAMgBEIgiHwhAyAEQv////8PgyAiIA9+fCEEIAMgBEIgiHwhAyAEQv////8PgyARICR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAVICB+fCEEIAMgBEIgiHwhAyAEQv////8PgyAZIBx+fCEEIAMgBEIgiHwhAyAEQv////8PgyAdIBh+fCEEIAMgBEIgiHwhAyAEQv////8PgyAhIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAlIBB+fCEEIAMgBEIgiHwhAyACIAQ+AgQgA0IgiCEEIANC/////w+DIBIgI358IQMgBCADQiCIfCEEIANC/////w+DIBYgH358IQMgBCADQiCIfCEEIANC/////w+DIBogG358IQMgBCADQiCIfCEEIANC/////w+DIB4gF358IQMgBCADQiCIfCEEIANC/////w+DICIgE358IQMgBCADQiCIfCEEIANC/////w+DIBUgJH58IQMgBCADQiCIfCEEIANC/////w+DIBkgIH58IQMgBCADQiCIfCEEIANC/////w+DIB0gHH58IQMgBCADQiCIfCEEIANC/////w+DICEgGH58IQMgBCADQiCIfCEEIANC/////w+DICUgFH58IQMgBCADQiCIfCEEIAIgAz4CCCAEQiCIIQMgBEL/////D4MgFiAjfnwhBCADIARCIIh8IQMgBEL/////D4MgGiAffnwhBCADIARCIIh8IQMgBEL/////D4MgHiAbfnwhBCADIARCIIh8IQMgBEL/////D4MgIiAXfnwhBCADIARCIIh8IQMgBEL/////D4MgGSAkfnwhBCADIARCIIh8IQMgBEL/////D4MgHSAgfnwhBCADIARCIIh8IQMgBEL/////D4MgISAcfnwhBCADIARCIIh8IQMgBEL/////D4MgJSAYfnwhBCADIARCIIh8IQMgAiAEPgIMIANCIIghBCADQv////8PgyAaICN+fCEDIAQgA0IgiHwhBCADQv////8PgyAeIB9+fCEDIAQgA0IgiHwhBCADQv////8PgyAiIBt+fCEDIAQgA0IgiHwhBCADQv////8PgyAdICR+fCEDIAQgA0IgiHwhBCADQv////8PgyAhICB+fCEDIAQgA0IgiHwhBCADQv////8PgyAlIBx+fCEDIAQgA0IgiHwhBCACIAM+AhAgBEIgiCEDIARC/////w+DIB4gI358IQQgAyAEQiCIfCEDIARC/////w+DICIgH358IQQgAyAEQiCIfCEDIARC/////w+DICEgJH58IQQgAyAEQiCIfCEDIARC/////w+DICUgIH58IQQgAyAEQiCIfCEDIAIgBD4CFCADQiCIIQQgA0L/////D4MgIiAjfnwhAyAEIANCIIh8IQQgA0L/////D4MgJSAkfnwhAyAEIANCIIh8IQQgAiADPgIYIARCIIghAyACIAQ+AhwgA6cEQCACQegNIAIQBxoFIAJB6A0QBQRAIAJB6A0gAhAHGgsLC7shHQF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX5C/////w4hBkIAIQJCACEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAA1AgAiByAHfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIQggAkL/////D4NBADUC6A0iCSAIfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCBCIKfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DQQA1AuwNIgwgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyELIAJC/////w+DIAkgC358IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AggiDX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAogCn58IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQLwDSIPIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhDiACQv////8PgyAJIA5+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIMIhB+fCECIAMgAkIgiHwhAyACQv////8PgyAKIA1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUC9A0iEiAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIREgAkL/////D4MgCSARfnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCECITfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAQfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgDSANfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgEX58IQIgAyACQiCIfCEDIAJC/////w+DIA8gDn58IQIgAyACQiCIfCEDIAJC/////w+DIBIgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AvgNIhUgCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEUIAJC/////w+DIAkgFH58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIAA1AhQiFn58IQIgAyACQiCIfCEDIAJC/////w+DIAogE358IQIgAyACQiCIfCEDIAJC/////w+DIA0gEH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyACQv////8PgyAMIBR+fCECIAMgAkIgiHwhAyACQv////8PgyAPIBF+fCECIAMgAkIgiHwhAyACQv////8PgyASIA5+fCECIAMgAkIgiHwhAyACQv////8PgyAVIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0EANQL8DSIYIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAGfkL/////D4MhFyACQv////8PgyAJIBd+fCECIAMgAkIgiHwhAyADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgByAANQIYIhl+fCECIAMgAkIgiHwhAyACQv////8PgyAKIBZ+fCECIAMgAkIgiHwhAyACQv////8PgyANIBN+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAQIBB+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiARfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCALfnwhAiADIAJCIIh8IQMgAkL/////D4NBADUCgA4iGyAIfnwhAiADIAJCIIh8IQMgAkL/////D4MgBn5C/////w+DIRogAkL/////D4MgCSAafnwhAiADIAJCIIh8IQMgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAcgADUCHCIcfnwhAiADIAJCIIh8IQMgAkL/////D4MgCiAZfnwhAiADIAJCIIh8IQMgAkL/////D4MgDSAWfnwhAiADIAJCIIh8IQMgAkL/////D4MgECATfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAJC/////w+DIAwgGn58IQIgAyACQiCIfCEDIAJC/////w+DIA8gF358IQIgAyACQiCIfCEDIAJC/////w+DIBIgFH58IQIgAyACQiCIfCEDIAJC/////w+DIBUgEX58IQIgAyACQiCIfCEDIAJC/////w+DIBggDn58IQIgAyACQiCIfCEDIAJC/////w+DIBsgC358IQIgAyACQiCIfCEDIAJC/////w+DQQA1AoQOIh4gCH58IQIgAyACQiCIfCEDIAJC/////w+DIAZ+Qv////8PgyEdIAJC/////w+DIAkgHX58IQIgAyACQiCIfCEDIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAKIBx+fCECIAMgAkIgiHwhAyACQv////8PgyANIBl+fCECIAMgAkIgiHwhAyACQv////8PgyAQIBZ+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyATIBN+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDCAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgDyAafnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCARfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAOfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiALfnwhAiADIAJCIIh8IQMgASACPgIAIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyANIBx+fCECIAMgAkIgiHwhAyACQv////8PgyAQIBl+fCECIAMgAkIgiHwhAyACQv////8PgyATIBZ+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgDyAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgEiAafnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyARfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAOfnwhAiADIAJCIIh8IQMgASACPgIEIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAQIBx+fCECIAMgAkIgiHwhAyACQv////8PgyATIBl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAWIBZ+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgEiAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgFSAafnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAUfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiARfnwhAiADIAJCIIh8IQMgASACPgIIIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyATIBx+fCECIAMgAkIgiHwhAyACQv////8PgyAWIBl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgFSAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgGCAafnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAXfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAUfnwhAiADIAJCIIh8IQMgASACPgIMIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAWIBx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAZIBl+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgGCAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgGyAafnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAXfnwhAiADIAJCIIh8IQMgASACPgIQIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAZIBx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgGyAdfnwhAiADIAJCIIh8IQMgAkL/////D4MgHiAafnwhAiADIAJCIIh8IQMgASACPgIUIAMhBCAEQiCIIQVCACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAcIBx+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgAkL/////D4MgHiAdfnwhAiADIAJCIIh8IQMgASACPgIYIAMhBCAEQiCIIQUgASAEPgIcIAWnBEAgAUHoDSABEAcaBSABQegNEAUEQCABQegNIAEQBxoLCwsKACAAIAAgARAuCwsAIABBiA4gARAu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IAVByNoAIAcQjwELIAYgAWshBiAHIARrIQcgBUHAAGshBSAIQQFrIQgMAAsLQQAgBTYCAAvOAgIBfwF/IAJFBEAgAxCNAQ8LIABBiNsAEI4BIAMQjQEgAiEEAkADQCAEQQFrIQQgASAEai0AACEFIAMgAxCRASAFQYABTwRAIAVBgAFrIQUgA0GI2wAgAxCPAQsgAyADEJEBIAVBwABPBEAgBUHAAGshBSADQYjbACADEI8BCyADIAMQkQEgBUEgTwRAIAVBIGshBSADQYjbACADEI8BCyADIAMQkQEgBUEQTwRAIAVBEGshBSADQYjbACADEI8BCyADIAMQkQEgBUEITwRAIAVBCGshBSADQYjbACADEI8BCyADIAMQkQEgBUEETwRAIAVBBGshBSADQYjbACADEI8BCyADIAMQkQEgBUECTwRAIAVBAmshBSADQYjbACADEI8BCyADIAMQkQEgBUEBTwRAIAVBAWshBSADQYjbACADEI8BCyAERQ0BDAALCwvNAQBByN0AEI0BQcjdAEHI3QAQlAEgAEHI2wBBIEGI3AAQngFBiNwAQcjcABCRASAAQcjcAEHI3AAQjwFByNwAQYjdABCVAUGI3QBByNwAQYjdABCPAUGI3QBByN0AEJgBBEAAC0GI3AAgAEGI3gAQjwFByNwAQcjdABCYAQRAQcjdABABQejdABAcQcjdAEGI3gAgARCPAQVByN4AEI0BQcjeAEHI3ABByN4AEJIBQcjeAEHo2wBBIEHI3gAQngFByN4AQYjeACABEI8BCwtpAEHo4AAQjQFB6OAAQejgABCUASAAQYjfAEEgQajfABCeAUGo3wBB6N8AEJEBIABB6N8AQejfABCPAUHo3wBBqOAAEJUBQajgAEHo3wBBqOAAEI8BQajgAEHo4AAQmAEEQEEADwtBAQ8LEQAgABCKASAAQcAAahCKAXELCwAgAEGAAWoQigELEAAgABCMASAAQcAAahCMAQsZACAAEIwBIABBwABqEI0BIABBgAFqEIwBC6IBACABIAApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggASAAKQMgNwMgIAEgACkDKDcDKCABIAApAzA3AzAgASAAKQM4NwM4IAEgACkDQDcDQCABIAApA0g3A0ggASAAKQNQNwNQIAEgACkDWDcDWCABIAApA2A3A2AgASAAKQNoNwNoIAEgACkDcDcDcCABIAApA3g3A3gLggIAIAEgACkDADcDACABIAApAwg3AwggASAAKQMQNwMQIAEgACkDGDcDGCABIAApAyA3AyAgASAAKQMoNwMoIAEgACkDMDcDMCABIAApAzg3AzggASAAKQNANwNAIAEgACkDSDcDSCABIAApA1A3A1AgASAAKQNYNwNYIAEgACkDYDcDYCABIAApA2g3A2ggASAAKQNwNwNwIAEgACkDeDcDeCABIAApA4ABNwOAASABIAApA4gBNwOIASABIAApA5ABNwOQASABIAApA5gBNwOYASABIAApA6ABNwOgASABIAApA6gBNwOoASABIAApA7ABNwOwASABIAApA7gBNwO4AQsvACAAEKEBBEAgARCkAQUgAUGAAWoQjQEgAEHAAGogAUHAAGoQjgEgACABEI4BCwscAQF/IAAgARCYASAAQcAAaiABQcAAahCYAXEPC4sBAQF/IABBgAFqIQIgABCiAQRAIAEQoQEPCyABEKEBBEBBAA8LIAIQiwEEQCAAIAEQqAEPCyACQejhABCRASABQejhAEGo4gAQjwEgAkHo4QBB6OIAEI8BIAFBwABqQejiAEGo4wAQjwEgAEGo4gAQmAEEQCAAQcAAakGo4wAQmAEEQEEBDwsLQQAPC9kBAgF/AX8gAEGAAWohAiABQYABaiEDIAAQogEEQCABEKIBDwsgARCiAQRAQQAPCyACEIsBBEAgASAAEKkBDwsgAxCLAQRAIAAgARCpAQ8LIAJB6OMAEJEBIANBqOQAEJEBIABBqOQAQejkABCPASABQejjAEGo5QAQjwEgAkHo4wBB6OUAEI8BIANBqOQAQajmABCPASAAQcAAakGo5gBB6OYAEI8BIAFBwABqQejlAEGo5wAQjwFB6OQAQajlABCYAQRAQejmAEGo5wAQmAEEQEEBDwsLQQAPC6wCACAAEKEBBEAgACABEKcBDwsgAEHo5wAQkQEgAEHAAGpBqOgAEJEBQajoAEHo6AAQkQEgAEGo6ABBqOkAEJIBQajpAEGo6QAQkQFBqOkAQejnAEGo6QAQkwFBqOkAQejoAEGo6QAQkwFBqOkAQajpAEGo6QAQkgFB6OcAQejnAEHo6QAQkgFB6OkAQejnAEHo6QAQkgEgAEHAAGogAEHAAGog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wABqEI4BIABBgAFqIAFBgAFqEI4BC+UCACAAIAFByP4BEI8BIABBwABqIAFBwABqQYj/ARCPASAAQYABaiABQYABakHI/wEQjwEgACAAQcAAakGIgAIQkgEgASABQcAAakHIgAIQkgEgACAAQYABakGIgQIQkgEgASABQYABakHIgQIQkgEgAEHAAGogAEGAAWpBiIICEJIBIAFBwABqIAFBgAFqQciCAhCSAUHI/gFBiP8BQYiDAhCSAUHI/gFByP8BQciDAhCSAUGI/wFByP8BQYiEAhCSAUGIggJByIICIAIQjwEgAkGIhAIgAhCTASACIAIQ9QFByP4BIAIgAhCSAUGIgAJByIACIAJBwABqEI8BIAJBwABqQYiDAiACQcAAahCTAUHI/wFByIQCEPUBIAJBwABqQciEAiACQcAAahCSAUGIgQJByIECIAJBgAFqEI8BIAJBgAFqQciDAiACQYABahCTASACQYABakGI/wEgAkGAAWoQkgELgQIAIABBiIUCEJEBIAAgAEHAAGpByIUCEI8BQciFAkHIhQJBiIYCEJIBIAAgAEHAAGpByIYCEJMBQciGAiAAQYABakHIhgIQkgFByIYCQciGAhCRASAAQcAAaiAAQYABakGIhwIQjwFBiIcCQYiHAkHIhwIQkgEgAEGAAWpBiIgCEJEBQciHAiABEPUBQYiFAiABIAEQkgFBiIgCIAFBwABqEPUBQYiGAiABQcAAaiABQcAAahCSAUGIhQJBiIgCIAFBgAFqEJIBQciHAiABQYABaiABQYABahCTAUHIhgIgAUGAAWogAUGAAWoQkgFBiIYCIAFBgAFqIAFBgAFqEJIBCzUAIAAgASACEJIBIABBwABqIAFBwABqIAJBwABqEJIBIABBgAFqIAFBgAFqIAJBgAFqEJIBCzUAIAAgASACEJMBIABBwABqIAFBwABqIAJBwABqEJMBIABBgAFqIAFBgAFqIAJBgAFqEJMBCycAIAAgARCUASAAQcAAaiABQcAAahCUASAAQYABaiABQYABahCUAQswAQF/IABBgAFqEJsBIQEgAQRAIAEPCyAAQcAAahCbASEBIAEEQCABDwsgABCbAQ8LJwAgACABEJYBIABBwABqIAFBwABqEJYBIABBgAFqIAFBgAFqEJYBCycAIAAgARCXASAAQcAAaiABQcAAahCX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ASAAQcACakGQiQQgAUHAAmoQjwELigIAIAAgARAAIABBIGogAUEgahASIAFB0IkEIAEQjwEgAEHAAGogAUHAAGoQACAAQeAAaiABQeAAahASIAFBwABqQZCKBCABQcAAahCPASAAQYABaiABQYABahAAIABBoAFqIAFBoAFqEBIgAUGAAWpB0IoEIAFBgAFqEI8BIABBwAFqIAFBwAFqEAAgAEHgAWogAUHgAWoQEiABQcABakGQiwQgAUHAAWoQjwEgAEGAAmogAUGAAmoQACAAQaACaiABQaACahASIAFBgAJqQdCLBCABQYACahCPASAAQcACaiABQcACahAAIABB4AJqIAFB4AJqEBIgAUHAAmpBkIwEIAFBwAJqEI8BC2wAIABB0IwEIAEQjwEgAEHAAGpBkI0EIAFBwABqEI8BIABBgAFqQdCNBCABQYABahCPASAAQcABakGQjgQgAUHAAWoQjwEgAEGAAmpB0I4EIAFBgAJqEI8BIABBwAJqQZCPBCABQcACahCPAQuKAgAgACABEAAgAEEgaiABQSBqEBIgAUHQjwQgARCPASAAQcAAaiABQcAAahAAIABB4ABqIAFB4ABqEBIgAUHAAGpBkJAEIAFBwABqEI8BIABBgAFqIAFBgAFqEAAgAEGgAWogAUGgAWoQEiABQYABakHQkAQgAUGAAWoQjwEgAEHAAWogAUHAAWoQACAAQeABaiABQeABahASIAFBwAFqQZCRBCABQcABahCPASAAQYACaiABQYACahAAIABBoAJqIAFBoAJqEBIgAUGAAmpB0JEEIAFBgAJqEI8BIABBwAJqIAFBwAJqEAAgAEHgAmogAUHgAmoQEiABQcACakGQkgQgAUHAAmoQjwELbAAgAEHQkgQgARCPASAAQcAAakGQkwQgAUHAAGoQjwEgAEGAAWpB0JMEIAFBgAFqEI8BIABBwAFqQZCUBCABQcABahCPASAAQYACakHQlAQgAUGAAmoQjwEgAEHAAmpBkJUEIAFBwAJqEI8BC4oCACAAIAEQACAAQSBqIAFBIGoQEiABQdCVBCABEI8BIABBwABqIAFBwABqEAAgAEHgAGogAUHgAGoQEiABQcAAakGQlgQgAUHAAGoQjwEgAEGAAWogAUGAAWoQACAAQaABaiABQaABahASIAFBgAFqQdCWBCABQYABahCP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";
- exports.pq = 488;
- exports.pr = 1768;
- exports.pG1gen = 31432;
- exports.pG1zero = 31528;
- exports.pG1b = 3080;
- exports.pG2gen = 31624;
- exports.pG2zero = 31816;
- exports.pG2b = 12456;
- exports.pOneT = 32008;
- exports.prePSize = 192;
- exports.preQSize = 19776;
- exports.n8q = 32;
- exports.n8r = 32;
- exports.q = "21888242871839275222246405745257275088696311157297823662689037894645226208583";
- exports.r = "21888242871839275222246405745257275088548364400416034343698204186575808495617";
-
\ No newline at end of file
+export const code = "AGFzbQEAAAABlQESYAJ/fwBgAX8AYAF/AX9gAn9/AX9gA39/fwF/YAN/f38AYAN/fn8AYAJ/fgBgBH9/f38AYAV/f39/fwBgBH9/f38Bf2AGf39/f39/AGAIf39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38Bf2AHf39/f39/fwF/YAl/f39/f39/f38Bf2ALf39/f39/f39/f38BfwIPAQNlbnYGbWVtb3J5AgAZA8ECvwIAAQIBAwMEBAUAAAYHCAUCBQUAAAUAAAAAAgIAAQUICQUFBQgICAgAAgIFBQAABQAAAAACAgABBQgJBQUFCAgICAACBQAAAgICAQEAAAADAwMAAAUFBQAABQUFAAAAAAACAgUABQAAAAAFBQUFBQoLDAkKCwwJCAgDAAgIAgAACQsLBQULAAgNCQgCAgEBAAUFAAUFAAAAAAMACAICCQgAAgICAQEAAAADAwMAAAUFBQAABQUFAAAAAAACAgUABQAAAAAFBQUFBQoLDAkKCwwJCAgFAwAICAIAAAkLCwUFCwUDAAgIAgAACQsLBQULBQUJCQkJCQACAgEBAAUABQUAAgAAAwAIAgkIAAICAQEABQUABQUAAAAAAwAIAgIJCAACBQAAAAAICAUAAAAAAAAAAAAAAAAAAAAABA4PEBEFB8UlqwIIaW50X2NvcHkAAAhpbnRfemVybwABB2ludF9vbmUAAwppbnRfaXNaZXJvAAIGaW50X2VxAAQHaW50X2d0ZQAFB2ludF9hZGQABgdpbnRfc3ViAAcHaW50X211bAAICmludF9zcXVhcmUACQ1pbnRfc3F1YXJlT2xkAAoHaW50X2RpdgANDmludF9pbnZlcnNlTW9kAA4IZjFtX2NvcHkAAAhmMW1femVybwABCmYxbV9pc1plcm8AAgZmMW1fZXEABAdmMW1fYWRkABAHZjFtX3N1YgARB2YxbV9uZWcAEg5mMW1faXNOZWdhdGl2ZQAZCWYxbV9pc09uZQAPCGYxbV9zaWduABoLZjFtX21SZWR1Y3QAEwdmMW1fbXVsABQKZjFtX3NxdWFyZQAVDWYxbV9zcXVhcmVPbGQAFhJmMW1fZnJvbU1vbnRnb21lcnkAGBBmMW1fdG9Nb250Z29tZXJ5ABcLZjFtX2ludmVyc2UAGwdmMW1fb25lABwIZjFtX2xvYWQAHQ9mMW1fdGltZXNTY2FsYXIAHgdmMW1fZXhwACYQZjFtX2JhdGNoSW52ZXJzZQAfCGYxbV9zcXJ0ACcMZjFtX2lzU3F1YXJlACgVZjFtX2JhdGNoVG9Nb250Z29tZXJ5ACAXZjFtX2JhdGNoRnJvbU1vbnRnb21lcnkAIQhmcm1fY29weQAACGZybV96ZXJvAAEKZnJtX2lzWmVybwACBmZybV9lcQAEB2ZybV9hZGQAKgdmcm1fc3ViACsHZnJtX25lZwAsDmZybV9pc05lZ2F0aXZlADMJZnJtX2lzT25lACkIZnJtX3NpZ24ANAtmcm1fbVJlZHVjdAAtB2ZybV9tdWwALgpmcm1fc3F1YXJlAC8NZnJtX3NxdWFyZU9sZAAwEmZybV9mcm9tTW9udGdvbWVyeQAyEGZybV90b01vbnRnb21lcnkAMQtmcm1faW52ZXJzZQA1B2ZybV9vbmUANghmcm1fbG9hZAA3D2ZybV90aW1lc1NjYWxhcgA4B2ZybV9leHAAQBBmcm1fYmF0Y2hJbnZlcnNlADkIZnJtX3NxcnQAQQxmcm1faXNTcXVhcmUAQhVmcm1fYmF0Y2hUb01vbnRnb21lcnkAOhdmcm1fYmF0Y2hGcm9tTW9udGdvbWVyeQA7BmZyX2FkZAAqBmZyX3N1YgArBmZyX25lZwAsBmZyX211bABDCWZyX3NxdWFyZQBECmZyX2ludmVyc2UARQ1mcl9pc05lZ2F0aXZlAEYHZnJfY29weQAAB2ZyX3plcm8AAQZmcl9vbmUANglmcl9pc1plcm8AAgVmcl9lcQAEDGcxbV9tdWx0aWV4cABxEmcxbV9tdWx0aWV4cF9jaHVuawBwEmcxbV9tdWx0aWV4cEFmZmluZQB1GGcxbV9tdWx0aWV4cEFmZmluZV9jaHVuawB0CmcxbV9pc1plcm8ASBBnMW1faXNaZXJvQWZmaW5lAEcGZzFtX2VxAFALZzFtX2VxTWl4ZWQATwxnMW1fZXFBZmZpbmUATghnMW1fY29weQBMDmcxbV9jb3B5QWZmaW5lAEsIZzFtX3plcm8ASg5nMW1femVyb0FmZmluZQBJCmcxbV9kb3VibGUAUhBnMW1fZG91YmxlQWZmaW5lAFEHZzFtX2FkZABVDGcxbV9hZGRNaXhlZABUDWcxbV9hZGRBZmZpbmUAUwdnMW1fbmVnAFcNZzFtX25lZ0FmZmluZQBWB2cxbV9zdWIAWgxnMW1fc3ViTWl4ZWQAWQ1nMW1fc3ViQWZmaW5lAFgSZzFtX2Zyb21Nb250Z29tZXJ5AFwYZzFtX2Zyb21Nb250Z29tZXJ5QWZmaW5lAFsQZzFtX3RvTW9udGdvbWVyeQBeFmcxbV90b01vbnRnb21lcnlBZmZpbmUAXQ9nMW1fdGltZXNTY2FsYXIAdhVnMW1fdGltZXNTY2FsYXJBZmZpbmUAdw1nMW1fbm9ybWFsaXplAGMKZzFtX0xFTXRvVQBlCmcxbV9MRU10b0MAZgpnMW1fVXRvTEVNAGcKZzFtX0N0b0xFTQBoD2cxbV9iYXRjaExFTXRvVQBpD2cxbV9iYXRjaExFTXRvQwBqD2cxbV9iYXRjaFV0b0xFTQBrD2cxbV9iYXRjaEN0b0xFTQBsDGcxbV90b0FmZmluZQBfDmcxbV90b0phY29iaWFuAE0RZzFtX2JhdGNoVG9BZmZpbmUAYhNnMW1fYmF0Y2hUb0phY29iaWFuAG0LZzFtX2luQ3VydmUAYRFnMW1faW5DdXJ2ZUFmZmluZQBgF2ZybV9fcmV2ZXJzZVBlcm11dGF0aW9uAHkHZnJtX2ZmdAB9CGZybV9pZmZ0AH4KZnJtX3Jhd2ZmdAB7C2ZybV9mZnRKb2luAH8OZnJtX2ZmdEpvaW5FeHQAgAERZnJtX2ZmdEpvaW5FeHRJbnYAgQEKZnJtX2ZmdE1peACCAQxmcm1fZmZ0RmluYWwAgwEdZnJtX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24AhAEIcG9sX3plcm8AhQEPcG9sX2NvbnN0cnVjdExDAIYBDHFhcF9idWlsZEFCQwCHAQtxYXBfam9pbkFCQwCIAQxxYXBfYmF0Y2hBZGQAiQEKZjJtX2lzWmVybwCKAQlmMm1faXNPbmUAiwEIZjJtX3plcm8AjAEHZjJtX29uZQCNAQhmMm1fY29weQCOAQdmMm1fbXVsAI8BCGYybV9tdWwxAJABCmYybV9zcXVhcmUAkQEHZjJtX2FkZACSAQdmMm1fc3ViAJMBB2YybV9uZWcAlAEIZjJtX3NpZ24AmwENZjJtX2Nvbmp1Z2F0ZQCVARJmMm1fZnJvbU1vbnRnb21lcnkAlwEQZjJtX3RvTW9udGdvbWVyeQCWAQZmMm1fZXEAmAELZjJtX2ludmVyc2UAmQEHZjJtX2V4cACeAQ9mMm1fdGltZXNTY2FsYXIAmgEQZjJtX2JhdGNoSW52ZXJzZQCdAQhmMm1fc3FydACfAQxmMm1faXNTcXVhcmUAoAEOZjJtX2lzTmVnYXRpdmUAnAEMZzJtX211bHRpZXhwAMsBEmcybV9tdWx0aWV4cF9jaHVuawDKARJnMm1fbXVsdGlleHBBZmZpbmUAzwEYZzJtX211bHRpZXhwQWZmaW5lX2NodW5rAM4BCmcybV9pc1plcm8AogEQZzJtX2lzWmVyb0FmZmluZQChAQZnMm1fZXEAqgELZzJtX2VxTWl4ZWQAqQEMZzJtX2VxQWZmaW5lAKgBCGcybV9jb3B5AKYBDmcybV9jb3B5QWZmaW5lAKUBCGcybV96ZXJvAKQBDmcybV96ZXJvQWZmaW5lAKMBCmcybV9kb3VibGUArAEQZzJtX2RvdWJsZUFmZmluZQCrAQdnMm1fYWRkAK8BDGcybV9hZGRNaXhlZACuAQ1nMm1fYWRkQWZmaW5lAK0BB2cybV9uZWcAsQENZzJtX25lZ0FmZmluZQCwAQdnMm1fc3ViALQBDGcybV9zdWJNaXhlZACzAQ1nMm1fc3ViQWZmaW5lALIBEmcybV9mcm9tTW9udGdvbWVyeQC2ARhnMm1fZnJvbU1vbnRnb21lcnlBZmZpbmUAtQEQZzJtX3RvTW9udGdvbWVyeQC4ARZnMm1fdG9Nb250Z29tZXJ5QWZmaW5lALcBD2cybV90aW1lc1NjYWxhcgDQARVnMm1fdGltZXNTY2FsYXJBZmZpbmUA0QENZzJtX25vcm1hbGl6ZQC9AQpnMm1fTEVNdG9VAL8BCmcybV9MRU10b0MAwAEKZzJtX1V0b0xFTQDBAQpnMm1fQ3RvTEVNAMIBD2cybV9iYXRjaExFTXRvVQDDAQ9nMm1fYmF0Y2hMRU10b0MAxAEPZzJtX2JhdGNoVXRvTEVNAMUBD2cybV9iYXRjaEN0b0xFTQDGAQxnMm1fdG9BZmZpbmUAuQEOZzJtX3RvSmFjb2JpYW4ApwERZzJtX2JhdGNoVG9BZmZpbmUAvAETZzJtX2JhdGNoVG9KYWNvYmlhbgDHAQtnMm1faW5DdXJ2ZQC7ARFnMm1faW5DdXJ2ZUFmZmluZQC6AQtnMW1fdGltZXNGcgDSARdnMW1fX3JldmVyc2VQZXJtdXRhdGlvbgDUAQdnMW1fZmZ0ANgBCGcxbV9pZmZ0ANkBCmcxbV9yYXdmZnQA1gELZzFtX2ZmdEpvaW4A2gEOZzFtX2ZmdEpvaW5FeHQA2wERZzFtX2ZmdEpvaW5FeHRJbnYA3AEKZzFtX2ZmdE1peADdAQxnMW1fZmZ0RmluYWwA3gEdZzFtX3ByZXBhcmVMYWdyYW5nZUV2YWx1YXRpb24A3wELZzJtX3RpbWVzRnIA4AEXZzJtX19yZXZlcnNlUGVybXV0YXRpb24A4gEHZzJtX2ZmdADmAQhnMm1faWZmdADnAQpnMm1fcmF3ZmZ0AOQBC2cybV9mZnRKb2luAOgBDmcybV9mZnRKb2luRXh0AOkBEWcybV9mZnRKb2luRXh0SW52AOoBCmcybV9mZnRNaXgA6wEMZzJtX2ZmdEZpbmFsAOwBHWcybV9wcmVwYXJlTGFncmFuZ2VFdmFsdWF0aW9uAO0BEWcxbV90aW1lc0ZyQWZmaW5lAO4BEWcybV90aW1lc0ZyQWZmaW5lAO8BEWZybV9iYXRjaEFwcGx5S2V5APABEWcxbV9iYXRjaEFwcGx5S2V5APEBFmcxbV9iYXRjaEFwcGx5S2V5TWl4ZWQA8gERZzJtX2JhdGNoQXBwbHlLZXkA8wEWZzJtX2JhdGNoQXBwbHlLZXlNaXhlZAD0AQpmNm1faXNaZXJvAPYBCWY2bV9pc09uZQD3AQhmNm1femVybwD4AQdmNm1fb25lAPkBCGY2bV9jb3B5APoBB2Y2bV9tdWwA+wEKZjZtX3NxdWFyZQD8AQdmNm1fYWRkAP0BB2Y2bV9zdWIA/gEHZjZtX25lZwD/AQhmNm1fc2lnbgCAAhJmNm1fZnJvbU1vbnRnb21lcnkAggIQZjZtX3RvTW9udGdvbWVyeQCBAgZmNm1fZXEAgwILZjZtX2ludmVyc2UAhAIHZjZtX2V4cACIAg9mNm1fdGltZXNTY2FsYXIAhQIQZjZtX2JhdGNoSW52ZXJzZQCHAg5mNm1faXNOZWdhdGl2ZQCGAgpmdG1faXNaZXJvAIoCCWZ0bV9pc09uZQCLAghmdG1femVybwCMAgdmdG1fb25lAI0CCGZ0bV9jb3B5AI4CB2Z0bV9tdWwAjwIIZnRtX211bDEAkAIKZnRtX3NxdWFyZQCRAgdmdG1fYWRkAJICB2Z0bV9zdWIAkwIHZnRtX25lZwCUAghmdG1fc2lnbgCbAg1mdG1fY29uanVnYXRlAJUCEmZ0bV9mcm9tTW9udGdvbWVyeQCXAhBmdG1fdG9Nb250Z29tZXJ5AJYCBmZ0bV9lcQCYAgtmdG1faW52ZXJzZQCZAgdmdG1fZXhwAJ4CD2Z0bV90aW1lc1NjYWxhcgCaAhBmdG1fYmF0Y2hJbnZlcnNlAJ0CCGZ0bV9zcXJ0AJ8CDGZ0bV9pc1NxdWFyZQCgAg5mdG1faXNOZWdhdGl2ZQCcAhRibjEyOF9fZnJvYmVuaXVzTWFwMACpAhRibjEyOF9fZnJvYmVuaXVzTWFwMQCqAhRibjEyOF9fZnJvYmVuaXVzTWFwMgCrAhRibjEyOF9fZnJvYmVuaXVzTWFwMwCsAhRibjEyOF9fZnJvYmVuaXVzTWFwNACtAhRibjEyOF9fZnJvYmVuaXVzTWFwNQCuAhRibjEyOF9fZnJvYmVuaXVzTWFwNgCvAhRibjEyOF9fZnJvYmVuaXVzTWFwNwCwAhRibjEyOF9fZnJvYmVuaXVzTWFwOACxAhRibjEyOF9fZnJvYmVuaXVzTWFwOQCyAhBibjEyOF9wYWlyaW5nRXExALkCEGJuMTI4X3BhaXJpbmdFcTIAugIQYm4xMjhfcGFpcmluZ0VxMwC7AhBibjEyOF9wYWlyaW5nRXE0ALwCEGJuMTI4X3BhaXJpbmdFcTUAvQINYm4xMjhfcGFpcmluZwC+Ag9ibjEyOF9wcmVwYXJlRzEAowIPYm4xMjhfcHJlcGFyZUcyAKUCEGJuMTI4X21pbGxlckxvb3AAqAIZYm4xMjhfZmluYWxFeHBvbmVudGlhdGlvbgC4AhxibjEyOF9maW5hbEV4cG9uZW50aWF0aW9uT2xkALMCD2JuMTI4X19tdWxCeTAyNACmAhJibjEyOF9fbXVsQnkwMjRPbGQApwIXYm4xMjhfX2N5Y2xvdG9taWNTcXVhcmUAtQIXYm4xMjhfX2N5Y2xvdG9taWNFeHBfdzAAtgIKgfcDvwIqACABIAApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxgLHgAgAEIANwMAIABCADcDCCAAQgA3AxAgAEIANwMYCzMAIAApAxhQBEAgACkDEFAEQCAAKQMIUARAIAApAwBQDwVBAA8LBUEADwsFQQAPC0EADwseACAAQgE3AwAgAEIANwMIIABCADcDECAAQgA3AxgLRwAgACkDGCABKQMYUQRAIAApAxAgASkDEFEEQCAAKQMIIAEpAwhRBEAgACkDACABKQMAUQ8FQQAPCwVBAA8LBUEADwtBAA8LfQAgACkDGCABKQMYVARAQQAPBSAAKQMYIAEpAxhWBEBBAQ8FIAApAxAgASkDEFQEQEEADwUgACkDECABKQMQVgRAQQEPBSAAKQMIIAEpAwhUBEBBAA8FIAApAwggASkDCFYEQEEBDwUgACkDACABKQMAWg8LCwsLCwtBAA8L1AEBAX4gADUCACABNQIAfCEDIAIgAz4CACAANQIEIAE1AgR8IANCIIh8IQMgAiADPgIEIAA1AgggATUCCHwgA0IgiHwhAyACIAM+AgggADUCDCABNQIMfCADQiCIfCEDIAIgAz4CDCAANQIQIAE1AhB8IANCIIh8IQMgAiADPgIQIAA1AhQgATUCFHwgA0IgiHwhAyACIAM+AhQgADUCGCABNQIYfCADQiCIfCEDIAIgAz4CGCAANQIcIAE1Ahx8IANCIIh8IQMgAiADPgIcIANCIIinC4wCAQF+IAA1AgAgATUCAH0hAyACIANC/////w+DPgIAIAA1AgQgATUCBH0gA0Igh3whAyACIANC/////w+DPgIEIAA1AgggATUCCH0gA0Igh3whAyACIANC/////w+DPgIIIAA1AgwgATUCDH0gA0Igh3whAyACIANC/////w+DPgIMIAA1AhAgATUCEH0gA0Igh3whAyACIANC/////w+DPgIQIAA1AhQgATUCFH0gA0Igh3whAyACIANC/////w+DPgIUIAA1AhggATUCGH0gA0Igh3whAyACIANC/////w+DPgIYIAA1AhwgATUCHH0gA0Igh3whAyACIANC/////w+DPgIcIANCIIenC48QEgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfiADQv////8PgyAANQIAIgUgATUCACIGfnwhAyAEIANCIIh8IQQgAiADPgIAIARCIIghAyAEQv////8PgyAFIAE1AgQiCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgQiByAGfnwhBCADIARCIIh8IQMgAiAEPgIEIANCIIghBCADQv////8PgyAFIAE1AggiCn58IQMgBCADQiCIfCEEIANC/////w+DIAcgCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AggiCSAGfnwhAyAEIANCIIh8IQQgAiADPgIIIARCIIghAyAEQv////8PgyAFIAE1AgwiDH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgCn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AgwiCyAGfnwhBCADIARCIIh8IQMgAiAEPgIMIANCIIghBCADQv////8PgyAFIAE1AhAiDn58IQMgBCADQiCIfCEEIANC/////w+DIAcgDH58IQMgBCADQiCIfCEEIANC/////w+DIAkgCn58IQMgBCADQiCIfCEEIANC/////w+DIAsgCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AhAiDSAGfnwhAyAEIANCIIh8IQQgAiADPgIQIARCIIghAyAEQv////8PgyAFIAE1AhQiEH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgDn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgDH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgCn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhQiDyAGfnwhBCADIARCIIh8IQMgAiAEPgIUIANCIIghBCADQv////8PgyAFIAE1AhgiEn58IQMgBCADQiCIfCEEIANC/////w+DIAcgEH58IQMgBCADQiCIfCEEIANC/////w+DIAkgDn58IQMgBCADQiCIfCEEIANC/////w+DIAsgDH58IQMgBCADQiCIfCEEIANC/////w+DIA0gCn58IQMgBCADQiCIfCEEIANC/////w+DIA8gCH58IQMgBCADQiCIfCEEIANC/////w+DIAA1AhgiESAGfnwhAyAEIANCIIh8IQQgAiADPgIYIARCIIghAyAEQv////8PgyAFIAE1AhwiFH58IQQgAyAEQiCIfCEDIARC/////w+DIAcgEn58IQQgAyAEQiCIfCEDIARC/////w+DIAkgEH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgDn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gDH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gCn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgCH58IQQgAyAEQiCIfCEDIARC/////w+DIAA1AhwiEyAGfnwhBCADIARCIIh8IQMgAiAEPgIcIANCIIghBCADQv////8PgyAHIBR+fCEDIAQgA0IgiHwhBCADQv////8PgyAJIBJ+fCEDIAQgA0IgiHwhBCADQv////8PgyALIBB+fCEDIAQgA0IgiHwhBCADQv////8PgyANIA5+fCEDIAQgA0IgiHwhBCADQv////8PgyAPIAx+fCEDIAQgA0IgiHwhBCADQv////8PgyARIAp+fCEDIAQgA0IgiHwhBCADQv////8PgyATIAh+fCEDIAQgA0IgiHwhBCACIAM+AiAgBEIgiCEDIARC/////w+DIAkgFH58IQQgAyAEQiCIfCEDIARC/////w+DIAsgEn58IQQgAyAEQiCIfCEDIARC/////w+DIA0gEH58IQQgAyAEQiCIfCEDIARC/////w+DIA8gDn58IQQgAyAEQiCIfCEDIARC/////w+DIBEgDH58IQQgAyAEQiCIfCEDIARC/////w+DIBMgCn58IQQgAyAEQiCIfCEDIAIgBD4CJCADQiCIIQQgA0L/////D4MgCyAUfnwhAyAEIANCIIh8IQQgA0L/////D4MgDSASfnwhAyAEIANCIIh8IQQgA0L/////D4MgDyAQfnwhAyAEIANCIIh8IQQgA0L/////D4MgESAOfnwhAyAEIANCIIh8IQQgA0L/////D4MgEyAMfnwhAyAEIANCIIh8IQQgAiADPgIoIARCIIghAyAEQv////8PgyANIBR+fCEEIAMgBEIgiHwhAyAEQv////8PgyAPIBJ+fCEEIAMgBEIgiHwhAyAEQv////8PgyARIBB+fCEEIAMgBEIgiHwhAyAEQv////8PgyATIA5+fCEEIAMgBEIgiHwhAyACIAQ+AiwgA0IgiCEEIANC/////w+DIA8gFH58IQMgBCADQiCIfCEEIANC/////w+DIBEgEn58IQMgBCADQiCIfCEEIANC/////w+DIBMgEH58IQMgBCADQiCIfCEEIAIgAz4CMCAEQiCIIQMgBEL/////D4MgESAUfnwhBCADIARCIIh8IQMgBEL/////D4MgEyASfnwhBCADIARCIIh8IQMgAiAEPgI0IANCIIghBCADQv////8PgyATIBR+fCEDIAQgA0IgiHwhBCACIAM+AjggBEIgiCEDIAIgBD4CPAuMEgwBfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX5CACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAANQIAIgYgBn58IQIgAyACQiCIfCEDIAEgAj4CACADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIEIgd+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIEIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AggiCH58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIAcgB358IQIgAyACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AgggAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCDCIJfnwhAiADIAJCIIh8IQMgAkL/////D4MgByAIfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CDCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIQIgp+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAl+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAIIAh+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIQIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAGIAA1AhQiC358IQIgAyACQiCIfCEDIAJC/////w+DIAcgCn58IQIgAyACQiCIfCEDIAJC/////w+DIAggCX58IQIgAyACQiCIfCEDIAJC/////w+DQgGGIQIgA0IBhiACQiCIfCEDIAJC/////w+DIARC/////w+DfCECIAMgAkIgiHwgBXwhAyABIAI+AhQgAyEEIARCIIghBUIAIQJCACEDIAJC/////w+DIAYgADUCGCIMfnwhAiADIAJCIIh8IQMgAkL/////D4MgByALfnwhAiADIAJCIIh8IQMgAkL/////D4MgCCAKfnwhAiADIAJCIIh8IQMgAkL/////D4NCAYYhAiADQgGGIAJCIIh8IQMgAkL/////D4MgCSAJfnwhAiADIAJCIIh8IQMgAkL/////D4MgBEL/////D4N8IQIgAyACQiCIfCAFfCEDIAEgAj4CGCADIQQgBEIgiCEFQgAhAkIAIQMgAkL/////D4MgBiAANQIcIg1+fCECIAMgAkIgiHwhAyACQv////8PgyAHIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAt+fCECIAMgAkIgiHwhAyACQv////8PgyAJIAp+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIcIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAHIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAIIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAJIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAKIAp+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIgIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAIIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAJIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAKIAt+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIkIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAJIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAKIAx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyALIAt+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIoIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAKIA1+fCECIAMgAkIgiHwhAyACQv////8PgyALIAx+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIsIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyALIA1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAMIAx+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgIwIAMhBCAEQiCIIQVCACECQgAhAyACQv////8PgyAMIA1+fCECIAMgAkIgiHwhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgI0IAMhBCAEQiCIIQVCACECQgAhAyACQv////8Pg0IBhiECIANCAYYgAkIgiHwhAyACQv////8PgyANIA1+fCECIAMgAkIgiHwhAyACQv////8PgyAEQv////8Pg3whAiADIAJCIIh8IAV8IQMgASACPgI4IAMhBCAEQiCIIQUgASAEPgI8CwoAIAAgACABEAgLtgEBAX4gADUAACABfiEDIAIgAz4AACAANQAEIAF+IANCIIh8IQMgAiADPgAEIAA1AAggAX4gA0IgiHwhAyACIAM+AAggADUADCABfiADQiCIfCEDIAIgAz4ADCAANQAQIAF+IANCIIh8IQMgAiADPgAQIAA1ABQgAX4gA0IgiHwhAyACIAM+ABQgADUAGCABfiADQiCIfCEDIAIgAz4AGCAANQAcIAF+IANCIIh8IQMgAiADPgAcC04CAX4BfyAAIQMgAzUAACABfCECIAMgAj4AACACQiCIIQICQANAIAJQDQEgA0EEaiEDIAM1AAAgAnwhAiADIAI+AAAgAkIgiCECDAALCwurAgcBfwF/AX8BfwF+AX4BfyACBEAgAiEFBUHIACEFCyADBEAgAyEEBUHoACEECyAAIAQQACABQSgQACAFEAFBiAEQAUEfIQZBHyEHAkADQEEoIAdqLQAAIAdBA0ZyDQEgB0EBayEHDAALC0EoIAdqQQNrNQAAQgF8IQggCEIBUQRAQgBCAIAaCwJAA0ACQANAIAQgBmotAAAgBkEHRnINASAGQQFrIQYMAAsLIAQgBmpBB2spAAAhCSAJIAiAIQkgBiAHa0EEayEKAkADQCAJQoCAgIBwg1AgCkEATnENASAJQgiIIQkgCkEBaiEKDAALCyAJUARAIARBKBAFRQ0CQgEhCUEAIQoLQSggCUGoARALIARBqAEgCmsgBBAHGiAFIApqIAkQDAwACwsLtQILAX8BfwF/AX8BfwF/AX8BfwF/AX8Bf0HIASEDQcgBEAFBACELQegBIQUgAUHoARAAQYgCIQRBiAIQA0EAIQxBqAIhCCAAQagCEABByAIhBkHoAiEHQcgDIQoCQANAIAgQAg0BIAUgCCAGIAcQDSAGIARBiAMQCCALBEAgDARAQYgDIAMQBQRAQYgDIAMgChAHGkEAIQ0FIANBiAMgChAHGkEBIQ0LBUGIAyADIAoQBhpBASENCwUgDARAQYgDIAMgChAGGkEAIQ0FIANBiAMQBQRAIANBiAMgChAHGkEAIQ0FQYgDIAMgChAHGkEBIQ0LCwsgAyEJIAQhAyAKIQQgCSEKIAwhCyANIQwgBSEJIAghBSAHIQggCSEHDAALCyALBEAgASADIAIQBxoFIAMgAhAACwsKACAAQagEEAQPCywAIAAgASACEAYEQCACQegDIAIQBxoFIAJB6AMQBQRAIAJB6AMgAhAHGgsLCxcAIAAgASACEAcEQCACQegDIAIQBhoLCwsAQcgEIAAgARARC5wRAwF+AX4BfkKJx5mkDiECQgAhAyAANQIAIAJ+Qv////8PgyEEIAA1AgAgA0IgiHxB6AM1AgAgBH58IQMgACADPgIAIAA1AgQgA0IgiHxB6AM1AgQgBH58IQMgACADPgIEIAA1AgggA0IgiHxB6AM1AgggBH58IQMgACADPgIIIAA1AgwgA0IgiHxB6AM1AgwgBH58IQMgACADPgIMIAA1AhAgA0IgiHxB6AM1AhAgBH58IQMgACADPgIQIAA1AhQgA0IgiHxB6AM1AhQgBH58IQMgACADPgIUIAA1AhggA0IgiHxB6AM1AhggBH58IQMgACADPgIYIAA1AhwgA0IgiHxB6AM1AhwgBH58IQMgACADPgIcQYgGIANCIIg+AgBCACEDIAA1AgQgAn5C/////w+DIQQgADUCBCADQiCIfEHoAzUCACAEfnwhAyAAIAM+AgQgADUCCCADQiCIfEHoAzUCBCAEfnwhAyAAIAM+AgggADUCDCADQiCIfEHoAzUCCCAEfnwhAyAAIAM+AgwgADUCECADQiCIfEHoAzUCDCAEfnwhAyAAIAM+AhAgADUCFCADQiCIfEHoAzUCECAEfnwhAyAAIAM+AhQgADUCGCADQiCIfEHoAzUCFCAEfnwhAyAAIAM+AhggADUCHCADQiCIfEHoAzUCGCAEfnwhAyAAIAM+AhwgADUCICADQiCIfEHoAzUCHCAEfnwhAyAAIAM+AiBBiAYgA0IgiD4CBEIAIQMgADUCCCACfkL/////D4MhBCAANQIIIANCIIh8QegDNQIAIAR+fCEDIAAgAz4CCCAANQIMIANCIIh8QegDNQIEIAR+fCEDIAAgAz4CDCAANQIQIANCIIh8QegDNQIIIAR+fCEDIAAgAz4CECAANQIUIANCIIh8QegDNQIMIAR+fCEDIAAgAz4CFCAANQIYIANCIIh8QegDNQIQIAR+fCEDIAAgAz4CGCAANQIcIANCIIh8QegDNQIUIAR+fCEDIAAgAz4CHCAANQIgIANCIIh8QegDNQIYIAR+fCEDIAAgAz4CICAANQIkIANCIIh8QegDNQIcIAR+fCEDIAAgAz4CJEGIBiADQiCIPgIIQgAhAyAANQIMIAJ+Qv////8PgyEEIAA1AgwgA0IgiHxB6AM1AgAgBH58IQMgACADPgIMIAA1AhAgA0IgiHxB6AM1AgQgBH58IQMgACADPgIQIAA1AhQgA0IgiHxB6AM1AgggBH58IQMgACADPgIUIAA1AhggA0IgiHxB6AM1AgwgBH58IQMgACADPgIYIAA1AhwgA0IgiHxB6AM1AhAgBH58IQMgACADPgIcIAA1AiAgA0IgiHxB6AM1AhQgBH58IQMgACADPgIgIAA1AiQgA0IgiHxB6AM1AhggBH58IQMgACADPgIkIAA1AiggA0IgiHxB6AM1AhwgBH58IQMgACADPgIoQYgGIANCIIg+AgxCACEDIAA1AhAgAn5C/////w+DIQQgADUCECADQiCIfEHoAzUCACAEfnwhAyAAIAM+AhAgADUCFCADQiCIfEHoAzUCBCAEfnwhAyAAIAM+AhQgADUCGCADQiCIfEHoAzUCCCAEfnwhAyAAIAM+AhggADUCHCADQiCIfEHoAzUCDCAEfnwhAyAAIAM+AhwgADUCICADQiCIfEHoAzUCECAEfnwhAyAAIAM+AiAgADUCJCADQiCIfEHoAzUCFCAEfnwhAyAAIAM+AiQgADUCKCADQiCIfEHoAzUCGCAEfnwhAyAAIAM+AiggADUCLCADQiCIfEHoAzUCHCAEfnwhAyAAIAM+AixBiAYgA0IgiD4CEEIAIQMgADUCFCACfkL/////D4MhBCAANQIUIANCIIh8QegDNQIAIAR+fCEDIAAgAz4CFCAANQIYIANCIIh8QegDNQIEIAR+fCEDIAAgAz4CGCAANQIcIANCIIh8QegDNQIIIAR+fCEDIAAgAz4CHCAANQIgIANCIIh8QegDNQIMIAR+fCEDIAAgAz4CICAANQIkIANCIIh8QegDNQIQIAR+fCEDIAAgAz4CJCAANQIoIANCIIh8QegDNQIUIAR+fCEDIAAgAz4CKCAANQIsIANCIIh8QegDNQIYIAR+fCEDIAAgAz4CLCAANQIwIANCIIh8QegDNQIcIAR+fCEDIAAgAz4CMEGIBiADQiCIPgIUQgAhAyAANQIYIAJ+Qv////8PgyEEIAA1AhggA0IgiHxB6AM1AgAgBH58IQMgACADPgIYIAA1AhwgA0IgiHxB6AM1AgQgBH58IQMgACADPgIcIAA1AiAgA0IgiHxB6AM1AgggBH58IQMgACADPgIgIAA1AiQgA0IgiHxB6AM1AgwgBH58IQMgACADPgIkIAA1AiggA0IgiHxB6AM1AhAgBH58IQMgACADPgIoIAA1AiwgA0IgiHxB6AM1AhQgBH58IQMgACADPgIsIAA1AjAgA0IgiHxB6AM1AhggBH58IQMgACADPgIwIAA1AjQgA0IgiHxB6AM1AhwgBH58IQMgACADPgI0QYgGIANCIIg+AhhCACEDIAA1AhwgAn5C/////w+DIQQgADUCHCADQiCIfEHoAzUCACAEfnwhAyAAIAM+AhwgADUCICADQiCIfEHoAzUCBCAEfnwhAyAAIAM+AiAgADUCJCADQiCIfEHoAzUCCCAEfnwhAyAAIAM+AiQgADUCKCADQiCIfEHoAzUCDCAEfnwhAyAAIAM+AiggADUCLCADQiCIfEHoAzUCECAEfnwhAyAAIAM+AiwgADUCMCADQiCIfEHoAzUCFCAEfnwhAyAAIAM+AjAgADUCNCADQiCIfEHoAzUCGCAEfnwhAyAAIAM+AjQgADUCOCADQiCIfEHoAzUCHCAEfnwhAyAAIAM+AjhBiAYgA0IgiD4CHEGIBiAAQSBqIAEQEAvKIxYBfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfiAANQIAIQcgADUCBCEIIAA1AgghCSAANQIMIQogADUCECELIAA1AhQhDCAANQIYIQ0gADUCHCEOIAE1AgAhAyAPIAcgA358IQYgBkL/////D4MhDyAGQiCIIQUgECAIIAN+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBEgCSADfnwgBXwhBiAGQv////8PgyERIAZCIIghBSASIAogA358IAV8IQYgBkL/////D4MhEiAGQiCIIQUgEyALIAN+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBQgDCADfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAVIA0gA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFiAOIAN+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIAUhFyAPQonHmaQOfkL/////D4MhBCAPIARCx/rzww1+fCEGIAZCIIghBSAQIARClpiC4QN+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEKNlcfDBn58IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQpHVhbwJfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARC3bCFjAh+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEK2i8HCC358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQqnAxokOfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC8pyRgwN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIEIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0KJx5mkDn5C/////w+DIQQgDyAEQsf688MNfnwhBiAGQiCIIQUgECAEQpaYguEDfnwgBXwhBiAGQv////8PgyEPIAZCIIghBSARIARCjZXHwwZ+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBIgBEKR1YW8CX58IAV8IQYgBkL/////D4MhESAGQiCIIQUgEyAEQt2whYwIfnwgBXwhBiAGQv////8PgyESIAZCIIghBSAUIARCtovBwgt+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBUgBEKpwMaJDn58IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFiAEQvKckYMDfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAXIAV8IRYgATUCCCEDIA8gByADfnwhBiAGQv////8PgyEPIAZCIIghBSAQIAggA358IAV8IQYgBkL/////D4MhECAGQiCIIQUgESAJIAN+fCAFfCEGIAZC/////w+DIREgBkIgiCEFIBIgCiADfnwgBXwhBiAGQv////8PgyESIAZCIIghBSATIAsgA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFCAMIAN+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBUgDSADfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAWIA4gA358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgBSEXIA9CiceZpA5+Qv////8PgyEEIA8gBELH+vPDDX58IQYgBkIgiCEFIBAgBEKWmILhA358IAV8IQYgBkL/////D4MhDyAGQiCIIQUgESAEQo2Vx8MGfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSASIARCkdWFvAl+fCAFfCEGIAZC/////w+DIREgBkIgiCEFIBMgBELdsIWMCH58IAV8IQYgBkL/////D4MhEiAGQiCIIQUgFCAEQraLwcILfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAVIARCqcDGiQ5+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBYgBELynJGDA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFyAFfCEWIAE1AgwhAyAPIAcgA358IQYgBkL/////D4MhDyAGQiCIIQUgECAIIAN+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBEgCSADfnwgBXwhBiAGQv////8PgyERIAZCIIghBSASIAogA358IAV8IQYgBkL/////D4MhEiAGQiCIIQUgEyALIAN+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBQgDCADfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAVIA0gA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFiAOIAN+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIAUhFyAPQonHmaQOfkL/////D4MhBCAPIARCx/rzww1+fCEGIAZCIIghBSAQIARClpiC4QN+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEKNlcfDBn58IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQpHVhbwJfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARC3bCFjAh+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEK2i8HCC358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQqnAxokOfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC8pyRgwN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIQIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0KJx5mkDn5C/////w+DIQQgDyAEQsf688MNfnwhBiAGQiCIIQUgECAEQpaYguEDfnwgBXwhBiAGQv////8PgyEPIAZCIIghBSARIARCjZXHwwZ+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBIgBEKR1YW8CX58IAV8IQYgBkL/////D4MhESAGQiCIIQUgEyAEQt2whYwIfnwgBXwhBiAGQv////8PgyESIAZCIIghBSAUIARCtovBwgt+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBUgBEKpwMaJDn58IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFiAEQvKckYMDfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAXIAV8IRYgATUCFCEDIA8gByADfnwhBiAGQv////8PgyEPIAZCIIghBSAQIAggA358IAV8IQYgBkL/////D4MhECAGQiCIIQUgESAJIAN+fCAFfCEGIAZC/////w+DIREgBkIgiCEFIBIgCiADfnwgBXwhBiAGQv////8PgyESIAZCIIghBSATIAsgA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFCAMIAN+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBUgDSADfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAWIA4gA358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgBSEXIA9CiceZpA5+Qv////8PgyEEIA8gBELH+vPDDX58IQYgBkIgiCEFIBAgBEKWmILhA358IAV8IQYgBkL/////D4MhDyAGQiCIIQUgESAEQo2Vx8MGfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSASIARCkdWFvAl+fCAFfCEGIAZC/////w+DIREgBkIgiCEFIBMgBELdsIWMCH58IAV8IQYgBkL/////D4MhEiAGQiCIIQUgFCAEQraLwcILfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAVIARCqcDGiQ5+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBYgBELynJGDA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFyAFfCEWIAE1AhghAyAPIAcgA358IQYgBkL/////D4MhDyAGQiCIIQUgECAIIAN+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBEgCSADfnwgBXwhBiAGQv////8PgyERIAZCIIghBSASIAogA358IAV8IQYgBkL/////D4MhEiAGQiCIIQUgEyALIAN+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBQgDCADfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAVIA0gA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFiAOIAN+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIAUhFyAPQonHmaQOfkL/////D4MhBCAPIARCx/rzww1+fCEGIAZCIIghBSAQIARClpiC4QN+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEKNlcfDBn58IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQpHVhbwJfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARC3bCFjAh+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEK2i8HCC358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQqnAxokOfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC8pyRgwN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIcIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0KJx5mkDn5C/////w+DIQQgDyAEQsf688MNfnwhBiAGQiCIIQUgECAEQpaYguEDfnwgBXwhBiAGQv////8PgyEPIAZCIIghBSARIARCjZXHwwZ+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBIgBEKR1YW8CX58IAV8IQYgBkL/////D4MhESAGQiCIIQUgEyAEQt2whYwIfnwgBXwhBiAGQv////8PgyESIAZCIIghBSAUIARCtovBwgt+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBUgBEKpwMaJDn58IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFiAEQvKckYMDfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAXIAV8IRYgAiAPPgIAIAIgED4CBCACIBE+AgggAiASPgIMIAIgEz4CECACIBQ+AhQgAiAVPgIYIAIgFj4CHCACQegDEAUEQCACQegDIAIQBxoLC8skFgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+IAA1AgAhBiAANQIEIQcgADUCCCEIIAA1AgwhCSAANQIQIQogADUCFCELIAA1AhghDCAANQIcIQ0gDiAGIAZ+fCEEIARC/////w+DIQ4gBEIgiCEDIAcgBn4hBSAPIAVC/////w+DQgGGfCADfCEEIARC/////w+DIQ8gBEIgiCAFQiCIQgGGfCEDIAggBn4hBSAQIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRAgBEIgiCAFQiCIQgGGfCEDIAkgBn4hBSARIAVC/////w+DQgGGfCADfCEEIARC/////w+DIREgBEIgiCAFQiCIQgGGfCEDIAogBn4hBSASIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRIgBEIgiCAFQiCIQgGGfCEDIAsgBn4hBSATIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRMgBEIgiCAFQiCIQgGGfCEDIAwgBn4hBSAUIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRQgBEIgiCAFQiCIQgGGfCEDIA0gBn4hBSAVIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRUgBEIgiCAFQiCIQgGGfCEDIBYgA3whBCAEQv////8PgyEWIBcgBEIgiHwhFyAOQonHmaQOfkL/////D4MhAiAOIAJCx/rzww1+fCEEIARCIIghAyAPIAJClpiC4QN+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkKNlcfDBn58IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQpHVhbwJfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJC3bCFjAh+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkK2i8HCC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQqnAxokOfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC8pyRgwN+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgDyAHIAd+fCEEIARC/////w+DIQ8gBEIgiCEDIAggB34hBSAQIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRAgBEIgiCAFQiCIQgGGfCEDIAkgB34hBSARIAVC/////w+DQgGGfCADfCEEIARC/////w+DIREgBEIgiCAFQiCIQgGGfCEDIAogB34hBSASIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRIgBEIgiCAFQiCIQgGGfCEDIAsgB34hBSATIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRMgBEIgiCAFQiCIQgGGfCEDIAwgB34hBSAUIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRQgBEIgiCAFQiCIQgGGfCEDIA0gB34hBSAVIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRUgBEIgiCAFQiCIQgGGfCEDIBYgA3whBCAEQv////8PgyEWIBcgBEIgiHwhFyAOQonHmaQOfkL/////D4MhAiAOIAJCx/rzww1+fCEEIARCIIghAyAPIAJClpiC4QN+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkKNlcfDBn58IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQpHVhbwJfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJC3bCFjAh+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkK2i8HCC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQqnAxokOfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC8pyRgwN+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgECAIIAh+fCEEIARC/////w+DIRAgBEIgiCEDIAkgCH4hBSARIAVC/////w+DQgGGfCADfCEEIARC/////w+DIREgBEIgiCAFQiCIQgGGfCEDIAogCH4hBSASIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRIgBEIgiCAFQiCIQgGGfCEDIAsgCH4hBSATIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRMgBEIgiCAFQiCIQgGGfCEDIAwgCH4hBSAUIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRQgBEIgiCAFQiCIQgGGfCEDIA0gCH4hBSAVIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRUgBEIgiCAFQiCIQgGGfCEDIBYgA3whBCAEQv////8PgyEWIBcgBEIgiHwhFyAOQonHmaQOfkL/////D4MhAiAOIAJCx/rzww1+fCEEIARCIIghAyAPIAJClpiC4QN+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkKNlcfDBn58IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQpHVhbwJfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJC3bCFjAh+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkK2i8HCC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQqnAxokOfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC8pyRgwN+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgESAJIAl+fCEEIARC/////w+DIREgBEIgiCEDIAogCX4hBSASIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRIgBEIgiCAFQiCIQgGGfCEDIAsgCX4hBSATIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRMgBEIgiCAFQiCIQgGGfCEDIAwgCX4hBSAUIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRQgBEIgiCAFQiCIQgGGfCEDIA0gCX4hBSAVIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRUgBEIgiCAFQiCIQgGGfCEDIBYgA3whBCAEQv////8PgyEWIBcgBEIgiHwhFyAOQonHmaQOfkL/////D4MhAiAOIAJCx/rzww1+fCEEIARCIIghAyAPIAJClpiC4QN+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkKNlcfDBn58IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQpHVhbwJfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJC3bCFjAh+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkK2i8HCC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQqnAxokOfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC8pyRgwN+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgEiAKIAp+fCEEIARC/////w+DIRIgBEIgiCEDIAsgCn4hBSATIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRMgBEIgiCAFQiCIQgGGfCEDIAwgCn4hBSAUIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRQgBEIgiCAFQiCIQgGGfCEDIA0gCn4hBSAVIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRUgBEIgiCAFQiCIQgGGfCEDIBYgA3whBCAEQv////8PgyEWIBcgBEIgiHwhFyAOQonHmaQOfkL/////D4MhAiAOIAJCx/rzww1+fCEEIARCIIghAyAPIAJClpiC4QN+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkKNlcfDBn58IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQpHVhbwJfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJC3bCFjAh+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkK2i8HCC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQqnAxokOfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC8pyRgwN+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgEyALIAt+fCEEIARC/////w+DIRMgBEIgiCEDIAwgC34hBSAUIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRQgBEIgiCAFQiCIQgGGfCEDIA0gC34hBSAVIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRUgBEIgiCAFQiCIQgGGfCEDIBYgA3whBCAEQv////8PgyEWIBcgBEIgiHwhFyAOQonHmaQOfkL/////D4MhAiAOIAJCx/rzww1+fCEEIARCIIghAyAPIAJClpiC4QN+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkKNlcfDBn58IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQpHVhbwJfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJC3bCFjAh+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkK2i8HCC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQqnAxokOfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC8pyRgwN+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgFCAMIAx+fCEEIARC/////w+DIRQgBEIgiCEDIA0gDH4hBSAVIAVC/////w+DQgGGfCADfCEEIARC/////w+DIRUgBEIgiCAFQiCIQgGGfCEDIBYgA3whBCAEQv////8PgyEWIBcgBEIgiHwhFyAOQonHmaQOfkL/////D4MhAiAOIAJCx/rzww1+fCEEIARCIIghAyAPIAJClpiC4QN+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkKNlcfDBn58IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQpHVhbwJfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJC3bCFjAh+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkK2i8HCC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQqnAxokOfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC8pyRgwN+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgFSANIA1+fCEEIARC/////w+DIRUgBEIgiCEDIBYgA3whBCAEQv////8PgyEWIBcgBEIgiHwhFyAOQonHmaQOfkL/////D4MhAiAOIAJCx/rzww1+fCEEIARCIIghAyAPIAJClpiC4QN+fCADfCEEIARC/////w+DIQ4gBEIgiCEDIBAgAkKNlcfDBn58IAN8IQQgBEL/////D4MhDyAEQiCIIQMgESACQpHVhbwJfnwgA3whBCAEQv////8PgyEQIARCIIghAyASIAJC3bCFjAh+fCADfCEEIARC/////w+DIREgBEIgiCEDIBMgAkK2i8HCC358IAN8IQQgBEL/////D4MhEiAEQiCIIQMgFCACQqnAxokOfnwgA3whBCAEQv////8PgyETIARCIIghAyAVIAJC8pyRgwN+fCADfCEEIARC/////w+DIRQgBEIgiCEDIBYgA3whBCAEQv////8PgyEVIBcgBEIgiHwhFkIAIRcgASAOPgIAIAEgDz4CBCABIBA+AgggASARPgIMIAEgEj4CECABIBM+AhQgASAUPgIYIAEgFT4CHCAWpwRAIAFB6AMgARAHGgUgAUHoAxAFBEAgAUHoAyABEAcaCwsLCgAgACAAIAEQFAsLACAAQYgEIAEQFAsVACAAQYgKEABBqAoQAUGICiABEBMLEQAgAEHIChAYQcgKQYgFEAULJAAgABACBEBBAA8LIABB6AoQGEHoCkGIBRAFBEBBfw8LQQEPCxcAIAAgARAYIAFB6AMgARAOIAEgARAXCwkAQagEIAAQAAvLAQQBfwF/AX8BfyACEAFBICEFIAAhAwJAA0AgBSABSw0BIAVBIEYEQEGICxAcBUGIC0GIBEGICxAUCyADQYgLQagLEBQgAkGoCyACEBAgA0EgaiEDIAVBIGohBQwACwsgAUEgcCEEIARFBEAPC0GoCxABQQAhBgJAA0AgBiAERg0BIAYgAy0AADoAqAsgA0EBaiEDIAZBAWohBgwACwsgBUEgRgRAQYgLEBwFQYgLQYgEQYgLEBQLQagLQYgLQagLEBQgAkGoCyACEBALHAAgASACQcgLEB1ByAtByAsQFyAAQcgLIAMQFAv4AQQBfwF/AX8Bf0EAKAIAIQVBACAFIAJBAWpBIGxqNgIAIAUQHCAAIQYgBUEgaiEFQQAhCAJAA0AgCCACRg0BIAYQAgRA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IIghBSAQIAggA358IAV8IQYgBkL/////D4MhECAGQiCIIQUgESAJIAN+fCAFfCEGIAZC/////w+DIREgBkIgiCEFIBIgCiADfnwgBXwhBiAGQv////8PgyESIAZCIIghBSATIAsgA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFCAMIAN+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBUgDSADfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAWIA4gA358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgBSEXIA9C/////w5+Qv////8PgyEEIA8gBEKBgICAD358IQYgBkIgiCEFIBAgBEKT64efBH58IAV8IQYgBkL/////D4MhDyAGQiCIIQUgESAEQpHh5c0HfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSASIARCyNDPwQJ+fCAFfCEGIAZC/////w+DIREgBkIgiCEFIBMgBELdsIWMCH58IAV8IQYgBkL/////D4MhEiAGQiCIIQUgFCAEQraLwcILfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAVIARCqcDGiQ5+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBYgBELynJGDA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFyAFfCEWIAE1AgQhAyAPIAcgA358IQYgBkL/////D4MhDyAGQiCIIQUgECAIIAN+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBEgCSADfnwgBXwhBiAGQv////8PgyERIAZCIIghBSASIAogA358IAV8IQYgBkL/////D4MhEiAGQiCIIQUgEyALIAN+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBQgDCADfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAVIA0gA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFiAOIAN+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIAUhFyAPQv////8OfkL/////D4MhBCAPIARCgYCAgA9+fCEGIAZCIIghBSAQIARCk+uHnwR+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEKR4eXNB358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQsjQz8ECfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARC3bCFjAh+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEK2i8HCC358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQqnAxokOfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC8pyRgwN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIIIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0L/////Dn5C/////w+DIQQgDyAEQoGAgIAPfnwhBiAGQiCIIQUgECAEQpPrh58EfnwgBXwhBiAGQv////8PgyEPIAZCIIghBSARIARCkeHlzQd+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBIgBELI0M/BAn58IAV8IQYgBkL/////D4MhESAGQiCIIQUgEyAEQt2whYwIfnwgBXwhBiAGQv////8PgyESIAZCIIghBSAUIARCtovBwgt+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBUgBEKpwMaJDn58IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFiAEQvKckYMDfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAXIAV8IRYgATUCDCEDIA8gByADfnwhBiAGQv////8PgyEPIAZCIIghBSAQIAggA358IAV8IQYgBkL/////D4MhECAGQiCIIQUgESAJIAN+fCAFfCEGIAZC/////w+DIREgBkIgiCEFIBIgCiADfnwgBXwhBiAGQv////8PgyESIAZCIIghBSATIAsgA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFCAMIAN+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBUgDSADfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAWIA4gA358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgBSEXIA9C/////w5+Qv////8PgyEEIA8gBEKBgICAD358IQYgBkIgiCEFIBAgBEKT64efBH58IAV8IQYgBkL/////D4MhDyAGQiCIIQUgESAEQpHh5c0HfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSASIARCyNDPwQJ+fCAFfCEGIAZC/////w+DIREgBkIgiCEFIBMgBELdsIWMCH58IAV8IQYgBkL/////D4MhEiAGQiCIIQUgFCAEQraLwcILfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAVIARCqcDGiQ5+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBYgBELynJGDA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFyAFfCEWIAE1AhAhAyAPIAcgA358IQYgBkL/////D4MhDyAGQiCIIQUgECAIIAN+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBEgCSADfnwgBXwhBiAGQv////8PgyERIAZCIIghBSASIAogA358IAV8IQYgBkL/////D4MhEiAGQiCIIQUgEyALIAN+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBQgDCADfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAVIA0gA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFiAOIAN+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIAUhFyAPQv////8OfkL/////D4MhBCAPIARCgYCAgA9+fCEGIAZCIIghBSAQIARCk+uHnwR+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEKR4eXNB358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQsjQz8ECfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARC3bCFjAh+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEK2i8HCC358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQqnAxokOfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC8pyRgwN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiABNQIUIQMgDyAHIAN+fCEGIAZC/////w+DIQ8gBkIgiCEFIBAgCCADfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSARIAkgA358IAV8IQYgBkL/////D4MhESAGQiCIIQUgEiAKIAN+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBMgCyADfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAUIAwgA358IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFSANIAN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBYgDiADfnwgBXwhBiAGQv////8PgyEWIAZCIIghBSAFIRcgD0L/////Dn5C/////w+DIQQgDyAEQoGAgIAPfnwhBiAGQiCIIQUgECAEQpPrh58EfnwgBXwhBiAGQv////8PgyEPIAZCIIghBSARIARCkeHlzQd+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBIgBELI0M/BAn58IAV8IQYgBkL/////D4MhESAGQiCIIQUgEyAEQt2whYwIfnwgBXwhBiAGQv////8PgyESIAZCIIghBSAUIARCtovBwgt+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBUgBEKpwMaJDn58IAV8IQYgBkL/////D4MhFCAGQiCIIQUgFiAEQvKckYMDfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAXIAV8IRYgATUCGCEDIA8gByADfnwhBiAGQv////8PgyEPIAZCIIghBSAQIAggA358IAV8IQYgBkL/////D4MhECAGQiCIIQUgESAJIAN+fCAFfCEGIAZC/////w+DIREgBkIgiCEFIBIgCiADfnwgBXwhBiAGQv////8PgyESIAZCIIghBSATIAsgA358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFCAMIAN+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBUgDSADfnwgBXwhBiAGQv////8PgyEVIAZCIIghBSAWIA4gA358IAV8IQYgBkL/////D4MhFiAGQiCIIQUgBSEXIA9C/////w5+Qv////8PgyEEIA8gBEKBgICAD358IQYgBkIgiCEFIBAgBEKT64efBH58IAV8IQYgBkL/////D4MhDyAGQiCIIQUgESAEQpHh5c0HfnwgBXwhBiAGQv////8PgyEQIAZCIIghBSASIARCyNDPwQJ+fCAFfCEGIAZC/////w+DIREgBkIgiCEFIBMgBELdsIWMCH58IAV8IQYgBkL/////D4MhEiAGQiCIIQUgFCAEQraLwcILfnwgBXwhBiAGQv////8PgyETIAZCIIghBSAVIARCqcDGiQ5+fCAFfCEGIAZC/////w+DIRQgBkIgiCEFIBYgBELynJGDA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFyAFfCEWIAE1AhwhAyAPIAcgA358IQYgBkL/////D4MhDyAGQiCIIQUgECAIIAN+fCAFfCEGIAZC/////w+DIRAgBkIgiCEFIBEgCSADfnwgBXwhBiAGQv////8PgyERIAZCIIghBSASIAogA358IAV8IQYgBkL/////D4MhEiAGQiCIIQUgEyALIAN+fCAFfCEGIAZC/////w+DIRMgBkIgiCEFIBQgDCADfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAVIA0gA358IAV8IQYgBkL/////D4MhFSAGQiCIIQUgFiAOIAN+fCAFfCEGIAZC/////w+DIRYgBkIgiCEFIAUhFyAPQv////8OfkL/////D4MhBCAPIARCgYCAgA9+fCEGIAZCIIghBSAQIARCk+uHnwR+fCAFfCEGIAZC/////w+DIQ8gBkIgiCEFIBEgBEKR4eXNB358IAV8IQYgBkL/////D4MhECAGQiCIIQUgEiAEQsjQz8ECfnwgBXwhBiAGQv////8PgyERIAZCIIghBSATIARC3bCFjAh+fCAFfCEGIAZC/////w+DIRIgBkIgiCEFIBQgBEK2i8HCC358IAV8IQYgBkL/////D4MhEyAGQiCIIQUgFSAEQqnAxokOfnwgBXwhBiAGQv////8PgyEUIAZCIIghBSAWIARC8pyRgwN+fCAFfCEGIAZC/////w+DIRUgBkIgiCEFIBcgBXwhFiACIA8+AgAgAiAQPgIEIAIgET4CCCACIBI+AgwgAiATPgIQIAIgFD4CFCACIBU+AhggAiAWPgIcIAJB6A0QBQRAIAJB6A0gAhAHGgsLyyQWAX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4BfgF+AX4gADUCACEGIAA1AgQhByAANQIIIQggADUCDCEJIAA1AhAhCiAANQIUIQsgADUCGCEMIAA1AhwhDSAOIAYgBn58IQQgBEL/////D4MhDiAEQiCIIQMgByAGfiEFIA8gBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhDyAEQiCIIAVCIIhCAYZ8IQMgCCAGfiEFIBAgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhECAEQiCIIAVCIIhCAYZ8IQMgCSAGfiEFIBEgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhESAEQiCIIAVCIIhCAYZ8IQMgCiAGfiEFIBIgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEiAEQiCIIAVCIIhCAYZ8IQMgCyAGfiEFIBMgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEyAEQiCIIAVCIIhCAYZ8IQMgDCAGfiEFIBQgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFCAEQiCIIAVCIIhCAYZ8IQMgDSAGfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w5+Qv////8PgyECIA4gAkKBgICAD358IQQgBEIgiCEDIA8gAkKT64efBH58IAN8IQQgBEL/////D4MhDiAEQiCIIQMgECACQpHh5c0HfnwgA3whBCAEQv////8PgyEPIARCIIghAyARIAJCyNDPwQJ+fCADfCEEIARC/////w+DIRAgBEIgiCEDIBIgAkLdsIWMCH58IAN8IQQgBEL/////D4MhESAEQiCIIQMgEyACQraLwcILfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJCqcDGiQ5+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkLynJGDA358IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiADfCEEIARC/////w+DIRUgFyAEQiCIfCEWQgAhFyAPIAcgB358IQQgBEL/////D4MhDyAEQiCIIQMgCCAHfiEFIBAgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhECAEQiCIIAVCIIhCAYZ8IQMgCSAHfiEFIBEgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhESAEQiCIIAVCIIhCAYZ8IQMgCiAHfiEFIBIgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEiAEQiCIIAVCIIhCAYZ8IQMgCyAHfiEFIBMgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEyAEQiCIIAVCIIhCAYZ8IQMgDCAHfiEFIBQgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFCAEQiCIIAVCIIhCAYZ8IQMgDSAHfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w5+Qv////8PgyECIA4gAkKBgICAD358IQQgBEIgiCEDIA8gAkKT64efBH58IAN8IQQgBEL/////D4MhDiAEQiCIIQMgECACQpHh5c0HfnwgA3whBCAEQv////8PgyEPIARCIIghAyARIAJCyNDPwQJ+fCADfCEEIARC/////w+DIRAgBEIgiCEDIBIgAkLdsIWMCH58IAN8IQQgBEL/////D4MhESAEQiCIIQMgEyACQraLwcILfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJCqcDGiQ5+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkLynJGDA358IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiADfCEEIARC/////w+DIRUgFyAEQiCIfCEWQgAhFyAQIAggCH58IQQgBEL/////D4MhECAEQiCIIQMgCSAIfiEFIBEgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhESAEQiCIIAVCIIhCAYZ8IQMgCiAIfiEFIBIgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEiAEQiCIIAVCIIhCAYZ8IQMgCyAIfiEFIBMgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEyAEQiCIIAVCIIhCAYZ8IQMgDCAIfiEFIBQgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFCAEQiCIIAVCIIhCAYZ8IQMgDSAIfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w5+Qv////8PgyECIA4gAkKBgICAD358IQQgBEIgiCEDIA8gAkKT64efBH58IAN8IQQgBEL/////D4MhDiAEQiCIIQMgECACQpHh5c0HfnwgA3whBCAEQv////8PgyEPIARCIIghAyARIAJCyNDPwQJ+fCADfCEEIARC/////w+DIRAgBEIgiCEDIBIgAkLdsIWMCH58IAN8IQQgBEL/////D4MhESAEQiCIIQMgEyACQraLwcILfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJCqcDGiQ5+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkLynJGDA358IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiADfCEEIARC/////w+DIRUgFyAEQiCIfCEWQgAhFyARIAkgCX58IQQgBEL/////D4MhESAEQiCIIQMgCiAJfiEFIBIgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEiAEQiCIIAVCIIhCAYZ8IQMgCyAJfiEFIBMgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEyAEQiCIIAVCIIhCAYZ8IQMgDCAJfiEFIBQgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFCAEQiCIIAVCIIhCAYZ8IQMgDSAJfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w5+Qv////8PgyECIA4gAkKBgICAD358IQQgBEIgiCEDIA8gAkKT64efBH58IAN8IQQgBEL/////D4MhDiAEQiCIIQMgECACQpHh5c0HfnwgA3whBCAEQv////8PgyEPIARCIIghAyARIAJCyNDPwQJ+fCADfCEEIARC/////w+DIRAgBEIgiCEDIBIgAkLdsIWMCH58IAN8IQQgBEL/////D4MhESAEQiCIIQMgEyACQraLwcILfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJCqcDGiQ5+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkLynJGDA358IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiADfCEEIARC/////w+DIRUgFyAEQiCIfCEWQgAhFyASIAogCn58IQQgBEL/////D4MhEiAEQiCIIQMgCyAKfiEFIBMgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhEyAEQiCIIAVCIIhCAYZ8IQMgDCAKfiEFIBQgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFCAEQiCIIAVCIIhCAYZ8IQMgDSAKfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w5+Qv////8PgyECIA4gAkKBgICAD358IQQgBEIgiCEDIA8gAkKT64efBH58IAN8IQQgBEL/////D4MhDiAEQiCIIQMgECACQpHh5c0HfnwgA3whBCAEQv////8PgyEPIARCIIghAyARIAJCyNDPwQJ+fCADfCEEIARC/////w+DIRAgBEIgiCEDIBIgAkLdsIWMCH58IAN8IQQgBEL/////D4MhESAEQiCIIQMgEyACQraLwcILfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJCqcDGiQ5+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkLynJGDA358IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiADfCEEIARC/////w+DIRUgFyAEQiCIfCEWQgAhFyATIAsgC358IQQgBEL/////D4MhEyAEQiCIIQMgDCALfiEFIBQgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFCAEQiCIIAVCIIhCAYZ8IQMgDSALfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w5+Qv////8PgyECIA4gAkKBgICAD358IQQgBEIgiCEDIA8gAkKT64efBH58IAN8IQQgBEL/////D4MhDiAEQiCIIQMgECACQpHh5c0HfnwgA3whBCAEQv////8PgyEPIARCIIghAyARIAJCyNDPwQJ+fCADfCEEIARC/////w+DIRAgBEIgiCEDIBIgAkLdsIWMCH58IAN8IQQgBEL/////D4MhESAEQiCIIQMgEyACQraLwcILfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJCqcDGiQ5+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkLynJGDA358IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiADfCEEIARC/////w+DIRUgFyAEQiCIfCEWQgAhFyAUIAwgDH58IQQgBEL/////D4MhFCAEQiCIIQMgDSAMfiEFIBUgBUL/////D4NCAYZ8IAN8IQQgBEL/////D4MhFSAEQiCIIAVCIIhCAYZ8IQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w5+Qv////8PgyECIA4gAkKBgICAD358IQQgBEIgiCEDIA8gAkKT64efBH58IAN8IQQgBEL/////D4MhDiAEQiCIIQMgECACQpHh5c0HfnwgA3whBCAEQv////8PgyEPIARCIIghAyARIAJCyNDPwQJ+fCADfCEEIARC/////w+DIRAgBEIgiCEDIBIgAkLdsIWMCH58IAN8IQQgBEL/////D4MhESAEQiCIIQMgEyACQraLwcILfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJCqcDGiQ5+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkLynJGDA358IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiADfCEEIARC/////w+DIRUgFyAEQiCIfCEWQgAhFyAVIA0gDX58IQQgBEL/////D4MhFSAEQiCIIQMgFiADfCEEIARC/////w+DIRYgFyAEQiCIfCEXIA5C/////w5+Qv////8PgyECIA4gAkKBgICAD358IQQgBEIgiCEDIA8gAkKT64efBH58IAN8IQQgBEL/////D4MhDiAEQiCIIQMgECACQpHh5c0HfnwgA3whBCAEQv////8PgyEPIARCIIghAyARIAJCyNDPwQJ+fCADfCEEIARC/////w+DIRAgBEIgiCEDIBIgAkLdsIWMCH58IAN8IQQgBEL/////D4MhESAEQiCIIQMgEyACQraLwcILfnwgA3whBCAEQv////8PgyESIARCIIghAyAUIAJCqcDGiQ5+fCADfCEEIARC/////w+DIRMgBEIgiCEDIBUgAkLynJGDA358IAN8IQQgBEL/////D4MhFCAEQiCIIQMgFiADfCEEIARC/////w+DIRUg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IABBIGoQAQsVACAAEAEgAEEgahAcIABBwABqEAELUgAgASAAKQMANwMAIAEgACkDCDcDCCABIAApAxA3AxAgASAAKQMYNwMYIAEgACkDIDcDICABIAApAyg3AyggASAAKQMwNwMwIAEgACkDODcDOAt6ACABIAApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggASAAKQMgNwMgIAEgACkDKDcDKCABIAApAzA3AzAgASAAKQM4NwM4IAEgACkDQDcDQCABIAApA0g3A0ggASAAKQNQNwNQIAEgACkDWDcDWAsoACAAEEcEQCABEEoFIAFBwABqEBwgAEEgaiABQSBqEAAgACABEAALCxgBAX8gACABEAQgAEEgaiABQSBqEARxDwt1AQF/IABBwABqIQIgABBIBEAgARBHDwsgARBHBEBBAA8LIAIQDwRAIAAgARBODwsgAkGoGBAVIAFBqBhByBgQFCACQagYQegYEBQgAUEgakHoGEGIGRAUIABByBgQBARAIABBIGpBiBkQBARAQQEPCwtBAA8LtAECAX8BfyAAQcAAaiECIAFBwABqIQMgABBIBEAgARBIDwsgARBIBEBBAA8LIAIQDwRAIAEgABBPDwsgAxAPBEAgACABEE8PCyACQagZEBUgA0HIGRAVIABByBlB6BkQFCABQagZQYgaEBQgAkGoGUGoGhAUIANByBlByBoQFCAAQSBqQcgaQegaEBQgAUEgakGoGkGIGxAUQegZQYgaEAQEQEHoGkGIGxAEBEBBAQ8LC0EADwvoAQAgABBHBEAgACABEE0PCyAAQagbEBUgAEEgakHIGxAVQcgbQegbEBUgAEHIG0GIHBAQQYgcQYgcEBVBiBxBqBtBiBwQEUGIHEHoG0GIHBARQYgcQYgcQYgcEBBBqBtBqBtBqBwQEEGoHEGoG0GoHBAQIABBIGogAEEgaiABQcAAahAQQagcIAEQFSABQYgcIAEQESABQYgcIAEQEUHoG0HoG0HIHBAQQcgcQcgcQcgcEBBByBxByBxByBwQEEGIHCABIAFBIGoQESABQSBqQagcIAFBIGoQFCABQSBqQcgcIAFBIGoQEQuJAgAgABBIBEAgACABEEwPCyAAQcAAahAPBEAgACABEFEPDwsgAEHoHBAVIABBIGpBiB0QFUGIHUGoHRAVIABBiB1ByB0QEEHIHUHIHRAVQcgdQegcQcgdEBFByB1BqB1ByB0QEUHIHUHIHUHIHRAQQegcQegcQegdEBBB6B1B6BxB6B0QEEHoHUGIHhAVIABBIGogAEHAAGpBqB4QFEHIHUHIHSABEBBBiB4gASABEBFBqB1BqB1ByB4QEEHIHkHIHkHIHhAQQcgeQcgeQcgeEBBByB0gASABQSBqEBEgAUEgakHoHSABQSBqEBQgAUEgakHIHiABQSBqEBFBqB5BqB4gAUHAAGoQEAujAgEBfyAAQcAAaiEDIAAQRwRAIAEgAhBLIAJBwABqEBwPCyABEEcEQCAAIAIQSyACQcAAahAcDwsgACABEAQEQCAAQSBqIAFBIGoQBARAIAEgAhBRDwsLIAEgAEHoHhARIAFBIGogAEEgakGoHxARQegeQYgfEBVBiB9BiB9ByB8QEEHIH0HIH0HIHxAQQegeQcgfQegfEBRBqB9BqB9BiCAQECAAQcgfQcggEBRBiCBBqCAQFUHIIEHIIEHoIBAQQaggQegfIAIQESACQeggIAIQESAAQSBqQegfQYghEBRBiCFBiCFBiCEQEEHIICACIAJBIGoQESACQSBqQYggIAJBIGoQFCACQSBqQYghIAJBIGoQEUHoHkHoHiACQcAAahAQC4ADAQF/IABBwABqIQMgABBIBEAgASACEEsgAkHAAGoQHA8LIAEQRwRAIAAgAhBMDwsgAxAPBEAgACABIAIQUw8LIANBqCEQFSABQaghQcghEBQgA0GoIUHoIRAUIAFBIGpB6CFBiCIQFCAAQcghEAQEQCAAQSBqQYgiEAQEQCABIAIQUQ8LC0HIISAAQagiEBFBiCIgAEEgakHoIhARQagiQcgiEBVByCJByCJBiCMQEEGII0GII0GIIxAQQagiQYgjQagjEBRB6CJB6CJByCMQECAAQYgjQYgkEBRByCNB6CMQFUGIJEGIJEGoJBAQQegjQagjIAIQESACQagkIAIQESAAQSBqQagjQcgkEBRByCRByCRByCQQEEGIJCACIAJBIGoQESACQSBqQcgjIAJBIGoQFCACQSBqQcgkIAJBIGoQESADQagiIAJBwABqEBAgAkHAAGogAkHAAGoQFSACQcAAakGoISACQcAAahARIAJBwABqQcgiIAJBwABqEBELvAMCAX8BfyAAQcAAaiEDIAFBwABqIQQgABBIBEAgASACEEwPCyABEEgEQCAAIAIQTA8LIAMQDwRAIAEgACACEFQPCyAEEA8EQCAAIAEgAhBUDwsgA0HoJBAVIARBiCUQFSAAQYglQaglEBQgAUHoJEHIJRAUIANB6CRB6CUQFCAEQYglQYgmEBQgAEEgakGIJkGoJhAUIAFBIGpB6CVByCYQFEGoJUHIJRAEBEBBqCZByCYQBARAIAAgAhBSDwsLQcglQaglQegmEBFByCZBqCZBiCcQEUHoJkHoJkGoJxAQQagnQagnEBVB6CZBqCdByCcQFEGIJ0GIJ0HoJxAQQaglQagnQagoEBRB6CdBiCgQFUGoKEGoKEHIKBAQQYgoQcgnIAIQESACQcgoIAIQEUGoJkHIJ0HoKBAUQegoQegoQegoEBBBqCggAiACQSBqEBEgAkEgakHoJyACQSBqEBQgAkEgakHoKCACQSBqEBEgAyAEIAJBwABqEBAgAkHAAGogAkHAAGoQFSACQcAAakHoJCACQcAAahARIAJBwABqQYglIAJBwABqEBEgAkHAAGpB6CYgAkHAAGoQFAsUACAAIAEQACAAQSBqIAFBIGoQEgsiACAAIAEQACAAQSBqIAFBIGoQEiAAQcAAaiABQcAAahAACxIAIAFBiCkQViAAQYgpIAIQUwsSACABQegpEFYgAEHoKSACEFQLEgAgAUHIKhBXIABByCogAhBVCxQAIAAgARAYIABBIGogAUEgahAYCyIAIAAgARAYIABBIGogAUEgahAYIABBwABqIAFBwABqEBgLFAAgACABEBcgAEEgaiABQSBqEBcLIgAgACABEBcgAEEgaiABQSBqEBcgAEHAAGogAUHAAGoQFwtLACAAEEgEQCABEAEgAUEgahABBSAAQcAAakGoKxAbQagrQcgrEBVBqCtByCtB6CsQFCAAQcgrIAEQFCAAQSBqQegrIAFBIGoQFAsLMQAgAEEgakGILBAVIABBqCwQFSAAQagsQagsEBRBqCxBiBhBqCwQEEGILEGoLBAEDwsPACAAQcgsEF9ByCwQYA8LrgEFAX8BfwF/AX8Bf0EAKAIAIQNBACADIAFBIGxqNgIAIABBwABqQeAAIAEgA0EgEB8gACEEIAMhBSACIQZBACEHAkADQCAHIAFGDQEgBRACBEAgBhABIAZBIGoQAQUgBSAEQSBqQYgtEBQgBSAFEBUgBSAEIAYQFCAFQYgtIAZBIGoQFAsgBEHgAGohBCAGQcAAaiEGIAVBIGohBSAHQQFqIQcMAAsLQQAgAzYCAAtMACAAEEgEQCABEEoFIABBwABqQagtEBtBqC1ByC0QFUGoLUHILUHoLRAUIABByC0gARAUIABBIGpB6C0gAUEgahAUIAFBwABqEBwLCzsCAX8BfyACIAFqQQFrIQMgACEEAkADQCADIAJIDQEgAyAELQAAOgAAIANBAWshAyAEQQFqIQQMAAsLCyoAIAAQRwRAIAEQSQ8LIABBiC4QW0GILkEgIAEQZEGoLkEgIAFBIGoQZAtBACAAEEcEQCABEAEgAUHAADoAAA8LIABByC4QGEHILkEgIAEQZCAAQSBqEBpBf0YEQCABIAEtAABBgAFyOgAACwsvACAALQAAQcAAcQRAIAEQSQ8LIABBIEHoLhBkIABBIGpBIEGILxBkQeguIAEQXQuyAQIBfwF/IAAtAAAhAiACQcAAcQRAIAEQSQ8LIAJBgAFxIQMgAEHILxAAQcgvIAJBP3E6AABByC9BIEGoLxBkQagvIAEQFyABQcgvEBUgAUHIL0HILxAUQcgvQYgYQcgvEBBByC9ByC8QJ0HIL0GoLxASQcgvEBpBf0YEQCADBEBByC8gAUEgahAABUHILyABQSBqEBILBSADBEBByC8gAUEgahASBUHILyABQSBqEAALCwtAAwF/AX8BfyAAIQQgAiEFQQAhAwJAA0AgAyABRg0BIAQgBRBlIARBwABqIQQgBUHAAGohBSADQQFqIQMMAAsLCz8DAX8BfwF/IAAhBCACIQVBACEDAkADQCADIAFGDQEgBCAFEGYgBEHAAGohBCAFQSBqIQUgA0EBaiEDDAALCwtAAwF/AX8BfyAAIQQgAiEFQQAhAwJAA0AgAyABRg0BIAQgBRBnIARBwABqIQQgBUHAAGohBSADQQFqIQMMAAsLC1IDAX8BfwF/IAAgAUEBa0EgbGohBCACIAFBAWtBwABsaiEFQQAhAwJAA0AgAyABRg0BIAQgBRBoIARBIGshBCAFQcAAayEFIANBAWohAwwACwsLVAMBfwF/AX8gACABQQFrQcAAbGohBCACIAFBAWtB4ABsaiEFQQAhAwJAA0AgAyABRg0BIAQgBRBNIARBwABrIQQgBUHgAGshBSADQQFqIQMMAAsLC0ECAX8BfyABQQhsIAJrIQQgAyAESgRAQQEgBHRBAWshBQVBASADdEEBayEFCyAAIAJBA3ZqKAAAIAJBB3F2IAVxC7MBCQF/AX8BfwF/AX8BfwF/AX8Bf0EBIANBAWt0IQwgAUEDdCENIARBAWohCCAAIQlBACEGAkADQCAGIAJGDQFBACEKQQAhBwJAA0AgByAIRg0BIAUgByACbCAGamogCjoAACAHIANsIQ4gDiANSARAIAkgASAOIAMQbiELBUEAIQsLIAsgCmogDE4EQEEBIQoFQQAhCgsgB0EBaiEHDAALCyAJIAFqIQkgBkEBaiEGDAALCwuHAw4BfwF/AX8BfwF/AX8BfwF/AX8BfwF/AX8BfwF/IARFBEAgBxBKDwtBASAGQQFrdCENQQEgBnQhDiACQQN0IQ8gBSAGbCEQQQAoAgAhEUEAIBEgDUHgAGxqNgIAQQAhDAJAA0AgDCANRg0BIBEgDEHgAGxqEEogDEEBaiEMDAALCyAAIQggASEJIAMgBSAEbGohCkEAIQsCQANAIAsgBEYNASAQIA9IBEAgCSACIBAgBhBuIRIFQQAhEgsgEiAKLQAAaiETIBMgDU4EQCATIA5rIRMLIBNBAEoEQCARIBNBAWtB4ABsaiEUIBQgCCAUEFUFIBNBAEgEQCARQX8gE2tB4ABsaiEUIBQgCCAUEFoLCyAJIAJqIQkgCkEBaiEKIAhB4ABqIQggC0EBaiELDAALCyARIA1BAWtB4ABsaiEVIBUgBxBMIBVB6C8QTCAVQeAAayEVAkADQCAVIBFJDQFB6C8gFUHoLxBVIAdB6C8gBxBVIBVB4ABrIRUMAAsLQQAgETYCAAvYAQcBfwF/AX8BfwF/AX8BfyAEEEogA0UEQA8LIANnLQCoMSEFIAVBAkgEQEECIQULIAJBA3RBAWsgBW5BAWohBiAGQQFqIQdBACgCACEJIAkhCEEAIAkgByADbGpBA2pBfHE2AgAgASACIAMgBSAGIAgQbyAGIQoCQANAIApBAEgNASAEEEhFBEBBACELAkADQCALIAVGDQEgBCAEEFIgC0EBaiELDAALCwsgACABIAIgCCADIAogBUHIMBBwIARByDAgBBBVIApBAWshCgwACwtBACAJNgIAC0ECAX8BfyABQQhsIAJrIQQgAyAESgRAQQEgBHRBAWshBQVBASADdEEBayEFCyAAIAJBA3ZqKAAAIAJBB3F2IAVxC7MBCQF/AX8BfwF/AX8BfwF/AX8Bf0EBIANBAWt0IQwgAUEDdCENIARBAWohCCAAIQlBACEGAkADQCAGIAJGDQFBACEKQQAhBwJAA0AgByAIRg0BIAUgByACbCAGamogCjoAACAHIANsIQ4gDiANSARAIAkgASAOIAMQciELBUEAIQsLIAsgCmogDE4EQEEBIQoFQQAhCgsgB0EBaiEHDAALCyAJIAFqIQkgBkEBaiEGDAALCwuHAw4BfwF/AX8BfwF/AX8BfwF/AX8BfwF/AX8BfwF/IARFBEAgBxBKDwtBASAGQQFrdCENQQEgBnQhDiACQQN0IQ8gBSAGbCEQQQAoAgAhEUEAIBEgDUHgAGxqNgIAQQAhDAJAA0AgDCANRg0BIBEgDEHgAGxqEEogDEEBaiEMDAALCyAAIQggASEJIAMgBSAEbGohCkEAIQsCQANAIAsgBEYNASAQIA9IBEAgCSACIBAgBhByIRIFQQAhEgsgEiAKLQAAaiETIBMgDU4EQCATIA5rIRMLIBNBAEoEQCARIBNBAWtB4ABsaiEUIBQgCCAUEFQFIBNBAEgEQCARQX8gE2tB4ABsaiEUIBQgCCAUEFkLCyAJIAJqIQkgCkEBaiEKIAhBwABqIQggC0EBaiELDAALCyARIA1BAWtB4ABsaiEVIBUgBxBMIBVByDEQTCAVQeAAayEVAkADQCAVIBFJDQFByDEgFUHIMRBVIAdByDEgBxBVIBVB4ABrIRUMAAsLQQAgETYCAAvYAQcBfwF/AX8BfwF/AX8BfyAEEEogA0UEQA8LIANnLQCIMyEFIAVBAkgEQEECIQULIAJBA3RBAWsgBW5BAWohBiAGQQFqIQdBACgCACEJIAkhCEEAIAkgByADbGpBA2pBfHE2AgAgASACIAMgBSAGIAgQcyAGIQoCQANAIApBAEgNASAEEEhFBEBBACELAkADQCALIAVGDQEgBCAEEFIgC0EBaiELDAALCwsgACABIAIgCCADIAogBUGoMhB0IARBqDIgBBBVIApBAWshCgwACwtBACAJNgIAC6sEBwF/AX8BfwF/AX8BfwF/IAJFBEAgAxBKDwsgAkEDdCEFQQAoAgAhBCAEIQpBACAEQSBqIAVqQXhxNgIAQQEhBiABQQBBA3ZBfHFqKAIAQQBBH3F2QQFxIQdBACEJAkADQCAGIAVGDQEgASAGQQN2QXxxaigCACAGQR9xdkEBcSEIIAcEQCAIBEAgCQRAQQAhB0EBIQkgCkEBOgAAIApBAWohCgVBACEHQQEhCSAKQf8BOgAAIApBAWohCgsFIAkEQEEAIQdBASEJIApB/wE6AAAgCkEBaiEKBUEAIQdBACEJIApBAToAACAKQQFqIQoLCwUgCARAIAkEQEEAIQdBASEJIApBADoAACAKQQFqIQoFQQEhB0EAIQkgCkEAOgAAIApBAWohCgsFIAkEQEEBIQdBACEJIApBADoAACAKQQFqIQoFQQAhB0EAIQkgCkEAOgAAIApBAWohCgsLCyAGQQFqIQYMAAsLIAcEQCAJBEAgCkH/AToAACAKQQFqIQogCkEAOgAAIApBAWohCiAKQQE6AAAgCkEBaiEKBSAKQQE6AAAgCkEBaiEKCwUgCQRAIApBADoAACAKQQFqIQogCkEBOgAAIApBAWohCgsLIApBAWshCiAAQagzEEwgAxBKAkADQCADIAMQUiAKLQAAIQggCARAIAhBAUYEQCADQagzIAMQVQUgA0GoMyADEFoLCyAEIApGDQEgCkEBayEKDAALC0EAIAQ2AgALqwQHAX8BfwF/AX8BfwF/AX8gAkUEQCADEEoPCyACQQN0IQVBACgCACEEIAQhCkEAIARBIGogBWpBeHE2AgBBASEGIAFBAEEDdkF8cWooAgBBAEEfcXZBAXEhB0EAIQkCQANAIAYgBUYNASABIAZBA3ZBfHFqKAIAIAZBH3F2QQFxIQggBwRAIAgEQCAJBEBBACEHQQEhCSAKQQE6AAAgCkEBaiEKBUEAIQdBASEJIApB/wE6AAAgCkEBaiEKCwUgCQRAQQAhB0EBIQkgCkH/AToAACAKQQFqIQoFQQAhB0EAIQkgCkEBOgAAIApBAWohCgsLBSAIBEAgCQRAQQAhB0EBIQkgCkEAOgAAIApBAWohCgVBASEHQQAhCSAKQQA6AAAgCkEBaiEKCwUgCQRAQQEhB0EAIQkgCkEAOgAAIApBAWohCgVBACEHQQAhCSAKQQA6AAAgCkEBaiEKCwsLIAZBAWohBgwACwsgBwRAIAkEQCAKQf8BOgAAIApBAWohCiAKQQA6AAAgCkEBaiEKIApBAToAACAKQQFqIQoFIApBAToAACAKQQFqIQoLBSAJBEAgCkEAOgAAIApBAWohCiAKQQE6AAAgCkEBaiEKCwsgCkEBayEKIABBiDQQSyADEEoCQANAIAMgAxBSIAotAAAhCCAIBEAgCEEBRgRAIANBiDQgAxBUBSADQYg0IAMQWQsLIAQgCkYNASAKQQFrIQoMAAsLQQAgBDYCAAtCACAAQf8BcS0AyFFBGHQgAEEIdkH/AXEtAMhRQRB0aiAAQRB2Qf8BcS0AyFFBCHQgAEEYdkH/AXEtAMhRamogAXcLZwUBfwF/AX8BfwF/QQEgAXQhAkEAIQMCQANAIAMgAkYNASAAIANBIGxqIQUgAyABEHghBCAAIARBIGxqIQYgAyAESQRAIAVByNMAEAAgBiAFEABByNMAIAYQAAsgA0EBaiEDDAALCwvaAQcBfwF/AX8BfwF/AX8BfyACRSADEClxBEAPC0EBIAF0IQQgBEEBayEIQQEhByAEQQF2IQUCQANAIAcgBU8NASAAIAdBIGxqIQkgACAEIAdrQSBsaiEKIAIEQCADECkEQCAJQejTABAAIAogCRAAQejTACAKEAAFIAlB6NMAEAAgCiADIAkQLkHo0wAgAyAKEC4LBSADECkEQAUgCSADIAkQLiAKIAMgChAuCwsgB0EBaiEHDAALCyADECkEQAUgACADIAAQLiAAIAVBIGxqIQogCiADIAoQLgsL5wEJAX8BfwF/AX8BfwF/AX8BfwF/IAAgARB5QQEgAXQhCUEBIQQCQANAIAQgAUsNAUEBIAR0IQdByDQgBEEgbGohCkEAIQUCQANAIAUgCU8NAUGI1AAQNiAHQQF2IQhBACEGAkADQCAGIAhPDQEgACAFIAZqQSBsaiELIAsgCEEgbGohDCAMQYjUAEGo1AAQLiALQcjUABAAQcjUAEGo1AAgCxAqQcjUAEGo1AAgDBArQYjUACAKQYjUABAuIAZBAWohBgwACwsgBSAHaiEFDAALCyAEQQFqIQQMAAsLIAAgASACIAMQegtDAgF/AX8gAEEBdiECQQAhAQJAA0AgAkUNASACQQF2IQIgAUEBaiEBDAALCyAAQQEgAXRHBEAACyABQRxLBEAACyABCxwBAX8gARB8IQJB6NQAEDYgACACQQBB6NQAEHsLIQIBfwF/IAEQfCECQeg7IAJBIGxqIQMgACACQQEgAxB7C3YDAX8BfwF/IANBiNUAEABBACEHAkADQCAHIAJGDQEgACAHQSBsaiEFIAEgB0EgbGohBiAGQYjVAEGo1QAQLiAFQcjVABAAQcjVAEGo1QAgBRAqQcjVAEGo1QAgBhArQYjVACAEQYjVABAuIAdBAWohBwwACwsLhAEEAX8BfwF/AX9BiMMAIAVBIGxqIQkgA0Ho1QAQAEEAIQgCQANAIAggAkYNASAAIAhBIGxqIQYgASAIQSBsaiEHIAYgB0GI1gAQKiAHIAkgBxAuIAYgByAHECogB0Ho1QAgBxAuQYjWACAGEABB6NUAIARB6NUAEC4gCEEBaiEIDAALCwueAQUBfwF/AX8BfwF/QYjDACAFQSBsaiEJQajKACAFQSBsaiEKIANBqNYAEABBACEIAkADQCAIIAJGDQEgACAIQSBsaiEGIAEgCEEgbGohByAHQajWAEHI1gAQLiAGQcjWACAHECsgByAKIAcQLiAGIAkgBhAuQcjWACAGIAYQKyAGIAogBhAuQajWACAEQajWABAuIAhBAWohCAwACwsLxAEJAX8BfwF/AX8BfwF/AX8BfwF/QQEgAnQhBCAEQQF2IQUgASACdiEDIAVBIGwhBkHINCACQSBsaiELQQAhCQJAA0AgCSADRg0BQejWABA2QQAhCgJAA0AgCiAFRg0BIAAgCSAEbCAKakEgbGohByAHIAZqIQggCEHo1gBBiNcAEC4gB0Go1wAQAEGo1wBBiNcAIAcQKkGo1wBBiNcAIAgQK0Ho1gAgC0Ho1gAQLiAKQQFqIQoMAAsLIAlBAWohCQwACwsLewQBfwF/AX8BfyABQQF2IQYgAUEBcQRAIAAgBkEgbGogAiAAIAZBIGxqEC4LQQAhBQJAA0AgBSAGTw0BIAAgBUEgbGohAyAAIAFBAWsgBWtBIGxqIQQgBCACQcjXABAuIAMgAiAEEC5ByNcAIAMQACAFQQFqIQUMAAsLC5gBBQF/AX8BfwF/AX9BiMMAIAVBIGxqIQlBqMoAIAVBIGxqIQogA0Ho1wAQAEEAIQgCQANAIAggAkYNASAAIAhBIGxqIQYgASAIQSBsaiEHIAYgCUGI2AAQLiAHQYjYAEGI2AAQKyAGIAcgBxArQYjYACAKIAYQLiAHQejXACAHEC5B6NcAIARB6NcAEC4gCEEBaiEIDAALCwsuAgF/AX8gACEDIAAgAUEgbGohAgJAA0AgAyACRg0BIAMQASADQSBqIQMMAAsLC44BBgF/AX8BfwF/AX8Bf0EAIQQgACEGIAEhBwJAA0AgBCACRg0BIAYoAgAhCSAGQQRqIQZBACEFAkADQCAFIAlGDQEgAyAGKAIAQSBsaiEIIAZBBGohBiAHIAZBqNgAEC5BqNgAIAggCBAqIAZBIGohBiAFQQFqIQUMAAsLIAdBIGohByAEQQFqIQQMAAsLC8gCCAF/AX8BfwF/AX8BfwF/AX8gAyELIAQhDCADIAdBIGxqIQ0CQANAIAsgDUYNASALEAEgDBABIAtBIGohCyAMQSBqIQwMAAsLIAAhCiAAIAFBLGxqIQ0CQANAIAogDUYNASAKKAIIIRAgECAISSAQIAggCWpPcgRAIApBLGohCgwBCyAKKAIAIQ4gDkEARgRAIAMhEQUgDkEBRgRAIAQhEQUgCkEsaiEKDAELCyAKKAIEIQ8gDyAGSSAPIAYgB2pPcgRAIApBLGohCgwBCyARIA8gBmtBIGxqIREgAiAQIAhrQSBsaiAKQQxqQcjYABAuIBFByNgAIBEQKiAKQSxqIQoMAAsLIAMhCyAEIQwgBSEKIAMgB0EgbGohDQJAA0AgCyANRg0BIAsgDCAKEC4gC0EgaiELIAxBIGohDCAKQSBqIQoMAAsLC2UFAX8BfwF/AX8BfyAAIQUgASEGIAIhByAEIQggACADQSBsaiEJAkADQCAFIAlGDQEgBSAGQejYABAuQejYACAHIAgQKyAFQSBqIQUgBkEgaiEGIAdBIGohByAIQSBqIQgMAAsLC0wEAX8BfwF/AX8gACEEIAEhBSADIQYgACACQSBsaiEHAkADQCAEIAdGDQEgBCAFIAYQKiAEQSBqIQQgBUEgaiEFIAZBIGohBgwACwsLDgAgABACIABBIGoQAnELDwAgABAPIABBIGoQAnEPCw0AIAAQASAAQSBqEAELDQAgABAcIABBIGoQAQsUACAAIAEQACAAQSBqIAFBIGoQAAt1ACAAIAFBiNkAEBQgAEEgaiABQSBqQajZABAUIAAgAEEgakHI2QAQECABIAFBIGpB6NkAEBBByNkAQejZAEHI2QAQFEGo2QAgAhASQYjZACACIAIQEEGI2QBBqNkAIAJBIGoQEEHI2QAgAkEgaiACQSBqEBELGAAgACABIAIQFCAAQSBqIAEgAkEgahAUC3AAIAAgAEEgakGI2gAQFCAAIABBIGpBqNoAEBAgAEEgakHI2gAQEiAAQcjaAEHI2gAQEEGI2gBB6NoAEBJB6NoAQYjaAEHo2gAQEEGo2gBByNoAIAEQFCABQejaACABEBFBiNoAQYjaACABQSBqEBALGwAgACABIAIQECAAQSBqIAFBIGogAkEgahAQCxsAIAAgASACEBEgAEEgaiABQSBqIAJBIGoQEQsUACAAIAEQEiAAQSBqIAFBIGoQEgsUACAAIAEQACAAQSBqIAFBIGoQEgsUACAAIAEQFyAAQSBqIAFBIGoQFwsUACAAIAEQGCAAQSBqIAFBIGoQGAsVACAAIAEQBCAAQSBqIAFBIGoQBHELXQAgAEGI2wAQFSAAQSBqQajbABAVQajbAEHI2wAQEkGI2wBByNsAQcjbABARQcjbAEHo2wAQGyAAQejbACABEBQgAEEgakHo2wAgAUEgahAUIAFBIGogAUEgahASCxwAIAAgASACIAMQHiAAQSBqIAEgAiADQSBqEB4LGgEBfyAAQSBqEBohASABBEAgAQ8LIAAQGg8LGQAgAEEgahACBEAgABAZDwsgAEEgahAZDwuPAgQBfwF/AX8Bf0EAKAIAIQVBACAFIAJBAWpBwABsajYCACAFEI0BIAAhBiAFQcAAaiEFQQAhCAJAA0AgCCACRg0BIAYQigEEQCAFQcAAayAFEI4BBSAGIAVBwABrIAUQjwELIAYgAWohBiAFQcAAaiEFIAhBAWohCAwACwsgBiABayEGIAVBwABrIQUgAyACQQFrIARsaiEHIAUgBRCZAQJAA0AgCEUNASAGEIoBBEAgBSAFQcAAaxCOASAHEIwBBSAFQcAAa0GI3AAQjgEgBSAGIAVBwABrEI8BIAVBiNwAIAcQjwELIAYgAWshBiAHIARrIQcgBUHAAGshBSAIQQFrIQgMAAsLQQAgBTYCAAvOAgIBfwF/IAJFBEAgAxCNAQ8LIABByNwAEI4BIAMQjQEgAiEEAkADQCAEQQFrIQQgASAEai0AACEFIAMgAxCRASAFQYABTwRAIAVBgAFrIQUgA0HI3AAgAxCPAQsgAyADEJEBIAVBwABPBEAgBUHAAGshBSADQcjcACADEI8BCyADIAMQkQEgBUEgTwRAIAVBIGshBSADQcjcACADEI8BCyADIAMQkQEgBUEQTwRAIAVBEGshBSADQcjcACADEI8BCyADIAMQkQEgBUEITwRAIAVBCGshBSADQcjcACADEI8BCyADIAMQkQEgBUEETwRAIAVBBGshBSADQcjcACADEI8BCyADIAMQkQEgBUECTwRAIAVBAmshBSADQcjcACADEI8BCyADIAMQkQEgBUEBTwRAIAVBAWshBSADQcjcACADEI8BCyAERQ0BDAALCwvNAQBBiN8AEI0BQYjfAEGI3wAQlAEgAEGI3QBBIEHI3QAQngFByN0AQYjeABCRASAAQYjeAEGI3gAQjwFBiN4AQcjeABCVAUHI3gBBiN4AQcjeABCPAUHI3gBBiN8AEJgBBEAAC0HI3QAgAEHI3wAQjwFBiN4AQYjfABCYAQRAQYjfABABQajfABAcQYjfAEHI3wAgARCPAQVBiOAAEI0BQYjgAEGI3gBBiOAAEJIBQYjgAEGo3QBBIEGI4AAQngFBiOAAQcjfACABEI8BCwtpAEGo4gAQjQFBqOIAQajiABCUASAAQcjgAEEgQejgABCeAUHo4ABBqOEAEJEBIABBqOEAQajhABCPAUGo4QBB6OEAEJUBQejhAEGo4QBB6OEAEI8BQejhAEGo4gAQmAEEQEEADwtBAQ8LEQAgABCKASAAQcAAahCKAXELCwAgAEGAAWoQigELEAAgABCMASAAQcAAahCMAQsZACAAEIwBIABBwABqEI0BIABBgAFqEIwBC6IBACABIAApAwA3AwAgASAAKQMINwMIIAEgACkDEDcDECABIAApAxg3AxggASAAKQMgNwMgIAEgACkDKDcDKCABIAApAzA3AzAgASAAKQM4NwM4IAEgACkDQDcDQCABIAApA0g3A0ggASAAKQNQNwNQIAEgACkDWDcDWCABIAApA2A3A2AgASAAKQNoNwNoIAEgACkDcDcDcCABIAApA3g3A3gLggIAIAEgACkDADcDACABIAApAwg3AwggASAAKQMQNwMQIAEgACkDGDcDGCABIAApAyA3AyAgASAAKQMoNwMoIAEgACkDMDcDMCABIAApAzg3AzggASAAKQNANwNAIAEgACkDSDcDSCABIAApA1A3A1AgASAAKQNYNwNYIAEgACkDYDcDYCABIAApA2g3A2ggASAAKQNwNwNwIAEgACkDeDcDeCABIAApA4ABNwOAASABIAApA4gBNwOI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IAEQjwEgAEHAAGogAUHAAGoQACAAQeAAaiABQeAAahASIAFBwABqQdCIBCABQcAAahCPASAAQYABaiABQYABahAAIABBoAFqIAFBoAFqEBIgAUGAAWpBkIkEIAFBgAFqEI8BIABBwAFqIAFBwAFqEAAgAEHgAWogAUHgAWoQEiABQcABakHQiQQgAUHAAWoQjwEgAEGAAmogAUGAAmoQACAAQaACaiABQaACahASIAFBgAJqQZCKBCABQYACahCPASAAQcACaiABQcACahAAIABB4AJqIAFB4AJqEBIgAUHAAmpB0IoEIAFBwAJqEI8BC2wAIABBkIsEIAEQjwEgAEHAAGpB0IsEIAFBwABqEI8BIABBgAFqQZCMBCABQYABahCPASAAQcABakHQjAQgAUHAAWoQjwEgAEGAAmpBkI0EIAFBgAJqEI8BIABBwAJqQdCNBCABQcACahCPAQuKAgAgACABEAAgAEEgaiABQSBqEBIgAUGQjgQgARCPASAAQcAAaiABQcAAahAAIABB4ABqIAFB4ABqEBIgAUHAAGpB0I4EIAFBwABqEI8BIABBgAFqIAFBgAFqEAAgAEGgAWogAUGgAWoQEiABQYABakGQjwQgAUGAAWoQjwEgAEHAAWogAUHAAWoQACAAQeABaiABQeABahASIAFBwAFqQdCPBCABQcABahCPASAAQYACaiABQYACahAAIABBoAJqIAFBoAJqEBIgAUGAAmpBkJAEIAFBgAJqEI8BIABBwAJqIAFBwAJqEAAgAEHgAmogAUHgAmoQEiABQcACakHQkAQgAUHAAmoQjwELbAAgAEGQkQQgARCPASAAQcAAakHQkQQgAUHAAGoQjwEgAEGAAWpBkJIEIAFBgAFqEI8BIABBwAFqQdCSBCABQcABahCPASAAQYACakGQkwQgAUGAAmoQjwEgAEHAAmpB0JMEIAFBwAJqEI8BC4oCACAAIAEQACAAQSBqIAFBIGoQEiABQZCUBCABEI8BIABBwABqIAFBwABqEAAgAEHgAGogAUHgAGoQEiABQcAAakHQlAQgAUHAAGoQjwEgAEGAAWogAUGAAWoQACAAQaABaiABQaABahASIAFBgAFqQZCVBCABQYABahCPASAAQcABaiABQcABahAAIABB4AFqIAFB4AFqEBIgAUHAAWpB0JUEIAFBwAFqEI8BIABBgAJqIAFBgAJqEAAgAEGgAmogAUGgAmoQEiABQYACakGQlgQgAUGAAmoQjwEgAEHAAmogAUHAAmoQACAAQeACaiABQeACahASIAFBwAJqQdCWBCABQcACahCPAQtsACAAQZCXBCABEI8BIABBwABqQdCXBCABQcAAahCPASAAQYABakGQmAQgAUGAAWoQjwEgAEHAAWpB0JgEIAFBwAFqEI8BIABBgAJqQZCZBCABQYACahCPASAAQcACakHQmQQgAUHAAmoQjwELigIAIAAgARAAIABBIGogAUEgahASIAFBkJoEIAEQjwEgAEHAAGogAUHAAGoQACAAQeAAaiABQeAAahASIAFBwABqQdCaBCABQcAAahCPASAAQYABaiABQYABahAAIABBoAFqIAFBoAFqEBIgAUGAAWpBkJsEIAFBgAFqEI8BIABBwAFqIAFBwAFqEAAgAEHgAWogAUHgAWoQEiABQcABakHQmwQgAUHAAWoQjwEgAEGAAmogAUGAAmoQACAAQaACaiABQaACahASIAFBgAJqQZCcBCABQYACahCPASAAQcACaiABQcACahAAIABB4AJqIAFB4AJqEBIgAUHAAmpB0JwEIAFBwAJqEI8BC2wAIABBkJ0EIAEQjwEgAEHAAGpB0J0EIAFBwABqEI8BIABBgAFqQZCeBCABQYABahCPASAAQcABakHQngQgAUHAAWoQjwEgAEGAAmpBkJ8EIAFBgAJqEI8BIABBwAJqQdCfBCABQcACahCPAQuKAgAgACABEAAgAEEgaiABQSBqEBIgAUGQoAQgARCPASAAQcAAaiABQcAAahAAIABB4ABqIAFB4ABqEBIgAUHAAGpB0KAEIAFBwABqEI8BIABBgAFqIAFBgAFqEAAgAEGgAWogAUGgAWoQEiABQYABakGQoQQgAUGAAWoQjwEgAEHAAWogAUHAAWoQACAAQeABaiABQeABahASIAFBwAFqQdChBCABQcABahCPASAAQYACaiABQYACahAAIABBoAJqIAFBoAJqEBIgAUGAAmpBkKIEIAFBgAJqEI8BIABBwAJqIAFBwAJqEAAgAEHgAmogAUHgAmoQEiABQcACakHQogQgAUHAAmoQjwELEAAgAEGQowRB4AIgARCeAgtIACAAQfClBBD6ASAAQcABakGwpwQQ/wEgAEHwqAQQmQJB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";
+export const pq = 488;
+export const pr = 1768;
+export const pG1gen = 32008;
+export const pG1zero = 32104;
+export const pG1b = 3080;
+export const pG2gen = 32200;
+export const pG2zero = 32392;
+export const pG2b = 12648;
+export const pOneT = 32584;
+export const prePSize = 192;
+export const preQSize = 19776;
+export const n8q = 32;
+export const n8r = 32;
+export const q = "21888242871839275222246405745257275088696311157297823662689037894645226208583";
+export const r = "21888242871839275222246405745257275088548364400416034343698204186575808495617";
diff --git a/build/bn128_wasm_gzip.js b/build/bn128_wasm_gzip.js
new file mode 100644
index 0000000..5a96a16
--- /dev/null
+++ b/build/bn128_wasm_gzip.js
@@ -0,0 +1,16 @@
+export const gzipCode = "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Hi13TLzsPDqgTv3pkemPtI1der7za2vnLZKXrovZdrXLjagzhVuG9f4sbn3kqPmr0y/erPbN77dss/NjZzeaOfztUyuOPj5mVJ+5j/YbcGJQYYVxz0RWrPDt2fFLv87vtaTTJyuHRte3nI1otPbbb97rmfTi4vJlf3qwdwKizq+RmiOhnLTtZFm341pep3118wcVmO2tnKmOPq6khU8dumfzyKvKxIc/q7Si58/x8x4/0HDD0D8tM9rtqflu/zPJi589cv+WMX9J45vtSFn+4snYOY/tr78u60LktDa7qr+T8VuZ17oebvrhS9eNk1v+u8rKXr+UeuWJg403Db8cNavDl7Xfz/yj/JLnf3xw69hbeBz9xPZG9xMxsx/9ut7awecjprb+otrbfX8t/erT39/7wahrhkktPq/8VvqphPldvm20cdgl68z2e2u9N+BsudefO/rAxy/flCc0/7Timz1+ipvb+ZsG64dcVKe33V1jdb/fyy565of7Php9wzTlkZ1VV/U+nbjgye+a/GvElejcjl/VWTPwXIWlLxx7aFt2IfuqIJU8WuShjAPYinEOdLxY0lwnkZrmkDaP+Omea/c917lB46plVanbY8NaF5z9V5UBjonN6/87vnLvwiNf7zlz+p4HrV/OfXl9Qfo76N2Uo/taf9d+Zp82X35AMaKO+bhYBxELi8e2CJccWJQcWJQcWPzTDyyWF2eelpxYhPspeWQP+1NiftifYp5YvINLTixKTixKTiz+6ScWa3HJiUXJiUXJicU//cRiMy45sShE8AF3Jc/pJc/pJc/p//Tn9D0lz+n/K57UwvyUmB/257/BfPgM1JLn9JLn9JLn9H/6c/oPJc/pJc/pJc/p//jn9JMlz+kssuA6VrsVldLStGz56WWnfLhydKlZvz968Hz8UzMuFPzY8uie57dGN5xwLj656JQYFzRTxI0OKlJMUT/UeQOr23EVskX6euOEWVl4dOtGpX8/cqzMuAWPVNl8475Or6yh9zxZOq17O8fLQzas+eyQ9FTXo827Ta6z7LG/Ov0a0W/0b00nFNyKv/xrP/vr11/vPnLRkksL9mffuvVy2YovlllSaGy25P3fx95M/eOJpJ1PPBPR86P7X66fcu3JI8O1Rg22NrrWZXzPm3N/WbbC+vftsN8EO4rk+5/259/9oc5bWM2R/+N6/F//gcRsNe1KtpV++Yjxcsy+st+0H/hAna//nXbv2AbNqz258KdVroXzyxU9i+3jJTUty2DsuP/01imnMpLrHK1+c9/DfmcBxdAGxPz9wCLne9JdmCT/8R/4AMf/CjucO/477LDvk1TKnvsxgpgz+ENIBzDmOCTwiAOCgtxcCD7sT02ru7pHC+2+ERsf7/nO287Z2Q1nR9SuVHUweulM/PiYQ1ueKP3kI+8sK790YiadfXXqgNHJ7zTddfz63rjTmz79fXyHjzr2rYLgkwHVtGqbGlezHP3o590fNjjx4vm6H/Xq3PPapq/frnf0Knpr66BGlXeOuPXCz2O+e+OHr6uMjLm5xtTvyNiPqn5casCeWz9OksiUmuzDtdS0v78z7bs7YvIm3x1t7o6YvCl3R5u7IybPfne0ATF/f/jlTVXUtDlbm07M/q77kBsxDat+U+Ojt16t+GDbehXmLT7zzdKPji4+ltD6i0NtE24efa7bMw+veKva7hc/2P+yJXLKliY3CwbXez1yQiUEH2mmpplaxzd4ZeWiNdP+tWbKkHL9dk0h0wqeP/txzJimFcoMa39RyqrVul3F91OWP3PiuSdWSNH7qnxxrPPyi3WOPDp/6vpST67SEHzU2d2YDPtAzOnovrRO30FfqG37VrU1TDvpevqzCf1+2Vqf2vMjz255J/btbe+nVXyulfXJPXVWJzUsbbiktZ6mrsj/puuc/Y02/m6rwz437a70FIhZrLriZjk7Nfjgied/GNPly5fbPJGwafMG3O14oiQl/jK+SjHGzQxFTetyYvx3MZa5gys22Fo4Zt5HKx+OH3rg4QZ132ne+ukq1ofuq1kMbUDMhbLXkSFn5q6+C9b3iT/4eUHSw9b3BseSqF+eOPRhenS1oo5UQZuZippWZLZ50dqAmNXn531m//Qr84EhcTPjE9aXjpP6776Z1+Gp1vY6x57pcyKiGNrMujs9BWLe6/deqSspa75Y9+LKNtVHxqz/c2erkz3X/FF6/NLmP414sCp5d+6XV7qlbn+3Xb9Vo8d92+De3hP7Pzw96Ze+XfYkPjxAbhmJ4FPp1LRjL/Ye/dbcaQ8f++1m6qVaB7e9dGBR1L5LTx166szwhu0fyDd+3fiLLX8eLl1jabU/n3ipw1tvnH//x67H/2iwcd2yoxNrjLMkIvi0OjXt5e9bdkgq1bnx0gFfHFgSeyVyY4S2q86q19MrWpdPmDogxnxv6cWfXmlzbG32tiHTpkhLHzgeuWbGHJKyaOXjBecSWvSBGZ6nqGnlH2m5JnJNzyc/iX5wSu1RnY5cVsrZC4es/H9r81luYLPlrh53Q2tdhRG/56yNP7w+1Ode7P9UzXSsr8PSO3ZhUHSB3l1mBtDpdtwO80PPlyp573nA/yzkoOtOi0NxtbMmLW2ybKhb/OS7Lus50eUzzffvfa+hW8x+TcqmjnN2dLDXemFH3RnJCayPJ3Y+VAEfiUeVmJpIlcwwYRJVsuYF6hgzYTJ1wmYydcJmCnVcAzJm4+MXIWq7pH4KnZt0R/90obvp/e4/D7I23nnSPffs1IVe6t3yjRLrAv7E9MxwPm3csslbMmnrYeH4y/5WHSf093pKGjCADhzkdrh2+9aNjwomLZvO2kucFPhg6JmwXH2rQbLzk/tSH91LrgiX/Apfoezg+V5KYPVVpthJWgL6y2Y3iW5oXrxOmEdW0FKVAXQQIbdD2QQj6ab87W0i2yR9tb92O+i+bL15Yef94OWXmjJFFORYj78OKr8yZw+/yj1Rk8f/+3N3Op63+KDzaV/I/jSb/28PiDKADiikSj0FMmaHa5rJ54fe4iyzX89Uaf1xv1T5Gp/VnCpfW2mTtw4eysyu11nDN8oxxqxklbixZUuh7pFZTcv2PTpTY5SX0uf/RlkNfNohVWKKOsZMmEEd18ygSgUzYSZ16inqGDNhFnXCZhZ12n6zqdP2AxnjsCVjacPTlh4m4UMPZH3Fzl41/z4hPGLSsrWpQsf/MhTqXj1v3PP57t+Zhi+Fhd6mFx0361+oKxKkcOc61wrdmO975BlAZ09SpZ4CGZPwVnj6c6UNRY31HI4FZo5bS/7t+esVP7H1hXjjtdaJO2Xn2Z6b/lnvhp7ZP8e9FWYZkzLcLb6vWjj/yTne+NV7k5wYwQdZUiWm5lKnZphHnbYfdYyZMJ86YTOfOmGzgDquWUCdtt9C6rT9QMacUjbr+ld6lvVdzIrJn8K7elb4FW5vm7cpiG1yf+zLB0EafE8eiMg7Onbxcv+7y5nxKLLW99IXZVU92WZvx48xnH84GUDHilKlngIZs2L52qQvDinRtU9klntv9Lj679azdwKHxSxW//F56eI5TWpBsqtk5JzvfFKHZ/uGvin/w8hqfmkRi7LCMXudfw+ONHGDzyjlfsCk8LHtVIr3tLYlyq5Pt79f4rDb68W0ipX1zRI7N+3cxiRodmtS2Od7jfcOJBw/vOzFcZZ99bsLrp78mXbdUSKs2Xe6waHFmfsOZ4jtip6SFCRwRNCiXmb53Vu173ZpMqyMFem1btyvM8ve6f4u6ZS4M69cXm3hXlHz+K+IR1rq2UsTmSJ2pjB73f2gxrHx/uR3Ku6BR3tvO2W3mvNzO58X2C3m1JDv4Ofp8HvV5zXsD8+Htq97/aDhTYfCAvPFghfsslqmBlrJeUUt8RDjO3o/wzXt6esjPD6ajlmrbx3PuMR07UJT1xGbt7NcMtL+xDJu4j+bFHBx892NKxw06z1SlLSstn0tX+f8JFG44sO/E8eudvC1l/9clZ0uvyyFuXLxvbXn9J63RxRIz1qQ/LRceNPhG9Lv3ofwfL+hcjXq4mG7WCuLTWkhH28d+DdldzHX44ePqu3jGQtlsv5vzEze76zbskehVuD+rb8KBSdzvfXBSfnDVhZue9Dg1X8G6DgXZJkLI8N/yKgXZNELiPsfKgSl/sOUMwIAadaEBs5dAQA=";
+export const pq = 488;
+export const pr = 1768;
+export const pG1gen = 32008;
+export const pG1zero = 32104;
+export const pG1b = 3080;
+export const pG2gen = 32200;
+export const pG2zero = 32392;
+export const pG2b = 12648;
+export const pOneT = 32584;
+export const prePSize = 192;
+export const preQSize = 19776;
+export const n8q = 32;
+export const n8r = 32;
+export const q = "21888242871839275222246405745257275088696311157297823662689037894645226208583";
+export const r = "21888242871839275222246405745257275088548364400416034343698204186575808495617";
diff --git a/build/main.cjs b/build/main.cjs
new file mode 100644
index 0000000..bc24e42
--- /dev/null
+++ b/build/main.cjs
@@ -0,0 +1,3961 @@
+Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
+//#region src/utils.js
+function bigInt2BytesLE(_a, len) {
+ const b = Array(len);
+ let v = BigInt(_a);
+ for (let i = 0; i < len; i++) {
+ b[i] = Number(v & 255n);
+ v = v >> 8n;
+ }
+ return b;
+}
+//#endregion
+//#region src/build_int.js
+function buildInt(module, n64, _prefix) {
+ const prefix = _prefix || "int";
+ if (module.modules[prefix]) return prefix;
+ module.modules[prefix] = {};
+ const n32 = n64 * 2;
+ const n8 = n64 * 8;
+ function buildCopy() {
+ const f = module.addFunction(prefix + "_copy");
+ f.addParam("px", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ for (let i = 0; i < n64; i++) f.addCode(c.i64_store(c.getLocal("pr"), i * 8, c.i64_load(c.getLocal("px"), i * 8)));
+ }
+ function buildZero() {
+ const f = module.addFunction(prefix + "_zero");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ for (let i = 0; i < n64; i++) f.addCode(c.i64_store(c.getLocal("pr"), i * 8, c.i64_const(0)));
+ }
+ function buildOne() {
+ const f = module.addFunction(prefix + "_one");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.i64_store(c.getLocal("pr"), 0, c.i64_const(1)));
+ for (let i = 1; i < n64; i++) f.addCode(c.i64_store(c.getLocal("pr"), i * 8, c.i64_const(0)));
+ }
+ function buildIsZero() {
+ const f = module.addFunction(prefix + "_isZero");
+ f.addParam("px", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ function getCompCode(n) {
+ if (n == 0) return c.ret(c.i64_eqz(c.i64_load(c.getLocal("px"))));
+ return c.if(c.i64_eqz(c.i64_load(c.getLocal("px"), n * 8)), getCompCode(n - 1), c.ret(c.i32_const(0)));
+ }
+ f.addCode(getCompCode(n64 - 1));
+ f.addCode(c.ret(c.i32_const(0)));
+ }
+ function buildEq() {
+ const f = module.addFunction(prefix + "_eq");
+ f.addParam("px", "i32");
+ f.addParam("py", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ function getCompCode(n) {
+ if (n == 0) return c.ret(c.i64_eq(c.i64_load(c.getLocal("px")), c.i64_load(c.getLocal("py"))));
+ return c.if(c.i64_eq(c.i64_load(c.getLocal("px"), n * 8), c.i64_load(c.getLocal("py"), n * 8)), getCompCode(n - 1), c.ret(c.i32_const(0)));
+ }
+ f.addCode(getCompCode(n64 - 1));
+ f.addCode(c.ret(c.i32_const(0)));
+ }
+ function buildGte() {
+ const f = module.addFunction(prefix + "_gte");
+ f.addParam("px", "i32");
+ f.addParam("py", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ function getCompCode(n) {
+ if (n == 0) return c.ret(c.i64_ge_u(c.i64_load(c.getLocal("px")), c.i64_load(c.getLocal("py"))));
+ return c.if(c.i64_lt_u(c.i64_load(c.getLocal("px"), n * 8), c.i64_load(c.getLocal("py"), n * 8)), c.ret(c.i32_const(0)), c.if(c.i64_gt_u(c.i64_load(c.getLocal("px"), n * 8), c.i64_load(c.getLocal("py"), n * 8)), c.ret(c.i32_const(1)), getCompCode(n - 1)));
+ }
+ f.addCode(getCompCode(n64 - 1));
+ f.addCode(c.ret(c.i32_const(0)));
+ }
+ function buildAdd() {
+ const f = module.addFunction(prefix + "_add");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ f.setReturnType("i32");
+ f.addLocal("c", "i64");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("c", c.i64_add(c.i64_load32_u(c.getLocal("x")), c.i64_load32_u(c.getLocal("y")))));
+ f.addCode(c.i64_store32(c.getLocal("r"), c.getLocal("c")));
+ for (let i = 1; i < n32; i++) {
+ f.addCode(c.setLocal("c", c.i64_add(c.i64_add(c.i64_load32_u(c.getLocal("x"), 4 * i), c.i64_load32_u(c.getLocal("y"), 4 * i)), c.i64_shr_u(c.getLocal("c"), c.i64_const(32)))));
+ f.addCode(c.i64_store32(c.getLocal("r"), i * 4, c.getLocal("c")));
+ }
+ f.addCode(c.i32_wrap_i64(c.i64_shr_u(c.getLocal("c"), c.i64_const(32))));
+ }
+ function buildSub() {
+ const f = module.addFunction(prefix + "_sub");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ f.setReturnType("i32");
+ f.addLocal("c", "i64");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("c", c.i64_sub(c.i64_load32_u(c.getLocal("x")), c.i64_load32_u(c.getLocal("y")))));
+ f.addCode(c.i64_store32(c.getLocal("r"), c.i64_and(c.getLocal("c"), c.i64_const("0xFFFFFFFF"))));
+ for (let i = 1; i < n32; i++) {
+ f.addCode(c.setLocal("c", c.i64_add(c.i64_sub(c.i64_load32_u(c.getLocal("x"), 4 * i), c.i64_load32_u(c.getLocal("y"), 4 * i)), c.i64_shr_s(c.getLocal("c"), c.i64_const(32)))));
+ f.addCode(c.i64_store32(c.getLocal("r"), i * 4, c.i64_and(c.getLocal("c"), c.i64_const("0xFFFFFFFF"))));
+ }
+ f.addCode(c.i32_wrap_i64(c.i64_shr_s(c.getLocal("c"), c.i64_const(32))));
+ }
+ function buildMul() {
+ const f = module.addFunction(prefix + "_mul");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("c0", "i64");
+ f.addLocal("c1", "i64");
+ for (let i = 0; i < n32; i++) {
+ f.addLocal("x" + i, "i64");
+ f.addLocal("y" + i, "i64");
+ }
+ const c = f.getCodeBuilder();
+ const loadX = [];
+ const loadY = [];
+ function mulij(i, j) {
+ let X, Y;
+ if (!loadX[i]) {
+ X = c.teeLocal("x" + i, c.i64_load32_u(c.getLocal("x"), i * 4));
+ loadX[i] = true;
+ } else X = c.getLocal("x" + i);
+ if (!loadY[j]) {
+ Y = c.teeLocal("y" + j, c.i64_load32_u(c.getLocal("y"), j * 4));
+ loadY[j] = true;
+ } else Y = c.getLocal("y" + j);
+ return c.i64_mul(X, Y);
+ }
+ let c0 = "c0";
+ let c1 = "c1";
+ for (let k = 0; k < n32 * 2 - 1; k++) {
+ for (let i = Math.max(0, k - n32 + 1); i <= k && i < n32; i++) {
+ const j = k - i;
+ f.addCode(c.setLocal(c0, c.i64_add(c.i64_and(c.getLocal(c0), c.i64_const(4294967295)), mulij(i, j))));
+ f.addCode(c.setLocal(c1, c.i64_add(c.getLocal(c1), c.i64_shr_u(c.getLocal(c0), c.i64_const(32)))));
+ }
+ f.addCode(c.i64_store32(c.getLocal("r"), k * 4, c.getLocal(c0)));
+ [c0, c1] = [c1, c0];
+ f.addCode(c.setLocal(c1, c.i64_shr_u(c.getLocal(c0), c.i64_const(32))));
+ }
+ f.addCode(c.i64_store32(c.getLocal("r"), n32 * 4 * 2 - 4, c.getLocal(c0)));
+ }
+ function buildSquare() {
+ const f = module.addFunction(prefix + "_square");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("c0", "i64");
+ f.addLocal("c1", "i64");
+ f.addLocal("c0_old", "i64");
+ f.addLocal("c1_old", "i64");
+ for (let i = 0; i < n32; i++) f.addLocal("x" + i, "i64");
+ const c = f.getCodeBuilder();
+ const loadX = [];
+ function mulij(i, j) {
+ let X, Y;
+ if (!loadX[i]) {
+ X = c.teeLocal("x" + i, c.i64_load32_u(c.getLocal("x"), i * 4));
+ loadX[i] = true;
+ } else X = c.getLocal("x" + i);
+ if (!loadX[j]) {
+ Y = c.teeLocal("x" + j, c.i64_load32_u(c.getLocal("x"), j * 4));
+ loadX[j] = true;
+ } else Y = c.getLocal("x" + j);
+ return c.i64_mul(X, Y);
+ }
+ let c0 = "c0";
+ let c1 = "c1";
+ let c0_old = "c0_old";
+ let c1_old = "c1_old";
+ for (let k = 0; k < n32 * 2 - 1; k++) {
+ f.addCode(c.setLocal(c0, c.i64_const(0)), c.setLocal(c1, c.i64_const(0)));
+ for (let i = Math.max(0, k - n32 + 1); i < k + 1 >> 1 && i < n32; i++) {
+ const j = k - i;
+ f.addCode(c.setLocal(c0, c.i64_add(c.i64_and(c.getLocal(c0), c.i64_const(4294967295)), mulij(i, j))));
+ f.addCode(c.setLocal(c1, c.i64_add(c.getLocal(c1), c.i64_shr_u(c.getLocal(c0), c.i64_const(32)))));
+ }
+ f.addCode(c.setLocal(c0, c.i64_shl(c.i64_and(c.getLocal(c0), c.i64_const(4294967295)), c.i64_const(1))));
+ f.addCode(c.setLocal(c1, c.i64_add(c.i64_shl(c.getLocal(c1), c.i64_const(1)), c.i64_shr_u(c.getLocal(c0), c.i64_const(32)))));
+ if (k % 2 == 0) {
+ f.addCode(c.setLocal(c0, c.i64_add(c.i64_and(c.getLocal(c0), c.i64_const(4294967295)), mulij(k >> 1, k >> 1))));
+ f.addCode(c.setLocal(c1, c.i64_add(c.getLocal(c1), c.i64_shr_u(c.getLocal(c0), c.i64_const(32)))));
+ }
+ if (k > 0) {
+ f.addCode(c.setLocal(c0, c.i64_add(c.i64_and(c.getLocal(c0), c.i64_const(4294967295)), c.i64_and(c.getLocal(c0_old), c.i64_const(4294967295)))));
+ f.addCode(c.setLocal(c1, c.i64_add(c.i64_add(c.getLocal(c1), c.i64_shr_u(c.getLocal(c0), c.i64_const(32))), c.getLocal(c1_old))));
+ }
+ f.addCode(c.i64_store32(c.getLocal("r"), k * 4, c.getLocal(c0)));
+ f.addCode(c.setLocal(c0_old, c.getLocal(c1)), c.setLocal(c1_old, c.i64_shr_u(c.getLocal(c0_old), c.i64_const(32))));
+ }
+ f.addCode(c.i64_store32(c.getLocal("r"), n32 * 4 * 2 - 4, c.getLocal(c0_old)));
+ }
+ function buildSquareOld() {
+ const f = module.addFunction(prefix + "_squareOld");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefix + "_mul", c.getLocal("x"), c.getLocal("x"), c.getLocal("r")));
+ }
+ function _buildMul1() {
+ const f = module.addFunction(prefix + "__mul1");
+ f.addParam("px", "i32");
+ f.addParam("y", "i64");
+ f.addParam("pr", "i32");
+ f.addLocal("c", "i64");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("c", c.i64_mul(c.i64_load32_u(c.getLocal("px"), 0, 0), c.getLocal("y"))));
+ f.addCode(c.i64_store32(c.getLocal("pr"), 0, 0, c.getLocal("c")));
+ for (let i = 1; i < n32; i++) {
+ f.addCode(c.setLocal("c", c.i64_add(c.i64_mul(c.i64_load32_u(c.getLocal("px"), 4 * i, 0), c.getLocal("y")), c.i64_shr_u(c.getLocal("c"), c.i64_const(32)))));
+ f.addCode(c.i64_store32(c.getLocal("pr"), i * 4, 0, c.getLocal("c")));
+ }
+ }
+ function _buildAdd1() {
+ const f = module.addFunction(prefix + "__add1");
+ f.addParam("x", "i32");
+ f.addParam("y", "i64");
+ f.addLocal("c", "i64");
+ f.addLocal("px", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("px", c.getLocal("x")));
+ f.addCode(c.setLocal("c", c.i64_add(c.i64_load32_u(c.getLocal("px"), 0, 0), c.getLocal("y"))));
+ f.addCode(c.i64_store32(c.getLocal("px"), 0, 0, c.getLocal("c")));
+ f.addCode(c.setLocal("c", c.i64_shr_u(c.getLocal("c"), c.i64_const(32))));
+ f.addCode(c.block(c.loop(c.br_if(1, c.i64_eqz(c.getLocal("c"))), c.setLocal("px", c.i32_add(c.getLocal("px"), c.i32_const(4))), c.setLocal("c", c.i64_add(c.i64_load32_u(c.getLocal("px"), 0, 0), c.getLocal("c"))), c.i64_store32(c.getLocal("px"), 0, 0, c.getLocal("c")), c.setLocal("c", c.i64_shr_u(c.getLocal("c"), c.i64_const(32))), c.br(0))));
+ }
+ function buildDiv() {
+ _buildMul1();
+ _buildAdd1();
+ const f = module.addFunction(prefix + "_div");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("c", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("rr", "i32");
+ f.addLocal("cc", "i32");
+ f.addLocal("eX", "i32");
+ f.addLocal("eY", "i32");
+ f.addLocal("sy", "i64");
+ f.addLocal("sx", "i64");
+ f.addLocal("ec", "i32");
+ const c = f.getCodeBuilder();
+ const Y = c.i32_const(module.alloc(n8));
+ const Caux = c.i32_const(module.alloc(n8));
+ const Raux = c.i32_const(module.alloc(n8));
+ const C = c.getLocal("cc");
+ const R = c.getLocal("rr");
+ const pr1 = module.alloc(n8 * 2);
+ const R1 = c.i32_const(pr1);
+ const R2 = c.i32_const(pr1 + n8);
+ f.addCode(c.if(c.getLocal("c"), c.setLocal("cc", c.getLocal("c")), c.setLocal("cc", Caux)));
+ f.addCode(c.if(c.getLocal("r"), c.setLocal("rr", c.getLocal("r")), c.setLocal("rr", Raux)));
+ f.addCode(c.call(prefix + "_copy", c.getLocal("x"), R));
+ f.addCode(c.call(prefix + "_copy", c.getLocal("y"), Y));
+ f.addCode(c.call(prefix + "_zero", C));
+ f.addCode(c.call(prefix + "_zero", R1));
+ f.addCode(c.setLocal("eX", c.i32_const(n8 - 1)));
+ f.addCode(c.setLocal("eY", c.i32_const(n8 - 1)));
+ f.addCode(c.block(c.loop(c.br_if(1, c.i32_or(c.i32_load8_u(c.i32_add(Y, c.getLocal("eY")), 0, 0), c.i32_eq(c.getLocal("eY"), c.i32_const(3)))), c.setLocal("eY", c.i32_sub(c.getLocal("eY"), c.i32_const(1))), c.br(0))));
+ f.addCode(c.setLocal("sy", c.i64_add(c.i64_load32_u(c.i32_sub(c.i32_add(Y, c.getLocal("eY")), c.i32_const(3)), 0, 0), c.i64_const(1))));
+ f.addCode(c.if(c.i64_eq(c.getLocal("sy"), c.i64_const(1)), c.drop(c.i64_div_u(c.i64_const(0), c.i64_const(0)))));
+ f.addCode(c.block(c.loop(c.block(c.loop(c.br_if(1, c.i32_or(c.i32_load8_u(c.i32_add(R, c.getLocal("eX")), 0, 0), c.i32_eq(c.getLocal("eX"), c.i32_const(7)))), c.setLocal("eX", c.i32_sub(c.getLocal("eX"), c.i32_const(1))), c.br(0))), c.setLocal("sx", c.i64_load(c.i32_sub(c.i32_add(R, c.getLocal("eX")), c.i32_const(7)), 0, 0)), c.setLocal("sx", c.i64_div_u(c.getLocal("sx"), c.getLocal("sy"))), c.setLocal("ec", c.i32_sub(c.i32_sub(c.getLocal("eX"), c.getLocal("eY")), c.i32_const(4))), c.block(c.loop(c.br_if(1, c.i32_and(c.i64_eqz(c.i64_and(c.getLocal("sx"), c.i64_const("0xFFFFFFFF00000000"))), c.i32_ge_s(c.getLocal("ec"), c.i32_const(0)))), c.setLocal("sx", c.i64_shr_u(c.getLocal("sx"), c.i64_const(8))), c.setLocal("ec", c.i32_add(c.getLocal("ec"), c.i32_const(1))), c.br(0))), c.if(c.i64_eqz(c.getLocal("sx")), [
+ ...c.br_if(2, c.i32_eqz(c.call(prefix + "_gte", R, Y))),
+ ...c.setLocal("sx", c.i64_const(1)),
+ ...c.setLocal("ec", c.i32_const(0))
+ ]), c.call(prefix + "__mul1", Y, c.getLocal("sx"), R2), c.drop(c.call(prefix + "_sub", R, c.i32_sub(R2, c.getLocal("ec")), R)), c.call(prefix + "__add1", c.i32_add(C, c.getLocal("ec")), c.getLocal("sx")), c.br(0))));
+ }
+ function buildInverseMod() {
+ const f = module.addFunction(prefix + "_inverseMod");
+ f.addParam("px", "i32");
+ f.addParam("pm", "i32");
+ f.addParam("pr", "i32");
+ f.addLocal("t", "i32");
+ f.addLocal("newt", "i32");
+ f.addLocal("r", "i32");
+ f.addLocal("qq", "i32");
+ f.addLocal("qr", "i32");
+ f.addLocal("newr", "i32");
+ f.addLocal("swp", "i32");
+ f.addLocal("x", "i32");
+ f.addLocal("signt", "i32");
+ f.addLocal("signnewt", "i32");
+ f.addLocal("signx", "i32");
+ const c = f.getCodeBuilder();
+ const aux1 = c.i32_const(module.alloc(n8));
+ const aux2 = c.i32_const(module.alloc(n8));
+ const aux3 = c.i32_const(module.alloc(n8));
+ const aux4 = c.i32_const(module.alloc(n8));
+ const aux5 = c.i32_const(module.alloc(n8));
+ const aux6 = c.i32_const(module.alloc(n8));
+ const mulBuff = c.i32_const(module.alloc(n8 * 2));
+ const aux7 = c.i32_const(module.alloc(n8));
+ f.addCode(c.setLocal("t", aux1), c.call(prefix + "_zero", aux1), c.setLocal("signt", c.i32_const(0)));
+ f.addCode(c.setLocal("r", aux2), c.call(prefix + "_copy", c.getLocal("pm"), aux2));
+ f.addCode(c.setLocal("newt", aux3), c.call(prefix + "_one", aux3), c.setLocal("signnewt", c.i32_const(0)));
+ f.addCode(c.setLocal("newr", aux4), c.call(prefix + "_copy", c.getLocal("px"), aux4));
+ f.addCode(c.setLocal("qq", aux5));
+ f.addCode(c.setLocal("qr", aux6));
+ f.addCode(c.setLocal("x", aux7));
+ f.addCode(c.block(c.loop(c.br_if(1, c.call(prefix + "_isZero", c.getLocal("newr"))), c.call(prefix + "_div", c.getLocal("r"), c.getLocal("newr"), c.getLocal("qq"), c.getLocal("qr")), c.call(prefix + "_mul", c.getLocal("qq"), c.getLocal("newt"), mulBuff), c.if(c.getLocal("signt"), c.if(c.getLocal("signnewt"), c.if(c.call(prefix + "_gte", mulBuff, c.getLocal("t")), [...c.drop(c.call(prefix + "_sub", mulBuff, c.getLocal("t"), c.getLocal("x"))), ...c.setLocal("signx", c.i32_const(0))], [...c.drop(c.call(prefix + "_sub", c.getLocal("t"), mulBuff, c.getLocal("x"))), ...c.setLocal("signx", c.i32_const(1))]), [...c.drop(c.call(prefix + "_add", mulBuff, c.getLocal("t"), c.getLocal("x"))), ...c.setLocal("signx", c.i32_const(1))]), c.if(c.getLocal("signnewt"), [...c.drop(c.call(prefix + "_add", mulBuff, c.getLocal("t"), c.getLocal("x"))), ...c.setLocal("signx", c.i32_const(0))], c.if(c.call(prefix + "_gte", c.getLocal("t"), mulBuff), [...c.drop(c.call(prefix + "_sub", c.getLocal("t"), mulBuff, c.getLocal("x"))), ...c.setLocal("signx", c.i32_const(0))], [...c.drop(c.call(prefix + "_sub", mulBuff, c.getLocal("t"), c.getLocal("x"))), ...c.setLocal("signx", c.i32_const(1))]))), c.setLocal("swp", c.getLocal("t")), c.setLocal("t", c.getLocal("newt")), c.setLocal("newt", c.getLocal("x")), c.setLocal("x", c.getLocal("swp")), c.setLocal("signt", c.getLocal("signnewt")), c.setLocal("signnewt", c.getLocal("signx")), c.setLocal("swp", c.getLocal("r")), c.setLocal("r", c.getLocal("newr")), c.setLocal("newr", c.getLocal("qr")), c.setLocal("qr", c.getLocal("swp")), c.br(0))));
+ f.addCode(c.if(c.getLocal("signt"), c.drop(c.call(prefix + "_sub", c.getLocal("pm"), c.getLocal("t"), c.getLocal("pr"))), c.call(prefix + "_copy", c.getLocal("t"), c.getLocal("pr"))));
+ }
+ buildCopy();
+ buildZero();
+ buildIsZero();
+ buildOne();
+ buildEq();
+ buildGte();
+ buildAdd();
+ buildSub();
+ buildMul();
+ buildSquare();
+ buildSquareOld();
+ buildDiv();
+ buildInverseMod();
+ module.exportFunction(prefix + "_copy");
+ module.exportFunction(prefix + "_zero");
+ module.exportFunction(prefix + "_one");
+ module.exportFunction(prefix + "_isZero");
+ module.exportFunction(prefix + "_eq");
+ module.exportFunction(prefix + "_gte");
+ module.exportFunction(prefix + "_add");
+ module.exportFunction(prefix + "_sub");
+ module.exportFunction(prefix + "_mul");
+ module.exportFunction(prefix + "_square");
+ module.exportFunction(prefix + "_squareOld");
+ module.exportFunction(prefix + "_div");
+ module.exportFunction(prefix + "_inverseMod");
+ return prefix;
+}
+//#endregion
+//#region src/build_timesscalar.js
+function buildTimesScalar(module, fnName, elementLen, opAB, opAA, opCopy, opInit) {
+ const f = module.addFunction(fnName);
+ f.addParam("base", "i32");
+ f.addParam("scalar", "i32");
+ f.addParam("scalarLength", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("b", "i32");
+ const c = f.getCodeBuilder();
+ const aux = c.i32_const(module.alloc(elementLen));
+ f.addCode(c.if(c.i32_eqz(c.getLocal("scalarLength")), [...c.call(opInit, c.getLocal("r")), ...c.ret([])]));
+ f.addCode(c.call(opCopy, c.getLocal("base"), aux));
+ f.addCode(c.call(opInit, c.getLocal("r")));
+ f.addCode(c.setLocal("i", c.getLocal("scalarLength")));
+ f.addCode(c.block(c.loop(c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))), c.setLocal("b", c.i32_load8_u(c.i32_add(c.getLocal("scalar"), c.getLocal("i")))), ...innerLoop(), c.br_if(1, c.i32_eqz(c.getLocal("i"))), c.br(0))));
+ function innerLoop() {
+ const code = [];
+ for (let i = 0; i < 8; i++) code.push(...c.call(opAA, c.getLocal("r"), c.getLocal("r")), ...c.if(c.i32_ge_u(c.getLocal("b"), c.i32_const(128 >> i)), [...c.setLocal("b", c.i32_sub(c.getLocal("b"), c.i32_const(128 >> i))), ...c.call(opAB, c.getLocal("r"), aux, c.getLocal("r"))]));
+ return code;
+ }
+}
+//#endregion
+//#region src/build_batchinverse.js
+var build_batchinverse_default = buildBatchInverse;
+function buildBatchInverse(module, prefix) {
+ const n8 = module.modules[prefix].n64 * 8;
+ const f = module.addFunction(prefix + "_batchInverse");
+ f.addParam("pIn", "i32");
+ f.addParam("inStep", "i32");
+ f.addParam("n", "i32");
+ f.addParam("pOut", "i32");
+ f.addParam("outStep", "i32");
+ f.addLocal("itAux", "i32");
+ f.addLocal("itIn", "i32");
+ f.addLocal("itOut", "i32");
+ f.addLocal("i", "i32");
+ const c = f.getCodeBuilder();
+ const AUX = c.i32_const(module.alloc(n8));
+ f.addCode(c.setLocal("itAux", c.i32_load(c.i32_const(0))), c.i32_store(c.i32_const(0), c.i32_add(c.getLocal("itAux"), c.i32_mul(c.i32_add(c.getLocal("n"), c.i32_const(1)), c.i32_const(n8)))));
+ f.addCode(c.call(prefix + "_one", c.getLocal("itAux")), c.setLocal("itIn", c.getLocal("pIn")), c.setLocal("itAux", c.i32_add(c.getLocal("itAux"), c.i32_const(n8))), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.if(c.call(prefix + "_isZero", c.getLocal("itIn")), c.call(prefix + "_copy", c.i32_sub(c.getLocal("itAux"), c.i32_const(n8)), c.getLocal("itAux")), c.call(prefix + "_mul", c.getLocal("itIn"), c.i32_sub(c.getLocal("itAux"), c.i32_const(n8)), c.getLocal("itAux"))), c.setLocal("itIn", c.i32_add(c.getLocal("itIn"), c.getLocal("inStep"))), c.setLocal("itAux", c.i32_add(c.getLocal("itAux"), c.i32_const(n8))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))), c.setLocal("itIn", c.i32_sub(c.getLocal("itIn"), c.getLocal("inStep"))), c.setLocal("itAux", c.i32_sub(c.getLocal("itAux"), c.i32_const(n8))), c.setLocal("itOut", c.i32_add(c.getLocal("pOut"), c.i32_mul(c.i32_sub(c.getLocal("n"), c.i32_const(1)), c.getLocal("outStep")))), c.call(prefix + "_inverse", c.getLocal("itAux"), c.getLocal("itAux")), c.block(c.loop(c.br_if(1, c.i32_eqz(c.getLocal("i"))), c.if(c.call(prefix + "_isZero", c.getLocal("itIn")), [...c.call(prefix + "_copy", c.getLocal("itAux"), c.i32_sub(c.getLocal("itAux"), c.i32_const(n8))), ...c.call(prefix + "_zero", c.getLocal("itOut"))], [
+ ...c.call(prefix + "_copy", c.i32_sub(c.getLocal("itAux"), c.i32_const(n8)), AUX),
+ ...c.call(prefix + "_mul", c.getLocal("itAux"), c.getLocal("itIn"), c.i32_sub(c.getLocal("itAux"), c.i32_const(n8))),
+ ...c.call(prefix + "_mul", c.getLocal("itAux"), AUX, c.getLocal("itOut"))
+ ]), c.setLocal("itIn", c.i32_sub(c.getLocal("itIn"), c.getLocal("inStep"))), c.setLocal("itOut", c.i32_sub(c.getLocal("itOut"), c.getLocal("outStep"))), c.setLocal("itAux", c.i32_sub(c.getLocal("itAux"), c.i32_const(n8))), c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ f.addCode(c.i32_store(c.i32_const(0), c.getLocal("itAux")));
+}
+//#endregion
+//#region src/build_batchconvertion.js
+var build_batchconvertion_default = buildBatchConvertion$1;
+function buildBatchConvertion$1(module, fnName, internalFnName, sizeIn, sizeOut, reverse) {
+ if (typeof reverse === "undefined") if (sizeIn < sizeOut) reverse = true;
+ else reverse = false;
+ const f = module.addFunction(fnName);
+ f.addParam("pIn", "i32");
+ f.addParam("n", "i32");
+ f.addParam("pOut", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("itIn", "i32");
+ f.addLocal("itOut", "i32");
+ const c = f.getCodeBuilder();
+ if (reverse) f.addCode(c.setLocal("itIn", c.i32_add(c.getLocal("pIn"), c.i32_mul(c.i32_sub(c.getLocal("n"), c.i32_const(1)), c.i32_const(sizeIn)))), c.setLocal("itOut", c.i32_add(c.getLocal("pOut"), c.i32_mul(c.i32_sub(c.getLocal("n"), c.i32_const(1)), c.i32_const(sizeOut)))), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.call(internalFnName, c.getLocal("itIn"), c.getLocal("itOut")), c.setLocal("itIn", c.i32_sub(c.getLocal("itIn"), c.i32_const(sizeIn))), c.setLocal("itOut", c.i32_sub(c.getLocal("itOut"), c.i32_const(sizeOut))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ else f.addCode(c.setLocal("itIn", c.getLocal("pIn")), c.setLocal("itOut", c.getLocal("pOut")), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.call(internalFnName, c.getLocal("itIn"), c.getLocal("itOut")), c.setLocal("itIn", c.i32_add(c.getLocal("itIn"), c.i32_const(sizeIn))), c.setLocal("itOut", c.i32_add(c.getLocal("itOut"), c.i32_const(sizeOut))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+}
+//#endregion
+//#region src/build_batchop.js
+var build_batchop_default = buildBatchConvertion;
+function buildBatchConvertion(module, fnName, internalFnName, sizeIn, sizeOut, reverse) {
+ if (typeof reverse === "undefined") if (sizeIn < sizeOut) reverse = true;
+ else reverse = false;
+ const f = module.addFunction(fnName);
+ f.addParam("pIn1", "i32");
+ f.addParam("pIn2", "i32");
+ f.addParam("n", "i32");
+ f.addParam("pOut", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("itIn1", "i32");
+ f.addLocal("itIn2", "i32");
+ f.addLocal("itOut", "i32");
+ const c = f.getCodeBuilder();
+ if (reverse) f.addCode(c.setLocal("itIn1", c.i32_add(c.getLocal("pIn1"), c.i32_mul(c.i32_sub(c.getLocal("n"), c.i32_const(1)), c.i32_const(sizeIn)))), c.setLocal("itIn2", c.i32_add(c.getLocal("pIn2"), c.i32_mul(c.i32_sub(c.getLocal("n"), c.i32_const(1)), c.i32_const(sizeIn)))), c.setLocal("itOut", c.i32_add(c.getLocal("pOut"), c.i32_mul(c.i32_sub(c.getLocal("n"), c.i32_const(1)), c.i32_const(sizeOut)))), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.call(internalFnName, c.getLocal("itIn1"), c.getLocal("itIn2"), c.getLocal("itOut")), c.setLocal("itIn1", c.i32_sub(c.getLocal("itIn1"), c.i32_const(sizeIn))), c.setLocal("itIn2", c.i32_sub(c.getLocal("itIn2"), c.i32_const(sizeIn))), c.setLocal("itOut", c.i32_sub(c.getLocal("itOut"), c.i32_const(sizeOut))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ else f.addCode(c.setLocal("itIn1", c.getLocal("pIn1")), c.setLocal("itIn2", c.getLocal("pIn2")), c.setLocal("itOut", c.getLocal("pOut")), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.call(internalFnName, c.getLocal("itIn1"), c.getLocal("itIn2"), c.getLocal("itOut")), c.setLocal("itIn1", c.i32_add(c.getLocal("itIn1"), c.i32_const(sizeIn))), c.setLocal("itIn2", c.i32_add(c.getLocal("itIn2"), c.i32_const(sizeIn))), c.setLocal("itOut", c.i32_add(c.getLocal("itOut"), c.i32_const(sizeOut))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+}
+//#endregion
+//#region src/bigint.js
+function compare(a, b) {
+ return a === b ? 0 : a > b ? 1 : -1;
+}
+function square(n) {
+ return n * n;
+}
+function isOdd(n) {
+ return n % 2n !== 0n;
+}
+function isEven(n) {
+ return n % 2n === 0n;
+}
+function isNegative(n) {
+ return n < 0n;
+}
+function isPositive(n) {
+ return n > 0n;
+}
+function bitLength(n) {
+ if (isNegative(n)) return n.toString(2).length - 1;
+ else return n.toString(2).length;
+}
+function abs(n) {
+ return n < 0n ? -n : n;
+}
+function isUnit(n) {
+ return abs(n) === 1n;
+}
+function modInv(a, n) {
+ var t = 0n, newT = 1n, r = n, newR = abs(a), q, lastT, lastR;
+ while (newR !== 0n) {
+ q = r / newR;
+ lastT = t;
+ lastR = r;
+ t = newT;
+ r = newR;
+ newT = lastT - q * newT;
+ newR = lastR - q * newR;
+ }
+ if (!isUnit(r)) throw new Error(a.toString() + " and " + n.toString() + " are not co-prime");
+ if (compare(t, 0n) === -1) t = t + n;
+ if (isNegative(a)) return -t;
+ return t;
+}
+function modPow(n, exp, mod) {
+ if (mod === 0n) throw new Error("Cannot take modPow with modulus 0");
+ var r = 1n, base = n % mod;
+ if (isNegative(exp)) {
+ exp = exp * -1n;
+ base = modInv(base, mod);
+ }
+ while (isPositive(exp)) {
+ if (base === 0n) return 0n;
+ if (isOdd(exp)) r = r * base % mod;
+ exp = exp / 2n;
+ base = square(base) % mod;
+ }
+ return r;
+}
+function compareAbs(a, b) {
+ a = a >= 0n ? a : -a;
+ b = b >= 0n ? b : -b;
+ return a === b ? 0 : a > b ? 1 : -1;
+}
+function isDivisibleBy(a, n) {
+ if (n === 0n) return false;
+ if (isUnit(n)) return true;
+ if (compareAbs(n, 2n) === 0) return isEven(a);
+ return a % n === 0n;
+}
+function isBasicPrime(v) {
+ var n = abs(v);
+ if (isUnit(n)) return false;
+ if (n === 2n || n === 3n || n === 5n) return true;
+ if (isEven(n) || isDivisibleBy(n, 3n) || isDivisibleBy(n, 5n)) return false;
+ if (n < 49n) return true;
+}
+function prev(n) {
+ return n - 1n;
+}
+function isKnownPrime(v) {
+ switch (abs(v)) {
+ case 21888242871839275222246405745257275088696311157297823662689037894645226208583n:
+ case 21888242871839275222246405745257275088548364400416034343698204186575808495617n:
+ case 4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787n:
+ case 52435875175126190479447740508185965837690552500527637822603658699938581184513n:
+ case 41898490967918953402344214791240637128170709919953949071783502921025352812571106773058893763790338921418070971888458477323173057491593855069696241854796396165721416325350064441470418137846398469611935719059908164220784476160001n: return true;
+ }
+}
+function millerRabinTest(n, a) {
+ var nPrev = prev(n), b = nPrev, r = 0, d, i, x;
+ while (isEven(b)) b = b / 2n, r++;
+ next: for (i = 0; i < a.length; i++) {
+ if (n < a[i]) continue;
+ x = modPow(BigInt(a[i]), b, n);
+ if (isUnit(x) || x === nPrev) continue;
+ for (d = r - 1; d != 0; d--) {
+ x = square(x) % n;
+ if (isUnit(x)) return false;
+ if (x === nPrev) continue next;
+ }
+ return false;
+ }
+ return true;
+}
+function isPrime(p) {
+ let isPrime;
+ isPrime = isKnownPrime(p);
+ if (isPrime !== void 0) return isPrime;
+ isPrime = isBasicPrime(p);
+ if (isPrime !== void 0) return isPrime;
+ var n = abs(p);
+ var bits = bitLength(n);
+ if (bits <= 64) return millerRabinTest(n, [
+ 2,
+ 3,
+ 5,
+ 7,
+ 11,
+ 13,
+ 17,
+ 19,
+ 23,
+ 29,
+ 31,
+ 37
+ ]);
+ var logN = Math.log(2) * Number(bits);
+ var t = Math.ceil(logN);
+ for (var a = [], i = 0; i < t; i++) a.push(BigInt(i + 2));
+ return millerRabinTest(n, a);
+}
+//#endregion
+//#region src/build_f1m.js
+function buildF1m(module, _q, _prefix, _intPrefix) {
+ const q = BigInt(_q);
+ const n64 = Math.floor((bitLength(q - 1n) - 1) / 64) + 1;
+ const n32 = n64 * 2;
+ const n8 = n64 * 8;
+ const prefix = _prefix || "f1m";
+ if (module.modules[prefix]) return prefix;
+ const intPrefix = buildInt(module, n64, _intPrefix);
+ const pq = module.alloc(n8, bigInt2BytesLE(q, n8));
+ const pR2 = module.alloc(bigInt2BytesLE(square(1n << BigInt(n64 * 64)) % q, n8));
+ const pOne = module.alloc(bigInt2BytesLE((1n << BigInt(n64 * 64)) % q, n8));
+ const pZero = module.alloc(bigInt2BytesLE(0n, n8));
+ const _minusOne = q - 1n;
+ const _e = _minusOne >> 1n;
+ const pe = module.alloc(n8, bigInt2BytesLE(_e, n8));
+ const _ePlusOne = _e + 1n;
+ const pePlusOne = module.alloc(n8, bigInt2BytesLE(_ePlusOne, n8));
+ module.modules[prefix] = {
+ pq,
+ pR2,
+ n64,
+ q,
+ pOne,
+ pZero,
+ pePlusOne
+ };
+ function buildOne() {
+ const f = module.addFunction(prefix + "_one");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(intPrefix + "_copy", c.i32_const(pOne), c.getLocal("pr")));
+ }
+ function buildAdd() {
+ const f = module.addFunction(prefix + "_add");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.if(c.call(intPrefix + "_add", c.getLocal("x"), c.getLocal("y"), c.getLocal("r")), c.drop(c.call(intPrefix + "_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))), c.if(c.call(intPrefix + "_gte", c.getLocal("r"), c.i32_const(pq)), c.drop(c.call(intPrefix + "_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))))));
+ }
+ function buildSub() {
+ const f = module.addFunction(prefix + "_sub");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.if(c.call(intPrefix + "_sub", c.getLocal("x"), c.getLocal("y"), c.getLocal("r")), c.drop(c.call(intPrefix + "_add", c.getLocal("r"), c.i32_const(pq), c.getLocal("r")))));
+ }
+ function buildNeg() {
+ const f = module.addFunction(prefix + "_neg");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefix + "_sub", c.i32_const(pZero), c.getLocal("x"), c.getLocal("r")));
+ }
+ function buildIsNegative() {
+ const f = module.addFunction(prefix + "_isNegative");
+ f.addParam("x", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const AUX = c.i32_const(module.alloc(n8));
+ f.addCode(c.call(prefix + "_fromMontgomery", c.getLocal("x"), AUX), c.call(intPrefix + "_gte", AUX, c.i32_const(pePlusOne)));
+ }
+ function buildSign() {
+ const f = module.addFunction(prefix + "_sign");
+ f.addParam("x", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const AUX = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(intPrefix + "_isZero", c.getLocal("x")), c.ret(c.i32_const(0))), c.call(prefix + "_fromMontgomery", c.getLocal("x"), AUX), c.if(c.call(intPrefix + "_gte", AUX, c.i32_const(pePlusOne)), c.ret(c.i32_const(-1))), c.ret(c.i32_const(1)));
+ }
+ function buildMReduct() {
+ const carries = module.alloc(n32 * n32 * 8);
+ const f = module.addFunction(prefix + "_mReduct");
+ f.addParam("t", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("np32", "i64");
+ f.addLocal("c", "i64");
+ f.addLocal("m", "i64");
+ const c = f.getCodeBuilder();
+ const np32 = Number(4294967296n - modInv(q, 4294967296n));
+ f.addCode(c.setLocal("np32", c.i64_const(np32)));
+ for (let i = 0; i < n32; i++) {
+ f.addCode(c.setLocal("c", c.i64_const(0)));
+ f.addCode(c.setLocal("m", c.i64_and(c.i64_mul(c.i64_load32_u(c.getLocal("t"), i * 4), c.getLocal("np32")), c.i64_const("0xFFFFFFFF"))));
+ for (let j = 0; j < n32; j++) {
+ f.addCode(c.setLocal("c", c.i64_add(c.i64_add(c.i64_load32_u(c.getLocal("t"), (i + j) * 4), c.i64_shr_u(c.getLocal("c"), c.i64_const(32))), c.i64_mul(c.i64_load32_u(c.i32_const(pq), j * 4), c.getLocal("m")))));
+ f.addCode(c.i64_store32(c.getLocal("t"), (i + j) * 4, c.getLocal("c")));
+ }
+ f.addCode(c.i64_store32(c.i32_const(carries), i * 4, c.i64_shr_u(c.getLocal("c"), c.i64_const(32))));
+ }
+ f.addCode(c.call(prefix + "_add", c.i32_const(carries), c.i32_add(c.getLocal("t"), c.i32_const(n32 * 4)), c.getLocal("r")));
+ }
+ function buildMul() {
+ const f = module.addFunction(prefix + "_mul");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("yi", "i64");
+ f.addLocal("m", "i64");
+ f.addLocal("cc", "i64");
+ f.addLocal("s", "i64");
+ for (let i = 0; i < n32; i++) f.addLocal("x" + i, "i64");
+ for (let j = 0; j <= n32 + 1; j++) f.addLocal("t" + j, "i64");
+ const c = f.getCodeBuilder();
+ const np32 = Number(4294967296n - modInv(q, 4294967296n));
+ const qLimbs = [];
+ for (let j = 0; j < n32; j++) qLimbs.push(Number(q >> BigInt(32 * j) & 4294967295n));
+ const MASK32 = 4294967295;
+ const noCarry = q < 1n << BigInt(32 * n32 - 1);
+ for (let i = 0; i < n32; i++) f.addCode(c.setLocal("x" + i, c.i64_load32_u(c.getLocal("x"), i * 4)));
+ for (let i = 0; i < n32; i++) {
+ f.addCode(c.setLocal("yi", c.i64_load32_u(c.getLocal("y"), i * 4)));
+ f.addCode(c.setLocal("s", c.i64_add(c.getLocal("t0"), c.i64_mul(c.getLocal("x0"), c.getLocal("yi")))), c.setLocal("t0", c.i64_and(c.getLocal("s"), c.i64_const(MASK32))), c.setLocal("cc", c.i64_shr_u(c.getLocal("s"), c.i64_const(32))));
+ for (let j = 1; j < n32; j++) f.addCode(c.setLocal("s", c.i64_add(c.i64_add(c.getLocal("t" + j), c.i64_mul(c.getLocal("x" + j), c.getLocal("yi"))), c.getLocal("cc"))), c.setLocal("t" + j, c.i64_and(c.getLocal("s"), c.i64_const(MASK32))), c.setLocal("cc", c.i64_shr_u(c.getLocal("s"), c.i64_const(32))));
+ if (noCarry) f.addCode(c.setLocal("t" + n32, c.getLocal("cc")));
+ else f.addCode(c.setLocal("s", c.i64_add(c.getLocal("t" + n32), c.getLocal("cc"))), c.setLocal("t" + n32, c.i64_and(c.getLocal("s"), c.i64_const(MASK32))), c.setLocal("t" + (n32 + 1), c.i64_add(c.getLocal("t" + (n32 + 1)), c.i64_shr_u(c.getLocal("s"), c.i64_const(32)))));
+ f.addCode(c.setLocal("m", c.i64_and(c.i64_mul(c.getLocal("t0"), c.i64_const(np32)), c.i64_const(MASK32))), c.setLocal("s", c.i64_add(c.getLocal("t0"), c.i64_mul(c.getLocal("m"), c.i64_const(qLimbs[0])))), c.setLocal("cc", c.i64_shr_u(c.getLocal("s"), c.i64_const(32))));
+ for (let j = 1; j < n32; j++) f.addCode(c.setLocal("s", c.i64_add(c.i64_add(c.getLocal("t" + j), c.i64_mul(c.getLocal("m"), c.i64_const(qLimbs[j]))), c.getLocal("cc"))), c.setLocal("t" + (j - 1), c.i64_and(c.getLocal("s"), c.i64_const(MASK32))), c.setLocal("cc", c.i64_shr_u(c.getLocal("s"), c.i64_const(32))));
+ if (noCarry) f.addCode(c.setLocal("t" + (n32 - 1), c.i64_add(c.getLocal("t" + n32), c.getLocal("cc"))));
+ else f.addCode(c.setLocal("s", c.i64_add(c.getLocal("t" + n32), c.getLocal("cc"))), c.setLocal("t" + (n32 - 1), c.i64_and(c.getLocal("s"), c.i64_const(MASK32))), c.setLocal("t" + n32, c.i64_add(c.getLocal("t" + (n32 + 1)), c.i64_shr_u(c.getLocal("s"), c.i64_const(32)))), c.setLocal("t" + (n32 + 1), c.i64_const(0)));
+ }
+ for (let j = 0; j < n32; j++) f.addCode(c.i64_store32(c.getLocal("r"), j * 4, c.getLocal("t" + j)));
+ if (noCarry) f.addCode(c.if(c.call(intPrefix + "_gte", c.getLocal("r"), c.i32_const(pq)), c.drop(c.call(intPrefix + "_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r")))));
+ else f.addCode(c.if(c.i32_wrap_i64(c.getLocal("t" + n32)), c.drop(c.call(intPrefix + "_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))), c.if(c.call(intPrefix + "_gte", c.getLocal("r"), c.i32_const(pq)), c.drop(c.call(intPrefix + "_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))))));
+ }
+ function buildSquare() {
+ const f = module.addFunction(prefix + "_square");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("m", "i64");
+ f.addLocal("cc", "i64");
+ f.addLocal("s", "i64");
+ f.addLocal("p", "i64");
+ for (let i = 0; i < n32; i++) f.addLocal("x" + i, "i64");
+ for (let j = 0; j <= n32 + 1; j++) f.addLocal("t" + j, "i64");
+ const c = f.getCodeBuilder();
+ const np32 = Number(4294967296n - modInv(q, 4294967296n));
+ const qLimbs = [];
+ for (let j = 0; j < n32; j++) qLimbs.push(Number(q >> BigInt(32 * j) & 4294967295n));
+ const MASK32 = 4294967295;
+ for (let i = 0; i < n32; i++) f.addCode(c.setLocal("x" + i, c.i64_load32_u(c.getLocal("x"), i * 4)));
+ for (let i = 0; i < n32; i++) {
+ f.addCode(c.setLocal("s", c.i64_add(c.getLocal("t" + i), c.i64_mul(c.getLocal("x" + i), c.getLocal("x" + i)))), c.setLocal("t" + i, c.i64_and(c.getLocal("s"), c.i64_const(MASK32))), c.setLocal("cc", c.i64_shr_u(c.getLocal("s"), c.i64_const(32))));
+ for (let j = i + 1; j < n32; j++) f.addCode(c.setLocal("p", c.i64_mul(c.getLocal("x" + j), c.getLocal("x" + i))), c.setLocal("s", c.i64_add(c.i64_add(c.getLocal("t" + j), c.i64_shl(c.i64_and(c.getLocal("p"), c.i64_const(MASK32)), c.i64_const(1))), c.getLocal("cc"))), c.setLocal("t" + j, c.i64_and(c.getLocal("s"), c.i64_const(MASK32))), c.setLocal("cc", c.i64_add(c.i64_shr_u(c.getLocal("s"), c.i64_const(32)), c.i64_shl(c.i64_shr_u(c.getLocal("p"), c.i64_const(32)), c.i64_const(1)))));
+ f.addCode(c.setLocal("s", c.i64_add(c.getLocal("t" + n32), c.getLocal("cc"))), c.setLocal("t" + n32, c.i64_and(c.getLocal("s"), c.i64_const(MASK32))), c.setLocal("t" + (n32 + 1), c.i64_add(c.getLocal("t" + (n32 + 1)), c.i64_shr_u(c.getLocal("s"), c.i64_const(32)))));
+ f.addCode(c.setLocal("m", c.i64_and(c.i64_mul(c.getLocal("t0"), c.i64_const(np32)), c.i64_const(MASK32))), c.setLocal("s", c.i64_add(c.getLocal("t0"), c.i64_mul(c.getLocal("m"), c.i64_const(qLimbs[0])))), c.setLocal("cc", c.i64_shr_u(c.getLocal("s"), c.i64_const(32))));
+ for (let j = 1; j < n32; j++) f.addCode(c.setLocal("s", c.i64_add(c.i64_add(c.getLocal("t" + j), c.i64_mul(c.getLocal("m"), c.i64_const(qLimbs[j]))), c.getLocal("cc"))), c.setLocal("t" + (j - 1), c.i64_and(c.getLocal("s"), c.i64_const(MASK32))), c.setLocal("cc", c.i64_shr_u(c.getLocal("s"), c.i64_const(32))));
+ f.addCode(c.setLocal("s", c.i64_add(c.getLocal("t" + n32), c.getLocal("cc"))), c.setLocal("t" + (n32 - 1), c.i64_and(c.getLocal("s"), c.i64_const(MASK32))), c.setLocal("t" + n32, c.i64_add(c.getLocal("t" + (n32 + 1)), c.i64_shr_u(c.getLocal("s"), c.i64_const(32)))), c.setLocal("t" + (n32 + 1), c.i64_const(0)));
+ }
+ for (let j = 0; j < n32; j++) f.addCode(c.i64_store32(c.getLocal("r"), j * 4, c.getLocal("t" + j)));
+ f.addCode(c.if(c.i32_wrap_i64(c.getLocal("t" + n32)), c.drop(c.call(intPrefix + "_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))), c.if(c.call(intPrefix + "_gte", c.getLocal("r"), c.i32_const(pq)), c.drop(c.call(intPrefix + "_sub", c.getLocal("r"), c.i32_const(pq), c.getLocal("r"))))));
+ }
+ function buildSquareOld() {
+ const f = module.addFunction(prefix + "_squareOld");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefix + "_mul", c.getLocal("x"), c.getLocal("x"), c.getLocal("r")));
+ }
+ function buildToMontgomery() {
+ const f = module.addFunction(prefix + "_toMontgomery");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefix + "_mul", c.getLocal("x"), c.i32_const(pR2), c.getLocal("r")));
+ }
+ function buildFromMontgomery() {
+ const pAux2 = module.alloc(n8 * 2);
+ const f = module.addFunction(prefix + "_fromMontgomery");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(intPrefix + "_copy", c.getLocal("x"), c.i32_const(pAux2)));
+ f.addCode(c.call(intPrefix + "_zero", c.i32_const(pAux2 + n8)));
+ f.addCode(c.call(prefix + "_mReduct", c.i32_const(pAux2), c.getLocal("r")));
+ }
+ function buildInverse() {
+ const f = module.addFunction(prefix + "_inverse");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefix + "_fromMontgomery", c.getLocal("x"), c.getLocal("r")));
+ f.addCode(c.call(intPrefix + "_inverseMod", c.getLocal("r"), c.i32_const(pq), c.getLocal("r")));
+ f.addCode(c.call(prefix + "_toMontgomery", c.getLocal("r"), c.getLocal("r")));
+ }
+ let _nqr = 2n;
+ if (isPrime(q)) while (modPow(_nqr, _e, q) !== _minusOne) _nqr = _nqr + 1n;
+ let s2 = 0;
+ let _t = _minusOne;
+ while (!isOdd(_t) && _t !== 0n) {
+ s2++;
+ _t = _t >> 1n;
+ }
+ const pt = module.alloc(n8, bigInt2BytesLE(_t, n8));
+ const _nqrToT = modPow(_nqr, _t, q);
+ const pNqrToT = module.alloc(bigInt2BytesLE((_nqrToT << BigInt(n64 * 64)) % q, n8));
+ const _tPlusOneOver2 = _t + 1n >> 1n;
+ const ptPlusOneOver2 = module.alloc(n8, bigInt2BytesLE(_tPlusOneOver2, n8));
+ function buildSqrt() {
+ const f = module.addFunction(prefix + "_sqrt");
+ f.addParam("n", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("m", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("j", "i32");
+ const c = f.getCodeBuilder();
+ const ONE = c.i32_const(pOne);
+ const C = c.i32_const(module.alloc(n8));
+ const T = c.i32_const(module.alloc(n8));
+ const R = c.i32_const(module.alloc(n8));
+ const SQ = c.i32_const(module.alloc(n8));
+ const B = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZero", c.getLocal("n")), c.ret(c.call(prefix + "_zero", c.getLocal("r")))), c.setLocal("m", c.i32_const(s2)), c.call(prefix + "_copy", c.i32_const(pNqrToT), C), c.call(prefix + "_exp", c.getLocal("n"), c.i32_const(pt), c.i32_const(n8), T), c.call(prefix + "_exp", c.getLocal("n"), c.i32_const(ptPlusOneOver2), c.i32_const(n8), R), c.block(c.loop(c.br_if(1, c.call(prefix + "_eq", T, ONE)), c.call(prefix + "_square", T, SQ), c.setLocal("i", c.i32_const(1)), c.block(c.loop(c.br_if(1, c.call(prefix + "_eq", SQ, ONE)), c.call(prefix + "_square", SQ, SQ), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))), c.call(prefix + "_copy", C, B), c.setLocal("j", c.i32_sub(c.i32_sub(c.getLocal("m"), c.getLocal("i")), c.i32_const(1))), c.block(c.loop(c.br_if(1, c.i32_eqz(c.getLocal("j"))), c.call(prefix + "_square", B, B), c.setLocal("j", c.i32_sub(c.getLocal("j"), c.i32_const(1))), c.br(0))), c.setLocal("m", c.getLocal("i")), c.call(prefix + "_square", B, C), c.call(prefix + "_mul", T, C, T), c.call(prefix + "_mul", R, B, R), c.br(0))), c.if(c.call(prefix + "_isNegative", R), c.call(prefix + "_neg", R, c.getLocal("r")), c.call(prefix + "_copy", R, c.getLocal("r"))));
+ }
+ function buildIsSquare() {
+ const f = module.addFunction(prefix + "_isSquare");
+ f.addParam("n", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const ONE = c.i32_const(pOne);
+ const AUX = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZero", c.getLocal("n")), c.ret(c.i32_const(1))), c.call(prefix + "_exp", c.getLocal("n"), c.i32_const(pe), c.i32_const(n8), AUX), c.call(prefix + "_eq", AUX, ONE));
+ }
+ function buildLoad() {
+ const f = module.addFunction(prefix + "_load");
+ f.addParam("scalar", "i32");
+ f.addParam("scalarLen", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("p", "i32");
+ f.addLocal("l", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("j", "i32");
+ const c = f.getCodeBuilder();
+ const R = c.i32_const(module.alloc(n8));
+ const pAux = module.alloc(n8);
+ const AUX = c.i32_const(pAux);
+ f.addCode(c.call(intPrefix + "_zero", c.getLocal("r")), c.setLocal("i", c.i32_const(n8)), c.setLocal("p", c.getLocal("scalar")), c.block(c.loop(c.br_if(1, c.i32_gt_u(c.getLocal("i"), c.getLocal("scalarLen"))), c.if(c.i32_eq(c.getLocal("i"), c.i32_const(n8)), c.call(prefix + "_one", R), c.call(prefix + "_mul", R, c.i32_const(pR2), R)), c.call(prefix + "_mul", c.getLocal("p"), R, AUX), c.call(prefix + "_add", c.getLocal("r"), AUX, c.getLocal("r")), c.setLocal("p", c.i32_add(c.getLocal("p"), c.i32_const(n8))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(n8))), c.br(0))), c.setLocal("l", c.i32_rem_u(c.getLocal("scalarLen"), c.i32_const(n8))), c.if(c.i32_eqz(c.getLocal("l")), c.ret([])), c.call(intPrefix + "_zero", AUX), c.setLocal("j", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("j"), c.getLocal("l"))), c.i32_store8(c.getLocal("j"), pAux, c.i32_load8_u(c.getLocal("p"))), c.setLocal("p", c.i32_add(c.getLocal("p"), c.i32_const(1))), c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))), c.br(0))), c.if(c.i32_eq(c.getLocal("i"), c.i32_const(n8)), c.call(prefix + "_one", R), c.call(prefix + "_mul", R, c.i32_const(pR2), R)), c.call(prefix + "_mul", AUX, R, AUX), c.call(prefix + "_add", c.getLocal("r"), AUX, c.getLocal("r")));
+ }
+ function buildTimesScalar$3() {
+ const f = module.addFunction(prefix + "_timesScalar");
+ f.addParam("x", "i32");
+ f.addParam("scalar", "i32");
+ f.addParam("scalarLen", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const AUX = c.i32_const(module.alloc(n8));
+ f.addCode(c.call(prefix + "_load", c.getLocal("scalar"), c.getLocal("scalarLen"), AUX), c.call(prefix + "_toMontgomery", AUX, AUX), c.call(prefix + "_mul", c.getLocal("x"), AUX, c.getLocal("r")));
+ }
+ function buildIsOne() {
+ const f = module.addFunction(prefix + "_isOne");
+ f.addParam("x", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.ret(c.call(intPrefix + "_eq", c.getLocal("x"), c.i32_const(pOne))));
+ }
+ module.exportFunction(intPrefix + "_copy", prefix + "_copy");
+ module.exportFunction(intPrefix + "_zero", prefix + "_zero");
+ module.exportFunction(intPrefix + "_isZero", prefix + "_isZero");
+ module.exportFunction(intPrefix + "_eq", prefix + "_eq");
+ buildIsOne();
+ buildAdd();
+ buildSub();
+ buildNeg();
+ buildMReduct();
+ buildMul();
+ buildSquare();
+ buildSquareOld();
+ buildToMontgomery();
+ buildFromMontgomery();
+ buildIsNegative();
+ buildSign();
+ buildInverse();
+ buildOne();
+ buildLoad();
+ buildTimesScalar$3();
+ build_batchinverse_default(module, prefix);
+ build_batchconvertion_default(module, prefix + "_batchToMontgomery", prefix + "_toMontgomery", n8, n8);
+ build_batchconvertion_default(module, prefix + "_batchFromMontgomery", prefix + "_fromMontgomery", n8, n8);
+ build_batchconvertion_default(module, prefix + "_batchNeg", prefix + "_neg", n8, n8);
+ build_batchop_default(module, prefix + "_batchAdd", prefix + "_add", n8, n8);
+ build_batchop_default(module, prefix + "_batchSub", prefix + "_sub", n8, n8);
+ build_batchop_default(module, prefix + "_batchMul", prefix + "_mul", n8, n8);
+ module.exportFunction(prefix + "_add");
+ module.exportFunction(prefix + "_sub");
+ module.exportFunction(prefix + "_neg");
+ module.exportFunction(prefix + "_isNegative");
+ module.exportFunction(prefix + "_isOne");
+ module.exportFunction(prefix + "_sign");
+ module.exportFunction(prefix + "_mReduct");
+ module.exportFunction(prefix + "_mul");
+ module.exportFunction(prefix + "_square");
+ module.exportFunction(prefix + "_squareOld");
+ module.exportFunction(prefix + "_fromMontgomery");
+ module.exportFunction(prefix + "_toMontgomery");
+ module.exportFunction(prefix + "_inverse");
+ module.exportFunction(prefix + "_one");
+ module.exportFunction(prefix + "_load");
+ module.exportFunction(prefix + "_timesScalar");
+ buildTimesScalar(module, prefix + "_exp", n8, prefix + "_mul", prefix + "_square", intPrefix + "_copy", prefix + "_one");
+ module.exportFunction(prefix + "_exp");
+ module.exportFunction(prefix + "_batchInverse");
+ if (isPrime(q)) {
+ buildSqrt();
+ buildIsSquare();
+ module.exportFunction(prefix + "_sqrt");
+ module.exportFunction(prefix + "_isSquare");
+ }
+ module.exportFunction(prefix + "_batchToMontgomery");
+ module.exportFunction(prefix + "_batchFromMontgomery");
+ return prefix;
+}
+//#endregion
+//#region src/build_f1.js
+function buildF1(module, _q, _prefix, _f1mPrefix, _intPrefix) {
+ const q = BigInt(_q);
+ const n64 = Math.floor((bitLength(q - 1n) - 1) / 64) + 1;
+ const n8 = n64 * 8;
+ const prefix = _prefix || "f1";
+ if (module.modules[prefix]) return prefix;
+ module.modules[prefix] = { n64 };
+ const intPrefix = _intPrefix || "int";
+ const f1mPrefix = buildF1m(module, q, _f1mPrefix, intPrefix);
+ const pR2 = module.modules[f1mPrefix].pR2;
+ const pq = module.modules[f1mPrefix].pq;
+ const pePlusOne = module.modules[f1mPrefix].pePlusOne;
+ function buildMul() {
+ const pAux1 = module.alloc(n8);
+ const f = module.addFunction(prefix + "_mul");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(f1mPrefix + "_mul", c.getLocal("x"), c.getLocal("y"), c.i32_const(pAux1)));
+ f.addCode(c.call(f1mPrefix + "_mul", c.i32_const(pAux1), c.i32_const(pR2), c.getLocal("r")));
+ }
+ function buildSquare() {
+ const f = module.addFunction(prefix + "_square");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefix + "_mul", c.getLocal("x"), c.getLocal("x"), c.getLocal("r")));
+ }
+ function buildInverse() {
+ const f = module.addFunction(prefix + "_inverse");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(intPrefix + "_inverseMod", c.getLocal("x"), c.i32_const(pq), c.getLocal("r")));
+ }
+ function buildIsNegative() {
+ const f = module.addFunction(prefix + "_isNegative");
+ f.addParam("x", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(intPrefix + "_gte", c.getLocal("x"), c.i32_const(pePlusOne)));
+ }
+ buildMul();
+ buildSquare();
+ buildInverse();
+ buildIsNegative();
+ module.exportFunction(f1mPrefix + "_add", prefix + "_add");
+ module.exportFunction(f1mPrefix + "_sub", prefix + "_sub");
+ module.exportFunction(f1mPrefix + "_neg", prefix + "_neg");
+ module.exportFunction(prefix + "_mul");
+ module.exportFunction(prefix + "_square");
+ module.exportFunction(prefix + "_inverse");
+ module.exportFunction(prefix + "_isNegative");
+ module.exportFunction(f1mPrefix + "_copy", prefix + "_copy");
+ module.exportFunction(f1mPrefix + "_zero", prefix + "_zero");
+ module.exportFunction(f1mPrefix + "_one", prefix + "_one");
+ module.exportFunction(f1mPrefix + "_isZero", prefix + "_isZero");
+ module.exportFunction(f1mPrefix + "_eq", prefix + "_eq");
+ return prefix;
+}
+//#endregion
+//#region src/build_f2m.js
+function buildF2m(module, mulNonResidueFn, prefix, f1mPrefix) {
+ if (module.modules[prefix]) return prefix;
+ const f1n8 = module.modules[f1mPrefix].n64 * 8;
+ const q = module.modules[f1mPrefix].q;
+ module.modules[prefix] = { n64: module.modules[f1mPrefix].n64 * 2 };
+ function buildAdd() {
+ const f = module.addFunction(prefix + "_add");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const y0 = c.getLocal("y");
+ const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_add", x0, y0, r0), c.call(f1mPrefix + "_add", x1, y1, r1));
+ }
+ function buildTimesScalar$2() {
+ const f = module.addFunction(prefix + "_timesScalar");
+ f.addParam("x", "i32");
+ f.addParam("scalar", "i32");
+ f.addParam("scalarLen", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_timesScalar", x0, c.getLocal("scalar"), c.getLocal("scalarLen"), r0), c.call(f1mPrefix + "_timesScalar", x1, c.getLocal("scalar"), c.getLocal("scalarLen"), r1));
+ }
+ function buildSub() {
+ const f = module.addFunction(prefix + "_sub");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const y0 = c.getLocal("y");
+ const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_sub", x0, y0, r0), c.call(f1mPrefix + "_sub", x1, y1, r1));
+ }
+ function buildNeg() {
+ const f = module.addFunction(prefix + "_neg");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_neg", x0, r0), c.call(f1mPrefix + "_neg", x1, r1));
+ }
+ function buildConjugate() {
+ const f = module.addFunction(prefix + "_conjugate");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_copy", x0, r0), c.call(f1mPrefix + "_neg", x1, r1));
+ }
+ function buildIsNegative() {
+ const f = module.addFunction(prefix + "_isNegative");
+ f.addParam("x", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ f.addCode(c.if(c.call(f1mPrefix + "_isZero", x1), c.ret(c.call(f1mPrefix + "_isNegative", x0))), c.ret(c.call(f1mPrefix + "_isNegative", x1)));
+ }
+ function buildMul() {
+ const f = module.addFunction(prefix + "_mul");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const y0 = c.getLocal("y");
+ const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const A = c.i32_const(module.alloc(f1n8));
+ const B = c.i32_const(module.alloc(f1n8));
+ const C = c.i32_const(module.alloc(f1n8));
+ const D = c.i32_const(module.alloc(f1n8));
+ f.addCode(c.call(f1mPrefix + "_mul", x0, y0, A), c.call(f1mPrefix + "_mul", x1, y1, B), c.call(f1mPrefix + "_add", x0, x1, C), c.call(f1mPrefix + "_add", y0, y1, D), c.call(f1mPrefix + "_mul", C, D, C), c.call(mulNonResidueFn, B, r0), c.call(f1mPrefix + "_add", A, r0, r0), c.call(f1mPrefix + "_add", A, B, r1), c.call(f1mPrefix + "_sub", C, r1, r1));
+ }
+ function buildMul1() {
+ const f = module.addFunction(prefix + "_mul1");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const y = c.getLocal("y");
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_mul", x0, y, r0), c.call(f1mPrefix + "_mul", x1, y, r1));
+ }
+ function buildSquare() {
+ const f = module.addFunction(prefix + "_square");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const AB = c.i32_const(module.alloc(f1n8));
+ const APB = c.i32_const(module.alloc(f1n8));
+ const APNB = c.i32_const(module.alloc(f1n8));
+ const ABPNAB = c.i32_const(module.alloc(f1n8));
+ f.addCode(c.call(f1mPrefix + "_mul", x0, x1, AB), c.call(f1mPrefix + "_add", x0, x1, APB), c.call(mulNonResidueFn, x1, APNB), c.call(f1mPrefix + "_add", x0, APNB, APNB), c.call(mulNonResidueFn, AB, ABPNAB), c.call(f1mPrefix + "_add", ABPNAB, AB, ABPNAB), c.call(f1mPrefix + "_mul", APB, APNB, r0), c.call(f1mPrefix + "_sub", r0, ABPNAB, r0), c.call(f1mPrefix + "_add", AB, AB, r1));
+ }
+ function buildToMontgomery() {
+ const f = module.addFunction(prefix + "_toMontgomery");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_toMontgomery", x0, r0), c.call(f1mPrefix + "_toMontgomery", x1, r1));
+ }
+ function buildFromMontgomery() {
+ const f = module.addFunction(prefix + "_fromMontgomery");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_fromMontgomery", x0, r0), c.call(f1mPrefix + "_fromMontgomery", x1, r1));
+ }
+ function buildCopy() {
+ const f = module.addFunction(prefix + "_copy");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_copy", x0, r0), c.call(f1mPrefix + "_copy", x1, r1));
+ }
+ function buildZero() {
+ const f = module.addFunction(prefix + "_zero");
+ f.addParam("x", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_zero", x0), c.call(f1mPrefix + "_zero", x1));
+ }
+ function buildOne() {
+ const f = module.addFunction(prefix + "_one");
+ f.addParam("x", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ f.addCode(c.call(f1mPrefix + "_one", x0), c.call(f1mPrefix + "_zero", x1));
+ }
+ function buildEq() {
+ const f = module.addFunction(prefix + "_eq");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const y0 = c.getLocal("y");
+ const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
+ f.addCode(c.i32_and(c.call(f1mPrefix + "_eq", x0, y0), c.call(f1mPrefix + "_eq", x1, y1)));
+ }
+ function buildIsZero() {
+ const f = module.addFunction(prefix + "_isZero");
+ f.addParam("x", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ f.addCode(c.i32_and(c.call(f1mPrefix + "_isZero", x0), c.call(f1mPrefix + "_isZero", x1)));
+ }
+ function buildInverse() {
+ const f = module.addFunction(prefix + "_inverse");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const t0 = c.i32_const(module.alloc(f1n8));
+ const t1 = c.i32_const(module.alloc(f1n8));
+ const t2 = c.i32_const(module.alloc(f1n8));
+ const t3 = c.i32_const(module.alloc(f1n8));
+ f.addCode(c.call(f1mPrefix + "_square", x0, t0), c.call(f1mPrefix + "_square", x1, t1), c.call(mulNonResidueFn, t1, t2), c.call(f1mPrefix + "_sub", t0, t2, t2), c.call(f1mPrefix + "_inverse", t2, t3), c.call(f1mPrefix + "_mul", x0, t3, r0), c.call(f1mPrefix + "_mul", x1, t3, r1), c.call(f1mPrefix + "_neg", r1, r1));
+ }
+ function buildSign() {
+ const f = module.addFunction(prefix + "_sign");
+ f.addParam("x", "i32");
+ f.addLocal("s", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ f.addCode(c.setLocal("s", c.call(f1mPrefix + "_sign", x1)), c.if(c.getLocal("s"), c.ret(c.getLocal("s"))), c.ret(c.call(f1mPrefix + "_sign", x0)));
+ }
+ function buildIsOne() {
+ const f = module.addFunction(prefix + "_isOne");
+ f.addParam("x", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ f.addCode(c.ret(c.i32_and(c.call(f1mPrefix + "_isOne", x0), c.call(f1mPrefix + "_isZero", x1))));
+ }
+ function buildSqrt() {
+ const f = module.addFunction(prefix + "_sqrt");
+ f.addParam("a", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const e34 = c.i32_const(module.alloc(bigInt2BytesLE((BigInt(q || 0) - 3n) / 4n, f1n8)));
+ const e12 = c.i32_const(module.alloc(bigInt2BytesLE((BigInt(q || 0) - 1n) / 2n, f1n8)));
+ const a = c.getLocal("a");
+ const a1 = c.i32_const(module.alloc(f1n8 * 2));
+ const alpha = c.i32_const(module.alloc(f1n8 * 2));
+ const a0 = c.i32_const(module.alloc(f1n8 * 2));
+ const pn1 = module.alloc(f1n8 * 2);
+ const n1 = c.i32_const(pn1);
+ const n1a = c.i32_const(pn1);
+ const n1b = c.i32_const(pn1 + f1n8);
+ const x0 = c.i32_const(module.alloc(f1n8 * 2));
+ const b = c.i32_const(module.alloc(f1n8 * 2));
+ f.addCode(c.call(prefix + "_one", n1), c.call(prefix + "_neg", n1, n1), c.call(prefix + "_exp", a, e34, c.i32_const(f1n8), a1), c.call(prefix + "_square", a1, alpha), c.call(prefix + "_mul", a, alpha, alpha), c.call(prefix + "_conjugate", alpha, a0), c.call(prefix + "_mul", a0, alpha, a0), c.if(c.call(prefix + "_eq", a0, n1), c.unreachable()), c.call(prefix + "_mul", a1, a, x0), c.if(c.call(prefix + "_eq", alpha, n1), [
+ ...c.call(f1mPrefix + "_zero", n1a),
+ ...c.call(f1mPrefix + "_one", n1b),
+ ...c.call(prefix + "_mul", n1, x0, c.getLocal("pr"))
+ ], [
+ ...c.call(prefix + "_one", b),
+ ...c.call(prefix + "_add", b, alpha, b),
+ ...c.call(prefix + "_exp", b, e12, c.i32_const(f1n8), b),
+ ...c.call(prefix + "_mul", b, x0, c.getLocal("pr"))
+ ]));
+ }
+ function buildIsSquare() {
+ const f = module.addFunction(prefix + "_isSquare");
+ f.addParam("a", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const e34 = c.i32_const(module.alloc(bigInt2BytesLE((BigInt(q || 0) - 3n) / 4n, f1n8)));
+ const a = c.getLocal("a");
+ const a1 = c.i32_const(module.alloc(f1n8 * 2));
+ const alpha = c.i32_const(module.alloc(f1n8 * 2));
+ const a0 = c.i32_const(module.alloc(f1n8 * 2));
+ const pn1 = module.alloc(f1n8 * 2);
+ const n1 = c.i32_const(pn1);
+ f.addCode(c.call(prefix + "_one", n1), c.call(prefix + "_neg", n1, n1), c.call(prefix + "_exp", a, e34, c.i32_const(f1n8), a1), c.call(prefix + "_square", a1, alpha), c.call(prefix + "_mul", a, alpha, alpha), c.call(prefix + "_conjugate", alpha, a0), c.call(prefix + "_mul", a0, alpha, a0), c.if(c.call(prefix + "_eq", a0, n1), c.ret(c.i32_const(0))), c.ret(c.i32_const(1)));
+ }
+ buildIsZero();
+ buildIsOne();
+ buildZero();
+ buildOne();
+ buildCopy();
+ buildMul();
+ buildMul1();
+ buildSquare();
+ buildAdd();
+ buildSub();
+ buildNeg();
+ buildConjugate();
+ buildToMontgomery();
+ buildFromMontgomery();
+ buildEq();
+ buildInverse();
+ buildTimesScalar$2();
+ buildSign();
+ buildIsNegative();
+ module.exportFunction(prefix + "_isZero");
+ module.exportFunction(prefix + "_isOne");
+ module.exportFunction(prefix + "_zero");
+ module.exportFunction(prefix + "_one");
+ module.exportFunction(prefix + "_copy");
+ module.exportFunction(prefix + "_mul");
+ module.exportFunction(prefix + "_mul1");
+ module.exportFunction(prefix + "_square");
+ module.exportFunction(prefix + "_add");
+ module.exportFunction(prefix + "_sub");
+ module.exportFunction(prefix + "_neg");
+ module.exportFunction(prefix + "_sign");
+ module.exportFunction(prefix + "_conjugate");
+ module.exportFunction(prefix + "_fromMontgomery");
+ module.exportFunction(prefix + "_toMontgomery");
+ module.exportFunction(prefix + "_eq");
+ module.exportFunction(prefix + "_inverse");
+ build_batchinverse_default(module, prefix);
+ buildTimesScalar(module, prefix + "_exp", f1n8 * 2, prefix + "_mul", prefix + "_square", prefix + "_copy", prefix + "_one");
+ buildSqrt();
+ buildIsSquare();
+ module.exportFunction(prefix + "_exp");
+ module.exportFunction(prefix + "_timesScalar");
+ module.exportFunction(prefix + "_batchInverse");
+ module.exportFunction(prefix + "_sqrt");
+ module.exportFunction(prefix + "_isSquare");
+ module.exportFunction(prefix + "_isNegative");
+ return prefix;
+}
+//#endregion
+//#region src/build_f3m.js
+function buildF3m(module, mulNonResidueFn, prefix, f1mPrefix) {
+ if (module.modules[prefix]) return prefix;
+ const f1n8 = module.modules[f1mPrefix].n64 * 8;
+ module.modules[prefix] = { n64: module.modules[f1mPrefix].n64 * 3 };
+ function buildAdd() {
+ const f = module.addFunction(prefix + "_add");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ const y0 = c.getLocal("y");
+ const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
+ const y2 = c.i32_add(c.getLocal("y"), c.i32_const(2 * f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f1n8));
+ f.addCode(c.call(f1mPrefix + "_add", x0, y0, r0), c.call(f1mPrefix + "_add", x1, y1, r1), c.call(f1mPrefix + "_add", x2, y2, r2));
+ }
+ function buildTimesScalar$1() {
+ const f = module.addFunction(prefix + "_timesScalar");
+ f.addParam("x", "i32");
+ f.addParam("scalar", "i32");
+ f.addParam("scalarLen", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f1n8));
+ f.addCode(c.call(f1mPrefix + "_timesScalar", x0, c.getLocal("scalar"), c.getLocal("scalarLen"), r0), c.call(f1mPrefix + "_timesScalar", x1, c.getLocal("scalar"), c.getLocal("scalarLen"), r1), c.call(f1mPrefix + "_timesScalar", x2, c.getLocal("scalar"), c.getLocal("scalarLen"), r2));
+ }
+ function buildSub() {
+ const f = module.addFunction(prefix + "_sub");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ const y0 = c.getLocal("y");
+ const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
+ const y2 = c.i32_add(c.getLocal("y"), c.i32_const(2 * f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f1n8));
+ f.addCode(c.call(f1mPrefix + "_sub", x0, y0, r0), c.call(f1mPrefix + "_sub", x1, y1, r1), c.call(f1mPrefix + "_sub", x2, y2, r2));
+ }
+ function buildNeg() {
+ const f = module.addFunction(prefix + "_neg");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f1n8));
+ f.addCode(c.call(f1mPrefix + "_neg", x0, r0), c.call(f1mPrefix + "_neg", x1, r1), c.call(f1mPrefix + "_neg", x2, r2));
+ }
+ function buildIsNegative() {
+ const f = module.addFunction(prefix + "_isNegative");
+ f.addParam("x", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ f.addCode(c.if(c.call(f1mPrefix + "_isZero", x2), c.if(c.call(f1mPrefix + "_isZero", x1), c.ret(c.call(f1mPrefix + "_isNegative", x0)), c.ret(c.call(f1mPrefix + "_isNegative", x1)))), c.ret(c.call(f1mPrefix + "_isNegative", x2)));
+ }
+ function buildMul() {
+ const f = module.addFunction(prefix + "_mul");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.addParam("r", "i32");
+ const cd = f.getCodeBuilder();
+ const a = cd.getLocal("x");
+ const b = cd.i32_add(cd.getLocal("x"), cd.i32_const(f1n8));
+ const c = cd.i32_add(cd.getLocal("x"), cd.i32_const(2 * f1n8));
+ const A = cd.getLocal("y");
+ const B = cd.i32_add(cd.getLocal("y"), cd.i32_const(f1n8));
+ const C = cd.i32_add(cd.getLocal("y"), cd.i32_const(2 * f1n8));
+ const r0 = cd.getLocal("r");
+ const r1 = cd.i32_add(cd.getLocal("r"), cd.i32_const(f1n8));
+ const r2 = cd.i32_add(cd.getLocal("r"), cd.i32_const(2 * f1n8));
+ const aA = cd.i32_const(module.alloc(f1n8));
+ const bB = cd.i32_const(module.alloc(f1n8));
+ const cC = cd.i32_const(module.alloc(f1n8));
+ const a_b = cd.i32_const(module.alloc(f1n8));
+ const A_B = cd.i32_const(module.alloc(f1n8));
+ const a_c = cd.i32_const(module.alloc(f1n8));
+ const A_C = cd.i32_const(module.alloc(f1n8));
+ const b_c = cd.i32_const(module.alloc(f1n8));
+ const B_C = cd.i32_const(module.alloc(f1n8));
+ const aA_bB = cd.i32_const(module.alloc(f1n8));
+ const aA_cC = cd.i32_const(module.alloc(f1n8));
+ const bB_cC = cd.i32_const(module.alloc(f1n8));
+ const AUX = cd.i32_const(module.alloc(f1n8));
+ f.addCode(cd.call(f1mPrefix + "_mul", a, A, aA), cd.call(f1mPrefix + "_mul", b, B, bB), cd.call(f1mPrefix + "_mul", c, C, cC), cd.call(f1mPrefix + "_add", a, b, a_b), cd.call(f1mPrefix + "_add", A, B, A_B), cd.call(f1mPrefix + "_add", a, c, a_c), cd.call(f1mPrefix + "_add", A, C, A_C), cd.call(f1mPrefix + "_add", b, c, b_c), cd.call(f1mPrefix + "_add", B, C, B_C), cd.call(f1mPrefix + "_add", aA, bB, aA_bB), cd.call(f1mPrefix + "_add", aA, cC, aA_cC), cd.call(f1mPrefix + "_add", bB, cC, bB_cC), cd.call(f1mPrefix + "_mul", b_c, B_C, r0), cd.call(f1mPrefix + "_sub", r0, bB_cC, r0), cd.call(mulNonResidueFn, r0, r0), cd.call(f1mPrefix + "_add", aA, r0, r0), cd.call(f1mPrefix + "_mul", a_b, A_B, r1), cd.call(f1mPrefix + "_sub", r1, aA_bB, r1), cd.call(mulNonResidueFn, cC, AUX), cd.call(f1mPrefix + "_add", r1, AUX, r1), cd.call(f1mPrefix + "_mul", a_c, A_C, r2), cd.call(f1mPrefix + "_sub", r2, aA_cC, r2), cd.call(f1mPrefix + "_add", r2, bB, r2));
+ }
+ function buildSquare() {
+ const f = module.addFunction(prefix + "_square");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const A = c.getLocal("x");
+ const B = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const C = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f1n8));
+ const s0 = c.i32_const(module.alloc(f1n8));
+ const ab = c.i32_const(module.alloc(f1n8));
+ const s1 = c.i32_const(module.alloc(f1n8));
+ const s2 = c.i32_const(module.alloc(f1n8));
+ const bc = c.i32_const(module.alloc(f1n8));
+ const s3 = c.i32_const(module.alloc(f1n8));
+ const s4 = c.i32_const(module.alloc(f1n8));
+ f.addCode(c.call(f1mPrefix + "_square", A, s0), c.call(f1mPrefix + "_mul", A, B, ab), c.call(f1mPrefix + "_add", ab, ab, s1), c.call(f1mPrefix + "_sub", A, B, s2), c.call(f1mPrefix + "_add", s2, C, s2), c.call(f1mPrefix + "_square", s2, s2), c.call(f1mPrefix + "_mul", B, C, bc), c.call(f1mPrefix + "_add", bc, bc, s3), c.call(f1mPrefix + "_square", C, s4), c.call(mulNonResidueFn, s3, r0), c.call(f1mPrefix + "_add", s0, r0, r0), c.call(mulNonResidueFn, s4, r1), c.call(f1mPrefix + "_add", s1, r1, r1), c.call(f1mPrefix + "_add", s0, s4, r2), c.call(f1mPrefix + "_sub", s3, r2, r2), c.call(f1mPrefix + "_add", s2, r2, r2), c.call(f1mPrefix + "_add", s1, r2, r2));
+ }
+ function buildToMontgomery() {
+ const f = module.addFunction(prefix + "_toMontgomery");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f1n8));
+ f.addCode(c.call(f1mPrefix + "_toMontgomery", x0, r0), c.call(f1mPrefix + "_toMontgomery", x1, r1), c.call(f1mPrefix + "_toMontgomery", x2, r2));
+ }
+ function buildFromMontgomery() {
+ const f = module.addFunction(prefix + "_fromMontgomery");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f1n8));
+ f.addCode(c.call(f1mPrefix + "_fromMontgomery", x0, r0), c.call(f1mPrefix + "_fromMontgomery", x1, r1), c.call(f1mPrefix + "_fromMontgomery", x2, r2));
+ }
+ function buildCopy() {
+ const f = module.addFunction(prefix + "_copy");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f1n8));
+ f.addCode(c.call(f1mPrefix + "_copy", x0, r0), c.call(f1mPrefix + "_copy", x1, r1), c.call(f1mPrefix + "_copy", x2, r2));
+ }
+ function buildZero() {
+ const f = module.addFunction(prefix + "_zero");
+ f.addParam("x", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ f.addCode(c.call(f1mPrefix + "_zero", x0), c.call(f1mPrefix + "_zero", x1), c.call(f1mPrefix + "_zero", x2));
+ }
+ function buildOne() {
+ const f = module.addFunction(prefix + "_one");
+ f.addParam("x", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ f.addCode(c.call(f1mPrefix + "_one", x0), c.call(f1mPrefix + "_zero", x1), c.call(f1mPrefix + "_zero", x2));
+ }
+ function buildEq() {
+ const f = module.addFunction(prefix + "_eq");
+ f.addParam("x", "i32");
+ f.addParam("y", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ const y0 = c.getLocal("y");
+ const y1 = c.i32_add(c.getLocal("y"), c.i32_const(f1n8));
+ const y2 = c.i32_add(c.getLocal("y"), c.i32_const(2 * f1n8));
+ f.addCode(c.i32_and(c.i32_and(c.call(f1mPrefix + "_eq", x0, y0), c.call(f1mPrefix + "_eq", x1, y1)), c.call(f1mPrefix + "_eq", x2, y2)));
+ }
+ function buildIsZero() {
+ const f = module.addFunction(prefix + "_isZero");
+ f.addParam("x", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ f.addCode(c.i32_and(c.i32_and(c.call(f1mPrefix + "_isZero", x0), c.call(f1mPrefix + "_isZero", x1)), c.call(f1mPrefix + "_isZero", x2)));
+ }
+ function buildInverse() {
+ const f = module.addFunction(prefix + "_inverse");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ const r0 = c.getLocal("r");
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(f1n8));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f1n8));
+ const t0 = c.i32_const(module.alloc(f1n8));
+ const t1 = c.i32_const(module.alloc(f1n8));
+ const t2 = c.i32_const(module.alloc(f1n8));
+ const t3 = c.i32_const(module.alloc(f1n8));
+ const t4 = c.i32_const(module.alloc(f1n8));
+ const t5 = c.i32_const(module.alloc(f1n8));
+ const c0 = c.i32_const(module.alloc(f1n8));
+ const c1 = c.i32_const(module.alloc(f1n8));
+ const c2 = c.i32_const(module.alloc(f1n8));
+ const t6 = c.i32_const(module.alloc(f1n8));
+ const AUX = c.i32_const(module.alloc(f1n8));
+ f.addCode(c.call(f1mPrefix + "_square", x0, t0), c.call(f1mPrefix + "_square", x1, t1), c.call(f1mPrefix + "_square", x2, t2), c.call(f1mPrefix + "_mul", x0, x1, t3), c.call(f1mPrefix + "_mul", x0, x2, t4), c.call(f1mPrefix + "_mul", x1, x2, t5), c.call(mulNonResidueFn, t5, c0), c.call(f1mPrefix + "_sub", t0, c0, c0), c.call(mulNonResidueFn, t2, c1), c.call(f1mPrefix + "_sub", c1, t3, c1), c.call(f1mPrefix + "_sub", t1, t4, c2), c.call(f1mPrefix + "_mul", x2, c1, t6), c.call(f1mPrefix + "_mul", x1, c2, AUX), c.call(f1mPrefix + "_add", t6, AUX, t6), c.call(mulNonResidueFn, t6, t6), c.call(f1mPrefix + "_mul", x0, c0, AUX), c.call(f1mPrefix + "_add", AUX, t6, t6), c.call(f1mPrefix + "_inverse", t6, t6), c.call(f1mPrefix + "_mul", t6, c0, r0), c.call(f1mPrefix + "_mul", t6, c1, r1), c.call(f1mPrefix + "_mul", t6, c2, r2));
+ }
+ function buildSign() {
+ const f = module.addFunction(prefix + "_sign");
+ f.addParam("x", "i32");
+ f.addLocal("s", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f1n8));
+ f.addCode(c.setLocal("s", c.call(f1mPrefix + "_sign", x2)), c.if(c.getLocal("s"), c.ret(c.getLocal("s"))), c.setLocal("s", c.call(f1mPrefix + "_sign", x1)), c.if(c.getLocal("s"), c.ret(c.getLocal("s"))), c.ret(c.call(f1mPrefix + "_sign", x0)));
+ }
+ function buildIsOne() {
+ const f = module.addFunction(prefix + "_isOne");
+ f.addParam("x", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(f1n8 * 2));
+ f.addCode(c.ret(c.i32_and(c.i32_and(c.call(f1mPrefix + "_isOne", x0), c.call(f1mPrefix + "_isZero", x1)), c.call(f1mPrefix + "_isZero", x2))));
+ }
+ buildIsZero();
+ buildIsOne();
+ buildZero();
+ buildOne();
+ buildCopy();
+ buildMul();
+ buildSquare();
+ buildAdd();
+ buildSub();
+ buildNeg();
+ buildSign();
+ buildToMontgomery();
+ buildFromMontgomery();
+ buildEq();
+ buildInverse();
+ buildTimesScalar$1();
+ buildIsNegative();
+ module.exportFunction(prefix + "_isZero");
+ module.exportFunction(prefix + "_isOne");
+ module.exportFunction(prefix + "_zero");
+ module.exportFunction(prefix + "_one");
+ module.exportFunction(prefix + "_copy");
+ module.exportFunction(prefix + "_mul");
+ module.exportFunction(prefix + "_square");
+ module.exportFunction(prefix + "_add");
+ module.exportFunction(prefix + "_sub");
+ module.exportFunction(prefix + "_neg");
+ module.exportFunction(prefix + "_sign");
+ module.exportFunction(prefix + "_fromMontgomery");
+ module.exportFunction(prefix + "_toMontgomery");
+ module.exportFunction(prefix + "_eq");
+ module.exportFunction(prefix + "_inverse");
+ build_batchinverse_default(module, prefix);
+ buildTimesScalar(module, prefix + "_exp", f1n8 * 3, prefix + "_mul", prefix + "_square", prefix + "_copy", prefix + "_one");
+ module.exportFunction(prefix + "_exp");
+ module.exportFunction(prefix + "_timesScalar");
+ module.exportFunction(prefix + "_batchInverse");
+ module.exportFunction(prefix + "_isNegative");
+ return prefix;
+}
+//#endregion
+//#region src/build_timesscalarnaf.js
+function buildTimesScalarNAF(module, fnName, elementLen, opAB, opAA, opAmB, opCopy, opInit) {
+ const f = module.addFunction(fnName);
+ f.addParam("base", "i32");
+ f.addParam("scalar", "i32");
+ f.addParam("scalarLength", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("old0", "i32");
+ f.addLocal("nbits", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("last", "i32");
+ f.addLocal("cur", "i32");
+ f.addLocal("carry", "i32");
+ f.addLocal("p", "i32");
+ const c = f.getCodeBuilder();
+ const aux = c.i32_const(module.alloc(elementLen));
+ function getBit(IDX) {
+ return c.i32_and(c.i32_shr_u(c.i32_load(c.i32_add(c.getLocal("scalar"), c.i32_and(c.i32_shr_u(IDX, c.i32_const(3)), c.i32_const(4294967292)))), c.i32_and(IDX, c.i32_const(31))), c.i32_const(1));
+ }
+ function pushBit(b) {
+ return [...c.i32_store8(c.getLocal("p"), c.i32_const(b)), ...c.setLocal("p", c.i32_add(c.getLocal("p"), c.i32_const(1)))];
+ }
+ f.addCode(c.if(c.i32_eqz(c.getLocal("scalarLength")), [...c.call(opInit, c.getLocal("r")), ...c.ret([])]), c.setLocal("nbits", c.i32_shl(c.getLocal("scalarLength"), c.i32_const(3))), c.setLocal("old0", c.i32_load(c.i32_const(0))), c.setLocal("p", c.getLocal("old0")), c.i32_store(c.i32_const(0), c.i32_and(c.i32_add(c.i32_add(c.getLocal("old0"), c.i32_const(32)), c.getLocal("nbits")), c.i32_const(4294967288))), c.setLocal("i", c.i32_const(1)), c.setLocal("last", getBit(c.i32_const(0))), c.setLocal("carry", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("nbits"))), c.setLocal("cur", getBit(c.getLocal("i"))), c.if(c.getLocal("last"), c.if(c.getLocal("cur"), c.if(c.getLocal("carry"), [
+ ...c.setLocal("last", c.i32_const(0)),
+ ...c.setLocal("carry", c.i32_const(1)),
+ ...pushBit(1)
+ ], [
+ ...c.setLocal("last", c.i32_const(0)),
+ ...c.setLocal("carry", c.i32_const(1)),
+ ...pushBit(255)
+ ]), c.if(c.getLocal("carry"), [
+ ...c.setLocal("last", c.i32_const(0)),
+ ...c.setLocal("carry", c.i32_const(1)),
+ ...pushBit(255)
+ ], [
+ ...c.setLocal("last", c.i32_const(0)),
+ ...c.setLocal("carry", c.i32_const(0)),
+ ...pushBit(1)
+ ])), c.if(c.getLocal("cur"), c.if(c.getLocal("carry"), [
+ ...c.setLocal("last", c.i32_const(0)),
+ ...c.setLocal("carry", c.i32_const(1)),
+ ...pushBit(0)
+ ], [
+ ...c.setLocal("last", c.i32_const(1)),
+ ...c.setLocal("carry", c.i32_const(0)),
+ ...pushBit(0)
+ ]), c.if(c.getLocal("carry"), [
+ ...c.setLocal("last", c.i32_const(1)),
+ ...c.setLocal("carry", c.i32_const(0)),
+ ...pushBit(0)
+ ], [
+ ...c.setLocal("last", c.i32_const(0)),
+ ...c.setLocal("carry", c.i32_const(0)),
+ ...pushBit(0)
+ ]))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))), c.if(c.getLocal("last"), c.if(c.getLocal("carry"), [
+ ...pushBit(255),
+ ...pushBit(0),
+ ...pushBit(1)
+ ], [...pushBit(1)]), c.if(c.getLocal("carry"), [...pushBit(0), ...pushBit(1)])), c.setLocal("p", c.i32_sub(c.getLocal("p"), c.i32_const(1))), c.call(opCopy, c.getLocal("base"), aux), c.call(opInit, c.getLocal("r")), c.block(c.loop(c.call(opAA, c.getLocal("r"), c.getLocal("r")), c.setLocal("cur", c.i32_load8_u(c.getLocal("p"))), c.if(c.getLocal("cur"), c.if(c.i32_eq(c.getLocal("cur"), c.i32_const(1)), c.call(opAB, c.getLocal("r"), aux, c.getLocal("r")), c.call(opAmB, c.getLocal("r"), aux, c.getLocal("r")))), c.br_if(1, c.i32_eq(c.getLocal("old0"), c.getLocal("p"))), c.setLocal("p", c.i32_sub(c.getLocal("p"), c.i32_const(1))), c.br(0))), c.i32_store(c.i32_const(0), c.getLocal("old0")));
+}
+//#endregion
+//#region src/build_multiexp.js
+function buildMultiexp(module, prefix, fnName, opAdd, opSub, n8b) {
+ const n8g = module.modules[prefix].n64 * 8;
+ const accReduce = module.alloc(n8g);
+ const aux = module.alloc(n8g);
+ function buildGetChunk() {
+ const f = module.addFunction(fnName + "_getChunk");
+ f.addParam("pScalar", "i32");
+ f.addParam("scalarSize", "i32");
+ f.addParam("startBit", "i32");
+ f.addParam("chunkSize", "i32");
+ f.addLocal("bitsToEnd", "i32");
+ f.addLocal("mask", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("bitsToEnd", c.i32_sub(c.i32_mul(c.getLocal("scalarSize"), c.i32_const(8)), c.getLocal("startBit"))), c.if(c.i32_gt_s(c.getLocal("chunkSize"), c.getLocal("bitsToEnd")), c.setLocal("mask", c.i32_sub(c.i32_shl(c.i32_const(1), c.getLocal("bitsToEnd")), c.i32_const(1))), c.setLocal("mask", c.i32_sub(c.i32_shl(c.i32_const(1), c.getLocal("chunkSize")), c.i32_const(1)))), c.i32_and(c.i32_shr_u(c.i32_load(c.i32_add(c.getLocal("pScalar"), c.i32_shr_u(c.getLocal("startBit"), c.i32_const(3))), 0, 0), c.i32_and(c.getLocal("startBit"), c.i32_const(7))), c.getLocal("mask")));
+ }
+ function buildRecode() {
+ const f = module.addFunction(fnName + "_recode");
+ f.addParam("pScalars", "i32");
+ f.addParam("scalarSize", "i32");
+ f.addParam("n", "i32");
+ f.addParam("chunkSize", "i32");
+ f.addParam("nChunks", "i32");
+ f.addParam("pCarry", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("j", "i32");
+ f.addLocal("nWin", "i32");
+ f.addLocal("itScalar", "i32");
+ f.addLocal("carry", "i32");
+ f.addLocal("raw", "i32");
+ f.addLocal("half", "i32");
+ f.addLocal("scalarBits", "i32");
+ f.addLocal("startBit", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("half", c.i32_shl(c.i32_const(1), c.i32_sub(c.getLocal("chunkSize"), c.i32_const(1)))), c.setLocal("scalarBits", c.i32_shl(c.getLocal("scalarSize"), c.i32_const(3))), c.setLocal("nWin", c.i32_add(c.getLocal("nChunks"), c.i32_const(1))), c.setLocal("itScalar", c.getLocal("pScalars")), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.setLocal("carry", c.i32_const(0)), c.setLocal("j", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("j"), c.getLocal("nWin"))), c.i32_store8(c.i32_add(c.getLocal("pCarry"), c.i32_add(c.i32_mul(c.getLocal("j"), c.getLocal("n")), c.getLocal("i"))), c.getLocal("carry")), c.setLocal("startBit", c.i32_mul(c.getLocal("j"), c.getLocal("chunkSize"))), c.if(c.i32_lt_s(c.getLocal("startBit"), c.getLocal("scalarBits")), c.setLocal("raw", c.call(fnName + "_getChunk", c.getLocal("itScalar"), c.getLocal("scalarSize"), c.getLocal("startBit"), c.getLocal("chunkSize"))), c.setLocal("raw", c.i32_const(0))), c.if(c.i32_ge_s(c.i32_add(c.getLocal("raw"), c.getLocal("carry")), c.getLocal("half")), c.setLocal("carry", c.i32_const(1)), c.setLocal("carry", c.i32_const(0))), c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))), c.br(0))), c.setLocal("itScalar", c.i32_add(c.getLocal("itScalar"), c.getLocal("scalarSize"))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ function buildMutiexpChunk() {
+ const f = module.addFunction(fnName + "_chunk");
+ f.addParam("pBases", "i32");
+ f.addParam("pScalars", "i32");
+ f.addParam("scalarSize", "i32");
+ f.addParam("pCarry", "i32");
+ f.addParam("n", "i32");
+ f.addParam("windowIdx", "i32");
+ f.addParam("chunkSize", "i32");
+ f.addParam("pr", "i32");
+ f.addLocal("itBase", "i32");
+ f.addLocal("itScalar", "i32");
+ f.addLocal("itCarry", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("j", "i32");
+ f.addLocal("nTable", "i32");
+ f.addLocal("full", "i32");
+ f.addLocal("scalarBits", "i32");
+ f.addLocal("startBit", "i32");
+ f.addLocal("pTable", "i32");
+ f.addLocal("raw", "i32");
+ f.addLocal("d", "i32");
+ f.addLocal("pIdxTable", "i32");
+ f.addLocal("itB", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.if(c.i32_eqz(c.getLocal("n")), [...c.call(prefix + "_zero", c.getLocal("pr")), ...c.ret([])]), c.setLocal("nTable", c.i32_shl(c.i32_const(1), c.i32_sub(c.getLocal("chunkSize"), c.i32_const(1)))), c.setLocal("full", c.i32_shl(c.i32_const(1), c.getLocal("chunkSize"))), c.setLocal("scalarBits", c.i32_shl(c.getLocal("scalarSize"), c.i32_const(3))), c.setLocal("startBit", c.i32_mul(c.getLocal("windowIdx"), c.getLocal("chunkSize"))), c.setLocal("pTable", c.i32_load(c.i32_const(0))), c.i32_store(c.i32_const(0), c.i32_add(c.getLocal("pTable"), c.i32_mul(c.getLocal("nTable"), c.i32_const(n8g)))), c.setLocal("j", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("j"), c.getLocal("nTable"))), c.call(prefix + "_zero", c.i32_add(c.getLocal("pTable"), c.i32_mul(c.getLocal("j"), c.i32_const(n8g)))), c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))), c.br(0))), c.setLocal("itBase", c.getLocal("pBases")), c.setLocal("itScalar", c.getLocal("pScalars")), c.setLocal("itCarry", c.i32_add(c.getLocal("pCarry"), c.i32_mul(c.getLocal("windowIdx"), c.getLocal("n")))), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.if(c.i32_lt_s(c.getLocal("startBit"), c.getLocal("scalarBits")), c.setLocal("raw", c.call(fnName + "_getChunk", c.getLocal("itScalar"), c.getLocal("scalarSize"), c.getLocal("startBit"), c.getLocal("chunkSize"))), c.setLocal("raw", c.i32_const(0))), c.setLocal("d", c.i32_add(c.getLocal("raw"), c.i32_load8_u(c.getLocal("itCarry")))), c.if(c.i32_ge_s(c.getLocal("d"), c.getLocal("nTable")), c.setLocal("d", c.i32_sub(c.getLocal("d"), c.getLocal("full")))), c.if(c.i32_gt_s(c.getLocal("d"), c.i32_const(0)), [...c.setLocal("pIdxTable", c.i32_add(c.getLocal("pTable"), c.i32_mul(c.i32_sub(c.getLocal("d"), c.i32_const(1)), c.i32_const(n8g)))), ...c.call(opAdd, c.getLocal("pIdxTable"), c.getLocal("itBase"), c.getLocal("pIdxTable"))], c.if(c.i32_lt_s(c.getLocal("d"), c.i32_const(0)), [...c.setLocal("pIdxTable", c.i32_add(c.getLocal("pTable"), c.i32_mul(c.i32_sub(c.i32_const(-1), c.getLocal("d")), c.i32_const(n8g)))), ...c.call(opSub, c.getLocal("pIdxTable"), c.getLocal("itBase"), c.getLocal("pIdxTable"))])), c.setLocal("itScalar", c.i32_add(c.getLocal("itScalar"), c.getLocal("scalarSize"))), c.setLocal("itCarry", c.i32_add(c.getLocal("itCarry"), c.i32_const(1))), c.setLocal("itBase", c.i32_add(c.getLocal("itBase"), c.i32_const(n8b))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))), c.setLocal("itB", c.i32_add(c.getLocal("pTable"), c.i32_mul(c.i32_sub(c.getLocal("nTable"), c.i32_const(1)), c.i32_const(n8g)))), c.call(prefix + "_copy", c.getLocal("itB"), c.getLocal("pr")), c.call(prefix + "_copy", c.getLocal("itB"), c.i32_const(accReduce)), c.setLocal("itB", c.i32_sub(c.getLocal("itB"), c.i32_const(n8g))), c.block(c.loop(c.br_if(1, c.i32_lt_u(c.getLocal("itB"), c.getLocal("pTable"))), c.call(prefix + "_add", c.i32_const(accReduce), c.getLocal("itB"), c.i32_const(accReduce)), c.call(prefix + "_add", c.getLocal("pr"), c.i32_const(accReduce), c.getLocal("pr")), c.setLocal("itB", c.i32_sub(c.getLocal("itB"), c.i32_const(n8g))), c.br(0))), c.i32_store(c.i32_const(0), c.getLocal("pTable")));
+ }
+ function buildMultiexp() {
+ const f = module.addFunction(fnName);
+ f.addParam("pBases", "i32");
+ f.addParam("pScalars", "i32");
+ f.addParam("scalarSize", "i32");
+ f.addParam("n", "i32");
+ f.addParam("pr", "i32");
+ f.addLocal("chunkSize", "i32");
+ f.addLocal("nChunks", "i32");
+ f.addLocal("nWin", "i32");
+ f.addLocal("pCarry", "i32");
+ f.addLocal("savedFree", "i32");
+ f.addLocal("windowIdx", "i32");
+ f.addLocal("j", "i32");
+ const c = f.getCodeBuilder();
+ const pTSizes = module.alloc([
+ 17,
+ 17,
+ 17,
+ 17,
+ 17,
+ 17,
+ 17,
+ 17,
+ 17,
+ 17,
+ 16,
+ 16,
+ 15,
+ 14,
+ 13,
+ 13,
+ 12,
+ 11,
+ 10,
+ 9,
+ 8,
+ 7,
+ 7,
+ 6,
+ 5,
+ 4,
+ 3,
+ 2,
+ 1,
+ 1,
+ 1,
+ 1
+ ]);
+ f.addCode(c.call(prefix + "_zero", c.getLocal("pr")), c.if(c.i32_eqz(c.getLocal("n")), c.ret([])), c.setLocal("chunkSize", c.i32_load8_u(c.i32_clz(c.getLocal("n")), pTSizes)), c.if(c.i32_lt_s(c.getLocal("chunkSize"), c.i32_const(2)), c.setLocal("chunkSize", c.i32_const(2))), c.setLocal("nChunks", c.i32_add(c.i32_div_u(c.i32_sub(c.i32_shl(c.getLocal("scalarSize"), c.i32_const(3)), c.i32_const(1)), c.getLocal("chunkSize")), c.i32_const(1))), c.setLocal("nWin", c.i32_add(c.getLocal("nChunks"), c.i32_const(1))), c.setLocal("savedFree", c.i32_load(c.i32_const(0))), c.setLocal("pCarry", c.getLocal("savedFree")), c.i32_store(c.i32_const(0), c.i32_and(c.i32_add(c.i32_add(c.getLocal("savedFree"), c.i32_mul(c.getLocal("nWin"), c.getLocal("n"))), c.i32_const(3)), c.i32_const(-4))), c.call(fnName + "_recode", c.getLocal("pScalars"), c.getLocal("scalarSize"), c.getLocal("n"), c.getLocal("chunkSize"), c.getLocal("nChunks"), c.getLocal("pCarry")), c.setLocal("windowIdx", c.getLocal("nChunks")), c.block(c.loop(c.br_if(1, c.i32_lt_s(c.getLocal("windowIdx"), c.i32_const(0))), c.if(c.i32_eqz(c.call(prefix + "_isZero", c.getLocal("pr"))), [...c.setLocal("j", c.i32_const(0)), ...c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("j"), c.getLocal("chunkSize"))), c.call(prefix + "_double", c.getLocal("pr"), c.getLocal("pr")), c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))), c.br(0)))]), c.call(fnName + "_chunk", c.getLocal("pBases"), c.getLocal("pScalars"), c.getLocal("scalarSize"), c.getLocal("pCarry"), c.getLocal("n"), c.getLocal("windowIdx"), c.getLocal("chunkSize"), c.i32_const(aux)), c.call(prefix + "_add", c.getLocal("pr"), c.i32_const(aux), c.getLocal("pr")), c.setLocal("windowIdx", c.i32_sub(c.getLocal("windowIdx"), c.i32_const(1))), c.br(0))), c.i32_store(c.i32_const(0), c.getLocal("savedFree")));
+ }
+ buildGetChunk();
+ buildRecode();
+ buildMutiexpChunk();
+ buildMultiexp();
+ module.exportFunction(fnName);
+ module.exportFunction(fnName + "_chunk");
+}
+//#endregion
+//#region src/build_curve_jacobian_a0.js
+function buildCurve(module, prefix, prefixField, pB) {
+ const n64 = module.modules[prefixField].n64;
+ const n8 = n64 * 8;
+ if (module.modules[prefix]) return prefix;
+ module.modules[prefix] = { n64: n64 * 3 };
+ function buildIsZero() {
+ const f = module.addFunction(prefix + "_isZero");
+ f.addParam("p1", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefixField + "_isZero", c.i32_add(c.getLocal("p1"), c.i32_const(n8 * 2))));
+ }
+ function buildIsZeroAffine() {
+ const f = module.addFunction(prefix + "_isZeroAffine");
+ f.addParam("p1", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.i32_and(c.call(prefixField + "_isZero", c.getLocal("p1")), c.call(prefixField + "_isZero", c.i32_add(c.getLocal("p1"), c.i32_const(n8)))));
+ }
+ function buildCopy() {
+ const f = module.addFunction(prefix + "_copy");
+ f.addParam("ps", "i32");
+ f.addParam("pd", "i32");
+ const c = f.getCodeBuilder();
+ for (let i = 0; i < n64 * 3; i++) f.addCode(c.i64_store(c.getLocal("pd"), i * 8, c.i64_load(c.getLocal("ps"), i * 8)));
+ }
+ function buildCopyAffine() {
+ const f = module.addFunction(prefix + "_copyAffine");
+ f.addParam("ps", "i32");
+ f.addParam("pd", "i32");
+ const c = f.getCodeBuilder();
+ for (let i = 0; i < n64 * 2; i++) f.addCode(c.i64_store(c.getLocal("pd"), i * 8, c.i64_load(c.getLocal("ps"), i * 8)));
+ }
+ function buildZero() {
+ const f = module.addFunction(prefix + "_zero");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefixField + "_zero", c.getLocal("pr")));
+ f.addCode(c.call(prefixField + "_one", c.i32_add(c.getLocal("pr"), c.i32_const(n8))));
+ f.addCode(c.call(prefixField + "_zero", c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2))));
+ }
+ function buildZeroAffine() {
+ const f = module.addFunction(prefix + "_zeroAffine");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefixField + "_zero", c.getLocal("pr")));
+ f.addCode(c.call(prefixField + "_zero", c.i32_add(c.getLocal("pr"), c.i32_const(n8))));
+ }
+ function buildEq() {
+ const f = module.addFunction(prefix + "_eq");
+ f.addParam("p1", "i32");
+ f.addParam("p2", "i32");
+ f.setReturnType("i32");
+ f.addLocal("z1", "i32");
+ f.addLocal("z2", "i32");
+ const c = f.getCodeBuilder();
+ const x1 = c.getLocal("p1");
+ const y1 = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ f.addCode(c.setLocal("z1", c.i32_add(c.getLocal("p1"), c.i32_const(n8 * 2))));
+ const z1 = c.getLocal("z1");
+ const x2 = c.getLocal("p2");
+ const y2 = c.i32_add(c.getLocal("p2"), c.i32_const(n8));
+ f.addCode(c.setLocal("z2", c.i32_add(c.getLocal("p2"), c.i32_const(n8 * 2))));
+ const z2 = c.getLocal("z2");
+ const Z1Z1 = c.i32_const(module.alloc(n8));
+ const Z2Z2 = c.i32_const(module.alloc(n8));
+ const U1 = c.i32_const(module.alloc(n8));
+ const U2 = c.i32_const(module.alloc(n8));
+ const Z1_cubed = c.i32_const(module.alloc(n8));
+ const Z2_cubed = c.i32_const(module.alloc(n8));
+ const S1 = c.i32_const(module.alloc(n8));
+ const S2 = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZero", c.getLocal("p1")), c.ret(c.call(prefix + "_isZero", c.getLocal("p2")))), c.if(c.call(prefix + "_isZero", c.getLocal("p2")), c.ret(c.i32_const(0))), c.if(c.call(prefixField + "_isOne", z1), c.ret(c.call(prefix + "_eqMixed", c.getLocal("p2"), c.getLocal("p1")))), c.if(c.call(prefixField + "_isOne", z2), c.ret(c.call(prefix + "_eqMixed", c.getLocal("p1"), c.getLocal("p2")))), c.call(prefixField + "_square", z1, Z1Z1), c.call(prefixField + "_square", z2, Z2Z2), c.call(prefixField + "_mul", x1, Z2Z2, U1), c.call(prefixField + "_mul", x2, Z1Z1, U2), c.call(prefixField + "_mul", z1, Z1Z1, Z1_cubed), c.call(prefixField + "_mul", z2, Z2Z2, Z2_cubed), c.call(prefixField + "_mul", y1, Z2_cubed, S1), c.call(prefixField + "_mul", y2, Z1_cubed, S2), c.if(c.call(prefixField + "_eq", U1, U2), c.if(c.call(prefixField + "_eq", S1, S2), c.ret(c.i32_const(1)))), c.ret(c.i32_const(0)));
+ }
+ function buildEqMixed() {
+ const f = module.addFunction(prefix + "_eqMixed");
+ f.addParam("p1", "i32");
+ f.addParam("p2", "i32");
+ f.setReturnType("i32");
+ f.addLocal("z1", "i32");
+ const c = f.getCodeBuilder();
+ const x1 = c.getLocal("p1");
+ const y1 = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ f.addCode(c.setLocal("z1", c.i32_add(c.getLocal("p1"), c.i32_const(n8 * 2))));
+ const z1 = c.getLocal("z1");
+ const x2 = c.getLocal("p2");
+ const y2 = c.i32_add(c.getLocal("p2"), c.i32_const(n8));
+ const Z1Z1 = c.i32_const(module.alloc(n8));
+ const U2 = c.i32_const(module.alloc(n8));
+ const Z1_cubed = c.i32_const(module.alloc(n8));
+ const S2 = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZero", c.getLocal("p1")), c.ret(c.call(prefix + "_isZeroAffine", c.getLocal("p2")))), c.if(c.call(prefix + "_isZeroAffine", c.getLocal("p2")), c.ret(c.i32_const(0))), c.if(c.call(prefixField + "_isOne", z1), c.ret(c.call(prefix + "_eqAffine", c.getLocal("p1"), c.getLocal("p2")))), c.call(prefixField + "_square", z1, Z1Z1), c.call(prefixField + "_mul", x2, Z1Z1, U2), c.call(prefixField + "_mul", z1, Z1Z1, Z1_cubed), c.call(prefixField + "_mul", y2, Z1_cubed, S2), c.if(c.call(prefixField + "_eq", x1, U2), c.if(c.call(prefixField + "_eq", y1, S2), c.ret(c.i32_const(1)))), c.ret(c.i32_const(0)));
+ }
+ function buildDouble() {
+ const f = module.addFunction(prefix + "_double");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("p1");
+ const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ const z = c.i32_add(c.getLocal("p1"), c.i32_const(n8 * 2));
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
+ const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2));
+ const A = c.i32_const(module.alloc(n8));
+ const B = c.i32_const(module.alloc(n8));
+ const C = c.i32_const(module.alloc(n8));
+ const D = c.i32_const(module.alloc(n8));
+ const E = c.i32_const(module.alloc(n8));
+ const F = c.i32_const(module.alloc(n8));
+ const G = c.i32_const(module.alloc(n8));
+ const eightC = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZero", c.getLocal("p1")), [...c.call(prefix + "_copy", c.getLocal("p1"), c.getLocal("pr")), ...c.ret([])]), c.if(c.call(prefixField + "_isOne", z), [...c.ret(c.call(prefix + "_doubleAffine", c.getLocal("p1"), c.getLocal("pr"))), ...c.ret([])]), c.call(prefixField + "_square", x, A), c.call(prefixField + "_square", y, B), c.call(prefixField + "_square", B, C), c.call(prefixField + "_add", x, B, D), c.call(prefixField + "_square", D, D), c.call(prefixField + "_sub", D, A, D), c.call(prefixField + "_sub", D, C, D), c.call(prefixField + "_add", D, D, D), c.call(prefixField + "_add", A, A, E), c.call(prefixField + "_add", E, A, E), c.call(prefixField + "_square", E, F), c.call(prefixField + "_mul", y, z, G), c.call(prefixField + "_add", D, D, x3), c.call(prefixField + "_sub", F, x3, x3), c.call(prefixField + "_add", C, C, eightC), c.call(prefixField + "_add", eightC, eightC, eightC), c.call(prefixField + "_add", eightC, eightC, eightC), c.call(prefixField + "_sub", D, x3, y3), c.call(prefixField + "_mul", y3, E, y3), c.call(prefixField + "_sub", y3, eightC, y3), c.call(prefixField + "_add", G, G, z3));
+ }
+ function buildDoubleAffine() {
+ const f = module.addFunction(prefix + "_doubleAffine");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("p1");
+ const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
+ const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2));
+ const XX = c.i32_const(module.alloc(n8));
+ const YY = c.i32_const(module.alloc(n8));
+ const YYYY = c.i32_const(module.alloc(n8));
+ const S = c.i32_const(module.alloc(n8));
+ const M = c.i32_const(module.alloc(n8));
+ const eightYYYY = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZeroAffine", c.getLocal("p1")), [...c.call(prefix + "_toJacobian", c.getLocal("p1"), c.getLocal("pr")), ...c.ret([])]), c.call(prefixField + "_square", x, XX), c.call(prefixField + "_square", y, YY), c.call(prefixField + "_square", YY, YYYY), c.call(prefixField + "_add", x, YY, S), c.call(prefixField + "_square", S, S), c.call(prefixField + "_sub", S, XX, S), c.call(prefixField + "_sub", S, YYYY, S), c.call(prefixField + "_add", S, S, S), c.call(prefixField + "_add", XX, XX, M), c.call(prefixField + "_add", M, XX, M), c.call(prefixField + "_add", y, y, z3), c.call(prefixField + "_square", M, x3), c.call(prefixField + "_sub", x3, S, x3), c.call(prefixField + "_sub", x3, S, x3), c.call(prefixField + "_add", YYYY, YYYY, eightYYYY), c.call(prefixField + "_add", eightYYYY, eightYYYY, eightYYYY), c.call(prefixField + "_add", eightYYYY, eightYYYY, eightYYYY), c.call(prefixField + "_sub", S, x3, y3), c.call(prefixField + "_mul", y3, M, y3), c.call(prefixField + "_sub", y3, eightYYYY, y3));
+ }
+ function buildEqAffine() {
+ const f = module.addFunction(prefix + "_eqAffine");
+ f.addParam("p1", "i32");
+ f.addParam("p2", "i32");
+ f.setReturnType("i32");
+ f.addLocal("z1", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.ret(c.i32_and(c.call(prefixField + "_eq", c.getLocal("p1"), c.getLocal("p2")), c.call(prefixField + "_eq", c.i32_add(c.getLocal("p1"), c.i32_const(n8)), c.i32_add(c.getLocal("p2"), c.i32_const(n8))))));
+ }
+ function buildToMontgomery() {
+ const f = module.addFunction(prefix + "_toMontgomery");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefixField + "_toMontgomery", c.getLocal("p1"), c.getLocal("pr")));
+ for (let i = 1; i < 3; i++) f.addCode(c.call(prefixField + "_toMontgomery", c.i32_add(c.getLocal("p1"), c.i32_const(i * n8)), c.i32_add(c.getLocal("pr"), c.i32_const(i * n8))));
+ }
+ function buildToMontgomeryAffine() {
+ const f = module.addFunction(prefix + "_toMontgomeryAffine");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefixField + "_toMontgomery", c.getLocal("p1"), c.getLocal("pr")));
+ for (let i = 1; i < 2; i++) f.addCode(c.call(prefixField + "_toMontgomery", c.i32_add(c.getLocal("p1"), c.i32_const(i * n8)), c.i32_add(c.getLocal("pr"), c.i32_const(i * n8))));
+ }
+ function buildFromMontgomery() {
+ const f = module.addFunction(prefix + "_fromMontgomery");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefixField + "_fromMontgomery", c.getLocal("p1"), c.getLocal("pr")));
+ for (let i = 1; i < 3; i++) f.addCode(c.call(prefixField + "_fromMontgomery", c.i32_add(c.getLocal("p1"), c.i32_const(i * n8)), c.i32_add(c.getLocal("pr"), c.i32_const(i * n8))));
+ }
+ function buildFromMontgomeryAffine() {
+ const f = module.addFunction(prefix + "_fromMontgomeryAffine");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(prefixField + "_fromMontgomery", c.getLocal("p1"), c.getLocal("pr")));
+ for (let i = 1; i < 2; i++) f.addCode(c.call(prefixField + "_fromMontgomery", c.i32_add(c.getLocal("p1"), c.i32_const(i * n8)), c.i32_add(c.getLocal("pr"), c.i32_const(i * n8))));
+ }
+ function buildAdd() {
+ const f = module.addFunction(prefix + "_add");
+ f.addParam("p1", "i32");
+ f.addParam("p2", "i32");
+ f.addParam("pr", "i32");
+ f.addLocal("z1", "i32");
+ f.addLocal("z2", "i32");
+ const c = f.getCodeBuilder();
+ const x1 = c.getLocal("p1");
+ const y1 = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ f.addCode(c.setLocal("z1", c.i32_add(c.getLocal("p1"), c.i32_const(n8 * 2))));
+ const z1 = c.getLocal("z1");
+ const x2 = c.getLocal("p2");
+ const y2 = c.i32_add(c.getLocal("p2"), c.i32_const(n8));
+ f.addCode(c.setLocal("z2", c.i32_add(c.getLocal("p2"), c.i32_const(n8 * 2))));
+ const z2 = c.getLocal("z2");
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
+ const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2));
+ const Z1Z1 = c.i32_const(module.alloc(n8));
+ const Z2Z2 = c.i32_const(module.alloc(n8));
+ const U1 = c.i32_const(module.alloc(n8));
+ const U2 = c.i32_const(module.alloc(n8));
+ const Z1_cubed = c.i32_const(module.alloc(n8));
+ const Z2_cubed = c.i32_const(module.alloc(n8));
+ const S1 = c.i32_const(module.alloc(n8));
+ const S2 = c.i32_const(module.alloc(n8));
+ const H = c.i32_const(module.alloc(n8));
+ const S2_minus_S1 = c.i32_const(module.alloc(n8));
+ const I = c.i32_const(module.alloc(n8));
+ const J = c.i32_const(module.alloc(n8));
+ const r = c.i32_const(module.alloc(n8));
+ const r2 = c.i32_const(module.alloc(n8));
+ const V = c.i32_const(module.alloc(n8));
+ const V2 = c.i32_const(module.alloc(n8));
+ const S1_J2 = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZero", c.getLocal("p1")), [...c.call(prefix + "_copy", c.getLocal("p2"), c.getLocal("pr")), ...c.ret([])]), c.if(c.call(prefix + "_isZero", c.getLocal("p2")), [...c.call(prefix + "_copy", c.getLocal("p1"), c.getLocal("pr")), ...c.ret([])]), c.if(c.call(prefixField + "_isOne", z1), [...c.call(prefix + "_addMixed", x2, x1, x3), ...c.ret([])]), c.if(c.call(prefixField + "_isOne", z2), [...c.call(prefix + "_addMixed", x1, x2, x3), ...c.ret([])]), c.call(prefixField + "_square", z1, Z1Z1), c.call(prefixField + "_square", z2, Z2Z2), c.call(prefixField + "_mul", x1, Z2Z2, U1), c.call(prefixField + "_mul", x2, Z1Z1, U2), c.call(prefixField + "_mul", z1, Z1Z1, Z1_cubed), c.call(prefixField + "_mul", z2, Z2Z2, Z2_cubed), c.call(prefixField + "_mul", y1, Z2_cubed, S1), c.call(prefixField + "_mul", y2, Z1_cubed, S2), c.if(c.call(prefixField + "_eq", U1, U2), c.if(c.call(prefixField + "_eq", S1, S2), [...c.call(prefix + "_double", c.getLocal("p1"), c.getLocal("pr")), ...c.ret([])])), c.call(prefixField + "_sub", U2, U1, H), c.call(prefixField + "_sub", S2, S1, S2_minus_S1), c.call(prefixField + "_add", H, H, I), c.call(prefixField + "_square", I, I), c.call(prefixField + "_mul", H, I, J), c.call(prefixField + "_add", S2_minus_S1, S2_minus_S1, r), c.call(prefixField + "_mul", U1, I, V), c.call(prefixField + "_square", r, r2), c.call(prefixField + "_add", V, V, V2), c.call(prefixField + "_sub", r2, J, x3), c.call(prefixField + "_sub", x3, V2, x3), c.call(prefixField + "_mul", S1, J, S1_J2), c.call(prefixField + "_add", S1_J2, S1_J2, S1_J2), c.call(prefixField + "_sub", V, x3, y3), c.call(prefixField + "_mul", y3, r, y3), c.call(prefixField + "_sub", y3, S1_J2, y3), c.call(prefixField + "_add", z1, z2, z3), c.call(prefixField + "_square", z3, z3), c.call(prefixField + "_sub", z3, Z1Z1, z3), c.call(prefixField + "_sub", z3, Z2Z2, z3), c.call(prefixField + "_mul", z3, H, z3));
+ }
+ function buildAddMixed() {
+ const f = module.addFunction(prefix + "_addMixed");
+ f.addParam("p1", "i32");
+ f.addParam("p2", "i32");
+ f.addParam("pr", "i32");
+ f.addLocal("z1", "i32");
+ const c = f.getCodeBuilder();
+ const x1 = c.getLocal("p1");
+ const y1 = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ f.addCode(c.setLocal("z1", c.i32_add(c.getLocal("p1"), c.i32_const(n8 * 2))));
+ const z1 = c.getLocal("z1");
+ const x2 = c.getLocal("p2");
+ const y2 = c.i32_add(c.getLocal("p2"), c.i32_const(n8));
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
+ const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2));
+ const Z1Z1 = c.i32_const(module.alloc(n8));
+ const U2 = c.i32_const(module.alloc(n8));
+ const Z1_cubed = c.i32_const(module.alloc(n8));
+ const S2 = c.i32_const(module.alloc(n8));
+ const H = c.i32_const(module.alloc(n8));
+ const HH = c.i32_const(module.alloc(n8));
+ const S2_minus_y1 = c.i32_const(module.alloc(n8));
+ const I = c.i32_const(module.alloc(n8));
+ const J = c.i32_const(module.alloc(n8));
+ const r = c.i32_const(module.alloc(n8));
+ const r2 = c.i32_const(module.alloc(n8));
+ const V = c.i32_const(module.alloc(n8));
+ const V2 = c.i32_const(module.alloc(n8));
+ const y1_J2 = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZero", c.getLocal("p1")), [
+ ...c.call(prefix + "_copyAffine", c.getLocal("p2"), c.getLocal("pr")),
+ ...c.call(prefixField + "_one", c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2))),
+ ...c.ret([])
+ ]), c.if(c.call(prefix + "_isZeroAffine", c.getLocal("p2")), [...c.call(prefix + "_copy", c.getLocal("p1"), c.getLocal("pr")), ...c.ret([])]), c.if(c.call(prefixField + "_isOne", z1), [...c.call(prefix + "_addAffine", x1, x2, x3), ...c.ret([])]), c.call(prefixField + "_square", z1, Z1Z1), c.call(prefixField + "_mul", x2, Z1Z1, U2), c.call(prefixField + "_mul", z1, Z1Z1, Z1_cubed), c.call(prefixField + "_mul", y2, Z1_cubed, S2), c.if(c.call(prefixField + "_eq", x1, U2), c.if(c.call(prefixField + "_eq", y1, S2), [...c.call(prefix + "_doubleAffine", c.getLocal("p2"), c.getLocal("pr")), ...c.ret([])])), c.call(prefixField + "_sub", U2, x1, H), c.call(prefixField + "_sub", S2, y1, S2_minus_y1), c.call(prefixField + "_square", H, HH), c.call(prefixField + "_add", HH, HH, I), c.call(prefixField + "_add", I, I, I), c.call(prefixField + "_mul", H, I, J), c.call(prefixField + "_add", S2_minus_y1, S2_minus_y1, r), c.call(prefixField + "_mul", x1, I, V), c.call(prefixField + "_square", r, r2), c.call(prefixField + "_add", V, V, V2), c.call(prefixField + "_sub", r2, J, x3), c.call(prefixField + "_sub", x3, V2, x3), c.call(prefixField + "_mul", y1, J, y1_J2), c.call(prefixField + "_add", y1_J2, y1_J2, y1_J2), c.call(prefixField + "_sub", V, x3, y3), c.call(prefixField + "_mul", y3, r, y3), c.call(prefixField + "_sub", y3, y1_J2, y3), c.call(prefixField + "_add", z1, H, z3), c.call(prefixField + "_square", z3, z3), c.call(prefixField + "_sub", z3, Z1Z1, z3), c.call(prefixField + "_sub", z3, HH, z3));
+ }
+ function buildAddAffine() {
+ const f = module.addFunction(prefix + "_addAffine");
+ f.addParam("p1", "i32");
+ f.addParam("p2", "i32");
+ f.addParam("pr", "i32");
+ f.addLocal("z1", "i32");
+ const c = f.getCodeBuilder();
+ const x1 = c.getLocal("p1");
+ const y1 = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ f.addCode(c.setLocal("z1", c.i32_add(c.getLocal("p1"), c.i32_const(n8 * 2))));
+ const x2 = c.getLocal("p2");
+ const y2 = c.i32_add(c.getLocal("p2"), c.i32_const(n8));
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
+ const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2));
+ const H = c.i32_const(module.alloc(n8));
+ const HH = c.i32_const(module.alloc(n8));
+ const y2_minus_y1 = c.i32_const(module.alloc(n8));
+ const I = c.i32_const(module.alloc(n8));
+ const J = c.i32_const(module.alloc(n8));
+ const r = c.i32_const(module.alloc(n8));
+ const r2 = c.i32_const(module.alloc(n8));
+ const V = c.i32_const(module.alloc(n8));
+ const V2 = c.i32_const(module.alloc(n8));
+ const y1_J2 = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZeroAffine", c.getLocal("p1")), [
+ ...c.call(prefix + "_copyAffine", c.getLocal("p2"), c.getLocal("pr")),
+ ...c.call(prefixField + "_one", c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2))),
+ ...c.ret([])
+ ]), c.if(c.call(prefix + "_isZeroAffine", c.getLocal("p2")), [
+ ...c.call(prefix + "_copyAffine", c.getLocal("p1"), c.getLocal("pr")),
+ ...c.call(prefixField + "_one", c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2))),
+ ...c.ret([])
+ ]), c.if(c.call(prefixField + "_eq", x1, x2), c.if(c.call(prefixField + "_eq", y1, y2), [...c.call(prefix + "_doubleAffine", c.getLocal("p2"), c.getLocal("pr")), ...c.ret([])])), c.call(prefixField + "_sub", x2, x1, H), c.call(prefixField + "_sub", y2, y1, y2_minus_y1), c.call(prefixField + "_square", H, HH), c.call(prefixField + "_add", HH, HH, I), c.call(prefixField + "_add", I, I, I), c.call(prefixField + "_mul", H, I, J), c.call(prefixField + "_add", y2_minus_y1, y2_minus_y1, r), c.call(prefixField + "_mul", x1, I, V), c.call(prefixField + "_square", r, r2), c.call(prefixField + "_add", V, V, V2), c.call(prefixField + "_sub", r2, J, x3), c.call(prefixField + "_sub", x3, V2, x3), c.call(prefixField + "_mul", y1, J, y1_J2), c.call(prefixField + "_add", y1_J2, y1_J2, y1_J2), c.call(prefixField + "_sub", V, x3, y3), c.call(prefixField + "_mul", y3, r, y3), c.call(prefixField + "_sub", y3, y1_J2, y3), c.call(prefixField + "_add", H, H, z3));
+ }
+ function buildNeg() {
+ const f = module.addFunction(prefix + "_neg");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("p1");
+ const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ const z = c.i32_add(c.getLocal("p1"), c.i32_const(n8 * 2));
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
+ const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2));
+ f.addCode(c.call(prefixField + "_copy", x, x3), c.call(prefixField + "_neg", y, y3), c.call(prefixField + "_copy", z, z3));
+ }
+ function buildNegAffine() {
+ const f = module.addFunction(prefix + "_negAffine");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("p1");
+ const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
+ f.addCode(c.call(prefixField + "_copy", x, x3), c.call(prefixField + "_neg", y, y3));
+ }
+ function buildSub() {
+ const f = module.addFunction(prefix + "_sub");
+ f.addParam("p1", "i32");
+ f.addParam("p2", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const AUX = c.i32_const(module.alloc(n8 * 3));
+ f.addCode(c.call(prefix + "_neg", c.getLocal("p2"), AUX), c.call(prefix + "_add", c.getLocal("p1"), AUX, c.getLocal("pr")));
+ }
+ function buildSubMixed() {
+ const f = module.addFunction(prefix + "_subMixed");
+ f.addParam("p1", "i32");
+ f.addParam("p2", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const AUX = c.i32_const(module.alloc(n8 * 3));
+ f.addCode(c.call(prefix + "_negAffine", c.getLocal("p2"), AUX), c.call(prefix + "_addMixed", c.getLocal("p1"), AUX, c.getLocal("pr")));
+ }
+ function buildSubAffine() {
+ const f = module.addFunction(prefix + "_subAffine");
+ f.addParam("p1", "i32");
+ f.addParam("p2", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const AUX = c.i32_const(module.alloc(n8 * 3));
+ f.addCode(c.call(prefix + "_negAffine", c.getLocal("p2"), AUX), c.call(prefix + "_addAffine", c.getLocal("p1"), AUX, c.getLocal("pr")));
+ }
+ function buildNormalize() {
+ const f = module.addFunction(prefix + "_normalize");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("p1");
+ const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ const z = c.i32_add(c.getLocal("p1"), c.i32_const(n8 * 2));
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
+ const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2));
+ const Z_inv = c.i32_const(module.alloc(n8));
+ const Z2_inv = c.i32_const(module.alloc(n8));
+ const Z3_inv = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZero", c.getLocal("p1")), c.call(prefix + "_zero", c.getLocal("pr")), [
+ ...c.call(prefixField + "_inverse", z, Z_inv),
+ ...c.call(prefixField + "_square", Z_inv, Z2_inv),
+ ...c.call(prefixField + "_mul", Z_inv, Z2_inv, Z3_inv),
+ ...c.call(prefixField + "_mul", x, Z2_inv, x3),
+ ...c.call(prefixField + "_mul", y, Z3_inv, y3),
+ ...c.call(prefixField + "_one", z3)
+ ]));
+ }
+ function buildToAffine() {
+ const f = module.addFunction(prefix + "_toAffine");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("p1");
+ const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ const z = c.i32_add(c.getLocal("p1"), c.i32_const(n8 * 2));
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
+ const Z_inv = c.i32_const(module.alloc(n8));
+ const Z2_inv = c.i32_const(module.alloc(n8));
+ const Z3_inv = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZero", c.getLocal("p1")), [...c.call(prefixField + "_zero", x3), ...c.call(prefixField + "_zero", y3)], [
+ ...c.call(prefixField + "_inverse", z, Z_inv),
+ ...c.call(prefixField + "_square", Z_inv, Z2_inv),
+ ...c.call(prefixField + "_mul", Z_inv, Z2_inv, Z3_inv),
+ ...c.call(prefixField + "_mul", x, Z2_inv, x3),
+ ...c.call(prefixField + "_mul", y, Z3_inv, y3)
+ ]));
+ }
+ function buildToJacobian() {
+ const f = module.addFunction(prefix + "_toJacobian");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("p1");
+ const y = c.i32_add(c.getLocal("p1"), c.i32_const(n8));
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8));
+ const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2));
+ f.addCode(c.if(c.call(prefix + "_isZeroAffine", c.getLocal("p1")), c.call(prefix + "_zero", c.getLocal("pr")), [
+ ...c.call(prefixField + "_one", z3),
+ ...c.call(prefixField + "_copy", y, y3),
+ ...c.call(prefixField + "_copy", x, x3)
+ ]));
+ }
+ function buildBatchToAffine() {
+ const f = module.addFunction(prefix + "_batchToAffine");
+ f.addParam("pIn", "i32");
+ f.addParam("n", "i32");
+ f.addParam("pOut", "i32");
+ f.addLocal("pAux", "i32");
+ f.addLocal("itIn", "i32");
+ f.addLocal("itAux", "i32");
+ f.addLocal("itOut", "i32");
+ f.addLocal("i", "i32");
+ const c = f.getCodeBuilder();
+ const tmp = c.i32_const(module.alloc(n8));
+ f.addCode(c.setLocal("pAux", c.i32_load(c.i32_const(0))), c.i32_store(c.i32_const(0), c.i32_add(c.getLocal("pAux"), c.i32_mul(c.getLocal("n"), c.i32_const(n8)))), c.call(prefixField + "_batchInverse", c.i32_add(c.getLocal("pIn"), c.i32_const(n8 * 2)), c.i32_const(n8 * 3), c.getLocal("n"), c.getLocal("pAux"), c.i32_const(n8)), c.setLocal("itIn", c.getLocal("pIn")), c.setLocal("itAux", c.getLocal("pAux")), c.setLocal("itOut", c.getLocal("pOut")), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.if(c.call(prefixField + "_isZero", c.getLocal("itAux")), [...c.call(prefixField + "_zero", c.getLocal("itOut")), ...c.call(prefixField + "_zero", c.i32_add(c.getLocal("itOut"), c.i32_const(n8)))], [
+ ...c.call(prefixField + "_mul", c.getLocal("itAux"), c.i32_add(c.getLocal("itIn"), c.i32_const(n8)), tmp),
+ ...c.call(prefixField + "_square", c.getLocal("itAux"), c.getLocal("itAux")),
+ ...c.call(prefixField + "_mul", c.getLocal("itAux"), c.getLocal("itIn"), c.getLocal("itOut")),
+ ...c.call(prefixField + "_mul", c.getLocal("itAux"), tmp, c.i32_add(c.getLocal("itOut"), c.i32_const(n8)))
+ ]), c.setLocal("itIn", c.i32_add(c.getLocal("itIn"), c.i32_const(n8 * 3))), c.setLocal("itOut", c.i32_add(c.getLocal("itOut"), c.i32_const(n8 * 2))), c.setLocal("itAux", c.i32_add(c.getLocal("itAux"), c.i32_const(n8))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))), c.i32_store(c.i32_const(0), c.getLocal("pAux")));
+ }
+ function buildReverseBytes() {
+ const f = module.addFunction(prefix + "__reverseBytes");
+ f.addParam("pIn", "i32");
+ f.addParam("n", "i32");
+ f.addParam("pOut", "i32");
+ f.addLocal("itOut", "i32");
+ f.addLocal("itIn", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("itOut", c.i32_sub(c.i32_add(c.getLocal("pOut"), c.getLocal("n")), c.i32_const(1))), c.setLocal("itIn", c.getLocal("pIn")), c.block(c.loop(c.br_if(1, c.i32_lt_s(c.getLocal("itOut"), c.getLocal("pOut"))), c.i32_store8(c.getLocal("itOut"), c.i32_load8_u(c.getLocal("itIn"))), c.setLocal("itOut", c.i32_sub(c.getLocal("itOut"), c.i32_const(1))), c.setLocal("itIn", c.i32_add(c.getLocal("itIn"), c.i32_const(1))), c.br(0))));
+ }
+ function buildLEMtoC() {
+ const f = module.addFunction(prefix + "_LEMtoC");
+ f.addParam("pIn", "i32");
+ f.addParam("pOut", "i32");
+ const c = f.getCodeBuilder();
+ const tmp = c.i32_const(module.alloc(n8));
+ f.addCode(c.if(c.call(prefix + "_isZeroAffine", c.getLocal("pIn")), [
+ ...c.call(prefixField + "_zero", c.getLocal("pOut")),
+ ...c.i32_store8(c.getLocal("pOut"), c.i32_const(64)),
+ ...c.ret([])
+ ]), c.call(prefixField + "_fromMontgomery", c.getLocal("pIn"), tmp), c.call(prefix + "__reverseBytes", tmp, c.i32_const(n8), c.getLocal("pOut")), c.if(c.i32_eq(c.call(prefixField + "_sign", c.i32_add(c.getLocal("pIn"), c.i32_const(n8))), c.i32_const(-1)), c.i32_store8(c.getLocal("pOut"), c.i32_or(c.i32_load8_u(c.getLocal("pOut")), c.i32_const(128)))));
+ }
+ function buildLEMtoU() {
+ const f = module.addFunction(prefix + "_LEMtoU");
+ f.addParam("pIn", "i32");
+ f.addParam("pOut", "i32");
+ const c = f.getCodeBuilder();
+ const pTmp = module.alloc(n8 * 2);
+ const tmp = c.i32_const(pTmp);
+ const tmpX = c.i32_const(pTmp);
+ const tmpY = c.i32_const(pTmp + n8);
+ f.addCode(c.if(c.call(prefix + "_isZeroAffine", c.getLocal("pIn")), [...c.call(prefix + "_zeroAffine", c.getLocal("pOut")), ...c.ret([])]), c.call(prefix + "_fromMontgomeryAffine", c.getLocal("pIn"), tmp), c.call(prefix + "__reverseBytes", tmpX, c.i32_const(n8), c.getLocal("pOut")), c.call(prefix + "__reverseBytes", tmpY, c.i32_const(n8), c.i32_add(c.getLocal("pOut"), c.i32_const(n8))));
+ }
+ function buildUtoLEM() {
+ const f = module.addFunction(prefix + "_UtoLEM");
+ f.addParam("pIn", "i32");
+ f.addParam("pOut", "i32");
+ const c = f.getCodeBuilder();
+ const pTmp = module.alloc(n8 * 2);
+ const tmp = c.i32_const(pTmp);
+ const tmpX = c.i32_const(pTmp);
+ const tmpY = c.i32_const(pTmp + n8);
+ f.addCode(c.if(c.i32_and(c.i32_load8_u(c.getLocal("pIn")), c.i32_const(64)), [...c.call(prefix + "_zeroAffine", c.getLocal("pOut")), ...c.ret([])]), c.call(prefix + "__reverseBytes", c.getLocal("pIn"), c.i32_const(n8), tmpX), c.call(prefix + "__reverseBytes", c.i32_add(c.getLocal("pIn"), c.i32_const(n8)), c.i32_const(n8), tmpY), c.call(prefix + "_toMontgomeryAffine", tmp, c.getLocal("pOut")));
+ }
+ function buildCtoLEM() {
+ const f = module.addFunction(prefix + "_CtoLEM");
+ f.addParam("pIn", "i32");
+ f.addParam("pOut", "i32");
+ f.addLocal("firstByte", "i32");
+ f.addLocal("greatest", "i32");
+ const c = f.getCodeBuilder();
+ const pTmp = module.alloc(n8 * 2);
+ const tmpX = c.i32_const(pTmp);
+ const tmpY = c.i32_const(pTmp + n8);
+ f.addCode(c.setLocal("firstByte", c.i32_load8_u(c.getLocal("pIn"))), c.if(c.i32_and(c.getLocal("firstByte"), c.i32_const(64)), [...c.call(prefix + "_zeroAffine", c.getLocal("pOut")), ...c.ret([])]), c.setLocal("greatest", c.i32_and(c.getLocal("firstByte"), c.i32_const(128))), c.call(prefixField + "_copy", c.getLocal("pIn"), tmpY), c.i32_store8(tmpY, c.i32_and(c.getLocal("firstByte"), c.i32_const(63))), c.call(prefix + "__reverseBytes", tmpY, c.i32_const(n8), tmpX), c.call(prefixField + "_toMontgomery", tmpX, c.getLocal("pOut")), c.call(prefixField + "_square", c.getLocal("pOut"), tmpY), c.call(prefixField + "_mul", c.getLocal("pOut"), tmpY, tmpY), c.call(prefixField + "_add", tmpY, c.i32_const(pB), tmpY), c.call(prefixField + "_sqrt", tmpY, tmpY), c.call(prefixField + "_neg", tmpY, tmpX), c.if(c.i32_eq(c.call(prefixField + "_sign", tmpY), c.i32_const(-1)), c.if(c.getLocal("greatest"), c.call(prefixField + "_copy", tmpY, c.i32_add(c.getLocal("pOut"), c.i32_const(n8))), c.call(prefixField + "_neg", tmpY, c.i32_add(c.getLocal("pOut"), c.i32_const(n8)))), c.if(c.getLocal("greatest"), c.call(prefixField + "_neg", tmpY, c.i32_add(c.getLocal("pOut"), c.i32_const(n8))), c.call(prefixField + "_copy", tmpY, c.i32_add(c.getLocal("pOut"), c.i32_const(n8))))));
+ }
+ function buildInCurveAffine() {
+ const f = module.addFunction(prefix + "_inCurveAffine");
+ f.addParam("pIn", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("pIn");
+ const y = c.i32_add(c.getLocal("pIn"), c.i32_const(n8));
+ const y2 = c.i32_const(module.alloc(n8));
+ const x3b = c.i32_const(module.alloc(n8));
+ f.addCode(c.call(prefixField + "_square", y, y2), c.call(prefixField + "_square", x, x3b), c.call(prefixField + "_mul", x, x3b, x3b), c.call(prefixField + "_add", x3b, c.i32_const(pB), x3b), c.ret(c.call(prefixField + "_eq", y2, x3b)));
+ }
+ function buildInCurve() {
+ const f = module.addFunction(prefix + "_inCurve");
+ f.addParam("pIn", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const aux = c.i32_const(module.alloc(n8 * 2));
+ f.addCode(c.call(prefix + "_toAffine", c.getLocal("pIn"), aux), c.ret(c.call(prefix + "_inCurveAffine", aux)));
+ }
+ buildIsZeroAffine();
+ buildIsZero();
+ buildZeroAffine();
+ buildZero();
+ buildCopyAffine();
+ buildCopy();
+ buildToJacobian();
+ buildEqAffine();
+ buildEqMixed();
+ buildEq();
+ buildDoubleAffine();
+ buildDouble();
+ buildAddAffine();
+ buildAddMixed();
+ buildAdd();
+ buildNegAffine();
+ buildNeg();
+ buildSubAffine();
+ buildSubMixed();
+ buildSub();
+ buildFromMontgomeryAffine();
+ buildFromMontgomery();
+ buildToMontgomeryAffine();
+ buildToMontgomery();
+ buildToAffine();
+ buildInCurveAffine();
+ buildInCurve();
+ buildBatchToAffine();
+ buildNormalize();
+ buildReverseBytes();
+ buildLEMtoU();
+ buildLEMtoC();
+ buildUtoLEM();
+ buildCtoLEM();
+ build_batchconvertion_default(module, prefix + "_batchLEMtoU", prefix + "_LEMtoU", n8 * 2, n8 * 2);
+ build_batchconvertion_default(module, prefix + "_batchLEMtoC", prefix + "_LEMtoC", n8 * 2, n8);
+ build_batchconvertion_default(module, prefix + "_batchUtoLEM", prefix + "_UtoLEM", n8 * 2, n8 * 2);
+ build_batchconvertion_default(module, prefix + "_batchCtoLEM", prefix + "_CtoLEM", n8, n8 * 2, true);
+ build_batchconvertion_default(module, prefix + "_batchToJacobian", prefix + "_toJacobian", n8 * 2, n8 * 3, true);
+ buildMultiexp(module, prefix, prefix + "_multiexp", prefix + "_add", prefix + "_sub", n8 * 3);
+ buildMultiexp(module, prefix, prefix + "_multiexpAffine", prefix + "_addMixed", prefix + "_subMixed", n8 * 2);
+ buildTimesScalarNAF(module, prefix + "_timesScalar", n8 * 3, prefix + "_add", prefix + "_double", prefix + "_sub", prefix + "_copy", prefix + "_zero");
+ buildTimesScalarNAF(module, prefix + "_timesScalarAffine", n8 * 2, prefix + "_addMixed", prefix + "_double", prefix + "_subMixed", prefix + "_copyAffine", prefix + "_zero");
+ module.exportFunction(prefix + "_isZero");
+ module.exportFunction(prefix + "_isZeroAffine");
+ module.exportFunction(prefix + "_eq");
+ module.exportFunction(prefix + "_eqMixed");
+ module.exportFunction(prefix + "_eqAffine");
+ module.exportFunction(prefix + "_copy");
+ module.exportFunction(prefix + "_copyAffine");
+ module.exportFunction(prefix + "_zero");
+ module.exportFunction(prefix + "_zeroAffine");
+ module.exportFunction(prefix + "_double");
+ module.exportFunction(prefix + "_doubleAffine");
+ module.exportFunction(prefix + "_add");
+ module.exportFunction(prefix + "_addMixed");
+ module.exportFunction(prefix + "_addAffine");
+ module.exportFunction(prefix + "_neg");
+ module.exportFunction(prefix + "_negAffine");
+ module.exportFunction(prefix + "_sub");
+ module.exportFunction(prefix + "_subMixed");
+ module.exportFunction(prefix + "_subAffine");
+ module.exportFunction(prefix + "_fromMontgomery");
+ module.exportFunction(prefix + "_fromMontgomeryAffine");
+ module.exportFunction(prefix + "_toMontgomery");
+ module.exportFunction(prefix + "_toMontgomeryAffine");
+ module.exportFunction(prefix + "_timesScalar");
+ module.exportFunction(prefix + "_timesScalarAffine");
+ module.exportFunction(prefix + "_normalize");
+ module.exportFunction(prefix + "_LEMtoU");
+ module.exportFunction(prefix + "_LEMtoC");
+ module.exportFunction(prefix + "_UtoLEM");
+ module.exportFunction(prefix + "_CtoLEM");
+ module.exportFunction(prefix + "_batchLEMtoU");
+ module.exportFunction(prefix + "_batchLEMtoC");
+ module.exportFunction(prefix + "_batchUtoLEM");
+ module.exportFunction(prefix + "_batchCtoLEM");
+ module.exportFunction(prefix + "_toAffine");
+ module.exportFunction(prefix + "_toJacobian");
+ module.exportFunction(prefix + "_batchToAffine");
+ module.exportFunction(prefix + "_batchToJacobian");
+ module.exportFunction(prefix + "_inCurve");
+ module.exportFunction(prefix + "_inCurveAffine");
+ return prefix;
+}
+//#endregion
+//#region src/build_fft.js
+function buildFFT(module, prefix, gPrefix, fPrefix, opGtimesF) {
+ const n8f = module.modules[fPrefix].n64 * 8;
+ const n8g = module.modules[gPrefix].n64 * 8;
+ const q = module.modules[fPrefix].q;
+ let rem = q - 1n;
+ let maxBits = 0;
+ while (!isOdd(rem)) {
+ maxBits++;
+ rem = rem >> 1n;
+ }
+ let nr = 2n;
+ while (modPow(nr, q >> 1n, q) === 1n) nr = nr + 1n;
+ const w = new Array(maxBits + 1);
+ w[maxBits] = modPow(nr, rem, q);
+ let n = maxBits - 1;
+ while (n >= 0) {
+ w[n] = modPow(w[n + 1], 2n, q);
+ n--;
+ }
+ const bytes = [];
+ const R = (1n << BigInt(n8f * 8)) % q;
+ for (let i = 0; i < w.length; i++) {
+ const m = w[i] * R % q;
+ bytes.push(...bigInt2BytesLE(m, n8f));
+ }
+ const ROOTs = module.alloc(bytes);
+ const i2 = new Array(maxBits + 1);
+ i2[0] = 1n;
+ for (let i = 1; i <= maxBits; i++) i2[i] = i2[i - 1] * 2n;
+ const bytesi2 = [];
+ for (let i = 0; i <= maxBits; i++) {
+ const m = modInv(i2[i], q) * R % q;
+ bytesi2.push(...bigInt2BytesLE(m, n8f));
+ }
+ const INV2 = module.alloc(bytesi2);
+ const shift = modPow(nr, 2n, q);
+ const bytesShiftToSmallM = [];
+ const bytesSConst = [];
+ for (let i = 0; i <= maxBits; i++) {
+ const shiftToSmallM = modPow(shift, 2n ** BigInt(i), q);
+ const sConst = modInv(q + 1n - shiftToSmallM, q);
+ bytesShiftToSmallM.push(...bigInt2BytesLE(shiftToSmallM * R % q, n8f));
+ bytesSConst.push(...bigInt2BytesLE(sConst * R % q, n8f));
+ }
+ const SHIFT_TO_M = module.alloc(bytesShiftToSmallM);
+ const SCONST = module.alloc(bytesSConst);
+ function rev(x) {
+ let r = 0;
+ for (let i = 0; i < 8; i++) if (x & 1 << i) r = r | 128 >> i;
+ return r;
+ }
+ const rtable = Array(256);
+ for (let i = 0; i < 256; i++) rtable[i] = rev(i);
+ const REVTABLE = module.alloc(rtable);
+ function buildLog2() {
+ const f = module.addFunction(prefix + "__log2");
+ f.addParam("n", "i32");
+ f.setReturnType("i32");
+ f.addLocal("bits", "i32");
+ f.addLocal("aux", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("aux", c.i32_shr_u(c.getLocal("n"), c.i32_const(1))));
+ f.addCode(c.setLocal("bits", c.i32_const(0)));
+ f.addCode(c.block(c.loop(c.br_if(1, c.i32_eqz(c.getLocal("aux"))), c.setLocal("aux", c.i32_shr_u(c.getLocal("aux"), c.i32_const(1))), c.setLocal("bits", c.i32_add(c.getLocal("bits"), c.i32_const(1))), c.br(0))));
+ f.addCode(c.if(c.i32_ne(c.getLocal("n"), c.i32_shl(c.i32_const(1), c.getLocal("bits"))), c.unreachable()));
+ f.addCode(c.if(c.i32_gt_u(c.getLocal("bits"), c.i32_const(maxBits)), c.unreachable()));
+ f.addCode(c.getLocal("bits"));
+ }
+ function buildFFT() {
+ const f = module.addFunction(prefix + "_fft");
+ f.addParam("px", "i32");
+ f.addParam("n", "i32");
+ f.addLocal("bits", "i32");
+ const c = f.getCodeBuilder();
+ const One = c.i32_const(module.alloc(n8f));
+ f.addCode(c.setLocal("bits", c.call(prefix + "__log2", c.getLocal("n"))), c.call(fPrefix + "_one", One), c.call(prefix + "_rawfft", c.getLocal("px"), c.getLocal("bits"), c.i32_const(0), One));
+ }
+ function buildIFFT() {
+ const f = module.addFunction(prefix + "_ifft");
+ f.addParam("px", "i32");
+ f.addParam("n", "i32");
+ f.addLocal("bits", "i32");
+ f.addLocal("pInv2", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("bits", c.call(prefix + "__log2", c.getLocal("n"))), c.setLocal("pInv2", c.i32_add(c.i32_const(INV2), c.i32_mul(c.getLocal("bits"), c.i32_const(n8f)))), c.call(prefix + "_rawfft", c.getLocal("px"), c.getLocal("bits"), c.i32_const(1), c.getLocal("pInv2")));
+ }
+ function buildRawFFT() {
+ const f = module.addFunction(prefix + "_rawfft");
+ f.addParam("px", "i32");
+ f.addParam("bits", "i32");
+ f.addParam("reverse", "i32");
+ f.addParam("mulFactor", "i32");
+ f.addLocal("s", "i32");
+ f.addLocal("k", "i32");
+ f.addLocal("j", "i32");
+ f.addLocal("m", "i32");
+ f.addLocal("mdiv2", "i32");
+ f.addLocal("n", "i32");
+ f.addLocal("pwm", "i32");
+ f.addLocal("idx1", "i32");
+ f.addLocal("idx2", "i32");
+ const c = f.getCodeBuilder();
+ const W = c.i32_const(module.alloc(n8f));
+ const T = c.i32_const(module.alloc(n8g));
+ const U = c.i32_const(module.alloc(n8g));
+ f.addCode(c.call(prefix + "__reversePermutation", c.getLocal("px"), c.getLocal("bits")), c.setLocal("n", c.i32_shl(c.i32_const(1), c.getLocal("bits"))), c.setLocal("s", c.i32_const(1)), c.block(c.loop(c.br_if(1, c.i32_gt_u(c.getLocal("s"), c.getLocal("bits"))), c.setLocal("m", c.i32_shl(c.i32_const(1), c.getLocal("s"))), c.setLocal("pwm", c.i32_add(c.i32_const(ROOTs), c.i32_mul(c.getLocal("s"), c.i32_const(n8f)))), c.setLocal("k", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_ge_u(c.getLocal("k"), c.getLocal("n"))), c.call(fPrefix + "_one", W), c.setLocal("mdiv2", c.i32_shr_u(c.getLocal("m"), c.i32_const(1))), c.setLocal("j", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_ge_u(c.getLocal("j"), c.getLocal("mdiv2"))), c.setLocal("idx1", c.i32_add(c.getLocal("px"), c.i32_mul(c.i32_add(c.getLocal("k"), c.getLocal("j")), c.i32_const(n8g)))), c.setLocal("idx2", c.i32_add(c.getLocal("idx1"), c.i32_mul(c.getLocal("mdiv2"), c.i32_const(n8g)))), c.call(opGtimesF, c.getLocal("idx2"), W, T), c.call(gPrefix + "_copy", c.getLocal("idx1"), U), c.call(gPrefix + "_add", U, T, c.getLocal("idx1")), c.call(gPrefix + "_sub", U, T, c.getLocal("idx2")), c.call(fPrefix + "_mul", W, c.getLocal("pwm"), W), c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))), c.br(0))), c.setLocal("k", c.i32_add(c.getLocal("k"), c.getLocal("m"))), c.br(0))), c.setLocal("s", c.i32_add(c.getLocal("s"), c.i32_const(1))), c.br(0))), c.call(prefix + "__fftFinal", c.getLocal("px"), c.getLocal("bits"), c.getLocal("reverse"), c.getLocal("mulFactor")));
+ }
+ function buildFinalInverse() {
+ const f = module.addFunction(prefix + "__fftFinal");
+ f.addParam("px", "i32");
+ f.addParam("bits", "i32");
+ f.addParam("reverse", "i32");
+ f.addParam("mulFactor", "i32");
+ f.addLocal("n", "i32");
+ f.addLocal("ndiv2", "i32");
+ f.addLocal("pInv2", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("mask", "i32");
+ f.addLocal("idx1", "i32");
+ f.addLocal("idx2", "i32");
+ const c = f.getCodeBuilder();
+ const T = c.i32_const(module.alloc(n8g));
+ f.addCode(c.if(c.i32_and(c.i32_eqz(c.getLocal("reverse")), c.call(fPrefix + "_isOne", c.getLocal("mulFactor"))), c.ret([])), c.setLocal("n", c.i32_shl(c.i32_const(1), c.getLocal("bits"))), c.setLocal("mask", c.i32_sub(c.getLocal("n"), c.i32_const(1))), c.setLocal("i", c.i32_const(1)), c.setLocal("ndiv2", c.i32_shr_u(c.getLocal("n"), c.i32_const(1))), c.block(c.loop(c.br_if(1, c.i32_ge_u(c.getLocal("i"), c.getLocal("ndiv2"))), c.setLocal("idx1", c.i32_add(c.getLocal("px"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.setLocal("idx2", c.i32_add(c.getLocal("px"), c.i32_mul(c.i32_sub(c.getLocal("n"), c.getLocal("i")), c.i32_const(n8g)))), c.if(c.getLocal("reverse"), c.if(c.call(fPrefix + "_isOne", c.getLocal("mulFactor")), [
+ ...c.call(gPrefix + "_copy", c.getLocal("idx1"), T),
+ ...c.call(gPrefix + "_copy", c.getLocal("idx2"), c.getLocal("idx1")),
+ ...c.call(gPrefix + "_copy", T, c.getLocal("idx2"))
+ ], [
+ ...c.call(gPrefix + "_copy", c.getLocal("idx1"), T),
+ ...c.call(opGtimesF, c.getLocal("idx2"), c.getLocal("mulFactor"), c.getLocal("idx1")),
+ ...c.call(opGtimesF, T, c.getLocal("mulFactor"), c.getLocal("idx2"))
+ ]), c.if(c.call(fPrefix + "_isOne", c.getLocal("mulFactor")), [], [...c.call(opGtimesF, c.getLocal("idx1"), c.getLocal("mulFactor"), c.getLocal("idx1")), ...c.call(opGtimesF, c.getLocal("idx2"), c.getLocal("mulFactor"), c.getLocal("idx2"))])), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))), c.if(c.call(fPrefix + "_isOne", c.getLocal("mulFactor")), [], [
+ ...c.call(opGtimesF, c.getLocal("px"), c.getLocal("mulFactor"), c.getLocal("px")),
+ ...c.setLocal("idx2", c.i32_add(c.getLocal("px"), c.i32_mul(c.getLocal("ndiv2"), c.i32_const(n8g)))),
+ ...c.call(opGtimesF, c.getLocal("idx2"), c.getLocal("mulFactor"), c.getLocal("idx2"))
+ ]));
+ }
+ function buildReversePermutation() {
+ const f = module.addFunction(prefix + "__reversePermutation");
+ f.addParam("px", "i32");
+ f.addParam("bits", "i32");
+ f.addLocal("n", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("ri", "i32");
+ f.addLocal("idx1", "i32");
+ f.addLocal("idx2", "i32");
+ const c = f.getCodeBuilder();
+ const T = c.i32_const(module.alloc(n8g));
+ f.addCode(c.setLocal("n", c.i32_shl(c.i32_const(1), c.getLocal("bits"))), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.setLocal("idx1", c.i32_add(c.getLocal("px"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.setLocal("ri", c.call(prefix + "__rev", c.getLocal("i"), c.getLocal("bits"))), c.setLocal("idx2", c.i32_add(c.getLocal("px"), c.i32_mul(c.getLocal("ri"), c.i32_const(n8g)))), c.if(c.i32_lt_u(c.getLocal("i"), c.getLocal("ri")), [
+ ...c.call(gPrefix + "_copy", c.getLocal("idx1"), T),
+ ...c.call(gPrefix + "_copy", c.getLocal("idx2"), c.getLocal("idx1")),
+ ...c.call(gPrefix + "_copy", T, c.getLocal("idx2"))
+ ]), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ function buildRev() {
+ const f = module.addFunction(prefix + "__rev");
+ f.addParam("x", "i32");
+ f.addParam("bits", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.i32_rotl(c.i32_add(c.i32_add(c.i32_shl(c.i32_load8_u(c.i32_and(c.getLocal("x"), c.i32_const(255)), REVTABLE, 0), c.i32_const(24)), c.i32_shl(c.i32_load8_u(c.i32_and(c.i32_shr_u(c.getLocal("x"), c.i32_const(8)), c.i32_const(255)), REVTABLE, 0), c.i32_const(16))), c.i32_add(c.i32_shl(c.i32_load8_u(c.i32_and(c.i32_shr_u(c.getLocal("x"), c.i32_const(16)), c.i32_const(255)), REVTABLE, 0), c.i32_const(8)), c.i32_load8_u(c.i32_and(c.i32_shr_u(c.getLocal("x"), c.i32_const(24)), c.i32_const(255)), REVTABLE, 0))), c.getLocal("bits")));
+ }
+ function buildFFTJoin() {
+ const f = module.addFunction(prefix + "_fftJoin");
+ f.addParam("pBuff1", "i32");
+ f.addParam("pBuff2", "i32");
+ f.addParam("n", "i32");
+ f.addParam("first", "i32");
+ f.addParam("inc", "i32");
+ f.addLocal("idx1", "i32");
+ f.addLocal("idx2", "i32");
+ f.addLocal("i", "i32");
+ const c = f.getCodeBuilder();
+ const W = c.i32_const(module.alloc(n8f));
+ const T = c.i32_const(module.alloc(n8g));
+ const U = c.i32_const(module.alloc(n8g));
+ f.addCode(c.call(fPrefix + "_copy", c.getLocal("first"), W), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.setLocal("idx1", c.i32_add(c.getLocal("pBuff1"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.setLocal("idx2", c.i32_add(c.getLocal("pBuff2"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.call(opGtimesF, c.getLocal("idx2"), W, T), c.call(gPrefix + "_copy", c.getLocal("idx1"), U), c.call(gPrefix + "_add", U, T, c.getLocal("idx1")), c.call(gPrefix + "_sub", U, T, c.getLocal("idx2")), c.call(fPrefix + "_mul", W, c.getLocal("inc"), W), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ function buildFFTJoinExt() {
+ const f = module.addFunction(prefix + "_fftJoinExt");
+ f.addParam("pBuff1", "i32");
+ f.addParam("pBuff2", "i32");
+ f.addParam("n", "i32");
+ f.addParam("first", "i32");
+ f.addParam("inc", "i32");
+ f.addParam("totalBits", "i32");
+ f.addLocal("idx1", "i32");
+ f.addLocal("idx2", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("pShiftToM", "i32");
+ const c = f.getCodeBuilder();
+ const W = c.i32_const(module.alloc(n8f));
+ const U = c.i32_const(module.alloc(n8g));
+ f.addCode(c.setLocal("pShiftToM", c.i32_add(c.i32_const(SHIFT_TO_M), c.i32_mul(c.getLocal("totalBits"), c.i32_const(n8f)))), c.call(fPrefix + "_copy", c.getLocal("first"), W), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.setLocal("idx1", c.i32_add(c.getLocal("pBuff1"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.setLocal("idx2", c.i32_add(c.getLocal("pBuff2"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.call(gPrefix + "_add", c.getLocal("idx1"), c.getLocal("idx2"), U), c.call(opGtimesF, c.getLocal("idx2"), c.getLocal("pShiftToM"), c.getLocal("idx2")), c.call(gPrefix + "_add", c.getLocal("idx1"), c.getLocal("idx2"), c.getLocal("idx2")), c.call(opGtimesF, c.getLocal("idx2"), W, c.getLocal("idx2")), c.call(gPrefix + "_copy", U, c.getLocal("idx1")), c.call(fPrefix + "_mul", W, c.getLocal("inc"), W), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ function buildFFTJoinExtInv() {
+ const f = module.addFunction(prefix + "_fftJoinExtInv");
+ f.addParam("pBuff1", "i32");
+ f.addParam("pBuff2", "i32");
+ f.addParam("n", "i32");
+ f.addParam("first", "i32");
+ f.addParam("inc", "i32");
+ f.addParam("totalBits", "i32");
+ f.addLocal("idx1", "i32");
+ f.addLocal("idx2", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("pShiftToM", "i32");
+ f.addLocal("pSConst", "i32");
+ const c = f.getCodeBuilder();
+ const W = c.i32_const(module.alloc(n8f));
+ const U = c.i32_const(module.alloc(n8g));
+ f.addCode(c.setLocal("pShiftToM", c.i32_add(c.i32_const(SHIFT_TO_M), c.i32_mul(c.getLocal("totalBits"), c.i32_const(n8f)))), c.setLocal("pSConst", c.i32_add(c.i32_const(SCONST), c.i32_mul(c.getLocal("totalBits"), c.i32_const(n8f)))), c.call(fPrefix + "_copy", c.getLocal("first"), W), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.setLocal("idx1", c.i32_add(c.getLocal("pBuff1"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.setLocal("idx2", c.i32_add(c.getLocal("pBuff2"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.call(opGtimesF, c.getLocal("idx2"), W, U), c.call(gPrefix + "_sub", c.getLocal("idx1"), U, c.getLocal("idx2")), c.call(opGtimesF, c.getLocal("idx2"), c.getLocal("pSConst"), c.getLocal("idx2")), c.call(opGtimesF, c.getLocal("idx1"), c.getLocal("pShiftToM"), c.getLocal("idx1")), c.call(gPrefix + "_sub", U, c.getLocal("idx1"), c.getLocal("idx1")), c.call(opGtimesF, c.getLocal("idx1"), c.getLocal("pSConst"), c.getLocal("idx1")), c.call(fPrefix + "_mul", W, c.getLocal("inc"), W), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ function buildPrepareLagrangeEvaluation() {
+ const f = module.addFunction(prefix + "_prepareLagrangeEvaluation");
+ f.addParam("pBuff1", "i32");
+ f.addParam("pBuff2", "i32");
+ f.addParam("n", "i32");
+ f.addParam("first", "i32");
+ f.addParam("inc", "i32");
+ f.addParam("totalBits", "i32");
+ f.addLocal("idx1", "i32");
+ f.addLocal("idx2", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("pShiftToM", "i32");
+ f.addLocal("pSConst", "i32");
+ const c = f.getCodeBuilder();
+ const W = c.i32_const(module.alloc(n8f));
+ const U = c.i32_const(module.alloc(n8g));
+ f.addCode(c.setLocal("pShiftToM", c.i32_add(c.i32_const(SHIFT_TO_M), c.i32_mul(c.getLocal("totalBits"), c.i32_const(n8f)))), c.setLocal("pSConst", c.i32_add(c.i32_const(SCONST), c.i32_mul(c.getLocal("totalBits"), c.i32_const(n8f)))), c.call(fPrefix + "_copy", c.getLocal("first"), W), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.setLocal("idx1", c.i32_add(c.getLocal("pBuff1"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.setLocal("idx2", c.i32_add(c.getLocal("pBuff2"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.call(opGtimesF, c.getLocal("idx1"), c.getLocal("pShiftToM"), U), c.call(gPrefix + "_sub", c.getLocal("idx2"), U, U), c.call(gPrefix + "_sub", c.getLocal("idx1"), c.getLocal("idx2"), c.getLocal("idx2")), c.call(opGtimesF, U, c.getLocal("pSConst"), c.getLocal("idx1")), c.call(opGtimesF, c.getLocal("idx2"), W, c.getLocal("idx2")), c.call(fPrefix + "_mul", W, c.getLocal("inc"), W), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ function buildFFTMix() {
+ const f = module.addFunction(prefix + "_fftMix");
+ f.addParam("pBuff", "i32");
+ f.addParam("n", "i32");
+ f.addParam("exp", "i32");
+ f.addLocal("nGroups", "i32");
+ f.addLocal("nPerGroup", "i32");
+ f.addLocal("nPerGroupDiv2", "i32");
+ f.addLocal("pairOffset", "i32");
+ f.addLocal("idx1", "i32");
+ f.addLocal("idx2", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("j", "i32");
+ f.addLocal("pwm", "i32");
+ const c = f.getCodeBuilder();
+ const W = c.i32_const(module.alloc(n8f));
+ const T = c.i32_const(module.alloc(n8g));
+ const U = c.i32_const(module.alloc(n8g));
+ f.addCode(c.setLocal("nPerGroup", c.i32_shl(c.i32_const(1), c.getLocal("exp"))), c.setLocal("nPerGroupDiv2", c.i32_shr_u(c.getLocal("nPerGroup"), c.i32_const(1))), c.setLocal("nGroups", c.i32_shr_u(c.getLocal("n"), c.getLocal("exp"))), c.setLocal("pairOffset", c.i32_mul(c.getLocal("nPerGroupDiv2"), c.i32_const(n8g))), c.setLocal("pwm", c.i32_add(c.i32_const(ROOTs), c.i32_mul(c.getLocal("exp"), c.i32_const(n8f)))), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("nGroups"))), c.call(fPrefix + "_one", W), c.setLocal("j", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("j"), c.getLocal("nPerGroupDiv2"))), c.setLocal("idx1", c.i32_add(c.getLocal("pBuff"), c.i32_mul(c.i32_add(c.i32_mul(c.getLocal("i"), c.getLocal("nPerGroup")), c.getLocal("j")), c.i32_const(n8g)))), c.setLocal("idx2", c.i32_add(c.getLocal("idx1"), c.getLocal("pairOffset"))), c.call(opGtimesF, c.getLocal("idx2"), W, T), c.call(gPrefix + "_copy", c.getLocal("idx1"), U), c.call(gPrefix + "_add", U, T, c.getLocal("idx1")), c.call(gPrefix + "_sub", U, T, c.getLocal("idx2")), c.call(fPrefix + "_mul", W, c.getLocal("pwm"), W), c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))), c.br(0))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ function buildFFTFinal() {
+ const f = module.addFunction(prefix + "_fftFinal");
+ f.addParam("pBuff", "i32");
+ f.addParam("n", "i32");
+ f.addParam("factor", "i32");
+ f.addLocal("idx1", "i32");
+ f.addLocal("idx2", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("ndiv2", "i32");
+ const c = f.getCodeBuilder();
+ const T = c.i32_const(module.alloc(n8g));
+ f.addCode(c.setLocal("ndiv2", c.i32_shr_u(c.getLocal("n"), c.i32_const(1))), c.if(c.i32_and(c.getLocal("n"), c.i32_const(1)), c.call(opGtimesF, c.i32_add(c.getLocal("pBuff"), c.i32_mul(c.getLocal("ndiv2"), c.i32_const(n8g))), c.getLocal("factor"), c.i32_add(c.getLocal("pBuff"), c.i32_mul(c.getLocal("ndiv2"), c.i32_const(n8g))))), c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_ge_u(c.getLocal("i"), c.getLocal("ndiv2"))), c.setLocal("idx1", c.i32_add(c.getLocal("pBuff"), c.i32_mul(c.getLocal("i"), c.i32_const(n8g)))), c.setLocal("idx2", c.i32_add(c.getLocal("pBuff"), c.i32_mul(c.i32_sub(c.i32_sub(c.getLocal("n"), c.i32_const(1)), c.getLocal("i")), c.i32_const(n8g)))), c.call(opGtimesF, c.getLocal("idx2"), c.getLocal("factor"), T), c.call(opGtimesF, c.getLocal("idx1"), c.getLocal("factor"), c.getLocal("idx2")), c.call(gPrefix + "_copy", T, c.getLocal("idx1")), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ buildRev();
+ buildReversePermutation();
+ buildFinalInverse();
+ buildRawFFT();
+ buildLog2();
+ buildFFT();
+ buildIFFT();
+ buildFFTJoin();
+ buildFFTJoinExt();
+ buildFFTJoinExtInv();
+ buildFFTMix();
+ buildFFTFinal();
+ buildPrepareLagrangeEvaluation();
+ module.exportFunction(prefix + "__reversePermutation");
+ module.exportFunction(prefix + "_fft");
+ module.exportFunction(prefix + "_ifft");
+ module.exportFunction(prefix + "_rawfft");
+ module.exportFunction(prefix + "_fftJoin");
+ module.exportFunction(prefix + "_fftJoinExt");
+ module.exportFunction(prefix + "_fftJoinExtInv");
+ module.exportFunction(prefix + "_fftMix");
+ module.exportFunction(prefix + "_fftFinal");
+ module.exportFunction(prefix + "_prepareLagrangeEvaluation");
+}
+//#endregion
+//#region src/build_pol.js
+function buildPol(module, prefix, prefixField) {
+ const n8 = module.modules[prefixField].n64 * 8;
+ function buildZero() {
+ const f = module.addFunction(prefix + "_zero");
+ f.addParam("px", "i32");
+ f.addParam("n", "i32");
+ f.addLocal("lastp", "i32");
+ f.addLocal("p", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("p", c.getLocal("px")), c.setLocal("lastp", c.i32_add(c.getLocal("px"), c.i32_mul(c.getLocal("n"), c.i32_const(n8)))), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("p"), c.getLocal("lastp"))), c.call(prefixField + "_zero", c.getLocal("p")), c.setLocal("p", c.i32_add(c.getLocal("p"), c.i32_const(n8))), c.br(0))));
+ }
+ function buildConstructLC() {
+ const f = module.addFunction(prefix + "_constructLC");
+ f.addParam("ppolynomials", "i32");
+ f.addParam("psignals", "i32");
+ f.addParam("nSignals", "i32");
+ f.addParam("pres", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("j", "i32");
+ f.addLocal("pp", "i32");
+ f.addLocal("ps", "i32");
+ f.addLocal("pd", "i32");
+ f.addLocal("ncoefs", "i32");
+ const c = f.getCodeBuilder();
+ const aux = c.i32_const(module.alloc(n8));
+ f.addCode(c.setLocal("i", c.i32_const(0)), c.setLocal("pp", c.getLocal("ppolynomials")), c.setLocal("ps", c.getLocal("psignals")), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("nSignals"))), c.setLocal("ncoefs", c.i32_load(c.getLocal("pp"))), c.setLocal("pp", c.i32_add(c.getLocal("pp"), c.i32_const(4))), c.setLocal("j", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("j"), c.getLocal("ncoefs"))), c.setLocal("pd", c.i32_add(c.getLocal("pres"), c.i32_mul(c.i32_load(c.getLocal("pp")), c.i32_const(n8)))), c.setLocal("pp", c.i32_add(c.getLocal("pp"), c.i32_const(4))), c.call(prefixField + "_mul", c.getLocal("ps"), c.getLocal("pp"), aux), c.call(prefixField + "_add", aux, c.getLocal("pd"), c.getLocal("pd")), c.setLocal("pp", c.i32_add(c.getLocal("pp"), c.i32_const(n8))), c.setLocal("j", c.i32_add(c.getLocal("j"), c.i32_const(1))), c.br(0))), c.setLocal("ps", c.i32_add(c.getLocal("ps"), c.i32_const(n8))), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ buildZero();
+ buildConstructLC();
+ module.exportFunction(prefix + "_zero");
+ module.exportFunction(prefix + "_constructLC");
+ return prefix;
+}
+//#endregion
+//#region src/build_qap.js
+function buildQAP(module, prefix, prefixField) {
+ const n8 = module.modules[prefixField].n64 * 8;
+ function buildBuildABC() {
+ const f = module.addFunction(prefix + "_buildABC");
+ f.addParam("pCoefs", "i32");
+ f.addParam("nCoefs", "i32");
+ f.addParam("pWitness", "i32");
+ f.addParam("pA", "i32");
+ f.addParam("pB", "i32");
+ f.addParam("pC", "i32");
+ f.addParam("offsetOut", "i32");
+ f.addParam("nOut", "i32");
+ f.addParam("offsetWitness", "i32");
+ f.addParam("nWitness", "i32");
+ f.addLocal("it", "i32");
+ f.addLocal("ita", "i32");
+ f.addLocal("itb", "i32");
+ f.addLocal("last", "i32");
+ f.addLocal("m", "i32");
+ f.addLocal("c", "i32");
+ f.addLocal("s", "i32");
+ f.addLocal("pOut", "i32");
+ const c = f.getCodeBuilder();
+ const aux = c.i32_const(module.alloc(n8));
+ f.addCode(c.setLocal("ita", c.getLocal("pA")), c.setLocal("itb", c.getLocal("pB")), c.setLocal("last", c.i32_add(c.getLocal("pA"), c.i32_mul(c.getLocal("nOut"), c.i32_const(n8)))), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("ita"), c.getLocal("last"))), c.call(prefixField + "_zero", c.getLocal("ita")), c.call(prefixField + "_zero", c.getLocal("itb")), c.setLocal("ita", c.i32_add(c.getLocal("ita"), c.i32_const(n8))), c.setLocal("itb", c.i32_add(c.getLocal("itb"), c.i32_const(n8))), c.br(0))), c.setLocal("it", c.getLocal("pCoefs")), c.setLocal("last", c.i32_add(c.getLocal("pCoefs"), c.i32_mul(c.getLocal("nCoefs"), c.i32_const(n8 + 12)))), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("it"), c.getLocal("last"))), c.setLocal("s", c.i32_load(c.getLocal("it"), 8)), c.if(c.i32_or(c.i32_lt_u(c.getLocal("s"), c.getLocal("offsetWitness")), c.i32_ge_u(c.getLocal("s"), c.i32_add(c.getLocal("offsetWitness"), c.getLocal("nWitness")))), [...c.setLocal("it", c.i32_add(c.getLocal("it"), c.i32_const(n8 + 12))), ...c.br(1)]), c.setLocal("m", c.i32_load(c.getLocal("it"))), c.if(c.i32_eq(c.getLocal("m"), c.i32_const(0)), c.setLocal("pOut", c.getLocal("pA")), c.if(c.i32_eq(c.getLocal("m"), c.i32_const(1)), c.setLocal("pOut", c.getLocal("pB")), [...c.setLocal("it", c.i32_add(c.getLocal("it"), c.i32_const(n8 + 12))), ...c.br(1)])), c.setLocal("c", c.i32_load(c.getLocal("it"), 4)), c.if(c.i32_or(c.i32_lt_u(c.getLocal("c"), c.getLocal("offsetOut")), c.i32_ge_u(c.getLocal("c"), c.i32_add(c.getLocal("offsetOut"), c.getLocal("nOut")))), [...c.setLocal("it", c.i32_add(c.getLocal("it"), c.i32_const(n8 + 12))), ...c.br(1)]), c.setLocal("pOut", c.i32_add(c.getLocal("pOut"), c.i32_mul(c.i32_sub(c.getLocal("c"), c.getLocal("offsetOut")), c.i32_const(n8)))), c.call(prefixField + "_mul", c.i32_add(c.getLocal("pWitness"), c.i32_mul(c.i32_sub(c.getLocal("s"), c.getLocal("offsetWitness")), c.i32_const(n8))), c.i32_add(c.getLocal("it"), c.i32_const(12)), aux), c.call(prefixField + "_add", c.getLocal("pOut"), aux, c.getLocal("pOut")), c.setLocal("it", c.i32_add(c.getLocal("it"), c.i32_const(n8 + 12))), c.br(0))), c.setLocal("ita", c.getLocal("pA")), c.setLocal("itb", c.getLocal("pB")), c.setLocal("it", c.getLocal("pC")), c.setLocal("last", c.i32_add(c.getLocal("pA"), c.i32_mul(c.getLocal("nOut"), c.i32_const(n8)))), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("ita"), c.getLocal("last"))), c.call(prefixField + "_mul", c.getLocal("ita"), c.getLocal("itb"), c.getLocal("it")), c.setLocal("ita", c.i32_add(c.getLocal("ita"), c.i32_const(n8))), c.setLocal("itb", c.i32_add(c.getLocal("itb"), c.i32_const(n8))), c.setLocal("it", c.i32_add(c.getLocal("it"), c.i32_const(n8))), c.br(0))));
+ }
+ function buildJoinABC() {
+ const f = module.addFunction(prefix + "_joinABC");
+ f.addParam("pA", "i32");
+ f.addParam("pB", "i32");
+ f.addParam("pC", "i32");
+ f.addParam("n", "i32");
+ f.addParam("pP", "i32");
+ f.addLocal("ita", "i32");
+ f.addLocal("itb", "i32");
+ f.addLocal("itc", "i32");
+ f.addLocal("itp", "i32");
+ f.addLocal("last", "i32");
+ const c = f.getCodeBuilder();
+ const aux = c.i32_const(module.alloc(n8));
+ f.addCode(c.setLocal("ita", c.getLocal("pA")), c.setLocal("itb", c.getLocal("pB")), c.setLocal("itc", c.getLocal("pC")), c.setLocal("itp", c.getLocal("pP")), c.setLocal("last", c.i32_add(c.getLocal("pA"), c.i32_mul(c.getLocal("n"), c.i32_const(n8)))), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("ita"), c.getLocal("last"))), c.call(prefixField + "_mul", c.getLocal("ita"), c.getLocal("itb"), aux), c.call(prefixField + "_sub", aux, c.getLocal("itc"), c.getLocal("itp")), c.setLocal("ita", c.i32_add(c.getLocal("ita"), c.i32_const(n8))), c.setLocal("itb", c.i32_add(c.getLocal("itb"), c.i32_const(n8))), c.setLocal("itc", c.i32_add(c.getLocal("itc"), c.i32_const(n8))), c.setLocal("itp", c.i32_add(c.getLocal("itp"), c.i32_const(n8))), c.br(0))));
+ }
+ function buildBatchAdd() {
+ const f = module.addFunction(prefix + "_batchAdd");
+ f.addParam("pa", "i32");
+ f.addParam("pb", "i32");
+ f.addParam("n", "i32");
+ f.addParam("pr", "i32");
+ f.addLocal("ita", "i32");
+ f.addLocal("itb", "i32");
+ f.addLocal("itr", "i32");
+ f.addLocal("last", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.setLocal("ita", c.getLocal("pa")), c.setLocal("itb", c.getLocal("pb")), c.setLocal("itr", c.getLocal("pr")), c.setLocal("last", c.i32_add(c.getLocal("pa"), c.i32_mul(c.getLocal("n"), c.i32_const(n8)))), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("ita"), c.getLocal("last"))), c.call(prefixField + "_add", c.getLocal("ita"), c.getLocal("itb"), c.getLocal("itr")), c.setLocal("ita", c.i32_add(c.getLocal("ita"), c.i32_const(n8))), c.setLocal("itb", c.i32_add(c.getLocal("itb"), c.i32_const(n8))), c.setLocal("itr", c.i32_add(c.getLocal("itr"), c.i32_const(n8))), c.br(0))));
+ }
+ buildBuildABC();
+ buildJoinABC();
+ buildBatchAdd();
+ module.exportFunction(prefix + "_buildABC");
+ module.exportFunction(prefix + "_joinABC");
+ module.exportFunction(prefix + "_batchAdd");
+ return prefix;
+}
+//#endregion
+//#region src/build_applykey.js
+function buildApplyKey(module, fnName, gPrefix, frPrefix, sizeGIn, sizeGOut, sizeF, opGtimesF) {
+ const f = module.addFunction(fnName);
+ f.addParam("pIn", "i32");
+ f.addParam("n", "i32");
+ f.addParam("pFirst", "i32");
+ f.addParam("pInc", "i32");
+ f.addParam("pOut", "i32");
+ f.addLocal("pOldFree", "i32");
+ f.addLocal("i", "i32");
+ f.addLocal("pFrom", "i32");
+ f.addLocal("pTo", "i32");
+ const c = f.getCodeBuilder();
+ const t = c.i32_const(module.alloc(sizeF));
+ f.addCode(c.setLocal("pFrom", c.getLocal("pIn")), c.setLocal("pTo", c.getLocal("pOut")));
+ f.addCode(c.call(frPrefix + "_copy", c.getLocal("pFirst"), t));
+ f.addCode(c.setLocal("i", c.i32_const(0)), c.block(c.loop(c.br_if(1, c.i32_eq(c.getLocal("i"), c.getLocal("n"))), c.call(opGtimesF, c.getLocal("pFrom"), t, c.getLocal("pTo")), c.setLocal("pFrom", c.i32_add(c.getLocal("pFrom"), c.i32_const(sizeGIn))), c.setLocal("pTo", c.i32_add(c.getLocal("pTo"), c.i32_const(sizeGOut))), c.call(frPrefix + "_mul", t, c.getLocal("pInc"), t), c.setLocal("i", c.i32_add(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ module.exportFunction(fnName);
+}
+//#endregion
+//#region src/bn128/build_bn128.js
+function buildBN128(module, _prefix) {
+ const prefix = _prefix || "bn128";
+ if (module.modules[prefix]) return prefix;
+ const q = 21888242871839275222246405745257275088696311157297823662689037894645226208583n;
+ const r = 21888242871839275222246405745257275088548364400416034343698204186575808495617n;
+ const n64 = Math.floor((bitLength(q - 1n) - 1) / 64) + 1;
+ const n8 = n64 * 8;
+ const frsize = n8;
+ const f1size = n8;
+ const f2size = f1size * 2;
+ const ftsize = f1size * 12;
+ const pr = module.alloc(bigInt2BytesLE(r, frsize));
+ const f1mPrefix = buildF1m(module, q, "f1m");
+ buildF1(module, r, "fr", "frm");
+ const pG1b = module.alloc(bigInt2BytesLE(toMontgomery(3n), f1size));
+ const g1mPrefix = buildCurve(module, "g1m", "f1m", pG1b);
+ buildFFT(module, "frm", "frm", "frm", "frm_mul");
+ buildPol(module, "pol", "frm");
+ buildQAP(module, "qap", "frm");
+ const f2mPrefix = buildF2m(module, "f1m_neg", "f2m", "f1m");
+ const pG2b = module.alloc([...bigInt2BytesLE(toMontgomery(19485874751759354771024239261021720505790618469301721065564631296452457478373n), f1size), ...bigInt2BytesLE(toMontgomery(266929791119991161246907387137283842545076965332900288569378510910307636690n), f1size)]);
+ const g2mPrefix = buildCurve(module, "g2m", "f2m", pG2b);
+ function buildGTimesFr(fnName, opMul) {
+ const f = module.addFunction(fnName);
+ f.addParam("pG", "i32");
+ f.addParam("pFr", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const AUX = c.i32_const(module.alloc(n8));
+ f.addCode(c.call("frm_fromMontgomery", c.getLocal("pFr"), AUX), c.call(opMul, c.getLocal("pG"), AUX, c.i32_const(n8), c.getLocal("pr")));
+ module.exportFunction(fnName);
+ }
+ buildGTimesFr("g1m_timesFr", "g1m_timesScalar");
+ buildFFT(module, "g1m", "g1m", "frm", "g1m_timesFr");
+ buildGTimesFr("g2m_timesFr", "g2m_timesScalar");
+ buildFFT(module, "g2m", "g2m", "frm", "g2m_timesFr");
+ buildGTimesFr("g1m_timesFrAffine", "g1m_timesScalarAffine");
+ buildGTimesFr("g2m_timesFrAffine", "g2m_timesScalarAffine");
+ buildApplyKey(module, "frm_batchApplyKey", "fmr", "frm", n8, n8, n8, "frm_mul");
+ buildApplyKey(module, "g1m_batchApplyKey", "g1m", "frm", n8 * 3, n8 * 3, n8, "g1m_timesFr");
+ buildApplyKey(module, "g1m_batchApplyKeyMixed", "g1m", "frm", n8 * 2, n8 * 3, n8, "g1m_timesFrAffine");
+ buildApplyKey(module, "g2m_batchApplyKey", "g2m", "frm", n8 * 2 * 3, n8 * 3 * 2, n8, "g2m_timesFr");
+ buildApplyKey(module, "g2m_batchApplyKeyMixed", "g2m", "frm", n8 * 2 * 2, n8 * 3 * 2, n8, "g2m_timesFrAffine");
+ function toMontgomery(a) {
+ return BigInt(a) * (1n << BigInt(f1size * 8)) % q;
+ }
+ const G1gen = [
+ 1n,
+ 2n,
+ 1n
+ ];
+ const pG1gen = module.alloc([
+ ...bigInt2BytesLE(toMontgomery(G1gen[0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G1gen[1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G1gen[2]), f1size)
+ ]);
+ const G1zero = [
+ 0n,
+ 1n,
+ 0n
+ ];
+ const pG1zero = module.alloc([
+ ...bigInt2BytesLE(toMontgomery(G1zero[0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G1zero[1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G1zero[2]), f1size)
+ ]);
+ const G2gen = [
+ [10857046999023057135944570762232829481370756359578518086990519993285655852781n, 11559732032986387107991004021392285783925812861821192530917403151452391805634n],
+ [8495653923123431417604973247489272438418190587263600148770280649306958101930n, 4082367875863433681332203403145435568316851327593401208105741076214120093531n],
+ [1n, 0n]
+ ];
+ const pG2gen = module.alloc([
+ ...bigInt2BytesLE(toMontgomery(G2gen[0][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2gen[0][1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2gen[1][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2gen[1][1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2gen[2][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2gen[2][1]), f1size)
+ ]);
+ const G2zero = [
+ [0n, 0n],
+ [1n, 0n],
+ [0n, 0n]
+ ];
+ const pG2zero = module.alloc([
+ ...bigInt2BytesLE(toMontgomery(G2zero[0][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2zero[0][1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2zero[1][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2zero[1][1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2zero[2][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2zero[2][1]), f1size)
+ ]);
+ const pOneT = module.alloc([
+ ...bigInt2BytesLE(toMontgomery(1), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size),
+ ...bigInt2BytesLE(toMontgomery(0), f1size)
+ ]);
+ const pNonResidueF6 = module.alloc([...bigInt2BytesLE(toMontgomery(9), f1size), ...bigInt2BytesLE(toMontgomery(1), f1size)]);
+ const pTwoInv = module.alloc([...bigInt2BytesLE(toMontgomery(modInv(2n, q)), f1size), ...bigInt2BytesLE(0n, f1size)]);
+ const pAltBn128Twist = pNonResidueF6;
+ const pTwistCoefB = module.alloc([...bigInt2BytesLE(toMontgomery(19485874751759354771024239261021720505790618469301721065564631296452457478373n), f1size), ...bigInt2BytesLE(toMontgomery(266929791119991161246907387137283842545076965332900288569378510910307636690n), f1size)]);
+ function build_mulNR6() {
+ const f = module.addFunction(prefix + "_mulNR6");
+ f.addParam("x", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), c.getLocal("x"), c.getLocal("pr")));
+ }
+ build_mulNR6();
+ const f6mPrefix = buildF3m(module, prefix + "_mulNR6", "f6m", "f2m");
+ function build_mulNR12() {
+ const f = module.addFunction(prefix + "_mulNR12");
+ f.addParam("x", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), c.i32_add(c.getLocal("x"), c.i32_const(n8 * 4)), c.getLocal("pr")), c.call(f2mPrefix + "_copy", c.getLocal("x"), c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 2))), c.call(f2mPrefix + "_copy", c.i32_add(c.getLocal("x"), c.i32_const(n8 * 2)), c.i32_add(c.getLocal("pr"), c.i32_const(n8 * 4))));
+ }
+ build_mulNR12();
+ const ftmPrefix = buildF2m(module, prefix + "_mulNR12", "ftm", f6mPrefix);
+ const ateLoopBitBytes = bits(29793968203157093288n);
+ const pAteLoopBitBytes = module.alloc(ateLoopBitBytes);
+ const ateCoefSize = 3 * f2size;
+ const ateNDblCoefs = ateLoopBitBytes.length - 1;
+ const ateNCoefs = ateLoopBitBytes.reduce((acc, b) => acc + (b != 0 ? 1 : 0), 0) + ateNDblCoefs + 1;
+ const prePSize = 6 * n8;
+ const preQSize = 3 * n8 * 2 + ateNCoefs * ateCoefSize;
+ module.modules[prefix] = {
+ n64,
+ pG1gen,
+ pG1zero,
+ pG1b,
+ pG2gen,
+ pG2zero,
+ pG2b,
+ pq: module.modules["f1m"].pq,
+ pr,
+ pOneT,
+ prePSize,
+ preQSize,
+ r: r.toString(),
+ q: q.toString()
+ };
+ const finalExpZ = 4965661367192848881n;
+ function naf(n) {
+ let E = n;
+ const res = [];
+ while (E > 0n) {
+ if (isOdd(E)) {
+ const z = 2 - Number(E % 4n);
+ res.push(z);
+ E = E - BigInt(z);
+ } else res.push(0);
+ E = E >> 1n;
+ }
+ return res;
+ }
+ function bits(n) {
+ let E = n;
+ const res = [];
+ while (E > 0n) {
+ if (isOdd(E)) res.push(1);
+ else res.push(0);
+ E = E >> 1n;
+ }
+ return res;
+ }
+ function buildPrepareG1() {
+ const f = module.addFunction(prefix + "_prepareG1");
+ f.addParam("pP", "i32");
+ f.addParam("ppreP", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(g1mPrefix + "_normalize", c.getLocal("pP"), c.getLocal("ppreP")));
+ }
+ function buildPrepAddStep() {
+ const f = module.addFunction(prefix + "_prepAddStep");
+ f.addParam("pQ", "i32");
+ f.addParam("pR", "i32");
+ f.addParam("pCoef", "i32");
+ const c = f.getCodeBuilder();
+ const X2 = c.getLocal("pQ");
+ const Y2 = c.i32_add(c.getLocal("pQ"), c.i32_const(f2size));
+ const X1 = c.getLocal("pR");
+ const Y1 = c.i32_add(c.getLocal("pR"), c.i32_const(f2size));
+ const Z1 = c.i32_add(c.getLocal("pR"), c.i32_const(2 * f2size));
+ const ELL_0 = c.getLocal("pCoef");
+ const ELL_VW = c.i32_add(c.getLocal("pCoef"), c.i32_const(f2size));
+ const ELL_VV = c.i32_add(c.getLocal("pCoef"), c.i32_const(2 * f2size));
+ const D = ELL_VW;
+ const E = c.i32_const(module.alloc(f2size));
+ const F = c.i32_const(module.alloc(f2size));
+ const G = c.i32_const(module.alloc(f2size));
+ const H = c.i32_const(module.alloc(f2size));
+ const I = c.i32_const(module.alloc(f2size));
+ const J = c.i32_const(module.alloc(f2size));
+ const AUX = c.i32_const(module.alloc(f2size));
+ f.addCode(c.call(f2mPrefix + "_mul", X2, Z1, D), c.call(f2mPrefix + "_sub", X1, D, D), c.call(f2mPrefix + "_mul", Y2, Z1, E), c.call(f2mPrefix + "_sub", Y1, E, E), c.call(f2mPrefix + "_square", D, F), c.call(f2mPrefix + "_square", E, G), c.call(f2mPrefix + "_mul", D, F, H), c.call(f2mPrefix + "_mul", X1, F, I), c.call(f2mPrefix + "_add", I, I, AUX), c.call(f2mPrefix + "_mul", Z1, G, J), c.call(f2mPrefix + "_add", H, J, J), c.call(f2mPrefix + "_sub", J, AUX, J), c.call(f2mPrefix + "_mul", D, J, X1), c.call(f2mPrefix + "_mul", H, Y1, Y1), c.call(f2mPrefix + "_sub", I, J, AUX), c.call(f2mPrefix + "_mul", E, AUX, AUX), c.call(f2mPrefix + "_sub", AUX, Y1, Y1), c.call(f2mPrefix + "_mul", Z1, H, Z1), c.call(f2mPrefix + "_mul", D, Y2, AUX), c.call(f2mPrefix + "_mul", E, X2, ELL_0), c.call(f2mPrefix + "_sub", ELL_0, AUX, ELL_0), c.call(f2mPrefix + "_mul", ELL_0, c.i32_const(pAltBn128Twist), ELL_0), c.call(f2mPrefix + "_neg", E, ELL_VV));
+ }
+ function buildPrepDoubleStep() {
+ const f = module.addFunction(prefix + "_prepDblStep");
+ f.addParam("pR", "i32");
+ f.addParam("pCoef", "i32");
+ const c = f.getCodeBuilder();
+ const X1 = c.getLocal("pR");
+ const Y1 = c.i32_add(c.getLocal("pR"), c.i32_const(f2size));
+ const Z1 = c.i32_add(c.getLocal("pR"), c.i32_const(2 * f2size));
+ const ELL_0 = c.getLocal("pCoef");
+ const ELL_VW = c.i32_add(c.getLocal("pCoef"), c.i32_const(f2size));
+ const ELL_VV = c.i32_add(c.getLocal("pCoef"), c.i32_const(2 * f2size));
+ const A = c.i32_const(module.alloc(f2size));
+ const B = c.i32_const(module.alloc(f2size));
+ const C = c.i32_const(module.alloc(f2size));
+ const D = c.i32_const(module.alloc(f2size));
+ const E = c.i32_const(module.alloc(f2size));
+ const F = c.i32_const(module.alloc(f2size));
+ const G = c.i32_const(module.alloc(f2size));
+ const H = c.i32_const(module.alloc(f2size));
+ const I = c.i32_const(module.alloc(f2size));
+ const J = c.i32_const(module.alloc(f2size));
+ const E2 = c.i32_const(module.alloc(f2size));
+ const AUX = c.i32_const(module.alloc(f2size));
+ f.addCode(c.call(f2mPrefix + "_mul", Y1, c.i32_const(pTwoInv), A), c.call(f2mPrefix + "_mul", X1, A, A), c.call(f2mPrefix + "_square", Y1, B), c.call(f2mPrefix + "_square", Z1, C), c.call(f2mPrefix + "_add", C, C, D), c.call(f2mPrefix + "_add", D, C, D), c.call(f2mPrefix + "_mul", c.i32_const(pTwistCoefB), D, E), c.call(f2mPrefix + "_add", E, E, F), c.call(f2mPrefix + "_add", E, F, F), c.call(f2mPrefix + "_add", B, F, G), c.call(f2mPrefix + "_mul", G, c.i32_const(pTwoInv), G), c.call(f2mPrefix + "_add", B, C, AUX), c.call(f2mPrefix + "_add", Y1, Z1, H), c.call(f2mPrefix + "_square", H, H), c.call(f2mPrefix + "_sub", H, AUX, H), c.call(f2mPrefix + "_sub", E, B, I), c.call(f2mPrefix + "_square", X1, J), c.call(f2mPrefix + "_square", E, E2), c.call(f2mPrefix + "_sub", B, F, AUX), c.call(f2mPrefix + "_mul", A, AUX, X1), c.call(f2mPrefix + "_add", E2, E2, AUX), c.call(f2mPrefix + "_add", E2, AUX, AUX), c.call(f2mPrefix + "_square", G, Y1), c.call(f2mPrefix + "_sub", Y1, AUX, Y1), c.call(f2mPrefix + "_mul", B, H, Z1), c.call(f2mPrefix + "_mul", c.i32_const(pAltBn128Twist), I, ELL_0), c.call(f2mPrefix + "_neg", H, ELL_VW), c.call(f2mPrefix + "_add", J, J, ELL_VV), c.call(f2mPrefix + "_add", J, ELL_VV, ELL_VV));
+ }
+ function buildMulByQ() {
+ const f = module.addFunction(prefix + "_mulByQ");
+ f.addParam("p1", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("p1");
+ const y = c.i32_add(c.getLocal("p1"), c.i32_const(f2size));
+ const z = c.i32_add(c.getLocal("p1"), c.i32_const(f2size * 2));
+ const x3 = c.getLocal("pr");
+ const y3 = c.i32_add(c.getLocal("pr"), c.i32_const(f2size));
+ const z3 = c.i32_add(c.getLocal("pr"), c.i32_const(f2size * 2));
+ const MulByQX = c.i32_const(module.alloc([...bigInt2BytesLE(toMontgomery("21575463638280843010398324269430826099269044274347216827212613867836435027261"), f1size), ...bigInt2BytesLE(toMontgomery("10307601595873709700152284273816112264069230130616436755625194854815875713954"), f1size)]));
+ const MulByQY = c.i32_const(module.alloc([...bigInt2BytesLE(toMontgomery("2821565182194536844548159561693502659359617185244120367078079554186484126554"), f1size), ...bigInt2BytesLE(toMontgomery("3505843767911556378687030309984248845540243509899259641013678093033130930403"), f1size)]));
+ f.addCode(c.call(f2mPrefix + "_conjugate", x, x3), c.call(f2mPrefix + "_mul", MulByQX, x3, x3), c.call(f2mPrefix + "_conjugate", y, y3), c.call(f2mPrefix + "_mul", MulByQY, y3, y3), c.call(f2mPrefix + "_conjugate", z, z3));
+ }
+ function buildPrepareG2() {
+ buildMulByQ();
+ const f = module.addFunction(prefix + "_prepareG2");
+ f.addParam("pQ", "i32");
+ f.addParam("ppreQ", "i32");
+ f.addLocal("pCoef", "i32");
+ f.addLocal("i", "i32");
+ const c = f.getCodeBuilder();
+ const QX = c.getLocal("pQ");
+ const pR = module.alloc(f2size * 3);
+ const R = c.i32_const(pR);
+ const RX = c.i32_const(pR);
+ const RY = c.i32_const(pR + f2size);
+ const RZ = c.i32_const(pR + 2 * f2size);
+ const cQX = c.i32_add(c.getLocal("ppreQ"), c.i32_const(0));
+ const cQY = c.i32_add(c.getLocal("ppreQ"), c.i32_const(f2size));
+ const pQ1 = module.alloc(f2size * 3);
+ const Q1 = c.i32_const(pQ1);
+ const pQ2 = module.alloc(f2size * 3);
+ const Q2 = c.i32_const(pQ2);
+ const Q2Y = c.i32_const(pQ2 + f2size);
+ f.addCode(c.call(g2mPrefix + "_normalize", QX, cQX), c.call(f2mPrefix + "_copy", cQX, RX), c.call(f2mPrefix + "_copy", cQY, RY), c.call(f2mPrefix + "_one", RZ));
+ f.addCode(c.setLocal("pCoef", c.i32_add(c.getLocal("ppreQ"), c.i32_const(f2size * 3))), c.setLocal("i", c.i32_const(ateLoopBitBytes.length - 2)), c.block(c.loop(c.call(prefix + "_prepDblStep", R, c.getLocal("pCoef")), c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))), c.if(c.i32_load8_s(c.getLocal("i"), pAteLoopBitBytes), [...c.call(prefix + "_prepAddStep", cQX, R, c.getLocal("pCoef")), ...c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize)))]), c.br_if(1, c.i32_eqz(c.getLocal("i"))), c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ f.addCode(c.call(prefix + "_mulByQ", cQX, Q1), c.call(prefix + "_mulByQ", Q1, Q2));
+ f.addCode(c.call(f2mPrefix + "_neg", Q2Y, Q2Y), c.call(prefix + "_prepAddStep", Q1, R, c.getLocal("pCoef")), c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))), c.call(prefix + "_prepAddStep", Q2, R, c.getLocal("pCoef")), c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))));
+ }
+ function buildMulBy024Old() {
+ const f = module.addFunction(prefix + "__mulBy024Old");
+ f.addParam("pEll0", "i32");
+ f.addParam("pEllVW", "i32");
+ f.addParam("pEllVV", "i32");
+ f.addParam("pR", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("pEll0");
+ const x2 = c.getLocal("pEllVV");
+ const x4 = c.getLocal("pEllVW");
+ const z0 = c.getLocal("pR");
+ const pAUX12 = module.alloc(ftsize);
+ const AUX12 = c.i32_const(pAUX12);
+ const AUX12_0 = c.i32_const(pAUX12);
+ const AUX12_2 = c.i32_const(pAUX12 + f2size);
+ const AUX12_4 = c.i32_const(pAUX12 + f2size * 2);
+ const AUX12_6 = c.i32_const(pAUX12 + f2size * 3);
+ const AUX12_8 = c.i32_const(pAUX12 + f2size * 4);
+ const AUX12_10 = c.i32_const(pAUX12 + f2size * 5);
+ f.addCode(c.call(f2mPrefix + "_copy", x0, AUX12_0), c.call(f2mPrefix + "_zero", AUX12_2), c.call(f2mPrefix + "_copy", x2, AUX12_4), c.call(f2mPrefix + "_zero", AUX12_6), c.call(f2mPrefix + "_copy", x4, AUX12_8), c.call(f2mPrefix + "_zero", AUX12_10), c.call(ftmPrefix + "_mul", AUX12, z0, z0));
+ }
+ function buildMulBy024() {
+ const f = module.addFunction(prefix + "__mulBy024");
+ f.addParam("pEll0", "i32");
+ f.addParam("pEllVW", "i32");
+ f.addParam("pEllVV", "i32");
+ f.addParam("pR", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("pEll0");
+ const x2 = c.getLocal("pEllVV");
+ const x4 = c.getLocal("pEllVW");
+ const z0 = c.getLocal("pR");
+ const z1 = c.i32_add(c.getLocal("pR"), c.i32_const(2 * n8));
+ const z2 = c.i32_add(c.getLocal("pR"), c.i32_const(4 * n8));
+ const z3 = c.i32_add(c.getLocal("pR"), c.i32_const(6 * n8));
+ const z4 = c.i32_add(c.getLocal("pR"), c.i32_const(8 * n8));
+ const z5 = c.i32_add(c.getLocal("pR"), c.i32_const(10 * n8));
+ const t0 = c.i32_const(module.alloc(f2size));
+ const t1 = c.i32_const(module.alloc(f2size));
+ const t2 = c.i32_const(module.alloc(f2size));
+ const s0 = c.i32_const(module.alloc(f2size));
+ const T3 = c.i32_const(module.alloc(f2size));
+ const T4 = c.i32_const(module.alloc(f2size));
+ const D0 = c.i32_const(module.alloc(f2size));
+ const D2 = c.i32_const(module.alloc(f2size));
+ const D4 = c.i32_const(module.alloc(f2size));
+ const S1 = c.i32_const(module.alloc(f2size));
+ const AUX = c.i32_const(module.alloc(f2size));
+ f.addCode(c.call(f2mPrefix + "_mul", z0, x0, D0), c.call(f2mPrefix + "_mul", z2, x2, D2), c.call(f2mPrefix + "_mul", z4, x4, D4), c.call(f2mPrefix + "_add", z0, z4, t2), c.call(f2mPrefix + "_add", z0, z2, t1), c.call(f2mPrefix + "_add", z1, z3, s0), c.call(f2mPrefix + "_add", s0, z5, s0), c.call(f2mPrefix + "_mul", z1, x2, S1), c.call(f2mPrefix + "_add", S1, D4, T3), c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), T3, T4), c.call(f2mPrefix + "_add", T4, D0, z0), c.call(f2mPrefix + "_mul", z5, x4, T3), c.call(f2mPrefix + "_add", S1, T3, S1), c.call(f2mPrefix + "_add", T3, D2, T3), c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), T3, T4), c.call(f2mPrefix + "_mul", z1, x0, T3), c.call(f2mPrefix + "_add", S1, T3, S1), c.call(f2mPrefix + "_add", T4, T3, z1), c.call(f2mPrefix + "_add", x0, x2, t0), c.call(f2mPrefix + "_mul", t1, t0, T3), c.call(f2mPrefix + "_add", D0, D2, AUX), c.call(f2mPrefix + "_sub", T3, AUX, T3), c.call(f2mPrefix + "_mul", z3, x4, T4), c.call(f2mPrefix + "_add", S1, T4, S1), c.call(f2mPrefix + "_add", z2, z4, t0), c.call(f2mPrefix + "_add", T3, T4, z2), c.call(f2mPrefix + "_add", x2, x4, t1), c.call(f2mPrefix + "_mul", t1, t0, T3), c.call(f2mPrefix + "_add", D2, D4, AUX), c.call(f2mPrefix + "_sub", T3, AUX, T3), c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), T3, T4), c.call(f2mPrefix + "_mul", z3, x0, T3), c.call(f2mPrefix + "_add", S1, T3, S1), c.call(f2mPrefix + "_add", T4, T3, z3), c.call(f2mPrefix + "_mul", z5, x2, T3), c.call(f2mPrefix + "_add", S1, T3, S1), c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), T3, T4), c.call(f2mPrefix + "_add", x0, x4, t0), c.call(f2mPrefix + "_mul", t2, t0, T3), c.call(f2mPrefix + "_add", D0, D4, AUX), c.call(f2mPrefix + "_sub", T3, AUX, T3), c.call(f2mPrefix + "_add", T4, T3, z4), c.call(f2mPrefix + "_add", x0, x2, t0), c.call(f2mPrefix + "_add", t0, x4, t0), c.call(f2mPrefix + "_mul", s0, t0, T3), c.call(f2mPrefix + "_sub", T3, S1, z5));
+ }
+ function buildMillerLoop() {
+ const f = module.addFunction(prefix + "_millerLoop");
+ f.addParam("ppreP", "i32");
+ f.addParam("ppreQ", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("pCoef", "i32");
+ f.addLocal("i", "i32");
+ const c = f.getCodeBuilder();
+ const preP_PX = c.getLocal("ppreP");
+ const preP_PY = c.i32_add(c.getLocal("ppreP"), c.i32_const(f1size));
+ const ELL_0 = c.getLocal("pCoef");
+ const ELL_VW = c.i32_add(c.getLocal("pCoef"), c.i32_const(f2size));
+ const ELL_VV = c.i32_add(c.getLocal("pCoef"), c.i32_const(2 * f2size));
+ const pVW = module.alloc(f2size);
+ const VW = c.i32_const(pVW);
+ const pVV = module.alloc(f2size);
+ const VV = c.i32_const(pVV);
+ const F = c.getLocal("r");
+ f.addCode(c.call(ftmPrefix + "_one", F), c.setLocal("pCoef", c.i32_add(c.getLocal("ppreQ"), c.i32_const(f2size * 3))), c.setLocal("i", c.i32_const(ateLoopBitBytes.length - 2)), c.block(c.loop(c.call(ftmPrefix + "_square", F, F), c.call(f2mPrefix + "_mul1", ELL_VW, preP_PY, VW), c.call(f2mPrefix + "_mul1", ELL_VV, preP_PX, VV), c.call(prefix + "__mulBy024", ELL_0, VW, VV, F), c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))), c.if(c.i32_load8_s(c.getLocal("i"), pAteLoopBitBytes), [
+ ...c.call(f2mPrefix + "_mul1", ELL_VW, preP_PY, VW),
+ ...c.call(f2mPrefix + "_mul1", ELL_VV, preP_PX, VV),
+ ...c.call(prefix + "__mulBy024", ELL_0, VW, VV, F),
+ ...c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize)))
+ ]), c.br_if(1, c.i32_eqz(c.getLocal("i"))), c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ f.addCode(c.call(f2mPrefix + "_mul1", ELL_VW, preP_PY, VW), c.call(f2mPrefix + "_mul1", ELL_VV, preP_PX, VV), c.call(prefix + "__mulBy024", ELL_0, VW, VV, F), c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))), c.call(f2mPrefix + "_mul1", ELL_VW, preP_PY, VW), c.call(f2mPrefix + "_mul1", ELL_VV, preP_PX, VV), c.call(prefix + "__mulBy024", ELL_0, VW, VV, F), c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))));
+ }
+ function buildFrobeniusMap(n) {
+ const F12 = [[
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n]
+ ], [
+ [1n, 0n],
+ [8376118865763821496583973867626364092589906065868298776909617916018768340080n, 16469823323077808223889137241176536799009286646108169935659301613961712198316n],
+ [21888242871839275220042445260109153167277707414472061641714758635765020556617n, 0n],
+ [11697423496358154304825782922584725312912383441159505038794027105778954184319n, 303847389135065887422783454877609941456349188919719272345083954437860409601n],
+ [21888242871839275220042445260109153167277707414472061641714758635765020556616n, 0n],
+ [3321304630594332808241809054958361220322477375291206261884409189760185844239n, 5722266937896532885780051958958348231143373700109372999374820235121374419868n],
+ [21888242871839275222246405745257275088696311157297823662689037894645226208582n, 0n],
+ [13512124006075453725662431877630910996106405091429524885779419978626457868503n, 5418419548761466998357268504080738289687024511189653727029736280683514010267n],
+ [2203960485148121921418603742825762020974279258880205651966n, 0n],
+ [10190819375481120917420622822672549775783927716138318623895010788866272024264n, 21584395482704209334823622290379665147239961968378104390343953940207365798982n],
+ [2203960485148121921418603742825762020974279258880205651967n, 0n],
+ [18566938241244942414004596690298913868373833782006617400804628704885040364344n, 16165975933942742336466353786298926857552937457188450663314217659523851788715n]
+ ]];
+ const F6 = [
+ [
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n]
+ ],
+ [
+ [1n, 0n],
+ [21575463638280843010398324269430826099269044274347216827212613867836435027261n, 10307601595873709700152284273816112264069230130616436755625194854815875713954n],
+ [21888242871839275220042445260109153167277707414472061641714758635765020556616n, 0n],
+ [3772000881919853776433695186713858239009073593817195771773381919316419345261n, 2236595495967245188281701248203181795121068902605861227855261137820944008926n],
+ [2203960485148121921418603742825762020974279258880205651966n, 0n],
+ [18429021223477853657660792034369865839114504446431234726392080002137598044644n, 9344045779998320333812420223237981029506012124075525679208581902008406485703n]
+ ],
+ [
+ [1n, 0n],
+ [2581911344467009335267311115468803099551665605076196740867805258568234346338n, 19937756971775647987995932169929341994314640652964949448313374472400716661030n],
+ [2203960485148121921418603742825762020974279258880205651966n, 0n],
+ [5324479202449903542726783395506214481928257762400643279780343368557297135718n, 16208900380737693084919495127334387981393726419856888799917914180988844123039n],
+ [21888242871839275220042445260109153167277707414472061641714758635765020556616n, 0n],
+ [13981852324922362344252311234282257507216387789820983642040889267519694726527n, 7629828391165209371577384193250820201684255241773809077146787135900891633097n]
+ ]
+ ];
+ const f = module.addFunction(prefix + "__frobeniusMap" + n);
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ for (let i = 0; i < 6; i++) {
+ const X = i == 0 ? c.getLocal("x") : c.i32_add(c.getLocal("x"), c.i32_const(i * f2size));
+ const Xc0 = X;
+ const Xc1 = c.i32_add(c.getLocal("x"), c.i32_const(i * f2size + f1size));
+ const R = i == 0 ? c.getLocal("r") : c.i32_add(c.getLocal("r"), c.i32_const(i * f2size));
+ const Rc0 = R;
+ const Rc1 = c.i32_add(c.getLocal("r"), c.i32_const(i * f2size + f1size));
+ const coef = mul2(F12[Math.floor(i / 3)][n % 12], F6[i % 3][n % 6]);
+ const pCoef = module.alloc([...bigInt2BytesLE(toMontgomery(coef[0]), 32), ...bigInt2BytesLE(toMontgomery(coef[1]), 32)]);
+ if (n % 2 == 1) f.addCode(c.call(f1mPrefix + "_copy", Xc0, Rc0), c.call(f1mPrefix + "_neg", Xc1, Rc1), c.call(f2mPrefix + "_mul", R, c.i32_const(pCoef), R));
+ else f.addCode(c.call(f2mPrefix + "_mul", X, c.i32_const(pCoef), R));
+ }
+ function mul2(a, b) {
+ const ac0 = BigInt(a[0]);
+ const ac1 = BigInt(a[1]);
+ const bc0 = BigInt(b[0]);
+ const bc1 = BigInt(b[1]);
+ const res = [(ac0 * bc0 - ac1 * bc1) % q, (ac0 * bc1 + ac1 * bc0) % q];
+ if (isNegative(res[0])) res[0] = res[0] + q;
+ return res;
+ }
+ }
+ function buildFinalExponentiationFirstChunk() {
+ const f = module.addFunction(prefix + "__finalExponentiationFirstChunk");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const elt = c.getLocal("x");
+ const eltC0 = elt;
+ const eltC1 = c.i32_add(elt, c.i32_const(n8 * 6));
+ const r = c.getLocal("r");
+ const pA = module.alloc(ftsize);
+ const A = c.i32_const(pA);
+ const Ac0 = A;
+ const Ac1 = c.i32_const(pA + n8 * 6);
+ const B = c.i32_const(module.alloc(ftsize));
+ const C = c.i32_const(module.alloc(ftsize));
+ const D = c.i32_const(module.alloc(ftsize));
+ f.addCode(c.call(f6mPrefix + "_copy", eltC0, Ac0), c.call(f6mPrefix + "_neg", eltC1, Ac1), c.call(ftmPrefix + "_inverse", elt, B), c.call(ftmPrefix + "_mul", A, B, C), c.call(prefix + "__frobeniusMap2", C, D), c.call(ftmPrefix + "_mul", C, D, r));
+ }
+ function buildCyclotomicSquare() {
+ const f = module.addFunction(prefix + "__cyclotomicSquare");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x4 = c.i32_add(c.getLocal("x"), c.i32_const(f2size));
+ const x3 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f2size));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(3 * f2size));
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(4 * f2size));
+ const x5 = c.i32_add(c.getLocal("x"), c.i32_const(5 * f2size));
+ const r0 = c.getLocal("r");
+ const r4 = c.i32_add(c.getLocal("r"), c.i32_const(f2size));
+ const r3 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f2size));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(3 * f2size));
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(4 * f2size));
+ const r5 = c.i32_add(c.getLocal("r"), c.i32_const(5 * f2size));
+ const t0 = c.i32_const(module.alloc(f2size));
+ const t1 = c.i32_const(module.alloc(f2size));
+ const t2 = c.i32_const(module.alloc(f2size));
+ const t3 = c.i32_const(module.alloc(f2size));
+ const t4 = c.i32_const(module.alloc(f2size));
+ const t5 = c.i32_const(module.alloc(f2size));
+ const tmp = c.i32_const(module.alloc(f2size));
+ const AUX = c.i32_const(module.alloc(f2size));
+ f.addCode(c.call(f2mPrefix + "_mul", x0, x1, tmp), c.call(f2mPrefix + "_mul", x1, c.i32_const(pNonResidueF6), t0), c.call(f2mPrefix + "_add", x0, t0, t0), c.call(f2mPrefix + "_add", x0, x1, AUX), c.call(f2mPrefix + "_mul", AUX, t0, t0), c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), tmp, AUX), c.call(f2mPrefix + "_add", tmp, AUX, AUX), c.call(f2mPrefix + "_sub", t0, AUX, t0), c.call(f2mPrefix + "_add", tmp, tmp, t1), c.call(f2mPrefix + "_mul", x2, x3, tmp), c.call(f2mPrefix + "_mul", x3, c.i32_const(pNonResidueF6), t2), c.call(f2mPrefix + "_add", x2, t2, t2), c.call(f2mPrefix + "_add", x2, x3, AUX), c.call(f2mPrefix + "_mul", AUX, t2, t2), c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), tmp, AUX), c.call(f2mPrefix + "_add", tmp, AUX, AUX), c.call(f2mPrefix + "_sub", t2, AUX, t2), c.call(f2mPrefix + "_add", tmp, tmp, t3), c.call(f2mPrefix + "_mul", x4, x5, tmp), c.call(f2mPrefix + "_mul", x5, c.i32_const(pNonResidueF6), t4), c.call(f2mPrefix + "_add", x4, t4, t4), c.call(f2mPrefix + "_add", x4, x5, AUX), c.call(f2mPrefix + "_mul", AUX, t4, t4), c.call(f2mPrefix + "_mul", c.i32_const(pNonResidueF6), tmp, AUX), c.call(f2mPrefix + "_add", tmp, AUX, AUX), c.call(f2mPrefix + "_sub", t4, AUX, t4), c.call(f2mPrefix + "_add", tmp, tmp, t5), c.call(f2mPrefix + "_sub", t0, x0, r0), c.call(f2mPrefix + "_add", r0, r0, r0), c.call(f2mPrefix + "_add", t0, r0, r0), c.call(f2mPrefix + "_add", t1, x1, r1), c.call(f2mPrefix + "_add", r1, r1, r1), c.call(f2mPrefix + "_add", t1, r1, r1), c.call(f2mPrefix + "_mul", t5, c.i32_const(pAltBn128Twist), AUX), c.call(f2mPrefix + "_add", AUX, x2, r2), c.call(f2mPrefix + "_add", r2, r2, r2), c.call(f2mPrefix + "_add", AUX, r2, r2), c.call(f2mPrefix + "_sub", t4, x3, r3), c.call(f2mPrefix + "_add", r3, r3, r3), c.call(f2mPrefix + "_add", t4, r3, r3), c.call(f2mPrefix + "_sub", t2, x4, r4), c.call(f2mPrefix + "_add", r4, r4, r4), c.call(f2mPrefix + "_add", t2, r4, r4), c.call(f2mPrefix + "_add", t3, x5, r5), c.call(f2mPrefix + "_add", r5, r5, r5), c.call(f2mPrefix + "_add", t3, r5, r5));
+ }
+ function buildCyclotomicExp(exponent, fnName) {
+ const exponentNafBytes = naf(exponent).map((b) => b == -1 ? 255 : b);
+ const pExponentNafBytes = module.alloc(exponentNafBytes);
+ const f = module.addFunction(prefix + "__cyclotomicExp_" + fnName);
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("bit", "i32");
+ f.addLocal("i", "i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("x");
+ const res = c.getLocal("r");
+ const inverse = c.i32_const(module.alloc(ftsize));
+ f.addCode(c.call(ftmPrefix + "_conjugate", x, inverse), c.call(ftmPrefix + "_one", res), c.if(c.teeLocal("bit", c.i32_load8_s(c.i32_const(exponentNafBytes.length - 1), pExponentNafBytes)), c.if(c.i32_eq(c.getLocal("bit"), c.i32_const(1)), c.call(ftmPrefix + "_mul", res, x, res), c.call(ftmPrefix + "_mul", res, inverse, res))), c.setLocal("i", c.i32_const(exponentNafBytes.length - 2)), c.block(c.loop(c.call(prefix + "__cyclotomicSquare", res, res), c.if(c.teeLocal("bit", c.i32_load8_s(c.getLocal("i"), pExponentNafBytes)), c.if(c.i32_eq(c.getLocal("bit"), c.i32_const(1)), c.call(ftmPrefix + "_mul", res, x, res), c.call(ftmPrefix + "_mul", res, inverse, res))), c.br_if(1, c.i32_eqz(c.getLocal("i"))), c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ function buildFinalExponentiationLastChunk() {
+ buildCyclotomicSquare();
+ buildCyclotomicExp(finalExpZ, "w0");
+ const f = module.addFunction(prefix + "__finalExponentiationLastChunk");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const elt = c.getLocal("x");
+ const result = c.getLocal("r");
+ const A = c.i32_const(module.alloc(ftsize));
+ const B = c.i32_const(module.alloc(ftsize));
+ const C = c.i32_const(module.alloc(ftsize));
+ const D = c.i32_const(module.alloc(ftsize));
+ const E = c.i32_const(module.alloc(ftsize));
+ const F = c.i32_const(module.alloc(ftsize));
+ const G = c.i32_const(module.alloc(ftsize));
+ const H = c.i32_const(module.alloc(ftsize));
+ const I = c.i32_const(module.alloc(ftsize));
+ const J = c.i32_const(module.alloc(ftsize));
+ const K = c.i32_const(module.alloc(ftsize));
+ const L = c.i32_const(module.alloc(ftsize));
+ const M = c.i32_const(module.alloc(ftsize));
+ const N = c.i32_const(module.alloc(ftsize));
+ const O = c.i32_const(module.alloc(ftsize));
+ const P = c.i32_const(module.alloc(ftsize));
+ const Q = c.i32_const(module.alloc(ftsize));
+ const R = c.i32_const(module.alloc(ftsize));
+ const S = c.i32_const(module.alloc(ftsize));
+ const T = c.i32_const(module.alloc(ftsize));
+ const U = c.i32_const(module.alloc(ftsize));
+ f.addCode(c.call(prefix + "__cyclotomicExp_w0", elt, A), c.call(ftmPrefix + "_conjugate", A, A), c.call(prefix + "__cyclotomicSquare", A, B), c.call(prefix + "__cyclotomicSquare", B, C), c.call(ftmPrefix + "_mul", C, B, D), c.call(prefix + "__cyclotomicExp_w0", D, E), c.call(ftmPrefix + "_conjugate", E, E), c.call(prefix + "__cyclotomicSquare", E, F), c.call(prefix + "__cyclotomicExp_w0", F, G), c.call(ftmPrefix + "_conjugate", G, G), c.call(ftmPrefix + "_conjugate", D, H), c.call(ftmPrefix + "_conjugate", G, I), c.call(ftmPrefix + "_mul", I, E, J), c.call(ftmPrefix + "_mul", J, H, K), c.call(ftmPrefix + "_mul", K, B, L), c.call(ftmPrefix + "_mul", K, E, M), c.call(ftmPrefix + "_mul", M, elt, N), c.call(prefix + "__frobeniusMap1", L, O), c.call(ftmPrefix + "_mul", O, N, P), c.call(prefix + "__frobeniusMap2", K, Q), c.call(ftmPrefix + "_mul", Q, P, R), c.call(ftmPrefix + "_conjugate", elt, S), c.call(ftmPrefix + "_mul", S, L, T), c.call(prefix + "__frobeniusMap3", T, U), c.call(ftmPrefix + "_mul", U, R, result));
+ }
+ function buildFinalExponentiation() {
+ buildFinalExponentiationFirstChunk();
+ buildFinalExponentiationLastChunk();
+ const f = module.addFunction(prefix + "_finalExponentiation");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const elt = c.getLocal("x");
+ const result = c.getLocal("r");
+ const eltToFirstChunk = c.i32_const(module.alloc(ftsize));
+ f.addCode(c.call(prefix + "__finalExponentiationFirstChunk", elt, eltToFirstChunk), c.call(prefix + "__finalExponentiationLastChunk", eltToFirstChunk, result));
+ }
+ function buildFinalExponentiationOld() {
+ const f = module.addFunction(prefix + "_finalExponentiationOld");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const pExponent = module.alloc(bigInt2BytesLE(552484233613224096312617126783173147097382103762957654188882734314196910839907541213974502761540629817009608548654680343627701153829446747810907373256841551006201639677726139946029199968412598804882391702273019083653272047566316584365559776493027495458238373902875937659943504873220554161550525926302303331747463515644711876653177129578303191095900909191624817826566688241804408081892785725967931714097716709526092261278071952560171111444072049229123565057483750161460024353346284167282452756217662335528813519139808291170539072125381230815729071544861602750936964829313608137325426383735122175229541155376346436093930287402089517426973178917569713384748081827255472576937471496195752727188261435633271238710131736096299798168852925540549342330775279877006784354801422249722573783561685179618816480037695005515426162362431072245638324744480n, 352));
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(ftmPrefix + "_exp", c.getLocal("x"), c.i32_const(pExponent), c.i32_const(352), c.getLocal("r")));
+ }
+ const pPreP = module.alloc(prePSize);
+ const pPreQ = module.alloc(preQSize);
+ function buildPairingEquation(nPairings) {
+ const f = module.addFunction(prefix + "_pairingEq" + nPairings);
+ for (let i = 0; i < nPairings; i++) {
+ f.addParam("p_" + i, "i32");
+ f.addParam("q_" + i, "i32");
+ }
+ f.addParam("c", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const resT = c.i32_const(module.alloc(ftsize));
+ const auxT = c.i32_const(module.alloc(ftsize));
+ f.addCode(c.call(ftmPrefix + "_one", resT));
+ for (let i = 0; i < nPairings; i++) {
+ f.addCode(c.call(prefix + "_prepareG1", c.getLocal("p_" + i), c.i32_const(pPreP)));
+ f.addCode(c.call(prefix + "_prepareG2", c.getLocal("q_" + i), c.i32_const(pPreQ)));
+ f.addCode(c.call(prefix + "_millerLoop", c.i32_const(pPreP), c.i32_const(pPreQ), auxT));
+ f.addCode(c.call(ftmPrefix + "_mul", resT, auxT, resT));
+ }
+ f.addCode(c.call(prefix + "_finalExponentiation", resT, resT));
+ f.addCode(c.call(ftmPrefix + "_eq", resT, c.getLocal("c")));
+ }
+ function buildPairing() {
+ const f = module.addFunction(prefix + "_pairing");
+ f.addParam("p", "i32");
+ f.addParam("q", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const resT = c.i32_const(module.alloc(ftsize));
+ f.addCode(c.call(prefix + "_prepareG1", c.getLocal("p"), c.i32_const(pPreP)));
+ f.addCode(c.call(prefix + "_prepareG2", c.getLocal("q"), c.i32_const(pPreQ)));
+ f.addCode(c.call(prefix + "_millerLoop", c.i32_const(pPreP), c.i32_const(pPreQ), resT));
+ f.addCode(c.call(prefix + "_finalExponentiation", resT, c.getLocal("r")));
+ }
+ buildPrepAddStep();
+ buildPrepDoubleStep();
+ buildPrepareG1();
+ buildPrepareG2();
+ buildMulBy024();
+ buildMulBy024Old();
+ buildMillerLoop();
+ for (let i = 0; i < 10; i++) {
+ buildFrobeniusMap(i);
+ module.exportFunction(prefix + "__frobeniusMap" + i);
+ }
+ buildFinalExponentiationOld();
+ buildFinalExponentiation();
+ for (let i = 1; i <= 5; i++) {
+ buildPairingEquation(i);
+ module.exportFunction(prefix + "_pairingEq" + i);
+ }
+ buildPairing();
+ module.exportFunction(prefix + "_pairing");
+ module.exportFunction(prefix + "_prepareG1");
+ module.exportFunction(prefix + "_prepareG2");
+ module.exportFunction(prefix + "_millerLoop");
+ module.exportFunction(prefix + "_finalExponentiation");
+ module.exportFunction(prefix + "_finalExponentiationOld");
+ module.exportFunction(prefix + "__mulBy024");
+ module.exportFunction(prefix + "__mulBy024Old");
+ module.exportFunction(prefix + "__cyclotomicSquare");
+ module.exportFunction(prefix + "__cyclotomicExp_w0");
+}
+//#endregion
+//#region src/bls12381/build_bls12381.js
+function buildBLS12381(module, _prefix) {
+ const prefix = _prefix || "bls12381";
+ if (module.modules[prefix]) return prefix;
+ const q = 4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559787n;
+ const r = 52435875175126190479447740508185965837690552500527637822603658699938581184513n;
+ const n64q = Math.floor((bitLength(q - 1n) - 1) / 64) + 1;
+ const n8q = n64q * 8;
+ const f1size = n8q;
+ const f2size = f1size * 2;
+ const ftsize = f1size * 12;
+ const n64r = Math.floor((bitLength(r - 1n) - 1) / 64) + 1;
+ const n8r = n64r * 8;
+ const frsize = n8r;
+ const pr = module.alloc(bigInt2BytesLE(r, frsize));
+ const f1mPrefix = buildF1m(module, q, "f1m", "intq");
+ buildF1(module, r, "fr", "frm", "intr");
+ const pG1b = module.alloc(bigInt2BytesLE(toMontgomery(4n), f1size));
+ const g1mPrefix = buildCurve(module, "g1m", "f1m", pG1b);
+ buildFFT(module, "frm", "frm", "frm", "frm_mul");
+ buildPol(module, "pol", "frm");
+ buildQAP(module, "qap", "frm");
+ const f2mPrefix = buildF2m(module, "f1m_neg", "f2m", "f1m");
+ const pG2b = module.alloc([...bigInt2BytesLE(toMontgomery(4n), f1size), ...bigInt2BytesLE(toMontgomery(4n), f1size)]);
+ const g2mPrefix = buildCurve(module, "g2m", "f2m", pG2b);
+ function buildGTimesFr(fnName, opMul) {
+ const f = module.addFunction(fnName);
+ f.addParam("pG", "i32");
+ f.addParam("pFr", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const AUX = c.i32_const(module.alloc(n8r));
+ f.addCode(c.call("frm_fromMontgomery", c.getLocal("pFr"), AUX), c.call(opMul, c.getLocal("pG"), AUX, c.i32_const(n8r), c.getLocal("pr")));
+ module.exportFunction(fnName);
+ }
+ buildGTimesFr("g1m_timesFr", "g1m_timesScalar");
+ buildFFT(module, "g1m", "g1m", "frm", "g1m_timesFr");
+ buildGTimesFr("g2m_timesFr", "g2m_timesScalar");
+ buildFFT(module, "g2m", "g2m", "frm", "g2m_timesFr");
+ buildGTimesFr("g1m_timesFrAffine", "g1m_timesScalarAffine");
+ buildGTimesFr("g2m_timesFrAffine", "g2m_timesScalarAffine");
+ buildApplyKey(module, "frm_batchApplyKey", "fmr", "frm", n8r, n8r, n8r, "frm_mul");
+ buildApplyKey(module, "g1m_batchApplyKey", "g1m", "frm", n8q * 3, n8q * 3, n8r, "g1m_timesFr");
+ buildApplyKey(module, "g1m_batchApplyKeyMixed", "g1m", "frm", n8q * 2, n8q * 3, n8r, "g1m_timesFrAffine");
+ buildApplyKey(module, "g2m_batchApplyKey", "g2m", "frm", n8q * 2 * 3, n8q * 3 * 2, n8r, "g2m_timesFr");
+ buildApplyKey(module, "g2m_batchApplyKeyMixed", "g2m", "frm", n8q * 2 * 2, n8q * 3 * 2, n8r, "g2m_timesFrAffine");
+ function toMontgomery(a) {
+ return BigInt(a) * (1n << BigInt(f1size * 8)) % q;
+ }
+ const G1gen = [
+ 3685416753713387016781088315183077757961620795782546409894578378688607592378376318836054947676345821548104185464507n,
+ 1339506544944476473020471379941921221584933875938349620426543736416511423956333506472724655353366534992391756441569n,
+ 1n
+ ];
+ const pG1gen = module.alloc([
+ ...bigInt2BytesLE(toMontgomery(G1gen[0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G1gen[1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G1gen[2]), f1size)
+ ]);
+ const G1zero = [
+ 0n,
+ 1n,
+ 0n
+ ];
+ const pG1zero = module.alloc([
+ ...bigInt2BytesLE(toMontgomery(G1zero[0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G1zero[1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G1zero[2]), f1size)
+ ]);
+ const G2gen = [
+ [352701069587466618187139116011060144890029952792775240219908644239793785735715026873347600343865175952761926303160n, 3059144344244213709971259814753781636986470325476647558659373206291635324768958432433509563104347017837885763365758n],
+ [1985150602287291935568054521177171638300868978215655730859378665066344726373823718423869104263333984641494340347905n, 927553665492332455747201965776037880757740193453592970025027978793976877002675564980949289727957565575433344219582n],
+ [1n, 0n]
+ ];
+ const pG2gen = module.alloc([
+ ...bigInt2BytesLE(toMontgomery(G2gen[0][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2gen[0][1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2gen[1][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2gen[1][1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2gen[2][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2gen[2][1]), f1size)
+ ]);
+ const G2zero = [
+ [0n, 0n],
+ [1n, 0n],
+ [0n, 0n]
+ ];
+ const pG2zero = module.alloc([
+ ...bigInt2BytesLE(toMontgomery(G2zero[0][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2zero[0][1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2zero[1][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2zero[1][1]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2zero[2][0]), f1size),
+ ...bigInt2BytesLE(toMontgomery(G2zero[2][1]), f1size)
+ ]);
+ const pOneT = module.alloc([
+ ...bigInt2BytesLE(toMontgomery(1n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size),
+ ...bigInt2BytesLE(toMontgomery(0n), f1size)
+ ]);
+ const pBls12381Twist = module.alloc([...bigInt2BytesLE(toMontgomery(1n), f1size), ...bigInt2BytesLE(toMontgomery(1n), f1size)]);
+ function build_mulNR2() {
+ const f = module.addFunction(f2mPrefix + "_mulNR");
+ f.addParam("x", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const x0c = c.i32_const(module.alloc(f1size));
+ const x0 = c.getLocal("x");
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(f1size));
+ const r0 = c.getLocal("pr");
+ const r1 = c.i32_add(c.getLocal("pr"), c.i32_const(f1size));
+ f.addCode(c.call(f1mPrefix + "_copy", x0, x0c), c.call(f1mPrefix + "_sub", x0, x1, r0), c.call(f1mPrefix + "_add", x0c, x1, r1));
+ }
+ build_mulNR2();
+ const f6mPrefix = buildF3m(module, f2mPrefix + "_mulNR", "f6m", "f2m");
+ function build_mulNR6() {
+ const f = module.addFunction(f6mPrefix + "_mulNR");
+ f.addParam("x", "i32");
+ f.addParam("pr", "i32");
+ const c = f.getCodeBuilder();
+ const c0copy = c.i32_const(module.alloc(f1size * 2));
+ f.addCode(c.call(f2mPrefix + "_copy", c.getLocal("x"), c0copy), c.call(f2mPrefix + "_mulNR", c.i32_add(c.getLocal("x"), c.i32_const(n8q * 4)), c.getLocal("pr")), c.call(f2mPrefix + "_copy", c.i32_add(c.getLocal("x"), c.i32_const(n8q * 2)), c.i32_add(c.getLocal("pr"), c.i32_const(n8q * 4))), c.call(f2mPrefix + "_copy", c0copy, c.i32_add(c.getLocal("pr"), c.i32_const(n8q * 2))));
+ }
+ build_mulNR6();
+ const ftmPrefix = buildF2m(module, f6mPrefix + "_mulNR", "ftm", f6mPrefix);
+ const ateLoopBitBytes = bits(15132376222941642752n);
+ const pAteLoopBitBytes = module.alloc(ateLoopBitBytes);
+ const ateCoefSize = 3 * f2size;
+ const ateNDblCoefs = ateLoopBitBytes.length - 1;
+ const ateNCoefs = ateLoopBitBytes.reduce((acc, b) => acc + (b != 0 ? 1 : 0), 0) + ateNDblCoefs + 1;
+ const prePSize = 6 * n8q;
+ const preQSize = 3 * n8q * 2 + ateNCoefs * ateCoefSize;
+ const finalExpIsNegative = true;
+ const finalExpZ = 15132376222941642752n;
+ module.modules[prefix] = {
+ n64q,
+ n64r,
+ n8q,
+ n8r,
+ pG1gen,
+ pG1zero,
+ pG1b,
+ pG2gen,
+ pG2zero,
+ pG2b,
+ pq: module.modules["f1m"].pq,
+ pr,
+ pOneT,
+ r,
+ q,
+ prePSize,
+ preQSize
+ };
+ function naf(n) {
+ let E = n;
+ const res = [];
+ while (E > 0n) {
+ if (isOdd(E)) {
+ const z = 2 - Number(E % 4n);
+ res.push(z);
+ E = E - BigInt(z);
+ } else res.push(0);
+ E = E >> 1n;
+ }
+ return res;
+ }
+ function bits(n) {
+ let E = n;
+ const res = [];
+ while (E > 0n) {
+ if (isOdd(E)) res.push(1);
+ else res.push(0);
+ E = E >> 1n;
+ }
+ return res;
+ }
+ function buildPrepareG1() {
+ const f = module.addFunction(prefix + "_prepareG1");
+ f.addParam("pP", "i32");
+ f.addParam("ppreP", "i32");
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(g1mPrefix + "_normalize", c.getLocal("pP"), c.getLocal("ppreP")));
+ }
+ function buildPrepDoubleStep() {
+ const f = module.addFunction(prefix + "_prepDblStep");
+ f.addParam("R", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const Rx = c.getLocal("R");
+ const Ry = c.i32_add(c.getLocal("R"), c.i32_const(2 * n8q));
+ const Rz = c.i32_add(c.getLocal("R"), c.i32_const(4 * n8q));
+ const t0 = c.getLocal("r");
+ const t3 = c.i32_add(c.getLocal("r"), c.i32_const(2 * n8q));
+ const t6 = c.i32_add(c.getLocal("r"), c.i32_const(4 * n8q));
+ const zsquared = c.i32_const(module.alloc(f2size));
+ const t1 = c.i32_const(module.alloc(f2size));
+ const t2 = c.i32_const(module.alloc(f2size));
+ const t4 = c.i32_const(module.alloc(f2size));
+ const t5 = c.i32_const(module.alloc(f2size));
+ f.addCode(c.call(f2mPrefix + "_square", Rx, t0), c.call(f2mPrefix + "_square", Ry, t1), c.call(f2mPrefix + "_square", t1, t2), c.call(f2mPrefix + "_add", t1, Rx, t3), c.call(f2mPrefix + "_square", t3, t3), c.call(f2mPrefix + "_sub", t3, t0, t3), c.call(f2mPrefix + "_sub", t3, t2, t3), c.call(f2mPrefix + "_add", t3, t3, t3), c.call(f2mPrefix + "_add", t0, t0, t4), c.call(f2mPrefix + "_add", t4, t0, t4), c.call(f2mPrefix + "_add", Rx, t4, t6), c.call(f2mPrefix + "_square", t4, t5), c.call(f2mPrefix + "_square", Rz, zsquared), c.call(f2mPrefix + "_sub", t5, t3, Rx), c.call(f2mPrefix + "_sub", Rx, t3, Rx), c.call(f2mPrefix + "_add", Rz, Ry, Rz), c.call(f2mPrefix + "_square", Rz, Rz), c.call(f2mPrefix + "_sub", Rz, t1, Rz), c.call(f2mPrefix + "_sub", Rz, zsquared, Rz), c.call(f2mPrefix + "_sub", t3, Rx, Ry), c.call(f2mPrefix + "_mul", Ry, t4, Ry), c.call(f2mPrefix + "_add", t2, t2, t2), c.call(f2mPrefix + "_add", t2, t2, t2), c.call(f2mPrefix + "_add", t2, t2, t2), c.call(f2mPrefix + "_sub", Ry, t2, Ry), c.call(f2mPrefix + "_mul", t4, zsquared, t3), c.call(f2mPrefix + "_add", t3, t3, t3), c.call(f2mPrefix + "_neg", t3, t3), c.call(f2mPrefix + "_square", t6, t6), c.call(f2mPrefix + "_sub", t6, t0, t6), c.call(f2mPrefix + "_sub", t6, t5, t6), c.call(f2mPrefix + "_add", t1, t1, t1), c.call(f2mPrefix + "_add", t1, t1, t1), c.call(f2mPrefix + "_sub", t6, t1, t6), c.call(f2mPrefix + "_mul", Rz, zsquared, t0), c.call(f2mPrefix + "_add", t0, t0, t0));
+ }
+ function buildPrepAddStep() {
+ const f = module.addFunction(prefix + "_prepAddStep");
+ f.addParam("R", "i32");
+ f.addParam("Q", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const Rx = c.getLocal("R");
+ const Ry = c.i32_add(c.getLocal("R"), c.i32_const(2 * n8q));
+ const Rz = c.i32_add(c.getLocal("R"), c.i32_const(4 * n8q));
+ const Qx = c.getLocal("Q");
+ const Qy = c.i32_add(c.getLocal("Q"), c.i32_const(2 * n8q));
+ const t10 = c.getLocal("r");
+ const t1 = c.i32_add(c.getLocal("r"), c.i32_const(2 * n8q));
+ const t9 = c.i32_add(c.getLocal("r"), c.i32_const(4 * n8q));
+ const zsquared = c.i32_const(module.alloc(f2size));
+ const ysquared = c.i32_const(module.alloc(f2size));
+ const ztsquared = c.i32_const(module.alloc(f2size));
+ const t0 = c.i32_const(module.alloc(f2size));
+ const t2 = c.i32_const(module.alloc(f2size));
+ const t3 = c.i32_const(module.alloc(f2size));
+ const t4 = c.i32_const(module.alloc(f2size));
+ const t5 = c.i32_const(module.alloc(f2size));
+ const t6 = c.i32_const(module.alloc(f2size));
+ const t7 = c.i32_const(module.alloc(f2size));
+ const t8 = c.i32_const(module.alloc(f2size));
+ f.addCode(c.call(f2mPrefix + "_square", Rz, zsquared), c.call(f2mPrefix + "_square", Qy, ysquared), c.call(f2mPrefix + "_mul", zsquared, Qx, t0), c.call(f2mPrefix + "_add", Qy, Rz, t1), c.call(f2mPrefix + "_square", t1, t1), c.call(f2mPrefix + "_sub", t1, ysquared, t1), c.call(f2mPrefix + "_sub", t1, zsquared, t1), c.call(f2mPrefix + "_mul", t1, zsquared, t1), c.call(f2mPrefix + "_sub", t0, Rx, t2), c.call(f2mPrefix + "_square", t2, t3), c.call(f2mPrefix + "_add", t3, t3, t4), c.call(f2mPrefix + "_add", t4, t4, t4), c.call(f2mPrefix + "_mul", t4, t2, t5), c.call(f2mPrefix + "_sub", t1, Ry, t6), c.call(f2mPrefix + "_sub", t6, Ry, t6), c.call(f2mPrefix + "_mul", t6, Qx, t9), c.call(f2mPrefix + "_mul", t4, Rx, t7), c.call(f2mPrefix + "_square", t6, Rx), c.call(f2mPrefix + "_sub", Rx, t5, Rx), c.call(f2mPrefix + "_sub", Rx, t7, Rx), c.call(f2mPrefix + "_sub", Rx, t7, Rx), c.call(f2mPrefix + "_add", Rz, t2, Rz), c.call(f2mPrefix + "_square", Rz, Rz), c.call(f2mPrefix + "_sub", Rz, zsquared, Rz), c.call(f2mPrefix + "_sub", Rz, t3, Rz), c.call(f2mPrefix + "_add", Qy, Rz, t10), c.call(f2mPrefix + "_sub", t7, Rx, t8), c.call(f2mPrefix + "_mul", t8, t6, t8), c.call(f2mPrefix + "_mul", Ry, t5, t0), c.call(f2mPrefix + "_add", t0, t0, t0), c.call(f2mPrefix + "_sub", t8, t0, Ry), c.call(f2mPrefix + "_square", t10, t10), c.call(f2mPrefix + "_sub", t10, ysquared, t10), c.call(f2mPrefix + "_square", Rz, ztsquared), c.call(f2mPrefix + "_sub", t10, ztsquared, t10), c.call(f2mPrefix + "_add", t9, t9, t9), c.call(f2mPrefix + "_sub", t9, t10, t9), c.call(f2mPrefix + "_add", Rz, Rz, t10), c.call(f2mPrefix + "_neg", t6, t6), c.call(f2mPrefix + "_add", t6, t6, t1));
+ }
+ function buildPrepareG2() {
+ const f = module.addFunction(prefix + "_prepareG2");
+ f.addParam("pQ", "i32");
+ f.addParam("ppreQ", "i32");
+ f.addLocal("pCoef", "i32");
+ f.addLocal("i", "i32");
+ const c = f.getCodeBuilder();
+ const Q = c.getLocal("pQ");
+ const pR = module.alloc(f2size * 3);
+ const R = c.i32_const(pR);
+ const base = c.getLocal("ppreQ");
+ f.addCode(c.call(g2mPrefix + "_normalize", Q, base), c.if(c.call(g2mPrefix + "_isZero", base), c.ret([])), c.call(g2mPrefix + "_copy", base, R), c.setLocal("pCoef", c.i32_add(c.getLocal("ppreQ"), c.i32_const(f2size * 3))));
+ f.addCode(c.setLocal("i", c.i32_const(ateLoopBitBytes.length - 2)), c.block(c.loop(c.call(prefix + "_prepDblStep", R, c.getLocal("pCoef")), c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))), c.if(c.i32_load8_s(c.getLocal("i"), pAteLoopBitBytes), [...c.call(prefix + "_prepAddStep", R, base, c.getLocal("pCoef")), ...c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize)))]), c.br_if(1, c.i32_eqz(c.getLocal("i"))), c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ }
+ function buildF6Mul1() {
+ const f = module.addFunction(f6mPrefix + "_mul1");
+ f.addParam("pA", "i32");
+ f.addParam("pC1", "i32");
+ f.addParam("pR", "i32");
+ const c = f.getCodeBuilder();
+ const A_c0 = c.getLocal("pA");
+ const A_c1 = c.i32_add(c.getLocal("pA"), c.i32_const(f1size * 2));
+ const A_c2 = c.i32_add(c.getLocal("pA"), c.i32_const(f1size * 4));
+ const c1 = c.getLocal("pC1");
+ const t1 = c.getLocal("pR");
+ const t2 = c.i32_add(c.getLocal("pR"), c.i32_const(f1size * 2));
+ const b_b = c.i32_add(c.getLocal("pR"), c.i32_const(f1size * 4));
+ const Ac0_Ac1 = c.i32_const(module.alloc(f1size * 2));
+ const Ac1_Ac2 = c.i32_const(module.alloc(f1size * 2));
+ f.addCode(c.call(f2mPrefix + "_add", A_c0, A_c1, Ac0_Ac1), c.call(f2mPrefix + "_add", A_c1, A_c2, Ac1_Ac2), c.call(f2mPrefix + "_mul", A_c1, c1, b_b), c.call(f2mPrefix + "_mul", Ac1_Ac2, c1, t1), c.call(f2mPrefix + "_sub", t1, b_b, t1), c.call(f2mPrefix + "_mulNR", t1, t1), c.call(f2mPrefix + "_mul", Ac0_Ac1, c1, t2), c.call(f2mPrefix + "_sub", t2, b_b, t2));
+ }
+ buildF6Mul1();
+ function buildF6Mul01() {
+ const f = module.addFunction(f6mPrefix + "_mul01");
+ f.addParam("pA", "i32");
+ f.addParam("pC0", "i32");
+ f.addParam("pC1", "i32");
+ f.addParam("pR", "i32");
+ const c = f.getCodeBuilder();
+ const A_c0 = c.getLocal("pA");
+ const A_c1 = c.i32_add(c.getLocal("pA"), c.i32_const(f1size * 2));
+ const A_c2 = c.i32_add(c.getLocal("pA"), c.i32_const(f1size * 4));
+ const c0 = c.getLocal("pC0");
+ const c1 = c.getLocal("pC1");
+ const t1 = c.getLocal("pR");
+ const t2 = c.i32_add(c.getLocal("pR"), c.i32_const(f1size * 2));
+ const t3 = c.i32_add(c.getLocal("pR"), c.i32_const(f1size * 4));
+ const a_a = c.i32_const(module.alloc(f1size * 2));
+ const b_b = c.i32_const(module.alloc(f1size * 2));
+ const Ac0_Ac1 = c.i32_const(module.alloc(f1size * 2));
+ const Ac0_Ac2 = c.i32_const(module.alloc(f1size * 2));
+ f.addCode(c.call(f2mPrefix + "_mul", A_c0, c0, a_a), c.call(f2mPrefix + "_mul", A_c1, c1, b_b), c.call(f2mPrefix + "_add", A_c0, A_c1, Ac0_Ac1), c.call(f2mPrefix + "_add", A_c0, A_c2, Ac0_Ac2), c.call(f2mPrefix + "_add", A_c1, A_c2, t1), c.call(f2mPrefix + "_mul", t1, c1, t1), c.call(f2mPrefix + "_sub", t1, b_b, t1), c.call(f2mPrefix + "_mulNR", t1, t1), c.call(f2mPrefix + "_add", t1, a_a, t1), c.call(f2mPrefix + "_add", c0, c1, t2), c.call(f2mPrefix + "_mul", t2, Ac0_Ac1, t2), c.call(f2mPrefix + "_sub", t2, a_a, t2), c.call(f2mPrefix + "_sub", t2, b_b, t2), c.call(f2mPrefix + "_mul", Ac0_Ac2, c0, t3), c.call(f2mPrefix + "_sub", t3, a_a, t3), c.call(f2mPrefix + "_add", t3, b_b, t3));
+ }
+ buildF6Mul01();
+ function buildF12Mul014() {
+ const f = module.addFunction(ftmPrefix + "_mul014");
+ f.addParam("pA", "i32");
+ f.addParam("pC0", "i32");
+ f.addParam("pC1", "i32");
+ f.addParam("pC4", "i32");
+ f.addParam("pR", "i32");
+ const c = f.getCodeBuilder();
+ const A_c0 = c.getLocal("pA");
+ const A_c1 = c.i32_add(c.getLocal("pA"), c.i32_const(f1size * 6));
+ const c0 = c.getLocal("pC0");
+ const c1 = c.getLocal("pC1");
+ const c4 = c.getLocal("pC4");
+ const aa = c.i32_const(module.alloc(f1size * 6));
+ const bb = c.i32_const(module.alloc(f1size * 6));
+ const o = c.i32_const(module.alloc(f1size * 2));
+ const R_c0 = c.getLocal("pR");
+ const R_c1 = c.i32_add(c.getLocal("pR"), c.i32_const(f1size * 6));
+ f.addCode(c.call(f6mPrefix + "_mul01", A_c0, c0, c1, aa), c.call(f6mPrefix + "_mul1", A_c1, c4, bb), c.call(f2mPrefix + "_add", c1, c4, o), c.call(f6mPrefix + "_add", A_c1, A_c0, R_c1), c.call(f6mPrefix + "_mul01", R_c1, c0, o, R_c1), c.call(f6mPrefix + "_sub", R_c1, aa, R_c1), c.call(f6mPrefix + "_sub", R_c1, bb, R_c1), c.call(f6mPrefix + "_copy", bb, R_c0), c.call(f6mPrefix + "_mulNR", R_c0, R_c0), c.call(f6mPrefix + "_add", R_c0, aa, R_c0));
+ }
+ buildF12Mul014();
+ function buildELL() {
+ const f = module.addFunction(prefix + "_ell");
+ f.addParam("pP", "i32");
+ f.addParam("pCoefs", "i32");
+ f.addParam("pF", "i32");
+ const c = f.getCodeBuilder();
+ const Px = c.getLocal("pP");
+ const Py = c.i32_add(c.getLocal("pP"), c.i32_const(n8q));
+ const F = c.getLocal("pF");
+ const coef0_0 = c.getLocal("pCoefs");
+ const coef0_1 = c.i32_add(c.getLocal("pCoefs"), c.i32_const(f1size));
+ const coef1_0 = c.i32_add(c.getLocal("pCoefs"), c.i32_const(f1size * 2));
+ const coef1_1 = c.i32_add(c.getLocal("pCoefs"), c.i32_const(f1size * 3));
+ const coef2 = c.i32_add(c.getLocal("pCoefs"), c.i32_const(f1size * 4));
+ const pc0 = module.alloc(f1size * 2);
+ const c0 = c.i32_const(pc0);
+ const c0_c0 = c.i32_const(pc0);
+ const c0_c1 = c.i32_const(pc0 + f1size);
+ const pc1 = module.alloc(f1size * 2);
+ const c1 = c.i32_const(pc1);
+ const c1_c0 = c.i32_const(pc1);
+ const c1_c1 = c.i32_const(pc1 + f1size);
+ f.addCode(c.call(f1mPrefix + "_mul", coef0_0, Py, c0_c0), c.call(f1mPrefix + "_mul", coef0_1, Py, c0_c1), c.call(f1mPrefix + "_mul", coef1_0, Px, c1_c0), c.call(f1mPrefix + "_mul", coef1_1, Px, c1_c1), c.call(ftmPrefix + "_mul014", F, coef2, c1, c0, F));
+ }
+ buildELL();
+ function buildMillerLoop() {
+ const f = module.addFunction(prefix + "_millerLoop");
+ f.addParam("ppreP", "i32");
+ f.addParam("ppreQ", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("pCoef", "i32");
+ f.addLocal("i", "i32");
+ const c = f.getCodeBuilder();
+ const preP = c.getLocal("ppreP");
+ const coefs = c.getLocal("pCoef");
+ const F = c.getLocal("r");
+ f.addCode(c.call(ftmPrefix + "_one", F), c.if(c.call(g1mPrefix + "_isZero", preP), c.ret([])), c.if(c.call(g1mPrefix + "_isZero", c.getLocal("ppreQ")), c.ret([])), c.setLocal("pCoef", c.i32_add(c.getLocal("ppreQ"), c.i32_const(f2size * 3))), c.setLocal("i", c.i32_const(ateLoopBitBytes.length - 2)), c.block(c.loop(c.call(prefix + "_ell", preP, coefs, F), c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize))), c.if(c.i32_load8_s(c.getLocal("i"), pAteLoopBitBytes), [...c.call(prefix + "_ell", preP, coefs, F), ...c.setLocal("pCoef", c.i32_add(c.getLocal("pCoef"), c.i32_const(ateCoefSize)))]), c.call(ftmPrefix + "_square", F, F), c.br_if(1, c.i32_eq(c.getLocal("i"), c.i32_const(1))), c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))), c.br(0))), c.call(prefix + "_ell", preP, coefs, F));
+ f.addCode(c.call(ftmPrefix + "_conjugate", F, F));
+ }
+ function buildFrobeniusMap(n) {
+ const F12 = [[
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n]
+ ], [
+ [1n, 0n],
+ [3850754370037169011952147076051364057158807420970682438676050522613628423219637725072182697113062777891589506424760n, 151655185184498381465642749684540099398075398968325446656007613510403227271200139370504932015952886146304766135027n],
+ [793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620351n, 0n],
+ [2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n, 1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257n],
+ [793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n, 0n],
+ [3125332594171059424908108096204648978570118281977575435832422631601824034463382777937621250592425535493320683825557n, 877076961050607968509681729531255177986764537961432449499635504522207616027455086505066378536590128544573588734230n],
+ [4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559786n, 0n],
+ [151655185184498381465642749684540099398075398968325446656007613510403227271200139370504932015952886146304766135027n, 3850754370037169011952147076051364057158807420970682438676050522613628423219637725072182697113062777891589506424760n],
+ [4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n, 0n],
+ [1028732146235106349975324479215795277384839936929757896155643118032610843298655225875571310552543014690878354869257n, 2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n],
+ [4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437n, 0n],
+ [877076961050607968509681729531255177986764537961432449499635504522207616027455086505066378536590128544573588734230n, 3125332594171059424908108096204648978570118281977575435832422631601824034463382777937621250592425535493320683825557n]
+ ]];
+ const F6 = [
+ [
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n],
+ [1n, 0n]
+ ],
+ [
+ [1n, 0n],
+ [0n, 4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n],
+ [793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n, 0n],
+ [0n, 1n],
+ [4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n, 0n],
+ [0n, 793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n]
+ ],
+ [
+ [1n, 0n],
+ [4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939437n, 0n],
+ [4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n, 0n],
+ [4002409555221667393417789825735904156556882819939007885332058136124031650490837864442687629129015664037894272559786n, 0n],
+ [793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n, 0n],
+ [793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620351n, 0n]
+ ]
+ ];
+ const f = module.addFunction(ftmPrefix + "_frobeniusMap" + n);
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ for (let i = 0; i < 6; i++) {
+ const X = i == 0 ? c.getLocal("x") : c.i32_add(c.getLocal("x"), c.i32_const(i * f2size));
+ const Xc0 = X;
+ const Xc1 = c.i32_add(c.getLocal("x"), c.i32_const(i * f2size + f1size));
+ const R = i == 0 ? c.getLocal("r") : c.i32_add(c.getLocal("r"), c.i32_const(i * f2size));
+ const Rc0 = R;
+ const Rc1 = c.i32_add(c.getLocal("r"), c.i32_const(i * f2size + f1size));
+ const coef = mul2(F12[Math.floor(i / 3)][n % 12], F6[i % 3][n % 6]);
+ const pCoef = module.alloc([...bigInt2BytesLE(toMontgomery(coef[0]), n8q), ...bigInt2BytesLE(toMontgomery(coef[1]), n8q)]);
+ if (n % 2 == 1) f.addCode(c.call(f1mPrefix + "_copy", Xc0, Rc0), c.call(f1mPrefix + "_neg", Xc1, Rc1), c.call(f2mPrefix + "_mul", R, c.i32_const(pCoef), R));
+ else f.addCode(c.call(f2mPrefix + "_mul", X, c.i32_const(pCoef), R));
+ }
+ function mul2(a, b) {
+ const ac0 = a[0];
+ const ac1 = a[1];
+ const bc0 = b[0];
+ const bc1 = b[1];
+ const res = [(ac0 * bc0 - ac1 * bc1) % q, (ac0 * bc1 + ac1 * bc0) % q];
+ if (isNegative(res[0])) res[0] = res[0] + q;
+ return res;
+ }
+ }
+ function buildCyclotomicSquare() {
+ const f = module.addFunction(prefix + "__cyclotomicSquare");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const x0 = c.getLocal("x");
+ const x4 = c.i32_add(c.getLocal("x"), c.i32_const(f2size));
+ const x3 = c.i32_add(c.getLocal("x"), c.i32_const(2 * f2size));
+ const x2 = c.i32_add(c.getLocal("x"), c.i32_const(3 * f2size));
+ const x1 = c.i32_add(c.getLocal("x"), c.i32_const(4 * f2size));
+ const x5 = c.i32_add(c.getLocal("x"), c.i32_const(5 * f2size));
+ const r0 = c.getLocal("r");
+ const r4 = c.i32_add(c.getLocal("r"), c.i32_const(f2size));
+ const r3 = c.i32_add(c.getLocal("r"), c.i32_const(2 * f2size));
+ const r2 = c.i32_add(c.getLocal("r"), c.i32_const(3 * f2size));
+ const r1 = c.i32_add(c.getLocal("r"), c.i32_const(4 * f2size));
+ const r5 = c.i32_add(c.getLocal("r"), c.i32_const(5 * f2size));
+ const t0 = c.i32_const(module.alloc(f2size));
+ const t1 = c.i32_const(module.alloc(f2size));
+ const t2 = c.i32_const(module.alloc(f2size));
+ const t3 = c.i32_const(module.alloc(f2size));
+ const t4 = c.i32_const(module.alloc(f2size));
+ const t5 = c.i32_const(module.alloc(f2size));
+ const tmp = c.i32_const(module.alloc(f2size));
+ const AUX = c.i32_const(module.alloc(f2size));
+ f.addCode(c.call(f2mPrefix + "_mul", x0, x1, tmp), c.call(f2mPrefix + "_mulNR", x1, t0), c.call(f2mPrefix + "_add", x0, t0, t0), c.call(f2mPrefix + "_add", x0, x1, AUX), c.call(f2mPrefix + "_mul", AUX, t0, t0), c.call(f2mPrefix + "_mulNR", tmp, AUX), c.call(f2mPrefix + "_add", tmp, AUX, AUX), c.call(f2mPrefix + "_sub", t0, AUX, t0), c.call(f2mPrefix + "_add", tmp, tmp, t1), c.call(f2mPrefix + "_mul", x2, x3, tmp), c.call(f2mPrefix + "_mulNR", x3, t2), c.call(f2mPrefix + "_add", x2, t2, t2), c.call(f2mPrefix + "_add", x2, x3, AUX), c.call(f2mPrefix + "_mul", AUX, t2, t2), c.call(f2mPrefix + "_mulNR", tmp, AUX), c.call(f2mPrefix + "_add", tmp, AUX, AUX), c.call(f2mPrefix + "_sub", t2, AUX, t2), c.call(f2mPrefix + "_add", tmp, tmp, t3), c.call(f2mPrefix + "_mul", x4, x5, tmp), c.call(f2mPrefix + "_mulNR", x5, t4), c.call(f2mPrefix + "_add", x4, t4, t4), c.call(f2mPrefix + "_add", x4, x5, AUX), c.call(f2mPrefix + "_mul", AUX, t4, t4), c.call(f2mPrefix + "_mulNR", tmp, AUX), c.call(f2mPrefix + "_add", tmp, AUX, AUX), c.call(f2mPrefix + "_sub", t4, AUX, t4), c.call(f2mPrefix + "_add", tmp, tmp, t5), c.call(f2mPrefix + "_sub", t0, x0, r0), c.call(f2mPrefix + "_add", r0, r0, r0), c.call(f2mPrefix + "_add", t0, r0, r0), c.call(f2mPrefix + "_add", t1, x1, r1), c.call(f2mPrefix + "_add", r1, r1, r1), c.call(f2mPrefix + "_add", t1, r1, r1), c.call(f2mPrefix + "_mul", t5, c.i32_const(pBls12381Twist), AUX), c.call(f2mPrefix + "_add", AUX, x2, r2), c.call(f2mPrefix + "_add", r2, r2, r2), c.call(f2mPrefix + "_add", AUX, r2, r2), c.call(f2mPrefix + "_sub", t4, x3, r3), c.call(f2mPrefix + "_add", r3, r3, r3), c.call(f2mPrefix + "_add", t4, r3, r3), c.call(f2mPrefix + "_sub", t2, x4, r4), c.call(f2mPrefix + "_add", r4, r4, r4), c.call(f2mPrefix + "_add", t2, r4, r4), c.call(f2mPrefix + "_add", t3, x5, r5), c.call(f2mPrefix + "_add", r5, r5, r5), c.call(f2mPrefix + "_add", t3, r5, r5));
+ }
+ function buildCyclotomicExp(exponent, isExpNegative, fnName) {
+ const exponentNafBytes = naf(exponent).map((b) => b == -1 ? 255 : b);
+ const pExponentNafBytes = module.alloc(exponentNafBytes);
+ const f = module.addFunction(prefix + "__cyclotomicExp_" + fnName);
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ f.addLocal("bit", "i32");
+ f.addLocal("i", "i32");
+ const c = f.getCodeBuilder();
+ const x = c.getLocal("x");
+ const res = c.getLocal("r");
+ const inverse = c.i32_const(module.alloc(ftsize));
+ f.addCode(c.call(ftmPrefix + "_conjugate", x, inverse), c.call(ftmPrefix + "_one", res), c.if(c.teeLocal("bit", c.i32_load8_s(c.i32_const(exponentNafBytes.length - 1), pExponentNafBytes)), c.if(c.i32_eq(c.getLocal("bit"), c.i32_const(1)), c.call(ftmPrefix + "_mul", res, x, res), c.call(ftmPrefix + "_mul", res, inverse, res))), c.setLocal("i", c.i32_const(exponentNafBytes.length - 2)), c.block(c.loop(c.call(prefix + "__cyclotomicSquare", res, res), c.if(c.teeLocal("bit", c.i32_load8_s(c.getLocal("i"), pExponentNafBytes)), c.if(c.i32_eq(c.getLocal("bit"), c.i32_const(1)), c.call(ftmPrefix + "_mul", res, x, res), c.call(ftmPrefix + "_mul", res, inverse, res))), c.br_if(1, c.i32_eqz(c.getLocal("i"))), c.setLocal("i", c.i32_sub(c.getLocal("i"), c.i32_const(1))), c.br(0))));
+ if (isExpNegative) f.addCode(c.call(ftmPrefix + "_conjugate", res, res));
+ }
+ function buildFinalExponentiation() {
+ buildCyclotomicSquare();
+ buildCyclotomicExp(finalExpZ, finalExpIsNegative, "w0");
+ const f = module.addFunction(prefix + "_finalExponentiation");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const elt = c.getLocal("x");
+ const res = c.getLocal("r");
+ const t0 = c.i32_const(module.alloc(ftsize));
+ const t1 = c.i32_const(module.alloc(ftsize));
+ const t2 = c.i32_const(module.alloc(ftsize));
+ const t3 = c.i32_const(module.alloc(ftsize));
+ const t4 = c.i32_const(module.alloc(ftsize));
+ const t5 = c.i32_const(module.alloc(ftsize));
+ const t6 = c.i32_const(module.alloc(ftsize));
+ f.addCode(c.call(ftmPrefix + "_frobeniusMap6", elt, t0), c.call(ftmPrefix + "_inverse", elt, t1), c.call(ftmPrefix + "_mul", t0, t1, t2), c.call(ftmPrefix + "_copy", t2, t1), c.call(ftmPrefix + "_frobeniusMap2", t2, t2), c.call(ftmPrefix + "_mul", t2, t1, t2), c.call(prefix + "__cyclotomicSquare", t2, t1), c.call(ftmPrefix + "_conjugate", t1, t1), c.call(prefix + "__cyclotomicExp_w0", t2, t3), c.call(prefix + "__cyclotomicSquare", t3, t4), c.call(ftmPrefix + "_mul", t1, t3, t5), c.call(prefix + "__cyclotomicExp_w0", t5, t1), c.call(prefix + "__cyclotomicExp_w0", t1, t0), c.call(prefix + "__cyclotomicExp_w0", t0, t6), c.call(ftmPrefix + "_mul", t6, t4, t6), c.call(prefix + "__cyclotomicExp_w0", t6, t4), c.call(ftmPrefix + "_conjugate", t5, t5), c.call(ftmPrefix + "_mul", t4, t5, t4), c.call(ftmPrefix + "_mul", t4, t2, t4), c.call(ftmPrefix + "_conjugate", t2, t5), c.call(ftmPrefix + "_mul", t1, t2, t1), c.call(ftmPrefix + "_frobeniusMap3", t1, t1), c.call(ftmPrefix + "_mul", t6, t5, t6), c.call(ftmPrefix + "_frobeniusMap1", t6, t6), c.call(ftmPrefix + "_mul", t3, t0, t3), c.call(ftmPrefix + "_frobeniusMap2", t3, t3), c.call(ftmPrefix + "_mul", t3, t1, t3), c.call(ftmPrefix + "_mul", t3, t6, t3), c.call(ftmPrefix + "_mul", t3, t4, res));
+ }
+ function buildFinalExponentiationOld() {
+ const f = module.addFunction(prefix + "_finalExponentiationOld");
+ f.addParam("x", "i32");
+ f.addParam("r", "i32");
+ const pExponent = module.alloc(bigInt2BytesLE(322277361516934140462891564586510139908379969514828494218366688025288661041104682794998680497580008899973249814104447692778988208376779573819485263026159588510513834876303014016798809919343532899164848730280942609956670917565618115867287399623286813270357901731510188149934363360381614501334086825442271920079363289954510565375378443704372994881406797882676971082200626541916413184642520269678897559532260949334760604962086348898118982248842634379637598665468817769075878555493752214492790122785850202957575200176084204422751485957336465472324810982833638490904279282696134323072515220044451592646885410572234451732790590013479358343841220074174848221722017083597872017638514103174122784843925578370430843522959600095676285723737049438346544753168912974976791528535276317256904336520179281145394686565050419250614107803233314658825463117900250701199181529205942363159325765991819433914303908860460720581408201373164047773794825411011922305820065611121544561808414055302212057471395719432072209245600258134364584636810093520285711072578721435517884103526483832733289802426157301542744476740008494780363354305116978805620671467071400711358839553375340724899735460480144599782014906586543813292157922220645089192130209334926661588737007768565838519456601560804957985667880395221049249803753582637708560n, 544));
+ const c = f.getCodeBuilder();
+ f.addCode(c.call(ftmPrefix + "_exp", c.getLocal("x"), c.i32_const(pExponent), c.i32_const(544), c.getLocal("r")));
+ }
+ const pPreP = module.alloc(prePSize);
+ const pPreQ = module.alloc(preQSize);
+ function buildPairingEquation(nPairings) {
+ const f = module.addFunction(prefix + "_pairingEq" + nPairings);
+ for (let i = 0; i < nPairings; i++) {
+ f.addParam("p_" + i, "i32");
+ f.addParam("q_" + i, "i32");
+ }
+ f.addParam("c", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const resT = c.i32_const(module.alloc(ftsize));
+ const auxT = c.i32_const(module.alloc(ftsize));
+ f.addCode(c.call(ftmPrefix + "_one", resT));
+ for (let i = 0; i < nPairings; i++) {
+ f.addCode(c.call(prefix + "_prepareG1", c.getLocal("p_" + i), c.i32_const(pPreP)));
+ f.addCode(c.call(prefix + "_prepareG2", c.getLocal("q_" + i), c.i32_const(pPreQ)));
+ f.addCode(c.if(c.i32_eqz(c.call(g1mPrefix + "_inGroupAffine", c.i32_const(pPreP))), c.ret(c.i32_const(0))), c.if(c.i32_eqz(c.call(g2mPrefix + "_inGroupAffine", c.i32_const(pPreQ))), c.ret(c.i32_const(0))));
+ f.addCode(c.call(prefix + "_millerLoop", c.i32_const(pPreP), c.i32_const(pPreQ), auxT));
+ f.addCode(c.call(ftmPrefix + "_mul", resT, auxT, resT));
+ }
+ f.addCode(c.call(prefix + "_finalExponentiation", resT, resT));
+ f.addCode(c.call(ftmPrefix + "_eq", resT, c.getLocal("c")));
+ }
+ function buildPairing() {
+ const f = module.addFunction(prefix + "_pairing");
+ f.addParam("p", "i32");
+ f.addParam("q", "i32");
+ f.addParam("r", "i32");
+ const c = f.getCodeBuilder();
+ const resT = c.i32_const(module.alloc(ftsize));
+ f.addCode(c.call(prefix + "_prepareG1", c.getLocal("p"), c.i32_const(pPreP)));
+ f.addCode(c.call(prefix + "_prepareG2", c.getLocal("q"), c.i32_const(pPreQ)));
+ f.addCode(c.call(prefix + "_millerLoop", c.i32_const(pPreP), c.i32_const(pPreQ), resT));
+ f.addCode(c.call(prefix + "_finalExponentiation", resT, c.getLocal("r")));
+ }
+ function buildInGroupG2() {
+ const f = module.addFunction(g2mPrefix + "_inGroupAffine");
+ f.addParam("p", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const WINV = [2001204777610833696708894912867952078278441409969503942666029068062015825245418932221343814564507832018947136279894n, 2001204777610833696708894912867952078278441409969503942666029068062015825245418932221343814564507832018947136279893n];
+ const FROB2X = 4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n;
+ const FROB3Y = [2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n, 2973677408986561043442465346520108879172042883009249989176415018091420807192182638567116318576472649347015917690530n];
+ const wInv = c.i32_const(module.alloc([...bigInt2BytesLE(toMontgomery(WINV[0]), n8q), ...bigInt2BytesLE(toMontgomery(WINV[1]), n8q)]));
+ const frob2X = c.i32_const(module.alloc(bigInt2BytesLE(toMontgomery(FROB2X), n8q)));
+ const frob3Y = c.i32_const(module.alloc([...bigInt2BytesLE(toMontgomery(FROB3Y[0]), n8q), ...bigInt2BytesLE(toMontgomery(FROB3Y[1]), n8q)]));
+ const z = c.i32_const(module.alloc(bigInt2BytesLE(finalExpZ, 8)));
+ const px = c.getLocal("p");
+ const py = c.i32_add(c.getLocal("p"), c.i32_const(f2size));
+ const aux = c.i32_const(module.alloc(f1size));
+ const x_winv = c.i32_const(module.alloc(f2size));
+ const y_winv = c.i32_const(module.alloc(f2size));
+ const pf2 = module.alloc(f2size * 2);
+ const f2 = c.i32_const(pf2);
+ const f2x = c.i32_const(pf2);
+ const f2x_c1 = c.i32_const(pf2);
+ const f2x_c2 = c.i32_const(pf2 + f1size);
+ const f2y = c.i32_const(pf2 + f2size);
+ const f2y_c1 = c.i32_const(pf2 + f2size);
+ const f2y_c2 = c.i32_const(pf2 + f2size + f1size);
+ const pf3 = module.alloc(f2size * 3);
+ const f3 = c.i32_const(pf3);
+ const f3x = c.i32_const(pf3);
+ const f3x_c1 = c.i32_const(pf3);
+ const f3x_c2 = c.i32_const(pf3 + f1size);
+ const f3y = c.i32_const(pf3 + f2size);
+ const f3y_c1 = c.i32_const(pf3 + f2size);
+ const f3y_c2 = c.i32_const(pf3 + f2size + f1size);
+ const f3z = c.i32_const(pf3 + f2size * 2);
+ f.addCode(c.if(c.call(g2mPrefix + "_isZeroAffine", c.getLocal("p")), c.ret(c.i32_const(1))), c.if(c.i32_eqz(c.call(g2mPrefix + "_inCurveAffine", c.getLocal("p"))), c.ret(c.i32_const(0))), c.call(f2mPrefix + "_mul", px, wInv, x_winv), c.call(f2mPrefix + "_mul", py, wInv, y_winv), c.call(f2mPrefix + "_mul1", x_winv, frob2X, f2x), c.call(f2mPrefix + "_neg", y_winv, f2y), c.call(f2mPrefix + "_neg", x_winv, f3x), c.call(f2mPrefix + "_mul", y_winv, frob3Y, f3y), c.call(f1mPrefix + "_sub", f2x_c1, f2x_c2, aux), c.call(f1mPrefix + "_add", f2x_c1, f2x_c2, f2x_c2), c.call(f1mPrefix + "_copy", aux, f2x_c1), c.call(f1mPrefix + "_sub", f2y_c1, f2y_c2, aux), c.call(f1mPrefix + "_add", f2y_c1, f2y_c2, f2y_c2), c.call(f1mPrefix + "_copy", aux, f2y_c1), c.call(f1mPrefix + "_add", f3x_c1, f3x_c2, aux), c.call(f1mPrefix + "_sub", f3x_c1, f3x_c2, f3x_c2), c.call(f1mPrefix + "_copy", aux, f3x_c1), c.call(f1mPrefix + "_sub", f3y_c2, f3y_c1, aux), c.call(f1mPrefix + "_add", f3y_c1, f3y_c2, f3y_c2), c.call(f1mPrefix + "_copy", aux, f3y_c1), c.call(f2mPrefix + "_one", f3z), c.call(g2mPrefix + "_timesScalar", f3, z, c.i32_const(8), f3), c.call(g2mPrefix + "_addMixed", f3, f2, f3), c.ret(c.call(g2mPrefix + "_eqMixed", f3, c.getLocal("p"))));
+ const fInGroup = module.addFunction(g2mPrefix + "_inGroup");
+ fInGroup.addParam("pIn", "i32");
+ fInGroup.setReturnType("i32");
+ const c2 = fInGroup.getCodeBuilder();
+ const aux2 = c2.i32_const(module.alloc(f2size * 2));
+ fInGroup.addCode(c2.call(g2mPrefix + "_toAffine", c2.getLocal("pIn"), aux2), c2.ret(c2.call(g2mPrefix + "_inGroupAffine", aux2)));
+ }
+ function buildInGroupG1() {
+ const f = module.addFunction(g1mPrefix + "_inGroupAffine");
+ f.addParam("p", "i32");
+ f.setReturnType("i32");
+ const c = f.getCodeBuilder();
+ const BETA = 4002409555221667392624310435006688643935503118305586438271171395842971157480381377015405980053539358417135540939436n;
+ const BETA2 = 793479390729215512621379701633421447060886740281060493010456487427281649075476305620758731620350n;
+ const Z2M1D3 = (finalExpZ * finalExpZ - 1n) / 3n;
+ const beta = c.i32_const(module.alloc(bigInt2BytesLE(toMontgomery(BETA), n8q)));
+ const beta2 = c.i32_const(module.alloc(bigInt2BytesLE(toMontgomery(BETA2), n8q)));
+ const z2m1d3 = c.i32_const(module.alloc(bigInt2BytesLE(Z2M1D3, 16)));
+ const px = c.getLocal("p");
+ const py = c.i32_add(c.getLocal("p"), c.i32_const(f1size));
+ const psp = module.alloc(f1size * 3);
+ const sp = c.i32_const(psp);
+ const spx = c.i32_const(psp);
+ const spy = c.i32_const(psp + f1size);
+ const ps2p = module.alloc(f1size * 2);
+ const s2p = c.i32_const(ps2p);
+ const s2px = c.i32_const(ps2p);
+ const s2py = c.i32_const(ps2p + f1size);
+ f.addCode(c.if(c.call(g1mPrefix + "_isZeroAffine", c.getLocal("p")), c.ret(c.i32_const(1))), c.if(c.i32_eqz(c.call(g1mPrefix + "_inCurveAffine", c.getLocal("p"))), c.ret(c.i32_const(0))), c.call(f1mPrefix + "_mul", px, beta, spx), c.call(f1mPrefix + "_copy", py, spy), c.call(f1mPrefix + "_mul", px, beta2, s2px), c.call(f1mPrefix + "_copy", py, s2py), c.call(g1mPrefix + "_doubleAffine", sp, sp), c.call(g1mPrefix + "_subMixed", sp, c.getLocal("p"), sp), c.call(g1mPrefix + "_subMixed", sp, s2p, sp), c.call(g1mPrefix + "_timesScalar", sp, z2m1d3, c.i32_const(16), sp), c.ret(c.call(g1mPrefix + "_eqMixed", sp, s2p)));
+ const fInGroup = module.addFunction(g1mPrefix + "_inGroup");
+ fInGroup.addParam("pIn", "i32");
+ fInGroup.setReturnType("i32");
+ const c2 = fInGroup.getCodeBuilder();
+ const aux2 = c2.i32_const(module.alloc(f1size * 2));
+ fInGroup.addCode(c2.call(g1mPrefix + "_toAffine", c2.getLocal("pIn"), aux2), c2.ret(c2.call(g1mPrefix + "_inGroupAffine", aux2)));
+ }
+ for (let i = 0; i < 10; i++) {
+ buildFrobeniusMap(i);
+ module.exportFunction(ftmPrefix + "_frobeniusMap" + i);
+ }
+ buildInGroupG1();
+ buildInGroupG2();
+ buildPrepAddStep();
+ buildPrepDoubleStep();
+ buildPrepareG1();
+ buildPrepareG2();
+ buildMillerLoop();
+ buildFinalExponentiationOld();
+ buildFinalExponentiation();
+ for (let i = 1; i <= 5; i++) {
+ buildPairingEquation(i);
+ module.exportFunction(prefix + "_pairingEq" + i);
+ }
+ buildPairing();
+ module.exportFunction(prefix + "_pairing");
+ module.exportFunction(prefix + "_prepareG1");
+ module.exportFunction(prefix + "_prepareG2");
+ module.exportFunction(prefix + "_millerLoop");
+ module.exportFunction(prefix + "_finalExponentiation");
+ module.exportFunction(prefix + "_finalExponentiationOld");
+ module.exportFunction(prefix + "__cyclotomicSquare");
+ module.exportFunction(prefix + "__cyclotomicExp_w0");
+ module.exportFunction(f6mPrefix + "_mul1");
+ module.exportFunction(f6mPrefix + "_mul01");
+ module.exportFunction(ftmPrefix + "_mul014");
+ module.exportFunction(g1mPrefix + "_inGroupAffine");
+ module.exportFunction(g1mPrefix + "_inGroup");
+ module.exportFunction(g2mPrefix + "_inGroupAffine");
+ module.exportFunction(g2mPrefix + "_inGroup");
+}
+//#endregion
+exports.buildBls12381 = buildBLS12381;
+exports.buildBn128 = buildBN128;
+exports.buildF1m = buildF1m;
diff --git a/build/msm_batch.wasm b/build/msm_batch.wasm
new file mode 100644
index 0000000..8bb8a2b
Binary files /dev/null and b/build/msm_batch.wasm differ
diff --git a/eslint.config.js b/eslint.config.js
new file mode 100644
index 0000000..6cab21c
--- /dev/null
+++ b/eslint.config.js
@@ -0,0 +1,38 @@
+import js from "@eslint/js";
+import globals from "globals";
+
+export default [
+ {
+ ignores: ["build/**", "tools/**"],
+ },
+ js.configs.recommended,
+ {
+ languageOptions: {
+ ecmaVersion: 2020,
+ globals: {
+ ...globals.node,
+ ...globals.es2020,
+ WebAssembly: "readonly",
+ },
+ },
+ rules: {
+ "indent": ["error", 4],
+ "linebreak-style": ["error", "unix"],
+ "quotes": ["error", "double"],
+ "semi": ["error", "always"],
+ },
+ },
+ {
+ files: ["test/**/*.js"],
+ languageOptions: {
+ globals: {
+ describe: "readonly",
+ it: "readonly",
+ beforeAll: "readonly",
+ afterAll: "readonly",
+ beforeEach: "readonly",
+ afterEach: "readonly",
+ },
+ },
+ },
+];
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 0000000..39001c6
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,23 @@
+import js from "@eslint/js";
+import globals from "globals";
+
+export default [
+ { ignores: ["build/", "tools/"] },
+ js.configs.recommended,
+ {
+ languageOptions: {
+ ecmaVersion: 2022,
+ globals: {
+ ...globals.node,
+ ...globals.mocha,
+ WebAssembly: "readonly",
+ },
+ },
+ rules: {
+ "indent": ["error", 4],
+ "linebreak-style": ["error", "unix"],
+ "quotes": ["error", "double"],
+ "semi": ["error", "always"],
+ },
+ },
+];
diff --git a/index.js b/index.js
index a5461b9..ac4c55d 100644
--- a/index.js
+++ b/index.js
@@ -17,13 +17,12 @@
along with wasmsnark. If not, see .
*/
+// export * as bn128_wasm from "./build/bn128_wasm.js";
+// export * as bls12381_wasm from "./build/bls12381_wasm.js";
+// export * as mnt6753_wasm from "./build/mnt6753_wasm.js";
-// module.exports.bn128_wasm = require("./build/bn128_wasm.js");
-// module.exports.bls12381_wasm = require("./build/bls12381_wasm.js");
-// module.exports.mnt6753_wasm = require("./build/mnt6753_wasm.js");
+export { default as buildBn128 } from "./src/bn128/build_bn128.js";
+export { default as buildBls12381 } from "./src/bls12381/build_bls12381.js";
+// export { default as buildMnt6753 } from "./src/mnt6753/build_mnt7.js";
-module.exports.buildBn128 = require("./src/bn128/build_bn128.js");
-module.exports.buildBls12381 = require("./src/bls12381/build_bls12381.js");
-// module.exports.buildMnt6753 = require("./src/mnt6753/build_mnt7.js");
-
-module.exports.buildF1m = require("./src/build_f1m");
+export { default as buildF1m } from "./src/build_f1m.js";
diff --git a/package-lock.json b/package-lock.json
index 0150a8a..030b7f9 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,7 +1,7 @@
{
"name": "wasmcurves",
"version": "0.2.2",
- "lockfileVersion": 2,
+ "lockfileVersion": 3,
"requires": true,
"packages": {
"": {
@@ -12,477 +12,921 @@
"wasmbuilder": "0.0.16"
},
"devDependencies": {
- "eslint": "^8.17.0",
- "mocha": "^10.0.0"
+ "@eslint/js": "^10.0.1",
+ "assemblyscript": "^0.28.19",
+ "eslint": "^10.6.0",
+ "globals": "^17.7.0",
+ "vite": "^8.0.0",
+ "vitest": "^4.1.11"
}
},
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
+ "node_modules/@emnapi/core": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.11.1.tgz",
+ "integrity": "sha512-RSvbQmHzdKzNsLYa/wHrbc3KN4sYLKAdPZxqiM2HATqv/SBk2/ENSHpvXGaLOMcsAyz0poEGqkmmKYG3OWiJEQ==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/wasi-threads": "1.2.2",
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/runtime": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.11.1.tgz",
+ "integrity": "sha512-vgj7R3y3Wgx24IQaGPA/R6YFXLHVMOZ0uVEyIQPaWs+rd1AzfEMXlAC22FYwO1XkKR6NPsq7mUandH8oIRdZFw==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
+ }
+ },
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.2.tgz",
+ "integrity": "sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
}
},
"node_modules/@eslint-community/eslint-utils": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz",
- "integrity": "sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==",
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "eslint-visitor-keys": "^3.3.0"
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
"peerDependencies": {
"eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
"node_modules/@eslint-community/regexpp": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz",
- "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==",
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
- "node_modules/@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
+ "node_modules/@eslint/config-array": {
+ "version": "0.23.5",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz",
+ "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
+ "@eslint/object-schema": "^3.0.5",
+ "debug": "^4.3.1",
+ "minimatch": "^10.2.4"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@eslint/js": {
- "version": "8.56.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
- "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz",
+ "integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==",
"dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@eslint/core": "^1.2.1"
+ },
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.11.13",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
- "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
+ "node_modules/@eslint/core": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz",
+ "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@humanwhocodes/object-schema": "^2.0.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
+ "@types/json-schema": "^7.0.15"
},
"engines": {
- "node": ">=10.10.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
+ "node_modules/@eslint/js": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz",
+ "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=12.22"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
- "type": "github",
- "url": "https://github.com/sponsors/nzakas"
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "eslint": "^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
},
- "node_modules/@humanwhocodes/object-schema": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
- "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
- "dev": true
+ "node_modules/@eslint/object-schema": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz",
+ "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
},
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz",
+ "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
+ "@eslint/core": "^1.2.1",
+ "levn": "^0.4.1"
},
"engines": {
- "node": ">= 8"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
+ "node_modules/@humanfs/core": {
+ "version": "0.19.2",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz",
+ "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==",
"dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@humanfs/types": "^0.15.0"
+ },
"engines": {
- "node": ">= 8"
+ "node": ">=18.18.0"
}
},
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
+ "node_modules/@humanfs/node": {
+ "version": "0.16.8",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz",
+ "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
+ "@humanfs/core": "^0.19.2",
+ "@humanfs/types": "^0.15.0",
+ "@humanwhocodes/retry": "^0.4.0"
},
"engines": {
- "node": ">= 8"
+ "node": ">=18.18.0"
}
},
- "node_modules/@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
+ "node_modules/@humanfs/types": {
+ "version": "0.15.0",
+ "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz",
+ "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18.0"
+ }
},
- "node_modules/acorn": {
- "version": "8.11.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
- "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
+ "license": "Apache-2.0",
"engines": {
- "node": ">=0.4.0"
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
"dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.3.tgz",
+ "integrity": "sha512-UMduMbqO5s5zF2NkNacMT/yK5Y5QiKvWr2+50bzIIxFDwVJ2h49b+oyjaCGPhJxd2/gC2x39EHv/gHVuu36x2Q==",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
+ "@tybys/wasm-util": "^0.10.3"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=23.5.0"
},
"funding": {
"type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
+ "url": "https://github.com/sponsors/Brooooooklyn"
+ },
+ "peerDependencies": {
+ "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.4",
+ "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.4"
+ }
+ },
+ "node_modules/@oxc-project/types": {
+ "version": "0.137.0",
+ "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.137.0.tgz",
+ "integrity": "sha512-WT+Gb24i8hmvo85AIv2oEYouEXkRlKAlT9WaCa3TfLgNCN+GhrJOGZuIlMouAh38Qe4QOx26eUOVsq70qXrywA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/Boshen"
}
},
- "node_modules/ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "node_modules/@rolldown/binding-android-arm64": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.1.3.tgz",
+ "integrity": "sha512-DT6Z3PhvioeHMvxo+xHc3KtqggrI7CCTXCmC2h/5zUlp5jVitv7XEy+9q5/7v8IolhlioawpMo8Kg0EEBy7J0g==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=6"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "node_modules/@rolldown/binding-darwin-arm64": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.1.3.tgz",
+ "integrity": "sha512-0NwgwsjM7LrsuVnXMK3koTpagBNOhloc/BNjKqZjv4V5zI5r13qx69uVhRx+o5Z0yy4Hzq+lpy7TAgUG/ocvrw==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=8"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "node_modules/@rolldown/binding-darwin-x64": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.1.3.tgz",
+ "integrity": "sha512-YtiBp4disu6V560loT6PjMdiRaWmVvDNrUunAalbiFx2ggeJwxdAsgZMcoGP17uyAsTwAj5V1niksxlHnVQ1Sw==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+ "node_modules/@rolldown/binding-freebsd-x64": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.1.3.tgz",
+ "integrity": "sha512-yD3EkEdXk2LypPxnf/kSZHirarsI8gcPzc62SukhR9VJTyvV+F9Q/GxWNuCojc7sXyuVC4DxRGhdDK4X8VSsbw==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": ">= 8"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
+ "node_modules/@rolldown/binding-linux-arm-gnueabihf": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.1.3.tgz",
+ "integrity": "sha512-c+8vieQbsD7HNAHKIA34w0GJ9FedFFuJGD+7E6vz7Q3uqAIugL5p45fhlsj4UaAsHpcmlqugBWMhA0/j7o0sIg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
+ "node_modules/@rolldown/binding-linux-arm64-gnu": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.1.3.tgz",
+ "integrity": "sha512-50jD0uUwLvur7Zz9LHz17kaAdTPjn5wN93hEgjvmYFRZwiR7ZJYovTd5ipyWJDAnXKvZ+wgc+/Ika6dwSF5OcA==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+ "node_modules/@rolldown/binding-linux-arm64-musl": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.1.3.tgz",
+ "integrity": "sha512-BO9+oPL8K9poZJBfYPsXNtYjPE5uM3qeehT3aFcW4LITOl+iSqhp0abzjR2nWBUNjIZeKXjAEWBZ64WjNoHd6w==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=8"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/@rolldown/binding-linux-ppc64-gnu": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.1.3.tgz",
+ "integrity": "sha512-f3VpLB1vQ0Eo6ecr/6cekLnvYMFF4YBFoVGkfkvPLq1bAkbAwHYQPZKoAmG6OJyTcxxoC+AvezGx/S1obNC0Mw==",
+ "cpu": [
+ "ppc64"
+ ],
"dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "node_modules/@rolldown/binding-linux-s390x-gnu": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.1.3.tgz",
+ "integrity": "sha512-AmurZ26Pqx/RI9N1gzEOCklkKXl927yjfXWUUS0O7Puh8ARM/Ob8qfrD3qnWksScdw6cSrW5PSHE9DyLu7+PtA==",
+ "cpu": [
+ "s390x"
+ ],
"dev": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=8"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
+ "node_modules/@rolldown/binding-linux-x64-gnu": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.1.3.tgz",
+ "integrity": "sha512-JJpqs8bRGITDOdbkNKnlojzBabbOHrqjSvDr0IVsZObE1lBcPjxItUEY9eWIDbxaJ3cGrXPWGfGkIxFijg/URg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ }
},
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "node_modules/@rolldown/binding-linux-x64-musl": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.1.3.tgz",
+ "integrity": "sha512-rSJcdjPxzA/by/6/rYs+v+bXU7UjvnbUWz8MJb6kh6+knqB1dCrtHg0uu7C/4haqJvqdkYHQ5IGn+tCH9GLW/g==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "node_modules/@rolldown/binding-openharmony-arm64": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.1.3.tgz",
+ "integrity": "sha512-hQ3/PYkDJICgevvyNcVrihVeqq7k1Pp3VZ9lY+dauAYUJKO+auqApvANhvR1An9BhmqYKvW2Mu1F9u4DXSMLxQ==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "node_modules/@rolldown/binding-wasm32-wasi": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.1.3.tgz",
+ "integrity": "sha512-Elcv/BtML9lXrV6JuKITc/grN2kYV9gjsQpW8Jfw4ioK0TOkjBjye0nnyqQNy9STNaI20lXNaQBRrD5gSgR0Yg==",
+ "cpu": [
+ "wasm32"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
+ "@emnapi/core": "1.11.1",
+ "@emnapi/runtime": "1.11.1",
+ "@napi-rs/wasm-runtime": "^1.1.6"
},
"engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
+ "node_modules/@rolldown/binding-win32-arm64-msvc": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.1.3.tgz",
+ "integrity": "sha512-2DrEfhluH9yhiaFApmsjsjwrSYbNcY1oFTzYSP1a535jDbV98zCFanA/96TBUd0iDFcxGmw9QRExwGCXz3U+/g==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "funding": [
- {
- "type": "individual",
- "url": "https://paulmillr.com/funding/"
- }
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
],
- "dependencies": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
"engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/chokidar/node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "node_modules/@rolldown/binding-win32-x64-msvc": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.1.3.tgz",
+ "integrity": "sha512-OL4OMk7UPXOeVGGd3qo5zJyPIljf4AFgk5QAkPPS+OoLuOOozhuaQGC18MxVTnw/06q93gShAJzlwnSCY9YtqA==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">= 6"
+ "node": "^20.19.0 || >=22.12.0"
}
},
- "node_modules/cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "node_modules/@rolldown/pluginutils": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz",
+ "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@standard-schema/spec": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz",
+ "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz",
+ "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
+ "tslib": "^2.4.0"
}
},
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "node_modules/@types/chai": {
+ "version": "5.2.3",
+ "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz",
+ "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
+ "@types/deep-eql": "*",
+ "assertion-error": "^2.0.1"
}
},
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
+ "node_modules/@types/deep-eql": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz",
+ "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
+ "node_modules/@types/esrecurse": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
+ "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
+ "node_modules/@types/estree": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz",
+ "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@vitest/expect": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-4.1.11.tgz",
+ "integrity": "sha512-VX2x5vNJXET47KAFzwERI+KRMtTTCSWTfSMKsW7JsUsXV4psq++e3DvZpuTDOpHcxytiDs6p2nhVb2tVDiiUYw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
+ "@standard-schema/spec": "^1.1.0",
+ "@types/chai": "^5.2.2",
+ "@vitest/spy": "4.1.11",
+ "@vitest/utils": "4.1.11",
+ "chai": "^6.2.2",
+ "tinyrainbow": "^3.1.0"
},
- "engines": {
- "node": ">= 8"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "node_modules/@vitest/mocker": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-4.1.11.tgz",
+ "integrity": "sha512-2XJVD55d1o5AZous5CCGKS74g/riOj9odEt2bQpCVZeblHyHdnMeFl4jl0XjU21stf4mbjUkew2eXQZt65g5CQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ms": "2.1.2"
+ "@vitest/spy": "4.1.11",
+ "estree-walker": "^3.0.3",
+ "magic-string": "^0.30.21"
},
- "engines": {
- "node": ">=6.0"
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "msw": "^2.4.9",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
},
"peerDependenciesMeta": {
- "supports-color": {
+ "msw": {
+ "optional": true
+ },
+ "vite": {
"optional": true
}
}
},
- "node_modules/decamelize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
+ "node_modules/@vitest/pretty-format": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.11.tgz",
+ "integrity": "sha512-yiZzPbGTS9Sr/JpFl8zHrcIkAofNbFV6k21vIgQN/cY/oxZeXhJv5sc/MBJ5jFKWmWs+oJHw0UXLZjmf931+Vw==",
"dev": true,
- "engines": {
- "node": ">=10"
+ "license": "MIT",
+ "dependencies": {
+ "tinyrainbow": "^3.1.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://opencollective.com/vitest"
}
},
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
+ "node_modules/@vitest/runner": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-4.1.11.tgz",
+ "integrity": "sha512-LztvUgdwMNJMIkj3hQnnxiC2Xy1zNxq928W/xhjCLaNCzqTZOudjwbQf6v9IntZGPw132i2Lq2rgTRZHD3JHNw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/utils": "4.1.11",
+ "pathe": "^2.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
},
- "node_modules/diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
+ "node_modules/@vitest/snapshot": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.11.tgz",
+ "integrity": "sha512-pN7ikn1ON7h8ee4gIAp4AzyK+zBtJPzVbqOgu5LCEh4VaJVbPQcgYQYJIMGQPXVeJJq1fnfazis7a5pFNPahog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "4.1.11",
+ "@vitest/utils": "4.1.11",
+ "magic-string": "^0.30.21",
+ "pathe": "^2.0.3"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/spy": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-4.1.11.tgz",
+ "integrity": "sha512-apNa/prQy2qCeywhnixOHPRCgGNhvg7T4Dapfl1GahLp/R+uhBm5cPyFoNVyqsNd2h1nJxL6BqqdIjiABL60YA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/@vitest/utils": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.11.tgz",
+ "integrity": "sha512-zTCVGpyFsGWBhllOyKlTw/vnr6D9qxsfSDyfbyZmTyjHw5N/VuvzHpHoQjm2ZJzn4RJgx5w4r7V0er69CmLgPQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/pretty-format": "4.1.11",
+ "convert-source-map": "^2.0.0",
+ "tinyrainbow": "^3.1.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ }
+ },
+ "node_modules/acorn": {
+ "version": "8.17.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.17.0.tgz",
+ "integrity": "sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==",
"dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
"engines": {
- "node": ">=0.3.1"
+ "node": ">=0.4.0"
}
},
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.15.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz",
+ "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/assemblyscript": {
+ "version": "0.28.19",
+ "resolved": "https://registry.npmjs.org/assemblyscript/-/assemblyscript-0.28.19.tgz",
+ "integrity": "sha512-yOAlAb9EsrI00oUaf6qUTtTcYYeelG2iC3f1LnA45XUeSlMrp2O2FF5Llj4P+Y84ZiIlh/ciEEpOaPwwmOKq8g==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "esutils": "^2.0.2"
+ "binaryen": "130.0.0-nightly.20260609",
+ "long": "^5.2.4"
+ },
+ "bin": {
+ "asc": "bin/asc.js",
+ "asinit": "bin/asinit.js"
},
"engines": {
- "node": ">=6.0.0"
+ "node": ">=20",
+ "npm": ">=10"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/assemblyscript"
}
},
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
+ "node_modules/assertion-error": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz",
+ "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ }
},
- "node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=6"
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/binaryen": {
+ "version": "130.0.0-nightly.20260609",
+ "resolved": "https://registry.npmjs.org/binaryen/-/binaryen-130.0.0-nightly.20260609.tgz",
+ "integrity": "sha512-Zyl9Tw638x08LDew22YtxdYiUGxn+quzpR3ySIS4Nccv6yAiO5j1Yko9IEPNpj/aBZf71xtD/6hYXsgZ2ye3ew==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "wasm-as": "bin/wasm-as",
+ "wasm-ctor-eval": "bin/wasm-ctor-eval",
+ "wasm-dis": "bin/wasm-dis",
+ "wasm-merge": "bin/wasm-merge",
+ "wasm-metadce": "bin/wasm-metadce",
+ "wasm-opt": "bin/wasm-opt",
+ "wasm-reduce": "bin/wasm-reduce",
+ "wasm-shell": "bin/wasm-shell",
+ "wasm2js": "bin/wasm2js"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "5.0.9",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
+ "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "20 || >=22"
+ }
+ },
+ "node_modules/chai": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-6.2.2.tgz",
+ "integrity": "sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
}
},
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/es-module-lexer": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-2.1.0.tgz",
+ "integrity": "sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/escape-string-regexp": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
@@ -496,110 +940,120 @@
}
},
"node_modules/eslint": {
- "version": "8.56.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
- "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.6.0.tgz",
+ "integrity": "sha512-6lVbcqSodALYo+4ELD0heG6lFiFxnLMuLkiMi2qV8LMp54N8tE8FT1GMH+ev4Ti00nFjNze2+Su6DsV5OQW3Dg==",
"dev": true,
+ "license": "MIT",
+ "workspaces": [
+ "packages/*"
+ ],
"dependencies": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.56.0",
- "@humanwhocodes/config-array": "^0.11.13",
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.2",
+ "@eslint/config-array": "^0.23.5",
+ "@eslint/config-helpers": "^0.6.0",
+ "@eslint/core": "^1.2.1",
+ "@eslint/plugin-kit": "^0.7.2",
+ "@humanfs/node": "^0.16.6",
"@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "ajv": "^6.14.0",
+ "cross-spawn": "^7.0.6",
"debug": "^4.3.2",
- "doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
+ "eslint-scope": "^9.1.2",
+ "eslint-visitor-keys": "^5.0.1",
+ "espree": "^11.2.0",
+ "esquery": "^1.7.0",
"esutils": "^2.0.2",
"fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
+ "file-entry-cache": "^8.0.0",
"find-up": "^5.0.0",
"glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
"ignore": "^5.2.0",
"imurmurhash": "^0.1.4",
"is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
"json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
+ "minimatch": "^10.2.4",
"natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
+ "optionator": "^0.9.3"
},
"bin": {
"eslint": "bin/eslint.js"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
- "url": "https://opencollective.com/eslint"
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
}
},
"node_modules/eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
+ "version": "9.1.2",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz",
+ "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
+ "@types/esrecurse": "^4.3.1",
+ "@types/estree": "^1.0.8",
"esrecurse": "^4.3.0",
"estraverse": "^5.2.0"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+ "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
+ "version": "11.2.0",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz",
+ "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
- "acorn": "^8.9.0",
+ "acorn": "^8.16.0",
"acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
+ "eslint-visitor-keys": "^5.0.1"
},
"engines": {
- "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
},
"funding": {
"url": "https://opencollective.com/eslint"
}
},
"node_modules/esquery": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz",
- "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
"dev": true,
+ "license": "BSD-3-Clause",
"dependencies": {
"estraverse": "^5.1.0"
},
@@ -612,6 +1066,7 @@
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"estraverse": "^5.2.0"
},
@@ -624,68 +1079,91 @@
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
"integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=4.0"
}
},
+ "node_modules/estree-walker": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
+ "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/estree": "^1.0.0"
+ }
+ },
"node_modules/esutils": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true,
+ "license": "BSD-2-Clause",
"engines": {
"node": ">=0.10.0"
}
},
+ "node_modules/expect-type": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.4.0.tgz",
+ "integrity": "sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
+ "dev": true,
+ "license": "MIT"
},
"node_modules/fast-levenshtein": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
"integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fastq": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
- "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
"dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
+ "license": "MIT"
},
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
+ "node_modules/fdir": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
+ "license": "MIT",
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=12.0.0"
+ },
+ "peerDependencies": {
+ "picomatch": "^3 || ^4"
+ },
+ "peerDependenciesMeta": {
+ "picomatch": {
+ "optional": true
+ }
}
},
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "to-regex-range": "^5.0.1"
+ "flat-cache": "^4.0.0"
},
"engines": {
- "node": ">=8"
+ "node": ">=16.0.0"
}
},
"node_modules/find-up": {
@@ -704,46 +1182,34 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/flat": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
- "dev": true,
- "bin": {
- "flat": "cli.js"
- }
- },
"node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
},
"engines": {
- "node": "^10.12.0 || >=12.0.0"
+ "node": ">=16"
}
},
"node_modules/flatted": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
- "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
- "dev": true
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
+ "version": "3.4.2",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz",
+ "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==",
+ "dev": true,
+ "license": "ISC"
},
"node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
+ "license": "MIT",
"optional": true,
"os": [
"darwin"
@@ -752,40 +1218,12 @@
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/glob-parent": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
"integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"is-glob": "^4.0.3"
},
@@ -794,106 +1232,38 @@
}
},
"node_modules/globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
+ "version": "17.7.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.7.0.tgz",
+ "integrity": "sha512-Czmyns5dUsq4seFBR/Kdydhmo8y9kC79hiSkPn0YcGtNnYWnrgt0vjrSjx9tspoDGWm2CMarffRuLjM4xUz8xg==",
"dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=18"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true,
- "bin": {
- "he": "bin/he"
- }
- },
"node_modules/ignore": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
- "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 4"
}
},
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/imurmurhash": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=0.8.19"
}
},
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -903,15 +1273,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/is-glob": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
@@ -924,80 +1285,50 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
+ "license": "ISC"
},
- "node_modules/is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true,
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
- "node_modules/is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
"dev": true,
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
- "node_modules/is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
+ "license": "MIT"
},
- "node_modules/js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "argparse": "^2.0.1"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
+ "json-buffer": "3.0.1"
}
},
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
"integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1",
"type-check": "~0.4.0"
@@ -1006,191 +1337,387 @@
"node": ">= 0.8.0"
}
},
- "node_modules/locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "node_modules/lightningcss": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz",
+ "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==",
"dev": true,
+ "license": "MPL-2.0",
"dependencies": {
- "p-locate": "^5.0.0"
+ "detect-libc": "^2.0.3"
},
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-android-arm64": "1.32.0",
+ "lightningcss-darwin-arm64": "1.32.0",
+ "lightningcss-darwin-x64": "1.32.0",
+ "lightningcss-freebsd-x64": "1.32.0",
+ "lightningcss-linux-arm-gnueabihf": "1.32.0",
+ "lightningcss-linux-arm64-gnu": "1.32.0",
+ "lightningcss-linux-arm64-musl": "1.32.0",
+ "lightningcss-linux-x64-gnu": "1.32.0",
+ "lightningcss-linux-x64-musl": "1.32.0",
+ "lightningcss-win32-arm64-msvc": "1.32.0",
+ "lightningcss-win32-x64-msvc": "1.32.0"
+ }
+ },
+ "node_modules/lightningcss-android-arm64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz",
+ "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz",
+ "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
},
- "node_modules/log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz",
+ "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz",
+ "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": ">=10"
+ "node": ">= 12.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz",
+ "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz",
+ "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": "*"
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/mocha": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz",
- "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==",
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz",
+ "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.4",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "5.0.1",
- "ms": "2.1.3",
- "nanoid": "3.3.3",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "workerpool": "6.2.1",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
+ "libc": [
+ "musl"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
},
- "bin": {
- "_mocha": "bin/_mocha",
- "mocha": "bin/mocha.js"
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz",
+ "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "glibc"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
},
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz",
+ "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "libc": [
+ "musl"
+ ],
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 14.0.0"
+ "node": ">= 12.0.0"
},
"funding": {
"type": "opencollective",
- "url": "https://opencollective.com/mochajs"
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/mocha/node_modules/brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "node_modules/lightningcss-win32-arm64-msvc": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz",
+ "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0"
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "node_modules/mocha/node_modules/minimatch": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
- "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.32.0",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz",
+ "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MPL-2.0",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
"dev": true,
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "p-locate": "^5.0.0"
},
"engines": {
"node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/mocha/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
+ "node_modules/long": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz",
+ "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==",
+ "dev": true,
+ "license": "Apache-2.0"
},
- "node_modules/mocha/node_modules/supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "node_modules/magic-string": {
+ "version": "0.30.21",
+ "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
+ "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-flag": "^4.0.0"
+ "@jridgewell/sourcemap-codec": "^1.5.5"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "10.2.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
+ "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.5"
},
"engines": {
- "node": ">=10"
+ "node": "18 || 20 || >=22"
},
"funding": {
- "url": "https://github.com/chalk/supports-color?sponsor=1"
+ "url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
},
"node_modules/nanoid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
- "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-6.0.1.tgz",
+ "integrity": "sha512-3wVS3i51pE2pi1k5FFL/95BGfVS0kSsvDVuGXHOtxox/TywUmtgq+3qiTOTbs9J7KfHaXPiN171k/A6dBnaXFw==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
"bin": {
- "nanoid": "bin/nanoid.cjs"
+ "nanoid": "bin/nanoid.js"
},
"engines": {
- "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+ "node": "^22 || ^24 || >=26"
}
},
"node_modules/natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
+ "license": "MIT"
},
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "node_modules/obug": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.4.tgz",
+ "integrity": "sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==",
"dev": true,
- "dependencies": {
- "wrappy": "1"
+ "funding": [
+ "https://github.com/sponsors/sxzz",
+ "https://opencollective.com/debug"
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.20.0"
}
},
"node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
"deep-is": "^0.1.3",
"fast-levenshtein": "^2.0.6",
"levn": "^0.4.1",
"prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
},
"engines": {
"node": ">= 0.8.0"
@@ -1226,18 +1753,6 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
"node_modules/path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -1247,41 +1762,78 @@
"node": ">=8"
}
},
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/path-key": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=8"
}
},
+ "node_modules/pathe": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz",
+ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "dev": true,
+ "license": "ISC"
+ },
"node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz",
+ "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8.6"
+ "node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
+ "node_modules/postcss": {
+ "version": "8.5.26",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.26.tgz",
+ "integrity": "sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/postcss/"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/postcss"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "nanoid": "^3.3.17",
+ "picocolors": "^1.1.1",
+ "source-map-js": "^1.2.1"
+ },
+ "engines": {
+ "node": "^10 || ^12 || >=14"
+ }
+ },
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
"integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">= 0.8.0"
}
@@ -1291,240 +1843,157 @@
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
"integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"dev": true,
+ "license": "MIT",
"engines": {
"node": ">=6"
}
},
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "node_modules/rolldown": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.1.3.tgz",
+ "integrity": "sha512-1F1eEtUBtFvcGm1HQ9TiUIUHPQG7mSAODrhIzjxoUEFuo8OcbrGLiVLkevNgj84TE4lnHvnumwFjhJO5Eu135g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "safe-buffer": "^5.1.0"
+ "@oxc-project/types": "=0.137.0",
+ "@rolldown/pluginutils": "^1.0.0"
+ },
+ "bin": {
+ "rolldown": "bin/cli.mjs"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "optionalDependencies": {
+ "@rolldown/binding-android-arm64": "1.1.3",
+ "@rolldown/binding-darwin-arm64": "1.1.3",
+ "@rolldown/binding-darwin-x64": "1.1.3",
+ "@rolldown/binding-freebsd-x64": "1.1.3",
+ "@rolldown/binding-linux-arm-gnueabihf": "1.1.3",
+ "@rolldown/binding-linux-arm64-gnu": "1.1.3",
+ "@rolldown/binding-linux-arm64-musl": "1.1.3",
+ "@rolldown/binding-linux-ppc64-gnu": "1.1.3",
+ "@rolldown/binding-linux-s390x-gnu": "1.1.3",
+ "@rolldown/binding-linux-x64-gnu": "1.1.3",
+ "@rolldown/binding-linux-x64-musl": "1.1.3",
+ "@rolldown/binding-openharmony-arm64": "1.1.3",
+ "@rolldown/binding-wasm32-wasi": "1.1.3",
+ "@rolldown/binding-win32-arm64-msvc": "1.1.3",
+ "@rolldown/binding-win32-x64-msvc": "1.1.3"
}
},
- "node_modules/readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "picomatch": "^2.2.1"
+ "shebang-regex": "^3.0.0"
},
"engines": {
- "node": ">=8.10.0"
+ "node": ">=8"
}
},
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=8"
}
},
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
+ "node_modules/siginfo": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz",
+ "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==",
"dev": true,
- "engines": {
- "node": ">=4"
- }
+ "license": "ISC"
},
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"dev": true,
+ "license": "BSD-3-Clause",
"engines": {
- "iojs": ">=1.0.0",
"node": ">=0.10.0"
}
},
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+ "node_modules/stackback": {
+ "version": "0.0.2",
+ "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz",
+ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==",
"dev": true,
- "dependencies": {
- "randombytes": "^2.1.0"
- }
+ "license": "MIT"
},
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "node_modules/std-env": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/std-env/-/std-env-4.2.0.tgz",
+ "integrity": "sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==",
"dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "node_modules/tinybench": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz",
+ "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==",
"dev": true,
- "engines": {
- "node": ">=8"
- }
+ "license": "MIT"
},
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "node_modules/tinyexec": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.2.4.tgz",
+ "integrity": "sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==",
"dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=18"
}
},
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "node_modules/tinyglobby": {
+ "version": "0.2.17",
+ "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz",
+ "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ansi-regex": "^5.0.1"
+ "fdir": "^6.5.0",
+ "picomatch": "^4.0.4"
},
"engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
+ "node": ">=12.0.0"
},
"funding": {
- "url": "https://github.com/sponsors/sindresorhus"
+ "url": "https://github.com/sponsors/SuperchupuDev"
}
},
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "node_modules/tinyrainbow": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.1.tgz",
+ "integrity": "sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==",
"dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=14.0.0"
}
},
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
+ "license": "0BSD",
+ "optional": true
},
"node_modules/type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
"integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
"dev": true,
+ "license": "MIT",
"dependencies": {
"prelude-ls": "^1.2.1"
},
@@ -1532,27 +2001,184 @@
"node": ">= 0.8.0"
}
},
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
"node_modules/uri-js": {
"version": "4.4.1",
"resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
"integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
"dev": true,
+ "license": "BSD-2-Clause",
"dependencies": {
"punycode": "^2.1.0"
}
},
+ "node_modules/vite": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-8.1.0.tgz",
+ "integrity": "sha512-BuJcQK/56NQTWDGn4ABea3q4SSBdNPWwNZKTkkUpcMPnLoquSYH8llRtSUIgoL1KSCpHt5eghLShn50mH36y7Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "lightningcss": "^1.32.0",
+ "picomatch": "^4.0.4",
+ "postcss": "^8.5.15",
+ "rolldown": "~1.1.2",
+ "tinyglobby": "^0.2.17"
+ },
+ "bin": {
+ "vite": "bin/vite.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || >=22.12.0"
+ },
+ "funding": {
+ "url": "https://github.com/vitejs/vite?sponsor=1"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.3"
+ },
+ "peerDependencies": {
+ "@types/node": "^20.19.0 || >=22.12.0",
+ "@vitejs/devtools": "^0.3.0",
+ "esbuild": "^0.27.0 || ^0.28.0",
+ "jiti": ">=1.21.0",
+ "less": "^4.0.0",
+ "sass": "^1.70.0",
+ "sass-embedded": "^1.70.0",
+ "stylus": ">=0.54.8",
+ "sugarss": "^5.0.0",
+ "terser": "^5.16.0",
+ "tsx": "^4.8.1",
+ "yaml": "^2.4.2"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "@vitejs/devtools": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "jiti": {
+ "optional": true
+ },
+ "less": {
+ "optional": true
+ },
+ "sass": {
+ "optional": true
+ },
+ "sass-embedded": {
+ "optional": true
+ },
+ "stylus": {
+ "optional": true
+ },
+ "sugarss": {
+ "optional": true
+ },
+ "terser": {
+ "optional": true
+ },
+ "tsx": {
+ "optional": true
+ },
+ "yaml": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/vitest": {
+ "version": "4.1.11",
+ "resolved": "https://registry.npmjs.org/vitest/-/vitest-4.1.11.tgz",
+ "integrity": "sha512-fhACrNXUidIbGSBr5FlbuBkO7VWC1ZyLl0DO4CU2DrQoAPxX84Ysxs+HeGQpii5lZWV1Q4gBZTTu49mF+A6Edw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@vitest/expect": "4.1.11",
+ "@vitest/mocker": "4.1.11",
+ "@vitest/pretty-format": "4.1.11",
+ "@vitest/runner": "4.1.11",
+ "@vitest/snapshot": "4.1.11",
+ "@vitest/spy": "4.1.11",
+ "@vitest/utils": "4.1.11",
+ "es-module-lexer": "^2.0.0",
+ "expect-type": "^1.3.0",
+ "magic-string": "^0.30.21",
+ "obug": "^2.1.1",
+ "pathe": "^2.0.3",
+ "picomatch": "^4.0.3",
+ "std-env": "^4.0.0-rc.1",
+ "tinybench": "^2.9.0",
+ "tinyexec": "^1.0.2",
+ "tinyglobby": "^0.2.15",
+ "tinyrainbow": "^3.1.0",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0",
+ "why-is-node-running": "^2.3.0"
+ },
+ "bin": {
+ "vitest": "vitest.mjs"
+ },
+ "engines": {
+ "node": "^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/vitest"
+ },
+ "peerDependencies": {
+ "@edge-runtime/vm": "*",
+ "@opentelemetry/api": "^1.9.0",
+ "@types/node": "^20.0.0 || ^22.0.0 || >=24.0.0",
+ "@vitest/browser-playwright": "4.1.11",
+ "@vitest/browser-preview": "4.1.11",
+ "@vitest/browser-webdriverio": "4.1.11",
+ "@vitest/coverage-istanbul": "4.1.11",
+ "@vitest/coverage-v8": "4.1.11",
+ "@vitest/ui": "4.1.11",
+ "happy-dom": "*",
+ "jsdom": "*",
+ "vite": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@edge-runtime/vm": {
+ "optional": true
+ },
+ "@opentelemetry/api": {
+ "optional": true
+ },
+ "@types/node": {
+ "optional": true
+ },
+ "@vitest/browser-playwright": {
+ "optional": true
+ },
+ "@vitest/browser-preview": {
+ "optional": true
+ },
+ "@vitest/browser-webdriverio": {
+ "optional": true
+ },
+ "@vitest/coverage-istanbul": {
+ "optional": true
+ },
+ "@vitest/coverage-v8": {
+ "optional": true
+ },
+ "@vitest/ui": {
+ "optional": true
+ },
+ "happy-dom": {
+ "optional": true
+ },
+ "jsdom": {
+ "optional": true
+ },
+ "vite": {
+ "optional": false
+ }
+ }
+ },
"node_modules/wasmbuilder": {
"version": "0.0.16",
"resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.16.tgz",
@@ -1563,6 +2189,7 @@
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
},
@@ -1573,84 +2200,31 @@
"node": ">= 8"
}
},
- "node_modules/workerpool": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
- "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
- "dev": true
- },
- "node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "node_modules/why-is-node-running": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz",
+ "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
+ "siginfo": "^2.0.0",
+ "stackback": "0.0.2"
},
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "node_modules/y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dev": true,
- "dependencies": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
+ "bin": {
+ "why-is-node-running": "cli.js"
},
"engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs-parser": {
- "version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
- "dev": true,
- "engines": {
- "node": ">=10"
+ "node": ">=8"
}
},
- "node_modules/yargs-unparser": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
- "dependencies": {
- "camelcase": "^6.0.0",
- "decamelize": "^4.0.0",
- "flat": "^5.0.2",
- "is-plain-obj": "^2.1.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=10"
+ "node": ">=0.10.0"
}
},
"node_modules/yocto-queue": {
@@ -1665,1183 +2239,5 @@
"url": "https://github.com/sponsors/sindresorhus"
}
}
- },
- "dependencies": {
- "@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true
- },
- "@eslint-community/eslint-utils": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.2.0.tgz",
- "integrity": "sha512-gB8T4H4DEfX2IV9zGDJPOBgP1e/DbfCPDTtEqUMckpvzS1OYtva8JdFYBqMwYk7xAQ429WGF/UPqn8uQ//h2vQ==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^3.3.0"
- }
- },
- "@eslint-community/regexpp": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz",
- "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==",
- "dev": true
- },
- "@eslint/eslintrc": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz",
- "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.3.2",
- "espree": "^9.6.0",
- "globals": "^13.19.0",
- "ignore": "^5.2.0",
- "import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
- "strip-json-comments": "^3.1.1"
- }
- },
- "@eslint/js": {
- "version": "8.56.0",
- "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz",
- "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==",
- "dev": true
- },
- "@humanwhocodes/config-array": {
- "version": "0.11.13",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
- "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^2.0.1",
- "debug": "^4.1.1",
- "minimatch": "^3.0.5"
- }
- },
- "@humanwhocodes/module-importer": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
- "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
- "dev": true
- },
- "@humanwhocodes/object-schema": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
- "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
- "dev": true
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@ungap/structured-clone": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
- "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
- "dev": true
- },
- "acorn": {
- "version": "8.11.2",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
- "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "requires": {}
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-colors": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
- "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
- "dev": true
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "anymatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
- "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
- "dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
- }
- },
- "argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "binary-extensions": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
- "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "camelcase": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
- "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
- "dev": true
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "chokidar": {
- "version": "3.5.3",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
- "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.2",
- "braces": "~3.0.2",
- "fsevents": "~2.3.2",
- "glob-parent": "~5.1.2",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.6.0"
- },
- "dependencies": {
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- }
- }
- },
- "cliui": {
- "version": "7.0.4",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
- "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
- "dev": true,
- "requires": {
- "string-width": "^4.2.0",
- "strip-ansi": "^6.0.0",
- "wrap-ansi": "^7.0.0"
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decamelize": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
- "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
- "dev": true
- },
- "deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "diff": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
- "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
- "dev": true
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "eslint": {
- "version": "8.56.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz",
- "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==",
- "dev": true,
- "requires": {
- "@eslint-community/eslint-utils": "^4.2.0",
- "@eslint-community/regexpp": "^4.6.1",
- "@eslint/eslintrc": "^2.1.4",
- "@eslint/js": "8.56.0",
- "@humanwhocodes/config-array": "^0.11.13",
- "@humanwhocodes/module-importer": "^1.0.1",
- "@nodelib/fs.walk": "^1.2.8",
- "@ungap/structured-clone": "^1.2.0",
- "ajv": "^6.12.4",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.3.2",
- "doctrine": "^3.0.0",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^7.2.2",
- "eslint-visitor-keys": "^3.4.3",
- "espree": "^9.6.1",
- "esquery": "^1.4.2",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "find-up": "^5.0.0",
- "glob-parent": "^6.0.2",
- "globals": "^13.19.0",
- "graphemer": "^1.4.0",
- "ignore": "^5.2.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "is-path-inside": "^3.0.3",
- "js-yaml": "^4.1.0",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.1.2",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.3",
- "strip-ansi": "^6.0.1",
- "text-table": "^0.2.0"
- }
- },
- "eslint-scope": {
- "version": "7.2.2",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz",
- "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^5.2.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
- "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
- "dev": true
- },
- "espree": {
- "version": "9.6.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz",
- "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==",
- "dev": true,
- "requires": {
- "acorn": "^8.9.0",
- "acorn-jsx": "^5.3.2",
- "eslint-visitor-keys": "^3.4.1"
- }
- },
- "esquery": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz",
- "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- }
- },
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "fastq": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz",
- "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "find-up": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
- "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
- "dev": true,
- "requires": {
- "locate-path": "^6.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flat": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
- "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
- "dev": true
- },
- "flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz",
- "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==",
- "dev": true
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-parent": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
- "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.3"
- }
- },
- "globals": {
- "version": "13.24.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz",
- "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "graphemer": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz",
- "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true
- },
- "ignore": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz",
- "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==",
- "dev": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
- }
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "is-path-inside": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
- "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
- "dev": true
- },
- "is-plain-obj": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
- "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
- "dev": true
- },
- "is-unicode-supported": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz",
- "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "js-yaml": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
- "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
- "dev": true,
- "requires": {
- "argparse": "^2.0.1"
- }
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "locate-path": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
- "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
- "dev": true,
- "requires": {
- "p-locate": "^5.0.0"
- }
- },
- "lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "log-symbols": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
- "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
- "dev": true,
- "requires": {
- "chalk": "^4.1.0",
- "is-unicode-supported": "^0.1.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "mocha": {
- "version": "10.2.0",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz",
- "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==",
- "dev": true,
- "requires": {
- "ansi-colors": "4.1.1",
- "browser-stdout": "1.3.1",
- "chokidar": "3.5.3",
- "debug": "4.3.4",
- "diff": "5.0.0",
- "escape-string-regexp": "4.0.0",
- "find-up": "5.0.0",
- "glob": "7.2.0",
- "he": "1.2.0",
- "js-yaml": "4.1.0",
- "log-symbols": "4.1.0",
- "minimatch": "5.0.1",
- "ms": "2.1.3",
- "nanoid": "3.3.3",
- "serialize-javascript": "6.0.0",
- "strip-json-comments": "3.1.1",
- "supports-color": "8.1.1",
- "workerpool": "6.2.1",
- "yargs": "16.2.0",
- "yargs-parser": "20.2.4",
- "yargs-unparser": "2.0.0"
- },
- "dependencies": {
- "brace-expansion": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
- "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0"
- }
- },
- "minimatch": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
- "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
- "dev": true,
- "requires": {
- "brace-expansion": "^2.0.1"
- }
- },
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "supports-color": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
- "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- }
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- },
- "nanoid": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
- "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
- "dev": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
- "dev": true,
- "requires": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
- }
- },
- "p-limit": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
- "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
- "dev": true,
- "requires": {
- "yocto-queue": "^0.1.0"
- }
- },
- "p-locate": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
- "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
- "dev": true,
- "requires": {
- "p-limit": "^3.0.2"
- }
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
- "punycode": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
- "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "readdirp": {
- "version": "3.6.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
- "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
- "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
- "dev": true
- },
- "serialize-javascript": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
- "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "wasmbuilder": {
- "version": "0.0.16",
- "resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.16.tgz",
- "integrity": "sha512-Qx3lEFqaVvp1cEYW7Bfi+ebRJrOiwz2Ieu7ZG2l7YyeSJIok/reEQCQCuicj/Y32ITIJuGIM9xZQppGx5LrQdA=="
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "workerpool": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
- "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
- "dev": true
- },
- "wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "y18n": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
- "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
- "dev": true
- },
- "yargs": {
- "version": "16.2.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
- "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
- "dev": true,
- "requires": {
- "cliui": "^7.0.2",
- "escalade": "^3.1.1",
- "get-caller-file": "^2.0.5",
- "require-directory": "^2.1.1",
- "string-width": "^4.2.0",
- "y18n": "^5.0.5",
- "yargs-parser": "^20.2.2"
- }
- },
- "yargs-parser": {
- "version": "20.2.4",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
- "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
- "dev": true
- },
- "yargs-unparser": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
- "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
- "dev": true,
- "requires": {
- "camelcase": "^6.0.0",
- "decamelize": "^4.0.0",
- "flat": "^5.0.2",
- "is-plain-obj": "^2.1.0"
- }
- },
- "yocto-queue": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
- "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
- "dev": true
- }
}
}
diff --git a/package.json b/package.json
index 9b5726e..6144fd9 100644
--- a/package.json
+++ b/package.json
@@ -1,15 +1,25 @@
{
"name": "wasmcurves",
+ "type": "module",
"version": "0.2.2",
"description": "elliptic curves implementations in wasm",
- "main": "index.js",
+ "main": "./build/main.cjs",
+ "module": "./index.js",
+ "exports": {
+ ".": {
+ "import": "./index.js",
+ "require": "./build/main.cjs"
+ },
+ "./build/*": "./build/*"
+ },
"scripts": {
"lint": "eslint .",
"pretest": "npm run lint",
- "test": "mocha",
- "build_bn128": "node tools/buildwasm_bn128.js",
- "build_mnt6753": "node tools/buildwasm_mnt6753.js",
- "build_bls12381": "node tools/buildwasm_bls12381.js"
+ "test": "vitest run",
+ "test:watch": "vitest",
+ "build:wasm": "node tools/buildwasm_bn128.js && node tools/buildwasm_bls12381.js && node tools/buildwasm_msm_batch.js",
+ "build:cjs": "vite build",
+ "build": "npm run build:wasm && npm run build:cjs"
},
"keywords": [
"bigint",
@@ -28,10 +38,21 @@
"url": "https://github.com/iden3/wasmcurves.git"
},
"devDependencies": {
- "eslint": "^8.17.0",
- "mocha": "^10.0.0"
+ "@eslint/js": "^10.0.1",
+ "assemblyscript": "^0.28.19",
+ "eslint": "^10.6.0",
+ "globals": "^17.7.0",
+ "vite": "^8.0.0",
+ "vitest": "^4.1.11"
},
"dependencies": {
"wasmbuilder": "0.0.16"
+ },
+ "overrides": {
+ "serialize-javascript": "^7.0.5",
+ "diff": "^8.0.3",
+ "postcss": "^8.5.26",
+ "brace-expansion": "^5.0.9",
+ "nanoid": "^6.0.1"
}
}
diff --git a/src/as/msm_batch.ts b/src/as/msm_batch.ts
new file mode 100644
index 0000000..f63c1e5
--- /dev/null
+++ b/src/as/msm_batch.ts
@@ -0,0 +1,1151 @@
+// Batch-affine signed-digit Pippenger MSM.
+//
+// Control flow lives here; ALL field arithmetic is imported from the main
+// wasmcurves module (same linear memory). Buckets are kept in AFFINE
+// coordinates and filled with batched affine additions: one field inversion
+// per batch via Montgomery's trick, so each bucket add costs ~2M + 1S + 3M
+// (amortized inversion) instead of an 11M jacobian addMixed.
+//
+// Conflict-free scheduling: for each window the points are bucket-sorted
+// (counting sort), then processed in LAYERS -- layer L takes the (L+1)-th
+// point of every bucket. Within a layer each bucket is touched at most once,
+// so a batch never contains two adds into the same bucket and no deferral
+// machinery is needed. The batch is flushed at every layer boundary (a
+// bucket's layer-L+1 add depends on its layer-L result).
+//
+// Doubling (P == bucket) and cancellation (P == -bucket) are detected at
+// schedule time from the coordinates.
+//
+// IMPORTANT: this module must have NO linear-memory statics (no data
+// segments) -- it shares memory with the main module and anything static
+// would clobber it. All state is wasm globals; scratch comes from the main
+// module's bump allocator at address 0.
+
+@external("curve", "f_mul") declare function f_mul(a: i32, b: i32, r: i32): void;
+@external("curve", "f_square") declare function f_square(a: i32, r: i32): void;
+@external("curve", "f_add") declare function f_add(a: i32, b: i32, r: i32): void;
+@external("curve", "f_sub") declare function f_sub(a: i32, b: i32, r: i32): void;
+@external("curve", "f_neg") declare function f_neg(a: i32, r: i32): void;
+@external("curve", "f_inverse") declare function f_inverse(a: i32, r: i32): void;
+@external("curve", "f_isZero") declare function f_isZero(a: i32): i32;
+@external("curve", "g_add") declare function g_add(a: i32, b: i32, r: i32): void;
+@external("curve", "g_addMixed") declare function g_addMixed(a: i32, b: i32, r: i32): void;
+@external("curve", "g_double") declare function g_double(a: i32, r: i32): void;
+@external("curve", "g_zero") declare function g_zero(r: i32): void;
+@external("curve", "g_isZero") declare function g_isZero(a: i32): i32;
+@external("curve", "f_conj") declare function f_conj(a: i32, r: i32): void;
+
+const BATCH: i32 = 512;
+
+// per-call state (wasm globals -- no linear-memory statics allowed here)
+let N8: i32 = 0; // bytes per base-field element
+let C: i32 = 0; // window bits
+let HALF: i32 = 0; // 2^(C-1) == bucket count
+let FULL: i32 = 0; // 2^C
+let NB: i32 = 0;
+let NWIN: i32 = 0; // real windows + 1 carry-guard window
+let NPTS: i32 = 0;
+let SCS: i32 = 0; // scalar size in bytes
+let SCBITS: i32 = 0;
+let PBASES: i32 = 0;
+let PSCAL: i32 = 0;
+let PCARRY: i32 = 0; // 1 byte per (window, point): carry INTO the window
+let PBUCK: i32 = 0; // NB affine points (x,y)
+let POCC: i32 = 0; // bucket occupancy flags
+let PDIG: i32 = 0; // per-point signed digit for the current window (i32)
+let PPERM: i32 = 0; // rank-sorted entries: pairs ((i<<1)|neg, bucket) (u32 x2)
+let PCNT: i32 = 0; // per-bucket point count (u32)
+let PFILL: i32 = 0; // per-bucket rank cursor (u32)
+let PLCNT: i32 = 0; // per-layer entry count (u32)
+let PLSTART: i32 = 0; // per-layer segment start (u32)
+let PLFILL: i32 = 0; // per-layer scatter cursor (u32)
+let PENTB: i32 = 0; // batch entry: bucket index (u32)
+let PENTX: i32 = 0; // batch entry: ptr to incoming x2 (u32)
+let PNUM: i32 = 0; // batch entry: lambda numerator
+let PDEN: i32 = 0; // batch entry: lambda denominator
+let PPREF: i32 = 0; // prefix products for Montgomery batch inversion
+let T1: i32 = 0;
+let T2: i32 = 0;
+let LAM: i32 = 0;
+let TINV: i32 = 0;
+let NE: i32 = 0; // entries in the current batch
+// GLV state: items >= NORIG use the materialized phi-bases table; PSIGN (when
+// nonzero) holds a per-item sub-scalar sign that flips the item's digits.
+let NORIG: i32 = 0;
+let PPHI: i32 = 0;
+let PSIGN: i32 = 0;
+
+function allocMem(len: i32): i32 {
+ let p: u32 = load(0);
+ while (p & 3) p++;
+ const res = p;
+ const end: u32 = p + (len as u32);
+ store(0, end);
+ // grow the (shared, imported) memory if the bump allocation passed its end
+ const cap: u32 = (memory.size() as u32) << 16;
+ if (end > cap) {
+ memory.grow((((end - cap) >> 16) + 1) as i32);
+ }
+ return res as i32;
+}
+
+// 8-byte-chunk copy of one field element (N8 is always a multiple of 8)
+function fcopy(src: i32, dst: i32): void {
+ for (let k = 0; k < N8; k += 8) store(dst + k, load(src + k));
+}
+
+// ---------------------------------------------------------------------------
+// Scalar-size partitioning (ported from rapidsnark/ffiasm's MSM):
+// classify scalars by significant bits BEFORE the bucket method. Zeros are
+// dropped, ones are accumulated with plain mixed additions, scalars up to
+// SMALL_BITS run Pippenger over few windows, and only full-width scalars pay
+// full window costs. Witness MSMs (A/B1/B2/C) are dominated by 0/1 wires --
+// a sha256 witness is ~2/3 zeros and ~1/3 ones -- while the H MSM's uniform
+// scalars take the (nearly)-all-big fast path and skip the gather.
+
+const SMALL_BITS: i32 = 64;
+
+// On MIXED (gathered) chunks, GLV/GLS below this many full-width scalars
+// loses to the plain path: the decomposition + endomorphism-base
+// materialization overhead beats the halved window count (measured: loss at
+// <= ~2.7k big scalars per chunk, win at >= ~5.5k). All-big fast-path
+// chunks skip the gather and win with endo at every size, so the cutoff
+// applies ONLY to the gathered branch.
+const ENDO_MIN_BIG_GATHERED: i32 = 4096;
+
+// partition scan results (globals: AS functions cannot return tuples)
+let PN_ZERO: i32 = 0;
+let PN_ONE: i32 = 0;
+let PN_SMALL: i32 = 0;
+let PN_BIG: i32 = 0;
+let PMAX_SMALL: i32 = 0; // max significant bits among small scalars
+let PMAX_BIG: i32 = 0; // max significant bits among big scalars
+
+// significant bits of the scs-byte little-endian scalar at pS (0 if zero)
+function sigBits(pS: i32, scs: i32): i32 {
+ for (let b = scs - 1; b >= 0; b--) {
+ const v = load(pS + b) as i32;
+ if (v != 0) return (b << 3) + (32 - clz(v));
+ }
+ return 0;
+}
+
+// classify each scalar into zero(0) / one(1) / small(2) / big(3), one byte
+// per scalar at pCls; counts and max bit-lengths land in the PN_*/PMAX_*
+// globals.
+function partitionScan(pScalars: i32, scs: i32, n: i32, pCls: i32): void {
+ PN_ZERO = 0; PN_ONE = 0; PN_SMALL = 0; PN_BIG = 0;
+ PMAX_SMALL = 0; PMAX_BIG = 0;
+ for (let i = 0; i < n; i++) {
+ const bits = sigBits(pScalars + i * scs, scs);
+ let cls: i32;
+ if (bits == 0) { cls = 0; PN_ZERO++; }
+ else if (bits == 1) { cls = 1; PN_ONE++; }
+ else if (bits <= SMALL_BITS) {
+ cls = 2; PN_SMALL++;
+ if (bits > PMAX_SMALL) PMAX_SMALL = bits;
+ } else {
+ cls = 3; PN_BIG++;
+ if (bits > PMAX_BIG) PMAX_BIG = bits;
+ }
+ store(pCls + i, cls as u8);
+ }
+}
+
+// 8-byte-chunk copy (len must be a multiple of 8 -- point/scalar sizes are)
+function memCopy8(src: i32, dst: i32, len: i32): void {
+ for (let k = 0; k < len; k += 8) store(dst + k, load(src + k));
+}
+
+// pAcc (jacobian) += affine base at pB, skipping the (0,0) infinity encoding
+function addAffineIf(pAcc: i32, pB: i32): void {
+ if (f_isZero(pB) != 0 && f_isZero(pB + N8) != 0) return;
+ g_addMixed(pAcc, pB, pAcc);
+}
+
+// plain (no endomorphism) MSM over contiguous bases/scalars into pr (zeroed
+// here). scbits clamps the window sweep to the partition's real bit-width;
+// the carry-guard window in msmRun absorbs the recode carry past it.
+function runPlain(pB: i32, pS: i32, scs: i32, scbits: i32, n: i32, pr: i32): void {
+ g_zero(pr);
+ if (n == 0) return;
+ NPTS = n;
+ SCS = scs;
+ SCBITS = scbits;
+ PBASES = pB;
+ PSCAL = pS;
+ NORIG = n;
+ PPHI = 0;
+ PSIGN = 0;
+ C = winSize(n);
+ msmRun(pr);
+}
+
+// Shared partitioned driver. runBig executes the big partition (plain, GLV
+// or GLS -- whatever the entry point uses) over gathered bases/scalars into
+// a zeroed jacobian target. Assumes partitionScan() has already filled the
+// class array at pCls and the PN_*/PMAX_* globals.
+// Returns false when the caller should use its own (nearly) all-big fast
+// path over the ORIGINAL input instead (partitioning would only pay gather
+// costs); true when pr holds the finished result.
+function runPartitionedRest(pBases: i32, pScalars: i32, scalarSize: i32, n: i32,
+ pr: i32, pCls: i32): bool {
+ // (nearly) all full width: the gather saves nothing
+ if (PN_BIG >= n - (n >> 4)) return false;
+
+ const sG = N8 << 1;
+
+ // all small: bases and scalars are usable in place; just clamp the sweep
+ if (PN_SMALL == n) {
+ runPlain(pBases, pScalars, scalarSize, PMAX_SMALL, n, pr);
+ return true;
+ }
+
+ // mixed: ones direct-added into pr; small/big gathered and run separately
+ g_zero(pr);
+ const pTmp = allocMem(3 * N8);
+
+ if (PN_ONE > 0) {
+ for (let i = 0; i < n; i++) {
+ if (load(pCls + i) == 1) addAffineIf(pr, pBases + i * sG);
+ }
+ }
+
+ if (PN_SMALL > 0) {
+ const pSB = allocMem(PN_SMALL * sG);
+ const pSS = allocMem(PN_SMALL << 3);
+ let k = 0;
+ for (let i = 0; i < n; i++) {
+ if (load(pCls + i) == 2) {
+ memCopy8(pBases + i * sG, pSB + k * sG, sG);
+ store(pSS + (k << 3), load(pScalars + i * scalarSize));
+ k++;
+ }
+ }
+ runPlain(pSB, pSS, 8, PMAX_SMALL, PN_SMALL, pTmp);
+ g_add(pr, pTmp, pr);
+ }
+
+ if (PN_BIG > 0) {
+ const pBB = allocMem(PN_BIG * sG);
+ const pBS = allocMem(PN_BIG * scalarSize);
+ let k = 0;
+ for (let i = 0; i < n; i++) {
+ if (load(pCls + i) == 3) {
+ memCopy8(pBases + i * sG, pBB + k * sG, sG);
+ memCopy8(pScalars + i * scalarSize, pBS + k * scalarSize, scalarSize);
+ k++;
+ }
+ }
+ runBigPartition(pBB, pBS, scalarSize, PN_BIG, pTmp);
+ g_add(pr, pTmp, pr);
+ }
+
+ return true;
+}
+
+// how the current entry point wants its big partition executed:
+// 0 = plain, 1 = GLV, 2 = GLS. Set before runPartitionedRest.
+let BIG_MODE: i32 = 0;
+let PGC: i32 = 0; // decomposition constants for GLV/GLS big runs
+
+function runBigPartition(pB: i32, pS: i32, scalarSize: i32, n: i32, pr: i32): void {
+ if (n < ENDO_MIN_BIG_GATHERED) runPlain(pB, pS, scalarSize, PMAX_BIG, n, pr);
+ else if (BIG_MODE == 1) runGlv(pB, pS, n, pr);
+ else if (BIG_MODE == 2) runGls(pB, pS, n, pr);
+ else runPlain(pB, pS, scalarSize, PMAX_BIG, n, pr);
+}
+
+// window size table, indexed by clz(n) -- mirrors build_multiexp's pTSizes
+function winSize(n: i32): i32 {
+ const z = clz(n);
+ if (z <= 9) return 17;
+ if (z <= 11) return 16;
+ if (z == 12) return 15;
+ if (z == 13) return 14;
+ if (z <= 15) return 13;
+ if (z == 16) return 12;
+ if (z == 17) return 11;
+ if (z == 18) return 10;
+ if (z == 19) return 9;
+ if (z == 20) return 8;
+ if (z <= 22) return 7;
+ if (z == 23) return 6;
+ if (z == 24) return 5;
+ if (z == 25) return 4;
+ if (z == 26) return 3;
+ return 2; // signed windowing needs C >= 2
+}
+
+// raw (unsigned) C-bit window of the scalar at pScalar, starting at startBit
+function getChunk(pScalar: i32, startBit: i32): i32 {
+ const bitsToEnd = SCBITS - startBit;
+ let mask = (1 << C) - 1;
+ if (C > bitsToEnd) mask = (1 << bitsToEnd) - 1;
+ let v: i32 = load(pScalar + (startBit >> 3));
+ v = v >>> (startBit & 7);
+ return v & mask;
+}
+
+// carry-recode pass: store the carry flowing INTO each window (column-major)
+function recode(): void {
+ for (let i = 0; i < NPTS; i++) {
+ let carry = 0;
+ const pS = PSCAL + i * SCS;
+ for (let j = 0; j < NWIN; j++) {
+ store(PCARRY + j * NPTS + i, carry as u8);
+ const sb = j * C;
+ let raw = 0;
+ if (sb < SCBITS) raw = getChunk(pS, sb);
+ if (raw + carry >= HALF) carry = 1;
+ else carry = 0;
+ }
+ }
+}
+
+// signed digit of point i in window j, in [-2^(C-1), 2^(C-1)-1]
+function digitFor(i: i32, j: i32): i32 {
+ const sb = j * C;
+ let raw = 0;
+ if (sb < SCBITS) raw = getChunk(PSCAL + i * SCS, sb);
+ let d = raw + (load(PCARRY + j * NPTS + i) as i32);
+ if (d >= HALF) d -= FULL;
+ return d;
+}
+
+// apply entry k of the batch; LAM must already hold its lambda
+function applyOne(k: i32): void {
+ const t = load(PENTB + k * 4) as i32;
+ const px2 = load(PENTX + k * 4) as i32;
+ const pbx = PBUCK + t * (N8 << 1);
+ const pby = pbx + N8;
+ f_square(LAM, T1);
+ f_sub(T1, pbx, T1);
+ f_sub(T1, px2, T1); // T1 = x3 = l^2 - x1 - x2
+ f_sub(pbx, T1, T2);
+ f_mul(LAM, T2, T2);
+ f_sub(T2, pby, T2); // T2 = y3 = l*(x1-x3) - y1
+ fcopy(T1, pbx);
+ fcopy(T2, pby);
+}
+
+// flush the pending batch: one field inversion for all NE denominators
+function applyBatch(): void {
+ if (NE == 0) return;
+ fcopy(PDEN, PPREF);
+ for (let k = 1; k < NE; k++) {
+ f_mul(PPREF + (k - 1) * N8, PDEN + k * N8, PPREF + k * N8);
+ }
+ f_inverse(PPREF + (NE - 1) * N8, TINV);
+ for (let k = NE - 1; k >= 1; k--) {
+ f_mul(TINV, PPREF + (k - 1) * N8, T1); // T1 = 1/den[k]
+ f_mul(TINV, PDEN + k * N8, TINV); // TINV = 1/prefix[k-1]
+ f_mul(PNUM + k * N8, T1, LAM);
+ applyOne(k);
+ }
+ f_mul(PNUM, TINV, LAM);
+ applyOne(0);
+ NE = 0;
+}
+
+// route one point (perm entry) into bucket t: place, schedule, double or cancel
+function processEntry(e: i32, t: i32): void {
+ // e = ((basePtr >> 2) << 1) | neg (pointers are 4-byte aligned -- the bump
+ // allocators guarantee only 4-byte alignment, so encode at that granularity)
+ const neg = e & 1;
+ const px = (e >>> 1) << 2;
+ const py = px + N8;
+ if (f_isZero(px) != 0 && f_isZero(py) != 0) return; // zero-affine base
+
+ const pbx = PBUCK + t * (N8 << 1);
+ const pby = pbx + N8;
+
+ if (load(POCC + t) == 0) {
+ // empty bucket: place +-P directly (no field muls)
+ fcopy(px, pbx);
+ if (neg) f_neg(py, pby);
+ else fcopy(py, pby);
+ store(POCC + t, 1);
+ return;
+ }
+
+ // occupied: schedule a batched affine add of +-P into the bucket
+ const pd = PDEN + NE * N8;
+ const pn = PNUM + NE * N8;
+ f_sub(px, pbx, pd); // den = x2 - x1
+ if (f_isZero(pd) != 0) {
+ // same x: doubling or cancellation
+ if (neg) f_add(pby, py, T1); // y1 - (-y2) == 0 ?
+ else f_sub(pby, py, T1); // y1 - y2 == 0 ?
+ if (f_isZero(T1) != 0) {
+ // P == bucket: double. num = 3*x1^2, den = 2*y1
+ f_square(pbx, T1);
+ f_add(T1, T1, T2);
+ f_add(T2, T1, pn);
+ f_add(pby, pby, pd);
+ } else {
+ // P == -bucket: cancels to infinity
+ store(POCC + t, 0);
+ return;
+ }
+ } else {
+ // num = (+-y2) - y1
+ if (neg) { f_add(py, pby, pn); f_neg(pn, pn); }
+ else f_sub(py, pby, pn);
+ }
+ store(PENTB + NE * 4, t as u32);
+ store(PENTX + NE * 4, px as u32);
+ NE++;
+ if (NE == BATCH) applyBatch();
+}
+
+// fill + reduce one window; result (jacobian) into pAcc
+function processWindow(j: i32, pAcc: i32, pTmp: i32): void {
+ // --- pass 1: digits + per-bucket counts ---
+ for (let t = 0; t < NB; t++) {
+ store(PCNT + t * 4, 0);
+ store(POCC + t, 0);
+ }
+ let maxOcc = 0;
+ for (let i = 0; i < NPTS; i++) {
+ let d = digitFor(i, j);
+ if (PSIGN != 0) {
+ if (load(PSIGN + i) != 0) d = 0 - d;
+ }
+ store(PDIG + i * 4, d);
+ if (d != 0) {
+ const t = (d > 0 ? d - 1 : -d - 1);
+ const cn = (load(PCNT + t * 4) as i32) + 1;
+ store(PCNT + t * 4, cn as u32);
+ if (cn > maxOcc) maxOcc = cn;
+ }
+ }
+
+ // --- pass 2: layer sizes + segment starts ---
+ // A point's rank within its bucket is its LAYER. Layer L has one entry per
+ // bucket with more than L points: lcnt[L] = #buckets with cnt > L.
+ for (let L = 0; L < maxOcc; L++) store(PLCNT + L * 4, 0);
+ for (let t = 0; t < NB; t++) {
+ const cn = load(PCNT + t * 4) as i32;
+ for (let r = 0; r < cn; r++) {
+ store(PLCNT + r * 4, (load(PLCNT + r * 4) + 1));
+ }
+ }
+ let s = 0;
+ for (let L = 0; L < maxOcc; L++) {
+ store(PLSTART + L * 4, s as u32);
+ store(PLFILL + L * 4, s as u32);
+ s += load(PLCNT + L * 4) as i32;
+ }
+
+ // --- pass 3: stable scatter by rank; each layer keeps ascending point
+ // order, so the fill phase reads the bases near-sequentially (the random
+ // accesses land in the small bucket array instead of the big bases run) ---
+ for (let t = 0; t < NB; t++) store(PFILL + t * 4, 0);
+ for (let i = 0; i < NPTS; i++) {
+ const d = load(PDIG + i * 4);
+ if (d != 0) {
+ let t: i32;
+ let neg: i32;
+ if (d > 0) { t = d - 1; neg = 0; }
+ else { t = -d - 1; neg = 1; }
+ const r = load(PFILL + t * 4) as i32; // rank = layer
+ store(PFILL + t * 4, (r + 1) as u32);
+ const pos = load(PLFILL + r * 4) as i32;
+ store(PLFILL + r * 4, (pos + 1) as u32);
+ let pb: i32;
+ if (i < NORIG) pb = PBASES + i * (N8 << 1);
+ else pb = PPHI + (i - NORIG) * (N8 << 1);
+ store(PPERM + pos * 8, (((pb >> 2) << 1) | neg) as u32);
+ store(PPERM + pos * 8 + 4, t as u32);
+ }
+ }
+
+ // --- conflict-free layers (a bucket appears at most once per layer) ---
+ NE = 0;
+ for (let L = 0; L < maxOcc; L++) {
+ const from = load(PLSTART + L * 4) as i32;
+ const to = from + (load(PLCNT + L * 4) as i32);
+ for (let k = from; k < to; k++) {
+ processEntry(load(PPERM + k * 8) as i32, load(PPERM + k * 8 + 4) as i32);
+ }
+ applyBatch(); // layer boundary: next layer may touch the same buckets
+ }
+
+ // --- running-sum reduction: acc = sum_{m=1..NB} m * bucket[m-1] ---
+ g_zero(pAcc);
+ g_zero(pTmp);
+ for (let t = NB - 1; t >= 0; t--) {
+ if (load(POCC + t) != 0) g_addMixed(pTmp, PBUCK + t * (N8 << 1), pTmp);
+ g_add(pAcc, pTmp, pAcc);
+ }
+}
+
+// core MSM over the prepared globals (N8, NPTS, SCS, SCBITS, PSCAL, PBASES,
+// NORIG, PPHI, PSIGN, C). Allocates its scratch from the bump allocator; the
+// caller saves/restores the allocator pointer.
+function msmRun(pr: i32): void {
+ HALF = 1 << (C - 1);
+ FULL = 1 << C;
+ NB = HALF;
+ NWIN = (SCBITS - 1) / C + 1 + 1; // +1 carry-guard window
+
+ const n = NPTS;
+ PCARRY = allocMem(NWIN * n);
+ PBUCK = allocMem(NB * (N8 << 1));
+ POCC = allocMem(NB);
+ PDIG = allocMem(n * 4);
+ PPERM = allocMem(n * 8);
+ PCNT = allocMem(NB * 4);
+ PFILL = allocMem(NB * 4);
+ PLCNT = allocMem((n + 1) * 4);
+ PLSTART = allocMem((n + 1) * 4);
+ PLFILL = allocMem((n + 1) * 4);
+ PENTB = allocMem(BATCH * 4);
+ PENTX = allocMem(BATCH * 4);
+ PNUM = allocMem(BATCH * N8);
+ PDEN = allocMem(BATCH * N8);
+ PPREF = allocMem(BATCH * N8);
+ T1 = allocMem(N8);
+ T2 = allocMem(N8);
+ LAM = allocMem(N8);
+ TINV = allocMem(N8);
+ const pAux = allocMem(3 * N8);
+ const pTmp = allocMem(3 * N8);
+
+ recode();
+
+ for (let j = NWIN - 1; j >= 0; j--) {
+ if (g_isZero(pr) == 0) {
+ for (let k = 0; k < C; k++) g_double(pr, pr);
+ }
+ processWindow(j, pAux, pTmp);
+ g_add(pr, pAux, pr);
+ }
+}
+
+// entry point. pr receives the jacobian result (3*n8f bytes).
+export function multiexpAffine(pBases: i32, pScalars: i32, scalarSize: i32, n: i32, pr: i32, n8f: i32): void {
+ g_zero(pr);
+ if (n == 0) return;
+
+ N8 = n8f;
+ const saved: u32 = load(0);
+
+ const pCls = allocMem(n);
+ partitionScan(pScalars, scalarSize, n, pCls);
+ BIG_MODE = 0;
+ if (!runPartitionedRest(pBases, pScalars, scalarSize, n, pr, pCls)) {
+ // (nearly) all big: run in place, window sweep clamped to the real max
+ runPlain(pBases, pScalars, scalarSize,
+ PMAX_BIG > 0 ? PMAX_BIG : 1, n, pr);
+ }
+ store(0, saved);
+}
+
+// ------------------------- GLV (bn254 G1) -------------------------
+// k*P = k1*P + k2*phi(P) with phi(x,y) = (beta*x, y) = lambda*(x,y) and
+// k = k1 + lambda*k2 (mod r), |k1|,|k2| < 2^127. Halves the window count
+// (128-bit sub-scalars) at the cost of materializing the phi bases (one
+// field mul per point) and one decomposition per scalar.
+
+// GLV constants, generalized layout shared by both curves (verified offline;
+// beta/lambda pairings verified empirically against lambda*P on each curve):
+// 0: W1 = floor(b2*2^256/r) (7 limbs) 28: W2 = floor(|b1|*2^256/r) (7)
+// 56: a1 (4 limbs) 72: a2 (4) 88: |b1| (4) 104: |b2| (4)
+// 120: beta in Montgomery form (n8f bytes)
+// Both curves have b1 < 0 and b2 > 0, so the decomposition code is shared.
+function writeGlvConstsBn254(p: i32): void {
+ store(p + 0, 0xc7e0b3d7);
+ store(p + 4, 0xd91d232e);
+ store(p + 8, 0x00000002);
+ store(p + 12, 0x00000000);
+ store(p + 16, 0x00000000);
+ store(p + 20, 0x00000000);
+ store(p + 24, 0x00000000);
+ store(p + 28, 0x391eb18d);
+ store(p + 32, 0x7a7bd9d4);
+ store(p + 36, 0xa773d2cf);
+ store(p + 40, 0x4ccef014);
+ store(p + 44, 0x00000002);
+ store(p + 48, 0x00000000);
+ store(p + 52, 0x00000000);
+ store(p + 56, 0x94d213e3);
+ store(p + 60, 0x89d32568);
+ store(p + 64, 0x00000000);
+ store(p + 68, 0x00000000);
+ store(p + 72, 0x1221250b);
+ store(p + 76, 0x0be4e154);
+ store(p + 80, 0xeeb859fd);
+ store(p + 84, 0x6f4d8248);
+ store(p + 88, 0x7d4f1128);
+ store(p + 92, 0x8211bbeb);
+ store(p + 96, 0xeeb859fc);
+ store(p + 100, 0x6f4d8248);
+ store(p + 104, 0x94d213e3);
+ store(p + 108, 0x89d32568);
+ store(p + 112, 0x00000000);
+ store(p + 116, 0x00000000);
+ store(p + 120, 0xd782e155);
+ store(p + 124, 0x71930c11);
+ store(p + 128, 0xffbe3323);
+ store(p + 132, 0xa6bb947c);
+ store(p + 136, 0xd4741444);
+ store(p + 140, 0xaa303344);
+ store(p + 144, 0x26594943);
+ store(p + 148, 0x2c3b3f0d);
+}
+
+function writeGlvConstsBls12381(p: i32): void {
+ store(p + 0, 0xf6cfee30);
+ store(p + 4, 0x63f6e522);
+ store(p + 8, 0xe01faadd);
+ store(p + 12, 0x7c6becf1);
+ store(p + 16, 0x00000001);
+ store(p + 20, 0x00000000);
+ store(p + 24, 0x00000000);
+ store(p + 28, 0x00000002);
+ store(p + 32, 0x00000000);
+ store(p + 36, 0x00000000);
+ store(p + 40, 0x00000000);
+ store(p + 44, 0x00000000);
+ store(p + 48, 0x00000000);
+ store(p + 52, 0x00000000);
+ store(p + 56, 0xffffffff);
+ store(p + 60, 0x00000000);
+ store(p + 64, 0x0001a402);
+ store(p + 68, 0xac45a401);
+ store(p + 72, 0x00000001);
+ store(p + 76, 0x00000000);
+ store(p + 80, 0x00000000);
+ store(p + 84, 0x00000000);
+ store(p + 88, 0x00000001);
+ store(p + 92, 0x00000000);
+ store(p + 96, 0x00000000);
+ store(p + 100, 0x00000000);
+ store(p + 104, 0x00000000);
+ store(p + 108, 0x00000001);
+ store(p + 112, 0x0001a402);
+ store(p + 116, 0xac45a401);
+ store(p + 120, 0x8671f071);
+ store(p + 124, 0xcd03c9e4);
+ store(p + 128, 0x1fcda5d2);
+ store(p + 132, 0x5dab2246);
+ store(p + 136, 0xd3851b95);
+ store(p + 140, 0x587042af);
+ store(p + 144, 0x01bacb9e);
+ store(p + 148, 0x8eb60ebe);
+ store(p + 152, 0x83d050d2);
+ store(p + 156, 0x03f97d6e);
+ store(p + 160, 0x54638741);
+ store(p + 164, 0x18f02065);
+}
+
+// out = x*y, schoolbook 32-bit limbs, truncated to `no` limbs
+function mulLimbs(pX: i32, nx: i32, pY: i32, ny: i32, pOut: i32, no: i32): void {
+ for (let k = 0; k < no; k++) store(pOut + k * 4, 0);
+ for (let i = 0; i < nx; i++) {
+ if (i >= no) break;
+ const xi: u64 = load(pX + i * 4) as u64;
+ if (xi == 0) continue;
+ let c: u64 = 0;
+ let j = 0;
+ for (; j < ny; j++) {
+ const idx = i + j;
+ if (idx >= no) break;
+ const s: u64 = (load(pOut + idx * 4) as u64) + xi * (load(pY + j * 4) as u64) + c;
+ store(pOut + idx * 4, s as u32);
+ c = s >> 32;
+ }
+ for (let idx = i + j; idx < no; idx++) {
+ if (c == 0) break;
+ const s: u64 = (load(pOut + idx * 4) as u64) + c;
+ store(pOut + idx * 4, s as u32);
+ c = s >> 32;
+ }
+ }
+}
+
+// pOut(no limbs) = (pt + 2^255) >> 256 (rounding shift for the c_i)
+function roundShift(pt: i32, nt: i32, pOut: i32, no: i32): void {
+ let c: u64 = ((load(pt + 28) as u64) + 0x80000000) >> 32;
+ for (let j = 0; j < no; j++) {
+ let v: u64 = c;
+ if (8 + j < nt) v += load(pt + (8 + j) * 4) as u64;
+ store(pOut + j * 4, v as u32);
+ c = v >> 32;
+ }
+}
+
+// 5-limb (160-bit) two's-complement helpers
+function sub5(pA: i32, pB: i32, pR: i32): void {
+ let bw: u64 = 0;
+ for (let j = 0; j < 5; j++) {
+ const d: u64 = (load(pA + j * 4) as u64) + 0x100000000 - (load(pB + j * 4) as u64) - bw;
+ store(pR + j * 4, d as u32);
+ bw = 1 - (d >> 32);
+ }
+}
+function neg5(pW: i32): void {
+ let c: u64 = 1;
+ for (let j = 0; j < 5; j++) {
+ const v: u64 = ((load(pW + j * 4) ^ 0xffffffff) as u64) + c;
+ store(pW + j * 4, v as u32);
+ c = v >> 32;
+ }
+}
+
+// decompose canonical k (8 limbs) -> |k1|,|k2| (4 limbs each; < 2^127).
+// Returns bit0 = sign(k1), bit1 = sign(k2).
+function glvDecompose(pK: i32, pgc: i32, pt: i32, pc1: i32, pc2: i32,
+ pu: i32, pv: i32, pw: i32, pK1: i32, pK2: i32): i32 {
+ mulLimbs(pK, 8, pgc, 7, pt, 15); // k * W1
+ roundShift(pt, 15, pc1, 5); // c1
+ mulLimbs(pK, 8, pgc + 28, 7, pt, 15); // k * W2
+ roundShift(pt, 15, pc2, 5); // c2
+ // k1 = k - c1*a1 - c2*a2 (mod 2^160, two's complement)
+ mulLimbs(pc1, 5, pgc + 56, 4, pu, 5);
+ mulLimbs(pc2, 5, pgc + 72, 4, pv, 5);
+ sub5(pK, pu, pw);
+ sub5(pw, pv, pw);
+ let sg = 0;
+ if ((load(pw + 16) & 0x80000000) != 0) { neg5(pw); sg = 1; }
+ store(pK1, load(pw));
+ store(pK1 + 8, load(pw + 8));
+ // k2 = c1*|b1| - c2*b2 (b1 is negative, so -c1*b1 = c1*|b1|)
+ mulLimbs(pc1, 5, pgc + 88, 4, pu, 5);
+ mulLimbs(pc2, 5, pgc + 104, 4, pv, 5);
+ sub5(pu, pv, pw);
+ if ((load(pw + 16) & 0x80000000) != 0) { neg5(pw); sg |= 2; }
+ store(pK2, load(pw));
+ store(pK2 + 8, load(pw + 8));
+ return sg;
+}
+
+// 3-limb (96-bit) two's-complement helpers for the GLS decomposition
+function sub3(pA: i32, pB: i32, pR: i32): void {
+ let bw: u64 = 0;
+ for (let j = 0; j < 3; j++) {
+ const d: u64 = (load(pA + j * 4) as u64) + 0x100000000 - (load(pB + j * 4) as u64) - bw;
+ store(pR + j * 4, d as u32);
+ bw = 1 - (d >> 32);
+ }
+}
+function add3(pA: i32, pB: i32, pR: i32): void {
+ let c: u64 = 0;
+ for (let j = 0; j < 3; j++) {
+ const s: u64 = (load(pA + j * 4) as u64) + (load(pB + j * 4) as u64) + c;
+ store(pR + j * 4, s as u32);
+ c = s >> 32;
+ }
+}
+function neg3(pW: i32): void {
+ let c: u64 = 1;
+ for (let j = 0; j < 3; j++) {
+ const v: u64 = ((load(pW + j * 4) ^ 0xffffffff) as u64) + c;
+ store(pW + j * 4, v as u32);
+ c = v >> 32;
+ }
+}
+
+// bn254 GLS (G2) constants, recomputed & verified offline: Babai rounding
+// constants W_j = floor(adj_j*2^256/r) (all positive), the LLL-reduced 4-dim
+// lattice basis |b_ji| + signs, and the psi/psi^2/psi^3 Frobenius-twist
+// multipliers in Montgomery form (Gx, Gy, NxE, NyE, Gx3, Gy3).
+function writeGlsConsts(p: i32): void {
+ store(p + 0, 0x32e42728);
+ store(p + 4, 0x2dff2915);
+ store(p + 8, 0xa3e5577f);
+ store(p + 12, 0x55b4ca7b);
+ store(p + 16, 0xb0d92b95);
+ store(p + 20, 0x9e80318a);
+ store(p + 24, 0x00000000);
+ store(p + 28, 0x95d51bb1);
+ store(p + 32, 0x46f4bda9);
+ store(p + 36, 0xfc7184ae);
+ store(p + 40, 0x08e5da66);
+ store(p + 44, 0xb0d92b93);
+ store(p + 48, 0x9e80318a);
+ store(p + 52, 0x00000000);
+ store(p + 56, 0xc7e0b3d7);
+ store(p + 60, 0xd91d232e);
+ store(p + 64, 0x00000002);
+ store(p + 68, 0x00000000);
+ store(p + 72, 0x00000000);
+ store(p + 76, 0x00000000);
+ store(p + 80, 0x00000000);
+ store(p + 84, 0xcef3cd3f);
+ store(p + 88, 0xc170977d);
+ store(p + 92, 0xa3e5577d);
+ store(p + 96, 0x55b4ca7b);
+ store(p + 100, 0xb0d92b95);
+ store(p + 104, 0x9e80318a);
+ store(p + 108, 0x00000000);
+ store(p + 112, 0x94d213e3);
+ store(p + 116, 0x89d32568);
+ store(p + 120, 0x00000000);
+ store(p + 124, 0x00000000);
+ store(p + 128, 0x94d213e2);
+ store(p + 132, 0x89d32568);
+ store(p + 136, 0x00000001);
+ store(p + 140, 0x00000000);
+ store(p + 144, 0x94d213e2);
+ store(p + 148, 0x89d32568);
+ store(p + 152, 0x4a6909f2);
+ store(p + 156, 0x44e992b4);
+ store(p + 160, 0x4a6909f1);
+ store(p + 164, 0x44e992b4);
+ store(p + 168, 0x4a6909f1);
+ store(p + 172, 0x44e992b4);
+ store(p + 176, 0x4a6909f2);
+ store(p + 180, 0x44e992b4);
+ store(p + 184, 0x4a6909f1);
+ store(p + 188, 0x44e992b4);
+ store(p + 192, 0x4a6909f1);
+ store(p + 196, 0x44e992b4);
+ store(p + 200, 0x94d213e2);
+ store(p + 204, 0x89d32568);
+ store(p + 208, 0x94d213e3);
+ store(p + 212, 0x89d32568);
+ store(p + 216, 0x4a6909f1);
+ store(p + 220, 0x44e992b4);
+ store(p + 224, 0x4a6909f2);
+ store(p + 228, 0x44e992b4);
+ store(p + 232, 0x4a6909f1);
+ store(p + 236, 0x44e992b4);
+ store(p + 240, 0);
+ store(p + 241, 0);
+ store(p + 242, 0);
+ store(p + 243, 0);
+ store(p + 244, 0);
+ store(p + 245, 0);
+ store(p + 246, 1);
+ store(p + 247, 0);
+ store(p + 248, 0);
+ store(p + 249, 0);
+ store(p + 250, 0);
+ store(p + 251, 1);
+ store(p + 252, 0);
+ store(p + 253, 1);
+ store(p + 254, 1);
+ store(p + 255, 1);
+ store(p + 256, 0x4563ab30);
+ store(p + 260, 0xb5773b10);
+ store(p + 264, 0xa9aa6454);
+ store(p + 268, 0x347f91c8);
+ store(p + 272, 0x242e0991);
+ store(p + 276, 0x7a007127);
+ store(p + 280, 0x118214ec);
+ store(p + 284, 0x1956bcd8);
+ store(p + 288, 0xa0aa4757);
+ store(p + 292, 0x6e849f1e);
+ store(p + 296, 0x89f89141);
+ store(p + 300, 0xaa1c7b6d);
+ store