aboutsummaryrefslogtreecommitdiff
path: root/test/functional
diff options
context:
space:
mode:
authorRoss Nicoll <[email protected]>2021-03-03 21:22:15 +0000
committerRoss Nicoll <[email protected]>2021-05-20 12:02:35 +0100
commit3f8289a113ad2fb629c787528c809aa7d5b91610 (patch)
tree073b9f822df735b78b18cc1de6b40991f568f07d /test/functional
parentUpdate miner confirmation window (diff)
downloaddiscoin-3f8289a113ad2fb629c787528c809aa7d5b91610.tar.xz
discoin-3f8289a113ad2fb629c787528c809aa7d5b91610.zip
Dogecoin: Update coinbase maturity
* Change coinbase maturity to 240 blocks in most cases, with main/test early chains allowing 30 blocks. I've kept the 240 consistent in regtest to avoid having to redesign a lot of the test cases. * Disabled mining unit test which require COINBASE_MATURITY worth of pre-calculated blocks, as we'd otherwise be constantly refactoring them. * Moved functional test which uses the Bitcoin testnet block data as its reference, as it completely breaks as we introduce Dogecoin data. * Updated standard blockchains for tests from 100/200 to 240/480 as appropriate.
Diffstat (limited to 'test/functional')
-rw-r--r--test/functional/data/rpc_getblockstats.json240
-rwxr-xr-xtest/functional/feature_assumevalid.py20
-rwxr-xr-xtest/functional/feature_bip68_sequence.py6
-rwxr-xr-xtest/functional/feature_block.py12
-rwxr-xr-xtest/functional/feature_csv_activation.py4
-rwxr-xr-xtest/functional/feature_maxuploadtarget.py2
-rwxr-xr-xtest/functional/feature_notifications.py2
-rwxr-xr-xtest/functional/feature_rbf.py2
-rw-r--r--test/functional/feature_segwit.py34
-rwxr-xr-xtest/functional/feature_taproot.py2
-rwxr-xr-xtest/functional/interface_bitcoin_cli.py10
-rwxr-xr-xtest/functional/interface_rest.py4
-rwxr-xr-xtest/functional/mempool_accept.py4
-rwxr-xr-xtest/functional/mempool_reorg.py4
-rwxr-xr-xtest/functional/mempool_spend_coinbase.py2
-rwxr-xr-xtest/functional/mining_getblocktemplate_longpoll.py2
-rwxr-xr-xtest/functional/p2p_compactblocks.py6
-rwxr-xr-xtest/functional/p2p_eviction.py2
-rwxr-xr-xtest/functional/p2p_feefilter.py2
-rwxr-xr-xtest/functional/p2p_invalid_block.py2
-rwxr-xr-xtest/functional/p2p_invalid_tx.py2
-rwxr-xr-xtest/functional/p2p_leak.py2
-rwxr-xr-xtest/functional/p2p_leak_tx.py2
-rwxr-xr-xtest/functional/p2p_permissions.py2
-rwxr-xr-xtest/functional/p2p_segwit.py6
-rwxr-xr-xtest/functional/rpc_blockchain.py4
-rwxr-xr-xtest/functional/rpc_createmultisig.py14
-rwxr-xr-xtest/functional/rpc_deprecated.py3
-rwxr-xr-xtest/functional/rpc_fundrawtransaction.py2
-rwxr-xr-xtest/functional/rpc_getblockstats.py4
-rwxr-xr-xtest/functional/rpc_getchaintips.py6
-rwxr-xr-xtest/functional/rpc_misc.py6
-rwxr-xr-xtest/functional/rpc_net.py2
-rwxr-xr-xtest/functional/rpc_rawtransaction.py2
-rw-r--r--test/functional/rpc_scantxoutset.py2
-rwxr-xr-xtest/functional/rpc_signrawtransaction.py2
-rwxr-xr-xtest/functional/rpc_txoutproof.py4
-rwxr-xr-xtest/functional/test_framework/test_framework.py23
-rw-r--r--test/functional/test_framework/util.py2
-rwxr-xr-xtest/functional/test_runner.py15
-rwxr-xr-xtest/functional/wallet_abandonconflict.py2
-rwxr-xr-xtest/functional/wallet_address_types.py2
-rwxr-xr-xtest/functional/wallet_avoidreuse.py2
-rwxr-xr-xtest/functional/wallet_backup.py18
-rwxr-xr-xtest/functional/wallet_balance.py6
-rwxr-xr-xtest/functional/wallet_basic.py14
-rwxr-xr-xtest/functional/wallet_bumpfee.py2
-rwxr-xr-xtest/functional/wallet_coinbase_category.py12
-rwxr-xr-xtest/functional/wallet_create_tx.py6
-rwxr-xr-xtest/functional/wallet_descriptor.py2
-rwxr-xr-xtest/functional/wallet_fallbackfee.py2
-rwxr-xr-xtest/functional/wallet_groups.py2
-rwxr-xr-xtest/functional/wallet_hd.py2
-rwxr-xr-xtest/functional/wallet_importdescriptors.py2
-rwxr-xr-xtest/functional/wallet_importmulti.py8
-rwxr-xr-xtest/functional/wallet_importprunedfunds.py4
-rwxr-xr-xtest/functional/wallet_keypool_topup.py2
-rwxr-xr-xtest/functional/wallet_labels.py8
-rwxr-xr-xtest/functional/wallet_listsinceblock.py2
-rwxr-xr-xtest/functional/wallet_multiwallet.py2
-rwxr-xr-xtest/functional/wallet_watchonly.py2
61 files changed, 370 insertions, 199 deletions
diff --git a/test/functional/data/rpc_getblockstats.json b/test/functional/data/rpc_getblockstats.json
index 16dbc5fe6..597621cf4 100644
--- a/test/functional/data/rpc_getblockstats.json
+++ b/test/functional/data/rpc_getblockstats.json
@@ -102,8 +102,148 @@
"00000020f44e7a48b9f221af95f3295c8dcefc5358934a68dc79e2933dc0794b350cad0a90fad2cd50b41d4ef45e76c2a456b98c180632bb4b44e0cd18ce90679fe54e552b4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401630101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
"0000002087454276cce83f4d19e0120f6e9728ac5905f7adaf6b27e3f5bbe43ab823f85db7d1f44666531483df3d67c15f2c231718ad93b63b851dce5ff4c4a67f524ffa2b4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401640101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
"000000202cdc3e99f07a80252dd6097faa0eddf3f2dde5ae390610e0bca94ecc25931551d31fceb8fe0a682f6017ca3dbb582f3a2f06e5d99ec99c42c8a744dd4c9216b82b4ae75affff7f200300000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401650101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
- "000000209b3ace9bd510918d20e87518c0cf5976cab3e28cc7af41259a89c6dd7668a32922808b8a082be71bcd6152cb8fd223650b5579a41344ba749e4d17b9bf211a9e2b4ae75affff7f200000000002020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401660101ffffffff026c03062a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9edb85d8f3c122c43a72f1e0dd122c8f7af040aa0b0a46001621110fb37818021510120000000000000000000000000000000000000000000000000000000000000000000000000020000000128394022bf44bff30d7399cb5a16e3b94fed67dc174c2e1d77df91bad5a51cb3000000006a47304402201c16d06a5c4353168b3881071aea7d1eb4d88eedfea53a9d6af9abb56da9060002205abf3ae535f1f1b5cfe8ba955535c2b20ac003e7d7720c5b7d2640ac2a04d19001210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffeffffff0294b89a3b000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac00286bee0000000017a91452bab4f229415d0dc5c6d30b162f93a1a0cac5958765000000",
- "000000200fa168b50a79ad24378a6b0f96e4c9f4ccb657a2663320d5fc1efd8ee7caa10ab42a31c444f2153387530a0979d4dc3dcc134b394c821227b8abff930c03c8412b4ae75affff7f200200000004020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401670101ffffffff02e015072a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ed20376d4bc90f9c689850eec3603cda658ba6295241730473ceb0e970b8d594150120000000000000000000000000000000000000000000000000000000000000000000000000020000000191e549a6cc852bbf1d3f11144b1a34079f64305e6971d2e685d2b40cd386e8a6000000006a47304402200bf62021c0a9a47ced8eba1e0998f5c71b2950763198d83ad284bd791241dbb00220446a05b7c35e7458924de88a8dcccab1ec6a106aa005345e55b482d8eb66337301210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffeffffff02acdbf405000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac94d7a4350000000017a914dfa6f0b17d2c64962c94203e744a9d4179ed22c18766000000020000000112d2f07672102dc6f099c4be308f598e4c4da1a7e0cb462ae14f0444525a1332000000006a47304402200a6a2f544f3f9d299608a7c745e2326de176fb1cac03ae3e74943f4250b8896e02205023a5b4faff99865bf91f1263605a502c723628be9240c0b7bec81d2ed106f101210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffeffffff0200ca9a3b000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac94166bee0000000017a914152cc82f7944f5c416de7dbffb052f7081765d7987660000000200000000010191e549a6cc852bbf1d3f11144b1a34079f64305e6971d2e685d2b40cd386e8a601000000171600147cc872ad7350c37fecab9c4c6d9f08aceb53bdb8feffffff02005ed0b20000000017a914aab1c8c53fe62e283a53efa28097709f4f2ed37b87e0bc9a3b000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0247304402201b4476f238ed5d515bfcd6927d0d008a4993770763eca73e3ee66f69971831d902200f5215a6dfd90391dd63462cfdf69804fe31224c309ec9c38d33a04dce71c0ee0121028c9d2955a95301b699db62e97d54bf0a91feb44e5cd94bbf5b62f1df57fb643966000000"
+ "000000209b3ace9bd510918d20e87518c0cf5976cab3e28cc7af41259a89c6dd7668a32935a4855caf6bdcc52a0c96070b6bc02d071c9c3b193976d6f2b96127786e99de2b4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401660101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000200374fd4f2718627519b7d7ef4d15582abc6b35c67f882bff14932e36d3a7203851be05120b6429ffc7b95452b42e972860ac6ffe287c4ecea2a2a813e78e699c2b4ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401670101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002064765c55d23d4890adb5e009c8275feea2df864497b6e6ce3699e3e0598ee66374b693e67694656259a3255d7be9bd09a63bee8b7afa35d7385e8b5f58b662a72c4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401680101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002057fa46ada7221437d2510891e5f5f2bffe05657283605338cf8e50f7d1dde82fea6fee41d71fd1fa89c8513c81bff1f75dbd3d0746188e193f6ec6b90d2810202c4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401690101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020ae3fd8ef7c4493c255bd939384de86811740252926d953f296b237817897777b0f12171b2fbf872b51c67c0cedf50c3723c0da7a739467d0e58b5f11c094cdce2c4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04016a0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000202cf45fc472d69cca7c182e7b146a3c247afca5265431fdf1341dbfbc0361ae0069bbe24346ed764d17d49e6a35b18351eb2467f7ba1e7f01b03965f15eea79c32c4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04016b0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020bdc0352a48528507936070eb8eb509526362ab734f915de1207bf6c38a11a8248a417aed26558fd18e709a941668c02035ec5d1f1b9451c54e65cbb16cd516f42c4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04016c0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020afe8cbbea1c3d5e03853887acea7e76b641902ec703c9f47780cabbcb04be1410d32f175fa0fe8e9f4b5725d92200eceebb5b04768ff4e47e3fa2bd158d2400d2c4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04016d0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020d720570639ee70c2a57dee74c6cb3e81572f3b90b68d08ade353f44f14b85e65d71c072afd69cd1460fee256816e8a0a2b8e66cdf1270f0e7dc79ec4b6f17aad2d4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04016e0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000204d196d7d87bbdc768f0dffa028be3f26981bf3e0ae2ffabe7f381fad77679b2d20df72ecdfcedbe05d0f287c3b363b28cd6f608bca1ead60df45b52a397f37ac2d4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04016f0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020c58c2050467152449616ff3b3094015797499b2999c11bb471f5e22064998171e0030dc023770c9aa8914f09e556ae8337be82139e4453fedcb6fb9f6c1db4252d4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401700101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020f8590f76812f79e79ce37ae8890bd5f709a14ec967e92cad81b3f6b66250f26d87951394379338f2a9aa933b7a035d21e3a3dfd2bd7fee84e2b62b3d45b8d5fd2d4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401710101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000205d8ca7fcf5aeebf3d98b0ee7759e69e5babdc48d59c58903c8dbd702d723b656df22fb1b3f3964145ddfd74188512dbc521f8eececb54db4bf76283c7786a9c62d4ae75affff7f200700000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401720101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002056604cfb22251dc7a1f62de34c292caeb5f41d43ce7e5792134ad758bb8eb14294569adf746bb0cc4f3f5251524858dfd1689dc6d91673aacab126ad7ba1029e2d4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401730101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002026bf8ef41eb262da227e583610e63d91d44ff5a8c28d53ea48ad960c411c37290478c94d355065b104dfe20f85e7bd2ed45dd69f1aa58bfd5eec616c9d8969412e4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401740101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000208ac4dd6f98d1c7dc93de98c683e5a975d0b6e1399810433bb99e518b662b7442d56cc215aadae8d09254d24fa9cf2bab744a935c15922b7758060095cd5e54802e4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401750101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000205ffb43f92609c756cc287f72195a3830fd72621d2fc9a8a362964b690ea1941ca689980dbbb84e03963dcd7401f52488ad2384de133e339264d1d2bf7c6967872e4ae75affff7f200300000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401760101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020caf350ce047e254c0aae82aa8e3028313e2604e9835fca3827f7bd3998d5a20e04e9760bb5844b90c4f9e369b7a4e71e3bfbc54be17de3c80e4e10f14f6eb7ec2e4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401770101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020d9bb4fe15abde805dc266c3b7232d7dc7b19f9c2896e4fb903f8f0c001764c3757e7d021b0625cc325546419269932c6f2097132d7d3d8146dccc9be113f5b822e4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401780101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020696bdf42d602363437650034cb3a4f75655765d37564c484865ab3fcde6b481fe175c9bcd84bb1d916a7487995cdffc0dd9022178e3fe01679c856f92a6249262e4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0401790101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000200cdd29cfc32c00436322ccf735b28a3c4492c65f11906933df0576a009b4ca3eb297269d4999101589cee59ec82af26b1abb01a618e1d7a5d3f50b37326de0422f4ae75affff7f200400000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04017a0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020341e29d668f706c4d9ee49fc2cba54313e831c32ae94ac3812647d9e138b0367b09f760d355cc2cf930330f65628f2f172381c9643df01097134d4e1f4e650fc2f4ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04017b0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002076bdf13d0e907e932cd64351fa2b4eb732d81a61b271408a925763b6926a5d5f10b9053abb8252626b759dabc6f16e9c8e8e126a43a1665e94c97577d6de481d2f4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04017c0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002045444c6d2b97f462c7d81308b25286a1299c091aca6310f662ab1a280818197a1a8e8bb2c5187d2860bab08f820d5e994769a4b7e8b0d2b344b9385e186f477a2f4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04017d0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000204ff70ec9dad2c6d4e91158b4d7ef6d390b36cf85da984d4e5612eccb94e4fb4be457778e6f733492408b830fb5eecac0afc762cbfb3d48da48f4da99a1320d5f2f4ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04017e0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020c6b1a364d79eab3b7ad2fdaf2b93c7222172b3965e9e885a8f343fe3b01a27023a45f25aacbf900460a4f7b1ef579ce2884b7d2d197c3fcc4935780f2edfe0d02f4ae75affff7f200400000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff04017f0101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000207cf9b329b9d52ffd19d044fc357b9b004caa7245dd7b530ab863ed530f03f82dbd7b0f831d0a8abd6e5941ba4f4511f431d279cba3300e3e83da4fe682e89777304ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050280000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000200e0972853ecb2f7117c63c02158d24e2160e8d4f41e7dc403a7a1c581449303c71421129249b3e0b31959f28aff54b0d550b2a03d45f86ec239a1024c25c533e304ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050281000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000209e678e5e4857867287bb6dafb8f9a745aa02c60fed29e6051e9e251f26bfef616ae4ab3da1d9307770793df6595c4cf6029090f6fd3c681f734ce2de8561cb72304ae75affff7f200600000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050282000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002082a09e659c97c3765a43c636c264e56c7e77db717664a3b9adf5e02254a08a308cab4a50bd5f1d5c398bbd6fa9273fe538b8cfcd33570126a1278cac9525b2d2304ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050283000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020949eabe9e7f953f83801d2acdb19ab797fb5349977b9bae20cc19001ee72ea49701a70068d13aaa39cc20ba4a7952f5f82034059c4fb246cfee22366149bb270304ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050284000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002068f113d64ab432dff80ee464aaf8f7a848bda290863e4c6962108adbe9a45d370b5234f952182da1ac55f87966433b89ea6f8a2792ddf5517f114c00c7af7a5a304ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050285000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020dd64269389c08e48a579883c58fc48ea2fb9d3037afaca76b7b0b8a6824ee6727b94a021e71811c2d1301694512d5be70f85448843cc8e44be2141d4c3a78e4a314ae75affff7f200300000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050286000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000206b303fd7f9a1ff0acd195a8ab38186be256c82cf2600a843897ae365e19a882fe6f07e7c91993b53a9658683b80feac7331bf4aa33ba2eaa6022db4b75c5573d314ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050287000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000208082f64b25133299978b0f71b32ef138dcaa046e5d7f76febad7c62384dc3316e49bfe7efe023836dbf6877d44f0a2249fd6a7e66a43caa31af70d8ead0b85b5314ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050288000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000204995bf0ab17ed96afdf64870abb2f5816febe883117cf63aeb0bf325c3d9fc2c6a044d37ad26c66266ee39a7997c0ea187cd5f36c9d592155ebe192c5ae5bdde314ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050289000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000201fc70cc1d193ce76bafd2d966140714a81f0f4dead6e359d52085b67fc00585150d5f2fbfb87c566a273e21ec86639fb36d6188093d62cbe11b71ae1f3d15724314ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05028a000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002006a2f82cc5be1aa90c64a06a20997195e249661e1d5a653cb31142496368eb5639dec577b707412eb1c065059bcbf3c854650d2b876f2bd07321cd33ecaaaaeb314ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05028b000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020f93ef35f8a084fc60aebc192d2363615a3251665f701b252aa832d2b15511626d4174efddfe437559d670c82de5a822d216d5c70537272505751358a5b93b824324ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05028c000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000206edd63d9557e6d7a6ae1fc2a2ad7b0cc0304b5f56bf14e53b1f1d14cdfd45d623fa2d9e1de86b6ebe051ce1c309bb34ca5313bd1f4500f873993e48d2de7e412324ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05028d000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020c5831d6a03ff548b073f55881f5555c370cbb2643465b4173e4e3881d6f700074ef096ea9d7f8e5d70f40e8108005ba6fa8f2d784c3a07390841323be55c8326324ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05028e000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000204c4f58cb4f465f4eaf8ada7334a56b4822f65bc22c92ad51bfa66c565f8aa96b1c413f97817b1c4c7505cb9bd3fa51b6e07884da5988c700887e7c1288325539324ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05028f000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002045151d800a10754d71b373eee9f75a2e3e691dcd840cc5ce684bfbc21db541269661f279b909837182052ade15f8a1dbdb860ff9df65910e3242cc648cbc3360324ae75affff7f200700000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050290000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000205db25f541dc3a1398b0e9ce12bc46ef3844caf492a79e16ddd20459ff05e311f7e37fda43ad48a889c5e6602b86c468c9229cbf67f98b95aee980ac21216d078324ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050291000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000204dc213c37c2d574220f27529c3b881dd79872398f3dac5c8dfcb152724799f14dadd9a789d8c58b4f20cb64f223cffeac3511f0e918275fdbc1152cef3315b90334ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050292000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020a46d955fe947b9b213780feb8923e3996abf98512d9531f5ac630d2dd9151e3f62de7d6cf60358cae497c75adc1b1c8424df48d39f47e64e00c6bbb91b51cc94334ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050293000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020784a6003fd6439373e9bc113be863ab94f06dc4fb26df0d9a419c05c8a72ed4928fcc0d7b50001cddf2990e3fc544b9bc794fe39338c248cee7b0700435ec726334ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050294000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020826cfa34a2e5941c799572c23f4e429a4bf48b75feb2a08934f5d860c395dc3ee26e45fa1c6c18f948dbab651ccb1fa2e62da7f0756f8b403ce0889631f2ebd2334ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050295000101ffffffff0200f2052a010000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000204690e93db0427b1e5b1d883a03f186c2d3ac4e1df9378f632209ced473eb5c58fc3e74122b4e9cc46c067f036428de4352610a41461e69cf16757ef4140e07b4334ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050296000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000208cf946089e9089af8432ce232e0731e178d059e34a9a3c835e3cce88884dd9185644daf18210ac2146240e76f7df404ca9b8b5f85b325dced04b9f9053c2ce55334ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050297000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002049acdd71ba46aea87f248e1051298f4f21ee27c0909d079d3da2718bfa7cfa733c8f5dcefddec976a359a190c9a93ba27dd9561803d7f03c66aa6b68685b297d344ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050298000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020bdd5a628bddc6baf26ca858950588a273bb74f280e52e10a34ae3f00d2c42e56a403c72bea4b1743f541e5ce540553e28da1d8ede15e937ded5a73ba24436237344ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff050299000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002027665e94ffe7ea5158be46a43bca53fd124632292d3e2b51e3912a2e8250b150b5cd0bee20cf51463b004a383b6b6601d164d2bafdf86504af834a2d100cd8c2344ae75affff7f200500000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05029a000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020bb4d1b0013baa78c239e2c8083e5fc677fe9715d7b59e3551c2716d28cf49c7e45a3883cce72f0a63fdc8e7e60a4ebff3928274959ea8e4631f43161f3225de8344ae75affff7f200900000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05029b000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020a507de736938b41988ebb7d633314515f59cdeec6f3aa747090c63b8b3ae6367f4e5337f49f1fde37e8cec2e8878c72d3e5ddb32e504f1c01ca2488f29b1810e344ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05029c000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020ecd2a2146131de640cd7b29633282b18ee7b28994f2f19f0768552e20744bf4e632f62e506a9266a87397191129376ad3eed243a23e98bb57b1c4b9678f41061344ae75affff7f200400000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05029d000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020d4b788fc29dabdb7a3e991a3a3d3765663ecf1cfd6317afad879ee7a6d92d25ffb224a63fded1b6344138aa157f3fb7b01f27fd86d4273d30b4cbd6d444dd480354ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05029e000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020cac00a9e9c80f17fb4bc75b2c994ad2d813c260afa7452256a38eea3d4cfde1adf9f3a4abb5ad560d38e574b8e4f20b02422eed48107673ffa454dbd8f68b993354ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff05029f000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002058ca0e107af6ec693b49621915ab632bad13a538f59b7f888d10c40816b1f8768ac67633e11f21c4be030ddbbaf9feba89c3a9a53031f932748c5b49c58935a1354ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a0000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002050ef02891248706c0ecaa944b3c815292e1477b12ee7db5f2f9ecd9ebc838559d9c9f5452f53827229253efc74b83193a895d33b0948930bb0ed16c6a8915ebb354ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a1000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020dbcd964c8f5907cb8fe88d02e84508094b5d4b2c1d4e996e8f0c410c00232f2f5b5d8e798e33a778cd2f7b61b9fc067270122bfb7141366c4281fcb26ccdd8cb354ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a2000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002015a2c099202477040cf651939a8f631b9dd30f2dcdf0f93e0f1de3c2e334631e62334676977d12cfc255dc8763b844f3a51ca7632781bd96ed9dbd3d10b220c6354ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a3000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020b30c6859f5088e5959531c90fa68d505f69b6e0218b735ad8f8b2eb40cf7a872322978bec7d6a76f737adb3ae49b084e3e3324bb0c737c23fe47bea2140ac0e1364ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a4000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000204faccd7905ceb4f3e4fe33ea60b8020557d63133dffd8997c431612928e53419fb5b4c26087fb0c603f83359efe5031ac7ebb9dfe163cf26ed82af76bc909ac3364ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a5000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000209113b96fe2a4d7e6e3a7be25f8cb9a8cb14f9265438d2288af9de9b878716977037f9c2a0118e87d9520e81ab9d4c302267e509097df317b81a4815e39f6837e364ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a6000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020cb2154f4f2545e98390e807ca72f2f1f44d14f095a710bb0d02f7e7957a20c5f3f88408c9636ece8ed4d1246804db9f92691d01fc832424061a2172c8d6a560f364ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a7000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020e783fb2a9645c1254cf1fdf547a95c0f14a6fead298c56594f07970db292185a2cd00551b066272283d1a775dd782cdd3124f3ecb231b3763d65578febdeff32364ae75affff7f200300000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a8000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020346a9323fdaffa99d8084d6440f39a1ce467e3e5ab258a81079351d895cc4048ff460cb0b7fd3d6611c7ba9ae9bc96113de825692a9e30cfd6459c51a0177c10364ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502a9000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020dc777bd397c914320add969235b78f5d96695e6beda197ea52e9f431d056b37277dcda308181d95d0ff8352827ce0421c1232afbdd4b1e377c0864c099d7317b374ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502aa000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000201d7d4f9f1f0078e28eef9b5e471a41df8878fac209a25c2cee14dd8965952c24ebd24b6e25016208fb3aec35990c4ae1eaa598e8e8991faa05c52b1c59212cde374ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ab000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002019d67b76f3a4bebe1a1e326523c180f07bd7d29abf3806aad94aede8c458fd569ac62d5c71c8bacbd89e48ed1baae1c79e390ce03541a2ee1f512ebdf15456dd374ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ac000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020fdaade88c5b700ddb9e09267cceed247a52774e815063df898e03db513c3fb0813fa4c774777aff614f6ed75498e523210300e2222332df5e956506ce8e52715374ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ad000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020c42dcf5174896745507c4374f5fec35aee6814f3185c1307b0fae0c1e3a5ef5fedcdd68787b58f68b9bd7a9b0bbbea999a0aa88519cb100bbcb07fe5240079d0374ae75affff7f200300000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ae000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020bcd37f6c54ef2354e4f0036e4ec7403f08c9b94bb165212be6a794e38dec854015e9c2f58257a314527ca4924b72eb23bb8aafe558787fd633912706ac6fec50374ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502af000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002023ff54672d7972bbb2ead9af3e5a6a66c2bfc4da6ab283993fc867f97b64a32272abf895ca14f6348a7af58f12fbf49942f361c64ae584f880671d217a10c709384ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b0000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000206342f3c398df982f3a06ef567e2d73c48bb664ba767622811c3acacaee2f633eb8c574a2557745ca54a2d3485d4f6191e152af7a676d288fb34015ea7fb5b209384ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b1000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020c5cc4569b3d48a79c9d11cf2dc8d2ec82597254752da2977b6a5ea179d3b443aa6d0ed5be19726635f1a0a8cf965614df9046c2ead1e75f8566a33743d8982d0384ae75affff7f200400000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b2000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020c05a4f7add910ebab3383359765982462dcc72815db0656076067daec1b2cf0848ace2ca3e70db437f65f3e61d40cfd20fbc3c7d56d99c59399f77e5b1ce92b2384ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b3000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020a3ec3dd9e0e22a8f952682cbdec3e6e2320487bd46a16995191801b1d7c0bc2fee67cb5cf6c184398405b5d5eda7243e9f8f7d9d6eed4aedd649b58fca6a00d7384ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b4000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020c839c122dcfd996213d8fbd5a646b075bbf2bbdaacb4ac288e1035e3b866ba19a999d2fceedb7ae2a403726f8953ffd6bcec524475c645ef1ef8161cbcef8422384ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b5000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020003644c0223f71a2353b997d4ca0dcc26c4f28a6b65a5bb7f15db54704fbff0bc4b6c3e917d162ca9cb31a16071d42cb4e54a9ea74ba91941f12d8f829eb924b394ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b6000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020bd86b3a9de5bcb073f698d66db6a4b77994781bc6ef33879b28f791c65d5474220f5b54147182092cc00c7a1706c00636313563708ca2e8da4dd3a7b8ec260ac394ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b7000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000200303e7b146fab42009da77439f1c2efee5a8f95ce886c32980c24d51c1926e5b1b275982dedffbbc7be7277210273602a020c4cfd31dc670d87d98c18ef1cb27394ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b8000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000201d24cb22950d2432efeb1ea680537eb25646aa00d0ca08e7d9de4d309fa7ac169f6c950208ec9722b489dde41177559a40ea26a52e9b03f357900c77b6584672394ae75affff7f200600000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502b9000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020778b071b617682ac2cd8f668b8372e511a360ef90277ab993b2934dbc1898417d3f0be7cf4ed52004920d3f2097f375b9091b60dc870847bfcab5c6e31481b1b394ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ba000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020bd43e7ddb52a2a7c9123c295fb76fe2806e66ad76a8f1db549666184459684774a9088c028caa52f8a4af56fa7467b11bc4a84fa443c6eb77595daf7b615a2e7394ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502bb000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020cbca0de588e74f54d7d14a10f0d22ccaa96628ca5ae9927c60559b7f9e9ae833bf44bf46da738237ac207a52fd8e44e042b59aa0236700751fdcc6d8fa0610003a4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502bc000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020fdecf50110827118fb1e42863401169c2978fd40384da1b7731c690c2005425aebb3444804c0cb5396fe8aa8c1bb48d7a7c7b73a11b74cc4b3fc2ccf503c378a3a4ae75affff7f200500000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502bd000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020cb903e090325f9358c0e61c9bdc97937f704ce4b8172201ddf7513e15bd3cd0b8d44087f85d98842f76313ce58f51341a3b9566c7a100bf16ea86178dc705b203a4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502be000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000201d6b74ed148080e3a3edfa424b28886e33d09bc08ecda897596967c62a98ff448a795925d6402d0d0dc523dab13c3b365d3a4870f7b17cccf6e17d495aca04983a4ae75affff7f200300000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502bf000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000204410e91867e3c9cc086310e365af54d392145981177eedcd260daa50ed70e823132f6d364db9c1a8c954906d64ddf383324658aab23ec8277e755e72dee8d03d3a4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c0000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000205a78e0a89d860b36eea360657845e2abf9153c17e592862f8ea403519ec23d1e4608c4c5799ba9ccec187677587e6270b813881d8553d85836193790cf6e549c3a4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c1000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002023a5e3d1c82b003946932e446e9678aa91161d0ad962df7596c38fadc9686b7e16818cd3a60c8d89564b0c01e04eb7f4c54778fd5e905bc839179917b1b249d73b4ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c2000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020d61965e23207eca199457b693b5b41e22fdd6662299ee1f7135c83b093c9912b6d71f8fa6f963c4c9486fd21bee67761a6df764527b474d9a51c5fe47b7fb0093b4ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c3000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000203524f28de0a6392c7474f10d907a58ad19d490945486a36cc1c3f7e50c5afe146c10a3b3d8cce454138920c15391abb872f0f1295a3adfc92cd9cb61b3ac86783b4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c4000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020467360c09aba5f319fcd67539110081b789f977a0a4b377bcfacff2c46b8294048cb8d66c3ca5683ce97a7ec3dc41a8ba1d39b83e9431a6212ae252c48ee58263b4ae75affff7f200300000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c5000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020812290fdcff31bb6fb06e86c743fa78c0750eff0f2037471c9e33cf54ed1d23738b509872552803a9777437f44fb821e07a86962a6ba7a67f07c006b7db7fd4f3b4ae75affff7f200400000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c6000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000209ec10ad37d4293149cbda6651a62f677ab43478f489c0a6063c7fb61b6725b472081cc2fb94eb955c74676e190c90120c516fee1d174a3da6ebefdc4ee9c58893b4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c7000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000207c6ebb34782c42405798179c00641be06c1378f5f9e3f6321cd7d0dae31d2649464d6ed5f2c62812110781831fc80ecc996ece646d15cbbe92ebd646ffa930183c4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c8000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020d56d58b3c1cb46fba2f103428e338fa48fb45f2f995e9289b40ee8d0dbddfc570e8938a67ec77eaecee629b4e79791f71e14a7c99d0135802d05f44f8c3d41403c4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502c9000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000205493c49f450bdfb6c953993867aa2c4f3a5adad4d69210ce9ad7e21a29956b30b3cd7aaf15221e78834a9986b7fd6310d12d9c9a64f726280e0847b81103ccde3c4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ca000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002083f565a859f39add7957ff77be6422a8a9f2aa78eff66cbd3e2a69c3434d6e2fc9ac5a16211b9fd5a2303ca567c136e4e25726c8b0c72bcb46669c4b387658a93c4ae75affff7f200400000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502cb000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020b3bfb70cf9b866ea55518f5b56455a25395d1cfad24506ff8a02b4d5a90ae71b0ada60651c5dd9d09e50d6ecc8f45dccf1920876a44c42e796c8e434fde2d1fe3c4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502cc000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002031ec1dcc9b218d8757333397977d57def4938036f6bccfb7dcc093273c9b2223b0640447b9017f95ac9bfa068470d63fe2dae4f6c09e829b8c4e379ef4a497653c4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502cd000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000207833e68aaed26bc8543e6a42d6ba63e400d29eae13ad2ce9520deeb26ad363129fa2f34a18459e23eaf6abb915fc1f7f95c16610e4ec6ea8e4fd346f3244de403d4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ce000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020a2846f2b0f1a1024920c5384342a951334350cf84e6d1faabd8465f74f567106b4693316ccbc6ee864fb5bb6a5ecd235c421b5e8456807179961927bb5b8c5bf3d4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502cf000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002009319e06bf55e060cf9960556210d9b863df8a62aba1031888b209abe07ec70425faa1ce30ea5535402ea683493d5ccf8e280035aa75d4957d7aece3b11693483d4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d0000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002023f9b459f689e3162485466cd2ad828c4151d4e3c6b648a48148554b57cca54033f347a0375fa9e51c0d8e342966532e41adbcdfb4d602cfb1132d7245dbd8023d4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d1000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000206b1b4d92c2a2b82f1bb2fd350d48a0c8e1580ec04ccb412a443e12ee55e8b822f6e1fe8fa25d0b909fdd77e1d867658c4f75ff505606c36e7ef4a93b419cde163d4ae75affff7f200400000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d2000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002033385a90b58b6b79506c03e8bed3cfd1d693006585e4830d0e2ce3b84845fd4799fbade5d0d33cdd6fc7ca4ed50532562db06dcf6fc3d321b622dcc22f0906ad3d4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d3000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020ff4c8839a229e97cbe2cd35abc494bdcf73e8c7a2f16c5363feb7010b492976a288ddb0be159895728e32f4e79d9ad1a07acb66d0be22e321129651800881e703e4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d4000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002072ee8186bb392b32b391277f7fed11787a4861d317b9c6d57e2370f40700700fd6e90589c58655153447e9d1a70d65d52b2ed0bb6b54203540df1728f900ba313e4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d5000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020e18b645ece63f2cbbab78e79d8516a77fc047f6198794c75fb9466f30ea5b65f0b440ca732a678e4f0652cf281cbb18659d2a997d5e8ba2702e2b76efa58be813e4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d6000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000201992af3364cb9c56128084a68025ad626c2ad2ff28f60f7d50c31f764013374e951ee0a161f17cff5f7392dde8cf99a66e656789dc9faa2349a25809ee50f55c3e4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d7000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020d9c962ebc65bd0ff97bd6cbbb3e552754ae8fb44f0ada8fda25a948903c5271e505457fa14d96a55ff1b38a36a91f729457fcc1c5c6f8cfcdcf71a38ed104ea23e4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d8000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002000056a0462dee464bb1f646f6001cea152f2e26a06f8431b323235d9db44c67ad2275683d0878f6c624bfab1e9d029053cc2839028a4adf6ac0b4ad8c26a8f0e3e4ae75affff7f200700000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502d9000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002044b61b426fab95fb242270d0a724d9e582ba9832b0df8c7ace236267dbc4c97ecdc66430d83d25b79efc5ef82781208ccd1cfe696b8d1ff5fc2faae7b22c6dfe3f4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502da000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000202b17e48a19509419e248f24e0343cadc76f441d5563865800d02fe4b90ac1129dfbcae58bd031ad2a0083015a6b41a0a634a210957263a75fac61768bc64e5f53f4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502db000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020374152f37f55ccc967e23ced936e45be151c4d48c19da171ce0c4d78a27ab96581db0929a9d222a734f4c882de8de7978e19affdf8228cb9979d566bb0cd4b493f4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502dc000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002019510f07d715d3267e5759878c764656cfbbaafa7fd7ed387a3cca1c2d37e41958bbaa7bb304971f282b0406f598df1dc38822a5c33774f4e70c2f9146b01ab13f4ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502dd000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000205802e87d9a02d8bc42f7cbbf5945f9883a166e782ad5b57e39102d17ad29d81fa377050a8d14cc44ec651152996ce37fa2cac9d5684c270e215a947a072012f33f4ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502de000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020db7ba6868c5fa869111d898f6896ba81dbddb75d83e9cb7a7b96eba44be0f839bd097ef83e7654b2a7d2c9cb2775e466970e25ec851f6833e0983c0aeb6ac6e63f4ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502df000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020873fbea9b49c0e930c1244fd90dcc243651ebd254a90f4766ca0507dfcc19214f7d797bd5d8778a00ad345578736a44d47677f19b60af648c80858b9c4b2367c404ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e0000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002016808975447a6d32771f0d0ef74e26635bd435c9c37837531418843390a5e131d287533d82268019c11b0850733dba02873fdc59636645f10c1c4e90ee1813cf404ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e1000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020dd6a75b329628e39c2c9cb33e0eff6ffca8fbb6e64afef9b5a5ac8c50b64b1001d882a995516448ee14cce62e753ffd24014ed40b20bf58d9c416995f55c387c404ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e2000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000209c4507ce053a032e0a61d3f38872da6964a1535421193e095dfb6d0e810c6604bf3bf1c512f4bbfd2de1bcf382959378e51a4fb89b67fdffa57d575e2bf03629404ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e3000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020f1fd3ea8e8ce0fec4b0addfc38e427f0b7a89676dc9c681cc279ce3afcdb3344eb3d49491adb3ee3b0543983ebbf3eea794336a2152fd6741bbee14e4f9d531d404ae75affff7f200300000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e4000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020e6450e2c31243e91b6722cbdfe424cd68dd2e7124926e8588d0c441e4db2d522931a65d5f7ed6826fe9cd006e2b121f5204c72346264c43dc8f00fdd53eedd84404ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e5000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000203fae0d234512126f78c0ac3ab0305b5d6a026df0f1eb522b38c80e15d5750905043b464c45072f5edd7783ac6f3e794ce5980b84353d40cd302a01d41fabd8f7414ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e6000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020fe041c21e15530b9745f10acd64a4773c82fcbfa92693fccf2b46284c1f9b273f48cc09b36fd47c5b751f28c9a216843ab05716623f9f9c6e5b409fd91486e43414ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e7000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020cd8667a919a4109d2b8aef7dec552bac1be8c3f1ca57ae05024e811b0010d37c851e80914a0e733c68ee8364a963d30e601b8cb377630d061a2a6fb31bb4c531414ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e8000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000200e3e5687defdf10159de28e74d87225ca363e8dfaf310daf25452cb51a6c1960df803c80e65e02f875878ed80503ba3b1c91adaad0de28c1826494b1b3d2c85b414ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502e9000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "0000002055405eb37572235fd6caa44f67d093510ba3e310a6e3d830c9d2ec8cbf456b038be2e45331d580a34e5fcf6957f18f9d1e4fb14626208c9c00e5dd9acb322484414ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ea000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020d497caa95b01d189796bb4d4150a79d801b0300883d979a4d40a083981bc251f93e63446c17b7f201e30bae9c345937fe433508a90298c58aacc28be7b79eee1414ae75affff7f200200000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502eb000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020f045c34eb6629fa92d1763c7f3dada8bbc6b609351588257f6426cf422526f3edcc07193623f11ce11e2f69d963aee314b8b0a234e0295a96ba78c32a8db6425424ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ec000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020aa920ed2f0541f8f0bbb1c2d1a3375676c2a8c8ea0a195eb9422548b4e2b390302a6a024ceca9967078fdbc4a47475a7c72cc5b974d4a8ad719ebca75d0dca6c424ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ed000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020cdae3d9c8781c8dd25e900db9f8c14607d037c5951711a0349299a7dd1a23c5df097a0d04234a8f79b5c10d7c84a5a2cfca5945340e68934f6a6384fd79297f0424ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ee000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "000000202deb8a5ef9e98dc905486c7396dd03678d4cc99f7a300b8743bdbc2e25fe34747a238f98e4bfec1d426571bf596564bf4e3d716585e1a8030a842a203af585b4424ae75affff7f200100000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502ef000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020b1bd8b56562d2366dfce1d7429ff2dcf9efd0d6857a2d7805352dc62bf1bb636e6afe7e24e758ace142f361df1e848b55c49587fba9b462a90e192c9eb508f16424ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502f0000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020a2dff742a0c7a9de23ca7ebca1b8d9dfcea3bfb42b44727d2e11044be692c3379e1bdd41a4c22439ac27ba77f320816260dd735d91867436dfeae1f5ed4db10f424ae75affff7f200000000001020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502f1000101ffffffff0200f90295000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ede2f61c3f71d1defd3fa999dfa36953755c690689799962b48bebd836974e8cf90120000000000000000000000000000000000000000000000000000000000000000000000000",
+ "00000020ad20e954e2267f8c839a40c5f84ba1b784ed295128b7702b4aae2eff95164f0036f0bfdf15231ffd8d9c6ba2885d84528e5f3ffc232695e7fe2cdceb5bcf0970434ae75affff7f200200000002020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502f2000101ffffffff02580a0395000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ed8ba1cd8abd08ed4e96d4e572c2f7da494e9c93a13f00cd9b5e8d94457f02897d0120000000000000000000000000000000000000000000000000000000000000000000000000020000000128394022bf44bff30d7399cb5a16e3b94fed67dc174c2e1d77df91bad5a51cb3000000006a47304402205ea3ba4f1f1c61ff8823ec894a9881917e5146506d57209fe292ba73ba7a31210220123abc3c400388ee410d086ee555801d0aa26ce38b2fd9b871e78a5fe2d8dc5101210227d85ba011276cf25b51df6a188b75e604b38770a462b2d0e9fb2fc839ef5d3ffeffffff02a8b89a3b000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac00286bee00000000160014fa7a42ba417c1627847e81aa7c9dddc055a1eea8f1000000",
+ "00000020c22ce2644676e94f9b990d3f8b043a27030ad5fd26f0a85c642c0eab8900744b2a601ccdf802e962bbb2463913ce8e54ed4407286d0f1b2b89fdc44b6cf7ecaf434ae75affff7f200000000004020000000001010000000000000000000000000000000000000000000000000000000000000000ffffffff0502f3000101ffffffff0240b80395000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac0000000000000000266a24aa21a9ed2744ae26a72baecefce652972124b61dc48b676b69fbd6d2eb5a0b870dcd0142012000000000000000000000000000000000000000000000000000000000000000000000000002000000000101eb190027dcd1748e33b4190a2191377d8b336946dd454844fcb9a1ef815c961d0100000000feffffff02c0be9a3b000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac005ed0b200000000160014f77fa7137bb579e11d5ace33ff2b7ddceff33e980247304402200f663df790ed631452bf2a6588c4d44d8ac13da39c7024c0134c45e30c60a7e602200af44d89baa6a447416a76b9cd0104af8fe6c9488c3f1e836286a7155c78b4b701210233188485a5ef4b1849a8c104596f31a00d521acf1453d8b20da2a97f1953ed1cdb000000020000000001013b375b0e7587630dfe9e5740fb35063dd991f2fbc8a7cfc1f25590b9387429cb0100000000feffffff0200ca9a3b000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88acc0883577000000001600140cd03541e1235f9fd8992292a646e3ba3cb96775024730440220701f6e05cd35ae40671cba340fd4075fb950c0c4560bac116fa621f94651973302205fb780039fbaa69e2e1a587e874543fb0d5e3f9fd9aa9a1b243627c2418ee7f6012103d89a21f822363f464f68d58f66fcdccf39726617f26f444d9f4efaca8d8b0211f2000000020000000001014294e4ac29ae31f2731af1c188c0f21daaa3cef26c897217218bb028bd03ca800100000000feffffff02c0a73f7100000000160014c6978ba36817881d763cb9c3ca51b55b9950630c4038f505000000001976a9142b4569203694fc997e13f2c0a1383b9e16c77a0d88ac02473044022037d6d480ddd7ceb0a6d83f725de05f3be738cb1bd6ab2de6c2e69818d2a405170220549fa8514c4bfa3adf00f1877eb008168e0073ff2e4d8d97fd23037ef3e61d63012103198416933daefa3d24b66ddc42dbfbf6873e5c3326f74f30bc1b493a9ec68ebaf2000000"
],
"mocktime": 1525107225,
"stats": [
@@ -111,7 +251,7 @@
"avgfee": 0,
"avgfeerate": 0,
"avgtxsize": 0,
- "blockhash": "29a36876ddc6899a2541afc78ce2b3ca7659cfc01875e8208d9110d59bce3a9b",
+ "blockhash": "004f1695ff2eae4a2b70b7285129ed84b7a14bf8c5409a838c7f26e254e920ad",
"feerate_percentiles": [
0,
0,
@@ -119,23 +259,23 @@
0,
0
],
- "height": 101,
+ "height": 241,
"ins": 0,
"maxfee": 0,
"maxfeerate": 0,
"maxtxsize": 0,
"medianfee": 0,
- "mediantime": 1525107242,
+ "mediantime": 1525107266,
"mediantxsize": 0,
"minfee": 0,
"minfeerate": 0,
"mintxsize": 0,
"outs": 2,
- "subsidy": 5000000000,
+ "subsidy": 2500000000,
"swtotal_size": 0,
"swtotal_weight": 0,
"swtxs": 0,
- "time": 1525107243,
+ "time": 1525107266,
"total_out": 0,
"total_size": 0,
"total_weight": 0,
@@ -145,10 +285,10 @@
"utxo_size_inc": 163
},
{
- "avgfee": 4460,
+ "avgfee": 4440,
"avgfeerate": 20,
- "avgtxsize": 223,
- "blockhash": "0aa1cae78efd1efcd5203366a257b6ccf4c9e4960f6b8a3724ad790ab568a10f",
+ "avgtxsize": 222,
+ "blockhash": "4b740089ab0e2c645ca8f026fdd50a03273a048b3f0d999b4fe9764664e22cc2",
"feerate_percentiles": [
20,
20,
@@ -156,67 +296,67 @@
20,
20
],
- "height": 102,
+ "height": 242,
"ins": 1,
- "maxfee": 4460,
+ "maxfee": 4440,
"maxfeerate": 20,
- "maxtxsize": 223,
- "medianfee": 4460,
- "mediantime": 1525107242,
- "mediantxsize": 223,
- "minfee": 4460,
+ "maxtxsize": 222,
+ "medianfee": 4440,
+ "mediantime": 1525107266,
+ "mediantxsize": 222,
+ "minfee": 4440,
"minfeerate": 20,
- "mintxsize": 223,
+ "mintxsize": 222,
"outs": 4,
- "subsidy": 5000000000,
+ "subsidy": 2500000000,
"swtotal_size": 0,
"swtotal_weight": 0,
"swtxs": 0,
- "time": 1525107243,
- "total_out": 4999995540,
- "total_size": 223,
- "total_weight": 892,
- "totalfee": 4460,
+ "time": 1525107267,
+ "total_out": 4999995560,
+ "total_size": 222,
+ "total_weight": 888,
+ "totalfee": 4440,
"txs": 2,
"utxo_increase": 3,
- "utxo_size_inc": 236
+ "utxo_size_inc": 235
},
{
- "avgfee": 24906,
- "avgfeerate": 121,
- "avgtxsize": 231,
- "blockhash": "53e416e2538bc783c42a7aea566e884321afed893e9e58cf356d6429759dfa46",
+ "avgfee": 16320,
+ "avgfeerate": 113,
+ "avgtxsize": 225,
+ "blockhash": "02f07c22cdb5b60f08e23734a35b95b5fef20293b802c2be191900dddb64eea2",
"feerate_percentiles": [
20,
20,
20,
- 300,
- 300
+ 301,
+ 301
],
- "height": 103,
+ "height": 243,
"ins": 3,
- "maxfee": 66900,
- "maxfeerate": 300,
- "maxtxsize": 249,
- "medianfee": 4460,
- "mediantime": 1525107243,
- "mediantxsize": 223,
- "minfee": 3360,
+ "maxfee": 43200,
+ "maxfeerate": 301,
+ "maxtxsize": 225,
+ "medianfee": 2880,
+ "mediantime": 1525107266,
+ "mediantxsize": 225,
+ "minfee": 2880,
"minfeerate": 20,
- "mintxsize": 223,
+ "mintxsize": 225,
"outs": 8,
- "subsidy": 5000000000,
- "swtotal_size": 249,
- "swtotal_weight": 669,
- "swtxs": 1,
- "time": 1525107243,
- "total_out": 9999920820,
- "total_size": 695,
- "total_weight": 2453,
- "totalfee": 74720,
+ "subsidy": 2500000000,
+ "swtotal_size": 675,
+ "swtotal_weight": 1719,
+ "swtxs": 3,
+ "time": 1525107267,
+ "total_out": 8999948160,
+ "total_size": 675,
+ "total_weight": 1719,
+ "totalfee": 48960,
"txs": 4,
"utxo_increase": 5,
- "utxo_size_inc": 384
+ "utxo_size_inc": 388
}
]
} \ No newline at end of file
diff --git a/test/functional/feature_assumevalid.py b/test/functional/feature_assumevalid.py
index 603d7f5d3..132525fea 100755
--- a/test/functional/feature_assumevalid.py
+++ b/test/functional/feature_assumevalid.py
@@ -122,8 +122,8 @@ class AssumeValidTest(BitcoinTestFramework):
self.tip = block.sha256
height += 1
- # Bury the block 100 deep so the coinbase output is spendable
- for _ in range(100):
+ # Bury the block 240 deep so the coinbase output is spendable
+ for _ in range(240):
block = create_block(self.tip, create_coinbase(height), self.block_time)
block.solve()
self.blocks.append(block)
@@ -148,8 +148,8 @@ class AssumeValidTest(BitcoinTestFramework):
self.block_time += 1
height += 1
- # Bury the assumed valid block 2100 deep
- for _ in range(2100):
+ # Bury the assumed valid block 2240 deep
+ for _ in range(2240):
block = create_block(self.tip, create_coinbase(height), self.block_time)
block.nVersion = 4
block.solve()
@@ -177,18 +177,18 @@ class AssumeValidTest(BitcoinTestFramework):
# Send blocks to node0. Block 102 will be rejected.
self.send_blocks_until_disconnected(p2p0)
- self.assert_blockchain_height(self.nodes[0], 101)
+ self.assert_blockchain_height(self.nodes[0], 241)
# Send all blocks to node1. All blocks will be accepted.
- for i in range(2202):
+ for i in range(2342):
p2p1.send_message(msg_block(self.blocks[i]))
- # Syncing 2200 blocks can take a while on slow systems. Give it plenty of time to sync.
+ # Syncing 2340 blocks can take a while on slow systems. Give it plenty of time to sync.
p2p1.sync_with_ping(960)
- assert_equal(self.nodes[1].getblock(self.nodes[1].getbestblockhash())['height'], 2202)
+ assert_equal(self.nodes[1].getblock(self.nodes[1].getbestblockhash())['height'], 2342)
- # Send blocks to node2. Block 102 will be rejected.
+ # Send blocks to node2. Block 242 will be rejected.
self.send_blocks_until_disconnected(p2p2)
- self.assert_blockchain_height(self.nodes[2], 101)
+ self.assert_blockchain_height(self.nodes[2], 241)
if __name__ == '__main__':
diff --git a/test/functional/feature_bip68_sequence.py b/test/functional/feature_bip68_sequence.py
index 60492350e..a1bed0dc2 100755
--- a/test/functional/feature_bip68_sequence.py
+++ b/test/functional/feature_bip68_sequence.py
@@ -387,9 +387,9 @@ class BIP68Test(BitcoinTestFramework):
assert_equal(self.nodes[0].getbestblockhash(), block.hash)
def activateCSV(self):
- # activation should happen at block height 432 (3 periods)
- # getblockchaininfo will show CSV as active at block 431 (144 * 3 -1) since it's returning whether CSV is active for the next block.
- min_activation_height = 432
+ # activation should happen at block height 720 (5 periods)
+ # getblockchaininfo will show CSV as active at block 719 (144 * 5 - 1) since it's returning whether CSV is active for the next block.
+ min_activation_height = 720
height = self.nodes[0].getblockcount()
assert_greater_than(min_activation_height - height, 2)
self.nodes[0].generate(min_activation_height - height - 2)
diff --git a/test/functional/feature_block.py b/test/functional/feature_block.py
index 3cf7f3890..7964188b4 100755
--- a/test/functional/feature_block.py
+++ b/test/functional/feature_block.py
@@ -75,7 +75,7 @@ class CBrokenBlock(CBlock):
return super().serialize()
-DUPLICATE_COINBASE_SCRIPT_SIG = b'\x01\x78' # Valid for block at height 120
+DUPLICATE_COINBASE_SCRIPT_SIG = b'\x02\x01\x04' # Valid for block at height 260
class FullBlockTest(BitcoinTestFramework):
@@ -102,6 +102,8 @@ class FullBlockTest(BitcoinTestFramework):
# Create a new block
b_dup_cb = self.next_block('dup_cb')
b_dup_cb.vtx[0].vin[0].scriptSig = DUPLICATE_COINBASE_SCRIPT_SIG
+ # Dogecoin: Duplicate is used after block 150, so reward is halved
+ b_dup_cb.vtx[0].vout[0].nValue = 25
b_dup_cb.vtx[0].rehash()
duplicate_tx = b_dup_cb.vtx[0]
b_dup_cb = self.update_block('dup_cb', [])
@@ -113,7 +115,7 @@ class FullBlockTest(BitcoinTestFramework):
# These constants chosen specifically to trigger an immature coinbase spend
# at a certain time below.
- NUM_BUFFER_BLOCKS_TO_GENERATE = 99
+ NUM_BUFFER_BLOCKS_TO_GENERATE = 239
NUM_OUTPUTS_TO_COLLECT = 33
# Allow the block to mature
@@ -814,6 +816,8 @@ class FullBlockTest(BitcoinTestFramework):
self.move_tip(60)
b61 = self.next_block(61)
b61.vtx[0].vin[0].scriptSig = DUPLICATE_COINBASE_SCRIPT_SIG
+ # Dogecoin: Copy the duplicate transaction output as the generation changes
+ b61.vtx[0].vout[0] = duplicate_tx.vout[0]
b61.vtx[0].rehash()
b61 = self.update_block(61, [])
assert_equal(duplicate_tx.serialize(), b61.vtx[0].serialize())
@@ -835,10 +839,12 @@ class FullBlockTest(BitcoinTestFramework):
b_dup_2 = self.next_block('dup_2')
b_dup_2.vtx[0].vin[0].scriptSig = DUPLICATE_COINBASE_SCRIPT_SIG
+ # Dogecoin: Copy the duplicate transaction output as the generation changes
+ b_dup_2.vtx[0].vout[0] = duplicate_tx.vout[0]
b_dup_2.vtx[0].rehash()
b_dup_2 = self.update_block('dup_2', [])
assert_equal(duplicate_tx.serialize(), b_dup_2.vtx[0].serialize())
- assert_equal(self.nodes[0].gettxout(txid=duplicate_tx.hash, n=0)['confirmations'], 119)
+ assert_equal(self.nodes[0].gettxout(txid=duplicate_tx.hash, n=0)['confirmations'], 259)
self.send_blocks([b_spend_dup_cb, b_dup_2], success=True)
# The duplicate has less confirmations
assert_equal(self.nodes[0].gettxout(txid=duplicate_tx.hash, n=0)['confirmations'], 1)
diff --git a/test/functional/feature_csv_activation.py b/test/functional/feature_csv_activation.py
index 46ba18b9b..d0145d392 100755
--- a/test/functional/feature_csv_activation.py
+++ b/test/functional/feature_csv_activation.py
@@ -60,7 +60,7 @@ from test_framework.util import (
TESTING_TX_COUNT = 83 # Number of testing transactions: 1 BIP113 tx, 16 BIP68 txs, 66 BIP112 txs (see comments above)
COINBASE_BLOCK_COUNT = TESTING_TX_COUNT # Number of coinbase blocks we need to generate as inputs for our txs
BASE_RELATIVE_LOCKTIME = 10
-CSV_ACTIVATION_HEIGHT = 432
+CSV_ACTIVATION_HEIGHT = 720
SEQ_DISABLE_FLAG = 1 << 31
SEQ_RANDOM_HIGH_BIT = 1 << 25
SEQ_TYPE_FLAG = 1 << 22
@@ -327,7 +327,7 @@ class BIP68_112_113Test(BitcoinTestFramework):
self.send_blocks([self.create_test_block(success_txs)])
self.nodes[0].invalidateblock(self.nodes[0].getbestblockhash())
- # 1 more version 4 block to get us to height 432 so the fork should now be active for the next block
+ # 1 more version 4 block to get us to height 572 so the fork should now be active for the next block
assert not softfork_active(self.nodes[0], 'csv')
test_blocks = self.generate_blocks(1)
self.send_blocks(test_blocks)
diff --git a/test/functional/feature_maxuploadtarget.py b/test/functional/feature_maxuploadtarget.py
index d0a94658f..7e4363e9b 100755
--- a/test/functional/feature_maxuploadtarget.py
+++ b/test/functional/feature_maxuploadtarget.py
@@ -56,7 +56,7 @@ class MaxUploadTest(BitcoinTestFramework):
self.nodes[0].setmocktime(old_time)
# Generate some old blocks
- self.nodes[0].generate(130)
+ self.nodes[0].generate(270)
# p2p_conns[0] will only request old blocks
# p2p_conns[1] will only request new blocks
diff --git a/test/functional/feature_notifications.py b/test/functional/feature_notifications.py
index 47bc8dbb4..c0bd9ce2d 100755
--- a/test/functional/feature_notifications.py
+++ b/test/functional/feature_notifications.py
@@ -90,7 +90,7 @@ class NotificationsTest(BitcoinTestFramework):
self.log.info("test -walletnotify with conflicting transactions")
self.nodes[0].sethdseed(seed=self.nodes[1].dumpprivkey(keyhash_to_p2pkh(hex_str_to_bytes(self.nodes[1].getwalletinfo()['hdseedid'])[::-1])))
self.nodes[0].rescanblockchain()
- self.nodes[0].generatetoaddress(100, ADDRESS_BCRT1_UNSPENDABLE)
+ self.nodes[0].generatetoaddress(240, ADDRESS_BCRT1_UNSPENDABLE)
self.sync_blocks()
# Generate transaction on node 0, sync mempools, and check for
diff --git a/test/functional/feature_rbf.py b/test/functional/feature_rbf.py
index 1b531ad51..8d24a3635 100755
--- a/test/functional/feature_rbf.py
+++ b/test/functional/feature_rbf.py
@@ -27,7 +27,7 @@ def make_utxo(node, amount, confirmed=True, scriptPubKey=DUMMY_P2WPKH_SCRIPT):
"""
fee = 1*COIN
while node.getbalance() < satoshi_round((amount + fee)/COIN):
- node.generate(100)
+ node.generate(240)
new_addr = node.getnewaddress()
txid = node.sendtoaddress(new_addr, satoshi_round((amount+fee)/COIN))
diff --git a/test/functional/feature_segwit.py b/test/functional/feature_segwit.py
index 63881f306..a4418567f 100644
--- a/test/functional/feature_segwit.py
+++ b/test/functional/feature_segwit.py
@@ -55,18 +55,18 @@ class SegWitTest(BitcoinTestFramework):
[
"-acceptnonstdtxn=1",
"-rpcserialversion=0",
- "-segwitheight=432",
+ "-segwitheight=572",
"-addresstype=legacy",
],
[
"-acceptnonstdtxn=1",
"-rpcserialversion=1",
- "-segwitheight=432",
+ "-segwitheight=572",
"-addresstype=legacy",
],
[
"-acceptnonstdtxn=1",
- "-segwitheight=432",
+ "-segwitheight=572",
"-addresstype=legacy",
],
]
@@ -96,7 +96,7 @@ class SegWitTest(BitcoinTestFramework):
assert_raises_rpc_error(-26, error_msg, send_to_witness, use_p2wsh=1, node=node, utxo=getutxo(txid), pubkey=self.pubkey[0], encode_p2sh=False, amount=Decimal("49.998"), sign=sign, insert_redeem_script=redeem_script)
def run_test(self):
- self.nodes[0].generate(161) # block 161
+ self.nodes[0].generate(301) # block 301
self.log.info("Verify sigops are counted in GBT with pre-BIP141 rules before the fork")
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1)
@@ -107,7 +107,7 @@ class SegWitTest(BitcoinTestFramework):
assert tmpl['transactions'][0]['hash'] == txid
assert tmpl['transactions'][0]['sigops'] == 2
assert '!segwit' not in tmpl['rules']
- self.nodes[0].generate(1) # block 162
+ self.nodes[0].generate(1) # block 302
balance_presetup = self.nodes[0].getbalance()
self.pubkey = []
@@ -133,7 +133,7 @@ class SegWitTest(BitcoinTestFramework):
wit_ids[n][v].append(send_to_witness(v, self.nodes[0], find_spendable_utxo(self.nodes[0], 50), self.pubkey[n], False, Decimal("49.999")))
p2sh_ids[n][v].append(send_to_witness(v, self.nodes[0], find_spendable_utxo(self.nodes[0], 50), self.pubkey[n], True, Decimal("49.999")))
- self.nodes[0].generate(1) # block 163
+ self.nodes[0].generate(1) # block 303
self.sync_blocks()
# Make sure all nodes recognize the transactions as theirs
@@ -141,24 +141,24 @@ class SegWitTest(BitcoinTestFramework):
assert_equal(self.nodes[1].getbalance(), 20 * Decimal("49.999"))
assert_equal(self.nodes[2].getbalance(), 20 * Decimal("49.999"))
- self.nodes[0].generate(260) # block 423
+ self.nodes[0].generate(260) # block 563
self.sync_blocks()
self.log.info("Verify witness txs are skipped for mining before the fork")
- self.skip_mine(self.nodes[2], wit_ids[NODE_2][P2WPKH][0], True) # block 424
- self.skip_mine(self.nodes[2], wit_ids[NODE_2][P2WSH][0], True) # block 425
- self.skip_mine(self.nodes[2], p2sh_ids[NODE_2][P2WPKH][0], True) # block 426
- self.skip_mine(self.nodes[2], p2sh_ids[NODE_2][P2WSH][0], True) # block 427
+ self.skip_mine(self.nodes[2], wit_ids[NODE_2][P2WPKH][0], True) # block 564
+ self.skip_mine(self.nodes[2], wit_ids[NODE_2][P2WSH][0], True) # block 565
+ self.skip_mine(self.nodes[2], p2sh_ids[NODE_2][P2WPKH][0], True) # block 566
+ self.skip_mine(self.nodes[2], p2sh_ids[NODE_2][P2WSH][0], True) # block 567
self.log.info("Verify unsigned p2sh witness txs without a redeem script are invalid")
self.fail_accept(self.nodes[2], "mandatory-script-verify-flag-failed (Operation not valid with the current stack size)", p2sh_ids[NODE_2][P2WPKH][1], sign=False)
self.fail_accept(self.nodes[2], "mandatory-script-verify-flag-failed (Operation not valid with the current stack size)", p2sh_ids[NODE_2][P2WSH][1], sign=False)
- self.nodes[2].generate(4) # blocks 428-431
+ self.nodes[2].generate(4) # blocks 568-571
self.log.info("Verify previous witness txs skipped for mining can now be mined")
assert_equal(len(self.nodes[2].getrawmempool()), 4)
- blockhash = self.nodes[2].generate(1)[0] # block 432 (first block with new rules; 432 = 144 * 3)
+ blockhash = self.nodes[2].generate(1)[0] # block 572 (first block with new rules)
self.sync_blocks()
assert_equal(len(self.nodes[2].getrawmempool()), 0)
segwit_tx_list = self.nodes[2].getblock(blockhash)["tx"]
@@ -201,10 +201,10 @@ class SegWitTest(BitcoinTestFramework):
self.fail_accept(self.nodes[2], 'non-mandatory-script-verify-flag (Witness program was passed an empty witness)', p2sh_ids[NODE_2][P2WSH][2], sign=False, redeem_script=witness_script(True, self.pubkey[2]))
self.log.info("Verify default node can now use witness txs")
- self.success_mine(self.nodes[0], wit_ids[NODE_0][P2WPKH][0], True) # block 432
- self.success_mine(self.nodes[0], wit_ids[NODE_0][P2WSH][0], True) # block 433
- self.success_mine(self.nodes[0], p2sh_ids[NODE_0][P2WPKH][0], True) # block 434
- self.success_mine(self.nodes[0], p2sh_ids[NODE_0][P2WSH][0], True) # block 435
+ self.success_mine(self.nodes[0], wit_ids[NODE_0][P2WPKH][0], True) # block 572
+ self.success_mine(self.nodes[0], wit_ids[NODE_0][P2WSH][0], True) # block 573
+ self.success_mine(self.nodes[0], p2sh_ids[NODE_0][P2WPKH][0], True) # block 574
+ self.success_mine(self.nodes[0], p2sh_ids[NODE_0][P2WSH][0], True) # block 575
self.log.info("Verify sigops are counted in GBT with BIP141 rules after the fork")
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1)
diff --git a/test/functional/feature_taproot.py b/test/functional/feature_taproot.py
index 0f0fe8a34..bf5a72ec6 100755
--- a/test/functional/feature_taproot.py
+++ b/test/functional/feature_taproot.py
@@ -1439,7 +1439,7 @@ class TaprootTest(BitcoinTestFramework):
def run_test(self):
# Post-taproot activation tests go first (pre-taproot tests' blocks are invalid post-taproot).
self.log.info("Post-activation tests...")
- self.nodes[1].generate(101)
+ self.nodes[1].generate(241)
self.test_spenders(self.nodes[1], spenders_taproot_active(), input_counts=[1, 2, 2, 2, 2, 3])
# Transfer value of the largest 500 coins to pre-taproot node.
diff --git a/test/functional/interface_bitcoin_cli.py b/test/functional/interface_bitcoin_cli.py
index 1257dff1a..8f0b9ec48 100755
--- a/test/functional/interface_bitcoin_cli.py
+++ b/test/functional/interface_bitcoin_cli.py
@@ -13,11 +13,11 @@ from test_framework.util import (
get_auth_cookie,
)
-# The block reward of coinbaseoutput.nValue (50) BTC/block matures after
-# COINBASE_MATURITY (100) blocks. Therefore, after mining 101 blocks we expect
-# node 0 to have a balance of (BLOCKS - COINBASE_MATURITY) * 50 BTC/block.
-BLOCKS = 101
-BALANCE = (BLOCKS - 100) * 50
+# The block reward of coinbaseoutput.nValue (50) DOGE/block matures after
+# COINBASE_MATURITY (240) blocks. Therefore, after mining 241 blocks we expect
+# node 0 to have a balance of (BLOCKS - COINBASE_MATURITY) * 50 DOGE/block.
+BLOCKS = 241
+BALANCE = (BLOCKS - 240) * 50
JSON_PARSING_ERROR = 'error: Error parsing JSON: foo'
BLOCKS_VALUE_OF_ZERO = 'error: the first argument (number of blocks to generate, default: 1) must be an integer value greater than zero'
diff --git a/test/functional/interface_rest.py b/test/functional/interface_rest.py
index e73ec9081..b60a4f563 100755
--- a/test/functional/interface_rest.py
+++ b/test/functional/interface_rest.py
@@ -84,7 +84,7 @@ class RESTTest (BitcoinTestFramework):
self.nodes[0].generate(1)
self.sync_all()
- self.nodes[1].generatetoaddress(100, not_related_address)
+ self.nodes[1].generatetoaddress(240, not_related_address)
self.sync_all()
assert_equal(self.nodes[0].getbalance(), 50)
@@ -156,7 +156,7 @@ class RESTTest (BitcoinTestFramework):
response_hash = output.read(32)[::-1].hex()
assert_equal(bb_hash, response_hash) # check if getutxo's chaintip during calculation was fine
- assert_equal(chain_height, 102) # chain height must be 102
+ assert_equal(chain_height, 242) # chain height must be 242
self.log.info("Test the /getutxos URI with and without /checkmempool")
# Create a transaction, check that it's found with /checkmempool, but
diff --git a/test/functional/mempool_accept.py b/test/functional/mempool_accept.py
index fc4c77566..bae7eda77 100755
--- a/test/functional/mempool_accept.py
+++ b/test/functional/mempool_accept.py
@@ -57,9 +57,9 @@ class MempoolAcceptanceTest(BitcoinTestFramework):
def run_test(self):
node = self.nodes[0]
- self.log.info('Start with empty mempool, and 200 blocks')
+ self.log.info('Start with empty mempool, and 340 blocks')
self.mempool_size = 0
- assert_equal(node.getblockcount(), 200)
+ assert_equal(node.getblockcount(), 340)
assert_equal(node.getmempoolinfo()['size'], self.mempool_size)
coins = node.listunspent()
diff --git a/test/functional/mempool_reorg.py b/test/functional/mempool_reorg.py
index 8e1f87e42..30d130fa8 100755
--- a/test/functional/mempool_reorg.py
+++ b/test/functional/mempool_reorg.py
@@ -27,8 +27,8 @@ class MempoolCoinbaseTest(BitcoinTestFramework):
self.skip_if_no_wallet()
def run_test(self):
- # Start with a 200 block chain
- assert_equal(self.nodes[0].getblockcount(), 200)
+ # Start with a 340 block chain
+ assert_equal(self.nodes[0].getblockcount(), 340)
# Mine four blocks. After this, nodes[0] blocks
# 101, 102, and 103 are spend-able.
diff --git a/test/functional/mempool_spend_coinbase.py b/test/functional/mempool_spend_coinbase.py
index 854d506f0..57efa73d6 100755
--- a/test/functional/mempool_spend_coinbase.py
+++ b/test/functional/mempool_spend_coinbase.py
@@ -26,7 +26,7 @@ class MempoolSpendCoinbaseTest(BitcoinTestFramework):
def run_test(self):
chain_height = self.nodes[0].getblockcount()
- assert_equal(chain_height, 200)
+ assert_equal(chain_height, 340)
node0_address = self.nodes[0].getnewaddress()
# Coinbase at height chain_height-100+1 ok in mempool, should
diff --git a/test/functional/mining_getblocktemplate_longpoll.py b/test/functional/mining_getblocktemplate_longpoll.py
index 2adafb1fd..73cc35975 100755
--- a/test/functional/mining_getblocktemplate_longpoll.py
+++ b/test/functional/mining_getblocktemplate_longpoll.py
@@ -62,7 +62,7 @@ class GetBlockTemplateLPTest(BitcoinTestFramework):
assert not thr.is_alive()
# Add enough mature utxos to the wallets, so that all txs spend confirmed coins
- self.nodes[0].generate(100)
+ self.nodes[0].generate(240)
self.sync_blocks()
self.log.info("Test that introducing a new transaction into the mempool will terminate the longpoll")
diff --git a/test/functional/p2p_compactblocks.py b/test/functional/p2p_compactblocks.py
index 611bffb25..5afde218f 100755
--- a/test/functional/p2p_compactblocks.py
+++ b/test/functional/p2p_compactblocks.py
@@ -115,7 +115,7 @@ class CompactBlocksTest(BitcoinTestFramework):
block = self.build_block_on_tip(self.nodes[0])
self.segwit_node.send_and_ping(msg_no_witness_block(block))
assert int(self.nodes[0].getbestblockhash(), 16) == block.sha256
- self.nodes[0].generatetoaddress(100, self.nodes[0].getnewaddress(address_type="bech32"))
+ self.nodes[0].generatetoaddress(240, self.nodes[0].getnewaddress(address_type="bech32"))
total_value = block.vtx[0].vout[0].nValue
out_value = total_value // 10
@@ -226,7 +226,7 @@ class CompactBlocksTest(BitcoinTestFramework):
# This test actually causes bitcoind to (reasonably!) disconnect us, so do this last.
def test_invalid_cmpctblock_message(self):
- self.nodes[0].generate(101)
+ self.nodes[0].generate(241)
block = self.build_block_on_tip(self.nodes[0])
cmpct_block = P2PHeaderAndShortIDs()
@@ -244,7 +244,7 @@ class CompactBlocksTest(BitcoinTestFramework):
version = test_node.cmpct_version
node = self.nodes[0]
# Generate a bunch of transactions.
- node.generate(101)
+ node.generate(241)
num_transactions = 25
address = node.getnewaddress()
diff --git a/test/functional/p2p_eviction.py b/test/functional/p2p_eviction.py
index 72a255991..bc4d2d604 100755
--- a/test/functional/p2p_eviction.py
+++ b/test/functional/p2p_eviction.py
@@ -45,7 +45,7 @@ class P2PEvict(BitcoinTestFramework):
protected_peers = set() # peers that we expect to be protected from eviction
current_peer = -1
node = self.nodes[0]
- node.generatetoaddress(101, node.get_deterministic_priv_key().address)
+ node.generatetoaddress(241, node.get_deterministic_priv_key().address)
self.log.info("Create 4 peers and protect them from eviction by sending us a block")
for _ in range(4):
diff --git a/test/functional/p2p_feefilter.py b/test/functional/p2p_feefilter.py
index 51b7623fe..a1dcb4142 100755
--- a/test/functional/p2p_feefilter.py
+++ b/test/functional/p2p_feefilter.py
@@ -80,7 +80,7 @@ class FeeFilterTest(BitcoinTestFramework):
miniwallet = MiniWallet(node1)
# Add enough mature utxos to the wallet, so that all txs spend confirmed coins
miniwallet.generate(5)
- node1.generate(100)
+ node1.generate(240)
conn = self.nodes[0].add_p2p_connection(TestP2PConn())
diff --git a/test/functional/p2p_invalid_block.py b/test/functional/p2p_invalid_block.py
index 483f25f48..327ed4c92 100755
--- a/test/functional/p2p_invalid_block.py
+++ b/test/functional/p2p_invalid_block.py
@@ -45,7 +45,7 @@ class InvalidBlockRequestTest(BitcoinTestFramework):
peer.send_blocks_and_test([block1], node, success=True)
self.log.info("Mature the block.")
- node.generatetoaddress(100, node.get_deterministic_priv_key().address)
+ node.generatetoaddress(240, node.get_deterministic_priv_key().address)
best_block = node.getblock(node.getbestblockhash())
tip = int(node.getbestblockhash(), 16)
diff --git a/test/functional/p2p_invalid_tx.py b/test/functional/p2p_invalid_tx.py
index 489d903c2..c3d87d7ab 100755
--- a/test/functional/p2p_invalid_tx.py
+++ b/test/functional/p2p_invalid_tx.py
@@ -64,7 +64,7 @@ class InvalidTxRequestTest(BitcoinTestFramework):
node.p2ps[0].send_blocks_and_test([block], node, success=True)
self.log.info("Mature the block.")
- self.nodes[0].generatetoaddress(100, self.nodes[0].get_deterministic_priv_key().address)
+ self.nodes[0].generatetoaddress(240, self.nodes[0].get_deterministic_priv_key().address)
# Iterate through a list of known invalid transaction types, ensuring each is
# rejected. Some are consensus invalid and some just violate policy.
diff --git a/test/functional/p2p_leak.py b/test/functional/p2p_leak.py
index 4b32d60db..52b6afd37 100755
--- a/test/functional/p2p_leak.py
+++ b/test/functional/p2p_leak.py
@@ -141,7 +141,7 @@ class P2PLeakTest(BitcoinTestFramework):
assert_greater_than_or_equal(time.time() + 3600, ver.nTime)
assert_equal(ver.addrFrom.port, 0)
assert_equal(ver.addrFrom.ip, '0.0.0.0')
- assert_equal(ver.nStartingHeight, 201)
+ assert_equal(ver.nStartingHeight, 341)
assert_equal(ver.nRelay, 1)
self.log.info('Check that old peers are disconnected')
diff --git a/test/functional/p2p_leak_tx.py b/test/functional/p2p_leak_tx.py
index a45f792e8..f9d97fe63 100755
--- a/test/functional/p2p_leak_tx.py
+++ b/test/functional/p2p_leak_tx.py
@@ -27,7 +27,7 @@ class P2PLeakTxTest(BitcoinTestFramework):
miniwallet = MiniWallet(gen_node)
# Add enough mature utxos to the wallet, so that all txs spend confirmed coins
miniwallet.generate(1)
- gen_node.generate(100)
+ gen_node.generate(240)
inbound_peer = self.nodes[0].add_p2p_connection(P2PNode()) # An "attacking" inbound peer
diff --git a/test/functional/p2p_permissions.py b/test/functional/p2p_permissions.py
index ed82e6a2e..cd9d2f5b2 100755
--- a/test/functional/p2p_permissions.py
+++ b/test/functional/p2p_permissions.py
@@ -116,7 +116,7 @@ class P2PPermissionsTests(BitcoinTestFramework):
self.nodes[1].assert_start_raises_init_error(["[email protected]/10"], "Cannot resolve -whitebind address", match=ErrorMatch.PARTIAL_REGEX)
def check_tx_relay(self):
- block_op_true = self.nodes[0].getblock(self.nodes[0].generatetoaddress(100, ADDRESS_BCRT1_P2WSH_OP_TRUE)[0])
+ block_op_true = self.nodes[0].getblock(self.nodes[0].generatetoaddress(240, ADDRESS_BCRT1_P2WSH_OP_TRUE)[0])
self.sync_all()
self.log.debug("Create a connection from a forcerelay peer that rebroadcasts raw txs")
diff --git a/test/functional/p2p_segwit.py b/test/functional/p2p_segwit.py
index 5d7434dc9..350437442 100755
--- a/test/functional/p2p_segwit.py
+++ b/test/functional/p2p_segwit.py
@@ -92,7 +92,7 @@ VB_TOP_BITS = 0x20000000
MAX_SIGOP_COST = 80000
-SEGWIT_HEIGHT = 120
+SEGWIT_HEIGHT = 260
class UTXO():
"""Used to keep track of anyone-can-spend outputs that we can use in the tests."""
@@ -336,7 +336,7 @@ class SegWitTest(BitcoinTestFramework):
self.test_node.send_and_ping(msg_no_witness_block(block)) # make sure the block was processed
txid = block.vtx[0].sha256
- self.nodes[0].generate(99) # let the block mature
+ self.nodes[0].generate(239) # let the block mature
# Create a transaction that spends the coinbase
tx = CTransaction()
@@ -1484,7 +1484,7 @@ class SegWitTest(BitcoinTestFramework):
spend_tx.rehash()
# Now test a premature spend.
- self.nodes[0].generate(98)
+ self.nodes[0].generate(238)
self.sync_blocks()
block2 = self.build_next_block()
self.update_witness_block_with_transactions(block2, [spend_tx])
diff --git a/test/functional/rpc_blockchain.py b/test/functional/rpc_blockchain.py
index f96567740..7618ccb3a 100755
--- a/test/functional/rpc_blockchain.py
+++ b/test/functional/rpc_blockchain.py
@@ -125,10 +125,10 @@ class BlockchainTest(BitcoinTestFramework):
assert_greater_than(res['size_on_disk'], 0)
assert_equal(res['softforks'], {
- 'bip34': {'type': 'buried', 'active': False, 'height': 500},
+ 'bip34': {'type': 'buried', 'active': False, 'height': 1000},
'bip66': {'type': 'buried', 'active': False, 'height': 1251},
'bip65': {'type': 'buried', 'active': False, 'height': 1351},
- 'csv': {'type': 'buried', 'active': False, 'height': 432},
+ 'csv': {'type': 'buried', 'active': False, 'height': 720},
'segwit': {'type': 'buried', 'active': True, 'height': 0},
'testdummy': {
'type': 'bip9',
diff --git a/test/functional/rpc_createmultisig.py b/test/functional/rpc_createmultisig.py
index 3b65d4ca8..6ffd39be4 100755
--- a/test/functional/rpc_createmultisig.py
+++ b/test/functional/rpc_createmultisig.py
@@ -45,7 +45,7 @@ class RpcCreateMultiSigTest(BitcoinTestFramework):
self.check_addmultisigaddress_errors()
self.log.info('Generating blocks ...')
- node0.generate(149)
+ node0.generate(249)
self.sync_all()
self.moved = 0
@@ -109,16 +109,20 @@ class RpcCreateMultiSigTest(BitcoinTestFramework):
def checkbalances(self):
node0, node1, node2 = self.nodes
- node0.generate(100)
+ node0.generate(240)
self.sync_all()
bal0 = node0.getbalance()
bal1 = node1.getbalance()
bal2 = node2.getbalance()
- height = node0.getblockchaininfo()["blocks"]
- assert 150 < height < 350
- total = 149 * 50 + (height - 149 - 100) * 25
+ height_remaining = node0.getblockchaininfo()["blocks"] - 240
+ total = 0
+ reward = 50.0
+ while height_remaining > 0:
+ total = total + min(149, height_remaining) * reward
+ reward = reward / 2
+ height_remaining = max(0, height_remaining - 149)
assert bal1 == 0
assert bal2 == self.moved
assert bal0 + bal1 + bal2 == total
diff --git a/test/functional/rpc_deprecated.py b/test/functional/rpc_deprecated.py
index adcd8a7d4..a79aa1294 100755
--- a/test/functional/rpc_deprecated.py
+++ b/test/functional/rpc_deprecated.py
@@ -13,6 +13,9 @@ class DeprecatedRpcTest(BitcoinTestFramework):
self.extra_args = [[], ['-deprecatedrpc=bumpfee']]
def run_test(self):
+ # The framework creates 200 blocks, we need some to mature, so mine 140 more
+ self.nodes[0].generate(140)
+
# This test should be used to verify correct behaviour of deprecated
# RPC methods with and without the -deprecatedrpc flags. For example:
#
diff --git a/test/functional/rpc_fundrawtransaction.py b/test/functional/rpc_fundrawtransaction.py
index 4e7ecada4..1bdb5f33b 100755
--- a/test/functional/rpc_fundrawtransaction.py
+++ b/test/functional/rpc_fundrawtransaction.py
@@ -62,7 +62,7 @@ class RawTransactionsTest(BitcoinTestFramework):
self.nodes[2].generate(1)
self.sync_all()
- self.nodes[0].generate(121)
+ self.nodes[0].generate(261)
self.sync_all()
self.test_change_position()
diff --git a/test/functional/rpc_getblockstats.py b/test/functional/rpc_getblockstats.py
index 57794ae97..df3b79ea1 100755
--- a/test/functional/rpc_getblockstats.py
+++ b/test/functional/rpc_getblockstats.py
@@ -18,7 +18,7 @@ TESTSDIR = os.path.dirname(os.path.realpath(__file__))
class GetblockstatsTest(BitcoinTestFramework):
- start_height = 101
+ start_height = 241
max_stat_pos = 2
def add_options(self, parser):
@@ -41,7 +41,7 @@ class GetblockstatsTest(BitcoinTestFramework):
def generate_test_data(self, filename):
mocktime = 1525107225
self.nodes[0].setmocktime(mocktime)
- self.nodes[0].generate(101)
+ self.nodes[0].generate(241)
address = self.nodes[0].get_deterministic_priv_key().address
self.nodes[0].sendtoaddress(address=address, amount=10, subtractfeefromamount=True)
diff --git a/test/functional/rpc_getchaintips.py b/test/functional/rpc_getchaintips.py
index 8dc847437..f7d6f070d 100755
--- a/test/functional/rpc_getchaintips.py
+++ b/test/functional/rpc_getchaintips.py
@@ -21,7 +21,7 @@ class GetChainTipsTest (BitcoinTestFramework):
tips = self.nodes[0].getchaintips()
assert_equal(len(tips), 1)
assert_equal(tips[0]['branchlen'], 0)
- assert_equal(tips[0]['height'], 200)
+ assert_equal(tips[0]['height'], 340)
assert_equal(tips[0]['status'], 'active')
# Split the network and build two chains of different lengths.
@@ -35,14 +35,14 @@ class GetChainTipsTest (BitcoinTestFramework):
assert_equal (len (tips), 1)
shortTip = tips[0]
assert_equal (shortTip['branchlen'], 0)
- assert_equal (shortTip['height'], 210)
+ assert_equal (shortTip['height'], 350)
assert_equal (tips[0]['status'], 'active')
tips = self.nodes[3].getchaintips ()
assert_equal (len (tips), 1)
longTip = tips[0]
assert_equal (longTip['branchlen'], 0)
- assert_equal (longTip['height'], 220)
+ assert_equal (longTip['height'], 360)
assert_equal (tips[0]['status'], 'active')
# Join the network halves and check that we now have two tips
diff --git a/test/functional/rpc_misc.py b/test/functional/rpc_misc.py
index 0493ceeb6..b30b288ff 100755
--- a/test/functional/rpc_misc.py
+++ b/test/functional/rpc_misc.py
@@ -73,8 +73,8 @@ class RpcMiscTest(BitcoinTestFramework):
assert_equal(
node.getindexinfo(),
{
- "txindex": {"synced": True, "best_block_height": 200},
- "basic block filter index": {"synced": True, "best_block_height": 200}
+ "txindex": {"synced": True, "best_block_height": 340},
+ "basic block filter index": {"synced": True, "best_block_height": 340}
}
)
@@ -82,7 +82,7 @@ class RpcMiscTest(BitcoinTestFramework):
assert_equal(
node.getindexinfo("txindex"),
{
- "txindex": {"synced": True, "best_block_height": 200},
+ "txindex": {"synced": True, "best_block_height": 340},
}
)
diff --git a/test/functional/rpc_net.py b/test/functional/rpc_net.py
index 2efd09073..e716695f9 100755
--- a/test/functional/rpc_net.py
+++ b/test/functional/rpc_net.py
@@ -49,7 +49,7 @@ class NetTest(BitcoinTestFramework):
def run_test(self):
# Get out of IBD for the minfeefilter and getpeerinfo tests.
- self.nodes[0].generate(101)
+ self.nodes[0].generate(241)
# By default, the test framework sets up an addnode connection from
# node 1 --> node0. By connecting node0 --> node 1, we're left with
diff --git a/test/functional/rpc_rawtransaction.py b/test/functional/rpc_rawtransaction.py
index 60e66a27c..3f506c4d0 100755
--- a/test/functional/rpc_rawtransaction.py
+++ b/test/functional/rpc_rawtransaction.py
@@ -66,7 +66,7 @@ class RawTransactionsTest(BitcoinTestFramework):
self.log.info('prepare some coins for multiple *rawtransaction commands')
self.nodes[2].generate(1)
self.sync_all()
- self.nodes[0].generate(101)
+ self.nodes[0].generate(241)
self.sync_all()
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(),1.5)
self.nodes[0].sendtoaddress(self.nodes[2].getnewaddress(),1.0)
diff --git a/test/functional/rpc_scantxoutset.py b/test/functional/rpc_scantxoutset.py
index 4feccf4c0..962ba005f 100644
--- a/test/functional/rpc_scantxoutset.py
+++ b/test/functional/rpc_scantxoutset.py
@@ -23,7 +23,7 @@ class ScantxoutsetTest(BitcoinTestFramework):
def run_test(self):
self.log.info("Mining blocks...")
- self.nodes[0].generate(110)
+ self.nodes[0].generate(250)
addr_P2SH_SEGWIT = self.nodes[0].getnewaddress("", "p2sh-segwit")
pubk1 = self.nodes[0].getaddressinfo(addr_P2SH_SEGWIT)['pubkey']
diff --git a/test/functional/rpc_signrawtransaction.py b/test/functional/rpc_signrawtransaction.py
index 718da89d7..e554b4962 100755
--- a/test/functional/rpc_signrawtransaction.py
+++ b/test/functional/rpc_signrawtransaction.py
@@ -160,7 +160,7 @@ class SignRawTransactionsTest(BitcoinTestFramework):
embedded_pubkey = eckey.get_pubkey().get_bytes().hex()
p2sh_p2wsh_address = self.nodes[1].createmultisig(1, [embedded_pubkey], "p2sh-segwit")
# send transaction to P2SH-P2WSH 1-of-1 multisig address
- self.nodes[0].generate(101)
+ self.nodes[0].generate(241)
self.nodes[0].sendtoaddress(p2sh_p2wsh_address["address"], 49.999)
self.nodes[0].generate(1)
self.sync_all()
diff --git a/test/functional/rpc_txoutproof.py b/test/functional/rpc_txoutproof.py
index 93fb62c5d..47e089873 100755
--- a/test/functional/rpc_txoutproof.py
+++ b/test/functional/rpc_txoutproof.py
@@ -23,11 +23,11 @@ class MerkleBlockTest(BitcoinTestFramework):
miniwallet = MiniWallet(self.nodes[0])
# Add enough mature utxos to the wallet, so that all txs spend confirmed coins
miniwallet.generate(5)
- self.nodes[0].generate(100)
+ self.nodes[0].generate(240)
self.sync_all()
chain_height = self.nodes[1].getblockcount()
- assert_equal(chain_height, 105)
+ assert_equal(chain_height, 245)
txid1 = miniwallet.send_self_transfer(from_node=self.nodes[0])['txid']
txid2 = miniwallet.send_self_transfer(from_node=self.nodes[0])['txid']
diff --git a/test/functional/test_framework/test_framework.py b/test/functional/test_framework/test_framework.py
index f71e1a48b..f42f279cc 100755
--- a/test/functional/test_framework/test_framework.py
+++ b/test/functional/test_framework/test_framework.py
@@ -383,7 +383,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
self.import_deterministic_coinbase_privkeys()
if not self.setup_clean_chain:
for n in self.nodes:
- assert_equal(n.getblockchaininfo()["blocks"], 199)
+ assert_equal(n.getblockchaininfo()["blocks"], 339)
# To ensure that all nodes are out of IBD, the most recent block
# must have a timestamp not too old (see IsInitialBlockDownload()).
self.log.debug('Generate a block with current time')
@@ -392,7 +392,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
for n in self.nodes:
n.submitblock(block)
chain_info = n.getblockchaininfo()
- assert_equal(chain_info["blocks"], 200)
+ assert_equal(chain_info["blocks"], 340)
assert_equal(chain_info["initialblockdownload"], False)
def import_deterministic_coinbase_privkeys(self):
@@ -682,7 +682,7 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
def _initialize_chain(self):
"""Initialize a pre-mined blockchain for use by the test.
- Create a cache of a 199-block-long chain
+ Create a cache of a 339-block-long chain
Afterward, create num_nodes copies from the cache."""
CACHE_NODE_ID = 0 # Use node 0 to create the cache for all other nodes
@@ -718,19 +718,24 @@ class BitcoinTestFramework(metaclass=BitcoinTestMetaClass):
# Set a time in the past, so that blocks don't end up in the future
cache_node.setmocktime(cache_node.getblockheader(cache_node.getbestblockhash())['time'])
- # Create a 199-block-long chain; each of the 4 first nodes
- # gets 25 mature blocks and 25 immature.
- # The 4th node gets only 24 immature blocks so that the very last
+ # Create a 339-block-long chain; each of the 4 first nodes
+ # gets 25 mature blocks and 60 immature.
+ # The 4th node gets only 59 immature blocks so that the very last
# block in the cache does not age too much (have an old tip age).
# This is needed so that we are out of IBD when the test starts,
# see the tip age check in IsInitialBlockDownload().
- for i in range(8):
+ for i in range(4):
cache_node.generatetoaddress(
- nblocks=25 if i != 7 else 24,
+ nblocks=25,
+ address=TestNode.PRIV_KEYS[i % 4].address,
+ )
+ for i in range(4):
+ cache_node.generatetoaddress(
+ nblocks=60 if i != 3 else 59,
address=TestNode.PRIV_KEYS[i % 4].address,
)
- assert_equal(cache_node.getblockchaininfo()["blocks"], 199)
+ assert_equal(cache_node.getblockchaininfo()["blocks"], 339)
# Shut it down, and clean up cache directories:
self.stop_nodes()
diff --git a/test/functional/test_framework/util.py b/test/functional/test_framework/util.py
index 9f52b4e81..f7abdd6b2 100644
--- a/test/functional/test_framework/util.py
+++ b/test/functional/test_framework/util.py
@@ -440,7 +440,7 @@ def find_output(node, txid, amount, *, blockhash=None):
# Helper to create at least "count" utxos
# Pass in a fee that is sufficient for relay and mining new transactions.
def create_confirmed_utxos(fee, node, count):
- to_generate = int(0.5 * count) + 101
+ to_generate = int(0.5 * count) + 241
while to_generate > 0:
node.generate(min(25, to_generate))
to_generate -= 25
diff --git a/test/functional/test_runner.py b/test/functional/test_runner.py
index 35e9fa8bd..bd22f20f4 100755
--- a/test/functional/test_runner.py
+++ b/test/functional/test_runner.py
@@ -83,6 +83,14 @@ EXTENDED_SCRIPTS = [
'feature_dbcrash.py',
]
+# Scripts which use Bitcoin blockchain data
+# TODO: Identify an equivalent scenario in Dogecoin testnet, or generate an equivalent scenario if none occurs naturally
+BITCOIN_ONLY_SCRIPTS = [
+ # These tests are not run by default.
+ # Longest test should go first, to favor running tests in parallel
+ 'p2p_dos_header_tree.py',
+]
+
COMPATIBILITY_SCRIPTS = [
# These tests are not run by default.
# Longest test should go first, to favor running tests in parallel
@@ -266,7 +274,6 @@ BASE_SCRIPTS = [
'wallet_coinbase_category.py --descriptors',
'feature_filelock.py',
'feature_loadblock.py',
- 'p2p_dos_header_tree.py',
'p2p_unrequested_blocks.py',
'p2p_blockfilters.py',
'feature_includeconf.py',
@@ -294,7 +301,7 @@ BASE_SCRIPTS = [
]
# Place EXTENDED_SCRIPTS first since it has the 3 longest running tests
-ALL_SCRIPTS = EXTENDED_SCRIPTS + BASE_SCRIPTS + COMPATIBILITY_SCRIPTS
+ALL_SCRIPTS = EXTENDED_SCRIPTS + BASE_SCRIPTS + BITCOIN_ONLY_SCRIPTS + COMPATIBILITY_SCRIPTS
NON_SCRIPTS = [
# These are python files that live in the functional tests directory, but are not test scripts.
@@ -312,6 +319,7 @@ def main():
Help text and arguments for individual test script:''',
formatter_class=argparse.RawTextHelpFormatter)
parser.add_argument('--ansi', action='store_true', default=sys.stdout.isatty(), help="Use ANSI colors and dots in output (enabled by default when standard output is a TTY)")
+ parser.add_argument('--bitcoin', action='store_true', help='run the Bitcoin testnet based test suite in addition to the basic tests')
parser.add_argument('--combinedlogslen', '-c', type=int, default=0, metavar='n', help='On failure, print a log (of length n lines) to the console, combined from the test framework and all test nodes.')
parser.add_argument('--coverage', action='store_true', help='generate a basic coverage report for the RPC interface')
parser.add_argument('--ci', action='store_true', help='Run checks and code that are usually only enabled in a continuous integration environment')
@@ -387,6 +395,9 @@ def main():
print("{}WARNING!{} Test '{}' not found in full test list.".format(BOLD[1], BOLD[0], test))
else:
test_list += BASE_SCRIPTS
+ if args.bitcoin:
+ # Include Bitcoin compatibility tests
+ test_list += BITCOIN_ONLY_SCRIPTS
if args.compatibility:
# Include backwards compatibility tests
test_list += COMPATIBILITY_SCRIPTS
diff --git a/test/functional/wallet_abandonconflict.py b/test/functional/wallet_abandonconflict.py
index 2e0edcfa3..0b1c7a5fb 100755
--- a/test/functional/wallet_abandonconflict.py
+++ b/test/functional/wallet_abandonconflict.py
@@ -28,7 +28,7 @@ class AbandonConflictTest(BitcoinTestFramework):
self.skip_if_no_wallet()
def run_test(self):
- self.nodes[1].generate(100)
+ self.nodes[1].generate(240)
self.sync_blocks()
balance = self.nodes[0].getbalance()
txA = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), Decimal("10"))
diff --git a/test/functional/wallet_address_types.py b/test/functional/wallet_address_types.py
index 2db5eae33..cf28a10bf 100755
--- a/test/functional/wallet_address_types.py
+++ b/test/functional/wallet_address_types.py
@@ -220,7 +220,7 @@ class AddressTypeTest(BitcoinTestFramework):
def run_test(self):
# Mine 101 blocks on node5 to bring nodes out of IBD and make sure that
# no coinbases are maturing for the nodes-under-test during the test
- self.nodes[5].generate(101)
+ self.nodes[5].generate(241)
self.sync_blocks()
uncompressed_1 = "0496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858ee"
diff --git a/test/functional/wallet_avoidreuse.py b/test/functional/wallet_avoidreuse.py
index 229c134a4..44c49870e 100755
--- a/test/functional/wallet_avoidreuse.py
+++ b/test/functional/wallet_avoidreuse.py
@@ -80,7 +80,7 @@ class AvoidReuseTest(BitcoinTestFramework):
self.test_persistence()
self.test_immutable()
- self.nodes[0].generate(110)
+ self.nodes[0].generate(250)
self.sync_all()
self.test_change_remains_change(self.nodes[1])
reset_balance(self.nodes[1], self.nodes[0].getnewaddress())
diff --git a/test/functional/wallet_backup.py b/test/functional/wallet_backup.py
index f34c1345e..d774623c0 100755
--- a/test/functional/wallet_backup.py
+++ b/test/functional/wallet_backup.py
@@ -8,7 +8,7 @@ Test case is:
4 nodes. 1 2 and 3 send transactions between each other,
fourth node is a miner.
1 2 3 each mine a block to start, then
-Miner creates 100 blocks so 1 2 3 each have 50 mature
+Miner creates 240 blocks so 1 2 3 each have 50 mature
coins to spend.
Then 5 iterations of 1/2/3 sending coins amongst
themselves to get transactions in the wallets,
@@ -17,11 +17,11 @@ and the miner mining one block.
Wallets are backed up using dumpwallet/backupwallet.
Then 5 more iterations of transactions and mining a block.
-Miner then generates 101 more blocks, so any
+Miner then generates 241 more blocks, so any
transaction fees paid mature.
Sanity check:
- Sum(1,2,3,4 balances) == 114*50
+ Sum(1,2,3,4 balances) == (149 * 50) + (105 * 25)
1/2/3 are shutdown, and their wallets erased.
Then restore using wallet.dat backup. And
@@ -123,7 +123,7 @@ class WalletBackupTest(BitcoinTestFramework):
self.sync_blocks()
self.nodes[2].generate(1)
self.sync_blocks()
- self.nodes[3].generate(100)
+ self.nodes[3].generate(240)
self.sync_blocks()
assert_equal(self.nodes[0].getbalance(), 50)
@@ -151,8 +151,8 @@ class WalletBackupTest(BitcoinTestFramework):
for _ in range(5):
self.do_one_round()
- # Generate 101 more blocks, so any fees paid mature
- self.nodes[3].generate(101)
+ # Generate 241 more blocks, so any fees paid mature
+ self.nodes[3].generate(241)
self.sync_all()
balance0 = self.nodes[0].getbalance()
@@ -161,9 +161,9 @@ class WalletBackupTest(BitcoinTestFramework):
balance3 = self.nodes[3].getbalance()
total = balance0 + balance1 + balance2 + balance3
- # At this point, there are 214 blocks (103 for setup, then 10 rounds, then 101.)
- # 114 are mature, so the sum of all wallets should be 114 * 50 = 5700.
- assert_equal(total, 5700)
+ # At this point, there are 494 blocks (243 for setup, then 10 rounds, then 241.)
+ # 254 are mature, so the sum of all wallets should be (149 * 50) + (105 * 25) = 10075.
+ assert_equal(total, 10075)
##
# Test restoring spender wallets from backups
diff --git a/test/functional/wallet_balance.py b/test/functional/wallet_balance.py
index 0e786ca59..cf1328c91 100755
--- a/test/functional/wallet_balance.py
+++ b/test/functional/wallet_balance.py
@@ -72,7 +72,7 @@ class WalletTest(BitcoinTestFramework):
self.nodes[0].generate(1)
self.sync_all()
self.nodes[1].generate(1)
- self.nodes[1].generatetoaddress(101, ADDRESS_WATCHONLY)
+ self.nodes[1].generatetoaddress(241, ADDRESS_WATCHONLY)
self.sync_all()
if not self.options.descriptors:
@@ -81,7 +81,7 @@ class WalletTest(BitcoinTestFramework):
assert_equal(self.nodes[0].getwalletinfo()['balance'], 50)
assert_equal(self.nodes[1].getbalances()['mine']['trusted'], 50)
- assert_equal(self.nodes[0].getbalances()['watchonly']['immature'], 5000)
+ assert_equal(self.nodes[0].getbalances()['watchonly']['immature'], 9650)
assert 'watchonly' not in self.nodes[1].getbalances()
assert_equal(self.nodes[0].getbalance(), 50)
@@ -158,7 +158,7 @@ class WalletTest(BitcoinTestFramework):
expected_balances_0 = {'mine': {'immature': Decimal('0E-8'),
'trusted': Decimal('9.99'), # change from node 0's send
'untrusted_pending': Decimal('60.0')},
- 'watchonly': {'immature': Decimal('5000'),
+ 'watchonly': {'immature': Decimal('9650'),
'trusted': Decimal('50.0'),
'untrusted_pending': Decimal('0E-8')}}
expected_balances_1 = {'mine': {'immature': Decimal('0E-8'),
diff --git a/test/functional/wallet_basic.py b/test/functional/wallet_basic.py
index 6712e0346..d54cc57ad 100755
--- a/test/functional/wallet_basic.py
+++ b/test/functional/wallet_basic.py
@@ -64,7 +64,7 @@ class WalletTest(BitcoinTestFramework):
assert_equal(walletinfo['balance'], 0)
self.sync_all(self.nodes[0:3])
- self.nodes[1].generate(101)
+ self.nodes[1].generate(241)
self.sync_all(self.nodes[0:3])
assert_equal(self.nodes[0].getbalance(), 50)
@@ -154,13 +154,13 @@ class WalletTest(BitcoinTestFramework):
self.nodes[1].sendrawtransaction(tx)
assert_equal(len(self.nodes[1].listlockunspent()), 0)
- # Have node1 generate 100 blocks (so node0 can recover the fee)
- self.nodes[1].generate(100)
+ # Have node1 generate 241 blocks (so node0 can recover the fee)
+ self.nodes[1].generate(240)
self.sync_all(self.nodes[0:3])
- # node0 should end up with 100 btc in block rewards plus fees, but
+ # node0 should end up with 50 + 25 doge in block rewards plus fees, but
# minus the 21 plus fees sent to node2
- assert_equal(self.nodes[0].getbalance(), 100 - 21)
+ assert_equal(self.nodes[0].getbalance(), 75 - 21)
assert_equal(self.nodes[2].getbalance(), 21)
# Node0 should have two unspent outputs.
@@ -188,7 +188,7 @@ class WalletTest(BitcoinTestFramework):
self.sync_all(self.nodes[0:3])
assert_equal(self.nodes[0].getbalance(), 0)
- assert_equal(self.nodes[2].getbalance(), 94)
+ assert_equal(self.nodes[2].getbalance(), 69)
# Verify that a spent output cannot be locked anymore
spent_0 = {"txid": node0utxos[0]["txid"], "vout": node0utxos[0]["vout"]}
@@ -201,7 +201,7 @@ class WalletTest(BitcoinTestFramework):
txid = self.nodes[2].sendtoaddress(address, 10, "", "", False)
self.nodes[2].generate(1)
self.sync_all(self.nodes[0:3])
- node_2_bal = self.check_fee_amount(self.nodes[2].getbalance(), Decimal('84'), fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
+ node_2_bal = self.check_fee_amount(self.nodes[2].getbalance(), Decimal('59'), fee_per_byte, self.get_vsize(self.nodes[2].gettransaction(txid)['hex']))
assert_equal(self.nodes[0].getbalance(), Decimal('10'))
# Send 10 BTC with subtract fee from amount
diff --git a/test/functional/wallet_bumpfee.py b/test/functional/wallet_bumpfee.py
index 9227d459c..880b86f6e 100755
--- a/test/functional/wallet_bumpfee.py
+++ b/test/functional/wallet_bumpfee.py
@@ -66,6 +66,8 @@ class BumpFeeTest(BitcoinTestFramework):
# fund rbf node with 10 coins of 0.001 btc (100,000 satoshis)
self.log.info("Mining blocks...")
peer_node.generate(110)
+ # Dogecoin: Coinbase maturity is much higher, so we mine to the RBF node for funding
+ rbf_node.generate(140)
self.sync_all()
for _ in range(25):
peer_node.sendtoaddress(rbf_node_address, 0.001)
diff --git a/test/functional/wallet_coinbase_category.py b/test/functional/wallet_coinbase_category.py
index 7aa8b44eb..685e96f4c 100755
--- a/test/functional/wallet_coinbase_category.py
+++ b/test/functional/wallet_coinbase_category.py
@@ -40,20 +40,20 @@ class CoinbaseCategoryTest(BitcoinTestFramework):
# Coinbase transaction is immature after 1 confirmation
self.assert_category("immature", address, txid, 0)
- # Mine another 99 blocks on top
- self.nodes[0].generate(99)
- # Coinbase transaction is still immature after 100 confirmations
- self.assert_category("immature", address, txid, 99)
+ # Mine another 239 blocks on top
+ self.nodes[0].generate(239)
+ # Coinbase transaction is still immature after 240 confirmations
+ self.assert_category("immature", address, txid, 239)
# Mine one more block
self.nodes[0].generate(1)
# Coinbase transaction is now matured, so category is "generate"
- self.assert_category("generate", address, txid, 100)
+ self.assert_category("generate", address, txid, 240)
# Orphan block that paid to address
self.nodes[0].invalidateblock(hash)
# Coinbase transaction is now orphaned
- self.assert_category("orphan", address, txid, 100)
+ self.assert_category("orphan", address, txid, 240)
if __name__ == '__main__':
CoinbaseCategoryTest().main()
diff --git a/test/functional/wallet_create_tx.py b/test/functional/wallet_create_tx.py
index 0f11aca52..53d1130c4 100755
--- a/test/functional/wallet_create_tx.py
+++ b/test/functional/wallet_create_tx.py
@@ -24,7 +24,7 @@ class CreateTxWalletTest(BitcoinTestFramework):
def run_test(self):
self.log.info('Create some old blocks')
self.nodes[0].setmocktime(TIME_GENESIS_BLOCK)
- self.nodes[0].generate(200)
+ self.nodes[0].generate(250)
self.nodes[0].setmocktime(0)
self.test_anti_fee_sniping()
@@ -32,7 +32,7 @@ class CreateTxWalletTest(BitcoinTestFramework):
def test_anti_fee_sniping(self):
self.log.info('Check that we have some (old) blocks and that anti-fee-sniping is disabled')
- assert_equal(self.nodes[0].getblockchaininfo()['blocks'], 200)
+ assert_equal(self.nodes[0].getblockchaininfo()['blocks'], 250)
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1)
tx = self.nodes[0].decoderawtransaction(self.nodes[0].gettransaction(txid)['hex'])
assert_equal(tx['locktime'], 0)
@@ -41,7 +41,7 @@ class CreateTxWalletTest(BitcoinTestFramework):
self.nodes[0].generate(1)
txid = self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1)
tx = self.nodes[0].decoderawtransaction(self.nodes[0].gettransaction(txid)['hex'])
- assert 0 < tx['locktime'] <= 201
+ assert 0 < tx['locktime'] <= 251
def test_tx_size_too_large(self):
# More than 10kB of outputs, so that we hit -maxtxfee with a high feerate
diff --git a/test/functional/wallet_descriptor.py b/test/functional/wallet_descriptor.py
index 0fec8ea4a..f7edbc876 100755
--- a/test/functional/wallet_descriptor.py
+++ b/test/functional/wallet_descriptor.py
@@ -80,7 +80,7 @@ class WalletDescriptorTest(BitcoinTestFramework):
send_wrpc = self.nodes[0].get_wallet_rpc("desc1")
# Generate some coins
- send_wrpc.generatetoaddress(101, send_wrpc.getnewaddress())
+ send_wrpc.generatetoaddress(241, send_wrpc.getnewaddress())
# Make transactions
self.log.info("Test sending and receiving")
diff --git a/test/functional/wallet_fallbackfee.py b/test/functional/wallet_fallbackfee.py
index dbf853b35..8204c3bed 100755
--- a/test/functional/wallet_fallbackfee.py
+++ b/test/functional/wallet_fallbackfee.py
@@ -15,7 +15,7 @@ class WalletRBFTest(BitcoinTestFramework):
self.skip_if_no_wallet()
def run_test(self):
- self.nodes[0].generate(101)
+ self.nodes[0].generate(241)
# sending a transaction without fee estimations must be possible by default on regtest
self.nodes[0].sendtoaddress(self.nodes[0].getnewaddress(), 1)
diff --git a/test/functional/wallet_groups.py b/test/functional/wallet_groups.py
index e5c4f12f2..ff6d430be 100755
--- a/test/functional/wallet_groups.py
+++ b/test/functional/wallet_groups.py
@@ -30,7 +30,7 @@ class WalletGroupTest(BitcoinTestFramework):
def run_test(self):
# Mine some coins
- self.nodes[0].generate(110)
+ self.nodes[0].generate(250)
# Get some addresses from the two nodes
addr1 = [self.nodes[1].getnewaddress() for _ in range(3)]
diff --git a/test/functional/wallet_hd.py b/test/functional/wallet_hd.py
index 9913d00d1..90aea7ca1 100755
--- a/test/functional/wallet_hd.py
+++ b/test/functional/wallet_hd.py
@@ -48,7 +48,7 @@ class WalletHDTest(BitcoinTestFramework):
# Derive some HD addresses and remember the last
# Also send funds to each add
- self.nodes[0].generate(101)
+ self.nodes[0].generate(241)
hd_add = None
NUM_HD_ADDS = 10
for i in range(1, NUM_HD_ADDS + 1):
diff --git a/test/functional/wallet_importdescriptors.py b/test/functional/wallet_importdescriptors.py
index d02fa40e6..dcc101ed3 100755
--- a/test/functional/wallet_importdescriptors.py
+++ b/test/functional/wallet_importdescriptors.py
@@ -73,7 +73,7 @@ class ImportDescriptorsTest(BitcoinTestFramework):
assert_equal(wpriv.getwalletinfo()['keypoolsize'], 0)
self.log.info('Mining coins')
- w0.generatetoaddress(101, w0.getnewaddress())
+ w0.generatetoaddress(241, w0.getnewaddress())
# RPC importdescriptors -----------------------------------------------
diff --git a/test/functional/wallet_importmulti.py b/test/functional/wallet_importmulti.py
index 1fc129e20..63ce73854 100755
--- a/test/functional/wallet_importmulti.py
+++ b/test/functional/wallet_importmulti.py
@@ -255,7 +255,7 @@ class ImportMultiTest(BitcoinTestFramework):
# P2SH address
multisig = get_multisig(self.nodes[0])
- self.nodes[1].generate(100)
+ self.nodes[1].generate(240)
self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00)
self.nodes[1].generate(1)
timestamp = self.nodes[1].getblock(self.nodes[1].getbestblockhash())['mediantime']
@@ -276,7 +276,7 @@ class ImportMultiTest(BitcoinTestFramework):
# P2SH + Redeem script
multisig = get_multisig(self.nodes[0])
- self.nodes[1].generate(100)
+ self.nodes[1].generate(240)
self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00)
self.nodes[1].generate(1)
timestamp = self.nodes[1].getblock(self.nodes[1].getbestblockhash())['mediantime']
@@ -297,7 +297,7 @@ class ImportMultiTest(BitcoinTestFramework):
# P2SH + Redeem script + Private Keys + !Watchonly
multisig = get_multisig(self.nodes[0])
- self.nodes[1].generate(100)
+ self.nodes[1].generate(240)
self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00)
self.nodes[1].generate(1)
timestamp = self.nodes[1].getblock(self.nodes[1].getbestblockhash())['mediantime']
@@ -323,7 +323,7 @@ class ImportMultiTest(BitcoinTestFramework):
# P2SH + Redeem script + Private Keys + Watchonly
multisig = get_multisig(self.nodes[0])
- self.nodes[1].generate(100)
+ self.nodes[1].generate(240)
self.nodes[1].sendtoaddress(multisig.p2sh_addr, 10.00)
self.nodes[1].generate(1)
timestamp = self.nodes[1].getblock(self.nodes[1].getbestblockhash())['mediantime']
diff --git a/test/functional/wallet_importprunedfunds.py b/test/functional/wallet_importprunedfunds.py
index d10d8ae1c..f6ca477b6 100755
--- a/test/functional/wallet_importprunedfunds.py
+++ b/test/functional/wallet_importprunedfunds.py
@@ -24,7 +24,7 @@ class ImportPrunedFundsTest(BitcoinTestFramework):
def run_test(self):
self.log.info("Mining blocks...")
- self.nodes[0].generate(101)
+ self.nodes[0].generate(241)
self.sync_all()
@@ -46,7 +46,7 @@ class ImportPrunedFundsTest(BitcoinTestFramework):
self.sync_all()
# Node 1 sync test
- assert_equal(self.nodes[1].getblockcount(), 101)
+ assert_equal(self.nodes[1].getblockcount(), 241)
# Address Test - before import
address_info = self.nodes[1].getaddressinfo(address1)
diff --git a/test/functional/wallet_keypool_topup.py b/test/functional/wallet_keypool_topup.py
index 78e06c591..e9ef94092 100755
--- a/test/functional/wallet_keypool_topup.py
+++ b/test/functional/wallet_keypool_topup.py
@@ -31,7 +31,7 @@ class KeypoolRestoreTest(BitcoinTestFramework):
def run_test(self):
wallet_path = os.path.join(self.nodes[1].datadir, self.chain, "wallets", self.default_wallet_name, self.wallet_data_filename)
wallet_backup_path = os.path.join(self.nodes[1].datadir, "wallet.bak")
- self.nodes[0].generate(101)
+ self.nodes[0].generate(241)
self.log.info("Make backup of wallet")
self.stop_node(1)
diff --git a/test/functional/wallet_labels.py b/test/functional/wallet_labels.py
index 796bf3b31..6916dba92 100755
--- a/test/functional/wallet_labels.py
+++ b/test/functional/wallet_labels.py
@@ -32,7 +32,7 @@ class WalletLabelsTest(BitcoinTestFramework):
# Note each time we call generate, all generated coins go into
# the same address, so we call twice to get two addresses w/50 each
node.generatetoaddress(nblocks=1, address=node.getnewaddress(label='coinbase'))
- node.generatetoaddress(nblocks=101, address=node.getnewaddress(label='coinbase'))
+ node.generatetoaddress(nblocks=241, address=node.getnewaddress(label='coinbase'))
assert_equal(node.getbalance(), 100)
# there should be 2 address groups
@@ -68,7 +68,7 @@ class WalletLabelsTest(BitcoinTestFramework):
# we want to reset so that the "" label has what's expected.
# otherwise we're off by exactly the fee amount as that's mined
- # and matures in the next 100 blocks
+ # and matures in the next 240 blocks
amount_to_send = 1.0
# Create labels and make sure subsequent label API calls
@@ -104,7 +104,7 @@ class WalletLabelsTest(BitcoinTestFramework):
label.verify(node)
assert_equal(node.getreceivedbylabel(label.name), 2)
label.verify(node)
- node.generate(101)
+ node.generate(241)
# Check that setlabel can assign a label to a new unused address.
for label in labels:
@@ -124,7 +124,7 @@ class WalletLabelsTest(BitcoinTestFramework):
label.add_address(multisig_address)
label.purpose[multisig_address] = "send"
label.verify(node)
- node.generate(101)
+ node.generate(241)
# Check that setlabel can change the label of an address from a
# different label.
diff --git a/test/functional/wallet_listsinceblock.py b/test/functional/wallet_listsinceblock.py
index 6a1b9097c..d44bb7040 100755
--- a/test/functional/wallet_listsinceblock.py
+++ b/test/functional/wallet_listsinceblock.py
@@ -29,7 +29,7 @@ class ListSinceBlockTest(BitcoinTestFramework):
# All nodes are in IBD from genesis, so they'll need the miner (node2) to be an outbound connection, or have
# only one connection. (See fPreferredDownload in net_processing)
self.connect_nodes(1, 2)
- self.nodes[2].generate(101)
+ self.nodes[2].generate(241)
self.sync_all()
self.test_no_blockhash()
diff --git a/test/functional/wallet_multiwallet.py b/test/functional/wallet_multiwallet.py
index 1fe792b88..4ab4614dc 100755
--- a/test/functional/wallet_multiwallet.py
+++ b/test/functional/wallet_multiwallet.py
@@ -227,7 +227,7 @@ class MultiWalletTest(BitcoinTestFramework):
assert_raises_rpc_error(-19, "Wallet file not specified", node.getwalletinfo)
w1, w2, w3, w4, *_ = wallets
- node.generatetoaddress(nblocks=101, address=w1.getnewaddress())
+ node.generatetoaddress(nblocks=241, address=w1.getnewaddress())
assert_equal(w1.getbalance(), 100)
assert_equal(w2.getbalance(), 0)
assert_equal(w3.getbalance(), 0)
diff --git a/test/functional/wallet_watchonly.py b/test/functional/wallet_watchonly.py
index b0c41b273..b4a4c7d85 100755
--- a/test/functional/wallet_watchonly.py
+++ b/test/functional/wallet_watchonly.py
@@ -37,7 +37,7 @@ class CreateWalletWatchonlyTest(BitcoinTestFramework):
wo_wallet.importpubkey(pubkey=def_wallet.getaddressinfo(wo_change)['pubkey'])
# generate some btc for testing
- node.generatetoaddress(101, a1)
+ node.generatetoaddress(241, a1)
# send 1 btc to our watch-only address
txid = def_wallet.sendtoaddress(wo_addr, 1)