前序博客:
- Polygon zkEVM 基本概念 第5章 “一个例子——Fibonacci state machine”
实操主要见:
- 2022年8月8日Jordi Baylina(Iden3合伙人,Polygon Hermez zkEVM技术负责人)在Zcon3分享 Tooling for building zkEVM: PIL and Circom - Jordi Baylina at Zcon3 第24分钟。
相关代码见:
- pil-stark:Generate a stark from a SM written in pil。(JavaScript)
pil-stark代码库的主要作用是:
- 从某状态机生成stark证明。该状态机以PIL语言编写。
Polygon zkEVM中借用了iden3的circom工具,其与snarkjs的关系为:
总体流程为:
测试用例见pil-stark/test
文件夹,以其中的sm_fibonacci
为例:
-
1)创建tmp文件夹,用于存储编译输出文件:
mkdir tmp
-
2)debug运行
fibonacci buildconst
:运行状态机中main_buildconst_fibonacci.js
,输出为fibonacci.const
/usr/local/bin/node --max-old-space-size=32000 test/sm_fibonacci/main_buildconst_fibonacci.js -o tmp/fibonacci.const file Generated Correctly
-
3)debug运行
fibonacci exec
:运行main_exec_fibonacci.js
,输入有fibonacci.input.json
,输出为fibonacci.commit
:/usr/local/bin/node --max-old-space-size=32000 test/sm_fibonacci/main_exec_fibonacci.js -i test/sm_fibonacci/fibonacci.input.json -o tmp/fibonacci.commit Result: 74469561660084004 file Generated Correctly
-
4)debug运行
fibonacci PIL verify
:运行node_modules/pilcom/src/main_pilverifier.js
,输入有:- 4.1)
fibonacci.commit
:为基于fibonacci.input.json
运行状态机中main_exec_fibonacci.js
获得的输出。【对pil中的commit多项式赋值】 - 4.2)
fibonacci_main.pil
程序。 - 4.3)
fibonacci.const
:为运行状态机中main_buildconst_fibonacci.js
获得的输出。【对pil中的const多项式赋值】
/usr/local/bin/node --max-old-space-size=32000 node_modules/pilcom/src/main_pilverifier.js tmp/fibonacci.commit -p test/sm_fibonacci/fibonacci_main.pil -c tmp/fibonacci.const loading tmp/fibonacci.const.. 0 of 0.001953125 loading tmp/fibonacci.commit.. 0 of 0.001953125 Preparing public 1/3 calculateExpression: 0 Preparing public 2/3 Preparing public 3/3 Checking identities 1/5 calculateExpression: 1 Checking identities 2/5 calculateExpression: 3 calculateExpression: 2 Checking identities 3/5 calculateExpression: 4 Checking identities 4/5 calculateExpression: 5 Checking identities 5/5 calculateExpression: 6 PIL OK!!
其中,
verifyPil
主要流程为:- a)将pil编译结果中的references各多项式索引信息分组分别存入refCm、refConst和refIm中;
- b)依次将各commit多项式的赋值给pols.cm[i].v_n。将各const多项式的赋值给pols.const[i].v_n。给各public变量赋值,若源自cmP,则为
pols.cm[pil.publics[i].polId].v_n[pil.publics[i].idx]
;若源自imP,则先调用calculateExpression(pil.publics[i].polId)
计算相应的expression值,然后赋值pols.exps[pil.publics[i].polId].v_n[pil.publics[i].idx]
。for (let i=0; i pil-stark@0.0.13 fibonacci_compileverifier > circom --O1 --prime goldilocks --r1cs --sym --wasm --verbose tmp/fibonacci.verifier.circom -o tmp template instances: 29 non-linear constraints: 216090 linear constraints: 115823 public inputs: 3 public outputs: 0 private inputs: 2280 private outputs: 0 wires: 496743 labels: 678212 Written successfully: tmp/fibonacci.verifier.r1cs Written successfully: tmp/fibonacci.verifier.sym Written successfully: tmp/fibonacci.verifier_js/fibonacci.verifier.wasm Everything went okay, circom safe Waiting for the debugger to disconnect...
-
10)debug运行
fibonacci C12 setup
:运作compressor12/main_compressor12_setup.js
,输入为fibonacci.verifier.r1cs
,输出有:- 10.1)
fibonacci.c12.pil
- 10.2)
fibonacci.c12.const
- 10.3)
fibonacci.c12.exec
/usr/local/bin/node --max-old-space-size=32000 src/compressor12/main_compressor12_setup.js -r /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.verifier.r1cs -p /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.pil -c /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.const -e /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.exec undefined: Loading constraints: 0/331913 undefined: Loading constraints: 100000/331913 undefined: Loading constraints: 200000/331913 undefined: Loading constraints: 300000/331913 undefined: Loading custom gate uses: 0/13845 Plonk info constraint processing... 0/339443 Plonk info constraint processing... 10000/339443 Plonk info constraint processing... 20000/339443 Plonk info constraint processing... 30000/339443 Plonk info constraint processing... 40000/339443 Plonk info constraint processing... 50000/339443 Plonk info constraint processing... 60000/339443 Plonk info constraint processing... 70000/339443 Plonk info constraint processing... 80000/339443 Plonk info constraint processing... 90000/339443 Plonk info constraint processing... 100000/339443 Plonk info constraint processing... 110000/339443 Plonk info constraint processing... 120000/339443 Plonk info constraint processing... 130000/339443 Plonk info constraint processing... 140000/339443 Plonk info constraint processing... 150000/339443 Plonk info constraint processing... 160000/339443 Plonk info constraint processing... 170000/339443 Plonk info constraint processing... 180000/339443 Plonk info constraint processing... 190000/339443 Plonk info constraint processing... 200000/339443 Plonk info constraint processing... 210000/339443 Plonk info constraint processing... 220000/339443 Plonk info constraint processing... 230000/339443 Plonk info constraint processing... 240000/339443 Plonk info constraint processing... 250000/339443 Plonk info constraint processing... 260000/339443 Plonk info constraint processing... 270000/339443 Plonk info constraint processing... 280000/339443 Plonk info constraint processing... 290000/339443 Plonk info constraint processing... 300000/339443 Plonk info constraint processing... 310000/339443 Plonk info constraint processing... 320000/339443 Plonk info constraint processing... 330000/339443 ffffffff00000000,0,0,1,0 => 106084 0,ffffffff00000000,1,1,0 => 5913 1,0,0,ffffffff00000000,0 => 3642 0,1,1,ffffffff00000000,0 => 1635 0,ffffffff00000000,0,0,0 => 1517 0,1,ffffffff00000000,1,0 => 1483 0,1,ffffffff00000000,0,0 => 1135 0,1,ffffffff00000000,ffffffff00000000,0 => 766 ffffffff00000000,4a7a08980debbbfc,4a7a08980debbbfc,1,c61bd208ec3c0fa1 => 449 ffffffff00000000,0,4a7a08980debbbfc,1,0 => 449 ffffffff00000000,88b95a9fbc6de52a,88b95a9fbc6de52a,1,75ce679679451a15 => 449 ffffffff00000000,0,88b95a9fbc6de52a,1,0 => 449 ffffffff00000000,4d04f2cd3118664d,4d04f2cd3118664d,1,c3756f9932155297 => 449 ffffffff00000000,0,4d04f2cd3118664d,1,0 => 449 ffffffff00000000,f0989f5a7fcbd82a,f0989f5a7fcbd82a,1,ee347190fb432101 => 449 ffffffff00000000,0,f0989f5a7fcbd82a,1,0 => 449 ffffffff00000000,1ef29998af0b1fef,1ef29998af0b1fef,1,7138c73b09116996 => 449 ffffffff00000000,0,1ef29998af0b1fef,1,0 => 449 ffffffff00000000,7351eb33f82f6410,7351eb33f82f6410,1,18b6d0e3aeec489f => 449 ffffffff00000000,0,7351eb33f82f6410,1,0 => 449 ffffffff00000000,2bc7ac626a09c162,2bc7ac626a09c162,1,71afa5ff39384c97 => 449 ffffffff00000000,0,2bc7ac626a09c162,1,0 => 449 ffffffff00000000,1087e3821ca4b3c4,1087e3821ca4b3c4,1,b500968a50b4639e => 449 ffffffff00000000,0,1087e3821ca4b3c4,1,0 => 449 ffffffff00000000,323b5dc54f3bbbdb,323b5dc54f3bbbdb,1,fddd08812d4e5f9c => 449 ffffffff00000000,0,323b5dc54f3bbbdb,1,0 => 449 ffffffff00000000,d8805df640cc8402,d8805df640cc8402,1,c68b2f87b5ed9227 => 449 ffffffff00000000,0,d8805df640cc8402,1,0 => 449 ffffffff00000000,1e89ac5c625a8760,1e89ac5c625a8760,1,88818136a288ec90 => 449 ffffffff00000000,0,1e89ac5c625a8760,1,0 => 449 ffffffff00000000,3abcfd0cda24d38b,3abcfd0cda24d38b,1,e085319e9b6f3e7a => 449 ffffffff00000000,0,3abcfd0cda24d38b,1,0 => 449 ffffffff00000000,79d787dd08dd3780,79d787dd08dd3780,1,b875ba22cab61421 => 449 ffffffff00000000,0,79d787dd08dd3780,1,0 => 449 ffffffff00000000,a632e574be3e71ac,a632e574be3e71ac,1,57d26c1b01a1d8a => 449 ffffffff00000000,0,a632e574be3e71ac,1,0 => 449 ffffffff00000000,3c46e651b6a23a8d,3c46e651b6a23a8d,1,3b37aa4c7bdbf85b => 449 ffffffff00000000,0,3c46e651b6a23a8d,1,0 => 449 ffffffff00000000,5b7b3b391095f880,5b7b3b391095f880,1,284556ef72cc8092 => 449 ffffffff00000000,0,5b7b3b391095f880,1,0 => 449 ffffffff00000000,cf7442db23abe935,cf7442db23abe935,1,34e12532d49bc4dc => 449 ffffffff00000000,0,cf7442db23abe935,1,0 => 449 ffffffff00000000,91b5bf3d70cf3f65,91b5bf3d70cf3f65,1,26920ca9f36f8dc7 => 449 ffffffff00000000,0,91b5bf3d70cf3f65,1,0 => 449 ffffffff00000000,65d11247f2707307,65d11247f2707307,1,d857a28fb2c421ab => 449 ffffffff00000000,0,65d11247f2707307,1,0 => 449 ffffffff00000000,1c9f391e51b790c9,1c9f391e51b790c9,1,8c74b3f7223aa763 => 449 ffffffff00000000,0,1c9f391e51b790c9,1,0 => 449 ffffffff00000000,2a388e6f4039b806,2a388e6f4039b806,1,9a103489b100a053 => 449 ffffffff00000000,0,2a388e6f4039b806,1,0 => 449 ffffffff00000000,3ca151f7e6fc00f6,3ca151f7e6fc00f6,1,eef35d88a609158 => 449 ffffffff00000000,0,3ca151f7e6fc00f6,1,0 => 449 ffffffff00000000,7b63d9a86963b41a,7b63d9a86963b41a,1,4bba55aa033ecb1a => 449 ffffffff00000000,0,7b63d9a86963b41a,1,0 => 449 ffffffff00000000,3fa8d372f7344454,3fa8d372f7344454,1,eca3e14ceeaeb136 => 449 ffffffff00000000,0,3fa8d372f7344454,1,0 => 449 ffffffff00000000,16059cb4de21ff7f,16059cb4de21ff7f,1,bed7e03755429ce => 449 ffffffff00000000,0,16059cb4de21ff7f,1,0 => 449 ffffffff00000000,a9092b66a659ff4,a9092b66a659ff4,1,fcb9ba16f792d2b7 => 449 ffffffff00000000,0,a9092b66a659ff4,1,0 => 449 ffffffff00000000,828ec16f9c6ee9c,828ec16f9c6ee9c,1,f4e5eac2a11101e8 => 449 ffffffff00000000,0,828ec16f9c6ee9c,1,0 => 449 ffffffff00000000,7d68ecd3cd7da252,7d68ecd3cd7da252,1,e631f0801c4a98b9 => 449 ffffffff00000000,0,7d68ecd3cd7da252,1,0 => 449 ffffffff00000000,5297fa1e1cf4d377,5297fa1e1cf4d377,1,57fb75397922986 => 449 ffffffff00000000,0,5297fa1e1cf4d377,1,0 => 449 ffffffff00000000,53ae26090307aca3,53ae26090307aca3,1,90ba84aaf5e2b8f1 => 449 ffffffff00000000,0,53ae26090307aca3,1,0 => 449 ffffffff00000000,afd52822e73d527a,afd52822e73d527a,1,586ae3c6c944c0b => 449 ffffffff00000000,0,afd52822e73d527a,1,0 => 449 ffffffff00000000,a85eaaf2eef4cfc0,a85eaaf2eef4cfc0,1,ceffc43f9654abbc => 449 ffffffff00000000,0,a85eaaf2eef4cfc0,1,0 => 449 ffffffff00000000,99442cf0931f1a7e,99442cf0931f1a7e,1,f9895cb3b20da4b4 => 449 ffffffff00000000,0,99442cf0931f1a7e,1,0 => 449 ffffffff00000000,f25d540fa7629bb3,f25d540fa7629bb3,1,eb5429158f26a89d => 449 ffffffff00000000,0,f25d540fa7629bb3,1,0 => 449 ffffffff00000000,f9ed8af24eaf2a0,f9ed8af24eaf2a0,1,149a3cd0446e3c87 => 449 ffffffff00000000,0,f9ed8af24eaf2a0,1,0 => 449 ffffffff00000000,d74713c4163d69ce,d74713c4163d69ce,1,c8689c5d0ac80474 => 449 ffffffff00000000,0,d74713c4163d69ce,1,0 => 449 ffffffff00000000,6d58a91881d46bee,6d58a91881d46bee,1,811a3ea0f21d5126 => 449 ffffffff00000000,0,6d58a91881d46bee,1,0 => 449 ffffffff00000000,8f18be1301169a7b,8f18be1301169a7b,1,7c5da2b0db881b7e => 449 ffffffff00000000,0,8f18be1301169a7b,1,0 => 449 ffffffff00000000,fe62a11c507d13e5,fe62a11c507d13e5,1,6230bec05c648678 => 449 ffffffff00000000,0,fe62a11c507d13e5,1,0 => 449 ffffffff00000000,9090d1278db99caf,9090d1278db99caf,1,d574aae62da15a33 => 449 ffffffff00000000,0,9090d1278db99caf,1,0 => 449 ffffffff00000000,830be92f181eb360,830be92f181eb360,1,848d5ca5cc080dfe => 449 ffffffff00000000,0,830be92f181eb360,1,0 => 449 ffffffff00000000,9e20ae83795b9bc8,9e20ae83795b9bc8,1,d7508f949452f707 => 449 ffffffff00000000,0,9e20ae83795b9bc8,1,0 => 449 ffffffff00000000,7a23b663ee28848c,7a23b663ee28848c,1,41713ccda295d50 => 449 ffffffff00000000,0,7a23b663ee28848c,1,0 => 449 ffffffff00000000,b46a64b6463ef8ce,b46a64b6463ef8ce,1,3cdd28d942e7a6c5 => 449 ffffffff00000000,0,b46a64b6463ef8ce,1,0 => 449 ffffffff00000000,1741c1a157fbc1aa,1741c1a157fbc1aa,1,d49067f60471b3ca => 449 ffffffff00000000,0,1741c1a157fbc1aa,1,0 => 449 ffffffff00000000,a3f43e119257968,a3f43e119257968,1,3a2ae8f86f866db5 => 449 ffffffff00000000,0,a3f43e119257968,1,0 => 449 ffffffff00000000,bf4ed33ff6108b42,bf4ed33ff6108b42,1,7f17bb53dd6f1bf7 => 449 ffffffff00000000,0,bf4ed33ff6108b42,1,0 => 449 ffffffff00000000,59c8f6c034d529d0,59c8f6c034d529d0,1,f5198387236dca52 => 449 ffffffff00000000,0,59c8f6c034d529d0,1,0 => 449 ffffffff00000000,c33c076ce7b20bf9,c33c076ce7b20bf9,1,9c767dc4f44e25e6 => 449 ffffffff00000000,0,c33c076ce7b20bf9,1,0 => 449 ffffffff00000000,8ece55b9d9728275,8ece55b9d9728275,1,f3d47e2cc4047246 => 449 ffffffff00000000,0,8ece55b9d9728275,1,0 => 449 ffffffff00000000,6652e553f7ebd7c6,6652e553f7ebd7c6,1,b94ecdd6da4e1492 => 449 ffffffff00000000,0,6652e553f7ebd7c6,1,0 => 449 ffffffff00000000,147b09f625a910b9,147b09f625a910b9,1,b3c8b5917b17a566 => 449 ffffffff00000000,0,147b09f625a910b9,1,0 => 449 ffffffff00000000,8ea632ce3c53ee73,8ea632ce3c53ee73,1,87f3508aa34953b1 => 449 ffffffff00000000,0,8ea632ce3c53ee73,1,0 => 449 ffffffff00000000,2310f8673d49613a,2310f8673d49613a,1,37f56bd3017e8e0b => 449 ffffffff00000000,0,2310f8673d49613a,1,0 => 449 ffffffff00000000,2f89d3427359a8f5,2f89d3427359a8f5,1,873c591232c868b4 => 449 ffffffff00000000,0,2f89d3427359a8f5,1,0 => 449 ffffffff00000000,cf5b97f96cda7c7a,cf5b97f96cda7c7a,1,c387f11c3f3bc078 => 449 ffffffff00000000,0,cf5b97f96cda7c7a,1,0 => 449 ffffffff00000000,ea5e95747cdd2ba9,ea5e95747cdd2ba9,1,14a9dee0c265ab32 => 449 ffffffff00000000,0,ea5e95747cdd2ba9,1,0 => 449 ffffffff00000000,a5c0e44d3ac569bc,a5c0e44d3ac569bc,1,34352e5c2182bffa => 449 ffffffff00000000,0,a5c0e44d3ac569bc,1,0 => 449 ffffffff00000000,88affa66d28b280a,88affa66d28b280a,1,d6df4562ed1103f2 => 449 ffffffff00000000,0,88affa66d28b280a,1,0 => 449 ffffffff00000000,6336a3cd4b3e035,6336a3cd4b3e035,1,79defca543f7451d => 449 ffffffff00000000,0,6336a3cd4b3e035,1,0 => 449 ffffffff00000000,f3b6c9934da17aee,f3b6c9934da17aee,1,ae04f738c32c6592 => 449 ffffffff00000000,0,f3b6c9934da17aee,1,0 => 449 ffffffff00000000,229ee0eeff3e8bbf,229ee0eeff3e8bbf,1,d071730c6e5469fa => 449 ffffffff00000000,0,229ee0eeff3e8bbf,1,0 => 449 ffffffff00000000,fd00788f5a10683d,fd00788f5a10683d,1,bd77aec474c37281 => 449 ffffffff00000000,0,fd00788f5a10683d,1,0 => 449 ffffffff00000000,c2f93741eaeb1d28,c2f93741eaeb1d28,1,c7c9efb5bf14d96 => 449 ffffffff00000000,0,c2f93741eaeb1d28,1,0 => 449 ffffffff00000000,176327aa2a2fe2ce,176327aa2a2fe2ce,1,a3adbd45a0e51f86 => 449 ffffffff00000000,0,176327aa2a2fe2ce,1,0 => 449 ffffffff00000000,131a58e0f301238c,131a58e0f301238c,1,7dd76d457e044b95 => 449 ffffffff00000000,0,131a58e0f301238c,1,0 => 449 ffffffff00000000,6fffb3eb8e476c3c,6fffb3eb8e476c3c,1,bdcd6dfb9d0fb33b => 449 ffffffff00000000,0,6fffb3eb8e476c3c,1,0 => 449 ffffffff00000000,21edd413165c6c99,21edd413165c6c99,1,cc619baac34093c5 => 449 ffffffff00000000,0,21edd413165c6c99,1,0 => 449 ffffffff00000000,b29e1a94ada2dda7,b29e1a94ada2dda7,1,4700e8d31319d68f => 449 ffffffff00000000,0,b29e1a94ada2dda7,1,0 => 449 ffffffff00000000,eb872c9d24406055,eb872c9d24406055,1,2513a2c9380268bd => 449 ffffffff00000000,0,eb872c9d24406055,1,0 => 449 ffffffff00000000,b8a32cdea5c42323,b8a32cdea5c42323,1,602846d4ce6eb6a0 => 449 ffffffff00000000,0,b8a32cdea5c42323,1,0 => 449 ffffffff00000000,e75bdef93ce48179,e75bdef93ce48179,1,af2179964b5ea68e => 449 ffffffff00000000,0,e75bdef93ce48179,1,0 => 449 ffffffff00000000,fdc18bea5099cf99,fdc18bea5099cf99,1,b03801e4f5632daf => 449 ffffffff00000000,0,fdc18bea5099cf99,1,0 => 449 ffffffff00000000,eaeb8ef6ede6982a,eaeb8ef6ede6982a,1,c1bb003281c2c4da => 449 ffffffff00000000,0,eaeb8ef6ede6982a,1,0 => 449 ffffffff00000000,1b5c200d28290108,1b5c200d28290108,1,63963fe4024c4e12 => 449 ffffffff00000000,0,1b5c200d28290108,1,0 => 449 ffffffff00000000,fe572e5977f7a8ca,fe572e5977f7a8ca,1,b85c99621edea1ee => 449 ffffffff00000000,0,fe572e5977f7a8ca,1,0 => 449 ffffffff00000000,ee4b38b0259d4112,ee4b38b0259d4112,1,1387d90e92e5c708 => 449 ffffffff00000000,0,ee4b38b0259d4112,1,0 => 449 ffffffff00000000,1a7833f19658ccbb,1a7833f19658ccbb,1,780eb4774a03351f => 449 ffffffff00000000,0,1a7833f19658ccbb,1,0 => 449 ffffffff00000000,e008cd8ee855d593,e008cd8ee855d593,1,c81b080b62d6609e => 449 ffffffff00000000,0,e008cd8ee855d593,1,0 => 449 ffffffff00000000,a6b1d63adb8c2f96,a6b1d63adb8c2f96,1,cdd2a7b1f9068ba2 => 449 ffffffff00000000,0,a6b1d63adb8c2f96,1,0 => 449 ffffffff00000000,90ce24d7664ed2c,90ce24d7664ed2c,1,9803627abbda779e => 449 ffffffff00000000,0,90ce24d7664ed2c,1,0 => 449 ffffffff00000000,3fd53a1a8ced2c37,3fd53a1a8ced2c37,1,25f48bb1d12cf96d => 449 ffffffff00000000,0,3fd53a1a8ced2c37,1,0 => 449 ffffffff00000000,18fdfe159f348749,18fdfe159f348749,1,eadb3640580ff9c5 => 449 ffffffff00000000,0,18fdfe159f348749,1,0 => 449 ffffffff00000000,906f00c3959a0ef9,906f00c3959a0ef9,1,f208dca724f284ac => 449 ffffffff00000000,0,906f00c3959a0ef9,1,0 => 449 ffffffff00000000,bd8b858cba18057d,bd8b858cba18057d,1,59bc1e23f80e451d => 449 ffffffff00000000,0,bd8b858cba18057d,1,0 => 449 ffffffff00000000,2e0af81ac548b64f,2e0af81ac548b64f,1,e05b7e7a5574f17e => 449 ffffffff00000000,0,2e0af81ac548b64f,1,0 => 449 ffffffff00000000,e3792d990ea8af34,e3792d990ea8af34,1,c1f93cb240c62a80 => 449 ffffffff00000000,0,e3792d990ea8af34,1,0 => 449 ffffffff00000000,c669318b227cd3e5,c669318b227cd3e5,1,c9c2e52cb79d8a03 => 449 ffffffff00000000,0,c669318b227cd3e5,1,0 => 449 ffffffff00000000,718045fc67cddb44,718045fc67cddb44,1,5140cbe776caa63e => 449 ffffffff00000000,0,718045fc67cddb44,1,0 => 449 ffffffff00000000,45f2138dfcdaa22d,45f2138dfcdaa22d,1,a605375c63f9b29b => 449 ffffffff00000000,0,45f2138dfcdaa22d,1,0 => 449 ffffffff00000000,61634286e9d703a6,61634286e9d703a6,1,1e31d83f9b02b400 => 449 ffffffff00000000,0,61634286e9d703a6,1,0 => 449 ffffffff00000000,25179ba56912295c,25179ba56912295c,1,381f86dbdc7b1570 => 449 ffffffff00000000,0,25179ba56912295c,1,0 => 449 ffffffff00000000,2141f7ab4e5e2c89,2141f7ab4e5e2c89,1,ade28607aac4c8b3 => 449 ffffffff00000000,0,2141f7ab4e5e2c89,1,0 => 449 ffffffff00000000,5b6dd62cb2febcbe,5b6dd62cb2febcbe,1,6d6df090b0f7f28c => 449 ffffffff00000000,0,5b6dd62cb2febcbe,1,0 => 449 ffffffff00000000,841a45ff256fa1e5,841a45ff256fa1e5,1,c4c65034b0c58624 => 449 ffffffff00000000,0,841a45ff256fa1e5,1,0 => 449 ffffffff00000000,5c36a1503dbb55d1,5c36a1503dbb55d1,1,2e0bf3e12afb927c => 449 ffffffff00000000,0,5c36a1503dbb55d1,1,0 => 449 ffffffff00000000,fdcf43560b20fabd,fdcf43560b20fabd,1,299b6b8b21a8f90b => 449 ffffffff00000000,0,fdcf43560b20fabd,1,0 => 449 ffffffff00000000,beca3d40401eb73b,beca3d40401eb73b,1,68ec6e0fb071e23b => 449 ffffffff00000000,0,beca3d40401eb73b,1,0 => 449 ffffffff00000000,e9903f32bc75c38f,e9903f32bc75c38f,1,e65a777fabb1fb7 => 449 ffffffff00000000,0,e9903f32bc75c38f,1,0 => 449 ffffffff00000000,c89d4a647517c107,c89d4a647517c107,1,95e9760842338e8c => 449 ffffffff00000000,0,c89d4a647517c107,1,0 => 449 ffffffff00000000,176d75b276eeb8b1,176d75b276eeb8b1,1,99c5a563693eb92c => 449 ffffffff00000000,0,176d75b276eeb8b1,1,0 => 449 ffffffff00000000,d5bbf4ad5b6ba11c,d5bbf4ad5b6ba11c,1,549d995e90e5a918 => 449 ffffffff00000000,0,d5bbf4ad5b6ba11c,1,0 => 449 ffffffff00000000,7f3102d38266007e,7f3102d38266007e,1,cd05ad4d32a887f => 449 ffffffff00000000,0,7f3102d38266007e,1,0 => 449 ffffffff00000000,4467863819e029d7,4467863819e029d7,1,73e617cea734698 => 449 ffffffff00000000,0,4467863819e029d7,1,0 => 449 ffffffff00000000,918370e47bd9afcd,918370e47bd9afcd,1,f8c68091625e5173 => 449 ffffffff00000000,0,918370e47bd9afcd,1,0 => 449 ffffffff00000000,e9b44d20e4412239,e9b44d20e4412239,1,a678b8cb54d0dc1f => 449 ffffffff00000000,0,e9b44d20e4412239,1,0 => 449 ffffffff00000000,c3ed019b2a39ac6,c3ed019b2a39ac6,1,5d9e76ea113ac468 => 449 ffffffff00000000,0,c3ed019b2a39ac6,1,0 => 449 ffffffff00000000,bf4616dc12688e1f,bf4616dc12688e1f,1,81bae26e50afe726 => 449 ffffffff00000000,0,bf4616dc12688e1f,1,0 => 449 ffffffff00000000,aae0a4ef4184e7c1,aae0a4ef4184e7c1,1,9a68a3026f33d89e => 449 ffffffff00000000,0,aae0a4ef4184e7c1,1,0 => 449 ffffffff00000000,dafcd5573b34e7f0,dafcd5573b34e7f0,1,3869b9c560d857a => 449 ffffffff00000000,0,dafcd5573b34e7f0,1,0 => 449 ffffffff00000000,5512cbf7b4e9bcbb,5512cbf7b4e9bcbb,1,2c044589dc37bd07 => 449 ffffffff00000000,0,5512cbf7b4e9bcbb,1,0 => 449 ffffffff00000000,70026943063637e4,70026943063637e4,1,704b8a285661ef76 => 449 ffffffff00000000,0,70026943063637e4,1,0 => 449 ffffffff00000000,8f036e13a6c8f7a5,8f036e13a6c8f7a5,1,40b2e05d2aa456e4 => 449 ffffffff00000000,0,8f036e13a6c8f7a5,1,0 => 449 ffffffff00000000,8086a1d4a06eabc1,8086a1d4a06eabc1,1,70c07dcc64c34324 => 449 ffffffff00000000,0,8086a1d4a06eabc1,1,0 => 449 ffffffff00000000,babc261fab892c36,babc261fab892c36,1,d7f207cc143c06da => 449 ffffffff00000000,0,babc261fab892c36,1,0 => 449 ffffffff00000000,e8d28c0ffb036f4,e8d28c0ffb036f4,1,274afbb35495b542 => 449 ffffffff00000000,0,e8d28c0ffb036f4,1,0 => 449 ffffffff00000000,202e3b004337edc9,202e3b004337edc9,1,2003c4c9174f11d0 => 449 ffffffff00000000,0,202e3b004337edc9,1,0 => 449 ffffffff00000000,4372049c801aa705,4372049c801aa705,1,65385145be4ea9f0 => 449 ffffffff00000000,0,4372049c801aa705,1,0 => 449 0,1,ffffffff00000000,0,2e479dc157bf31bb => 449 0,1,ffffffff00000000,0,6f49de07a6234346 => 449 0,1,ffffffff00000000,0,213ce7bede378d7b => 449 0,1,ffffffff00000000,0,5b0431345d4dea83 => 449 0,1,ffffffff00000000,0,a2de45780344d6a1 => 449 0,1,ffffffff00000000,0,7103aaf94a7bf308 => 449 0,1,ffffffff00000000,0,5326fc0d97279301 => 449 0,1,ffffffff00000000,0,a9ceb74fec024747 => 449 0,1,ffffffff00000000,0,27f8ec88bb21b1a3 => 449 0,1,ffffffff00000000,0,fceb4fda1ded0893 => 449 0,1,ffffffff00000000,0,fac6ff1346a41675 => 449 0,1,ffffffff00000000,0,9351036095630f9f => 449 0,1,ffffffff00000000,0,ad535b24afc26bfb => 449 0,1,ffffffff00000000,0,4627f5c6993e44be => 449 0,1,ffffffff00000000,0,645cf794b8f1cc58 => 449 0,1,ffffffff00000000,0,241c70ed0af61617 => 449 0,1,ffffffff00000000,0,acb8e076647905f1 => 449 0,1,ffffffff00000000,0,3737e9db4c4f474d => 449 0,1,ffffffff00000000,0,e7ea5e33e75fffb6 => 449 0,1,ffffffff00000000,0,90dee49fc9bfc23a => 449 0,1,ffffffff00000000,0,d1b1edf76bc09c92 => 449 0,1,ffffffff00000000,0,b65481ba645c602 => 449 0,1,ffffffff00000000,0,438a7c91d416ca4d => 449 0,1,ffffffff00000000,0,b60de3bcc5ea751c => 449 0,1,ffffffff00000000,0,c99cab6aef6f58bc => 449 0,1,ffffffff00000000,0,69a5ed92a72ee4ff => 449 0,1,ffffffff00000000,0,5e7b329c1ed4ad71 => 449 0,1,ffffffff00000000,0,5fc0ac0800144885 => 449 0,1,ffffffff00000000,0,32db829239774eca => 449 0,1,ffffffff00000000,0,ade699c5830f310 => 449 0,1,ffffffff00000000,0,7cc5583b10415f21 => 449 0,1,ffffffff00000000,0,85df9ed2e166d64f => 449 0,1,ffffffff00000000,0,6604df4fee32bcb1 => 449 0,1,ffffffff00000000,0,da608834c40e603d => 449 0,1,ffffffff00000000,0,8f97fe408061f183 => 449 0,1,ffffffff00000000,0,a93f485c96f37b89 => 449 0,1,ffffffff00000000,0,6704e8ee8f18d563 => 449 0,1,ffffffff00000000,0,cee3e9ac1e072119 => 449 0,1,ffffffff00000000,0,510d0e65e2b470c1 => 449 0,1,ffffffff00000000,0,f6323f486b9038f0 => 449 0,1,ffffffff00000000,0,b508cdeffa5ceef => 449 0,1,ffffffff00000000,0,f2417089e4fb3cbd => 449 0,1,ffffffff00000000,0,60e75c2890d15730 => 449 0,1,ffffffff00000000,0,a6217d8bf660f29c => 449 0,1,ffffffff00000000,0,839b4e8fafead540 => 449 0,1,ffffffff00000000,0,d3f3e5e82920adc => 449 0,1,ffffffff00000000,0,8f7d83bddee7bba8 => 449 0,1,ffffffff00000000,0,780f2243ea071d06 => 449 0,1,ffffffff00000000,0,eb915845f3de1634 => 449 0,1,ffffffff00000000,0,d19e120d26b6f386 => 449 0,1,ffffffff00000000,0,16ee53a7e5fecc6 => 449 0,1,ffffffff00000000,0,cb5fd54e7933e477 => 449 0,1,ffffffff00000000,0,acb8417879fd449f => 449 0,1,ffffffff00000000,0,9c22190be7f74732 => 449 0,1,ffffffff00000000,0,5d693c1ba3ba3621 => 449 0,1,ffffffff00000000,0,3d639263da827b13 => 449 0,1,ffffffff00000000,0,e273fd971bc8d0e7 => 449 0,1,ffffffff00000000,0,418f02702d227ed5 => 449 0,1,ffffffff00000000,0,8c25fda3b503038c => 449 0,1,ffffffff00000000,0,2cbaed4daec8c07c => 449 0,1,ffffffff00000000,0,5f58e6afcdd6ddc2 => 449 0,1,ffffffff00000000,0,284650ac5e1b0eba => 449 0,1,ffffffff00000000,0,635b337ee819dab5 => 449 0,1,ffffffff00000000,0,9f9a036ed4f2d49f => 449 0,1,ffffffff00000000,0,b93e260cae5c170e => 449 0,1,ffffffff00000000,0,b0a7eae879ddb76d => 449 0,1,ffffffff00000000,0,34c6efb812b04bf5 => 449 0,1,ffffffff00000000,0,40bf0ab5fa14c112 => 449 0,1,ffffffff00000000,0,b6b570fc7c5740d3 => 449 0,1,ffffffff00000000,0,5a27b9002de33454 => 449 0,1,ffffffff00000000,0,b1a5b165b6d2b2d2 => 449 0,1,ffffffff00000000,0,8722e0ace9d1be22 => 449 0,1,ffffffff00000000,0,788ee3b37e5680fb => 449 0,1,ffffffff00000000,0,14a726661551e284 => 449 0,1,ffffffff00000000,0,98b7672f9ef3b419 => 449 0,1,ffffffff00000000,0,bb93ae776bb30e3a => 449 0,1,ffffffff00000000,0,28fd3b046380f850 => 449 0,1,ffffffff00000000,0,337dc00c61bd9ce1 => 449 0,1,ffffffff00000000,0,d5eca244c7a4ff1d => 449 0,1,ffffffff00000000,0,7762638264d279bd => 449 0,1,ffffffff00000000,0,c1e434bedeefd767 => 449 0,1,ffffffff00000000,0,299351a53b8ec22 => 449 0,1,ffffffff00000000,0,b2d456e4ad251b80 => 449 0,1,ffffffff00000000,0,3e9ed1fda49cea0b => 449 0,1,ffffffff00000000,0,2972a92ba450bed8 => 449 0,1,ffffffff00000000,0,20216dd77be493de => 449 0,1,ffffffff00000000,0,adffe8cf28449ec6 => 449 0,1,ffffffff00000000,0,1c4dbb1c4c27d243 => 449 0,1,ffffffff00000000,0,388a128b7fd9a609 => 449 0,1,ffffffff00000000,0,2300e5d6baedf0fb => 449 0,1,ffffffff00000000,0,2f63aa8647e15104 => 449 0,1,ffffffff00000000,0,f1c36ce86ecec269 => 449 0,1,ffffffff00000000,0,27181125183970c9 => 449 0,1,ffffffff00000000,0,e584029370dca96d => 449 0,1,ffffffff00000000,0,4d9bbc3e02f1cfb2 => 449 0,1,ffffffff00000000,0,ea35bc29692af6f8 => 449 0,1,ffffffff00000000,0,18e21b4beabb4137 => 449 0,1,ffffffff00000000,0,1e3b9fc625b554f4 => 449 0,1,ffffffff00000000,0,25d64362697828fd => 449 0,1,ffffffff00000000,0,db7f023869fb8d38 => 449 0,1,ffffffff00000000,0,b462065911d4e1fc => 449 0,1,ffffffff00000000,0,49c24ae4437d8030 => 449 0,1,ffffffff00000000,0,d793862c112b0566 => 449 0,1,ffffffff00000000,0,aadd1106730d8feb => 449 0,1,ffffffff00000000,0,c43b6e0e97b0d568 => 449 0,1,ffffffff00000000,0,e29024c18ee6fca2 => 449 0,1,ffffffff00000000,0,5e50c27535b88c66 => 449 0,1,ffffffff00000000,0,10383f20a4ff9a87 => 449 0,1,ffffffff00000000,0,38e8ee9d71a45af8 => 449 0,1,ffffffff00000000,0,dd5118375bf1a9b9 => 449 0,1,ffffffff00000000,0,86ab99b4dde6c8b0 => 449 0,1,ffffffff00000000,0,b1204f603f51c080 => 449 0,1,ffffffff00000000,0,ef61ac8470250ecf => 449 0,1,ffffffff00000000,0,1bbcd90f132c603f => 449 0,1,ffffffff00000000,0,cd1dabd964db557 => 449 0,1,ffffffff00000000,0,11a3ae5beb9d1ec9 => 449 0,1,ffffffff00000000,0,f755bfeea585d11d => 449 0,1,ffffffff00000000,0,a3b83250268ea4d7 => 449 0,1,ffffffff00000000,0,516306f4927c93af => 449 0,1,ffffffff00000000,0,ddb4ac49c9efa1da => 449 0,1,ffffffff00000000,0,64bb6dec369d4418 => 449 0,1,ffffffff00000000,0,8d37f755f4ae9f6 => 449 0,1,ffffffff00000000,0,eec49b613478675b => 449 0,1,ffffffff00000000,0,f143933aed25e0b0 => 449 0,1,ffffffff00000000,0,e4c5dd8255dfc622 => 449 0,1,ffffffff00000000,0,e7ad7756f193198e => 449 0,1,ffffffff00000000,0,92c2318b87fff9cb => 449 0,1,ffffffff00000000,0,739c25f8fd73596d => 449 0,1,ffffffff00000000,0,5636cac9f16dfed0 => 449 0,1,ffffffff00000000,0,dd8f909a938e0172 => 449 0,1,ffffffff00000000,0,c6401fe115063f5b => 449 0,1,ffffffff00000000,0,8ad97b33f1ac1455 => 449 0,1,ffffffff00000000,0,784d3d2f1698309 => 449 0,1,ffffffff00000000,0,530fb67ea1809a81 => 449 0,1,ffffffff00000000,0,410492299bb01f49 => 449 0,1,ffffffff00000000,0,139542347424b9ac => 449 0,1,ffffffff00000000,0,9cb0bd5ea1a1115e => 449 0,1,ffffffff00000000,0,2e3f615c38f49a1 => 449 0,1,ffffffff00000000,0,985d4f4a9c5291ef => 449 0,1,ffffffff00000000,0,775b9feafdcd26e7 => 449 0,1,ffffffff00000000,0,304265a6384f0f2d => 449 0,1,ffffffff00000000,0,593664c39773012c => 449 0,1,ffffffff00000000,0,4f0a2e5fb028f2ce => 449 0,1,ffffffff00000000,0,d8185f9adfea4fd0 => 449 0,1,ffffffff00000000,0,ef87139ca9a3ab1e => 449 0,1,ffffffff00000000,0,3ba71336c34ee133 => 449 0,1,ffffffff00000000,0,7d3a455d56b70238 => 449 0,1,ffffffff00000000,0,660d32e130182684 => 449 0,1,ffffffff00000000,0,297a863f48cd1f43 => 449 0,1,ffffffff00000000,0,90e0a736a751ebb7 => 449 0,1,ffffffff00000000,0,549f80ce550c4fd3 => 449 0,1,ffffffff00000000,0,f73b2922f38bd64 => 449 0,1,ffffffff00000000,0,16bf1f73fb7a9c3f => 449 0,1,ffffffff00000000,0,6d1f5a59005bec17 => 449 0,1,ffffffff00000000,0,c5cb72a2a51159b0 => 449 0,1,ffffffff00000000,0,8470f39d2d5c900e => 449 0,1,ffffffff00000000,0,25abb3f1d39fcb76 => 449 0,1,ffffffff00000000,0,23eb8cc9b372442f => 449 0,1,ffffffff00000000,0,d687ba55c64f6364 => 449 0,1,ffffffff00000000,0,da8d9e90fd8ff158 => 449 0,1,ffffffff00000000,0,e3cbdc7d2fe45ea7 => 449 0,1,ffffffff00000000,0,b9a8c9b3aee52297 => 449 0,1,ffffffff00000000,0,c0d28a5c10960bd3 => 449 0,1,ffffffff00000000,0,45d7ac9b68f71a34 => 449 0,1,ffffffff00000000,0,eeb76e397069e804 => 449 0,1,ffffffff00000000,0,9c9c98207cb10767 => 449 0,1,ffffffff00000000,0,65700b51aedfb5ef => 449 0,1,ffffffff00000000,0,911f451539869408 => 449 0,1,ffffffff00000000,0,7ae6849fbc3a0ec6 => 449 0,1,ffffffff00000000,0,3bb340eba06afe7e => 449 0,1,ffffffff00000000,0,b46e9d8b682ea65e => 449 0,1,ffffffff00000000,0,8dcf22f9a3b34356 => 449 0,1,ffffffff00000000,0,77bdaeda586257a7 => 449 0,1,ffffffff00000000,0,f19e400a5104d20d => 449 0,1,ffffffff00000000,0,c368a348e46d950f => 449 0,1,ffffffff00000000,0,9ef1cd60e679f284 => 449 0,1,ffffffff00000000,0,5cd377dc8bb882a2 => 449 0,1,ffffffff00000000,0,a7b0fb7883eee860 => 449 0,1,ffffffff00000000,0,7684403ec392950d => 449 0,1,ffffffff00000000,0,5fa3f06f4fed3b52 => 449 0,1,ffffffff00000000,0,8df57ac11bc04831 => 449 0,1,ffffffff00000000,0,2db01efa1e1e1897 => 449 0,1,ffffffff00000000,0,54846de4aadb9ca2 => 449 0,1,ffffffff00000000,0,ba6745385893c784 => 449 0,1,ffffffff00000000,0,541d496344d2c75b => 449 0,1,ffffffff00000000,0,e909678474e687fe => 449 0,1,ffffffff00000000,0,dfe89923f6c9c2ff => 449 0,1,ffffffff00000000,0,5ff98fd5d51fe610 => 449 0,1,ffffffff00000000,0,83e8941918964615 => 449 0,1,ffffffff00000000,0,5922040b47f150c1 => 449 0,1,ffffffff00000000,0,f97d750e3dd94521 => 449 0,1,ffffffff00000000,0,5080d4c2b86f56d7 => 449 0,1,ffffffff00000000,0,a7de115b56c78d70 => 449 0,1,ffffffff00000000,0,6a9242ac87538194 => 449 0,1,ffffffff00000000,0,f7856ef7f9173e44 => 449 0,1,ffffffff00000000,0,2265fc92feb0dc09 => 449 0,1,ffffffff00000000,0,17dfc8e4f7ba8a57 => 449 0,1,ffffffff00000000,0,9001a64209f21db8 => 449 0,1,ffffffff00000000,0,b932b7cf752e5545 => 449 0,1,ffffffff00000000,0,a0b1df81b6fe59fc => 449 0,1,ffffffff00000000,0,8ef1dd26770af2c2 => 449 0,1,ffffffff00000000,0,541a4f9cfbeed35 => 449 0,1,ffffffff00000000,0,9e61106178bfc530 => 449 0,1,ffffffff00000000,0,b3767e80935d8af2 => 449 0,1,ffffffff00000000,0,98d5782065af06 => 449 0,1,ffffffff00000000,0,31d191cd5c1466c7 => 449 0,1,ffffffff00000000,0,410fefafa319ac9d => 449 0,1,ffffffff00000000,0,bdf8f242e316c4ab => 449 0,1,ffffffff00000000,0,9e8cd55b57637ed0 => 449 0,1,ffffffff00000000,0,4d001fd58f002526 => 449 0,1,ffffffff00000000,0,ca6637000eb4a9f8 => 449 0,1,ffffffff00000000,0,2f2339d624f91f78 => 449 0,1,ffffffff00000000,0,6d1a7918c80df518 => 449 0,1,ffffffff00000000,0,df9a4939342308e9 => 449 0,1,ffffffff00000000,0,ebc2151ee6c8398c => 449 0,1,ffffffff00000000,0,3cc2ba8a1116515 => 449 0,1,ffffffff00000000,0,d341d037e840cf83 => 449 0,1,ffffffff00000000,0,387cb5d25af4afcc => 449 0,1,ffffffff00000000,0,bba2515f22909e87 => 449 0,1,ffffffff00000000,0,7248fe7705f38e47 => 449 0,1,ffffffff00000000,0,262e963c8da05d3d => 449 0,1,ffffffff00000000,0,59e89b094d220ec2 => 449 0,1,ffffffff00000000,0,55d5b52b78b9c5e => 449 0,1,ffffffff00000000,0,82b27eb33514ef99 => 449 0,1,ffffffff00000000,0,d30094ca96b7ce7b => 449 0,1,ffffffff00000000,0,cf5cb381cd0a1535 => 449 0,1,ffffffff00000000,0,feed4db6919e5a7c => 449 0,1,ffffffff00000000,0,41703f53753be59f => 449 0,1,ffffffff00000000,0,5eeea940fcde8b6f => 449 0,1,ffffffff00000000,0,4cd1f1b175100206 => 449 0,1,ffffffff00000000,0,4a20358574454ec0 => 449 0,1,ffffffff00000000,0,6f02dc07d141875c => 449 0,1,ffffffff00000000,0,296a202ed8e556a2 => 449 0,1,ffffffff00000000,0,2afd67999bf32ee5 => 449 0,1,ffffffff00000000,0,7acfd96efa95491d => 449 0,1,ffffffff00000000,0,6798ba0c0abb2c6d => 449 0,1,ffffffff00000000,0,34c6f57b26c92122 => 449 0,1,ffffffff00000000,0,5736e1bad206b5de => 449 0,1,ffffffff00000000,0,20057d2a0056521b => 449 0,1,ffffffff00000000,0,3dea5bd5d0578bd7 => 449 0,1,ffffffff00000000,0,16e50d897d4634ac => 449 0,1,ffffffff00000000,0,29bff3ecb9b7a6e3 => 449 0,1,1000000000000,ffffffff00000000,0 => 294 0,1,fffeffff00000001,ffffffff00000000,0 => 294 1,0,ffffffff00000000,0,0 => 194 0,ffffffff00000000,ffffffff00000000,0,0 => 132 0,1,fffffffeff000001,ffffffff00000000,0 => 96 0,1,1000000,ffffffff00000000,0 => 96 0,1,fffffeff00000101,ffffffff00000000,0 => 96 0,1,ffffffff00,ffffffff00000000,0 => 96 0,ffffffff00000000,ffffffff00000000,1,0 => 88 0,ffffffff00000000,efffffff10000001,efffffff10000001,0 => 48 0,ffffffff00000000,efffffff10000001,ffffffff0000000,0 => 48 0,ffffffff00000000,efffffff10000001,feffffff00000001,0 => 48 0,ffffffff00000000,efffffff10000001,100000000000000,0 => 48 0,ffffffff00000000,efffffff10000001,fffffffefff00001,0 => 48 0,ffffffff00000000,efffffff10000001,100000,0 => 48 0,ffffffff00000000,efffffff10000001,ffffffff0000,0 => 48 0,ffffffff00000000,efffffff10000001,fffeffff00010001,0 => 48 0,ffffffff00000000,efffffff10000001,100000000000,0 => 48 0,ffffffff00000000,efffffff10000001,ffffefff00000001,0 => 48 0,ffffffff00000000,efffffff10000001,100,0 => 48 0,ffffffff00000000,efffffff10000001,fffffffeffffff01,0 => 48 0,ffffffff00000000,efffffff10000001,ffffffef00000011,0 => 48 0,ffffffff00000000,efffffff10000001,ffffffff0,0 => 48 0,ffffffff00000000,efffffff10000001,fffffffe00000001,0 => 48 0,ffffffff00000000,efffffff10000001,100000000,0 => 48 0,ffffffff00000000,1,ffffffff00000000,0 => 27 200000000000001,0,ffffffff00000000,1,0 => 16 40001,0,ffffffff00000000,1,0 => 16 0,ffffffff00000000,0,0,1 => 16 0,6270d5277401268f,ffffffff00000000,0,0 => 16 c465162d27278a79,0,ffffffff00000000,1,0 => 8 c21e639730b6958e,0,ffffffff00000000,1,0 => 8 e29d1cef5b5b1152,0,ffffffff00000000,1,0 => 8 ffffffffffff1,0,ffffffff00000000,1,0 => 8 6270d52774012690,0,ffffffff00000000,1,0 => 8 e6fa2fd4a3bee0b4,0,ffffffff00000000,1,0 => 8 4086ebc219f3569c,0,ffffffff00000000,1,0 => 8 7fff7fff8000001,0,ffffffff00000000,1,0 => 8 ffffff7f00000002,0,ffffffff00000000,1,0 => 8 ffffbfff00004002,0,ffffffff00000000,1,0 => 8 1000000000000001,0,ffffffff00000000,1,0 => 8 1000001,0,ffffffff00000000,1,0 => 8 fffeffff00000002,0,ffffffff00000000,1,0 => 8 2,0,ffffffff00000000,1,0 => 8 0,ffffffff00000000,0,0,70088f165d151802 => 8 0,ffffffff00000000,0,0,551136b191446c3d => 8 0,ffffffff00000000,0,0,de288a3c6592ec51 => 8 0,ffffffff00000000,0,0,27bb7c3dbd05d4b3 => 8 0,ce2d24dacdd9a6a3,ffffffff00000000,0,4e5e0a72a1f58d10 => 8 0,ecab727d25ca7a5d,ffffffff00000000,0,1c909840d79503bc => 8 0,36058c86abf76f6d,ffffffff00000000,0,31 => 8 0,6270d5277401268f,1,ffffffff00000000,0 => 8 0,1,2,1,0 => 4 0,4,8,1,0 => 4 0,10,20,1,0 => 4 0,40,80,1,0 => 4 0,100,200,1,0 => 4 0,400,800,1,0 => 4 0,1000,2000,1,0 => 4 0,4000,8000,1,0 => 4 0,10000,20000,1,0 => 4 0,40000,80000,1,0 => 4 0,100000,200000,1,0 => 4 0,400000,800000,1,0 => 4 0,1,1,1,0 => 4 0,ffffffff00000000,dfffffff20000001,dfffffff20000001,0 => 3 0,ffffffff00000000,dfffffff20000001,1fffffffe0000000,0 => 3 0,ffffffff00000000,dfffffff20000001,fffffffeffe00001,0 => 3 0,ffffffff00000000,dfffffff20000001,200000,0 => 3 0,ffffffff00000000,dfffffff20000001,200000000000,0 => 3 0,ffffffff00000000,dfffffff20000001,ffffdfff00000001,0 => 3 0,ffffffff00000000,dfffffff20000001,ffffffdf00000021,0 => 3 0,ffffffff00000000,dfffffff20000001,1fffffffe0,0 => 3 0,1000000,2000000,1,0 => 3 0,4000000,8000000,1,0 => 3 0,10000000,20000000,1,0 => 3 0,40000000,80000000,1,0 => 3 0,fffffffeffffffff,fffffffeffffffff,1,0 => 2 2,0,0,ffffffff00000000,0 => 2 0,fffffffefffffffd,fffffffefffffffd,1,0 => 2 4,0,0,ffffffff00000000,0 => 2 0,fffffffefffffff9,fffffffefffffff9,1,0 => 2 8,0,0,ffffffff00000000,0 => 2 0,fffffffefffffff1,fffffffefffffff1,1,0 => 2 10,0,0,ffffffff00000000,0 => 2 0,fffffffeffffffe1,fffffffeffffffe1,1,0 => 2 20,0,0,ffffffff00000000,0 => 2 0,fffffffeffffffc1,fffffffeffffffc1,1,0 => 2 40,0,0,ffffffff00000000,0 => 2 0,fffffffeffffff81,fffffffeffffff81,1,0 => 2 80,0,0,ffffffff00000000,0 => 2 0,fffffffeffffff01,fffffffeffffff01,1,0 => 2 100,0,0,ffffffff00000000,0 => 2 0,fffffffefffffe01,fffffffefffffe01,1,0 => 2 200,0,0,ffffffff00000000,0 => 2 0,fffffffefffffc01,fffffffefffffc01,1,0 => 2 400,0,0,ffffffff00000000,0 => 2 0,fffffffefffff801,fffffffefffff801,1,0 => 2 800,0,0,ffffffff00000000,0 => 2 0,fffffffefffff001,fffffffefffff001,1,0 => 2 1000,0,0,ffffffff00000000,0 => 2 0,fffffffeffffe001,fffffffeffffe001,1,0 => 2 2000,0,0,ffffffff00000000,0 => 2 0,fffffffeffffc001,fffffffeffffc001,1,0 => 2 4000,0,0,ffffffff00000000,0 => 2 0,fffffffeffff8001,fffffffeffff8001,1,0 => 2 8000,0,0,ffffffff00000000,0 => 2 fffffffeffff0001,0,0,1,10000 => 2 fffffffefffe0001,0,0,1,20000 => 2 fffffffefffc0001,0,0,1,40000 => 2 fffffffefff80001,0,0,1,80000 => 2 fffffffefff00001,0,0,1,100000 => 2 fffffffeffe00001,0,0,1,200000 => 2 fffffffeffc00001,0,0,1,400000 => 2 fffffffeff800001,0,0,1,800000 => 2 fffffffeff000001,0,0,1,1000000 => 2 fffffffefe000001,0,0,1,2000000 => 2 fffffffefc000001,0,0,1,4000000 => 2 fffffffef8000001,0,0,1,8000000 => 2 fffffffef0000001,0,0,1,10000000 => 2 fffffffee0000001,0,0,1,20000000 => 2 fffffffec0000001,0,0,1,40000000 => 2 fffffffe80000001,0,0,1,80000000 => 2 0,1,ffffffff00000000,0,ffffffff => 2 0,100000000,ffffffff00000000,1,0 => 2 0,8000000000000000,ffffffff00000000,1,0 => 2 0,ffffffff00000000,ffffffff00000000,0,1 => 2 0,100000000,200000000,1,0 => 1 0,400000000,800000000,1,0 => 1 0,1000000000,2000000000,1,0 => 1 0,4000000000,8000000000,1,0 => 1 0,10000000000,20000000000,1,0 => 1 0,40000000000,80000000000,1,0 => 1 0,100000000000,200000000000,1,0 => 1 0,400000000000,800000000000,1,0 => 1 0,1000000000000,2000000000000,1,0 => 1 0,4000000000000,8000000000000,1,0 => 1 0,10000000000000,20000000000000,1,0 => 1 0,40000000000000,80000000000000,1,0 => 1 0,100000000000000,200000000000000,1,0 => 1 0,400000000000000,800000000000000,1,0 => 1 0,1000000000000000,2000000000000000,1,0 => 1 0,4000000000000000,ffffffff00000000,1,0 => 1 0,1000000,ffffffff00000000,1,0 => 1 0,2000000,4000000,1,0 => 1 0,8000000,10000000,1,0 => 1 0,20000000,40000000,1,0 => 1 0,80000000,100000000,1,0 => 1 0,200000000,400000000,1,0 => 1 0,800000000,1000000000,1,0 => 1 0,2000000000,4000000000,1,0 => 1 0,8000000000,10000000000,1,0 => 1 0,20000000000,40000000000,1,0 => 1 0,80000000000,100000000000,1,0 => 1 0,200000000000,400000000000,1,0 => 1 0,800000000000,1000000000000,1,0 => 1 0,2000000000000,4000000000000,1,0 => 1 0,8000000000000,10000000000000,1,0 => 1 0,20000000000000,40000000000000,1,0 => 1 0,80000000000000,100000000000000,1,0 => 1 0,200000000000000,400000000000000,1,0 => 1 0,800000000000000,1000000000000000,1,0 => 1 0,2000000000000000,4000000000000000,1,0 => 1 0,ffffffff00000000,1,0,ffffffff00000000 => 1 nConstraints: 331913 PLONK nConstraints: 339443 plonkAdditions: 7530 Processing constraint... 0/339443 Processing constraint... 10000/339443 Processing constraint... 20000/339443 Processing constraint... 30000/339443 Processing constraint... 40000/339443 Processing constraint... 50000/339443 Processing constraint... 60000/339443 Processing constraint... 70000/339443 Processing constraint... 80000/339443 Processing constraint... 90000/339443 Processing constraint... 100000/339443 Processing constraint... 110000/339443 Processing constraint... 120000/339443 Processing constraint... 130000/339443 Processing constraint... 140000/339443 Processing constraint... 150000/339443 Processing constraint... 160000/339443 Processing constraint... 170000/339443 Processing constraint... 180000/339443 Processing constraint... 190000/339443 Processing constraint... 200000/339443 Processing constraint... 210000/339443 Processing constraint... 220000/339443 Processing constraint... 230000/339443 Processing constraint... 240000/339443 Processing constraint... 250000/339443 Processing constraint... 260000/339443 Processing constraint... 270000/339443 Processing constraint... 280000/339443 Processing constraint... 290000/339443 Processing constraint... 300000/339443 Processing constraint... 310000/339443 Processing constraint... 320000/339443 Processing constraint... 330000/339443 Processing custom gates... 0/13845 Processing custom gates... 10000/13845 Preparing S... 0/131072 Preparing S... 10000/131072 Preparing S... 20000/131072 Preparing S... 30000/131072 Preparing S... 40000/131072 Preparing S... 50000/131072 Preparing S... 60000/131072 Preparing S... 70000/131072 Preparing S... 80000/131072 Preparing S... 90000/131072 Preparing S... 100000/131072 Preparing S... 110000/131072 Preparing S... 120000/131072 Preparing S... 130000/131072 Connection S... 0/112596 Connection S... 10000/112596 Connection S... 20000/112596 Connection S... 30000/112596 Connection S... 40000/112596 Connection S... 50000/112596 Connection S... 60000/112596 Connection S... 70000/112596 Connection S... 80000/112596 Connection S... 90000/112596 Connection S... 100000/112596 Connection S... 110000/112596 files Generated Correctly
- 10.1)
-
11)debug运行
fibonacci C12 genStarkinfo
:运行main_genstarkinfo.js
,输入为fibonacci.c12.pil
和状态机内的fibonacci.c12.starkstruct.json
,输出为fibonacci.c12.starkinfo.json
。/usr/local/bin/node --max-old-space-size=32000 ./src/main_genstarkinfo.js -p tmp/fibonacci.c12.pil -s /Users/lanyu/zyd/0xPolygonHermez/pil-stark/test/sm_fibonacci/fibonacci.c12.starkstruct.json -i tmp/fibonacci.c12.starkinfo.json files Generated Correctly
-
12)debug运行
fibonacci C12 exec
:/usr/local/bin/node --max-old-space-size=32000 src/compressor12/main_compressor12_exec.js -i /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.proof.zkin.json -w /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.verifier_js/fibonacci.verifier.wasm -p /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.pil -e /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.exec -m /Users/lanyu/zyd/0xPolygonHermez/pil-stark/tmp/fibonacci.c12.commit WebAssembly.instantiate(): Import #1 module="runtime" function="printErrorMessage" error: function import requires a callable LinkError: WebAssembly.instantiate(): Import #1 module="runtime" function="printErrorMessage" error: function import requires a callable at builder (/Users/lanyu/zyd/0xPolygonHermez/pil-stark/node_modules/circom_runtime/build/main.cjs:100:40) at async run (/Users/lanyu/zyd/0xPolygonHermez/pil-stark/src/compressor12/main_compressor12_exec.js:46:16) Process exited with code 1
解决方案为:在WebAssembly.instantiate()的runtime模块中添加printErrorMessage和writeBufferMessage伪函数实现:【不推荐,等待官方更新】
const instance = await WebAssembly.instantiate(wasmModule, { env: { "memory": memory }, runtime: { exceptionHandler: function(code) { let errStr; if (code == 1) { errStr = "Signal not found. "; } else if (code == 2) { errStr = "Too many signals set. "; } else if (code == 3) { errStr = "Signal already set. "; } else if (code == 4) { errStr = "Assert Failed. "; } else if (code == 5) { errStr = "Not enough memory. "; } else if (code == 6) { errStr = "Input signal array access exceeds the size"; } else { errStr = "Unknown error."; } console.log("ERROR: ", code, errStr); throw new Error(errStr); }, showSharedRWMemory: function() { const shared_rw_memory_size = instance.exports.getFieldNumLen32(); const arr = new Uint32Array(shared_rw_memory_size); for (let j=0; j
关注打赏
- 4.1)
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?