diff --git a/bin/citrea/tests/e2e/sequencer_behaviour.rs b/bin/citrea/tests/e2e/sequencer_behaviour.rs index 2fc09a046..b385192e4 100644 --- a/bin/citrea/tests/e2e/sequencer_behaviour.rs +++ b/bin/citrea/tests/e2e/sequencer_behaviour.rs @@ -247,7 +247,7 @@ async fn transaction_failing_on_l1_is_removed_from_mempool() -> Result<(), anyho let random_wallet_address = random_wallet.address(); - let second_block_base_fee = 767970154; + let second_block_base_fee = 767969424; let _pending = seq_test_client .send_eth( diff --git a/bin/citrea/tests/evm/ethers_js/test.js b/bin/citrea/tests/evm/ethers_js/test.js index 838b37673..d537fec0d 100644 --- a/bin/citrea/tests/evm/ethers_js/test.js +++ b/bin/citrea/tests/evm/ethers_js/test.js @@ -121,7 +121,7 @@ describe("RpcTests", function() { it("getCode returns the correct code", async function() { let code = await provider.getCode("0x3200000000000000000000000000000000000001"); // BitcoinLightClient - expect(code).to.equal("0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056"); + expect(code).to.equal("0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056"); }); it("getStorage returns the correct storage", async function() { diff --git a/bin/citrea/tests/evm/web3_py/test.py b/bin/citrea/tests/evm/web3_py/test.py index 5e82d7bb4..3dbdd4d83 100644 --- a/bin/citrea/tests/evm/web3_py/test.py +++ b/bin/citrea/tests/evm/web3_py/test.py @@ -47,7 +47,7 @@ def test_get_storage_at(self): def test_get_code(self): code = self.web3.eth.get_code('0x3200000000000000000000000000000000000001') - self.assertEqual(code, HexBytes('0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056')) + self.assertEqual(code, HexBytes('0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056')) def test_get_block(self): block = self.web3.eth.get_block('latest') diff --git a/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json b/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json index ab77292e8..770bb9479 100644 --- a/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json +++ b/crates/evm/src/evm/system_contracts/out/BitcoinLightClient.sol/BitcoinLightClient.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"blockHashes","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blockNumber","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByHash","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initializeBlockNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlockInfo","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_witnessRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"witnessRoots","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"BlockInfoAdded","inputs":[{"name":"blockNumber","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"merkleRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b506106bb8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056","sourceMap":"675:4087:45:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056","sourceMap":"675:4087:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:130;;;;;;:::i;:::-;2791:7;2817:24;;;:12;:24;;;;;;;2718:130;;;;391:25:58;;;379:2;364:18;2718:130:45;;;;;;;;1944:395;;;;;;:::i;:::-;;:::i;:::-;;1366:174;;;;;;:::i;:::-;;:::i;861:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;4266:222;;;;;;:::i;:::-;;:::i;:::-;;;2295:14:58;;2288:22;2270:41;;2258:2;2243:18;4266:222:45;2130:187:58;732:26:45;;;;;;2984:149;;;;;;:::i;:::-;3061:7;3100:25;;;:11;:25;;;;;;;;;3087:39;;:12;:39;;;;;;;2984:149;913:47;;;;;;:::i;:::-;;;;;;;;;;;;;;3595:205;;;;;;:::i;:::-;;:::i;764:91::-;;812:42;764:91;;;;;-1:-1:-1;;;;;3437:32:58;;;3419:51;;3407:2;3392:18;764:91:45;3273:203:58;2460:125:45;;;;;;:::i;:::-;2527:7;2553:25;;;:11;:25;;;;;;;2460:125;1944:395;1098:10;812:42;1098:27;1090:71;;;;-1:-1:-1;;;1090:71:45;;3683:2:58;1090:71:45;;;3665:21:58;3722:2;3702:18;;;3695:30;3761:33;3741:18;;;3734:61;3812:18;;1090:71:45;;;;;;;;;2038:20:::1;2061:11:::0;;;2090:17;;;2082:45:::1;;;::::0;-1:-1:-1;;;2082:45:45;;4043:2:58;2082:45:45::1;::::0;::::1;4025:21:58::0;4082:2;4062:18;;;4055:30;-1:-1:-1;;;4101:18:58;;;4094:45;4156:18;;2082:45:45::1;3841:339:58::0;2082:45:45::1;2137:25;::::0;;;:11:::1;:25;::::0;;;;;;;:38;;;2199:16:::1;::::0;2149:12;;2199:16:::1;:::i;:::-;2185:11;:30:::0;;;2225:24;;;:12:::1;:24;::::0;;;;;;;:39;;;2294:11;;2279:53;;4614:25:58;;;4655:18;;;4648:34;;;4698:18;;;4691:34;;;2279:53:45::1;::::0;4602:2:58;4587:18;2279:53:45::1;;;;;;;2028:311;1944:395:::0;;:::o;1366:174::-;1098:10;812:42;1098:27;1090:71;;;;-1:-1:-1;;;1090:71:45;;3683:2:58;1090:71:45;;;3665:21:58;3722:2;3702:18;;;3695:30;3761:33;3741:18;;;3734:61;3812:18;;1090:71:45;3481:355:58;1090:71:45;1457:11:::1;::::0;:16;1449:48:::1;;;::::0;-1:-1:-1;;;1449:48:45;;4938:2:58;1449:48:45::1;::::0;::::1;4920:21:58::0;4977:2;4957:18;;;4950:30;-1:-1:-1;;;4996:18:58;;;4989:49;5055:18;;1449:48:45::1;4736:343:58::0;1449:48:45::1;1507:11;:26:::0;1366:174::o;4266:222::-;4391:4;4431:25;;;:11;:25;;;;;;4414:67;;4458:6;4466;;4474;4414:16;:67::i;:::-;4407:74;4266:222;-1:-1:-1;;;;;;4266:222:45:o;3595:205::-;3718:4;3741:52;3758:10;3770:6;3778;;3786;4494:266;4618:4;4657:24;;;:12;:24;;;;;;;;;4698:55;;;;;;;;;;;;;;;;;;;;4657:24;4698:55;;4716:6;;4657:24;;4698:55;4738:6;;;;;;4698:55;;4738:6;;;;4698:55;;;;;;;;;-1:-1:-1;4746:6:45;;-1:-1:-1;4698:17:45;;-1:-1:-1;;4698:55:45:i;:::-;4691:62;4494:266;-1:-1:-1;;;;;;;4494:266:45:o;1685:539:4:-;1843:4;1913:11;1904:5;:20;:35;;;;-1:-1:-1;1928:11:4;;1904:35;:69;;;;-1:-1:-1;1943:25:4;;:30;1904:69;1900:111;;;-1:-1:-1;1996:4:4;1989:11;;1900:111;2083:134;2125:5;2144:18;2176:11;2201:6;2083:28;:134::i;:::-;2076:141;;1685:539;;;;;;;:::o;36339:829:1:-;36492:4;36567:2;36552:5;:12;:17;;;;:::i;:::-;:22;36548:65;;-1:-1:-1;36597:5:1;36590:12;;36548:65;36657:5;:12;36673:1;36657:17;36653:60;;-1:-1:-1;36697:5:1;36690:12;;36653:60;36735:6;36770:5;36723:9;36825:303;36846:5;:12;36842:1;:16;36825:303;;;36887:8;36894:1;36887:4;:8;:::i;:::-;36899:1;36887:13;36883:205;;36931:46;36950:16;:5;36964:1;12550:28:2;12566:2;12550:28;12544:35;;12417:178;36950:16:1;36968:8;36931:18;:46::i;:::-;36920:57;;36883:205;;;37027:46;37046:8;37056:16;:5;37070:1;12550:28:2;12566:2;12550:28;12544:35;;12417:178;37056:16:1;37027:18;:46::i;:::-;37016:57;;36883:205;37116:1;37108:9;;;;;36860:7;36865:2;36860:7;;:::i;:::-;;;36825:303;;;-1:-1:-1;37144:17:1;;;;36339:829;-1:-1:-1;;;;;36339:829:1:o;34697:127::-;34772:7;34798:19;34810:2;34814;34798:11;:19::i;:::-;34791:26;;34697:127;;;;;:::o;10264:386::-;10332:11;10455:2;10449:4;10442:16;10484:2;10478:4;10471:16;10541:2;10535:4;10531:2;10525:4;10522:1;10515:5;10504:40;10500:45;10599:2;10593:4;10589:2;10583:4;10580:1;10573:5;10562:40;-1:-1:-1;;10629:4:1;10623:11;;10264:386;-1:-1:-1;;10264:386:1:o;14:226:58:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:58;;14:226;-1:-1:-1;14:226:58:o;427:346::-;495:6;503;556:2;544:9;535:7;531:23;527:32;524:52;;;572:1;569;562:12;524:52;-1:-1:-1;;617:23:58;;;737:2;722:18;;;709:32;;-1:-1:-1;427:346:58:o;1009:347::-;1060:8;1070:6;1124:3;1117:4;1109:6;1105:17;1101:27;1091:55;;1142:1;1139;1132:12;1091:55;-1:-1:-1;1165:20:58;;1208:18;1197:30;;1194:50;;;1240:1;1237;1230:12;1194:50;1277:4;1269:6;1265:17;1253:29;;1329:3;1322:4;1313:6;1305;1301:19;1297:30;1294:39;1291:59;;;1346:1;1343;1336:12;1291:59;1009:347;;;;;:::o;1361:764::-;1458:6;1466;1474;1482;1490;1543:3;1531:9;1522:7;1518:23;1514:33;1511:53;;;1560:1;1557;1550:12;1511:53;1605:23;;;-1:-1:-1;1725:2:58;1710:18;;1697:32;;-1:-1:-1;1806:2:58;1791:18;;1778:32;1833:18;1822:30;;1819:50;;;1865:1;1862;1855:12;1819:50;1904:58;1954:7;1945:6;1934:9;1930:22;1904:58;:::i;:::-;1361:764;;;;-1:-1:-1;1981:8:58;2089:2;2074:18;2061:32;;1361:764;-1:-1:-1;;;;1361:764:58:o;4185:222::-;4250:9;;;4271:10;;;4268:133;;;4323:10;4318:3;4314:20;4311:1;4304:31;4358:4;4355:1;4348:15;4386:4;4383:1;4376:15;5084:209;5116:1;5142;5132:132;;5186:10;5181:3;5177:20;5174:1;5167:31;5221:4;5218:1;5211:15;5249:4;5246:1;5239:15;5132:132;-1:-1:-1;5278:9:58;;5084:209::o","linkReferences":{}},"methodIdentifiers":{"SYSTEM_CALLER()":"d761753e","blockHashes(uint256)":"34cdf78d","blockNumber()":"57e871e7","getBlockHash(uint256)":"ee82ac5e","getWitnessRootByHash(bytes32)":"0466efc4","getWitnessRootByNumber(uint256)":"61b207e2","initializeBlockNumber(uint256)":"1f578333","setBlockInfo(bytes32,bytes32)":"0e27bc11","verifyInclusion(bytes32,bytes32,bytes,uint256)":"d269a03e","verifyInclusion(uint256,bytes32,bytes,uint256)":"4ffd344a","witnessRoots(bytes32)":"a91d8b3d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockInfoAdded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"}],\"name\":\"getWitnessRootByHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getWitnessRootByNumber\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"initializeBlockNumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_witnessRoot\",\"type\":\"bytes32\"}],\"name\":\"setBlockInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"witnessRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"kind\":\"dev\",\"methods\":{\"getBlockHash(uint256)\":{\"params\":{\"_blockNumber\":\"Number of the block to get the hash for\"},\"returns\":{\"_0\":\"Block hash for the given block\"}},\"getWitnessRootByHash(bytes32)\":{\"params\":{\"_blockHash\":\"Block hash of the block to get the witness root for\"},\"returns\":{\"_0\":\"Witness root for the given block\"}},\"getWitnessRootByNumber(uint256)\":{\"params\":{\"_blockNumber\":\"Block number of the block to get the witness root for\"},\"returns\":{\"_0\":\"Merkle root for the given block\"}},\"initializeBlockNumber(uint256)\":{\"params\":{\"_blockNumber\":\"L1 block number that is associated with the genesis block of Citrea\"}},\"setBlockInfo(bytes32,bytes32)\":{\"details\":\"Block number is incremented by the contract as no block info should be overwritten or skipped\",\"params\":{\"_blockHash\":\"Hash of the current L1 block\",\"_witnessRoot\":\"Witness root of the current L1 block, must be in little endian \"}},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockHash\":\"Block hash of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockNumber\":\"Block number of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}}},\"title\":\"A system contract that stores block hashes and witness root hashes of L1 blocks\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"initializeBlockNumber(uint256)\":{\"notice\":\"Sets the initial value for the block number, can only be called once\"},\"setBlockInfo(bytes32,bytes32)\":{\"notice\":\"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set\"},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/BitcoinLightClient.sol\":\"BitcoinLightClient\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":bitcoin-spv/=lib/bitcoin-spv/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x9c8acc0e16c7a02b3328bf41cf08922b43f1eaf780199a0cf4aefac61ad2528c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac95a3440699da490d6830aec1ad4d515d7bba605be570767b39cf7fbdd182e7\",\"dweb:/ipfs/QmUt8FcufKn5afs1n2cf2JF1wwti1pDSaNnxDzJNRcqyWf\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0xd299a79b3aec00e07839b7dcbed21d3d7d50e26c0149e730170f7761202552ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8cfcbc8fe666020b8a707d062e296dcf159737645a8c677975bad71b456b4ad\",\"dweb:/ipfs/QmSuDCXJFYpRpTXdiWVVwvm69yzmTZj7zMLmRPNazRR4dj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256","indexed":false},{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32","indexed":false}],"type":"event","name":"BlockInfoAdded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getWitnessRootByHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getWitnessRootByNumber","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initializeBlockNumber"},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_witnessRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setBlockInfo"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"witnessRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"getBlockHash(uint256)":{"params":{"_blockNumber":"Number of the block to get the hash for"},"returns":{"_0":"Block hash for the given block"}},"getWitnessRootByHash(bytes32)":{"params":{"_blockHash":"Block hash of the block to get the witness root for"},"returns":{"_0":"Witness root for the given block"}},"getWitnessRootByNumber(uint256)":{"params":{"_blockNumber":"Block number of the block to get the witness root for"},"returns":{"_0":"Merkle root for the given block"}},"initializeBlockNumber(uint256)":{"params":{"_blockNumber":"L1 block number that is associated with the genesis block of Citrea"}},"setBlockInfo(bytes32,bytes32)":{"details":"Block number is incremented by the contract as no block info should be overwritten or skipped","params":{"_blockHash":"Hash of the current L1 block","_witnessRoot":"Witness root of the current L1 block, must be in little endian "}},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockHash":"Block hash of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockNumber":"Block number of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}}},"version":1},"userdoc":{"kind":"user","methods":{"initializeBlockNumber(uint256)":{"notice":"Sets the initial value for the block number, can only be called once"},"setBlockInfo(bytes32,bytes32)":{"notice":"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set"},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","bitcoin-spv/=lib/bitcoin-spv/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/BitcoinLightClient.sol":"BitcoinLightClient"},"evmVersion":"paris","libraries":{}},"sources":{"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol":{"keccak256":"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f","urls":["bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7","dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0x9c8acc0e16c7a02b3328bf41cf08922b43f1eaf780199a0cf4aefac61ad2528c","urls":["bzz-raw://ac95a3440699da490d6830aec1ad4d515d7bba605be570767b39cf7fbdd182e7","dweb:/ipfs/QmUt8FcufKn5afs1n2cf2JF1wwti1pDSaNnxDzJNRcqyWf"],"license":"MIT"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0xd299a79b3aec00e07839b7dcbed21d3d7d50e26c0149e730170f7761202552ca","urls":["bzz-raw://d8cfcbc8fe666020b8a707d062e296dcf159737645a8c677975bad71b456b4ad","dweb:/ipfs/QmSuDCXJFYpRpTXdiWVVwvm69yzmTZj7zMLmRPNazRR4dj"],"license":"MIT"}},"version":1},"id":45} \ No newline at end of file +{"abi":[{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"blockHashes","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"blockNumber","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBlockHash","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByHash","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getWitnessRootByNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"initializeBlockNumber","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setBlockInfo","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_witnessRoot","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockNumber","type":"uint256","internalType":"uint256"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"verifyInclusion","inputs":[{"name":"_blockHash","type":"bytes32","internalType":"bytes32"},{"name":"_wtxId","type":"bytes32","internalType":"bytes32"},{"name":"_proof","type":"bytes","internalType":"bytes"},{"name":"_index","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"witnessRoots","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"BlockInfoAdded","inputs":[{"name":"blockNumber","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"blockHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"merkleRoot","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b506106ba8061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056","sourceMap":"675:4088:45:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056","sourceMap":"675:4088:45:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2719:130;;;;;;:::i;:::-;2792:7;2818:24;;;:12;:24;;;;;;;2719:130;;;;391:25:58;;;379:2;364:18;2719:130:45;;;;;;;;1944:396;;;;;;:::i;:::-;;:::i;:::-;;1366:174;;;;;;:::i;:::-;;:::i;861:46::-;;;;;;:::i;:::-;;;;;;;;;;;;;;4267:222;;;;;;:::i;:::-;;:::i;:::-;;;2295:14:58;;2288:22;2270:41;;2258:2;2243:18;4267:222:45;2130:187:58;732:26:45;;;;;;2985:149;;;;;;:::i;:::-;3062:7;3101:25;;;:11;:25;;;;;;;;;3088:39;;:12;:39;;;;;;;2985:149;913:47;;;;;;:::i;:::-;;;;;;;;;;;;;;3596:205;;;;;;:::i;:::-;;:::i;764:91::-;;812:42;764:91;;;;;-1:-1:-1;;;;;3437:32:58;;;3419:51;;3407:2;3392:18;764:91:45;3273:203:58;2461:125:45;;;;;;:::i;:::-;2528:7;2554:25;;;:11;:25;;;;;;;2461:125;1944:396;1098:10;812:42;1098:27;1090:71;;;;-1:-1:-1;;;1090:71:45;;3683:2:58;1090:71:45;;;3665:21:58;3722:2;3702:18;;;3695:30;3761:33;3741:18;;;3734:61;3812:18;;1090:71:45;;;;;;;;;2038:20:::1;2061:11:::0;;;2090:17;;;2082:45:::1;;;::::0;-1:-1:-1;;;2082:45:45;;4043:2:58;2082:45:45::1;::::0;::::1;4025:21:58::0;4082:2;4062:18;;;4055:30;-1:-1:-1;;;4101:18:58;;;4094:45;4156:18;;2082:45:45::1;3841:339:58::0;2082:45:45::1;2137:25;::::0;;;:11:::1;:25;::::0;;;;;;;:38;;;2199:16:::1;::::0;2149:12;;2199:16:::1;:::i;:::-;2185:11;:30:::0;;;2225:24;;;:12:::1;:24;::::0;;;;;;;;:39;;;2279:54;;4614:25:58;;;4655:18;;;4648:34;;;4698:18;;;4691:34;;;2279:54:45::1;::::0;4602:2:58;4587:18;2279:54:45::1;;;;;;;2028:312;1944:396:::0;;:::o;1366:174::-;1098:10;812:42;1098:27;1090:71;;;;-1:-1:-1;;;1090:71:45;;3683:2:58;1090:71:45;;;3665:21:58;3722:2;3702:18;;;3695:30;3761:33;3741:18;;;3734:61;3812:18;;1090:71:45;3481:355:58;1090:71:45;1457:11:::1;::::0;:16;1449:48:::1;;;::::0;-1:-1:-1;;;1449:48:45;;4938:2:58;1449:48:45::1;::::0;::::1;4920:21:58::0;4977:2;4957:18;;;4950:30;-1:-1:-1;;;4996:18:58;;;4989:49;5055:18;;1449:48:45::1;4736:343:58::0;1449:48:45::1;1507:11;:26:::0;1366:174::o;4267:222::-;4392:4;4432:25;;;:11;:25;;;;;;4415:67;;4459:6;4467;;4475;4415:16;:67::i;:::-;4408:74;4267:222;-1:-1:-1;;;;;;4267:222:45:o;3596:205::-;3719:4;3742:52;3759:10;3771:6;3779;;3787;4495:266;4619:4;4658:24;;;:12;:24;;;;;;;;;4699:55;;;;;;;;;;;;;;;;;;;;4658:24;4699:55;;4717:6;;4658:24;;4699:55;4739:6;;;;;;4699:55;;4739:6;;;;4699:55;;;;;;;;;-1:-1:-1;4747:6:45;;-1:-1:-1;4699:17:45;;-1:-1:-1;;4699:55:45:i;:::-;4692:62;4495:266;-1:-1:-1;;;;;;;4495:266:45:o;1685:539:4:-;1843:4;1913:11;1904:5;:20;:35;;;;-1:-1:-1;1928:11:4;;1904:35;:69;;;;-1:-1:-1;1943:25:4;;:30;1904:69;1900:111;;;-1:-1:-1;1996:4:4;1989:11;;1900:111;2083:134;2125:5;2144:18;2176:11;2201:6;2083:28;:134::i;:::-;2076:141;;1685:539;;;;;;;:::o;36339:829:1:-;36492:4;36567:2;36552:5;:12;:17;;;;:::i;:::-;:22;36548:65;;-1:-1:-1;36597:5:1;36590:12;;36548:65;36657:5;:12;36673:1;36657:17;36653:60;;-1:-1:-1;36697:5:1;36690:12;;36653:60;36735:6;36770:5;36723:9;36825:303;36846:5;:12;36842:1;:16;36825:303;;;36887:8;36894:1;36887:4;:8;:::i;:::-;36899:1;36887:13;36883:205;;36931:46;36950:16;:5;36964:1;12550:28:2;12566:2;12550:28;12544:35;;12417:178;36950:16:1;36968:8;36931:18;:46::i;:::-;36920:57;;36883:205;;;37027:46;37046:8;37056:16;:5;37070:1;12550:28:2;12566:2;12550:28;12544:35;;12417:178;37056:16:1;37027:18;:46::i;:::-;37016:57;;36883:205;37116:1;37108:9;;;;;36860:7;36865:2;36860:7;;:::i;:::-;;;36825:303;;;-1:-1:-1;37144:17:1;;;;36339:829;-1:-1:-1;;;;;36339:829:1:o;34697:127::-;34772:7;34798:19;34810:2;34814;34798:11;:19::i;:::-;34791:26;;34697:127;;;;;:::o;10264:386::-;10332:11;10455:2;10449:4;10442:16;10484:2;10478:4;10471:16;10541:2;10535:4;10531:2;10525:4;10522:1;10515:5;10504:40;10500:45;10599:2;10593:4;10589:2;10583:4;10580:1;10573:5;10562:40;-1:-1:-1;;10629:4:1;10623:11;;10264:386;-1:-1:-1;;10264:386:1:o;14:226:58:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:58;;14:226;-1:-1:-1;14:226:58:o;427:346::-;495:6;503;556:2;544:9;535:7;531:23;527:32;524:52;;;572:1;569;562:12;524:52;-1:-1:-1;;617:23:58;;;737:2;722:18;;;709:32;;-1:-1:-1;427:346:58:o;1009:347::-;1060:8;1070:6;1124:3;1117:4;1109:6;1105:17;1101:27;1091:55;;1142:1;1139;1132:12;1091:55;-1:-1:-1;1165:20:58;;1208:18;1197:30;;1194:50;;;1240:1;1237;1230:12;1194:50;1277:4;1269:6;1265:17;1253:29;;1329:3;1322:4;1313:6;1305;1301:19;1297:30;1294:39;1291:59;;;1346:1;1343;1336:12;1291:59;1009:347;;;;;:::o;1361:764::-;1458:6;1466;1474;1482;1490;1543:3;1531:9;1522:7;1518:23;1514:33;1511:53;;;1560:1;1557;1550:12;1511:53;1605:23;;;-1:-1:-1;1725:2:58;1710:18;;1697:32;;-1:-1:-1;1806:2:58;1791:18;;1778:32;1833:18;1822:30;;1819:50;;;1865:1;1862;1855:12;1819:50;1904:58;1954:7;1945:6;1934:9;1930:22;1904:58;:::i;:::-;1361:764;;;;-1:-1:-1;1981:8:58;2089:2;2074:18;2061:32;;1361:764;-1:-1:-1;;;;1361:764:58:o;4185:222::-;4250:9;;;4271:10;;;4268:133;;;4323:10;4318:3;4314:20;4311:1;4304:31;4358:4;4355:1;4348:15;4386:4;4383:1;4376:15;5084:209;5116:1;5142;5132:132;;5186:10;5181:3;5177:20;5174:1;5167:31;5221:4;5218:1;5211:15;5249:4;5246:1;5239:15;5132:132;-1:-1:-1;5278:9:58;;5084:209::o","linkReferences":{}},"methodIdentifiers":{"SYSTEM_CALLER()":"d761753e","blockHashes(uint256)":"34cdf78d","blockNumber()":"57e871e7","getBlockHash(uint256)":"ee82ac5e","getWitnessRootByHash(bytes32)":"0466efc4","getWitnessRootByNumber(uint256)":"61b207e2","initializeBlockNumber(uint256)":"1f578333","setBlockInfo(bytes32,bytes32)":"0e27bc11","verifyInclusion(bytes32,bytes32,bytes,uint256)":"d269a03e","verifyInclusion(uint256,bytes32,bytes,uint256)":"4ffd344a","witnessRoots(bytes32)":"a91d8b3d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"blockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"merkleRoot\",\"type\":\"bytes32\"}],\"name\":\"BlockInfoAdded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"blockHashes\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"blockNumber\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getBlockHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"}],\"name\":\"getWitnessRootByHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"getWitnessRootByNumber\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"}],\"name\":\"initializeBlockNumber\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_witnessRoot\",\"type\":\"bytes32\"}],\"name\":\"setBlockInfo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_blockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_blockHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_wtxId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_index\",\"type\":\"uint256\"}],\"name\":\"verifyInclusion\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"witnessRoots\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"kind\":\"dev\",\"methods\":{\"getBlockHash(uint256)\":{\"params\":{\"_blockNumber\":\"Number of the block to get the hash for\"},\"returns\":{\"_0\":\"Block hash for the given block\"}},\"getWitnessRootByHash(bytes32)\":{\"params\":{\"_blockHash\":\"Block hash of the block to get the witness root for\"},\"returns\":{\"_0\":\"Witness root for the given block\"}},\"getWitnessRootByNumber(uint256)\":{\"params\":{\"_blockNumber\":\"Block number of the block to get the witness root for\"},\"returns\":{\"_0\":\"Merkle root for the given block\"}},\"initializeBlockNumber(uint256)\":{\"params\":{\"_blockNumber\":\"L1 block number that is associated with the genesis block of Citrea\"}},\"setBlockInfo(bytes32,bytes32)\":{\"details\":\"Block number is incremented by the contract as no block info should be overwritten or skipped\",\"params\":{\"_blockHash\":\"Hash of the current L1 block\",\"_witnessRoot\":\"Witness root of the current L1 block, must be in little endian \"}},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockHash\":\"Block hash of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"details\":\"Witness transaction ID and proof elements must be in little endian\",\"params\":{\"_blockNumber\":\"Block number of the block\",\"_index\":\"Index of the transaction\",\"_proof\":\"Merkle proof\",\"_wtxId\":\"Witness transaction ID\"},\"returns\":{\"_0\":\"If the witness transaction ID is included in the witness root hash of the block\"}}},\"title\":\"A system contract that stores block hashes and witness root hashes of L1 blocks\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"initializeBlockNumber(uint256)\":{\"notice\":\"Sets the initial value for the block number, can only be called once\"},\"setBlockInfo(bytes32,bytes32)\":{\"notice\":\"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set\"},\"verifyInclusion(bytes32,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"},\"verifyInclusion(uint256,bytes32,bytes,uint256)\":{\"notice\":\"Verifies the inclusion of a witness transaction ID in the witness root hash of a block\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/BitcoinLightClient.sol\":\"BitcoinLightClient\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":bitcoin-spv/=lib/bitcoin-spv/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0xddfe39aa55912ca37e57d5bc3a5ddea5b18c12980e03c16d0149e0ed8a49fca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c0f5bd6cbcdaeb577bdad15a63f96c21ecadc32d171de0e9d0c205635ff292e\",\"dweb:/ipfs/QmYhvEgXLoHque74UvHVGkARMptehwX5ekUEUcaZJuo3H2\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0xd299a79b3aec00e07839b7dcbed21d3d7d50e26c0149e730170f7761202552ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8cfcbc8fe666020b8a707d062e296dcf159737645a8c677975bad71b456b4ad\",\"dweb:/ipfs/QmSuDCXJFYpRpTXdiWVVwvm69yzmTZj7zMLmRPNazRR4dj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"blockNumber","type":"uint256","indexed":false},{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"merkleRoot","type":"bytes32","indexed":false}],"type":"event","name":"BlockInfoAdded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockHashes","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"blockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBlockHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getWitnessRootByHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"view","type":"function","name":"getWitnessRootByNumber","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initializeBlockNumber"},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_witnessRoot","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"setBlockInfo"},{"inputs":[{"internalType":"uint256","name":"_blockNumber","type":"uint256"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"_blockHash","type":"bytes32"},{"internalType":"bytes32","name":"_wtxId","type":"bytes32"},{"internalType":"bytes","name":"_proof","type":"bytes"},{"internalType":"uint256","name":"_index","type":"uint256"}],"stateMutability":"view","type":"function","name":"verifyInclusion","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"witnessRoots","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"getBlockHash(uint256)":{"params":{"_blockNumber":"Number of the block to get the hash for"},"returns":{"_0":"Block hash for the given block"}},"getWitnessRootByHash(bytes32)":{"params":{"_blockHash":"Block hash of the block to get the witness root for"},"returns":{"_0":"Witness root for the given block"}},"getWitnessRootByNumber(uint256)":{"params":{"_blockNumber":"Block number of the block to get the witness root for"},"returns":{"_0":"Merkle root for the given block"}},"initializeBlockNumber(uint256)":{"params":{"_blockNumber":"L1 block number that is associated with the genesis block of Citrea"}},"setBlockInfo(bytes32,bytes32)":{"details":"Block number is incremented by the contract as no block info should be overwritten or skipped","params":{"_blockHash":"Hash of the current L1 block","_witnessRoot":"Witness root of the current L1 block, must be in little endian "}},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockHash":"Block hash of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"details":"Witness transaction ID and proof elements must be in little endian","params":{"_blockNumber":"Block number of the block","_index":"Index of the transaction","_proof":"Merkle proof","_wtxId":"Witness transaction ID"},"returns":{"_0":"If the witness transaction ID is included in the witness root hash of the block"}}},"version":1},"userdoc":{"kind":"user","methods":{"initializeBlockNumber(uint256)":{"notice":"Sets the initial value for the block number, can only be called once"},"setBlockInfo(bytes32,bytes32)":{"notice":"Sets the block hash and witness root for a given blockCan only be called after the initial block number is set"},"verifyInclusion(bytes32,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"},"verifyInclusion(uint256,bytes32,bytes,uint256)":{"notice":"Verifies the inclusion of a witness transaction ID in the witness root hash of a block"}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","bitcoin-spv/=lib/bitcoin-spv/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/BitcoinLightClient.sol":"BitcoinLightClient"},"evmVersion":"paris","libraries":{}},"sources":{"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol":{"keccak256":"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f","urls":["bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7","dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0xddfe39aa55912ca37e57d5bc3a5ddea5b18c12980e03c16d0149e0ed8a49fca1","urls":["bzz-raw://3c0f5bd6cbcdaeb577bdad15a63f96c21ecadc32d171de0e9d0c205635ff292e","dweb:/ipfs/QmYhvEgXLoHque74UvHVGkARMptehwX5ekUEUcaZJuo3H2"],"license":"MIT"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0xd299a79b3aec00e07839b7dcbed21d3d7d50e26c0149e730170f7761202552ca","urls":["bzz-raw://d8cfcbc8fe666020b8a707d062e296dcf159737645a8c677975bad71b456b4ad","dweb:/ipfs/QmSuDCXJFYpRpTXdiWVVwvm69yzmTZj7zMLmRPNazRR4dj"],"license":"MIT"}},"version":1},"id":45} \ No newline at end of file diff --git a/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json b/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json index dbb379b33..bc8820016 100644 --- a/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json +++ b/crates/evm/src/evm/system_contracts/out/Bridge.sol/Bridge.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"LIGHT_CLIENT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract BitcoinLightClient"}],"stateMutability":"view"},{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchWithdraw","inputs":[{"name":"txIds","type":"bytes32[]","internalType":"bytes32[]"},{"name":"outputIds","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"declareWithdrawFiller","inputs":[{"name":"withdrawTp","type":"tuple","internalType":"struct Bridge.TransactionParams","components":[{"name":"version","type":"bytes4","internalType":"bytes4"},{"name":"flag","type":"bytes2","internalType":"bytes2"},{"name":"vin","type":"bytes","internalType":"bytes"},{"name":"vout","type":"bytes","internalType":"bytes"},{"name":"witness","type":"bytes","internalType":"bytes"},{"name":"locktime","type":"bytes4","internalType":"bytes4"},{"name":"intermediate_nodes","type":"bytes","internalType":"bytes"},{"name":"block_height","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}]},{"name":"inputIndex","type":"uint256","internalType":"uint256"},{"name":"withdrawId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"moveTp","type":"tuple","internalType":"struct Bridge.TransactionParams","components":[{"name":"version","type":"bytes4","internalType":"bytes4"},{"name":"flag","type":"bytes2","internalType":"bytes2"},{"name":"vin","type":"bytes","internalType":"bytes"},{"name":"vout","type":"bytes","internalType":"bytes"},{"name":"witness","type":"bytes","internalType":"bytes"},{"name":"locktime","type":"bytes4","internalType":"bytes4"},{"name":"intermediate_nodes","type":"bytes","internalType":"bytes"},{"name":"block_height","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositAmount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawalCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_scriptPrefix","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"},{"name":"_depositAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperatorMalicious","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"markMaliciousOperator","inputs":[{"name":"slashOrTakeTp","type":"tuple","internalType":"struct Bridge.TransactionParams","components":[{"name":"version","type":"bytes4","internalType":"bytes4"},{"name":"flag","type":"bytes2","internalType":"bytes2"},{"name":"vin","type":"bytes","internalType":"bytes"},{"name":"vout","type":"bytes","internalType":"bytes"},{"name":"witness","type":"bytes","internalType":"bytes"},{"name":"locktime","type":"bytes4","internalType":"bytes4"},{"name":"intermediate_nodes","type":"bytes","internalType":"bytes"},{"name":"block_height","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scriptPrefix","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"scriptSuffix","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"setDepositScript","inputs":[{"name":"_scriptPrefix","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashOrTakeScript","inputs":[{"name":"_slashOrTakeScript","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashOrTakeScript","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"txIdToDepositId","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"txId","type":"bytes32","internalType":"bytes32"},{"name":"outputId","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawFillers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalUTXOs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"txId","type":"bytes32","internalType":"bytes32"},{"name":"outputId","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"event","name":"Deposit","inputs":[{"name":"wtxId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"txId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"depositId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DepositScriptUpdate","inputs":[{"name":"scriptPrefix","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"scriptSuffix","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"MaliciousOperatorMarked","inputs":[{"name":"operatorId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"oldOperator","type":"address","indexed":false,"internalType":"address"},{"name":"newOperator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashOrTakeScriptUpdate","inputs":[{"name":"slashOrTakeScript","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"WithdrawFillerDeclared","inputs":[{"name":"withdrawId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"withdrawFillerId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Withdrawal","inputs":[{"name":"utxo","type":"tuple","indexed":false,"internalType":"struct Bridge.UTXO","components":[{"name":"txId","type":"bytes32","internalType":"bytes32"},{"name":"outputId","type":"bytes4","internalType":"bytes4"}]},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b506132828061001f6000396000f3fe60806040526004361061019c5760003560e01c80638786dba7116100ec578063d761753e1161008a578063e613ae0011610064578063e613ae001461048e578063f119a9bd146104a9578063f2fde38b146104c9578063f8e655d2146104e957600080fd5b8063d761753e14610431578063dd95c7c614610459578063e30c39781461047957600080fd5b8063a41c5cf3116100c6578063a41c5cf3146103af578063b3ab15fb146103c4578063bafa9eb2146103e4578063c045577b1461040457600080fd5b80638786dba71461037257806387f8bf56146103855780638da5cb5b1461039a57600080fd5b8063570ca73511610159578063715018a611610133578063715018a61461031357806374ab4a8314610328578063781952a81461034857806379ba50971461035d57600080fd5b8063570ca735146102945780635d3e3176146102d15780635e3cc740146102f357600080fd5b806311e53a01146101a1578063158ef93e146101e1578063198546231461020b5780634126013714610220578063419759f514610240578063471ba1e314610256575b600080fd5b3480156101ad57600080fd5b506101ce6101bc3660046129ee565b60276020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101ed57600080fd5b506000546101fb9060ff1681565b60405190151581526020016101d8565b61021e610219366004612a4b565b610509565b005b34801561022c57600080fd5b5061021e61023b366004612afb565b6106e2565b34801561024c57600080fd5b506101ce60215481565b34801561026257600080fd5b506102766102713660046129ee565b6108ef565b604080519283526001600160e01b03199091166020830152016101d8565b3480156102a057600080fd5b506000546102b99061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101d8565b3480156102dd57600080fd5b506102e6610920565b6040516101d89190612b96565b3480156102ff57600080fd5b5061021e61030e366004612be2565b6109ae565b34801561031f57600080fd5b5061021e610d65565b34801561033457600080fd5b5061021e610343366004612c1e565b610d79565b34801561035457600080fd5b506026546101ce565b34801561036957600080fd5b5061021e610f4c565b61021e610380366004612c88565b610f94565b34801561039157600080fd5b506102e66110bb565b3480156103a657600080fd5b506102b96110c8565b3480156103bb57600080fd5b506102e66110fd565b3480156103d057600080fd5b5061021e6103df366004612cb4565b61110a565b3480156103f057600080fd5b506101fb6103ff3660046129ee565b61117b565b34801561041057600080fd5b506101ce61041f3660046129ee565b60286020526000908152604090205481565b34801561043d57600080fd5b506102b973deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561046557600080fd5b5061021e610474366004612be2565b6111a6565b34801561048557600080fd5b506102b9611606565b34801561049a57600080fd5b506102b96001603160981b0181565b3480156104b557600080fd5b5061021e6104c4366004612cdd565b61162f565b3480156104d557600080fd5b5061021e6104e4366004612cb4565b6116a3565b3480156104f557600080fd5b5061021e610504366004612d1e565b611728565b82811461054f5760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b60448201526064015b60405180910390fd5b60215461055d908490612d97565b34146105a55760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610546565b60265460005b848110156106da57600060405180604001604052808888858181106105d2576105d2612dae565b9050602002013581526020018686858181106105f0576105f0612dae565b90506020020160208101906106059190612dc4565b6001600160e01b03191690526026805460018101825560009190915281517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a359460029092029182015560208201517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3595909101805463ffffffff191660e09290921c91909117905590507f3311a04a346a103ac115cca33028a2bc82f1964805860d0d3fc84a2772496ada816106b98486612ddf565b426040516106c993929190612df2565b60405180910390a1506001016105ab565b505050505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146107455760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610546565b60005460ff16156107985760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610546565b806000036107e85760405162461bcd60e51b815260206004820152601a60248201527f4465706f73697420616d6f756e742063616e6e6f7420626520300000000000006044820152606401610546565b60008490036108095760405162461bcd60e51b815260040161054690612e20565b6000805460ff191660011790556023610823858783612ef0565b506024610831838583612ef0565b50602181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f80bd1fdfe157286ce420ee763f91748455b249605748e5df12dad9844402bafc858585856040516108e09493929190612fd8565b60405180910390a15050505050565b602681815481106108ff57600080fd5b60009182526020909120600290910201805460019091015490915060e01b82565b6025805461092d90612e6d565b80601f016020809104026020016040519081016040528092919081815260200182805461095990612e6d565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b505050505081565b6109b7816117a2565b5060009050610a066109cc606084018461300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ac592505050565b915060009050610a63610a1c606085018561300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a5e925060019150869050613050565b611adc565b90506000610a7082611c54565b90506000610a88610a8383836020611cd6565b611d99565b90506000610aa9610a836020808651610aa19190613050565b869190611cd6565b600083815260276020526040812054919250819003610b015760405162461bcd60e51b815260206004820152601460248201527311195c1bdcda5d08191bc81b9bdd08195e1a5cdd60621b6044820152606401610546565b6000610b4d610b1360808a018a61300a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611e1e915050565b90506000610b5c826001611f01565b9050600060258054610b6d90612e6d565b915060009050610b7e838284611cd6565b9050610c148160258054610b9190612e6d565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd90612e6d565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b5050505050612085565b610c605760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420736c6173684f7254616b65207363726970740000000000006044820152606401610546565b6000602881610c70600189613050565b815260200190815260200160002054905060008160001480610c9a5750610c968861215c565b8214155b905080610ce95760405162461bcd60e51b815260206004820152601960248201527f4f70657261746f72206973206e6f74206d616c6963696f7573000000000000006044820152606401610546565b600180896103e88110610cfe57610cfe612dae565b602091828204019190066101000a81548160ff0219169083151502179055507ff918cdaebea74c5a8c3b02d7404c162f507551b158202cedcba9b6a74eabdff288604051610d4e91815260200190565b60405180910390a150505050505050505050505050565b610d6d612169565b610d77600061219b565b565b610d82836117a2565b5060009050610dd3610d97604086018661300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506121d7915050565b90506000610de08261232a565b90506000610ded83612337565b9050600060268581548110610e0457610e04612dae565b60009182526020918290206040805180820190915260029290920201805480835260019091015460e01b6001600160e01b03191692820192909252915083148015610e665750816001600160e01b03191681602001516001600160e01b031916145b610ea65760405162461bcd60e51b81526020600482015260116024820152706e6f74206d61746368696e67205554584f60781b6044820152606401610546565b6000610eb86109cc60608a018a61300a565b915060009050610ece610a1c60608b018b61300a565b90506000610edb82611c54565b90506000610ee882611d99565b9050610ef38161215c565b60008a8152602860209081526040918290209290925580518b81529182018390527feedf47c2f61b040827944fd45e44ef6d742354b34e1af7dd99a56f444ec79347910160405180910390a15050505050505050505050565b3380610f56611606565b6001600160a01b031614610f885760405163118cdaa760e01b81526001600160a01b0382166004820152602401610546565b610f918161219b565b50565b6021543414610fdf5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610546565b6040805180820182528381526001600160e01b03198316602082019081526026805460018101825560009190915282517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3594600283029081019190915591517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3595909201805463ffffffff191660e09390931c9290921790915591519091907f3311a04a346a103ac115cca33028a2bc82f1964805860d0d3fc84a2772496ada906110ad90849084904290612df2565b60405180910390a150505050565b6024805461092d90612e6d565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6023805461092d90612e6d565b611112612169565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6001816103e8811061118c57600080fd5b60209182820401919006915054906101000a900460ff1681565b60005461010090046001600160a01b031633146112055760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610546565b600080611211836117a2565b915091508060011461125e5760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610546565b60006113096112706020860186612dc4565b61127d604087018761300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112bf92505050606088018861300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113049250505060c0890160a08a01612dc4565b612344565b6000818152602760205260409020549091501561135d5760405162461bcd60e51b81526020600482015260126024820152711d1e125908185b1c9958591e481cdc195b9d60721b6044820152606401610546565b60226000815461136c90613063565b9182905550600082815260276020526040812091909155611393610b13608087018761300a565b905060006113a082611ac5565b915050806003146113eb5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610546565b60006113f8836001611f01565b905060006023805461140990612e6d565b91506000905061141a838284611cd6565b905061142d8160238054610b9190612e6d565b6114725760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610546565b60006114a66024805461148490612e6d565b86516114909250613050565b6024805461149d90612e6d565b87929150611cd6565b90506114b98160248054610b9190612e6d565b6114fd5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610546565b600061150885612374565b602254604080518d8152602081018c90526001600160a01b038416818301524260608201526080810192909252519192507fa82453ca34121b3ecb910d957824e27c5dc6465315949facd15fb72886490058919081900360a00190a16021546040516000916001600160a01b038416918381818185875af1925050503d80600081146115b0576040519150601f19603f3d011682016040523d82523d6000602084013e6115b5565b606091505b50509050806115f85760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610546565b505050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c006110ed565b611637612169565b60008190036116585760405162461bcd60e51b815260040161054690612e20565b6025611665828483612ef0565b507f8578c80bdea3ff51431011ed88db9cb415de2cf64f9ed5e7137288268cbdeb2c828260405161169792919061307c565b60405180910390a15050565b6116ab612169565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556116ef6110c8565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b611730612169565b60008390036117515760405162461bcd60e51b815260040161054690612e20565b602361175e848683612ef0565b50602461176c828483612ef0565b507f80bd1fdfe157286ce420ee763f91748455b249605748e5df12dad9844402bafc848484846040516110ad9493929190612fd8565b600080806118026117b66020860186612dc4565b6117c66040870160208801613090565b6117d3604088018861300a565b6117e060608a018a61300a565b6117ed60808c018c61300a565b6117fd60c08e0160a08f01612dc4565b6123aa565b905061184e611814604086018661300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123de92505050565b61189a5760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610546565b6118e46118aa606086018661300a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061248292505050565b6119305760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610546565b60006119426109cc604087018761300a565b91506119929050611956608087018761300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250612519915050565b6119e85760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610546565b6001603160981b01634ffd344a60e087013584611a0860c08a018a61300a565b8a61010001356040518663ffffffff1660e01b8152600401611a2e9594939291906130ba565b602060405180830381865afa158015611a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6f91906130ec565b611abb5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610546565b9094909350915050565b600080611ad383600061258e565b91509150915091565b6060600080611aea85611ac5565b909250905060018201611b0f5760405162461bcd60e51b81526004016105469061310e565b808410611b525760405162461bcd60e51b81526020600482015260116024820152702b37baba103932b0b21037bb32b9393ab760791b6044820152606401610546565b600080611b60846001612ddf565b905060005b86811015611bde57611b778883612730565b92506000198303611bca5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610546565b611bd48383612ddf565b9150600101611b65565b50611be98782612730565b91506000198203611c3c5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610546565b611c47878284611cd6565b9450505050505b92915050565b606081600981518110611c6957611c69612dae565b6020910101516001600160f81b031916603560f91b14611c9757505060408051602081019091526000815290565b600082600a81518110611cac57611cac612dae565b01602001516001600160f81b031981169150611ccf908490600b9060f81c611cd6565b9392505050565b606081600003611cf55750604080516020810190915260008152611ccf565b6000611d018385612ddf565b90508381118015611d13575080855110155b611d555760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610546565b604051915082604083010160405282825283850182038460208701018481015b80821015611d8e57815183830152602082019150611d75565b505050509392505050565b60008151600003611dac57506000919050565b81516020811115611e0a5760405162461bcd60e51b815260206004820152602260248201527f42797465732063616e6e6f74206265206d6f7265207468616e20333220627974604482015261657360f01b6064820152608401610546565b60209283015192036008029190911c919050565b606060008060005b84811015611e9757611e388683612794565b92506000198303611e835760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610546565b611e8d8383612ddf565b9150600101611e26565b50611ea28582612794565b91506000198203611eed5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610546565b611ef8858284611cd6565b95945050505050565b6060600080611f0f85611ac5565b909250905060018201611f345760405162461bcd60e51b81526004016105469061310e565b808410611f765760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610546565b600080611f84846001612ddf565b905060005b8681101561200f57611f9b888361258e565b909550925060018301611fe55760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610546565b82611ff1866001612ddf565b611ffb9190612ddf565b6120059083612ddf565b9150600101611f89565b5061201a878261258e565b9094509150600182016120645760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610546565b611c47816120728685612ddf565b61207d906001612ddf565b899190611cd6565b8151815160009190811461209d576000915050611c4e565b60206000805b8383116120d357505084810151848201516020909201918082146120ce576000945050505050611c4e565b6120a3565b60006120e0602085613050565b90505b8481101561214e578681815181106120fd576120fd612dae565b602001015160f81c60f81b6001600160f81b03191688828151811061212457612124612dae565b01602001516001600160f81b0319161461214657600095505050505050611c4e565b6001016120e3565b506001979650505050505050565b6000611c4e826001612ddf565b336121726110c8565b6001600160a01b031614610d775760405163118cdaa760e01b8152336004820152602401610546565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556121d382612836565b5050565b60606000806121e585611ac5565b90925090506001820161220a5760405162461bcd60e51b81526004016105469061310e565b80841061224c5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610546565b60008061225a846001612ddf565b905060005b868110156122d25761227188836128a7565b925060001983036122be5760405162461bcd60e51b815260206004820152601760248201527642616420566172496e7420696e2073637269707453696760481b6044820152606401610546565b6122c88383612ddf565b915060010161225f565b506122dd87826128a7565b91506000198203611c3c5760405162461bcd60e51b815260206004820152601760248201527642616420566172496e7420696e2073637269707453696760481b6044820152606401610546565b6020810151600090611c4e565b6000611c4e8260206128f0565b6000611ef8858585856040516020016123609493929190613150565b6040516020818303038152906040526128ff565b6000806023805461238490612e6d565b91506000905061239684836014611cd6565b61239f906131ad565b60601c949350505050565b60006123d08a8a8a8a8a8a8a8a8a60405160200161236099989796959493929190613200565b9a9950505050505050505050565b60008060006123ec84611ac5565b90925090508015806123ff575060001982145b1561240e575060009392505050565b600061241b836001612ddf565b905060005b82811015612475578551821061243c5750600095945050505050565b600061244887846128a7565b90506000198103612460575060009695505050505050565b61246a8184612ddf565b925050600101612420565b5093519093149392505050565b600080600061249084611ac5565b90925090508015806124a3575060001982145b156124b2575060009392505050565b60006124bf836001612ddf565b905060005b8281101561247557855182106124e05750600095945050505050565b60006124ec8784612730565b90506000198103612504575060009695505050505050565b61250e8184612ddf565b9250506001016124c4565b60008160000361252b57506000611c4e565b6000805b83811015612582578451821061254a57600092505050611c4e565b60006125568684612794565b9050600019810361256d5760009350505050611c4e565b6125778184612ddf565b92505060010161252f565b50835114905092915050565b600080600061259d8585612926565b90508060ff166000036125d25760008585815181106125be576125be612dae565b016020015190935060f81c91506127299050565b836125de826001613269565b60ff166125eb9190612ddf565b855110156126025760001960009250925050612729565b60008160ff166002036126465761263b612627612620876001612ddf565b88906128f0565b62ffff0060e882901c1660f89190911c1790565b61ffff16905061271f565b8160ff1660040361269557612688612662612620876001612ddf565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff16905061271f565b8160ff1660080361271f576127136126b1612620876001612ddf565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b600061273d826009612ddf565b8351101561274e5750600019611c4e565b60008061276585612760866008612ddf565b61258e565b90925090506001820161277e5760001992505050611c4e565b8061278a836009612ddf565b611ef89190612ddf565b60008060006127a3858561258e565b9092509050600182016127bc5760001992505050611c4e565b6000806127ca846001612ddf565b905060005b8381101561282b576127e588612760848a612ddf565b9095509250600183016128015760001995505050505050611c4e565b8261280d866001612ddf565b6128179190612ddf565b6128219083612ddf565b91506001016127cf565b509695505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008060006128b685856129ac565b9092509050600182016128cf5760001992505050611c4e565b806128db836025612ddf565b6128e59190612ddf565b611ef8906004612ddf565b6000611ccf8383016020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600082828151811061293a5761293a612dae565b016020015160f81c60ff0361295157506008611c4e565b82828151811061296357612963612dae565b016020015160f81c60fe0361297a57506004611c4e565b82828151811061298c5761298c612dae565b016020015160f81c60fd036129a357506002611c4e565b50600092915050565b6000806129ba836025612ddf565b845110156129cf575060001990506000612729565b6000806129e186612760876024612ddf565b9097909650945050505050565b600060208284031215612a0057600080fd5b5035919050565b60008083601f840112612a1957600080fd5b5081356001600160401b03811115612a3057600080fd5b6020830191508360208260051b850101111561272957600080fd5b60008060008060408587031215612a6157600080fd5b84356001600160401b03811115612a7757600080fd5b612a8387828801612a07565b90955093505060208501356001600160401b03811115612aa257600080fd5b612aae87828801612a07565b95989497509550505050565b60008083601f840112612acc57600080fd5b5081356001600160401b03811115612ae357600080fd5b60208301915083602082850101111561272957600080fd5b600080600080600060608688031215612b1357600080fd5b85356001600160401b03811115612b2957600080fd5b612b3588828901612aba565b90965094505060208601356001600160401b03811115612b5457600080fd5b612b6088828901612aba565b96999598509660400135949350505050565b60005b83811015612b8d578181015183820152602001612b75565b50506000910152565b6020815260008251806020840152612bb5816040850160208701612b72565b601f01601f19169190910160400192915050565b60006101208284031215612bdc57600080fd5b50919050565b600060208284031215612bf457600080fd5b81356001600160401b03811115612c0a57600080fd5b612c1684828501612bc9565b949350505050565b600080600060608486031215612c3357600080fd5b83356001600160401b03811115612c4957600080fd5b612c5586828701612bc9565b9660208601359650604090950135949350505050565b80356001600160e01b031981168114612c8357600080fd5b919050565b60008060408385031215612c9b57600080fd5b82359150612cab60208401612c6b565b90509250929050565b600060208284031215612cc657600080fd5b81356001600160a01b0381168114611ccf57600080fd5b60008060208385031215612cf057600080fd5b82356001600160401b03811115612d0657600080fd5b612d1285828601612aba565b90969095509350505050565b60008060008060408587031215612d3457600080fd5b84356001600160401b03811115612d4a57600080fd5b612d5687828801612aba565b90955093505060208501356001600160401b03811115612d7557600080fd5b612aae87828801612aba565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611c4e57611c4e612d81565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612dd657600080fd5b611ccf82612c6b565b80820180821115611c4e57611c4e612d81565b835181526020938401516001600160e01b031916938101939093526040830191909152606082015260800190565b6020808252601e908201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680612e8157607f821691505b602082108103612bdc57634e487b7160e01b600052602260045260246000fd5b601f821115612eeb57806000526020600020601f840160051c81016020851015612ec85750805b601f840160051c820191505b81811015612ee85760008155600101612ed4565b50505b505050565b6001600160401b03831115612f0757612f07612e57565b612f1b83612f158354612e6d565b83612ea1565b6000601f841160018114612f4f5760008515612f375750838201355b600019600387901b1c1916600186901b178355612ee8565b600083815260209020601f19861690835b82811015612f805786850135825560209485019460019092019101612f60565b5086821015612f9d5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000612fec604083018688612faf565b8281036020840152612fff818587612faf565b979650505050505050565b6000808335601e1984360301811261302157600080fd5b8301803591506001600160401b0382111561303b57600080fd5b60200191503681900382131561272957600080fd5b81810381811115611c4e57611c4e612d81565b60006001820161307557613075612d81565b5060010190565b602081526000612c16602083018486612faf565b6000602082840312156130a257600080fd5b81356001600160f01b031981168114611ccf57600080fd5b8581528460208201526080604082015260006130da608083018587612faf565b90508260608301529695505050505050565b6000602082840312156130fe57600080fd5b81518015158114611ccf57600080fd5b60208082526022908201527f52656164206f76657272756e20647572696e6720566172496e742070617273696040820152616e6760f01b606082015260800190565b6001600160e01b0319851681528351600090613173816004850160208901612b72565b84519083019061318a816004840160208901612b72565b6001600160e01b0319949094169301600481019390935250506008019392505050565b805160208201516bffffffffffffffffffffffff198116919060148210156131f9576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b60ff8181168382160190811115611c4e57611c4e612d8156","sourceMap":"430:14139:46:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061019c5760003560e01c80638786dba7116100ec578063d761753e1161008a578063e613ae0011610064578063e613ae001461048e578063f119a9bd146104a9578063f2fde38b146104c9578063f8e655d2146104e957600080fd5b8063d761753e14610431578063dd95c7c614610459578063e30c39781461047957600080fd5b8063a41c5cf3116100c6578063a41c5cf3146103af578063b3ab15fb146103c4578063bafa9eb2146103e4578063c045577b1461040457600080fd5b80638786dba71461037257806387f8bf56146103855780638da5cb5b1461039a57600080fd5b8063570ca73511610159578063715018a611610133578063715018a61461031357806374ab4a8314610328578063781952a81461034857806379ba50971461035d57600080fd5b8063570ca735146102945780635d3e3176146102d15780635e3cc740146102f357600080fd5b806311e53a01146101a1578063158ef93e146101e1578063198546231461020b5780634126013714610220578063419759f514610240578063471ba1e314610256575b600080fd5b3480156101ad57600080fd5b506101ce6101bc3660046129ee565b60276020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101ed57600080fd5b506000546101fb9060ff1681565b60405190151581526020016101d8565b61021e610219366004612a4b565b610509565b005b34801561022c57600080fd5b5061021e61023b366004612afb565b6106e2565b34801561024c57600080fd5b506101ce60215481565b34801561026257600080fd5b506102766102713660046129ee565b6108ef565b604080519283526001600160e01b03199091166020830152016101d8565b3480156102a057600080fd5b506000546102b99061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101d8565b3480156102dd57600080fd5b506102e6610920565b6040516101d89190612b96565b3480156102ff57600080fd5b5061021e61030e366004612be2565b6109ae565b34801561031f57600080fd5b5061021e610d65565b34801561033457600080fd5b5061021e610343366004612c1e565b610d79565b34801561035457600080fd5b506026546101ce565b34801561036957600080fd5b5061021e610f4c565b61021e610380366004612c88565b610f94565b34801561039157600080fd5b506102e66110bb565b3480156103a657600080fd5b506102b96110c8565b3480156103bb57600080fd5b506102e66110fd565b3480156103d057600080fd5b5061021e6103df366004612cb4565b61110a565b3480156103f057600080fd5b506101fb6103ff3660046129ee565b61117b565b34801561041057600080fd5b506101ce61041f3660046129ee565b60286020526000908152604090205481565b34801561043d57600080fd5b506102b973deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561046557600080fd5b5061021e610474366004612be2565b6111a6565b34801561048557600080fd5b506102b9611606565b34801561049a57600080fd5b506102b96001603160981b0181565b3480156104b557600080fd5b5061021e6104c4366004612cdd565b61162f565b3480156104d557600080fd5b5061021e6104e4366004612cb4565b6116a3565b3480156104f557600080fd5b5061021e610504366004612d1e565b611728565b82811461054f5760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b60448201526064015b60405180910390fd5b60215461055d908490612d97565b34146105a55760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610546565b60265460005b848110156106da57600060405180604001604052808888858181106105d2576105d2612dae565b9050602002013581526020018686858181106105f0576105f0612dae565b90506020020160208101906106059190612dc4565b6001600160e01b03191690526026805460018101825560009190915281517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a359460029092029182015560208201517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3595909101805463ffffffff191660e09290921c91909117905590507f3311a04a346a103ac115cca33028a2bc82f1964805860d0d3fc84a2772496ada816106b98486612ddf565b426040516106c993929190612df2565b60405180910390a1506001016105ab565b505050505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146107455760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610546565b60005460ff16156107985760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610546565b806000036107e85760405162461bcd60e51b815260206004820152601a60248201527f4465706f73697420616d6f756e742063616e6e6f7420626520300000000000006044820152606401610546565b60008490036108095760405162461bcd60e51b815260040161054690612e20565b6000805460ff191660011790556023610823858783612ef0565b506024610831838583612ef0565b50602181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f80bd1fdfe157286ce420ee763f91748455b249605748e5df12dad9844402bafc858585856040516108e09493929190612fd8565b60405180910390a15050505050565b602681815481106108ff57600080fd5b60009182526020909120600290910201805460019091015490915060e01b82565b6025805461092d90612e6d565b80601f016020809104026020016040519081016040528092919081815260200182805461095990612e6d565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b505050505081565b6109b7816117a2565b5060009050610a066109cc606084018461300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ac592505050565b915060009050610a63610a1c606085018561300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a5e925060019150869050613050565b611adc565b90506000610a7082611c54565b90506000610a88610a8383836020611cd6565b611d99565b90506000610aa9610a836020808651610aa19190613050565b869190611cd6565b600083815260276020526040812054919250819003610b015760405162461bcd60e51b815260206004820152601460248201527311195c1bdcda5d08191bc81b9bdd08195e1a5cdd60621b6044820152606401610546565b6000610b4d610b1360808a018a61300a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611e1e915050565b90506000610b5c826001611f01565b9050600060258054610b6d90612e6d565b915060009050610b7e838284611cd6565b9050610c148160258054610b9190612e6d565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd90612e6d565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b5050505050612085565b610c605760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420736c6173684f7254616b65207363726970740000000000006044820152606401610546565b6000602881610c70600189613050565b815260200190815260200160002054905060008160001480610c9a5750610c968861215c565b8214155b905080610ce95760405162461bcd60e51b815260206004820152601960248201527f4f70657261746f72206973206e6f74206d616c6963696f7573000000000000006044820152606401610546565b600180896103e88110610cfe57610cfe612dae565b602091828204019190066101000a81548160ff0219169083151502179055507ff918cdaebea74c5a8c3b02d7404c162f507551b158202cedcba9b6a74eabdff288604051610d4e91815260200190565b60405180910390a150505050505050505050505050565b610d6d612169565b610d77600061219b565b565b610d82836117a2565b5060009050610dd3610d97604086018661300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506121d7915050565b90506000610de08261232a565b90506000610ded83612337565b9050600060268581548110610e0457610e04612dae565b60009182526020918290206040805180820190915260029290920201805480835260019091015460e01b6001600160e01b03191692820192909252915083148015610e665750816001600160e01b03191681602001516001600160e01b031916145b610ea65760405162461bcd60e51b81526020600482015260116024820152706e6f74206d61746368696e67205554584f60781b6044820152606401610546565b6000610eb86109cc60608a018a61300a565b915060009050610ece610a1c60608b018b61300a565b90506000610edb82611c54565b90506000610ee882611d99565b9050610ef38161215c565b60008a8152602860209081526040918290209290925580518b81529182018390527feedf47c2f61b040827944fd45e44ef6d742354b34e1af7dd99a56f444ec79347910160405180910390a15050505050505050505050565b3380610f56611606565b6001600160a01b031614610f885760405163118cdaa760e01b81526001600160a01b0382166004820152602401610546565b610f918161219b565b50565b6021543414610fdf5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610546565b6040805180820182528381526001600160e01b03198316602082019081526026805460018101825560009190915282517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3594600283029081019190915591517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3595909201805463ffffffff191660e09390931c9290921790915591519091907f3311a04a346a103ac115cca33028a2bc82f1964805860d0d3fc84a2772496ada906110ad90849084904290612df2565b60405180910390a150505050565b6024805461092d90612e6d565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6023805461092d90612e6d565b611112612169565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6001816103e8811061118c57600080fd5b60209182820401919006915054906101000a900460ff1681565b60005461010090046001600160a01b031633146112055760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610546565b600080611211836117a2565b915091508060011461125e5760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610546565b60006113096112706020860186612dc4565b61127d604087018761300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112bf92505050606088018861300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113049250505060c0890160a08a01612dc4565b612344565b6000818152602760205260409020549091501561135d5760405162461bcd60e51b81526020600482015260126024820152711d1e125908185b1c9958591e481cdc195b9d60721b6044820152606401610546565b60226000815461136c90613063565b9182905550600082815260276020526040812091909155611393610b13608087018761300a565b905060006113a082611ac5565b915050806003146113eb5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610546565b60006113f8836001611f01565b905060006023805461140990612e6d565b91506000905061141a838284611cd6565b905061142d8160238054610b9190612e6d565b6114725760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610546565b60006114a66024805461148490612e6d565b86516114909250613050565b6024805461149d90612e6d565b87929150611cd6565b90506114b98160248054610b9190612e6d565b6114fd5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610546565b600061150885612374565b602254604080518d8152602081018c90526001600160a01b038416818301524260608201526080810192909252519192507fa82453ca34121b3ecb910d957824e27c5dc6465315949facd15fb72886490058919081900360a00190a16021546040516000916001600160a01b038416918381818185875af1925050503d80600081146115b0576040519150601f19603f3d011682016040523d82523d6000602084013e6115b5565b606091505b50509050806115f85760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610546565b505050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c006110ed565b611637612169565b60008190036116585760405162461bcd60e51b815260040161054690612e20565b6025611665828483612ef0565b507f8578c80bdea3ff51431011ed88db9cb415de2cf64f9ed5e7137288268cbdeb2c828260405161169792919061307c565b60405180910390a15050565b6116ab612169565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556116ef6110c8565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b611730612169565b60008390036117515760405162461bcd60e51b815260040161054690612e20565b602361175e848683612ef0565b50602461176c828483612ef0565b507f80bd1fdfe157286ce420ee763f91748455b249605748e5df12dad9844402bafc848484846040516110ad9493929190612fd8565b600080806118026117b66020860186612dc4565b6117c66040870160208801613090565b6117d3604088018861300a565b6117e060608a018a61300a565b6117ed60808c018c61300a565b6117fd60c08e0160a08f01612dc4565b6123aa565b905061184e611814604086018661300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123de92505050565b61189a5760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610546565b6118e46118aa606086018661300a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061248292505050565b6119305760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610546565b60006119426109cc604087018761300a565b91506119929050611956608087018761300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250612519915050565b6119e85760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610546565b6001603160981b01634ffd344a60e087013584611a0860c08a018a61300a565b8a61010001356040518663ffffffff1660e01b8152600401611a2e9594939291906130ba565b602060405180830381865afa158015611a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6f91906130ec565b611abb5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610546565b9094909350915050565b600080611ad383600061258e565b91509150915091565b6060600080611aea85611ac5565b909250905060018201611b0f5760405162461bcd60e51b81526004016105469061310e565b808410611b525760405162461bcd60e51b81526020600482015260116024820152702b37baba103932b0b21037bb32b9393ab760791b6044820152606401610546565b600080611b60846001612ddf565b905060005b86811015611bde57611b778883612730565b92506000198303611bca5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610546565b611bd48383612ddf565b9150600101611b65565b50611be98782612730565b91506000198203611c3c5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610546565b611c47878284611cd6565b9450505050505b92915050565b606081600981518110611c6957611c69612dae565b6020910101516001600160f81b031916603560f91b14611c9757505060408051602081019091526000815290565b600082600a81518110611cac57611cac612dae565b01602001516001600160f81b031981169150611ccf908490600b9060f81c611cd6565b9392505050565b606081600003611cf55750604080516020810190915260008152611ccf565b6000611d018385612ddf565b90508381118015611d13575080855110155b611d555760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610546565b604051915082604083010160405282825283850182038460208701018481015b80821015611d8e57815183830152602082019150611d75565b505050509392505050565b60008151600003611dac57506000919050565b81516020811115611e0a5760405162461bcd60e51b815260206004820152602260248201527f42797465732063616e6e6f74206265206d6f7265207468616e20333220627974604482015261657360f01b6064820152608401610546565b60209283015192036008029190911c919050565b606060008060005b84811015611e9757611e388683612794565b92506000198303611e835760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610546565b611e8d8383612ddf565b9150600101611e26565b50611ea28582612794565b91506000198203611eed5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610546565b611ef8858284611cd6565b95945050505050565b6060600080611f0f85611ac5565b909250905060018201611f345760405162461bcd60e51b81526004016105469061310e565b808410611f765760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610546565b600080611f84846001612ddf565b905060005b8681101561200f57611f9b888361258e565b909550925060018301611fe55760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610546565b82611ff1866001612ddf565b611ffb9190612ddf565b6120059083612ddf565b9150600101611f89565b5061201a878261258e565b9094509150600182016120645760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610546565b611c47816120728685612ddf565b61207d906001612ddf565b899190611cd6565b8151815160009190811461209d576000915050611c4e565b60206000805b8383116120d357505084810151848201516020909201918082146120ce576000945050505050611c4e565b6120a3565b60006120e0602085613050565b90505b8481101561214e578681815181106120fd576120fd612dae565b602001015160f81c60f81b6001600160f81b03191688828151811061212457612124612dae565b01602001516001600160f81b0319161461214657600095505050505050611c4e565b6001016120e3565b506001979650505050505050565b6000611c4e826001612ddf565b336121726110c8565b6001600160a01b031614610d775760405163118cdaa760e01b8152336004820152602401610546565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556121d382612836565b5050565b60606000806121e585611ac5565b90925090506001820161220a5760405162461bcd60e51b81526004016105469061310e565b80841061224c5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610546565b60008061225a846001612ddf565b905060005b868110156122d25761227188836128a7565b925060001983036122be5760405162461bcd60e51b815260206004820152601760248201527642616420566172496e7420696e2073637269707453696760481b6044820152606401610546565b6122c88383612ddf565b915060010161225f565b506122dd87826128a7565b91506000198203611c3c5760405162461bcd60e51b815260206004820152601760248201527642616420566172496e7420696e2073637269707453696760481b6044820152606401610546565b6020810151600090611c4e565b6000611c4e8260206128f0565b6000611ef8858585856040516020016123609493929190613150565b6040516020818303038152906040526128ff565b6000806023805461238490612e6d565b91506000905061239684836014611cd6565b61239f906131ad565b60601c949350505050565b60006123d08a8a8a8a8a8a8a8a8a60405160200161236099989796959493929190613200565b9a9950505050505050505050565b60008060006123ec84611ac5565b90925090508015806123ff575060001982145b1561240e575060009392505050565b600061241b836001612ddf565b905060005b82811015612475578551821061243c5750600095945050505050565b600061244887846128a7565b90506000198103612460575060009695505050505050565b61246a8184612ddf565b925050600101612420565b5093519093149392505050565b600080600061249084611ac5565b90925090508015806124a3575060001982145b156124b2575060009392505050565b60006124bf836001612ddf565b905060005b8281101561247557855182106124e05750600095945050505050565b60006124ec8784612730565b90506000198103612504575060009695505050505050565b61250e8184612ddf565b9250506001016124c4565b60008160000361252b57506000611c4e565b6000805b83811015612582578451821061254a57600092505050611c4e565b60006125568684612794565b9050600019810361256d5760009350505050611c4e565b6125778184612ddf565b92505060010161252f565b50835114905092915050565b600080600061259d8585612926565b90508060ff166000036125d25760008585815181106125be576125be612dae565b016020015190935060f81c91506127299050565b836125de826001613269565b60ff166125eb9190612ddf565b855110156126025760001960009250925050612729565b60008160ff166002036126465761263b612627612620876001612ddf565b88906128f0565b62ffff0060e882901c1660f89190911c1790565b61ffff16905061271f565b8160ff1660040361269557612688612662612620876001612ddf565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff16905061271f565b8160ff1660080361271f576127136126b1612620876001612ddf565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b600061273d826009612ddf565b8351101561274e5750600019611c4e565b60008061276585612760866008612ddf565b61258e565b90925090506001820161277e5760001992505050611c4e565b8061278a836009612ddf565b611ef89190612ddf565b60008060006127a3858561258e565b9092509050600182016127bc5760001992505050611c4e565b6000806127ca846001612ddf565b905060005b8381101561282b576127e588612760848a612ddf565b9095509250600183016128015760001995505050505050611c4e565b8261280d866001612ddf565b6128179190612ddf565b6128219083612ddf565b91506001016127cf565b509695505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008060006128b685856129ac565b9092509050600182016128cf5760001992505050611c4e565b806128db836025612ddf565b6128e59190612ddf565b611ef8906004612ddf565b6000611ccf8383016020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600082828151811061293a5761293a612dae565b016020015160f81c60ff0361295157506008611c4e565b82828151811061296357612963612dae565b016020015160f81c60fe0361297a57506004611c4e565b82828151811061298c5761298c612dae565b016020015160f81c60fd036129a357506002611c4e565b50600092915050565b6000806129ba836025612ddf565b845110156129cf575060001990506000612729565b6000806129e186612760876024612ddf565b9097909650945050505050565b600060208284031215612a0057600080fd5b5035919050565b60008083601f840112612a1957600080fd5b5081356001600160401b03811115612a3057600080fd5b6020830191508360208260051b850101111561272957600080fd5b60008060008060408587031215612a6157600080fd5b84356001600160401b03811115612a7757600080fd5b612a8387828801612a07565b90955093505060208501356001600160401b03811115612aa257600080fd5b612aae87828801612a07565b95989497509550505050565b60008083601f840112612acc57600080fd5b5081356001600160401b03811115612ae357600080fd5b60208301915083602082850101111561272957600080fd5b600080600080600060608688031215612b1357600080fd5b85356001600160401b03811115612b2957600080fd5b612b3588828901612aba565b90965094505060208601356001600160401b03811115612b5457600080fd5b612b6088828901612aba565b96999598509660400135949350505050565b60005b83811015612b8d578181015183820152602001612b75565b50506000910152565b6020815260008251806020840152612bb5816040850160208701612b72565b601f01601f19169190910160400192915050565b60006101208284031215612bdc57600080fd5b50919050565b600060208284031215612bf457600080fd5b81356001600160401b03811115612c0a57600080fd5b612c1684828501612bc9565b949350505050565b600080600060608486031215612c3357600080fd5b83356001600160401b03811115612c4957600080fd5b612c5586828701612bc9565b9660208601359650604090950135949350505050565b80356001600160e01b031981168114612c8357600080fd5b919050565b60008060408385031215612c9b57600080fd5b82359150612cab60208401612c6b565b90509250929050565b600060208284031215612cc657600080fd5b81356001600160a01b0381168114611ccf57600080fd5b60008060208385031215612cf057600080fd5b82356001600160401b03811115612d0657600080fd5b612d1285828601612aba565b90969095509350505050565b60008060008060408587031215612d3457600080fd5b84356001600160401b03811115612d4a57600080fd5b612d5687828801612aba565b90955093505060208501356001600160401b03811115612d7557600080fd5b612aae87828801612aba565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611c4e57611c4e612d81565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612dd657600080fd5b611ccf82612c6b565b80820180821115611c4e57611c4e612d81565b835181526020938401516001600160e01b031916938101939093526040830191909152606082015260800190565b6020808252601e908201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680612e8157607f821691505b602082108103612bdc57634e487b7160e01b600052602260045260246000fd5b601f821115612eeb57806000526020600020601f840160051c81016020851015612ec85750805b601f840160051c820191505b81811015612ee85760008155600101612ed4565b50505b505050565b6001600160401b03831115612f0757612f07612e57565b612f1b83612f158354612e6d565b83612ea1565b6000601f841160018114612f4f5760008515612f375750838201355b600019600387901b1c1916600186901b178355612ee8565b600083815260209020601f19861690835b82811015612f805786850135825560209485019460019092019101612f60565b5086821015612f9d5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000612fec604083018688612faf565b8281036020840152612fff818587612faf565b979650505050505050565b6000808335601e1984360301811261302157600080fd5b8301803591506001600160401b0382111561303b57600080fd5b60200191503681900382131561272957600080fd5b81810381811115611c4e57611c4e612d81565b60006001820161307557613075612d81565b5060010190565b602081526000612c16602083018486612faf565b6000602082840312156130a257600080fd5b81356001600160f01b031981168114611ccf57600080fd5b8581528460208201526080604082015260006130da608083018587612faf565b90508260608301529695505050505050565b6000602082840312156130fe57600080fd5b81518015158114611ccf57600080fd5b60208082526022908201527f52656164206f76657272756e20647572696e6720566172496e742070617273696040820152616e6760f01b606082015260800190565b6001600160e01b0319851681528351600090613173816004850160208901612b72565b84519083019061318a816004840160208901612b72565b6001600160e01b0319949094169301600481019390935250506008019392505050565b805160208201516bffffffffffffffffffffffff198116919060148210156131f9576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b60ff8181168382160190811115611c4e57611c4e612d8156","sourceMap":"430:14139:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1392:50;;;;;;;;;;-1:-1:-1;1392:50:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;391:25:58;;;379:2;364:18;1392:50:46;;;;;;;;1094:23;;;;;;;;;;-1:-1:-1;1094:23:46;;;;;;;;;;;592:14:58;;585:22;567:41;;555:2;540:18;1094:23:46;427:187:58;7652:595:46;;;;;;:::i;:::-;;:::i;:::-;;2630:769;;;;;;;;;;-1:-1:-1;2630:769:46;;;;;:::i;:::-;;:::i;1195:28::-;;;;;;;;;;;;;;;;1357:29;;;;;;;;;;-1:-1:-1;1357:29:46;;;;;:::i;:::-;;:::i;:::-;;;;3349:25:58;;;-1:-1:-1;;;;;;3410:33:58;;;3405:2;3390:18;;3383:61;3322:18;1357:29:46;3177:273:58;1123:23:46;;;;;;;;;;-1:-1:-1;1123:23:46;;;;;;;-1:-1:-1;;;;;1123:23:46;;;;;;-1:-1:-1;;;;;3619:32:58;;;3601:51;;3589:2;3574:18;1123:23:46;3455:203:58;1321:30:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10319:1463::-;;;;;;;;;;-1:-1:-1;10319:1463:46;;;;;:::i;:::-;;:::i;3155:101:29:-;;;;;;;;;;;;;:::i;9080:966:46:-;;;;;;;;;;-1:-1:-1;9080:966:46;;;;;:::i;:::-;;:::i;8310:108::-;;;;;;;;;;-1:-1:-1;8389:15:46;:22;8310:108;;2774:229:28;;;;;;;;;;;;;:::i;6936:385:46:-;;;;;;:::i;:::-;;:::i;1290:25::-;;;;;;;;;;;;;:::i;2441:144:29:-;;;;;;;;;;;;;:::i;1259:25:46:-;;;;;;;;;;;;;:::i;8561:147::-;;;;;;;;;;-1:-1:-1;8561:147:46;;;;;:::i;:::-;;:::i;1152:37::-;;;;;;;;;;-1:-1:-1;1152:37:46;;;;;:::i;:::-;;:::i;1448:50::-;;;;;;;;;;-1:-1:-1;1448:50:46;;;;;:::i;:::-;;;;;;;;;;;;;;996:91;;;;;;;;;;;;1044:42;996:91;;4826:1772;;;;;;;;;;-1:-1:-1;4826:1772:46;;;;;:::i;:::-;;:::i;1680:168:28:-;;;;;;;;;;;;;:::i;869:121:46:-;;;;;;;;;;;;-1:-1:-1;;;;;869:121:46;;4318:282;;;;;;;;;;-1:-1:-1;4318:282:46;;;;;:::i;:::-;;:::i;2041:247:28:-;;;;;;;;;;-1:-1:-1;2041:247:28;;;;;:::i;:::-;;:::i;3799:332:46:-;;;;;;;;;;-1:-1:-1;3799:332:46;;;;;:::i;:::-;;:::i;7652:595::-;7765:32;;;7757:60;;;;-1:-1:-1;;;7757:60:46;;7827:2:58;7757:60:46;;;7809:21:58;7866:2;7846:18;;;7839:30;-1:-1:-1;;;7885:18:58;;;7878:45;7940:18;;7757:60:46;;;;;;;;;7848:13;;:28;;7864:5;;7848:28;:::i;:::-;7835:9;:41;7827:77;;;;-1:-1:-1;;;7827:77:46;;8476:2:58;7827:77:46;;;8458:21:58;8515:2;8495:18;;;8488:30;-1:-1:-1;;;8534:18:58;;;8527:53;8597:18;;7827:77:46;8274:347:58;7827:77:46;7930:15;:22;7914:13;7962:279;7979:16;;;7962:279;;;8016:16;8035:92;;;;;;;;8064:5;;8070:1;8064:8;;;;;;;:::i;:::-;;;;;;;8035:92;;;;8100:9;;8110:1;8100:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;8035:92:46;;;8141:15;:26;;;;;;;-1:-1:-1;8141:26:46;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8141:26:46;;;;;;;;;;;;;-1:-1:-1;8186:44:46;8141:26;8203:9;8211:1;8203:5;:9;:::i;:::-;8214:15;8186:44;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;7997:3:46;;7962:279;;;;7747:500;7652:595;;;;:::o;2630:769::-;2057:10;1044:42;2057:27;2049:71;;;;-1:-1:-1;;;2049:71:46;;9747:2:58;2049:71:46;;;9729:21:58;9786:2;9766:18;;;9759:30;9825:33;9805:18;;;9798:61;9876:18;;2049:71:46;9545:355:58;2049:71:46;2773:11:::1;::::0;::::1;;2772:12;2764:56;;;::::0;-1:-1:-1;;;2764:56:46;;10107:2:58;2764:56:46::1;::::0;::::1;10089:21:58::0;10146:2;10126:18;;;10119:30;10185:33;10165:18;;;10158:61;10236:18;;2764:56:46::1;9905:355:58::0;2764:56:46::1;2838:14;2856:1;2838:19:::0;2830:58:::1;;;::::0;-1:-1:-1;;;2830:58:46;;10467:2:58;2830:58:46::1;::::0;::::1;10449:21:58::0;10506:2;10486:18;;;10479:30;10545:28;10525:18;;;10518:56;10591:18;;2830:58:46::1;10265:350:58::0;2830:58:46::1;2930:1;2906:25:::0;;;2898:68:::1;;;;-1:-1:-1::0;;;2898:68:46::1;;;;;;;:::i;:::-;2977:11;:18:::0;;-1:-1:-1;;2977:18:46::1;2991:4;2977:18;::::0;;3005:12:::1;:28;3020:13:::0;;3005:12;:28:::1;:::i;:::-;-1:-1:-1::0;3043:12:46::1;:28;3058:13:::0;;3043:12;:28:::1;:::i;:::-;-1:-1:-1::0;3081:13:46::1;:30:::0;;;3246:8:::1;:24:::0;;-1:-1:-1;;;;;;3246:24:46::1;::::0;::::1;::::0;;3286:42:::1;::::0;;13695:51:58;;;1044:42:46::1;13777:2:58::0;13762:18;;13755:60;3286:42:46::1;::::0;13668:18:58;3286:42:46::1;;;;;;;3343:49;3363:13;;3378;;3343:49;;;;;;;;;:::i;:::-;;;;;;;;2630:769:::0;;;;;:::o;1357:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1357:29:46;;;:::o;1321:30::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10319:1463::-;10411:40;10437:13;10411:25;:40::i;:::-;-1:-1:-1;10473:13:46;;-1:-1:-1;10490:40:46;10511:18;;;;:13;:18;:::i;:::-;10490:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10490:20:46;;-1:-1:-1;;;10490:40:46:i;:::-;10470:60;-1:-1:-1;10540:19:46;;-1:-1:-1;10562:60:46;10592:18;;;;:13;:18;:::i;:::-;10562:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10612:9:46;;-1:-1:-1;10620:1:46;;-1:-1:-1;10612:5:46;;-1:-1:-1;10612:9:46;:::i;:::-;10562:29;:60::i;:::-;10540:82;;10632:25;10660:36;10689:6;10660:28;:36::i;:::-;10632:64;-1:-1:-1;10706:16:46;10725:41;10740:25;10632:64;10706:16;10762:2;10740:18;:25::i;:::-;10725:14;:41::i;:::-;10706:60;;10776:18;10805:64;10820:48;10839:2;10865;10843:12;:19;:24;;;;:::i;:::-;10820:12;;:48;:18;:48::i;10805:64::-;10797:73;10900:25;;;:15;:25;;;;;;10797:73;;-1:-1:-1;10943:14:46;;;10935:47;;;;-1:-1:-1;;;10935:47:46;;15394:2:58;10935:47:46;;;15376:21:58;15433:2;15413:18;;;15406:30;-1:-1:-1;;;15452:18:58;;;15445:50;15512:18;;10935:47:46;15192:344:58;10935:47:46;10992:21;11016:60;11051:21;;;;:13;:21;:::i;:::-;11016:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11016:60:46;-1:-1:-1;11016:34:46;;-1:-1:-1;;11016:60:46:i;:::-;10992:84;;11086:19;11108:48;11144:8;11154:1;11108:35;:48::i;:::-;11086:70;;11180:11;11194:17;:24;;;;;:::i;:::-;;-1:-1:-1;11228:31:46;;-1:-1:-1;11262:20:46;:6;11228:31;11194:24;11262:12;:20::i;:::-;11228:54;;11300:51;11313:18;11333:17;11300:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:51::i;:::-;11292:90;;;;-1:-1:-1;;;11292:90:46;;15743:2:58;11292:90:46;;;15725:21:58;15782:2;15762:18;;;15755:30;15821:28;15801:18;;;15794:56;15867:18;;11292:90:46;15541:350:58;11292:90:46;11392:24;11419:15;11392:24;11435:13;11447:1;11435:9;:13;:::i;:::-;11419:30;;;;;;;;;;;;11392:57;;11520:16;11539;11559:1;11539:21;:78;;;;11584:33;11606:10;11584:21;:33::i;:::-;11564:16;:53;;11539:78;11520:97;;11635:11;11627:49;;;;-1:-1:-1;;;11627:49:46;;16098:2:58;11627:49:46;;;16080:21:58;16137:2;16117:18;;;16110:30;16176:27;16156:18;;;16149:55;16221:18;;11627:49:46;15896:349:58;11627:49:46;11720:4;11686:19;11706:10;11686:31;;;;;;;:::i;:::-;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;11740:35;11764:10;11740:35;;;;391:25:58;;379:2;364:18;;245:177;11740:35:46;;;;;;;;10401:1381;;;;;;;;;;;;10319:1463;:::o;3155:101:29:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;9080:966:46:-;9209:37;9235:10;9209:25;:37::i;:::-;-1:-1:-1;9256:18:46;;-1:-1:-1;9277:56:46;9306:14;;;;:10;:14;:::i;:::-;9277:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9322:10:46;;-1:-1:-1;9277:28:46;;-1:-1:-1;;9277:56:46:i;:::-;9256:77;;9343:12;9358:34;9386:5;9358:27;:34::i;:::-;9343:49;;9402:12;9417:32;9443:5;9417:25;:32::i;:::-;9402:47;;9459:16;9478:15;9494:10;9478:27;;;;;;;;:::i;:::-;;;;;;;;;;9459:46;;;;;;;;;9478:27;;;;;;9459:46;;;;;;;;;;;;-1:-1:-1;;;;;;9459:46:46;;;;;;;;;-1:-1:-1;9523:17:46;;:43;;;;;9561:5;-1:-1:-1;;;;;9544:22:46;;:4;:13;;;-1:-1:-1;;;;;9544:22:46;;;9523:43;9515:73;;;;-1:-1:-1;;;9515:73:46;;16452:2:58;9515:73:46;;;16434:21:58;16491:2;16471:18;;;16464:30;-1:-1:-1;;;16510:18:58;;;16503:47;16567:18;;9515:73:46;16250:341:58;9515:73:46;9602:13;9619:37;9640:15;;;;:10;:15;:::i;9619:37::-;9599:57;-1:-1:-1;9666:19:46;;-1:-1:-1;9688:57:46;9718:15;;;;:10;:15;:::i;9688:57::-;9666:79;;9755:25;9783:36;9812:6;9783:28;:36::i;:::-;9755:64;;9829:24;9864:28;9879:12;9864:14;:28::i;:::-;9856:37;-1:-1:-1;9933:39:46;9856:37;9933:21;:39::i;:::-;9903:27;;;;:15;:27;;;;;;;;;:69;;;;9987:52;;16770:25:58;;;16811:18;;;16804:34;;;9987:52:46;;16743:18:58;9987:52:46;;;;;;;9199:847;;;;;;;;9080:966;;;:::o;2774:229:28:-;966:10:31;;2869:14:28;:12;:14::i;:::-;-1:-1:-1;;;;;2869:24:28;;2865:96;;2916:34;;-1:-1:-1;;;2916:34:28;;-1:-1:-1;;;;;3619:32:58;;2916:34:28;;;3601:51:58;3574:18;;2916:34:28;3455:203:58;2865:96:28;2970:26;2989:6;2970:18;:26::i;:::-;2816:187;2774:229::o;6936:385:46:-;7033:13;;7020:9;:26;7012:62;;;;-1:-1:-1;;;7012:62:46;;8476:2:58;7012:62:46;;;8458:21:58;8515:2;8495:18;;;8488:30;-1:-1:-1;;;8534:18:58;;;8527:53;8597:18;;7012:62:46;8274:347:58;7012:62:46;7103:72;;;;;;;;;;;-1:-1:-1;;;;;;7103:72:46;;;;;;;;7201:15;:22;;7233:26;;;;;-1:-1:-1;7233:26:46;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7233:26:46;;;;;;;;;;;;;7274:40;;7103:72;;7201:22;7274:40;;;;7103:72;;7201:22;;7298:15;;7274:40;:::i;:::-;;;;;;;;7002:319;;6936:385;;:::o;1290:25::-;;;;;;;:::i;2441:144:29:-;2487:7;;1313:22;2533:20;2570:8;-1:-1:-1;;;;;2570:8:29;;2441:144;-1:-1:-1;;2441:144:29:o;1259:25:46:-;;;;;;;:::i;8561:147::-;2334:13:29;:11;:13::i;:::-;8630:8:46::1;:20:::0;;-1:-1:-1;;;;;;8630:20:46::1;;-1:-1:-1::0;;;;;8630:20:46;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;8665:36:::1;::::0;;8681:8;;;::::1;;13695:51:58::0;;13777:2;13762:18;;13755:60;;;;8665:36:46::1;::::0;13668:18:58;8665:36:46::1;;;;;;;8561:147:::0;:::o;1152:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4826:1772::-;2200:8;;;;;-1:-1:-1;;;;;2200:8:46;2186:10;:22;2178:61;;;;-1:-1:-1;;;2178:61:46;;17051:2:58;2178:61:46;;;17033:21:58;17090:2;17070:18;;;17063:30;17129:28;17109:18;;;17102:56;17175:18;;2178:61:46;16849:350:58;2178:61:46;5263:13:::1;5278:12:::0;5294:33:::1;5320:6;5294:25;:33::i;:::-;5262:65;;;;5345:4;5353:1;5345:9;5337:44;;;::::0;-1:-1:-1;;;5337:44:46;;17406:2:58;5337:44:46::1;::::0;::::1;17388:21:58::0;17445:2;17425:18;;;17418:30;-1:-1:-1;;;17464:18:58;;;17457:52;17526:18;;5337:44:46::1;17204:346:58::0;5337:44:46::1;5391:12;5406:83;5432:14;;::::0;::::1;:6:::0;:14:::1;:::i;:::-;5448:10;;::::0;::::1;:6:::0;:10:::1;:::i;:::-;5406:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5460:11:46::1;::::0;-1:-1:-1;;;5460:11:46::1;::::0;::::1;::::0;::::1;:::i;:::-;5406:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5473:15:46::1;::::0;-1:-1:-1;;;5473:15:46;;;::::1;::::0;::::1;;:::i;:::-;5406:25;:83::i;:::-;5508:21;::::0;;;:15:::1;:21;::::0;;;;;5391:98;;-1:-1:-1;5508:26:46;5500:57:::1;;;::::0;-1:-1:-1;;;5500:57:46;;17757:2:58;5500:57:46::1;::::0;::::1;17739:21:58::0;17796:2;17776:18;;;17769:30;-1:-1:-1;;;17815:18:58;;;17808:48;17873:18;;5500:57:46::1;17555:342:58::0;5500:57:46::1;5593:16;;5591:18;;;;;:::i;:::-;::::0;;;;-1:-1:-1;5567:21:46::1;::::0;;;:15:::1;:21;::::0;;;;:42;;;;5652:53:::1;5687:14;;::::0;::::1;:6:::0;:14:::1;:::i;5652:53::-;5628:77;;5718:14;5736:30;5757:8;5736:20;:30::i;:::-;5715:51;;;5784:6;5794:1;5784:11;5776:45;;;::::0;-1:-1:-1;;;5776:45:46;;18244:2:58;5776:45:46::1;::::0;::::1;18226:21:58::0;18283:2;18263:18;;;18256:30;-1:-1:-1;;;18302:18:58;;;18295:51;18363:18;;5776:45:46::1;18042:345:58::0;5776:45:46::1;5867:19;5889:48;5925:8;5935:1;5889:35;:48::i;:::-;5867:70;;5961:11;5975:12;:19;;;;;:::i;:::-;::::0;-1:-1:-1;6004:26:46::1;::::0;-1:-1:-1;6033:20:46::1;:6:::0;6004:26;5975:19;6033:12:::1;:20::i;:::-;6004:49;;6071:41;6084:13;6099:12;6071:41;;;;;:::i;:::-;6063:76;;;::::0;-1:-1:-1;;;6063:76:46;;18594:2:58;6063:76:46::1;::::0;::::1;18576:21:58::0;18633:2;18613:18;;;18606:30;-1:-1:-1;;;18652:18:58;;;18645:52;18714:18;;6063:76:46::1;18392:346:58::0;6063:76:46::1;6149:26;6178:70;6207:12;:19;;;;;:::i;:::-;6191:13:::0;;:35:::1;::::0;-1:-1:-1;6191:35:46::1;:::i;:::-;6228:12;:19;;;;;:::i;:::-;6178:6:::0;;:70;-1:-1:-1;6178:12:46::1;:70::i;:::-;6149:99;;6266:41;6279:13;6294:12;6266:41;;;;;:::i;:::-;6258:75;;;::::0;-1:-1:-1;;;6258:75:46;;18945:2:58;6258:75:46::1;::::0;::::1;18927:21:58::0;18984:2;18964:18;;;18957:30;-1:-1:-1;;;19003:18:58;;;18996:51;19064:18;;6258:75:46::1;18743:345:58::0;6258:75:46::1;6344:17;6364:31;6388:6;6364:23;:31::i;:::-;6459:16;::::0;6410:66:::1;::::0;;19352:25:58;;;19408:2;19393:18;;19386:34;;;-1:-1:-1;;;;;19456:32:58;;19436:18;;;19429:60;6442:15:46::1;19520:2:58::0;19505:18;;19498:34;19563:3;19548:19;;19541:35;;;;6410:66:46;19456:32:58;;-1:-1:-1;6410:66:46::1;::::0;;;;;19339:3:58;6410:66:46;;::::1;6528:13;::::0;6506:40:::1;::::0;6488:12:::1;::::0;-1:-1:-1;;;;;6506:14:46;::::1;::::0;6488:12;6506:40;6488:12;6506:40;6528:13;6506:14;:40:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6487:59;;;6564:7;6556:35;;;::::0;-1:-1:-1;;;6556:35:46;;19999:2:58;6556:35:46::1;::::0;::::1;19981:21:58::0;20038:2;20018:18;;;20011:30;-1:-1:-1;;;20057:18:58;;;20050:45;20112:18;;6556:35:46::1;19797:339:58::0;6556:35:46::1;4915:1683;;;;;;;;;;;4826:1772:::0;:::o;1680:168:28:-;1733:7;;1318:27;1784:25;1187:174;4318:282:46;2334:13:29;:11;:13::i;:::-;4449:1:46::1;4420:30:::0;;;4412:73:::1;;;;-1:-1:-1::0;;;4412:73:46::1;;;;;;;:::i;:::-;4496:17;:38;4516:18:::0;;4496:17;:38:::1;:::i;:::-;;4550:43;4574:18;;4550:43;;;;;;;:::i;:::-;;;;;;;;4318:282:::0;;:::o;2041:247:28:-;2334:13:29;:11;:13::i;:::-;1318:27:28;2197:26;;-1:-1:-1;;;;;;2197:26:28::1;-1:-1:-1::0;;;;;2197:26:28;::::1;::::0;;::::1;::::0;;2263:7:::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;2238:43:28::1;;;;;;;;;;;2120:168;2041:247:::0;:::o;3799:332:46:-;2334:13:29;:11;:13::i;:::-;3946:1:46::1;3922:25:::0;;;3914:68:::1;;;;-1:-1:-1::0;;;3914:68:46::1;;;;;;;:::i;:::-;3993:12;:28;4008:13:::0;;3993:12;:28:::1;:::i;:::-;-1:-1:-1::0;4031:12:46::1;:28;4046:13:::0;;4031:12;:28:::1;:::i;:::-;;4075:49;4095:13;;4110;;4075:49;;;;;;;;;:::i;12050:779::-:0;12139:7;;;12183:90;12211:10;;;;:2;:10;:::i;:::-;12223:7;;;;;;;;:::i;:::-;12232:6;;;;:2;:6;:::i;:::-;12240:7;;;;:2;:7;:::i;:::-;12249:10;;;;:2;:10;:::i;:::-;12261:11;;;;;;;;:::i;:::-;12183:27;:90::i;:::-;12167:106;-1:-1:-1;12291:28:46;12312:6;;;;:2;:6;:::i;:::-;12291:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12291:20:46;;-1:-1:-1;;;12291:28:46:i;:::-;12283:70;;;;-1:-1:-1;;;12283:70:46;;20878:2:58;12283:70:46;;;20860:21:58;20917:2;20897:18;;;20890:30;20956:31;20936:18;;;20929:59;21005:18;;12283:70:46;20676:353:58;12283:70:46;12371:30;12393:7;;;;:2;:7;:::i;:::-;12371:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12371:21:46;;-1:-1:-1;;;12371:30:46:i;:::-;12363:73;;;;-1:-1:-1;;;12363:73:46;;21236:2:58;12363:73:46;;;21218:21:58;21275:2;21255:18;;;21248:30;21314:32;21294:18;;;21287:60;21364:18;;12363:73:46;21034:354:58;12363:73:46;12458:12;12474:28;12495:6;;;;:2;:6;:::i;12474:28::-;12455:47;-1:-1:-1;12571:46:46;;-1:-1:-1;12600:10:46;;;;:2;:10;:::i;:::-;12571:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12612:4:46;;-1:-1:-1;12571:28:46;;-1:-1:-1;;12571:46:46:i;:::-;12563:92;;;;-1:-1:-1;;;12563:92:46;;21595:2:58;12563:92:46;;;21577:21:58;21634:2;21614:18;;;21607:30;21673:34;21653:18;;;21646:62;-1:-1:-1;;;21724:18:58;;;21717:31;21765:19;;12563:92:46;21393:397:58;12563:92:46;-1:-1:-1;;;;;12674:28:46;12703:15;;;;12720:5;12727:21;;;;12703:2;12727:21;:::i;:::-;12750:2;:8;;;12674:85;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12666:125;;;;-1:-1:-1;;;12666:125:46;;22743:2:58;12666:125:46;;;22725:21:58;22782:2;22762:18;;;22755:30;22821:29;22801:18;;;22794:57;22868:18;;12666:125:46;22541:351:58;12666:125:46;12810:5;;12817:4;;-1:-1:-1;12050:779:46;-1:-1:-1;;12050:779:46:o;2414:123:1:-;2475:7;2484;2510:20;2524:2;2528:1;2510:13;:20::i;:::-;2503:27;;;;2414:123;;;:::o;21812:827::-;21901:12;21925:22;21957:14;22009:18;22021:5;22009:11;:18::i;:::-;21982:45;;-1:-1:-1;21982:45:1;-1:-1:-1;22045:29:1;;;22037:76;;;;-1:-1:-1;;;22037:76:1;;;;;;;:::i;:::-;22140:6;22131;:15;22123:45;;;;-1:-1:-1;;;22123:45:1;;23502:2:58;22123:45:1;;;23484:21:58;23541:2;23521:18;;;23514:30;-1:-1:-1;;;23560:18:58;;;23553:47;23617:18;;22123:45:1;23300:341:58;22123:45:1;22179:12;;22223:18;22227:14;22223:1;:18;:::i;:::-;22205:36;;22257:10;22252:213;22278:6;22273:2;:11;22252:213;;;22314:39;22338:5;22345:7;22314:23;:39::i;:::-;22307:46;;-1:-1:-1;;22375:4:1;:19;22367:58;;;;-1:-1:-1;;;22367:58:1;;23848:2:58;22367:58:1;;;23830:21:58;23887:2;23867:18;;;23860:30;23926:28;23906:18;;;23899:56;23972:18;;22367:58:1;23646:350:58;22367:58:1;22439:15;22450:4;22439:15;;:::i;:::-;;-1:-1:-1;22286:5:1;;22252:213;;;;22482:39;22506:5;22513:7;22482:23;:39::i;:::-;22475:46;;-1:-1:-1;;22539:4:1;:19;22531:58;;;;-1:-1:-1;;;22531:58:1;;23848:2:58;22531:58:1;;;23830:21:58;23887:2;23867:18;;;23860:30;23926:28;23906:18;;;23899:56;23972:18;;22531:58:1;23646:350:58;22531:58:1;22606:26;:5;22618:7;22627:4;22606:11;:26::i;:::-;22599:33;;;;;;21812:827;;;;;:::o;24241:267::-;24315:12;24343:7;24351:1;24343:10;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;24343:10:1;-1:-1:-1;;;24343:21:1;24339:64;;-1:-1:-1;;24380:12:1;;;;;;;;;-1:-1:-1;24380:12:1;;;24241:267::o;24339:64::-;24412:15;24430:7;24438:2;24430:11;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;24430:11:1;;;-1:-1:-1;24458:43:1;;:7;;24472:2;;24430:11;;24458:13;:43::i;:::-;24451:50;24241:267;-1:-1:-1;;;24241:267:1:o;10344:924:2:-;10431:16;10463:7;10474:1;10463:12;10459:55;;-1:-1:-1;10491:12:2;;;;;;;;;-1:-1:-1;10491:12:2;;;;10459:55;10523:9;10535:16;10544:7;10535:6;:16;:::i;:::-;10523:28;;10576:6;10569:4;:13;:38;;;;;10603:4;10586:6;:13;:21;;10569:38;10561:70;;;;-1:-1:-1;;;10561:70:2;;24203:2:58;10561:70:2;;;24185:21:58;24242:2;24222:18;;;24215:30;-1:-1:-1;;;24261:18:58;;;24254:49;24320:18;;10561:70:2;24001:343:58;10561:70:2;10768:4;10762:11;10755:18;;10817:7;10812:2;10807:3;10803:12;10799:26;10793:4;10786:40;10851:7;10846:3;10839:20;10978:6;10970;10966:19;10961:3;10957:29;11054:6;11049:2;11041:6;11037:15;11033:28;11098:7;11093:3;11089:17;11000:252;11129:3;11124;11121:12;11000:252;;;11233:3;11227:10;11220:4;11215:3;11211:14;11204:34;11168:2;11163:3;11159:12;11152:19;;11000:252;;;11004:116;;;10651:611;10344:924;;;;;:::o;14115:452:46:-;14184:14;14214:7;:14;14232:1;14214:19;14210:60;;-1:-1:-1;14256:3:46;;14115:452;-1:-1:-1;14115:452:46:o;14210:60::-;14296:14;;14338:2;14328:12;;;14320:59;;;;-1:-1:-1;;;14320:59:46;;24551:2:58;14320:59:46;;;24533:21:58;24590:2;24570:18;;;24563:30;24629:34;24609:18;;;24602:62;-1:-1:-1;;;24680:18:58;;;24673:32;24722:19;;14320:59:46;24349:398:58;14320:59:46;14463:2;14450:16;;;14444:23;14488:15;;14540:1;14530:12;14526:25;;;;;;-1:-1:-1;14115:452:46:o;3420:579:0:-;3513:12;3537;3563:15;3598:10;3593:221;3619:6;3614:2;:11;3593:221;;;3655:43;3680:8;3690:7;3655:24;:43::i;:::-;3648:50;;-1:-1:-1;;3720:4:0;:28;3712:62;;;;-1:-1:-1;;;3712:62:0;;24954:2:58;3712:62:0;;;24936:21:58;24993:2;24973:18;;;24966:30;-1:-1:-1;;;25012:18:58;;;25005:51;25073:18;;3712:62:0;24752:345:58;3712:62:0;3788:15;3799:4;3788:15;;:::i;:::-;;-1:-1:-1;3627:5:0;;3593:221;;;;3831:43;3856:8;3866:7;3831:24;:43::i;:::-;3824:50;;-1:-1:-1;;3892:4:0;:28;3884:62;;;;-1:-1:-1;;;3884:62:0;;24954:2:58;3884:62:0;;;24936:21:58;24993:2;24973:18;;;24966:30;-1:-1:-1;;;25012:18:58;;;25005:51;25073:18;;3884:62:0;24752:345:58;3884:62:0;3963:29;:8;3978:7;3987:4;3963:14;:29::i;:::-;3956:36;3420:579;-1:-1:-1;;;;;3420:579:0:o;4360:974::-;4454:12;4478:22;4510:15;4572:30;4593:8;4572:20;:30::i;:::-;4544:58;;-1:-1:-1;4544:58:0;-1:-1:-1;4620:38:0;;;4612:85;;;;-1:-1:-1;;;4612:85:0;;;;;;;:::i;:::-;4724:7;4715:6;:16;4707:45;;;;-1:-1:-1;;;4707:45:0;;25304:2:58;4707:45:0;;;25286:21:58;25343:2;25323:18;;;25316:30;-1:-1:-1;;;25362:18:58;;;25355:46;25418:18;;4707:45:0;25102:340:58;4707:45:0;4763:16;;4811:18;4815:14;4811:1;:18;:::i;:::-;4793:36;;4845:9;4840:263;4864:6;4860:1;:10;4840:263;;;4920:41;4943:8;4953:7;4920:22;:41::i;:::-;4891:70;;-1:-1:-1;4891:70:0;-1:-1:-1;4983:32:0;;;4975:63;;;;-1:-1:-1;;;4975:63:0;;25649:2:58;4975:63:0;;;25631:21:58;25688:2;25668:18;;;25661:30;-1:-1:-1;;;25707:18:58;;;25700:48;25765:18;;4975:63:0;25447:342:58;4975:63:0;5084:8;5063:18;5067:14;5063:1;:18;:::i;:::-;:29;;;;:::i;:::-;5052:40;;;;:::i;:::-;;-1:-1:-1;4872:3:0;;4840:263;;;;5142:41;5165:8;5175:7;5142:22;:41::i;:::-;5113:70;;-1:-1:-1;5113:70:0;-1:-1:-1;5201:32:0;;;5193:63;;;;-1:-1:-1;;;5193:63:0;;25649:2:58;5193:63:0;;;25631:21:58;25688:2;25668:18;;;25661:30;-1:-1:-1;;;25707:18:58;;;25700:48;25765:18;;5193:63:0;25447:342:58;5193:63:0;5273:54;5288:7;5297:25;5308:14;5297:8;:25;:::i;:::-;:29;;5325:1;5297:29;:::i;:::-;5273:8;;:54;:14;:54::i;13335:774:46:-;13449:8;;13478;;13412:11;;13449:8;13471:15;;13467:58;;13509:5;13502:12;;;;;13467:58;13552:2;13535:14;;13612:289;13629:3;13619:6;:13;13612:289;;-1:-1:-1;;13691:14:46;;;13685:21;13740:14;;;13734:21;13794:2;13782:15;;;;13828:16;;;13824:67;;13871:5;13864:12;;;;;;;;13824:67;13612:289;;;13958:6;13967:11;13976:2;13967:6;:11;:::i;:::-;13958:20;;13953:128;13984:3;13980:1;:7;13953:128;;;14020:1;14022;14020:4;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;14012:12:46;;:1;14014;14012:4;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;14012:4:46;:12;14008:63;;14051:5;14044:12;;;;;;;;;14008:63;13989:3;;13953:128;;;-1:-1:-1;14098:4:46;;13335:774;-1:-1:-1;;;;;;;13335:774:46:o;11923:121::-;11997:7;12023:14;:10;12036:1;12023:14;:::i;2658:162:29:-;966:10:31;2717:7:29;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:29;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:29;;966:10:31;2763:40:29;;;3601:51:58;3574:18;;2763:40:29;3455:203:58;2472:222:28;1318:27;2621:22;;-1:-1:-1;;;;;;2621:22:28;;;2653:34;2678:8;2653:24;:34::i;:::-;2544:150;2472:222;:::o;11841:818:1:-;11928:12;11952:22;11984:13;12034:17;12046:4;12034:11;:17::i;:::-;12008:43;;-1:-1:-1;12008:43:1;-1:-1:-1;12069:29:1;;;12061:76;;;;-1:-1:-1;;;12061:76:1;;;;;;;:::i;:::-;12164:5;12155:6;:14;12147:43;;;;-1:-1:-1;;;12147:43:1;;25304:2:58;12147:43:1;;;25286:21:58;25343:2;25323:18;;;25316:30;-1:-1:-1;;;25362:18:58;;;25355:46;25418:18;;12147:43:1;25102:340:58;12147:43:1;12201:12;;12245:18;12249:14;12245:1;:18;:::i;:::-;12227:36;;12279:10;12274:217;12300:6;12295:2;:11;12274:217;;;12336:37;12359:4;12365:7;12336:22;:37::i;:::-;12329:44;;-1:-1:-1;;12395:4:1;:19;12387:55;;;;-1:-1:-1;;;12387:55:1;;25996:2:58;12387:55:1;;;25978:21:58;26035:2;26015:18;;;26008:30;-1:-1:-1;;;26054:18:58;;;26047:53;26117:18;;12387:55:1;25794:347:58;12387:55:1;12466:14;12476:4;12466:7;:14;:::i;:::-;12456:24;-1:-1:-1;12308:5:1;;12274:217;;;;12508:37;12531:4;12537:7;12508:22;:37::i;:::-;12501:44;;-1:-1:-1;;12563:4:1;:19;12555:55;;;;-1:-1:-1;;;12555:55:1;;25996:2:58;12555:55:1;;;25978:21:58;26035:2;26015:18;;;26008:30;-1:-1:-1;;;26054:18:58;;;26047:53;26117:18;;12555:55:1;25794:347:58;18631:122:1;12566:2:2;12550:28;;12544:35;18703:7:1;;18729:17;12417:178:2;19454:119:1;19524:6;19549:17;:6;19563:2;19549:13;:17::i;2637:355:4:-;2795:7;2921:64;2938:8;2948:4;2954:5;2961:9;2921:50;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:62;:64::i;12835:240:46:-;12913:7;12932:14;12949:12;:19;;;;;:::i;:::-;;-1:-1:-1;12978:13:46;;-1:-1:-1;13002:25:46;:7;12949:19;13024:2;13002:13;:25::i;:::-;12994:34;;;:::i;:::-;13053:14;;;12835:240;-1:-1:-1;;;;12835:240:46:o;431:320:0:-;643:7;669:75;686:7;695:4;701:3;;706:4;;712:7;;721:8;669:61;;;;;;;;;;;;;;;;:::i;:75::-;662:82;431:320;-1:-1:-1;;;;;;;;;;431:320:0:o;27793:991:1:-;27856:4;27872:22;27904:13;27954:17;27966:4;27954:11;:17::i;:::-;27928:43;;-1:-1:-1;27928:43:1;-1:-1:-1;28050:10:1;;;:43;;;-1:-1:-1;;28064:14:1;:29;28050:43;28046:86;;;-1:-1:-1;28116:5:1;;27793:991;-1:-1:-1;;;27793:991:1:o;28046:86::-;28142:15;28160:18;28164:14;28160:1;:18;:::i;:::-;28142:36;;28194:9;28189:492;28213:5;28209:1;:9;28189:492;;;28312:4;:11;28301:7;:22;28297:73;;-1:-1:-1;28350:5:1;;27793:991;-1:-1:-1;;;;;27793:991:1:o;28297:73::-;28445:16;28464:37;28487:4;28493:7;28464:22;:37::i;:::-;28445:56;;-1:-1:-1;;28519:8:1;:23;28515:74;;-1:-1:-1;28569:5:1;;27793:991;-1:-1:-1;;;;;;27793:991:1:o;28515:74::-;28651:19;28662:8;28651:19;;:::i;:::-;;-1:-1:-1;;28220:3:1;;28189:492;;;-1:-1:-1;28766:11:1;;28755:22;;;;;-1:-1:-1;;;27793:991:1:o;29056:1004::-;29121:4;29137:22;29169:14;29221:18;29233:5;29221:11;:18::i;:::-;29194:45;;-1:-1:-1;29194:45:1;-1:-1:-1;29319:11:1;;;:44;;;-1:-1:-1;;29334:14:1;:29;29319:44;29315:87;;;-1:-1:-1;29386:5:1;;29056:1004;-1:-1:-1;;;29056:1004:1:o;29315:87::-;29412:15;29430:18;29434:14;29430:1;:18;:::i;:::-;29412:36;;29464:9;29459:497;29483:6;29479:1;:10;29459:497;;;29583:5;:12;29572:7;:23;29568:74;;-1:-1:-1;29622:5:1;;29056:1004;-1:-1:-1;;;;;29056:1004:1:o;29568:74::-;29766:16;29785:39;29809:5;29816:7;29785:23;:39::i;:::-;29766:58;;-1:-1:-1;;29842:8:1;:23;29838:74;;-1:-1:-1;29892:5:1;;29056:1004;-1:-1:-1;;;;;;29056:1004:1:o;29838:74::-;29926:19;29937:8;29926:19;;:::i;:::-;;-1:-1:-1;;29491:3:1;;29459:497;;1060:871:0;1147:4;1222:6;1232:1;1222:11;1218:54;;-1:-1:-1;1256:5:0;1249:12;;1218:54;1282:15;1317:9;1312:512;1336:6;1332:1;:10;1312:512;;;1436:8;:15;1425:7;:26;1421:77;;1478:5;1471:12;;;;;;1421:77;1573:16;1592:43;1617:8;1627:7;1592:24;:43::i;:::-;1573:62;;-1:-1:-1;;1653:8:0;:32;1649:83;;1712:5;1705:12;;;;;;;1649:83;1794:19;1805:8;1794:19;;:::i;:::-;;-1:-1:-1;;1344:3:0;;1312:512;;;-1:-1:-1;1909:15:0;;1898:26;;-1:-1:-1;1060:871:0;;;;:::o;2999:704:1:-;3075:7;3084;3103:14;3120:36;3148:2;3152:3;3120:27;:36::i;:::-;3103:53;;3171:8;:13;;3183:1;3171:13;3167:70;;3208:1;3217:2;3220:3;3217:7;;;;;;;;:::i;:::-;;;;;3200:26;;-1:-1:-1;3217:7:1;;;-1:-1:-1;3200:26:1;;-1:-1:-1;3200:26:1;3167:70;3277:3;3262:12;3266:8;3262:1;:12;:::i;:::-;:18;;;;;;:::i;:::-;3250:2;:9;:30;3246:84;;;-1:-1:-1;;3317:1:1;3296:23;;;;;;;3246:84;3339:15;3368:8;:13;;3380:1;3368:13;3364:297;;3407:41;3428:18;3438:7;3442:3;3438:1;:7;:::i;:::-;3428:2;;:9;:18::i;:::-;7042:7;;;;;;7054;;;;;7041:21;;6959:110;3407:41;3397:51;;;;3364:297;;;3469:8;:13;;3481:1;3469:13;3465:196;;3508:41;3529:18;3539:7;3543:3;3539:1;:7;:::i;3529:18::-;6397:21;;;;;;6402:10;6360:6;;;;;6359:21;;;;6358:61;6485:2;6480:7;;;6468;;;6467:21;;6238:257;3508:41;3498:51;;;;3465:196;;;3570:8;:13;;3582:1;3570:13;3566:95;;3609:41;3630:18;3640:7;3644:3;3640:1;:7;:::i;3630:18::-;3623:26;;5965:22;5866:1;5793:6;;;5965:22;;;;5838:29;;;;5965:22;;;;5992:2;5964:30;;;-1:-1:-1;;;;;6056:7:1;5843:18;5792:29;;;;5838;;;;5791:77;;;;5918:7;;;5969:18;5917:30;6056:7;6061:2;6044:7;;;6056;;;6043:21;;5671:400;3609:41;-1:-1:-1;;;;;3599:51:1;;;3566:95;3670:26;;;;;-1:-1:-1;3688:7:1;-1:-1:-1;2999:704:1;;;;;;:::o;20911:536::-;21002:7;21042;21046:3;21042:1;:7;:::i;:::-;21025;:14;:24;21021:73;;;-1:-1:-1;;;21065:18:1;;21021:73;21103:22;;21212:31;21226:7;21235;21239:3;21235:1;:7;:::i;:::-;21212:13;:31::i;:::-;21172:71;;-1:-1:-1;21172:71:1;-1:-1:-1;21258:29:1;;;21254:78;;-1:-1:-1;;21303:18:1;;;;;;21254:78;21421:19;21396:22;21404:14;21396:5;:22;:::i;:::-;:44;;;;:::i;2254:783:0:-;2347:7;2366:22;2398:20;2470:37;2493:8;2503:3;2470:22;:37::i;:::-;2437:70;;-1:-1:-1;2437:70:0;-1:-1:-1;2521:38:0;;;2517:96;;-1:-1:-1;;2575:27:0;;;;;;2517:96;2623:16;;2667:18;2671:14;2667:1;:18;:::i;:::-;2649:36;;2701:9;2696:310;2720:12;2716:1;:16;2696:310;;;2782:47;2805:8;2815:13;2821:7;2815:3;:13;:::i;2782:47::-;2753:76;;-1:-1:-1;2753:76:0;-1:-1:-1;2847:32:0;;;2843:98;;-1:-1:-1;;2899:27:0;;;;;;;;;2843:98;2987:8;2966:18;2970:14;2966:1;:18;:::i;:::-;:29;;;;:::i;:::-;2955:40;;;;:::i;:::-;;-1:-1:-1;2734:3:0;;2696:310;;;-1:-1:-1;3023:7:0;2254:783;-1:-1:-1;;;;;;2254:783:0:o;3774:248:29:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:29;;-1:-1:-1;;;;;3941:19:29;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;14980:394:1:-;15069:7;15088:22;15120:21;15185:34;15207:6;15215:3;15185:21;:34::i;:::-;15151:68;;-1:-1:-1;15151:68:1;-1:-1:-1;15233:29:1;;;15229:78;;-1:-1:-1;;15278:18:1;;;;;;15229:78;15350:13;15324:23;15333:14;15324:6;:23;:::i;:::-;:39;;;;:::i;:::-;:43;;15366:1;15324:43;:::i;13081:136:2:-;13154:6;13186:23;13194:6;13202;12550:28;12566:2;12550:28;12544:35;;12417:178;9609:335:1;9670:11;9835:2;9829:4;9824:2;9818:9;9813:2;9809;9805:11;9802:1;9795:5;9784:54;9780:59;9893:2;9887:4;9883:2;9877:4;9874:1;9867:5;9856:40;-1:-1:-1;;9923:4:1;9917:11;;9609:335;-1:-1:-1;9609:335:1:o;1550:446::-;1640:5;1667:2;1670:3;1667:7;;;;;;;;:::i;:::-;;;;;;;1661:14;:22;1657:93;;-1:-1:-1;1706:1:1;1699:8;;1657:93;1769:2;1772:3;1769:7;;;;;;;;:::i;:::-;;;;;;;1781:4;1763:22;1759:93;;-1:-1:-1;1808:1:1;1801:8;;1759:93;1871:2;1874:3;1871:7;;;;;;;;:::i;:::-;;;;;;;1883:4;1865:22;1861:93;;-1:-1:-1;1910:1:1;1903:8;;1861:93;-1:-1:-1;1971:1:1;1550:446;;;;:::o;13785:388::-;13873:7;;13921:8;13926:3;13921:2;:8;:::i;:::-;13905:6;:13;:24;13901:78;;;-1:-1:-1;;;654:66:1;-1:-1:-1;13966:1:1;13945:23;;13901:78;13989:22;;14086:31;14100:6;14108:8;:3;14114:2;14108:8;:::i;14086:31::-;14052:65;;;;-1:-1:-1;13785:388:1;-1:-1:-1;;;;;13785:388:1:o;14:226:58:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:58;;14:226;-1:-1:-1;14:226:58:o;619:367::-;682:8;692:6;746:3;739:4;731:6;727:17;723:27;713:55;;764:1;761;754:12;713:55;-1:-1:-1;787:20:58;;-1:-1:-1;;;;;819:30:58;;816:50;;;862:1;859;852:12;816:50;899:4;891:6;887:17;875:29;;959:3;952:4;942:6;939:1;935:14;927:6;923:27;919:38;916:47;913:67;;;976:1;973;966:12;991:767;1112:6;1120;1128;1136;1189:2;1177:9;1168:7;1164:23;1160:32;1157:52;;;1205:1;1202;1195:12;1157:52;1245:9;1232:23;-1:-1:-1;;;;;1270:6:58;1267:30;1264:50;;;1310:1;1307;1300:12;1264:50;1349:70;1411:7;1402:6;1391:9;1387:22;1349:70;:::i;:::-;1438:8;;-1:-1:-1;1323:96:58;-1:-1:-1;;1526:2:58;1511:18;;1498:32;-1:-1:-1;;;;;1542:32:58;;1539:52;;;1587:1;1584;1577:12;1539:52;1626:72;1690:7;1679:8;1668:9;1664:24;1626:72;:::i;:::-;991:767;;;;-1:-1:-1;1717:8:58;-1:-1:-1;;;;991:767:58:o;1763:347::-;1814:8;1824:6;1878:3;1871:4;1863:6;1859:17;1855:27;1845:55;;1896:1;1893;1886:12;1845:55;-1:-1:-1;1919:20:58;;-1:-1:-1;;;;;1951:30:58;;1948:50;;;1994:1;1991;1984:12;1948:50;2031:4;2023:6;2019:17;2007:29;;2083:3;2076:4;2067:6;2059;2055:19;2051:30;2048:39;2045:59;;;2100:1;2097;2090:12;2115:826;2214:6;2222;2230;2238;2246;2299:2;2287:9;2278:7;2274:23;2270:32;2267:52;;;2315:1;2312;2305:12;2267:52;2355:9;2342:23;-1:-1:-1;;;;;2380:6:58;2377:30;2374:50;;;2420:1;2417;2410:12;2374:50;2459:58;2509:7;2500:6;2489:9;2485:22;2459:58;:::i;:::-;2536:8;;-1:-1:-1;2433:84:58;-1:-1:-1;;2624:2:58;2609:18;;2596:32;-1:-1:-1;;;;;2640:32:58;;2637:52;;;2685:1;2682;2675:12;2637:52;2724:60;2776:7;2765:8;2754:9;2750:24;2724:60;:::i;:::-;2115:826;;;;-1:-1:-1;2803:8:58;2907:2;2892:18;2879:32;;2115:826;-1:-1:-1;;;;2115:826:58:o;3663:250::-;3748:1;3758:113;3772:6;3769:1;3766:13;3758:113;;;3848:11;;;3842:18;3829:11;;;3822:39;3794:2;3787:10;3758:113;;;-1:-1:-1;;3905:1:58;3887:16;;3880:27;3663:250::o;3918:394::-;4065:2;4054:9;4047:21;4028:4;4097:6;4091:13;4140:6;4135:2;4124:9;4120:18;4113:34;4156:79;4228:6;4223:2;4212:9;4208:18;4203:2;4195:6;4191:15;4156:79;:::i;:::-;4296:2;4275:15;-1:-1:-1;;4271:29:58;4256:45;;;;4303:2;4252:54;;3918:394;-1:-1:-1;;3918:394:58:o;4317:166::-;4387:5;4432:3;4423:6;4418:3;4414:16;4410:26;4407:46;;;4449:1;4446;4439:12;4407:46;-1:-1:-1;4471:6:58;4317:166;-1:-1:-1;4317:166:58:o;4488:377::-;4585:6;4638:2;4626:9;4617:7;4613:23;4609:32;4606:52;;;4654:1;4651;4644:12;4606:52;4694:9;4681:23;-1:-1:-1;;;;;4719:6:58;4716:30;4713:50;;;4759:1;4756;4749:12;4713:50;4782:77;4851:7;4842:6;4831:9;4827:22;4782:77;:::i;:::-;4772:87;4488:377;-1:-1:-1;;;;4488:377:58:o;4870:611::-;4985:6;4993;5001;5054:2;5042:9;5033:7;5029:23;5025:32;5022:52;;;5070:1;5067;5060:12;5022:52;5110:9;5097:23;-1:-1:-1;;;;;5135:6:58;5132:30;5129:50;;;5175:1;5172;5165:12;5129:50;5198:77;5267:7;5258:6;5247:9;5243:22;5198:77;:::i;:::-;5188:87;5344:2;5329:18;;5316:32;;-1:-1:-1;5445:2:58;5430:18;;;5417:32;;4870:611;-1:-1:-1;;;;4870:611:58:o;5486:173::-;5553:20;;-1:-1:-1;;;;;;5602:32:58;;5592:43;;5582:71;;5649:1;5646;5639:12;5582:71;5486:173;;;:::o;5664:298::-;5731:6;5739;5792:2;5780:9;5771:7;5767:23;5763:32;5760:52;;;5808:1;5805;5798:12;5760:52;5853:23;;;-1:-1:-1;5919:37:58;5952:2;5937:18;;5919:37;:::i;:::-;5909:47;;5664:298;;;;;:::o;5967:286::-;6026:6;6079:2;6067:9;6058:7;6054:23;6050:32;6047:52;;;6095:1;6092;6085:12;6047:52;6121:23;;-1:-1:-1;;;;;6173:31:58;;6163:42;;6153:70;;6219:1;6216;6209:12;6494:409;6564:6;6572;6625:2;6613:9;6604:7;6600:23;6596:32;6593:52;;;6641:1;6638;6631:12;6593:52;6681:9;6668:23;-1:-1:-1;;;;;6706:6:58;6703:30;6700:50;;;6746:1;6743;6736:12;6700:50;6785:58;6835:7;6826:6;6815:9;6811:22;6785:58;:::i;:::-;6862:8;;6759:84;;-1:-1:-1;6494:409:58;-1:-1:-1;;;;6494:409:58:o;6908:712::-;6998:6;7006;7014;7022;7075:2;7063:9;7054:7;7050:23;7046:32;7043:52;;;7091:1;7088;7081:12;7043:52;7131:9;7118:23;-1:-1:-1;;;;;7156:6:58;7153:30;7150:50;;;7196:1;7193;7186:12;7150:50;7235:58;7285:7;7276:6;7265:9;7261:22;7235:58;:::i;:::-;7312:8;;-1:-1:-1;7209:84:58;-1:-1:-1;;7400:2:58;7385:18;;7372:32;-1:-1:-1;;;;;7416:32:58;;7413:52;;;7461:1;7458;7451:12;7413:52;7500:60;7552:7;7541:8;7530:9;7526:24;7500:60;:::i;7969:127::-;8030:10;8025:3;8021:20;8018:1;8011:31;8061:4;8058:1;8051:15;8085:4;8082:1;8075:15;8101:168;8174:9;;;8205;;8222:15;;;8216:22;;8202:37;8192:71;;8243:18;;:::i;8626:127::-;8687:10;8682:3;8678:20;8675:1;8668:31;8718:4;8715:1;8708:15;8742:4;8739:1;8732:15;8758:184;8816:6;8869:2;8857:9;8848:7;8844:23;8840:32;8837:52;;;8885:1;8882;8875:12;8837:52;8908:28;8926:9;8908:28;:::i;8947:125::-;9012:9;;;9033:10;;;9030:36;;;9046:18;;:::i;9077:463::-;9344:13;;9326:32;;9418:4;9406:17;;;9400:24;-1:-1:-1;;;;;;9396:51:58;9374:20;;;9367:81;;;;9479:2;9464:18;;9457:34;;;;9522:2;9507:18;;9500:34;9313:3;9298:19;;9077:463::o;10620:354::-;10822:2;10804:21;;;10861:2;10841:18;;;10834:30;10900:32;10895:2;10880:18;;10873:60;10965:2;10950:18;;10620:354::o;10979:127::-;11040:10;11035:3;11031:20;11028:1;11021:31;11071:4;11068:1;11061:15;11095:4;11092:1;11085:15;11111:380;11190:1;11186:12;;;;11233;;;11254:61;;11308:4;11300:6;11296:17;11286:27;;11254:61;11361:2;11353:6;11350:14;11330:18;11327:38;11324:161;;11407:10;11402:3;11398:20;11395:1;11388:31;11442:4;11439:1;11432:15;11470:4;11467:1;11460:15;11621:517;11722:2;11717:3;11714:11;11711:421;;;11758:5;11755:1;11748:16;11802:4;11799:1;11789:18;11872:2;11860:10;11856:19;11853:1;11849:27;11843:4;11839:38;11908:4;11896:10;11893:20;11890:47;;;-1:-1:-1;11931:4:58;11890:47;11986:2;11981:3;11977:12;11974:1;11970:20;11964:4;11960:31;11950:41;;12041:81;12059:2;12052:5;12049:13;12041:81;;;12118:1;12104:16;;12085:1;12074:13;12041:81;;;12045:3;;11711:421;11621:517;;;:::o;12314:1202::-;-1:-1:-1;;;;;12431:3:58;12428:27;12425:53;;;12458:18;;:::i;:::-;12487:93;12576:3;12536:38;12568:4;12562:11;12536:38;:::i;:::-;12530:4;12487:93;:::i;:::-;12606:1;12631:2;12626:3;12623:11;12648:1;12643:615;;;;13302:1;13319:3;13316:93;;;-1:-1:-1;13375:19:58;;;13362:33;13316:93;-1:-1:-1;;12271:1:58;12267:11;;;12263:24;12259:29;12249:40;12295:1;12291:11;;;12246:57;13422:78;;12616:894;;12643:615;11568:1;11561:14;;;11605:4;11592:18;;-1:-1:-1;;12679:17:58;;;12779:9;12801:229;12815:7;12812:1;12809:14;12801:229;;;12904:19;;;12891:33;12876:49;;13011:4;12996:20;;;;12964:1;12952:14;;;;12831:12;12801:229;;;12805:3;13058;13049:7;13046:16;13043:159;;;13182:1;13178:6;13172:3;13166;13163:1;13159:11;13155:21;13151:34;13147:39;13134:9;13129:3;13125:19;13112:33;13108:79;13100:6;13093:95;13043:159;;;13245:1;13239:3;13236:1;13232:11;13228:19;13222:4;13215:33;12616:894;;12314:1202;;;:::o;13826:266::-;13914:6;13909:3;13902:19;13966:6;13959:5;13952:4;13947:3;13943:14;13930:43;-1:-1:-1;14018:1:58;13993:16;;;14011:4;13989:27;;;13982:38;;;;14074:2;14053:15;;;-1:-1:-1;;14049:29:58;14040:39;;;14036:50;;13826:266::o;14097:431::-;14310:2;14299:9;14292:21;14273:4;14336:61;14393:2;14382:9;14378:18;14370:6;14362;14336:61;:::i;:::-;14445:9;14437:6;14433:22;14428:2;14417:9;14413:18;14406:50;14473:49;14515:6;14507;14499;14473:49;:::i;:::-;14465:57;14097:431;-1:-1:-1;;;;;;;14097:431:58:o;14533:521::-;14610:4;14616:6;14676:11;14663:25;14770:2;14766:7;14755:8;14739:14;14735:29;14731:43;14711:18;14707:68;14697:96;;14789:1;14786;14779:12;14697:96;14816:33;;14868:20;;;-1:-1:-1;;;;;;14900:30:58;;14897:50;;;14943:1;14940;14933:12;14897:50;14976:4;14964:17;;-1:-1:-1;15007:14:58;15003:27;;;14993:38;;14990:58;;;15044:1;15041;15034:12;15059:128;15126:9;;;15147:11;;;15144:37;;;15161:18;;:::i;17902:135::-;17941:3;17962:17;;;17959:43;;17982:18;;:::i;:::-;-1:-1:-1;18029:1:58;18018:13;;17902:135::o;20141:244::-;20298:2;20287:9;20280:21;20261:4;20318:61;20375:2;20364:9;20360:18;20352:6;20344;20318:61;:::i;20390:281::-;20448:6;20501:2;20489:9;20480:7;20476:23;20472:32;20469:52;;;20517:1;20514;20507:12;20469:52;20543:23;;-1:-1:-1;;;;;;20595:27:58;;20585:38;;20575:66;;20637:1;20634;20627:12;21795:459;22036:6;22025:9;22018:25;22079:6;22074:2;22063:9;22059:18;22052:34;22122:3;22117:2;22106:9;22102:18;22095:31;21999:4;22143:62;22200:3;22189:9;22185:19;22177:6;22169;22143:62;:::i;:::-;22135:70;;22241:6;22236:2;22225:9;22221:18;22214:34;21795:459;;;;;;;;:::o;22259:277::-;22326:6;22379:2;22367:9;22358:7;22354:23;22350:32;22347:52;;;22395:1;22392;22385:12;22347:52;22427:9;22421:16;22480:5;22473:13;22466:21;22459:5;22456:32;22446:60;;22502:1;22499;22492:12;22897:398;23099:2;23081:21;;;23138:2;23118:18;;;23111:30;23177:34;23172:2;23157:18;;23150:62;-1:-1:-1;;;23243:2:58;23228:18;;23221:32;23285:3;23270:19;;22897:398::o;26146:706::-;-1:-1:-1;;;;;;26403:33:58;;26391:46;;26460:13;;26373:3;;26482:74;26460:13;26545:1;26536:11;;26529:4;26517:17;;26482:74;:::i;:::-;26616:13;;26575:16;;;;26638:75;26616:13;26700:1;26692:10;;26685:4;26673:17;;26638:75;:::i;:::-;-1:-1:-1;;;;;;26783:33:58;;;;26739:17;;26758:1;26735:25;;26769:48;;;;-1:-1:-1;;26833:13:58;;;26146:706;-1:-1:-1;;;26146:706:58:o;26857:412::-;26975:12;;27023:4;27012:16;;27006:23;-1:-1:-1;;27047:40:58;;;26975:12;27110:2;27099:14;;27096:167;;;27225:26;27221:31;27190:26;27186:31;27176:6;27172:2;27168:15;27165:1;27161:23;27157:61;27153:2;27149:70;27145:108;27136:117;;27096:167;;;26857:412;;;:::o;27274:853::-;-1:-1:-1;;;;;;27633:33:58;;27621:46;;-1:-1:-1;;;;;;27696:28:58;;27692:1;27683:11;;27676:49;27768:6;27760;27756:1;27747:11;;27734:41;27603:3;27803:6;27798:3;27794:16;27837:1;27833:2;27829:10;27859:1;27855:2;27848:13;27895:6;27887;27883:2;27870:32;-1:-1:-1;27964:1:58;27925:15;;;27942:1;27921:23;27953:13;;;28000:6;27992;27921:23;27975:32;-1:-1:-1;;;;;;28061:33:58;;;;28026:15;;;;28050:45;;;-1:-1:-1;28119:1:58;28111:10;;27274:853;-1:-1:-1;;;;;;;;27274:853:58:o;28132:148::-;28220:4;28199:12;;;28213;;;28195:31;;28238:13;;28235:39;;;28254:18;;:::i","linkReferences":{}},"methodIdentifiers":{"LIGHT_CLIENT()":"e613ae00","SYSTEM_CALLER()":"d761753e","acceptOwnership()":"79ba5097","batchWithdraw(bytes32[],bytes4[])":"19854623","declareWithdrawFiller((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256),uint256,uint256)":"74ab4a83","deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":"dd95c7c6","depositAmount()":"419759f5","getWithdrawalCount()":"781952a8","initialize(bytes,bytes,uint256)":"41260137","initialized()":"158ef93e","isOperatorMalicious(uint256)":"bafa9eb2","markMaliciousOperator((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":"5e3cc740","operator()":"570ca735","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","scriptPrefix()":"a41c5cf3","scriptSuffix()":"87f8bf56","setDepositScript(bytes,bytes)":"f8e655d2","setOperator(address)":"b3ab15fb","setSlashOrTakeScript(bytes)":"f119a9bd","slashOrTakeScript()":"5d3e3176","transferOwnership(address)":"f2fde38b","txIdToDepositId(bytes32)":"11e53a01","withdraw(bytes32,bytes4)":"8786dba7","withdrawFillers(uint256)":"c045577b","withdrawalUTXOs(uint256)":"471ba1e3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wtxId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"txId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"scriptPrefix\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"scriptSuffix\",\"type\":\"bytes\"}],\"name\":\"DepositScriptUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorId\",\"type\":\"uint256\"}],\"name\":\"MaliciousOperatorMarked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOperator\",\"type\":\"address\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"slashOrTakeScript\",\"type\":\"bytes\"}],\"name\":\"SlashOrTakeScriptUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawFillerId\",\"type\":\"uint256\"}],\"name\":\"WithdrawFillerDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"outputId\",\"type\":\"bytes4\"}],\"indexed\":false,\"internalType\":\"struct Bridge.UTXO\",\"name\":\"utxo\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LIGHT_CLIENT\",\"outputs\":[{\"internalType\":\"contract BitcoinLightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"txIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"outputIds\",\"type\":\"bytes4[]\"}],\"name\":\"batchWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes2\",\"name\":\"flag\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"vin\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"vout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"witness\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"intermediate_nodes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"block_height\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.TransactionParams\",\"name\":\"withdrawTp\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inputIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawId\",\"type\":\"uint256\"}],\"name\":\"declareWithdrawFiller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes2\",\"name\":\"flag\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"vin\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"vout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"witness\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"intermediate_nodes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"block_height\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.TransactionParams\",\"name\":\"moveTp\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWithdrawalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_scriptPrefix\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_depositAmount\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"isOperatorMalicious\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes2\",\"name\":\"flag\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"vin\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"vout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"witness\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"intermediate_nodes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"block_height\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.TransactionParams\",\"name\":\"slashOrTakeTp\",\"type\":\"tuple\"}],\"name\":\"markMaliciousOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scriptPrefix\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scriptSuffix\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_scriptPrefix\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"}],\"name\":\"setDepositScript\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_slashOrTakeScript\",\"type\":\"bytes\"}],\"name\":\"setSlashOrTakeScript\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashOrTakeScript\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"txIdToDepositId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"outputId\",\"type\":\"bytes4\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawFillers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawalUTXOs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"txId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"outputId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"batchWithdraw(bytes32[],bytes4[])\":{\"details\":\"Takes in multiple Bitcoin addresses as recipient addresses should be unique\",\"params\":{\"outputIds\":\"the outputIds of the outputs in the withdrawal transactions\",\"txIds\":\"the txIds of the withdrawal transactions on Bitcoin\"}},\"declareWithdrawFiller((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256),uint256,uint256)\":{\"params\":{\"inputIndex\":\"Index of the input that is the withdrawal UTXO (withdrawing user's ANYONECANPAY)\",\"withdrawId\":\"ID of the withdrawal action\",\"withdrawTp\":\"Transaction parameters of the withdrawal transaction on Bitcoin\"}},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"params\":{\"moveTp\":\"Transaction parameters of the move transaction on Bitcoin\"}},\"getWithdrawalCount()\":{\"returns\":{\"_0\":\"The count of withdrawals happened so far\"}},\"initialize(bytes,bytes,uint256)\":{\"params\":{\"_depositAmount\":\"The CBTC amount that can be deposited and withdrawn\",\"_scriptPrefix\":\"First part of the deposit script expected in the witness field for all L1 deposits \",\"_scriptSuffix\":\"The suffix of the deposit script that follows the receiver address\"}},\"markMaliciousOperator((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"params\":{\"slashOrTakeTp\":\"Transaction parameters of the slashOrTake transaction on Bitcoin\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDepositScript(bytes,bytes)\":{\"details\":\"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver\",\"params\":{\"_scriptPrefix\":\"The new deposit script prefix\",\"_scriptSuffix\":\"The part of the deposit script that succeeds the receiver address\"}},\"setOperator(address)\":{\"params\":{\"_operator\":\"Address of the privileged operator\"}},\"setSlashOrTakeScript(bytes)\":{\"params\":{\"_slashOrTakeScript\":\"The slashOrTake script\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"withdraw(bytes32,bytes4)\":{\"params\":{\"outputId\":\"The outputId of the output in the withdrawal transaction\",\"txId\":\"The txId of the withdrawal transaction on Bitcoin\"}}},\"title\":\"Bridge contract for the Citrea end of Citrea <> Bitcoin bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"batchWithdraw(bytes32[],bytes4[])\":{\"notice\":\"Batch version of `withdraw` that can accept multiple cBTC\"},\"declareWithdrawFiller((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256),uint256,uint256)\":{\"notice\":\"Stores the filler of a certain withdrawal after the a user's withdrawal is covered on Bitcoin side\"},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"notice\":\"Checks if the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount to the receiver\"},\"initialize(bytes,bytes,uint256)\":{\"notice\":\"Initializes the bridge contract and sets the deposit script\"},\"markMaliciousOperator((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"notice\":\"Marks an operator as malicious if the operator burned their slashOrTake transaction as if they filled a withdrawal even though they didn't fill a withdrawal\"},\"setDepositScript(bytes,bytes)\":{\"notice\":\"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness\"},\"setOperator(address)\":{\"notice\":\"Sets the operator address that can process user deposits\"},\"setSlashOrTakeScript(bytes)\":{\"notice\":\"Sets the slashOrTake script that is expected in the witness field of the slashOrTake transaction on Bitcoin\"},\"withdraw(bytes32,bytes4)\":{\"notice\":\"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator \"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":bitcoin-spv/=lib/bitcoin-spv/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"lib/WitnessUtils.sol\":{\"keccak256\":\"0x0b0d59b4e73d6f5b4bbf1032f72bb15c2f1548c2ee319b80ae9e4c22576a70af\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8499a5fc520941cb1b970637850cabfbc2d5a51abed824886063420c686b57de\",\"dweb:/ipfs/QmaLYLJ36PyFAaP3MgvFWW3knDsSUtVfCfs7Lp7oYFPZ1w\"]},\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0x9c8acc0e16c7a02b3328bf41cf08922b43f1eaf780199a0cf4aefac61ad2528c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ac95a3440699da490d6830aec1ad4d515d7bba605be570767b39cf7fbdd182e7\",\"dweb:/ipfs/QmUt8FcufKn5afs1n2cf2JF1wwti1pDSaNnxDzJNRcqyWf\"]},\"src/Bridge.sol\":{\"keccak256\":\"0xb9c48d4e58cab14b0cbb4932234c1e84143ca3bdf67ba1b985af4b26de8e845e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b25ff320f3e6becded6328f05027344197ead447f2ea5bcb060e795ae5999069\",\"dweb:/ipfs/QmaK736wv3SRmHkEJowc1jy9vhVkUeGtqG5oUugCf3dHPb\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0xd299a79b3aec00e07839b7dcbed21d3d7d50e26c0149e730170f7761202552ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8cfcbc8fe666020b8a707d062e296dcf159737645a8c677975bad71b456b4ad\",\"dweb:/ipfs/QmSuDCXJFYpRpTXdiWVVwvm69yzmTZj7zMLmRPNazRR4dj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"bytes32","name":"wtxId","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"txId","type":"bytes32","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false},{"internalType":"uint256","name":"depositId","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"bytes","name":"scriptPrefix","type":"bytes","indexed":false},{"internalType":"bytes","name":"scriptSuffix","type":"bytes","indexed":false}],"type":"event","name":"DepositScriptUpdate","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"operatorId","type":"uint256","indexed":false}],"type":"event","name":"MaliciousOperatorMarked","anonymous":false},{"inputs":[{"internalType":"address","name":"oldOperator","type":"address","indexed":false},{"internalType":"address","name":"newOperator","type":"address","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes","name":"slashOrTakeScript","type":"bytes","indexed":false}],"type":"event","name":"SlashOrTakeScriptUpdate","anonymous":false},{"inputs":[{"internalType":"uint256","name":"withdrawId","type":"uint256","indexed":false},{"internalType":"uint256","name":"withdrawFillerId","type":"uint256","indexed":false}],"type":"event","name":"WithdrawFillerDeclared","anonymous":false},{"inputs":[{"internalType":"struct Bridge.UTXO","name":"utxo","type":"tuple","components":[{"internalType":"bytes32","name":"txId","type":"bytes32"},{"internalType":"bytes4","name":"outputId","type":"bytes4"}],"indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"Withdrawal","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LIGHT_CLIENT","outputs":[{"internalType":"contract BitcoinLightClient","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"bytes32[]","name":"txIds","type":"bytes32[]"},{"internalType":"bytes4[]","name":"outputIds","type":"bytes4[]"}],"stateMutability":"payable","type":"function","name":"batchWithdraw"},{"inputs":[{"internalType":"struct Bridge.TransactionParams","name":"withdrawTp","type":"tuple","components":[{"internalType":"bytes4","name":"version","type":"bytes4"},{"internalType":"bytes2","name":"flag","type":"bytes2"},{"internalType":"bytes","name":"vin","type":"bytes"},{"internalType":"bytes","name":"vout","type":"bytes"},{"internalType":"bytes","name":"witness","type":"bytes"},{"internalType":"bytes4","name":"locktime","type":"bytes4"},{"internalType":"bytes","name":"intermediate_nodes","type":"bytes"},{"internalType":"uint256","name":"block_height","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]},{"internalType":"uint256","name":"inputIndex","type":"uint256"},{"internalType":"uint256","name":"withdrawId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"declareWithdrawFiller"},{"inputs":[{"internalType":"struct Bridge.TransactionParams","name":"moveTp","type":"tuple","components":[{"internalType":"bytes4","name":"version","type":"bytes4"},{"internalType":"bytes2","name":"flag","type":"bytes2"},{"internalType":"bytes","name":"vin","type":"bytes"},{"internalType":"bytes","name":"vout","type":"bytes"},{"internalType":"bytes","name":"witness","type":"bytes"},{"internalType":"bytes4","name":"locktime","type":"bytes4"},{"internalType":"bytes","name":"intermediate_nodes","type":"bytes"},{"internalType":"uint256","name":"block_height","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"depositAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getWithdrawalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"_scriptPrefix","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"},{"internalType":"uint256","name":"_depositAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"isOperatorMalicious","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct Bridge.TransactionParams","name":"slashOrTakeTp","type":"tuple","components":[{"internalType":"bytes4","name":"version","type":"bytes4"},{"internalType":"bytes2","name":"flag","type":"bytes2"},{"internalType":"bytes","name":"vin","type":"bytes"},{"internalType":"bytes","name":"vout","type":"bytes"},{"internalType":"bytes","name":"witness","type":"bytes"},{"internalType":"bytes4","name":"locktime","type":"bytes4"},{"internalType":"bytes","name":"intermediate_nodes","type":"bytes"},{"internalType":"uint256","name":"block_height","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"markMaliciousOperator"},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"scriptPrefix","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"scriptSuffix","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"_scriptPrefix","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setDepositScript"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperator"},{"inputs":[{"internalType":"bytes","name":"_slashOrTakeScript","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setSlashOrTakeScript"},{"inputs":[],"stateMutability":"view","type":"function","name":"slashOrTakeScript","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"txIdToDepositId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"txId","type":"bytes32"},{"internalType":"bytes4","name":"outputId","type":"bytes4"}],"stateMutability":"payable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawFillers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalUTXOs","outputs":[{"internalType":"bytes32","name":"txId","type":"bytes32"},{"internalType":"bytes4","name":"outputId","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"batchWithdraw(bytes32[],bytes4[])":{"details":"Takes in multiple Bitcoin addresses as recipient addresses should be unique","params":{"outputIds":"the outputIds of the outputs in the withdrawal transactions","txIds":"the txIds of the withdrawal transactions on Bitcoin"}},"declareWithdrawFiller((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256),uint256,uint256)":{"params":{"inputIndex":"Index of the input that is the withdrawal UTXO (withdrawing user's ANYONECANPAY)","withdrawId":"ID of the withdrawal action","withdrawTp":"Transaction parameters of the withdrawal transaction on Bitcoin"}},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"params":{"moveTp":"Transaction parameters of the move transaction on Bitcoin"}},"getWithdrawalCount()":{"returns":{"_0":"The count of withdrawals happened so far"}},"initialize(bytes,bytes,uint256)":{"params":{"_depositAmount":"The CBTC amount that can be deposited and withdrawn","_scriptPrefix":"First part of the deposit script expected in the witness field for all L1 deposits ","_scriptSuffix":"The suffix of the deposit script that follows the receiver address"}},"markMaliciousOperator((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"params":{"slashOrTakeTp":"Transaction parameters of the slashOrTake transaction on Bitcoin"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDepositScript(bytes,bytes)":{"details":"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver","params":{"_scriptPrefix":"The new deposit script prefix","_scriptSuffix":"The part of the deposit script that succeeds the receiver address"}},"setOperator(address)":{"params":{"_operator":"Address of the privileged operator"}},"setSlashOrTakeScript(bytes)":{"params":{"_slashOrTakeScript":"The slashOrTake script"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."},"withdraw(bytes32,bytes4)":{"params":{"outputId":"The outputId of the output in the withdrawal transaction","txId":"The txId of the withdrawal transaction on Bitcoin"}}},"version":1},"userdoc":{"kind":"user","methods":{"batchWithdraw(bytes32[],bytes4[])":{"notice":"Batch version of `withdraw` that can accept multiple cBTC"},"declareWithdrawFiller((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256),uint256,uint256)":{"notice":"Stores the filler of a certain withdrawal after the a user's withdrawal is covered on Bitcoin side"},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"notice":"Checks if the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount to the receiver"},"initialize(bytes,bytes,uint256)":{"notice":"Initializes the bridge contract and sets the deposit script"},"markMaliciousOperator((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"notice":"Marks an operator as malicious if the operator burned their slashOrTake transaction as if they filled a withdrawal even though they didn't fill a withdrawal"},"setDepositScript(bytes,bytes)":{"notice":"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness"},"setOperator(address)":{"notice":"Sets the operator address that can process user deposits"},"setSlashOrTakeScript(bytes)":{"notice":"Sets the slashOrTake script that is expected in the witness field of the slashOrTake transaction on Bitcoin"},"withdraw(bytes32,bytes4)":{"notice":"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator "}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","bitcoin-spv/=lib/bitcoin-spv/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/Bridge.sol":"Bridge"},"evmVersion":"paris","libraries":{}},"sources":{"lib/WitnessUtils.sol":{"keccak256":"0x0b0d59b4e73d6f5b4bbf1032f72bb15c2f1548c2ee319b80ae9e4c22576a70af","urls":["bzz-raw://8499a5fc520941cb1b970637850cabfbc2d5a51abed824886063420c686b57de","dweb:/ipfs/QmaLYLJ36PyFAaP3MgvFWW3knDsSUtVfCfs7Lp7oYFPZ1w"],"license":"LGPL-3.0-or-later"},"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol":{"keccak256":"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f","urls":["bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7","dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0x9c8acc0e16c7a02b3328bf41cf08922b43f1eaf780199a0cf4aefac61ad2528c","urls":["bzz-raw://ac95a3440699da490d6830aec1ad4d515d7bba605be570767b39cf7fbdd182e7","dweb:/ipfs/QmUt8FcufKn5afs1n2cf2JF1wwti1pDSaNnxDzJNRcqyWf"],"license":"MIT"},"src/Bridge.sol":{"keccak256":"0xb9c48d4e58cab14b0cbb4932234c1e84143ca3bdf67ba1b985af4b26de8e845e","urls":["bzz-raw://b25ff320f3e6becded6328f05027344197ead447f2ea5bcb060e795ae5999069","dweb:/ipfs/QmaK736wv3SRmHkEJowc1jy9vhVkUeGtqG5oUugCf3dHPb"],"license":"UNLICENSED"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0xd299a79b3aec00e07839b7dcbed21d3d7d50e26c0149e730170f7761202552ca","urls":["bzz-raw://d8cfcbc8fe666020b8a707d062e296dcf159737645a8c677975bad71b456b4ad","dweb:/ipfs/QmSuDCXJFYpRpTXdiWVVwvm69yzmTZj7zMLmRPNazRR4dj"],"license":"MIT"}},"version":1},"id":46} \ No newline at end of file +{"abi":[{"type":"function","name":"LIGHT_CLIENT","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract BitcoinLightClient"}],"stateMutability":"view"},{"type":"function","name":"SYSTEM_CALLER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"acceptOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchWithdraw","inputs":[{"name":"txIds","type":"bytes32[]","internalType":"bytes32[]"},{"name":"outputIds","type":"bytes4[]","internalType":"bytes4[]"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"declareWithdrawFiller","inputs":[{"name":"withdrawTp","type":"tuple","internalType":"struct Bridge.TransactionParams","components":[{"name":"version","type":"bytes4","internalType":"bytes4"},{"name":"flag","type":"bytes2","internalType":"bytes2"},{"name":"vin","type":"bytes","internalType":"bytes"},{"name":"vout","type":"bytes","internalType":"bytes"},{"name":"witness","type":"bytes","internalType":"bytes"},{"name":"locktime","type":"bytes4","internalType":"bytes4"},{"name":"intermediate_nodes","type":"bytes","internalType":"bytes"},{"name":"block_height","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}]},{"name":"inputIndex","type":"uint256","internalType":"uint256"},{"name":"withdrawId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deposit","inputs":[{"name":"moveTp","type":"tuple","internalType":"struct Bridge.TransactionParams","components":[{"name":"version","type":"bytes4","internalType":"bytes4"},{"name":"flag","type":"bytes2","internalType":"bytes2"},{"name":"vin","type":"bytes","internalType":"bytes"},{"name":"vout","type":"bytes","internalType":"bytes"},{"name":"witness","type":"bytes","internalType":"bytes"},{"name":"locktime","type":"bytes4","internalType":"bytes4"},{"name":"intermediate_nodes","type":"bytes","internalType":"bytes"},{"name":"block_height","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"depositAmount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getWithdrawalCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_scriptPrefix","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"},{"name":"_depositAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialized","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isOperatorMalicious","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"markMaliciousOperator","inputs":[{"name":"slashOrTakeTp","type":"tuple","internalType":"struct Bridge.TransactionParams","components":[{"name":"version","type":"bytes4","internalType":"bytes4"},{"name":"flag","type":"bytes2","internalType":"bytes2"},{"name":"vin","type":"bytes","internalType":"bytes"},{"name":"vout","type":"bytes","internalType":"bytes"},{"name":"witness","type":"bytes","internalType":"bytes"},{"name":"locktime","type":"bytes4","internalType":"bytes4"},{"name":"intermediate_nodes","type":"bytes","internalType":"bytes"},{"name":"block_height","type":"uint256","internalType":"uint256"},{"name":"index","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"operator","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pendingOwner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"scriptPrefix","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"scriptSuffix","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"setDepositScript","inputs":[{"name":"_scriptPrefix","type":"bytes","internalType":"bytes"},{"name":"_scriptSuffix","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOperator","inputs":[{"name":"_operator","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSlashOrTakeScript","inputs":[{"name":"_slashOrTakeScript","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slashOrTakeScript","inputs":[],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"txIdToDepositId","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[{"name":"txId","type":"bytes32","internalType":"bytes32"},{"name":"outputId","type":"bytes4","internalType":"bytes4"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdrawFillers","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"withdrawalUTXOs","inputs":[{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"txId","type":"bytes32","internalType":"bytes32"},{"name":"outputId","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"event","name":"Deposit","inputs":[{"name":"wtxId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"txId","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"recipient","type":"address","indexed":false,"internalType":"address"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"depositId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"DepositScriptUpdate","inputs":[{"name":"scriptPrefix","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"scriptSuffix","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"MaliciousOperatorMarked","inputs":[{"name":"operatorId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorUpdated","inputs":[{"name":"oldOperator","type":"address","indexed":false,"internalType":"address"},{"name":"newOperator","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferStarted","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SlashOrTakeScriptUpdate","inputs":[{"name":"slashOrTakeScript","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"WithdrawFillerDeclared","inputs":[{"name":"withdrawId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"withdrawFillerId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Withdrawal","inputs":[{"name":"utxo","type":"tuple","indexed":false,"internalType":"struct Bridge.UTXO","components":[{"name":"txId","type":"bytes32","internalType":"bytes32"},{"name":"outputId","type":"bytes4","internalType":"bytes4"}]},{"name":"index","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"timestamp","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b506132828061001f6000396000f3fe60806040526004361061019c5760003560e01c80638786dba7116100ec578063d761753e1161008a578063e613ae0011610064578063e613ae001461048e578063f119a9bd146104a9578063f2fde38b146104c9578063f8e655d2146104e957600080fd5b8063d761753e14610431578063dd95c7c614610459578063e30c39781461047957600080fd5b8063a41c5cf3116100c6578063a41c5cf3146103af578063b3ab15fb146103c4578063bafa9eb2146103e4578063c045577b1461040457600080fd5b80638786dba71461037257806387f8bf56146103855780638da5cb5b1461039a57600080fd5b8063570ca73511610159578063715018a611610133578063715018a61461031357806374ab4a8314610328578063781952a81461034857806379ba50971461035d57600080fd5b8063570ca735146102945780635d3e3176146102d15780635e3cc740146102f357600080fd5b806311e53a01146101a1578063158ef93e146101e1578063198546231461020b5780634126013714610220578063419759f514610240578063471ba1e314610256575b600080fd5b3480156101ad57600080fd5b506101ce6101bc3660046129ee565b60276020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101ed57600080fd5b506000546101fb9060ff1681565b60405190151581526020016101d8565b61021e610219366004612a4b565b610509565b005b34801561022c57600080fd5b5061021e61023b366004612afb565b6106e2565b34801561024c57600080fd5b506101ce60215481565b34801561026257600080fd5b506102766102713660046129ee565b6108ef565b604080519283526001600160e01b03199091166020830152016101d8565b3480156102a057600080fd5b506000546102b99061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101d8565b3480156102dd57600080fd5b506102e6610920565b6040516101d89190612b96565b3480156102ff57600080fd5b5061021e61030e366004612be2565b6109ae565b34801561031f57600080fd5b5061021e610d65565b34801561033457600080fd5b5061021e610343366004612c1e565b610d79565b34801561035457600080fd5b506026546101ce565b34801561036957600080fd5b5061021e610f4c565b61021e610380366004612c88565b610f94565b34801561039157600080fd5b506102e66110bb565b3480156103a657600080fd5b506102b96110c8565b3480156103bb57600080fd5b506102e66110fd565b3480156103d057600080fd5b5061021e6103df366004612cb4565b61110a565b3480156103f057600080fd5b506101fb6103ff3660046129ee565b61117b565b34801561041057600080fd5b506101ce61041f3660046129ee565b60286020526000908152604090205481565b34801561043d57600080fd5b506102b973deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561046557600080fd5b5061021e610474366004612be2565b6111a6565b34801561048557600080fd5b506102b9611606565b34801561049a57600080fd5b506102b96001603160981b0181565b3480156104b557600080fd5b5061021e6104c4366004612cdd565b61162f565b3480156104d557600080fd5b5061021e6104e4366004612cb4565b6116a3565b3480156104f557600080fd5b5061021e610504366004612d1e565b611728565b82811461054f5760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b60448201526064015b60405180910390fd5b60215461055d908490612d97565b34146105a55760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610546565b60265460005b848110156106da57600060405180604001604052808888858181106105d2576105d2612dae565b9050602002013581526020018686858181106105f0576105f0612dae565b90506020020160208101906106059190612dc4565b6001600160e01b03191690526026805460018101825560009190915281517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a359460029092029182015560208201517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3595909101805463ffffffff191660e09290921c91909117905590507f3311a04a346a103ac115cca33028a2bc82f1964805860d0d3fc84a2772496ada816106b98486612ddf565b426040516106c993929190612df2565b60405180910390a1506001016105ab565b505050505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146107455760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610546565b60005460ff16156107985760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610546565b806000036107e85760405162461bcd60e51b815260206004820152601a60248201527f4465706f73697420616d6f756e742063616e6e6f7420626520300000000000006044820152606401610546565b60008490036108095760405162461bcd60e51b815260040161054690612e20565b6000805460ff191660011790556023610823858783612ef0565b506024610831838583612ef0565b50602181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f80bd1fdfe157286ce420ee763f91748455b249605748e5df12dad9844402bafc858585856040516108e09493929190612fd8565b60405180910390a15050505050565b602681815481106108ff57600080fd5b60009182526020909120600290910201805460019091015490915060e01b82565b6025805461092d90612e6d565b80601f016020809104026020016040519081016040528092919081815260200182805461095990612e6d565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b505050505081565b6109b7816117a2565b5060009050610a066109cc606084018461300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ac592505050565b915060009050610a63610a1c606085018561300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a5e925060019150869050613050565b611adc565b90506000610a7082611c54565b90506000610a88610a8383836020611cd6565b611d99565b90506000610aa9610a836020808651610aa19190613050565b869190611cd6565b600083815260276020526040812054919250819003610b015760405162461bcd60e51b815260206004820152601460248201527311195c1bdcda5d08191bc81b9bdd08195e1a5cdd60621b6044820152606401610546565b6000610b4d610b1360808a018a61300a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611e1e915050565b90506000610b5c826001611f01565b9050600060258054610b6d90612e6d565b915060009050610b7e838284611cd6565b9050610c148160258054610b9190612e6d565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd90612e6d565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b5050505050612085565b610c605760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420736c6173684f7254616b65207363726970740000000000006044820152606401610546565b6000602881610c70600189613050565b815260200190815260200160002054905060008160001480610c9a5750610c968861215c565b8214155b905080610ce95760405162461bcd60e51b815260206004820152601960248201527f4f70657261746f72206973206e6f74206d616c6963696f7573000000000000006044820152606401610546565b600180896103e88110610cfe57610cfe612dae565b602091828204019190066101000a81548160ff0219169083151502179055507ff918cdaebea74c5a8c3b02d7404c162f507551b158202cedcba9b6a74eabdff288604051610d4e91815260200190565b60405180910390a150505050505050505050505050565b610d6d612169565b610d77600061219b565b565b610d82836117a2565b5060009050610dd3610d97604086018661300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506121d7915050565b90506000610de08261232a565b90506000610ded83612337565b9050600060268581548110610e0457610e04612dae565b60009182526020918290206040805180820190915260029290920201805480835260019091015460e01b6001600160e01b03191692820192909252915083148015610e665750816001600160e01b03191681602001516001600160e01b031916145b610ea65760405162461bcd60e51b81526020600482015260116024820152706e6f74206d61746368696e67205554584f60781b6044820152606401610546565b6000610eb86109cc60608a018a61300a565b915060009050610ece610a1c60608b018b61300a565b90506000610edb82611c54565b90506000610ee882611d99565b9050610ef38161215c565b60008a8152602860209081526040918290209290925580518b81529182018390527feedf47c2f61b040827944fd45e44ef6d742354b34e1af7dd99a56f444ec79347910160405180910390a15050505050505050505050565b3380610f56611606565b6001600160a01b031614610f885760405163118cdaa760e01b81526001600160a01b0382166004820152602401610546565b610f918161219b565b50565b6021543414610fdf5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610546565b6040805180820182528381526001600160e01b03198316602082019081526026805460018101825560009190915282517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3594600283029081019190915591517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3595909201805463ffffffff191660e09390931c9290921790915591519091907f3311a04a346a103ac115cca33028a2bc82f1964805860d0d3fc84a2772496ada906110ad90849084904290612df2565b60405180910390a150505050565b6024805461092d90612e6d565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6023805461092d90612e6d565b611112612169565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6001816103e8811061118c57600080fd5b60209182820401919006915054906101000a900460ff1681565b60005461010090046001600160a01b031633146112055760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610546565b600080611211836117a2565b915091508060011461125e5760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610546565b60006113096112706020860186612dc4565b61127d604087018761300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112bf92505050606088018861300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113049250505060c0890160a08a01612dc4565b612344565b6000818152602760205260409020549091501561135d5760405162461bcd60e51b81526020600482015260126024820152711d1e125908185b1c9958591e481cdc195b9d60721b6044820152606401610546565b60226000815461136c90613063565b9182905550600082815260276020526040812091909155611393610b13608087018761300a565b905060006113a082611ac5565b915050806003146113eb5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610546565b60006113f8836001611f01565b905060006023805461140990612e6d565b91506000905061141a838284611cd6565b905061142d8160238054610b9190612e6d565b6114725760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610546565b60006114a66024805461148490612e6d565b86516114909250613050565b6024805461149d90612e6d565b87929150611cd6565b90506114b98160248054610b9190612e6d565b6114fd5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610546565b600061150885612374565b602254604080518d8152602081018c90526001600160a01b038416818301524260608201526080810192909252519192507fa82453ca34121b3ecb910d957824e27c5dc6465315949facd15fb72886490058919081900360a00190a16021546040516000916001600160a01b038416918381818185875af1925050503d80600081146115b0576040519150601f19603f3d011682016040523d82523d6000602084013e6115b5565b606091505b50509050806115f85760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610546565b505050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c006110ed565b611637612169565b60008190036116585760405162461bcd60e51b815260040161054690612e20565b6025611665828483612ef0565b507f8578c80bdea3ff51431011ed88db9cb415de2cf64f9ed5e7137288268cbdeb2c828260405161169792919061307c565b60405180910390a15050565b6116ab612169565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556116ef6110c8565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b611730612169565b60008390036117515760405162461bcd60e51b815260040161054690612e20565b602361175e848683612ef0565b50602461176c828483612ef0565b507f80bd1fdfe157286ce420ee763f91748455b249605748e5df12dad9844402bafc848484846040516110ad9493929190612fd8565b600080806118026117b66020860186612dc4565b6117c66040870160208801613090565b6117d3604088018861300a565b6117e060608a018a61300a565b6117ed60808c018c61300a565b6117fd60c08e0160a08f01612dc4565b6123aa565b905061184e611814604086018661300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123de92505050565b61189a5760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610546565b6118e46118aa606086018661300a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061248292505050565b6119305760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610546565b60006119426109cc604087018761300a565b91506119929050611956608087018761300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250612519915050565b6119e85760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610546565b6001603160981b01634ffd344a60e087013584611a0860c08a018a61300a565b8a61010001356040518663ffffffff1660e01b8152600401611a2e9594939291906130ba565b602060405180830381865afa158015611a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6f91906130ec565b611abb5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610546565b9094909350915050565b600080611ad383600061258e565b91509150915091565b6060600080611aea85611ac5565b909250905060018201611b0f5760405162461bcd60e51b81526004016105469061310e565b808410611b525760405162461bcd60e51b81526020600482015260116024820152702b37baba103932b0b21037bb32b9393ab760791b6044820152606401610546565b600080611b60846001612ddf565b905060005b86811015611bde57611b778883612730565b92506000198303611bca5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610546565b611bd48383612ddf565b9150600101611b65565b50611be98782612730565b91506000198203611c3c5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610546565b611c47878284611cd6565b9450505050505b92915050565b606081600981518110611c6957611c69612dae565b6020910101516001600160f81b031916603560f91b14611c9757505060408051602081019091526000815290565b600082600a81518110611cac57611cac612dae565b01602001516001600160f81b031981169150611ccf908490600b9060f81c611cd6565b9392505050565b606081600003611cf55750604080516020810190915260008152611ccf565b6000611d018385612ddf565b90508381118015611d13575080855110155b611d555760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610546565b604051915082604083010160405282825283850182038460208701018481015b80821015611d8e57815183830152602082019150611d75565b505050509392505050565b60008151600003611dac57506000919050565b81516020811115611e0a5760405162461bcd60e51b815260206004820152602260248201527f42797465732063616e6e6f74206265206d6f7265207468616e20333220627974604482015261657360f01b6064820152608401610546565b60209283015192036008029190911c919050565b606060008060005b84811015611e9757611e388683612794565b92506000198303611e835760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610546565b611e8d8383612ddf565b9150600101611e26565b50611ea28582612794565b91506000198203611eed5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610546565b611ef8858284611cd6565b95945050505050565b6060600080611f0f85611ac5565b909250905060018201611f345760405162461bcd60e51b81526004016105469061310e565b808410611f765760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610546565b600080611f84846001612ddf565b905060005b8681101561200f57611f9b888361258e565b909550925060018301611fe55760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610546565b82611ff1866001612ddf565b611ffb9190612ddf565b6120059083612ddf565b9150600101611f89565b5061201a878261258e565b9094509150600182016120645760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610546565b611c47816120728685612ddf565b61207d906001612ddf565b899190611cd6565b8151815160009190811461209d576000915050611c4e565b60206000805b8383116120d357505084810151848201516020909201918082146120ce576000945050505050611c4e565b6120a3565b60006120e0602085613050565b90505b8481101561214e578681815181106120fd576120fd612dae565b602001015160f81c60f81b6001600160f81b03191688828151811061212457612124612dae565b01602001516001600160f81b0319161461214657600095505050505050611c4e565b6001016120e3565b506001979650505050505050565b6000611c4e826001612ddf565b336121726110c8565b6001600160a01b031614610d775760405163118cdaa760e01b8152336004820152602401610546565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556121d382612836565b5050565b60606000806121e585611ac5565b90925090506001820161220a5760405162461bcd60e51b81526004016105469061310e565b80841061224c5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610546565b60008061225a846001612ddf565b905060005b868110156122d25761227188836128a7565b925060001983036122be5760405162461bcd60e51b815260206004820152601760248201527642616420566172496e7420696e2073637269707453696760481b6044820152606401610546565b6122c88383612ddf565b915060010161225f565b506122dd87826128a7565b91506000198203611c3c5760405162461bcd60e51b815260206004820152601760248201527642616420566172496e7420696e2073637269707453696760481b6044820152606401610546565b6020810151600090611c4e565b6000611c4e8260206128f0565b6000611ef8858585856040516020016123609493929190613150565b6040516020818303038152906040526128ff565b6000806023805461238490612e6d565b91506000905061239684836014611cd6565b61239f906131ad565b60601c949350505050565b60006123d08a8a8a8a8a8a8a8a8a60405160200161236099989796959493929190613200565b9a9950505050505050505050565b60008060006123ec84611ac5565b90925090508015806123ff575060001982145b1561240e575060009392505050565b600061241b836001612ddf565b905060005b82811015612475578551821061243c5750600095945050505050565b600061244887846128a7565b90506000198103612460575060009695505050505050565b61246a8184612ddf565b925050600101612420565b5093519093149392505050565b600080600061249084611ac5565b90925090508015806124a3575060001982145b156124b2575060009392505050565b60006124bf836001612ddf565b905060005b8281101561247557855182106124e05750600095945050505050565b60006124ec8784612730565b90506000198103612504575060009695505050505050565b61250e8184612ddf565b9250506001016124c4565b60008160000361252b57506000611c4e565b6000805b83811015612582578451821061254a57600092505050611c4e565b60006125568684612794565b9050600019810361256d5760009350505050611c4e565b6125778184612ddf565b92505060010161252f565b50835114905092915050565b600080600061259d8585612926565b90508060ff166000036125d25760008585815181106125be576125be612dae565b016020015190935060f81c91506127299050565b836125de826001613269565b60ff166125eb9190612ddf565b855110156126025760001960009250925050612729565b60008160ff166002036126465761263b612627612620876001612ddf565b88906128f0565b62ffff0060e882901c1660f89190911c1790565b61ffff16905061271f565b8160ff1660040361269557612688612662612620876001612ddf565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff16905061271f565b8160ff1660080361271f576127136126b1612620876001612ddf565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b600061273d826009612ddf565b8351101561274e5750600019611c4e565b60008061276585612760866008612ddf565b61258e565b90925090506001820161277e5760001992505050611c4e565b8061278a836009612ddf565b611ef89190612ddf565b60008060006127a3858561258e565b9092509050600182016127bc5760001992505050611c4e565b6000806127ca846001612ddf565b905060005b8381101561282b576127e588612760848a612ddf565b9095509250600183016128015760001995505050505050611c4e565b8261280d866001612ddf565b6128179190612ddf565b6128219083612ddf565b91506001016127cf565b509695505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008060006128b685856129ac565b9092509050600182016128cf5760001992505050611c4e565b806128db836025612ddf565b6128e59190612ddf565b611ef8906004612ddf565b6000611ccf8383016020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600082828151811061293a5761293a612dae565b016020015160f81c60ff0361295157506008611c4e565b82828151811061296357612963612dae565b016020015160f81c60fe0361297a57506004611c4e565b82828151811061298c5761298c612dae565b016020015160f81c60fd036129a357506002611c4e565b50600092915050565b6000806129ba836025612ddf565b845110156129cf575060001990506000612729565b6000806129e186612760876024612ddf565b9097909650945050505050565b600060208284031215612a0057600080fd5b5035919050565b60008083601f840112612a1957600080fd5b5081356001600160401b03811115612a3057600080fd5b6020830191508360208260051b850101111561272957600080fd5b60008060008060408587031215612a6157600080fd5b84356001600160401b03811115612a7757600080fd5b612a8387828801612a07565b90955093505060208501356001600160401b03811115612aa257600080fd5b612aae87828801612a07565b95989497509550505050565b60008083601f840112612acc57600080fd5b5081356001600160401b03811115612ae357600080fd5b60208301915083602082850101111561272957600080fd5b600080600080600060608688031215612b1357600080fd5b85356001600160401b03811115612b2957600080fd5b612b3588828901612aba565b90965094505060208601356001600160401b03811115612b5457600080fd5b612b6088828901612aba565b96999598509660400135949350505050565b60005b83811015612b8d578181015183820152602001612b75565b50506000910152565b6020815260008251806020840152612bb5816040850160208701612b72565b601f01601f19169190910160400192915050565b60006101208284031215612bdc57600080fd5b50919050565b600060208284031215612bf457600080fd5b81356001600160401b03811115612c0a57600080fd5b612c1684828501612bc9565b949350505050565b600080600060608486031215612c3357600080fd5b83356001600160401b03811115612c4957600080fd5b612c5586828701612bc9565b9660208601359650604090950135949350505050565b80356001600160e01b031981168114612c8357600080fd5b919050565b60008060408385031215612c9b57600080fd5b82359150612cab60208401612c6b565b90509250929050565b600060208284031215612cc657600080fd5b81356001600160a01b0381168114611ccf57600080fd5b60008060208385031215612cf057600080fd5b82356001600160401b03811115612d0657600080fd5b612d1285828601612aba565b90969095509350505050565b60008060008060408587031215612d3457600080fd5b84356001600160401b03811115612d4a57600080fd5b612d5687828801612aba565b90955093505060208501356001600160401b03811115612d7557600080fd5b612aae87828801612aba565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611c4e57611c4e612d81565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612dd657600080fd5b611ccf82612c6b565b80820180821115611c4e57611c4e612d81565b835181526020938401516001600160e01b031916938101939093526040830191909152606082015260800190565b6020808252601e908201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680612e8157607f821691505b602082108103612bdc57634e487b7160e01b600052602260045260246000fd5b601f821115612eeb57806000526020600020601f840160051c81016020851015612ec85750805b601f840160051c820191505b81811015612ee85760008155600101612ed4565b50505b505050565b6001600160401b03831115612f0757612f07612e57565b612f1b83612f158354612e6d565b83612ea1565b6000601f841160018114612f4f5760008515612f375750838201355b600019600387901b1c1916600186901b178355612ee8565b600083815260209020601f19861690835b82811015612f805786850135825560209485019460019092019101612f60565b5086821015612f9d5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000612fec604083018688612faf565b8281036020840152612fff818587612faf565b979650505050505050565b6000808335601e1984360301811261302157600080fd5b8301803591506001600160401b0382111561303b57600080fd5b60200191503681900382131561272957600080fd5b81810381811115611c4e57611c4e612d81565b60006001820161307557613075612d81565b5060010190565b602081526000612c16602083018486612faf565b6000602082840312156130a257600080fd5b81356001600160f01b031981168114611ccf57600080fd5b8581528460208201526080604082015260006130da608083018587612faf565b90508260608301529695505050505050565b6000602082840312156130fe57600080fd5b81518015158114611ccf57600080fd5b60208082526022908201527f52656164206f76657272756e20647572696e6720566172496e742070617273696040820152616e6760f01b606082015260800190565b6001600160e01b0319851681528351600090613173816004850160208901612b72565b84519083019061318a816004840160208901612b72565b6001600160e01b0319949094169301600481019390935250506008019392505050565b805160208201516bffffffffffffffffffffffff198116919060148210156131f9576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b60ff8181168382160190811115611c4e57611c4e612d8156","sourceMap":"430:14139:46:-:0;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061019c5760003560e01c80638786dba7116100ec578063d761753e1161008a578063e613ae0011610064578063e613ae001461048e578063f119a9bd146104a9578063f2fde38b146104c9578063f8e655d2146104e957600080fd5b8063d761753e14610431578063dd95c7c614610459578063e30c39781461047957600080fd5b8063a41c5cf3116100c6578063a41c5cf3146103af578063b3ab15fb146103c4578063bafa9eb2146103e4578063c045577b1461040457600080fd5b80638786dba71461037257806387f8bf56146103855780638da5cb5b1461039a57600080fd5b8063570ca73511610159578063715018a611610133578063715018a61461031357806374ab4a8314610328578063781952a81461034857806379ba50971461035d57600080fd5b8063570ca735146102945780635d3e3176146102d15780635e3cc740146102f357600080fd5b806311e53a01146101a1578063158ef93e146101e1578063198546231461020b5780634126013714610220578063419759f514610240578063471ba1e314610256575b600080fd5b3480156101ad57600080fd5b506101ce6101bc3660046129ee565b60276020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101ed57600080fd5b506000546101fb9060ff1681565b60405190151581526020016101d8565b61021e610219366004612a4b565b610509565b005b34801561022c57600080fd5b5061021e61023b366004612afb565b6106e2565b34801561024c57600080fd5b506101ce60215481565b34801561026257600080fd5b506102766102713660046129ee565b6108ef565b604080519283526001600160e01b03199091166020830152016101d8565b3480156102a057600080fd5b506000546102b99061010090046001600160a01b031681565b6040516001600160a01b0390911681526020016101d8565b3480156102dd57600080fd5b506102e6610920565b6040516101d89190612b96565b3480156102ff57600080fd5b5061021e61030e366004612be2565b6109ae565b34801561031f57600080fd5b5061021e610d65565b34801561033457600080fd5b5061021e610343366004612c1e565b610d79565b34801561035457600080fd5b506026546101ce565b34801561036957600080fd5b5061021e610f4c565b61021e610380366004612c88565b610f94565b34801561039157600080fd5b506102e66110bb565b3480156103a657600080fd5b506102b96110c8565b3480156103bb57600080fd5b506102e66110fd565b3480156103d057600080fd5b5061021e6103df366004612cb4565b61110a565b3480156103f057600080fd5b506101fb6103ff3660046129ee565b61117b565b34801561041057600080fd5b506101ce61041f3660046129ee565b60286020526000908152604090205481565b34801561043d57600080fd5b506102b973deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b34801561046557600080fd5b5061021e610474366004612be2565b6111a6565b34801561048557600080fd5b506102b9611606565b34801561049a57600080fd5b506102b96001603160981b0181565b3480156104b557600080fd5b5061021e6104c4366004612cdd565b61162f565b3480156104d557600080fd5b5061021e6104e4366004612cb4565b6116a3565b3480156104f557600080fd5b5061021e610504366004612d1e565b611728565b82811461054f5760405162461bcd60e51b815260206004820152600f60248201526e098cadccee8d040dad2e6dac2e8c6d608b1b60448201526064015b60405180910390fd5b60215461055d908490612d97565b34146105a55760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610546565b60265460005b848110156106da57600060405180604001604052808888858181106105d2576105d2612dae565b9050602002013581526020018686858181106105f0576105f0612dae565b90506020020160208101906106059190612dc4565b6001600160e01b03191690526026805460018101825560009190915281517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a359460029092029182015560208201517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3595909101805463ffffffff191660e09290921c91909117905590507f3311a04a346a103ac115cca33028a2bc82f1964805860d0d3fc84a2772496ada816106b98486612ddf565b426040516106c993929190612df2565b60405180910390a1506001016105ab565b505050505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146107455760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610546565b60005460ff16156107985760405162461bcd60e51b815260206004820152601f60248201527f436f6e747261637420697320616c726561647920696e697469616c697a6564006044820152606401610546565b806000036107e85760405162461bcd60e51b815260206004820152601a60248201527f4465706f73697420616d6f756e742063616e6e6f7420626520300000000000006044820152606401610546565b60008490036108095760405162461bcd60e51b815260040161054690612e20565b6000805460ff191660011790556023610823858783612ef0565b506024610831838583612ef0565b50602181905560008054610100600160a81b03191674deaddeaddeaddeaddeaddeaddeaddeaddeaddead001781556040805191825273deaddeaddeaddeaddeaddeaddeaddeaddeaddead60208301527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a17f80bd1fdfe157286ce420ee763f91748455b249605748e5df12dad9844402bafc858585856040516108e09493929190612fd8565b60405180910390a15050505050565b602681815481106108ff57600080fd5b60009182526020909120600290910201805460019091015490915060e01b82565b6025805461092d90612e6d565b80601f016020809104026020016040519081016040528092919081815260200182805461095990612e6d565b80156109a65780601f1061097b576101008083540402835291602001916109a6565b820191906000526020600020905b81548152906001019060200180831161098957829003601f168201915b505050505081565b6109b7816117a2565b5060009050610a066109cc606084018461300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611ac592505050565b915060009050610a63610a1c606085018561300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250610a5e925060019150869050613050565b611adc565b90506000610a7082611c54565b90506000610a88610a8383836020611cd6565b611d99565b90506000610aa9610a836020808651610aa19190613050565b869190611cd6565b600083815260276020526040812054919250819003610b015760405162461bcd60e51b815260206004820152601460248201527311195c1bdcda5d08191bc81b9bdd08195e1a5cdd60621b6044820152606401610546565b6000610b4d610b1360808a018a61300a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052509250611e1e915050565b90506000610b5c826001611f01565b9050600060258054610b6d90612e6d565b915060009050610b7e838284611cd6565b9050610c148160258054610b9190612e6d565b80601f0160208091040260200160405190810160405280929190818152602001828054610bbd90612e6d565b8015610c0a5780601f10610bdf57610100808354040283529160200191610c0a565b820191906000526020600020905b815481529060010190602001808311610bed57829003601f168201915b5050505050612085565b610c605760405162461bcd60e51b815260206004820152601a60248201527f496e76616c696420736c6173684f7254616b65207363726970740000000000006044820152606401610546565b6000602881610c70600189613050565b815260200190815260200160002054905060008160001480610c9a5750610c968861215c565b8214155b905080610ce95760405162461bcd60e51b815260206004820152601960248201527f4f70657261746f72206973206e6f74206d616c6963696f7573000000000000006044820152606401610546565b600180896103e88110610cfe57610cfe612dae565b602091828204019190066101000a81548160ff0219169083151502179055507ff918cdaebea74c5a8c3b02d7404c162f507551b158202cedcba9b6a74eabdff288604051610d4e91815260200190565b60405180910390a150505050505050505050505050565b610d6d612169565b610d77600061219b565b565b610d82836117a2565b5060009050610dd3610d97604086018661300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508792506121d7915050565b90506000610de08261232a565b90506000610ded83612337565b9050600060268581548110610e0457610e04612dae565b60009182526020918290206040805180820190915260029290920201805480835260019091015460e01b6001600160e01b03191692820192909252915083148015610e665750816001600160e01b03191681602001516001600160e01b031916145b610ea65760405162461bcd60e51b81526020600482015260116024820152706e6f74206d61746368696e67205554584f60781b6044820152606401610546565b6000610eb86109cc60608a018a61300a565b915060009050610ece610a1c60608b018b61300a565b90506000610edb82611c54565b90506000610ee882611d99565b9050610ef38161215c565b60008a8152602860209081526040918290209290925580518b81529182018390527feedf47c2f61b040827944fd45e44ef6d742354b34e1af7dd99a56f444ec79347910160405180910390a15050505050505050505050565b3380610f56611606565b6001600160a01b031614610f885760405163118cdaa760e01b81526001600160a01b0382166004820152602401610546565b610f918161219b565b50565b6021543414610fdf5760405162461bcd60e51b8152602060048201526017602482015276125b9d985b1a59081dda5d1a191c985dc8185b5bdd5b9d604a1b6044820152606401610546565b6040805180820182528381526001600160e01b03198316602082019081526026805460018101825560009190915282517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3594600283029081019190915591517f744a2cf8fd7008e3d53b67916e73460df9fa5214e3ef23dd4259ca09493a3595909201805463ffffffff191660e09390931c9290921790915591519091907f3311a04a346a103ac115cca33028a2bc82f1964805860d0d3fc84a2772496ada906110ad90849084904290612df2565b60405180910390a150505050565b6024805461092d90612e6d565b6000807f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c1993005b546001600160a01b031692915050565b6023805461092d90612e6d565b611112612169565b60008054610100600160a81b0319166101006001600160a01b038481168281029390931793849055604080519290940416815260208101919091527ffbe5b6cbafb274f445d7fed869dc77a838d8243a22c460de156560e8857cad03910160405180910390a150565b6001816103e8811061118c57600080fd5b60209182820401919006915054906101000a900460ff1681565b60005461010090046001600160a01b031633146112055760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f720000000000006044820152606401610546565b600080611211836117a2565b915091508060011461125e5760405162461bcd60e51b815260206004820152601660248201527513db9b1e481bdb99481a5b9c1d5d08185b1b1bddd95960521b6044820152606401610546565b60006113096112706020860186612dc4565b61127d604087018761300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506112bf92505050606088018861300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506113049250505060c0890160a08a01612dc4565b612344565b6000818152602760205260409020549091501561135d5760405162461bcd60e51b81526020600482015260126024820152711d1e125908185b1c9958591e481cdc195b9d60721b6044820152606401610546565b60226000815461136c90613063565b9182905550600082815260276020526040812091909155611393610b13608087018761300a565b905060006113a082611ac5565b915050806003146113eb5760405162461bcd60e51b8152602060048201526015602482015274496e76616c6964207769746e657373206974656d7360581b6044820152606401610546565b60006113f8836001611f01565b905060006023805461140990612e6d565b91506000905061141a838284611cd6565b905061142d8160238054610b9190612e6d565b6114725760405162461bcd60e51b8152602060048201526016602482015275125b9d985b1a590819195c1bdcda5d081cd8dc9a5c1d60521b6044820152606401610546565b60006114a66024805461148490612e6d565b86516114909250613050565b6024805461149d90612e6d565b87929150611cd6565b90506114b98160248054610b9190612e6d565b6114fd5760405162461bcd60e51b8152602060048201526015602482015274092dcecc2d8d2c840e6c6e4d2e0e840e6eaccccd2f605b1b6044820152606401610546565b600061150885612374565b602254604080518d8152602081018c90526001600160a01b038416818301524260608201526080810192909252519192507fa82453ca34121b3ecb910d957824e27c5dc6465315949facd15fb72886490058919081900360a00190a16021546040516000916001600160a01b038416918381818185875af1925050503d80600081146115b0576040519150601f19603f3d011682016040523d82523d6000602084013e6115b5565b606091505b50509050806115f85760405162461bcd60e51b815260206004820152600f60248201526e151c985b9cd9995c8819985a5b1959608a1b6044820152606401610546565b505050505050505050505050565b6000807f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c006110ed565b611637612169565b60008190036116585760405162461bcd60e51b815260040161054690612e20565b6025611665828483612ef0565b507f8578c80bdea3ff51431011ed88db9cb415de2cf64f9ed5e7137288268cbdeb2c828260405161169792919061307c565b60405180910390a15050565b6116ab612169565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b0319166001600160a01b03831690811782556116ef6110c8565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b611730612169565b60008390036117515760405162461bcd60e51b815260040161054690612e20565b602361175e848683612ef0565b50602461176c828483612ef0565b507f80bd1fdfe157286ce420ee763f91748455b249605748e5df12dad9844402bafc848484846040516110ad9493929190612fd8565b600080806118026117b66020860186612dc4565b6117c66040870160208801613090565b6117d3604088018861300a565b6117e060608a018a61300a565b6117ed60808c018c61300a565b6117fd60c08e0160a08f01612dc4565b6123aa565b905061184e611814604086018661300a565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506123de92505050565b61189a5760405162461bcd60e51b815260206004820152601d60248201527f56696e206973206e6f742070726f7065726c7920666f726d61747465640000006044820152606401610546565b6118e46118aa606086018661300a565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061248292505050565b6119305760405162461bcd60e51b815260206004820152601e60248201527f566f7574206973206e6f742070726f7065726c7920666f726d617474656400006044820152606401610546565b60006119426109cc604087018761300a565b91506119929050611956608087018761300a565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250859250612519915050565b6119e85760405162461bcd60e51b815260206004820152602160248201527f5769746e657373206973206e6f742070726f7065726c7920666f726d617474656044820152601960fa1b6064820152608401610546565b6001603160981b01634ffd344a60e087013584611a0860c08a018a61300a565b8a61010001356040518663ffffffff1660e01b8152600401611a2e9594939291906130ba565b602060405180830381865afa158015611a4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a6f91906130ec565b611abb5760405162461bcd60e51b815260206004820152601b60248201527f5472616e73616374696f6e206973206e6f7420696e20626c6f636b00000000006044820152606401610546565b9094909350915050565b600080611ad383600061258e565b91509150915091565b6060600080611aea85611ac5565b909250905060018201611b0f5760405162461bcd60e51b81526004016105469061310e565b808410611b525760405162461bcd60e51b81526020600482015260116024820152702b37baba103932b0b21037bb32b9393ab760791b6044820152606401610546565b600080611b60846001612ddf565b905060005b86811015611bde57611b778883612730565b92506000198303611bca5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610546565b611bd48383612ddf565b9150600101611b65565b50611be98782612730565b91506000198203611c3c5760405162461bcd60e51b815260206004820152601a60248201527f42616420566172496e7420696e207363726970745075626b65790000000000006044820152606401610546565b611c47878284611cd6565b9450505050505b92915050565b606081600981518110611c6957611c69612dae565b6020910101516001600160f81b031916603560f91b14611c9757505060408051602081019091526000815290565b600082600a81518110611cac57611cac612dae565b01602001516001600160f81b031981169150611ccf908490600b9060f81c611cd6565b9392505050565b606081600003611cf55750604080516020810190915260008152611ccf565b6000611d018385612ddf565b90508381118015611d13575080855110155b611d555760405162461bcd60e51b8152602060048201526013602482015272536c696365206f7574206f6620626f756e647360681b6044820152606401610546565b604051915082604083010160405282825283850182038460208701018481015b80821015611d8e57815183830152602082019150611d75565b505050509392505050565b60008151600003611dac57506000919050565b81516020811115611e0a5760405162461bcd60e51b815260206004820152602260248201527f42797465732063616e6e6f74206265206d6f7265207468616e20333220627974604482015261657360f01b6064820152608401610546565b60209283015192036008029190911c919050565b606060008060005b84811015611e9757611e388683612794565b92506000198303611e835760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610546565b611e8d8383612ddf565b9150600101611e26565b50611ea28582612794565b91506000198203611eed5760405162461bcd60e51b815260206004820152601560248201527442616420566172496e7420696e207769746e65737360581b6044820152606401610546565b611ef8858284611cd6565b95945050505050565b6060600080611f0f85611ac5565b909250905060018201611f345760405162461bcd60e51b81526004016105469061310e565b808410611f765760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610546565b600080611f84846001612ddf565b905060005b8681101561200f57611f9b888361258e565b909550925060018301611fe55760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610546565b82611ff1866001612ddf565b611ffb9190612ddf565b6120059083612ddf565b9150600101611f89565b5061201a878261258e565b9094509150600182016120645760405162461bcd60e51b815260206004820152601260248201527142616420566172496e7420696e206974656d60701b6044820152606401610546565b611c47816120728685612ddf565b61207d906001612ddf565b899190611cd6565b8151815160009190811461209d576000915050611c4e565b60206000805b8383116120d357505084810151848201516020909201918082146120ce576000945050505050611c4e565b6120a3565b60006120e0602085613050565b90505b8481101561214e578681815181106120fd576120fd612dae565b602001015160f81c60f81b6001600160f81b03191688828151811061212457612124612dae565b01602001516001600160f81b0319161461214657600095505050505050611c4e565b6001016120e3565b506001979650505050505050565b6000611c4e826001612ddf565b336121726110c8565b6001600160a01b031614610d775760405163118cdaa760e01b8152336004820152602401610546565b7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c0080546001600160a01b03191681556121d382612836565b5050565b60606000806121e585611ac5565b90925090506001820161220a5760405162461bcd60e51b81526004016105469061310e565b80841061224c5760405162461bcd60e51b815260206004820152601060248201526f2b34b7103932b0b21037bb32b9393ab760811b6044820152606401610546565b60008061225a846001612ddf565b905060005b868110156122d25761227188836128a7565b925060001983036122be5760405162461bcd60e51b815260206004820152601760248201527642616420566172496e7420696e2073637269707453696760481b6044820152606401610546565b6122c88383612ddf565b915060010161225f565b506122dd87826128a7565b91506000198203611c3c5760405162461bcd60e51b815260206004820152601760248201527642616420566172496e7420696e2073637269707453696760481b6044820152606401610546565b6020810151600090611c4e565b6000611c4e8260206128f0565b6000611ef8858585856040516020016123609493929190613150565b6040516020818303038152906040526128ff565b6000806023805461238490612e6d565b91506000905061239684836014611cd6565b61239f906131ad565b60601c949350505050565b60006123d08a8a8a8a8a8a8a8a8a60405160200161236099989796959493929190613200565b9a9950505050505050505050565b60008060006123ec84611ac5565b90925090508015806123ff575060001982145b1561240e575060009392505050565b600061241b836001612ddf565b905060005b82811015612475578551821061243c5750600095945050505050565b600061244887846128a7565b90506000198103612460575060009695505050505050565b61246a8184612ddf565b925050600101612420565b5093519093149392505050565b600080600061249084611ac5565b90925090508015806124a3575060001982145b156124b2575060009392505050565b60006124bf836001612ddf565b905060005b8281101561247557855182106124e05750600095945050505050565b60006124ec8784612730565b90506000198103612504575060009695505050505050565b61250e8184612ddf565b9250506001016124c4565b60008160000361252b57506000611c4e565b6000805b83811015612582578451821061254a57600092505050611c4e565b60006125568684612794565b9050600019810361256d5760009350505050611c4e565b6125778184612ddf565b92505060010161252f565b50835114905092915050565b600080600061259d8585612926565b90508060ff166000036125d25760008585815181106125be576125be612dae565b016020015190935060f81c91506127299050565b836125de826001613269565b60ff166125eb9190612ddf565b855110156126025760001960009250925050612729565b60008160ff166002036126465761263b612627612620876001612ddf565b88906128f0565b62ffff0060e882901c1660f89190911c1790565b61ffff16905061271f565b8160ff1660040361269557612688612662612620876001612ddf565b60d881901c63ff00ff001662ff00ff60e89290921c9190911617601081811b91901c1790565b63ffffffff16905061271f565b8160ff1660080361271f576127136126b1612620876001612ddf565b60c01c64ff000000ff600882811c91821665ff000000ff009390911b92831617601090811b6001600160401b031666ff00ff00ff00ff9290921667ff00ff00ff00ff009093169290921790911c65ffff0000ffff1617602081811c91901b1790565b6001600160401b031690505b60ff909116925090505b9250929050565b600061273d826009612ddf565b8351101561274e5750600019611c4e565b60008061276585612760866008612ddf565b61258e565b90925090506001820161277e5760001992505050611c4e565b8061278a836009612ddf565b611ef89190612ddf565b60008060006127a3858561258e565b9092509050600182016127bc5760001992505050611c4e565b6000806127ca846001612ddf565b905060005b8381101561282b576127e588612760848a612ddf565b9095509250600183016128015760001995505050505050611c4e565b8261280d866001612ddf565b6128179190612ddf565b6128219083612ddf565b91506001016127cf565b509695505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b60008060006128b685856129ac565b9092509050600182016128cf5760001992505050611c4e565b806128db836025612ddf565b6128e59190612ddf565b611ef8906004612ddf565b6000611ccf8383016020015190565b60006020600083516020850160025afa50602060006020600060025afa5050600051919050565b600082828151811061293a5761293a612dae565b016020015160f81c60ff0361295157506008611c4e565b82828151811061296357612963612dae565b016020015160f81c60fe0361297a57506004611c4e565b82828151811061298c5761298c612dae565b016020015160f81c60fd036129a357506002611c4e565b50600092915050565b6000806129ba836025612ddf565b845110156129cf575060001990506000612729565b6000806129e186612760876024612ddf565b9097909650945050505050565b600060208284031215612a0057600080fd5b5035919050565b60008083601f840112612a1957600080fd5b5081356001600160401b03811115612a3057600080fd5b6020830191508360208260051b850101111561272957600080fd5b60008060008060408587031215612a6157600080fd5b84356001600160401b03811115612a7757600080fd5b612a8387828801612a07565b90955093505060208501356001600160401b03811115612aa257600080fd5b612aae87828801612a07565b95989497509550505050565b60008083601f840112612acc57600080fd5b5081356001600160401b03811115612ae357600080fd5b60208301915083602082850101111561272957600080fd5b600080600080600060608688031215612b1357600080fd5b85356001600160401b03811115612b2957600080fd5b612b3588828901612aba565b90965094505060208601356001600160401b03811115612b5457600080fd5b612b6088828901612aba565b96999598509660400135949350505050565b60005b83811015612b8d578181015183820152602001612b75565b50506000910152565b6020815260008251806020840152612bb5816040850160208701612b72565b601f01601f19169190910160400192915050565b60006101208284031215612bdc57600080fd5b50919050565b600060208284031215612bf457600080fd5b81356001600160401b03811115612c0a57600080fd5b612c1684828501612bc9565b949350505050565b600080600060608486031215612c3357600080fd5b83356001600160401b03811115612c4957600080fd5b612c5586828701612bc9565b9660208601359650604090950135949350505050565b80356001600160e01b031981168114612c8357600080fd5b919050565b60008060408385031215612c9b57600080fd5b82359150612cab60208401612c6b565b90509250929050565b600060208284031215612cc657600080fd5b81356001600160a01b0381168114611ccf57600080fd5b60008060208385031215612cf057600080fd5b82356001600160401b03811115612d0657600080fd5b612d1285828601612aba565b90969095509350505050565b60008060008060408587031215612d3457600080fd5b84356001600160401b03811115612d4a57600080fd5b612d5687828801612aba565b90955093505060208501356001600160401b03811115612d7557600080fd5b612aae87828801612aba565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611c4e57611c4e612d81565b634e487b7160e01b600052603260045260246000fd5b600060208284031215612dd657600080fd5b611ccf82612c6b565b80820180821115611c4e57611c4e612d81565b835181526020938401516001600160e01b031916938101939093526040830191909152606082015260800190565b6020808252601e908201527f4465706f736974207363726970742063616e6e6f7420626520656d7074790000604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680612e8157607f821691505b602082108103612bdc57634e487b7160e01b600052602260045260246000fd5b601f821115612eeb57806000526020600020601f840160051c81016020851015612ec85750805b601f840160051c820191505b81811015612ee85760008155600101612ed4565b50505b505050565b6001600160401b03831115612f0757612f07612e57565b612f1b83612f158354612e6d565b83612ea1565b6000601f841160018114612f4f5760008515612f375750838201355b600019600387901b1c1916600186901b178355612ee8565b600083815260209020601f19861690835b82811015612f805786850135825560209485019460019092019101612f60565b5086821015612f9d5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000612fec604083018688612faf565b8281036020840152612fff818587612faf565b979650505050505050565b6000808335601e1984360301811261302157600080fd5b8301803591506001600160401b0382111561303b57600080fd5b60200191503681900382131561272957600080fd5b81810381811115611c4e57611c4e612d81565b60006001820161307557613075612d81565b5060010190565b602081526000612c16602083018486612faf565b6000602082840312156130a257600080fd5b81356001600160f01b031981168114611ccf57600080fd5b8581528460208201526080604082015260006130da608083018587612faf565b90508260608301529695505050505050565b6000602082840312156130fe57600080fd5b81518015158114611ccf57600080fd5b60208082526022908201527f52656164206f76657272756e20647572696e6720566172496e742070617273696040820152616e6760f01b606082015260800190565b6001600160e01b0319851681528351600090613173816004850160208901612b72565b84519083019061318a816004840160208901612b72565b6001600160e01b0319949094169301600481019390935250506008019392505050565b805160208201516bffffffffffffffffffffffff198116919060148210156131f9576bffffffffffffffffffffffff196bffffffffffffffffffffffff198360140360031b1b82161692505b5050919050565b6001600160e01b03198a1681526001600160f01b031989166004820152868860068301376000878201600681016000815287898237506000908701600601908152848682376001600160e01b031993909316929093019182525060040198975050505050505050565b60ff8181168382160190811115611c4e57611c4e612d8156","sourceMap":"430:14139:46:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1392:50;;;;;;;;;;-1:-1:-1;1392:50:46;;;;;:::i;:::-;;;;;;;;;;;;;;;;;391:25:58;;;379:2;364:18;1392:50:46;;;;;;;;1094:23;;;;;;;;;;-1:-1:-1;1094:23:46;;;;;;;;;;;592:14:58;;585:22;567:41;;555:2;540:18;1094:23:46;427:187:58;7652:595:46;;;;;;:::i;:::-;;:::i;:::-;;2630:769;;;;;;;;;;-1:-1:-1;2630:769:46;;;;;:::i;:::-;;:::i;1195:28::-;;;;;;;;;;;;;;;;1357:29;;;;;;;;;;-1:-1:-1;1357:29:46;;;;;:::i;:::-;;:::i;:::-;;;;3349:25:58;;;-1:-1:-1;;;;;;3410:33:58;;;3405:2;3390:18;;3383:61;3322:18;1357:29:46;3177:273:58;1123:23:46;;;;;;;;;;-1:-1:-1;1123:23:46;;;;;;;-1:-1:-1;;;;;1123:23:46;;;;;;-1:-1:-1;;;;;3619:32:58;;;3601:51;;3589:2;3574:18;1123:23:46;3455:203:58;1321:30:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10319:1463::-;;;;;;;;;;-1:-1:-1;10319:1463:46;;;;;:::i;:::-;;:::i;3155:101:29:-;;;;;;;;;;;;;:::i;9080:966:46:-;;;;;;;;;;-1:-1:-1;9080:966:46;;;;;:::i;:::-;;:::i;8310:108::-;;;;;;;;;;-1:-1:-1;8389:15:46;:22;8310:108;;2774:229:28;;;;;;;;;;;;;:::i;6936:385:46:-;;;;;;:::i;:::-;;:::i;1290:25::-;;;;;;;;;;;;;:::i;2441:144:29:-;;;;;;;;;;;;;:::i;1259:25:46:-;;;;;;;;;;;;;:::i;8561:147::-;;;;;;;;;;-1:-1:-1;8561:147:46;;;;;:::i;:::-;;:::i;1152:37::-;;;;;;;;;;-1:-1:-1;1152:37:46;;;;;:::i;:::-;;:::i;1448:50::-;;;;;;;;;;-1:-1:-1;1448:50:46;;;;;:::i;:::-;;;;;;;;;;;;;;996:91;;;;;;;;;;;;1044:42;996:91;;4826:1772;;;;;;;;;;-1:-1:-1;4826:1772:46;;;;;:::i;:::-;;:::i;1680:168:28:-;;;;;;;;;;;;;:::i;869:121:46:-;;;;;;;;;;;;-1:-1:-1;;;;;869:121:46;;4318:282;;;;;;;;;;-1:-1:-1;4318:282:46;;;;;:::i;:::-;;:::i;2041:247:28:-;;;;;;;;;;-1:-1:-1;2041:247:28;;;;;:::i;:::-;;:::i;3799:332:46:-;;;;;;;;;;-1:-1:-1;3799:332:46;;;;;:::i;:::-;;:::i;7652:595::-;7765:32;;;7757:60;;;;-1:-1:-1;;;7757:60:46;;7827:2:58;7757:60:46;;;7809:21:58;7866:2;7846:18;;;7839:30;-1:-1:-1;;;7885:18:58;;;7878:45;7940:18;;7757:60:46;;;;;;;;;7848:13;;:28;;7864:5;;7848:28;:::i;:::-;7835:9;:41;7827:77;;;;-1:-1:-1;;;7827:77:46;;8476:2:58;7827:77:46;;;8458:21:58;8515:2;8495:18;;;8488:30;-1:-1:-1;;;8534:18:58;;;8527:53;8597:18;;7827:77:46;8274:347:58;7827:77:46;7930:15;:22;7914:13;7962:279;7979:16;;;7962:279;;;8016:16;8035:92;;;;;;;;8064:5;;8070:1;8064:8;;;;;;;:::i;:::-;;;;;;;8035:92;;;;8100:9;;8110:1;8100:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;8035:92:46;;;8141:15;:26;;;;;;;-1:-1:-1;8141:26:46;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8141:26:46;;;;;;;;;;;;;-1:-1:-1;8186:44:46;8141:26;8203:9;8211:1;8203:5;:9;:::i;:::-;8214:15;8186:44;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;7997:3:46;;7962:279;;;;7747:500;7652:595;;;;:::o;2630:769::-;2057:10;1044:42;2057:27;2049:71;;;;-1:-1:-1;;;2049:71:46;;9747:2:58;2049:71:46;;;9729:21:58;9786:2;9766:18;;;9759:30;9825:33;9805:18;;;9798:61;9876:18;;2049:71:46;9545:355:58;2049:71:46;2773:11:::1;::::0;::::1;;2772:12;2764:56;;;::::0;-1:-1:-1;;;2764:56:46;;10107:2:58;2764:56:46::1;::::0;::::1;10089:21:58::0;10146:2;10126:18;;;10119:30;10185:33;10165:18;;;10158:61;10236:18;;2764:56:46::1;9905:355:58::0;2764:56:46::1;2838:14;2856:1;2838:19:::0;2830:58:::1;;;::::0;-1:-1:-1;;;2830:58:46;;10467:2:58;2830:58:46::1;::::0;::::1;10449:21:58::0;10506:2;10486:18;;;10479:30;10545:28;10525:18;;;10518:56;10591:18;;2830:58:46::1;10265:350:58::0;2830:58:46::1;2930:1;2906:25:::0;;;2898:68:::1;;;;-1:-1:-1::0;;;2898:68:46::1;;;;;;;:::i;:::-;2977:11;:18:::0;;-1:-1:-1;;2977:18:46::1;2991:4;2977:18;::::0;;3005:12:::1;:28;3020:13:::0;;3005:12;:28:::1;:::i;:::-;-1:-1:-1::0;3043:12:46::1;:28;3058:13:::0;;3043:12;:28:::1;:::i;:::-;-1:-1:-1::0;3081:13:46::1;:30:::0;;;3246:8:::1;:24:::0;;-1:-1:-1;;;;;;3246:24:46::1;::::0;::::1;::::0;;3286:42:::1;::::0;;13695:51:58;;;1044:42:46::1;13777:2:58::0;13762:18;;13755:60;3286:42:46::1;::::0;13668:18:58;3286:42:46::1;;;;;;;3343:49;3363:13;;3378;;3343:49;;;;;;;;;:::i;:::-;;;;;;;;2630:769:::0;;;;;:::o;1357:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1357:29:46;;;:::o;1321:30::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10319:1463::-;10411:40;10437:13;10411:25;:40::i;:::-;-1:-1:-1;10473:13:46;;-1:-1:-1;10490:40:46;10511:18;;;;:13;:18;:::i;:::-;10490:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10490:20:46;;-1:-1:-1;;;10490:40:46:i;:::-;10470:60;-1:-1:-1;10540:19:46;;-1:-1:-1;10562:60:46;10592:18;;;;:13;:18;:::i;:::-;10562:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10612:9:46;;-1:-1:-1;10620:1:46;;-1:-1:-1;10612:5:46;;-1:-1:-1;10612:9:46;:::i;:::-;10562:29;:60::i;:::-;10540:82;;10632:25;10660:36;10689:6;10660:28;:36::i;:::-;10632:64;-1:-1:-1;10706:16:46;10725:41;10740:25;10632:64;10706:16;10762:2;10740:18;:25::i;:::-;10725:14;:41::i;:::-;10706:60;;10776:18;10805:64;10820:48;10839:2;10865;10843:12;:19;:24;;;;:::i;:::-;10820:12;;:48;:18;:48::i;10805:64::-;10797:73;10900:25;;;:15;:25;;;;;;10797:73;;-1:-1:-1;10943:14:46;;;10935:47;;;;-1:-1:-1;;;10935:47:46;;15394:2:58;10935:47:46;;;15376:21:58;15433:2;15413:18;;;15406:30;-1:-1:-1;;;15452:18:58;;;15445:50;15512:18;;10935:47:46;15192:344:58;10935:47:46;10992:21;11016:60;11051:21;;;;:13;:21;:::i;:::-;11016:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11016:60:46;-1:-1:-1;11016:34:46;;-1:-1:-1;;11016:60:46:i;:::-;10992:84;;11086:19;11108:48;11144:8;11154:1;11108:35;:48::i;:::-;11086:70;;11180:11;11194:17;:24;;;;;:::i;:::-;;-1:-1:-1;11228:31:46;;-1:-1:-1;11262:20:46;:6;11228:31;11194:24;11262:12;:20::i;:::-;11228:54;;11300:51;11313:18;11333:17;11300:51;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:12;:51::i;:::-;11292:90;;;;-1:-1:-1;;;11292:90:46;;15743:2:58;11292:90:46;;;15725:21:58;15782:2;15762:18;;;15755:30;15821:28;15801:18;;;15794:56;15867:18;;11292:90:46;15541:350:58;11292:90:46;11392:24;11419:15;11392:24;11435:13;11447:1;11435:9;:13;:::i;:::-;11419:30;;;;;;;;;;;;11392:57;;11520:16;11539;11559:1;11539:21;:78;;;;11584:33;11606:10;11584:21;:33::i;:::-;11564:16;:53;;11539:78;11520:97;;11635:11;11627:49;;;;-1:-1:-1;;;11627:49:46;;16098:2:58;11627:49:46;;;16080:21:58;16137:2;16117:18;;;16110:30;16176:27;16156:18;;;16149:55;16221:18;;11627:49:46;15896:349:58;11627:49:46;11720:4;11686:19;11706:10;11686:31;;;;;;;:::i;:::-;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;11740:35;11764:10;11740:35;;;;391:25:58;;379:2;364:18;;245:177;11740:35:46;;;;;;;;10401:1381;;;;;;;;;;;;10319:1463;:::o;3155:101:29:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;9080:966:46:-;9209:37;9235:10;9209:25;:37::i;:::-;-1:-1:-1;9256:18:46;;-1:-1:-1;9277:56:46;9306:14;;;;:10;:14;:::i;:::-;9277:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9322:10:46;;-1:-1:-1;9277:28:46;;-1:-1:-1;;9277:56:46:i;:::-;9256:77;;9343:12;9358:34;9386:5;9358:27;:34::i;:::-;9343:49;;9402:12;9417:32;9443:5;9417:25;:32::i;:::-;9402:47;;9459:16;9478:15;9494:10;9478:27;;;;;;;;:::i;:::-;;;;;;;;;;9459:46;;;;;;;;;9478:27;;;;;;9459:46;;;;;;;;;;;;-1:-1:-1;;;;;;9459:46:46;;;;;;;;;-1:-1:-1;9523:17:46;;:43;;;;;9561:5;-1:-1:-1;;;;;9544:22:46;;:4;:13;;;-1:-1:-1;;;;;9544:22:46;;;9523:43;9515:73;;;;-1:-1:-1;;;9515:73:46;;16452:2:58;9515:73:46;;;16434:21:58;16491:2;16471:18;;;16464:30;-1:-1:-1;;;16510:18:58;;;16503:47;16567:18;;9515:73:46;16250:341:58;9515:73:46;9602:13;9619:37;9640:15;;;;:10;:15;:::i;9619:37::-;9599:57;-1:-1:-1;9666:19:46;;-1:-1:-1;9688:57:46;9718:15;;;;:10;:15;:::i;9688:57::-;9666:79;;9755:25;9783:36;9812:6;9783:28;:36::i;:::-;9755:64;;9829:24;9864:28;9879:12;9864:14;:28::i;:::-;9856:37;-1:-1:-1;9933:39:46;9856:37;9933:21;:39::i;:::-;9903:27;;;;:15;:27;;;;;;;;;:69;;;;9987:52;;16770:25:58;;;16811:18;;;16804:34;;;9987:52:46;;16743:18:58;9987:52:46;;;;;;;9199:847;;;;;;;;9080:966;;;:::o;2774:229:28:-;966:10:31;;2869:14:28;:12;:14::i;:::-;-1:-1:-1;;;;;2869:24:28;;2865:96;;2916:34;;-1:-1:-1;;;2916:34:28;;-1:-1:-1;;;;;3619:32:58;;2916:34:28;;;3601:51:58;3574:18;;2916:34:28;3455:203:58;2865:96:28;2970:26;2989:6;2970:18;:26::i;:::-;2816:187;2774:229::o;6936:385:46:-;7033:13;;7020:9;:26;7012:62;;;;-1:-1:-1;;;7012:62:46;;8476:2:58;7012:62:46;;;8458:21:58;8515:2;8495:18;;;8488:30;-1:-1:-1;;;8534:18:58;;;8527:53;8597:18;;7012:62:46;8274:347:58;7012:62:46;7103:72;;;;;;;;;;;-1:-1:-1;;;;;;7103:72:46;;;;;;;;7201:15;:22;;7233:26;;;;;-1:-1:-1;7233:26:46;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7233:26:46;;;;;;;;;;;;;7274:40;;7103:72;;7201:22;7274:40;;;;7103:72;;7201:22;;7298:15;;7274:40;:::i;:::-;;;;;;;;7002:319;;6936:385;;:::o;1290:25::-;;;;;;;:::i;2441:144:29:-;2487:7;;1313:22;2533:20;2570:8;-1:-1:-1;;;;;2570:8:29;;2441:144;-1:-1:-1;;2441:144:29:o;1259:25:46:-;;;;;;;:::i;8561:147::-;2334:13:29;:11;:13::i;:::-;8630:8:46::1;:20:::0;;-1:-1:-1;;;;;;8630:20:46::1;;-1:-1:-1::0;;;;;8630:20:46;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;;8665:36:::1;::::0;;8681:8;;;::::1;;13695:51:58::0;;13777:2;13762:18;;13755:60;;;;8665:36:46::1;::::0;13668:18:58;8665:36:46::1;;;;;;;8561:147:::0;:::o;1152:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4826:1772::-;2200:8;;;;;-1:-1:-1;;;;;2200:8:46;2186:10;:22;2178:61;;;;-1:-1:-1;;;2178:61:46;;17051:2:58;2178:61:46;;;17033:21:58;17090:2;17070:18;;;17063:30;17129:28;17109:18;;;17102:56;17175:18;;2178:61:46;16849:350:58;2178:61:46;5263:13:::1;5278:12:::0;5294:33:::1;5320:6;5294:25;:33::i;:::-;5262:65;;;;5345:4;5353:1;5345:9;5337:44;;;::::0;-1:-1:-1;;;5337:44:46;;17406:2:58;5337:44:46::1;::::0;::::1;17388:21:58::0;17445:2;17425:18;;;17418:30;-1:-1:-1;;;17464:18:58;;;17457:52;17526:18;;5337:44:46::1;17204:346:58::0;5337:44:46::1;5391:12;5406:83;5432:14;;::::0;::::1;:6:::0;:14:::1;:::i;:::-;5448:10;;::::0;::::1;:6:::0;:10:::1;:::i;:::-;5406:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5460:11:46::1;::::0;-1:-1:-1;;;5460:11:46::1;::::0;::::1;::::0;::::1;:::i;:::-;5406:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;5473:15:46::1;::::0;-1:-1:-1;;;5473:15:46;;;::::1;::::0;::::1;;:::i;:::-;5406:25;:83::i;:::-;5508:21;::::0;;;:15:::1;:21;::::0;;;;;5391:98;;-1:-1:-1;5508:26:46;5500:57:::1;;;::::0;-1:-1:-1;;;5500:57:46;;17757:2:58;5500:57:46::1;::::0;::::1;17739:21:58::0;17796:2;17776:18;;;17769:30;-1:-1:-1;;;17815:18:58;;;17808:48;17873:18;;5500:57:46::1;17555:342:58::0;5500:57:46::1;5593:16;;5591:18;;;;;:::i;:::-;::::0;;;;-1:-1:-1;5567:21:46::1;::::0;;;:15:::1;:21;::::0;;;;:42;;;;5652:53:::1;5687:14;;::::0;::::1;:6:::0;:14:::1;:::i;5652:53::-;5628:77;;5718:14;5736:30;5757:8;5736:20;:30::i;:::-;5715:51;;;5784:6;5794:1;5784:11;5776:45;;;::::0;-1:-1:-1;;;5776:45:46;;18244:2:58;5776:45:46::1;::::0;::::1;18226:21:58::0;18283:2;18263:18;;;18256:30;-1:-1:-1;;;18302:18:58;;;18295:51;18363:18;;5776:45:46::1;18042:345:58::0;5776:45:46::1;5867:19;5889:48;5925:8;5935:1;5889:35;:48::i;:::-;5867:70;;5961:11;5975:12;:19;;;;;:::i;:::-;::::0;-1:-1:-1;6004:26:46::1;::::0;-1:-1:-1;6033:20:46::1;:6:::0;6004:26;5975:19;6033:12:::1;:20::i;:::-;6004:49;;6071:41;6084:13;6099:12;6071:41;;;;;:::i;:::-;6063:76;;;::::0;-1:-1:-1;;;6063:76:46;;18594:2:58;6063:76:46::1;::::0;::::1;18576:21:58::0;18633:2;18613:18;;;18606:30;-1:-1:-1;;;18652:18:58;;;18645:52;18714:18;;6063:76:46::1;18392:346:58::0;6063:76:46::1;6149:26;6178:70;6207:12;:19;;;;;:::i;:::-;6191:13:::0;;:35:::1;::::0;-1:-1:-1;6191:35:46::1;:::i;:::-;6228:12;:19;;;;;:::i;:::-;6178:6:::0;;:70;-1:-1:-1;6178:12:46::1;:70::i;:::-;6149:99;;6266:41;6279:13;6294:12;6266:41;;;;;:::i;:::-;6258:75;;;::::0;-1:-1:-1;;;6258:75:46;;18945:2:58;6258:75:46::1;::::0;::::1;18927:21:58::0;18984:2;18964:18;;;18957:30;-1:-1:-1;;;19003:18:58;;;18996:51;19064:18;;6258:75:46::1;18743:345:58::0;6258:75:46::1;6344:17;6364:31;6388:6;6364:23;:31::i;:::-;6459:16;::::0;6410:66:::1;::::0;;19352:25:58;;;19408:2;19393:18;;19386:34;;;-1:-1:-1;;;;;19456:32:58;;19436:18;;;19429:60;6442:15:46::1;19520:2:58::0;19505:18;;19498:34;19563:3;19548:19;;19541:35;;;;6410:66:46;19456:32:58;;-1:-1:-1;6410:66:46::1;::::0;;;;;19339:3:58;6410:66:46;;::::1;6528:13;::::0;6506:40:::1;::::0;6488:12:::1;::::0;-1:-1:-1;;;;;6506:14:46;::::1;::::0;6488:12;6506:40;6488:12;6506:40;6528:13;6506:14;:40:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6487:59;;;6564:7;6556:35;;;::::0;-1:-1:-1;;;6556:35:46;;19999:2:58;6556:35:46::1;::::0;::::1;19981:21:58::0;20038:2;20018:18;;;20011:30;-1:-1:-1;;;20057:18:58;;;20050:45;20112:18;;6556:35:46::1;19797:339:58::0;6556:35:46::1;4915:1683;;;;;;;;;;;4826:1772:::0;:::o;1680:168:28:-;1733:7;;1318:27;1784:25;1187:174;4318:282:46;2334:13:29;:11;:13::i;:::-;4449:1:46::1;4420:30:::0;;;4412:73:::1;;;;-1:-1:-1::0;;;4412:73:46::1;;;;;;;:::i;:::-;4496:17;:38;4516:18:::0;;4496:17;:38:::1;:::i;:::-;;4550:43;4574:18;;4550:43;;;;;;;:::i;:::-;;;;;;;;4318:282:::0;;:::o;2041:247:28:-;2334:13:29;:11;:13::i;:::-;1318:27:28;2197:26;;-1:-1:-1;;;;;;2197:26:28::1;-1:-1:-1::0;;;;;2197:26:28;::::1;::::0;;::::1;::::0;;2263:7:::1;:5;:7::i;:::-;-1:-1:-1::0;;;;;2238:43:28::1;;;;;;;;;;;2120:168;2041:247:::0;:::o;3799:332:46:-;2334:13:29;:11;:13::i;:::-;3946:1:46::1;3922:25:::0;;;3914:68:::1;;;;-1:-1:-1::0;;;3914:68:46::1;;;;;;;:::i;:::-;3993:12;:28;4008:13:::0;;3993:12;:28:::1;:::i;:::-;-1:-1:-1::0;4031:12:46::1;:28;4046:13:::0;;4031:12;:28:::1;:::i;:::-;;4075:49;4095:13;;4110;;4075:49;;;;;;;;;:::i;12050:779::-:0;12139:7;;;12183:90;12211:10;;;;:2;:10;:::i;:::-;12223:7;;;;;;;;:::i;:::-;12232:6;;;;:2;:6;:::i;:::-;12240:7;;;;:2;:7;:::i;:::-;12249:10;;;;:2;:10;:::i;:::-;12261:11;;;;;;;;:::i;:::-;12183:27;:90::i;:::-;12167:106;-1:-1:-1;12291:28:46;12312:6;;;;:2;:6;:::i;:::-;12291:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12291:20:46;;-1:-1:-1;;;12291:28:46:i;:::-;12283:70;;;;-1:-1:-1;;;12283:70:46;;20878:2:58;12283:70:46;;;20860:21:58;20917:2;20897:18;;;20890:30;20956:31;20936:18;;;20929:59;21005:18;;12283:70:46;20676:353:58;12283:70:46;12371:30;12393:7;;;;:2;:7;:::i;:::-;12371:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12371:21:46;;-1:-1:-1;;;12371:30:46:i;:::-;12363:73;;;;-1:-1:-1;;;12363:73:46;;21236:2:58;12363:73:46;;;21218:21:58;21275:2;21255:18;;;21248:30;21314:32;21294:18;;;21287:60;21364:18;;12363:73:46;21034:354:58;12363:73:46;12458:12;12474:28;12495:6;;;;:2;:6;:::i;12474:28::-;12455:47;-1:-1:-1;12571:46:46;;-1:-1:-1;12600:10:46;;;;:2;:10;:::i;:::-;12571:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12612:4:46;;-1:-1:-1;12571:28:46;;-1:-1:-1;;12571:46:46:i;:::-;12563:92;;;;-1:-1:-1;;;12563:92:46;;21595:2:58;12563:92:46;;;21577:21:58;21634:2;21614:18;;;21607:30;21673:34;21653:18;;;21646:62;-1:-1:-1;;;21724:18:58;;;21717:31;21765:19;;12563:92:46;21393:397:58;12563:92:46;-1:-1:-1;;;;;12674:28:46;12703:15;;;;12720:5;12727:21;;;;12703:2;12727:21;:::i;:::-;12750:2;:8;;;12674:85;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12666:125;;;;-1:-1:-1;;;12666:125:46;;22743:2:58;12666:125:46;;;22725:21:58;22782:2;22762:18;;;22755:30;22821:29;22801:18;;;22794:57;22868:18;;12666:125:46;22541:351:58;12666:125:46;12810:5;;12817:4;;-1:-1:-1;12050:779:46;-1:-1:-1;;12050:779:46:o;2414:123:1:-;2475:7;2484;2510:20;2524:2;2528:1;2510:13;:20::i;:::-;2503:27;;;;2414:123;;;:::o;21812:827::-;21901:12;21925:22;21957:14;22009:18;22021:5;22009:11;:18::i;:::-;21982:45;;-1:-1:-1;21982:45:1;-1:-1:-1;22045:29:1;;;22037:76;;;;-1:-1:-1;;;22037:76:1;;;;;;;:::i;:::-;22140:6;22131;:15;22123:45;;;;-1:-1:-1;;;22123:45:1;;23502:2:58;22123:45:1;;;23484:21:58;23541:2;23521:18;;;23514:30;-1:-1:-1;;;23560:18:58;;;23553:47;23617:18;;22123:45:1;23300:341:58;22123:45:1;22179:12;;22223:18;22227:14;22223:1;:18;:::i;:::-;22205:36;;22257:10;22252:213;22278:6;22273:2;:11;22252:213;;;22314:39;22338:5;22345:7;22314:23;:39::i;:::-;22307:46;;-1:-1:-1;;22375:4:1;:19;22367:58;;;;-1:-1:-1;;;22367:58:1;;23848:2:58;22367:58:1;;;23830:21:58;23887:2;23867:18;;;23860:30;23926:28;23906:18;;;23899:56;23972:18;;22367:58:1;23646:350:58;22367:58:1;22439:15;22450:4;22439:15;;:::i;:::-;;-1:-1:-1;22286:5:1;;22252:213;;;;22482:39;22506:5;22513:7;22482:23;:39::i;:::-;22475:46;;-1:-1:-1;;22539:4:1;:19;22531:58;;;;-1:-1:-1;;;22531:58:1;;23848:2:58;22531:58:1;;;23830:21:58;23887:2;23867:18;;;23860:30;23926:28;23906:18;;;23899:56;23972:18;;22531:58:1;23646:350:58;22531:58:1;22606:26;:5;22618:7;22627:4;22606:11;:26::i;:::-;22599:33;;;;;;21812:827;;;;;:::o;24241:267::-;24315:12;24343:7;24351:1;24343:10;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;;;;;24343:10:1;-1:-1:-1;;;24343:21:1;24339:64;;-1:-1:-1;;24380:12:1;;;;;;;;;-1:-1:-1;24380:12:1;;;24241:267::o;24339:64::-;24412:15;24430:7;24438:2;24430:11;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;24430:11:1;;;-1:-1:-1;24458:43:1;;:7;;24472:2;;24430:11;;24458:13;:43::i;:::-;24451:50;24241:267;-1:-1:-1;;;24241:267:1:o;10344:924:2:-;10431:16;10463:7;10474:1;10463:12;10459:55;;-1:-1:-1;10491:12:2;;;;;;;;;-1:-1:-1;10491:12:2;;;;10459:55;10523:9;10535:16;10544:7;10535:6;:16;:::i;:::-;10523:28;;10576:6;10569:4;:13;:38;;;;;10603:4;10586:6;:13;:21;;10569:38;10561:70;;;;-1:-1:-1;;;10561:70:2;;24203:2:58;10561:70:2;;;24185:21:58;24242:2;24222:18;;;24215:30;-1:-1:-1;;;24261:18:58;;;24254:49;24320:18;;10561:70:2;24001:343:58;10561:70:2;10768:4;10762:11;10755:18;;10817:7;10812:2;10807:3;10803:12;10799:26;10793:4;10786:40;10851:7;10846:3;10839:20;10978:6;10970;10966:19;10961:3;10957:29;11054:6;11049:2;11041:6;11037:15;11033:28;11098:7;11093:3;11089:17;11000:252;11129:3;11124;11121:12;11000:252;;;11233:3;11227:10;11220:4;11215:3;11211:14;11204:34;11168:2;11163:3;11159:12;11152:19;;11000:252;;;11004:116;;;10651:611;10344:924;;;;;:::o;14115:452:46:-;14184:14;14214:7;:14;14232:1;14214:19;14210:60;;-1:-1:-1;14256:3:46;;14115:452;-1:-1:-1;14115:452:46:o;14210:60::-;14296:14;;14338:2;14328:12;;;14320:59;;;;-1:-1:-1;;;14320:59:46;;24551:2:58;14320:59:46;;;24533:21:58;24590:2;24570:18;;;24563:30;24629:34;24609:18;;;24602:62;-1:-1:-1;;;24680:18:58;;;24673:32;24722:19;;14320:59:46;24349:398:58;14320:59:46;14463:2;14450:16;;;14444:23;14488:15;;14540:1;14530:12;14526:25;;;;;;-1:-1:-1;14115:452:46:o;3420:579:0:-;3513:12;3537;3563:15;3598:10;3593:221;3619:6;3614:2;:11;3593:221;;;3655:43;3680:8;3690:7;3655:24;:43::i;:::-;3648:50;;-1:-1:-1;;3720:4:0;:28;3712:62;;;;-1:-1:-1;;;3712:62:0;;24954:2:58;3712:62:0;;;24936:21:58;24993:2;24973:18;;;24966:30;-1:-1:-1;;;25012:18:58;;;25005:51;25073:18;;3712:62:0;24752:345:58;3712:62:0;3788:15;3799:4;3788:15;;:::i;:::-;;-1:-1:-1;3627:5:0;;3593:221;;;;3831:43;3856:8;3866:7;3831:24;:43::i;:::-;3824:50;;-1:-1:-1;;3892:4:0;:28;3884:62;;;;-1:-1:-1;;;3884:62:0;;24954:2:58;3884:62:0;;;24936:21:58;24993:2;24973:18;;;24966:30;-1:-1:-1;;;25012:18:58;;;25005:51;25073:18;;3884:62:0;24752:345:58;3884:62:0;3963:29;:8;3978:7;3987:4;3963:14;:29::i;:::-;3956:36;3420:579;-1:-1:-1;;;;;3420:579:0:o;4360:974::-;4454:12;4478:22;4510:15;4572:30;4593:8;4572:20;:30::i;:::-;4544:58;;-1:-1:-1;4544:58:0;-1:-1:-1;4620:38:0;;;4612:85;;;;-1:-1:-1;;;4612:85:0;;;;;;;:::i;:::-;4724:7;4715:6;:16;4707:45;;;;-1:-1:-1;;;4707:45:0;;25304:2:58;4707:45:0;;;25286:21:58;25343:2;25323:18;;;25316:30;-1:-1:-1;;;25362:18:58;;;25355:46;25418:18;;4707:45:0;25102:340:58;4707:45:0;4763:16;;4811:18;4815:14;4811:1;:18;:::i;:::-;4793:36;;4845:9;4840:263;4864:6;4860:1;:10;4840:263;;;4920:41;4943:8;4953:7;4920:22;:41::i;:::-;4891:70;;-1:-1:-1;4891:70:0;-1:-1:-1;4983:32:0;;;4975:63;;;;-1:-1:-1;;;4975:63:0;;25649:2:58;4975:63:0;;;25631:21:58;25688:2;25668:18;;;25661:30;-1:-1:-1;;;25707:18:58;;;25700:48;25765:18;;4975:63:0;25447:342:58;4975:63:0;5084:8;5063:18;5067:14;5063:1;:18;:::i;:::-;:29;;;;:::i;:::-;5052:40;;;;:::i;:::-;;-1:-1:-1;4872:3:0;;4840:263;;;;5142:41;5165:8;5175:7;5142:22;:41::i;:::-;5113:70;;-1:-1:-1;5113:70:0;-1:-1:-1;5201:32:0;;;5193:63;;;;-1:-1:-1;;;5193:63:0;;25649:2:58;5193:63:0;;;25631:21:58;25688:2;25668:18;;;25661:30;-1:-1:-1;;;25707:18:58;;;25700:48;25765:18;;5193:63:0;25447:342:58;5193:63:0;5273:54;5288:7;5297:25;5308:14;5297:8;:25;:::i;:::-;:29;;5325:1;5297:29;:::i;:::-;5273:8;;:54;:14;:54::i;13335:774:46:-;13449:8;;13478;;13412:11;;13449:8;13471:15;;13467:58;;13509:5;13502:12;;;;;13467:58;13552:2;13535:14;;13612:289;13629:3;13619:6;:13;13612:289;;-1:-1:-1;;13691:14:46;;;13685:21;13740:14;;;13734:21;13794:2;13782:15;;;;13828:16;;;13824:67;;13871:5;13864:12;;;;;;;;13824:67;13612:289;;;13958:6;13967:11;13976:2;13967:6;:11;:::i;:::-;13958:20;;13953:128;13984:3;13980:1;:7;13953:128;;;14020:1;14022;14020:4;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;14012:12:46;;:1;14014;14012:4;;;;;;;;:::i;:::-;;;;;-1:-1:-1;;;;;;14012:4:46;:12;14008:63;;14051:5;14044:12;;;;;;;;;14008:63;13989:3;;13953:128;;;-1:-1:-1;14098:4:46;;13335:774;-1:-1:-1;;;;;;;13335:774:46:o;11923:121::-;11997:7;12023:14;:10;12036:1;12023:14;:::i;2658:162:29:-;966:10:31;2717:7:29;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:29;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:29;;966:10:31;2763:40:29;;;3601:51:58;3574:18;;2763:40:29;3455:203:58;2472:222:28;1318:27;2621:22;;-1:-1:-1;;;;;;2621:22:28;;;2653:34;2678:8;2653:24;:34::i;:::-;2544:150;2472:222;:::o;11841:818:1:-;11928:12;11952:22;11984:13;12034:17;12046:4;12034:11;:17::i;:::-;12008:43;;-1:-1:-1;12008:43:1;-1:-1:-1;12069:29:1;;;12061:76;;;;-1:-1:-1;;;12061:76:1;;;;;;;:::i;:::-;12164:5;12155:6;:14;12147:43;;;;-1:-1:-1;;;12147:43:1;;25304:2:58;12147:43:1;;;25286:21:58;25343:2;25323:18;;;25316:30;-1:-1:-1;;;25362:18:58;;;25355:46;25418:18;;12147:43:1;25102:340:58;12147:43:1;12201:12;;12245:18;12249:14;12245:1;:18;:::i;:::-;12227:36;;12279:10;12274:217;12300:6;12295:2;:11;12274:217;;;12336:37;12359:4;12365:7;12336:22;:37::i;:::-;12329:44;;-1:-1:-1;;12395:4:1;:19;12387:55;;;;-1:-1:-1;;;12387:55:1;;25996:2:58;12387:55:1;;;25978:21:58;26035:2;26015:18;;;26008:30;-1:-1:-1;;;26054:18:58;;;26047:53;26117:18;;12387:55:1;25794:347:58;12387:55:1;12466:14;12476:4;12466:7;:14;:::i;:::-;12456:24;-1:-1:-1;12308:5:1;;12274:217;;;;12508:37;12531:4;12537:7;12508:22;:37::i;:::-;12501:44;;-1:-1:-1;;12563:4:1;:19;12555:55;;;;-1:-1:-1;;;12555:55:1;;25996:2:58;12555:55:1;;;25978:21:58;26035:2;26015:18;;;26008:30;-1:-1:-1;;;26054:18:58;;;26047:53;26117:18;;12555:55:1;25794:347:58;18631:122:1;12566:2:2;12550:28;;12544:35;18703:7:1;;18729:17;12417:178:2;19454:119:1;19524:6;19549:17;:6;19563:2;19549:13;:17::i;2637:355:4:-;2795:7;2921:64;2938:8;2948:4;2954:5;2961:9;2921:50;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:62;:64::i;12835:240:46:-;12913:7;12932:14;12949:12;:19;;;;;:::i;:::-;;-1:-1:-1;12978:13:46;;-1:-1:-1;13002:25:46;:7;12949:19;13024:2;13002:13;:25::i;:::-;12994:34;;;:::i;:::-;13053:14;;;12835:240;-1:-1:-1;;;;12835:240:46:o;431:320:0:-;643:7;669:75;686:7;695:4;701:3;;706:4;;712:7;;721:8;669:61;;;;;;;;;;;;;;;;:::i;:75::-;662:82;431:320;-1:-1:-1;;;;;;;;;;431:320:0:o;27793:991:1:-;27856:4;27872:22;27904:13;27954:17;27966:4;27954:11;:17::i;:::-;27928:43;;-1:-1:-1;27928:43:1;-1:-1:-1;28050:10:1;;;:43;;;-1:-1:-1;;28064:14:1;:29;28050:43;28046:86;;;-1:-1:-1;28116:5:1;;27793:991;-1:-1:-1;;;27793:991:1:o;28046:86::-;28142:15;28160:18;28164:14;28160:1;:18;:::i;:::-;28142:36;;28194:9;28189:492;28213:5;28209:1;:9;28189:492;;;28312:4;:11;28301:7;:22;28297:73;;-1:-1:-1;28350:5:1;;27793:991;-1:-1:-1;;;;;27793:991:1:o;28297:73::-;28445:16;28464:37;28487:4;28493:7;28464:22;:37::i;:::-;28445:56;;-1:-1:-1;;28519:8:1;:23;28515:74;;-1:-1:-1;28569:5:1;;27793:991;-1:-1:-1;;;;;;27793:991:1:o;28515:74::-;28651:19;28662:8;28651:19;;:::i;:::-;;-1:-1:-1;;28220:3:1;;28189:492;;;-1:-1:-1;28766:11:1;;28755:22;;;;;-1:-1:-1;;;27793:991:1:o;29056:1004::-;29121:4;29137:22;29169:14;29221:18;29233:5;29221:11;:18::i;:::-;29194:45;;-1:-1:-1;29194:45:1;-1:-1:-1;29319:11:1;;;:44;;;-1:-1:-1;;29334:14:1;:29;29319:44;29315:87;;;-1:-1:-1;29386:5:1;;29056:1004;-1:-1:-1;;;29056:1004:1:o;29315:87::-;29412:15;29430:18;29434:14;29430:1;:18;:::i;:::-;29412:36;;29464:9;29459:497;29483:6;29479:1;:10;29459:497;;;29583:5;:12;29572:7;:23;29568:74;;-1:-1:-1;29622:5:1;;29056:1004;-1:-1:-1;;;;;29056:1004:1:o;29568:74::-;29766:16;29785:39;29809:5;29816:7;29785:23;:39::i;:::-;29766:58;;-1:-1:-1;;29842:8:1;:23;29838:74;;-1:-1:-1;29892:5:1;;29056:1004;-1:-1:-1;;;;;;29056:1004:1:o;29838:74::-;29926:19;29937:8;29926:19;;:::i;:::-;;-1:-1:-1;;29491:3:1;;29459:497;;1060:871:0;1147:4;1222:6;1232:1;1222:11;1218:54;;-1:-1:-1;1256:5:0;1249:12;;1218:54;1282:15;1317:9;1312:512;1336:6;1332:1;:10;1312:512;;;1436:8;:15;1425:7;:26;1421:77;;1478:5;1471:12;;;;;;1421:77;1573:16;1592:43;1617:8;1627:7;1592:24;:43::i;:::-;1573:62;;-1:-1:-1;;1653:8:0;:32;1649:83;;1712:5;1705:12;;;;;;;1649:83;1794:19;1805:8;1794:19;;:::i;:::-;;-1:-1:-1;;1344:3:0;;1312:512;;;-1:-1:-1;1909:15:0;;1898:26;;-1:-1:-1;1060:871:0;;;;:::o;2999:704:1:-;3075:7;3084;3103:14;3120:36;3148:2;3152:3;3120:27;:36::i;:::-;3103:53;;3171:8;:13;;3183:1;3171:13;3167:70;;3208:1;3217:2;3220:3;3217:7;;;;;;;;:::i;:::-;;;;;3200:26;;-1:-1:-1;3217:7:1;;;-1:-1:-1;3200:26:1;;-1:-1:-1;3200:26:1;3167:70;3277:3;3262:12;3266:8;3262:1;:12;:::i;:::-;:18;;;;;;:::i;:::-;3250:2;:9;:30;3246:84;;;-1:-1:-1;;3317:1:1;3296:23;;;;;;;3246:84;3339:15;3368:8;:13;;3380:1;3368:13;3364:297;;3407:41;3428:18;3438:7;3442:3;3438:1;:7;:::i;:::-;3428:2;;:9;:18::i;:::-;7042:7;;;;;;7054;;;;;7041:21;;6959:110;3407:41;3397:51;;;;3364:297;;;3469:8;:13;;3481:1;3469:13;3465:196;;3508:41;3529:18;3539:7;3543:3;3539:1;:7;:::i;3529:18::-;6397:21;;;;;;6402:10;6360:6;;;;;6359:21;;;;6358:61;6485:2;6480:7;;;6468;;;6467:21;;6238:257;3508:41;3498:51;;;;3465:196;;;3570:8;:13;;3582:1;3570:13;3566:95;;3609:41;3630:18;3640:7;3644:3;3640:1;:7;:::i;3630:18::-;3623:26;;5965:22;5866:1;5793:6;;;5965:22;;;;5838:29;;;;5965:22;;;;5992:2;5964:30;;;-1:-1:-1;;;;;6056:7:1;5843:18;5792:29;;;;5838;;;;5791:77;;;;5918:7;;;5969:18;5917:30;6056:7;6061:2;6044:7;;;6056;;;6043:21;;5671:400;3609:41;-1:-1:-1;;;;;3599:51:1;;;3566:95;3670:26;;;;;-1:-1:-1;3688:7:1;-1:-1:-1;2999:704:1;;;;;;:::o;20911:536::-;21002:7;21042;21046:3;21042:1;:7;:::i;:::-;21025;:14;:24;21021:73;;;-1:-1:-1;;;21065:18:1;;21021:73;21103:22;;21212:31;21226:7;21235;21239:3;21235:1;:7;:::i;:::-;21212:13;:31::i;:::-;21172:71;;-1:-1:-1;21172:71:1;-1:-1:-1;21258:29:1;;;21254:78;;-1:-1:-1;;21303:18:1;;;;;;21254:78;21421:19;21396:22;21404:14;21396:5;:22;:::i;:::-;:44;;;;:::i;2254:783:0:-;2347:7;2366:22;2398:20;2470:37;2493:8;2503:3;2470:22;:37::i;:::-;2437:70;;-1:-1:-1;2437:70:0;-1:-1:-1;2521:38:0;;;2517:96;;-1:-1:-1;;2575:27:0;;;;;;2517:96;2623:16;;2667:18;2671:14;2667:1;:18;:::i;:::-;2649:36;;2701:9;2696:310;2720:12;2716:1;:16;2696:310;;;2782:47;2805:8;2815:13;2821:7;2815:3;:13;:::i;2782:47::-;2753:76;;-1:-1:-1;2753:76:0;-1:-1:-1;2847:32:0;;;2843:98;;-1:-1:-1;;2899:27:0;;;;;;;;;2843:98;2987:8;2966:18;2970:14;2966:1;:18;:::i;:::-;:29;;;;:::i;:::-;2955:40;;;;:::i;:::-;;-1:-1:-1;2734:3:0;;2696:310;;;-1:-1:-1;3023:7:0;2254:783;-1:-1:-1;;;;;;2254:783:0:o;3774:248:29:-;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:29;;-1:-1:-1;;;;;3941:19:29;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;14980:394:1:-;15069:7;15088:22;15120:21;15185:34;15207:6;15215:3;15185:21;:34::i;:::-;15151:68;;-1:-1:-1;15151:68:1;-1:-1:-1;15233:29:1;;;15229:78;;-1:-1:-1;;15278:18:1;;;;;;15229:78;15350:13;15324:23;15333:14;15324:6;:23;:::i;:::-;:39;;;;:::i;:::-;:43;;15366:1;15324:43;:::i;13081:136:2:-;13154:6;13186:23;13194:6;13202;12550:28;12566:2;12550:28;12544:35;;12417:178;9609:335:1;9670:11;9835:2;9829:4;9824:2;9818:9;9813:2;9809;9805:11;9802:1;9795:5;9784:54;9780:59;9893:2;9887:4;9883:2;9877:4;9874:1;9867:5;9856:40;-1:-1:-1;;9923:4:1;9917:11;;9609:335;-1:-1:-1;9609:335:1:o;1550:446::-;1640:5;1667:2;1670:3;1667:7;;;;;;;;:::i;:::-;;;;;;;1661:14;:22;1657:93;;-1:-1:-1;1706:1:1;1699:8;;1657:93;1769:2;1772:3;1769:7;;;;;;;;:::i;:::-;;;;;;;1781:4;1763:22;1759:93;;-1:-1:-1;1808:1:1;1801:8;;1759:93;1871:2;1874:3;1871:7;;;;;;;;:::i;:::-;;;;;;;1883:4;1865:22;1861:93;;-1:-1:-1;1910:1:1;1903:8;;1861:93;-1:-1:-1;1971:1:1;1550:446;;;;:::o;13785:388::-;13873:7;;13921:8;13926:3;13921:2;:8;:::i;:::-;13905:6;:13;:24;13901:78;;;-1:-1:-1;;;654:66:1;-1:-1:-1;13966:1:1;13945:23;;13901:78;13989:22;;14086:31;14100:6;14108:8;:3;14114:2;14108:8;:::i;14086:31::-;14052:65;;;;-1:-1:-1;13785:388:1;-1:-1:-1;;;;;13785:388:1:o;14:226:58:-;73:6;126:2;114:9;105:7;101:23;97:32;94:52;;;142:1;139;132:12;94:52;-1:-1:-1;187:23:58;;14:226;-1:-1:-1;14:226:58:o;619:367::-;682:8;692:6;746:3;739:4;731:6;727:17;723:27;713:55;;764:1;761;754:12;713:55;-1:-1:-1;787:20:58;;-1:-1:-1;;;;;819:30:58;;816:50;;;862:1;859;852:12;816:50;899:4;891:6;887:17;875:29;;959:3;952:4;942:6;939:1;935:14;927:6;923:27;919:38;916:47;913:67;;;976:1;973;966:12;991:767;1112:6;1120;1128;1136;1189:2;1177:9;1168:7;1164:23;1160:32;1157:52;;;1205:1;1202;1195:12;1157:52;1245:9;1232:23;-1:-1:-1;;;;;1270:6:58;1267:30;1264:50;;;1310:1;1307;1300:12;1264:50;1349:70;1411:7;1402:6;1391:9;1387:22;1349:70;:::i;:::-;1438:8;;-1:-1:-1;1323:96:58;-1:-1:-1;;1526:2:58;1511:18;;1498:32;-1:-1:-1;;;;;1542:32:58;;1539:52;;;1587:1;1584;1577:12;1539:52;1626:72;1690:7;1679:8;1668:9;1664:24;1626:72;:::i;:::-;991:767;;;;-1:-1:-1;1717:8:58;-1:-1:-1;;;;991:767:58:o;1763:347::-;1814:8;1824:6;1878:3;1871:4;1863:6;1859:17;1855:27;1845:55;;1896:1;1893;1886:12;1845:55;-1:-1:-1;1919:20:58;;-1:-1:-1;;;;;1951:30:58;;1948:50;;;1994:1;1991;1984:12;1948:50;2031:4;2023:6;2019:17;2007:29;;2083:3;2076:4;2067:6;2059;2055:19;2051:30;2048:39;2045:59;;;2100:1;2097;2090:12;2115:826;2214:6;2222;2230;2238;2246;2299:2;2287:9;2278:7;2274:23;2270:32;2267:52;;;2315:1;2312;2305:12;2267:52;2355:9;2342:23;-1:-1:-1;;;;;2380:6:58;2377:30;2374:50;;;2420:1;2417;2410:12;2374:50;2459:58;2509:7;2500:6;2489:9;2485:22;2459:58;:::i;:::-;2536:8;;-1:-1:-1;2433:84:58;-1:-1:-1;;2624:2:58;2609:18;;2596:32;-1:-1:-1;;;;;2640:32:58;;2637:52;;;2685:1;2682;2675:12;2637:52;2724:60;2776:7;2765:8;2754:9;2750:24;2724:60;:::i;:::-;2115:826;;;;-1:-1:-1;2803:8:58;2907:2;2892:18;2879:32;;2115:826;-1:-1:-1;;;;2115:826:58:o;3663:250::-;3748:1;3758:113;3772:6;3769:1;3766:13;3758:113;;;3848:11;;;3842:18;3829:11;;;3822:39;3794:2;3787:10;3758:113;;;-1:-1:-1;;3905:1:58;3887:16;;3880:27;3663:250::o;3918:394::-;4065:2;4054:9;4047:21;4028:4;4097:6;4091:13;4140:6;4135:2;4124:9;4120:18;4113:34;4156:79;4228:6;4223:2;4212:9;4208:18;4203:2;4195:6;4191:15;4156:79;:::i;:::-;4296:2;4275:15;-1:-1:-1;;4271:29:58;4256:45;;;;4303:2;4252:54;;3918:394;-1:-1:-1;;3918:394:58:o;4317:166::-;4387:5;4432:3;4423:6;4418:3;4414:16;4410:26;4407:46;;;4449:1;4446;4439:12;4407:46;-1:-1:-1;4471:6:58;4317:166;-1:-1:-1;4317:166:58:o;4488:377::-;4585:6;4638:2;4626:9;4617:7;4613:23;4609:32;4606:52;;;4654:1;4651;4644:12;4606:52;4694:9;4681:23;-1:-1:-1;;;;;4719:6:58;4716:30;4713:50;;;4759:1;4756;4749:12;4713:50;4782:77;4851:7;4842:6;4831:9;4827:22;4782:77;:::i;:::-;4772:87;4488:377;-1:-1:-1;;;;4488:377:58:o;4870:611::-;4985:6;4993;5001;5054:2;5042:9;5033:7;5029:23;5025:32;5022:52;;;5070:1;5067;5060:12;5022:52;5110:9;5097:23;-1:-1:-1;;;;;5135:6:58;5132:30;5129:50;;;5175:1;5172;5165:12;5129:50;5198:77;5267:7;5258:6;5247:9;5243:22;5198:77;:::i;:::-;5188:87;5344:2;5329:18;;5316:32;;-1:-1:-1;5445:2:58;5430:18;;;5417:32;;4870:611;-1:-1:-1;;;;4870:611:58:o;5486:173::-;5553:20;;-1:-1:-1;;;;;;5602:32:58;;5592:43;;5582:71;;5649:1;5646;5639:12;5582:71;5486:173;;;:::o;5664:298::-;5731:6;5739;5792:2;5780:9;5771:7;5767:23;5763:32;5760:52;;;5808:1;5805;5798:12;5760:52;5853:23;;;-1:-1:-1;5919:37:58;5952:2;5937:18;;5919:37;:::i;:::-;5909:47;;5664:298;;;;;:::o;5967:286::-;6026:6;6079:2;6067:9;6058:7;6054:23;6050:32;6047:52;;;6095:1;6092;6085:12;6047:52;6121:23;;-1:-1:-1;;;;;6173:31:58;;6163:42;;6153:70;;6219:1;6216;6209:12;6494:409;6564:6;6572;6625:2;6613:9;6604:7;6600:23;6596:32;6593:52;;;6641:1;6638;6631:12;6593:52;6681:9;6668:23;-1:-1:-1;;;;;6706:6:58;6703:30;6700:50;;;6746:1;6743;6736:12;6700:50;6785:58;6835:7;6826:6;6815:9;6811:22;6785:58;:::i;:::-;6862:8;;6759:84;;-1:-1:-1;6494:409:58;-1:-1:-1;;;;6494:409:58:o;6908:712::-;6998:6;7006;7014;7022;7075:2;7063:9;7054:7;7050:23;7046:32;7043:52;;;7091:1;7088;7081:12;7043:52;7131:9;7118:23;-1:-1:-1;;;;;7156:6:58;7153:30;7150:50;;;7196:1;7193;7186:12;7150:50;7235:58;7285:7;7276:6;7265:9;7261:22;7235:58;:::i;:::-;7312:8;;-1:-1:-1;7209:84:58;-1:-1:-1;;7400:2:58;7385:18;;7372:32;-1:-1:-1;;;;;7416:32:58;;7413:52;;;7461:1;7458;7451:12;7413:52;7500:60;7552:7;7541:8;7530:9;7526:24;7500:60;:::i;7969:127::-;8030:10;8025:3;8021:20;8018:1;8011:31;8061:4;8058:1;8051:15;8085:4;8082:1;8075:15;8101:168;8174:9;;;8205;;8222:15;;;8216:22;;8202:37;8192:71;;8243:18;;:::i;8626:127::-;8687:10;8682:3;8678:20;8675:1;8668:31;8718:4;8715:1;8708:15;8742:4;8739:1;8732:15;8758:184;8816:6;8869:2;8857:9;8848:7;8844:23;8840:32;8837:52;;;8885:1;8882;8875:12;8837:52;8908:28;8926:9;8908:28;:::i;8947:125::-;9012:9;;;9033:10;;;9030:36;;;9046:18;;:::i;9077:463::-;9344:13;;9326:32;;9418:4;9406:17;;;9400:24;-1:-1:-1;;;;;;9396:51:58;9374:20;;;9367:81;;;;9479:2;9464:18;;9457:34;;;;9522:2;9507:18;;9500:34;9313:3;9298:19;;9077:463::o;10620:354::-;10822:2;10804:21;;;10861:2;10841:18;;;10834:30;10900:32;10895:2;10880:18;;10873:60;10965:2;10950:18;;10620:354::o;10979:127::-;11040:10;11035:3;11031:20;11028:1;11021:31;11071:4;11068:1;11061:15;11095:4;11092:1;11085:15;11111:380;11190:1;11186:12;;;;11233;;;11254:61;;11308:4;11300:6;11296:17;11286:27;;11254:61;11361:2;11353:6;11350:14;11330:18;11327:38;11324:161;;11407:10;11402:3;11398:20;11395:1;11388:31;11442:4;11439:1;11432:15;11470:4;11467:1;11460:15;11621:517;11722:2;11717:3;11714:11;11711:421;;;11758:5;11755:1;11748:16;11802:4;11799:1;11789:18;11872:2;11860:10;11856:19;11853:1;11849:27;11843:4;11839:38;11908:4;11896:10;11893:20;11890:47;;;-1:-1:-1;11931:4:58;11890:47;11986:2;11981:3;11977:12;11974:1;11970:20;11964:4;11960:31;11950:41;;12041:81;12059:2;12052:5;12049:13;12041:81;;;12118:1;12104:16;;12085:1;12074:13;12041:81;;;12045:3;;11711:421;11621:517;;;:::o;12314:1202::-;-1:-1:-1;;;;;12431:3:58;12428:27;12425:53;;;12458:18;;:::i;:::-;12487:93;12576:3;12536:38;12568:4;12562:11;12536:38;:::i;:::-;12530:4;12487:93;:::i;:::-;12606:1;12631:2;12626:3;12623:11;12648:1;12643:615;;;;13302:1;13319:3;13316:93;;;-1:-1:-1;13375:19:58;;;13362:33;13316:93;-1:-1:-1;;12271:1:58;12267:11;;;12263:24;12259:29;12249:40;12295:1;12291:11;;;12246:57;13422:78;;12616:894;;12643:615;11568:1;11561:14;;;11605:4;11592:18;;-1:-1:-1;;12679:17:58;;;12779:9;12801:229;12815:7;12812:1;12809:14;12801:229;;;12904:19;;;12891:33;12876:49;;13011:4;12996:20;;;;12964:1;12952:14;;;;12831:12;12801:229;;;12805:3;13058;13049:7;13046:16;13043:159;;;13182:1;13178:6;13172:3;13166;13163:1;13159:11;13155:21;13151:34;13147:39;13134:9;13129:3;13125:19;13112:33;13108:79;13100:6;13093:95;13043:159;;;13245:1;13239:3;13236:1;13232:11;13228:19;13222:4;13215:33;12616:894;;12314:1202;;;:::o;13826:266::-;13914:6;13909:3;13902:19;13966:6;13959:5;13952:4;13947:3;13943:14;13930:43;-1:-1:-1;14018:1:58;13993:16;;;14011:4;13989:27;;;13982:38;;;;14074:2;14053:15;;;-1:-1:-1;;14049:29:58;14040:39;;;14036:50;;13826:266::o;14097:431::-;14310:2;14299:9;14292:21;14273:4;14336:61;14393:2;14382:9;14378:18;14370:6;14362;14336:61;:::i;:::-;14445:9;14437:6;14433:22;14428:2;14417:9;14413:18;14406:50;14473:49;14515:6;14507;14499;14473:49;:::i;:::-;14465:57;14097:431;-1:-1:-1;;;;;;;14097:431:58:o;14533:521::-;14610:4;14616:6;14676:11;14663:25;14770:2;14766:7;14755:8;14739:14;14735:29;14731:43;14711:18;14707:68;14697:96;;14789:1;14786;14779:12;14697:96;14816:33;;14868:20;;;-1:-1:-1;;;;;;14900:30:58;;14897:50;;;14943:1;14940;14933:12;14897:50;14976:4;14964:17;;-1:-1:-1;15007:14:58;15003:27;;;14993:38;;14990:58;;;15044:1;15041;15034:12;15059:128;15126:9;;;15147:11;;;15144:37;;;15161:18;;:::i;17902:135::-;17941:3;17962:17;;;17959:43;;17982:18;;:::i;:::-;-1:-1:-1;18029:1:58;18018:13;;17902:135::o;20141:244::-;20298:2;20287:9;20280:21;20261:4;20318:61;20375:2;20364:9;20360:18;20352:6;20344;20318:61;:::i;20390:281::-;20448:6;20501:2;20489:9;20480:7;20476:23;20472:32;20469:52;;;20517:1;20514;20507:12;20469:52;20543:23;;-1:-1:-1;;;;;;20595:27:58;;20585:38;;20575:66;;20637:1;20634;20627:12;21795:459;22036:6;22025:9;22018:25;22079:6;22074:2;22063:9;22059:18;22052:34;22122:3;22117:2;22106:9;22102:18;22095:31;21999:4;22143:62;22200:3;22189:9;22185:19;22177:6;22169;22143:62;:::i;:::-;22135:70;;22241:6;22236:2;22225:9;22221:18;22214:34;21795:459;;;;;;;;:::o;22259:277::-;22326:6;22379:2;22367:9;22358:7;22354:23;22350:32;22347:52;;;22395:1;22392;22385:12;22347:52;22427:9;22421:16;22480:5;22473:13;22466:21;22459:5;22456:32;22446:60;;22502:1;22499;22492:12;22897:398;23099:2;23081:21;;;23138:2;23118:18;;;23111:30;23177:34;23172:2;23157:18;;23150:62;-1:-1:-1;;;23243:2:58;23228:18;;23221:32;23285:3;23270:19;;22897:398::o;26146:706::-;-1:-1:-1;;;;;;26403:33:58;;26391:46;;26460:13;;26373:3;;26482:74;26460:13;26545:1;26536:11;;26529:4;26517:17;;26482:74;:::i;:::-;26616:13;;26575:16;;;;26638:75;26616:13;26700:1;26692:10;;26685:4;26673:17;;26638:75;:::i;:::-;-1:-1:-1;;;;;;26783:33:58;;;;26739:17;;26758:1;26735:25;;26769:48;;;;-1:-1:-1;;26833:13:58;;;26146:706;-1:-1:-1;;;26146:706:58:o;26857:412::-;26975:12;;27023:4;27012:16;;27006:23;-1:-1:-1;;27047:40:58;;;26975:12;27110:2;27099:14;;27096:167;;;27225:26;27221:31;27190:26;27186:31;27176:6;27172:2;27168:15;27165:1;27161:23;27157:61;27153:2;27149:70;27145:108;27136:117;;27096:167;;;26857:412;;;:::o;27274:853::-;-1:-1:-1;;;;;;27633:33:58;;27621:46;;-1:-1:-1;;;;;;27696:28:58;;27692:1;27683:11;;27676:49;27768:6;27760;27756:1;27747:11;;27734:41;27603:3;27803:6;27798:3;27794:16;27837:1;27833:2;27829:10;27859:1;27855:2;27848:13;27895:6;27887;27883:2;27870:32;-1:-1:-1;27964:1:58;27925:15;;;27942:1;27921:23;27953:13;;;28000:6;27992;27921:23;27975:32;-1:-1:-1;;;;;;28061:33:58;;;;28026:15;;;;28050:45;;;-1:-1:-1;28119:1:58;28111:10;;27274:853;-1:-1:-1;;;;;;;;27274:853:58:o;28132:148::-;28220:4;28199:12;;;28213;;;28195:31;;28238:13;;28235:39;;;28254:18;;:::i","linkReferences":{}},"methodIdentifiers":{"LIGHT_CLIENT()":"e613ae00","SYSTEM_CALLER()":"d761753e","acceptOwnership()":"79ba5097","batchWithdraw(bytes32[],bytes4[])":"19854623","declareWithdrawFiller((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256),uint256,uint256)":"74ab4a83","deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":"dd95c7c6","depositAmount()":"419759f5","getWithdrawalCount()":"781952a8","initialize(bytes,bytes,uint256)":"41260137","initialized()":"158ef93e","isOperatorMalicious(uint256)":"bafa9eb2","markMaliciousOperator((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":"5e3cc740","operator()":"570ca735","owner()":"8da5cb5b","pendingOwner()":"e30c3978","renounceOwnership()":"715018a6","scriptPrefix()":"a41c5cf3","scriptSuffix()":"87f8bf56","setDepositScript(bytes,bytes)":"f8e655d2","setOperator(address)":"b3ab15fb","setSlashOrTakeScript(bytes)":"f119a9bd","slashOrTakeScript()":"5d3e3176","transferOwnership(address)":"f2fde38b","txIdToDepositId(bytes32)":"11e53a01","withdraw(bytes32,bytes4)":"8786dba7","withdrawFillers(uint256)":"c045577b","withdrawalUTXOs(uint256)":"471ba1e3"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"wtxId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"txId\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositId\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"scriptPrefix\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"scriptSuffix\",\"type\":\"bytes\"}],\"name\":\"DepositScriptUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"operatorId\",\"type\":\"uint256\"}],\"name\":\"MaliciousOperatorMarked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOperator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOperator\",\"type\":\"address\"}],\"name\":\"OperatorUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"slashOrTakeScript\",\"type\":\"bytes\"}],\"name\":\"SlashOrTakeScriptUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"withdrawFillerId\",\"type\":\"uint256\"}],\"name\":\"WithdrawFillerDeclared\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"txId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"outputId\",\"type\":\"bytes4\"}],\"indexed\":false,\"internalType\":\"struct Bridge.UTXO\",\"name\":\"utxo\",\"type\":\"tuple\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LIGHT_CLIENT\",\"outputs\":[{\"internalType\":\"contract BitcoinLightClient\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CALLER\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"txIds\",\"type\":\"bytes32[]\"},{\"internalType\":\"bytes4[]\",\"name\":\"outputIds\",\"type\":\"bytes4[]\"}],\"name\":\"batchWithdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes2\",\"name\":\"flag\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"vin\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"vout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"witness\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"intermediate_nodes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"block_height\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.TransactionParams\",\"name\":\"withdrawTp\",\"type\":\"tuple\"},{\"internalType\":\"uint256\",\"name\":\"inputIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"withdrawId\",\"type\":\"uint256\"}],\"name\":\"declareWithdrawFiller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes2\",\"name\":\"flag\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"vin\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"vout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"witness\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"intermediate_nodes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"block_height\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.TransactionParams\",\"name\":\"moveTp\",\"type\":\"tuple\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getWithdrawalCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_scriptPrefix\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_depositAmount\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialized\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"isOperatorMalicious\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes4\",\"name\":\"version\",\"type\":\"bytes4\"},{\"internalType\":\"bytes2\",\"name\":\"flag\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"vin\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"vout\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"witness\",\"type\":\"bytes\"},{\"internalType\":\"bytes4\",\"name\":\"locktime\",\"type\":\"bytes4\"},{\"internalType\":\"bytes\",\"name\":\"intermediate_nodes\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"block_height\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"internalType\":\"struct Bridge.TransactionParams\",\"name\":\"slashOrTakeTp\",\"type\":\"tuple\"}],\"name\":\"markMaliciousOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operator\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scriptPrefix\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"scriptSuffix\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_scriptPrefix\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_scriptSuffix\",\"type\":\"bytes\"}],\"name\":\"setDepositScript\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_operator\",\"type\":\"address\"}],\"name\":\"setOperator\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_slashOrTakeScript\",\"type\":\"bytes\"}],\"name\":\"setSlashOrTakeScript\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slashOrTakeScript\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"txIdToDepositId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"txId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"outputId\",\"type\":\"bytes4\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawFillers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdrawalUTXOs\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"txId\",\"type\":\"bytes32\"},{\"internalType\":\"bytes4\",\"name\":\"outputId\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Citrea\",\"errors\":{\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"}},\"kind\":\"dev\",\"methods\":{\"acceptOwnership()\":{\"details\":\"The new owner accepts the ownership transfer.\"},\"batchWithdraw(bytes32[],bytes4[])\":{\"details\":\"Takes in multiple Bitcoin addresses as recipient addresses should be unique\",\"params\":{\"outputIds\":\"the outputIds of the outputs in the withdrawal transactions\",\"txIds\":\"the txIds of the withdrawal transactions on Bitcoin\"}},\"declareWithdrawFiller((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256),uint256,uint256)\":{\"params\":{\"inputIndex\":\"Index of the input that is the withdrawal UTXO (withdrawing user's ANYONECANPAY)\",\"withdrawId\":\"ID of the withdrawal action\",\"withdrawTp\":\"Transaction parameters of the withdrawal transaction on Bitcoin\"}},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"params\":{\"moveTp\":\"Transaction parameters of the move transaction on Bitcoin\"}},\"getWithdrawalCount()\":{\"returns\":{\"_0\":\"The count of withdrawals happened so far\"}},\"initialize(bytes,bytes,uint256)\":{\"params\":{\"_depositAmount\":\"The CBTC amount that can be deposited and withdrawn\",\"_scriptPrefix\":\"First part of the deposit script expected in the witness field for all L1 deposits \",\"_scriptSuffix\":\"The suffix of the deposit script that follows the receiver address\"}},\"markMaliciousOperator((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"params\":{\"slashOrTakeTp\":\"Transaction parameters of the slashOrTake transaction on Bitcoin\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"pendingOwner()\":{\"details\":\"Returns the address of the pending owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setDepositScript(bytes,bytes)\":{\"details\":\"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver\",\"params\":{\"_scriptPrefix\":\"The new deposit script prefix\",\"_scriptSuffix\":\"The part of the deposit script that succeeds the receiver address\"}},\"setOperator(address)\":{\"params\":{\"_operator\":\"Address of the privileged operator\"}},\"setSlashOrTakeScript(bytes)\":{\"params\":{\"_slashOrTakeScript\":\"The slashOrTake script\"}},\"transferOwnership(address)\":{\"details\":\"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner.\"},\"withdraw(bytes32,bytes4)\":{\"params\":{\"outputId\":\"The outputId of the output in the withdrawal transaction\",\"txId\":\"The txId of the withdrawal transaction on Bitcoin\"}}},\"title\":\"Bridge contract for the Citrea end of Citrea <> Bitcoin bridge\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"batchWithdraw(bytes32[],bytes4[])\":{\"notice\":\"Batch version of `withdraw` that can accept multiple cBTC\"},\"declareWithdrawFiller((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256),uint256,uint256)\":{\"notice\":\"Stores the filler of a certain withdrawal after the a user's withdrawal is covered on Bitcoin side\"},\"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"notice\":\"Checks if the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount to the receiver\"},\"initialize(bytes,bytes,uint256)\":{\"notice\":\"Initializes the bridge contract and sets the deposit script\"},\"markMaliciousOperator((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))\":{\"notice\":\"Marks an operator as malicious if the operator burned their slashOrTake transaction as if they filled a withdrawal even though they didn't fill a withdrawal\"},\"setDepositScript(bytes,bytes)\":{\"notice\":\"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness\"},\"setOperator(address)\":{\"notice\":\"Sets the operator address that can process user deposits\"},\"setSlashOrTakeScript(bytes)\":{\"notice\":\"Sets the slashOrTake script that is expected in the witness field of the slashOrTake transaction on Bitcoin\"},\"withdraw(bytes32,bytes4)\":{\"notice\":\"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator \"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"appendCBOR\":false,\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":bitcoin-spv/=lib/bitcoin-spv/\",\":ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin/=lib/openzeppelin-contracts/contracts/\"]},\"sources\":{\"lib/WitnessUtils.sol\":{\"keccak256\":\"0x0b0d59b4e73d6f5b4bbf1032f72bb15c2f1548c2ee319b80ae9e4c22576a70af\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://8499a5fc520941cb1b970637850cabfbc2d5a51abed824886063420c686b57de\",\"dweb:/ipfs/QmaLYLJ36PyFAaP3MgvFWW3knDsSUtVfCfs7Lp7oYFPZ1w\"]},\"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol\":{\"keccak256\":\"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc\",\"urls\":[\"bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667\",\"dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH\"]},\"lib/bitcoin-spv/solidity/contracts/BytesLib.sol\":{\"keccak256\":\"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1\",\"urls\":[\"bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6\",\"dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT\"]},\"lib/bitcoin-spv/solidity/contracts/SafeMath.sol\":{\"keccak256\":\"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3\",\"urls\":[\"bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b\",\"dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe\"]},\"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol\":{\"keccak256\":\"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b\",\"urls\":[\"bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a\",\"dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol\":{\"keccak256\":\"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7\",\"dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9\",\"dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV\"]},\"src/BitcoinLightClient.sol\":{\"keccak256\":\"0xddfe39aa55912ca37e57d5bc3a5ddea5b18c12980e03c16d0149e0ed8a49fca1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c0f5bd6cbcdaeb577bdad15a63f96c21ecadc32d171de0e9d0c205635ff292e\",\"dweb:/ipfs/QmYhvEgXLoHque74UvHVGkARMptehwX5ekUEUcaZJuo3H2\"]},\"src/Bridge.sol\":{\"keccak256\":\"0xb9c48d4e58cab14b0cbb4932234c1e84143ca3bdf67ba1b985af4b26de8e845e\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://b25ff320f3e6becded6328f05027344197ead447f2ea5bcb060e795ae5999069\",\"dweb:/ipfs/QmaK736wv3SRmHkEJowc1jy9vhVkUeGtqG5oUugCf3dHPb\"]},\"src/interfaces/IBitcoinLightClient.sol\":{\"keccak256\":\"0xd299a79b3aec00e07839b7dcbed21d3d7d50e26c0149e730170f7761202552ca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d8cfcbc8fe666020b8a707d062e296dcf159737645a8c677975bad71b456b4ad\",\"dweb:/ipfs/QmSuDCXJFYpRpTXdiWVVwvm69yzmTZj7zMLmRPNazRR4dj\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"bytes32","name":"wtxId","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"txId","type":"bytes32","indexed":false},{"internalType":"address","name":"recipient","type":"address","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false},{"internalType":"uint256","name":"depositId","type":"uint256","indexed":false}],"type":"event","name":"Deposit","anonymous":false},{"inputs":[{"internalType":"bytes","name":"scriptPrefix","type":"bytes","indexed":false},{"internalType":"bytes","name":"scriptSuffix","type":"bytes","indexed":false}],"type":"event","name":"DepositScriptUpdate","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"uint256","name":"operatorId","type":"uint256","indexed":false}],"type":"event","name":"MaliciousOperatorMarked","anonymous":false},{"inputs":[{"internalType":"address","name":"oldOperator","type":"address","indexed":false},{"internalType":"address","name":"newOperator","type":"address","indexed":false}],"type":"event","name":"OperatorUpdated","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferStarted","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"bytes","name":"slashOrTakeScript","type":"bytes","indexed":false}],"type":"event","name":"SlashOrTakeScriptUpdate","anonymous":false},{"inputs":[{"internalType":"uint256","name":"withdrawId","type":"uint256","indexed":false},{"internalType":"uint256","name":"withdrawFillerId","type":"uint256","indexed":false}],"type":"event","name":"WithdrawFillerDeclared","anonymous":false},{"inputs":[{"internalType":"struct Bridge.UTXO","name":"utxo","type":"tuple","components":[{"internalType":"bytes32","name":"txId","type":"bytes32"},{"internalType":"bytes4","name":"outputId","type":"bytes4"}],"indexed":false},{"internalType":"uint256","name":"index","type":"uint256","indexed":false},{"internalType":"uint256","name":"timestamp","type":"uint256","indexed":false}],"type":"event","name":"Withdrawal","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"LIGHT_CLIENT","outputs":[{"internalType":"contract BitcoinLightClient","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"SYSTEM_CALLER","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptOwnership"},{"inputs":[{"internalType":"bytes32[]","name":"txIds","type":"bytes32[]"},{"internalType":"bytes4[]","name":"outputIds","type":"bytes4[]"}],"stateMutability":"payable","type":"function","name":"batchWithdraw"},{"inputs":[{"internalType":"struct Bridge.TransactionParams","name":"withdrawTp","type":"tuple","components":[{"internalType":"bytes4","name":"version","type":"bytes4"},{"internalType":"bytes2","name":"flag","type":"bytes2"},{"internalType":"bytes","name":"vin","type":"bytes"},{"internalType":"bytes","name":"vout","type":"bytes"},{"internalType":"bytes","name":"witness","type":"bytes"},{"internalType":"bytes4","name":"locktime","type":"bytes4"},{"internalType":"bytes","name":"intermediate_nodes","type":"bytes"},{"internalType":"uint256","name":"block_height","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]},{"internalType":"uint256","name":"inputIndex","type":"uint256"},{"internalType":"uint256","name":"withdrawId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"declareWithdrawFiller"},{"inputs":[{"internalType":"struct Bridge.TransactionParams","name":"moveTp","type":"tuple","components":[{"internalType":"bytes4","name":"version","type":"bytes4"},{"internalType":"bytes2","name":"flag","type":"bytes2"},{"internalType":"bytes","name":"vin","type":"bytes"},{"internalType":"bytes","name":"vout","type":"bytes"},{"internalType":"bytes","name":"witness","type":"bytes"},{"internalType":"bytes4","name":"locktime","type":"bytes4"},{"internalType":"bytes","name":"intermediate_nodes","type":"bytes"},{"internalType":"uint256","name":"block_height","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"depositAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getWithdrawalCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes","name":"_scriptPrefix","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"},{"internalType":"uint256","name":"_depositAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"initialized","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"isOperatorMalicious","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct Bridge.TransactionParams","name":"slashOrTakeTp","type":"tuple","components":[{"internalType":"bytes4","name":"version","type":"bytes4"},{"internalType":"bytes2","name":"flag","type":"bytes2"},{"internalType":"bytes","name":"vin","type":"bytes"},{"internalType":"bytes","name":"vout","type":"bytes"},{"internalType":"bytes","name":"witness","type":"bytes"},{"internalType":"bytes4","name":"locktime","type":"bytes4"},{"internalType":"bytes","name":"intermediate_nodes","type":"bytes"},{"internalType":"uint256","name":"block_height","type":"uint256"},{"internalType":"uint256","name":"index","type":"uint256"}]}],"stateMutability":"nonpayable","type":"function","name":"markMaliciousOperator"},{"inputs":[],"stateMutability":"view","type":"function","name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[],"stateMutability":"view","type":"function","name":"scriptPrefix","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"scriptSuffix","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"bytes","name":"_scriptPrefix","type":"bytes"},{"internalType":"bytes","name":"_scriptSuffix","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setDepositScript"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOperator"},{"inputs":[{"internalType":"bytes","name":"_slashOrTakeScript","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"setSlashOrTakeScript"},{"inputs":[],"stateMutability":"view","type":"function","name":"slashOrTakeScript","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"txIdToDepositId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"txId","type":"bytes32"},{"internalType":"bytes4","name":"outputId","type":"bytes4"}],"stateMutability":"payable","type":"function","name":"withdraw"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawFillers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawalUTXOs","outputs":[{"internalType":"bytes32","name":"txId","type":"bytes32"},{"internalType":"bytes4","name":"outputId","type":"bytes4"}]}],"devdoc":{"kind":"dev","methods":{"acceptOwnership()":{"details":"The new owner accepts the ownership transfer."},"batchWithdraw(bytes32[],bytes4[])":{"details":"Takes in multiple Bitcoin addresses as recipient addresses should be unique","params":{"outputIds":"the outputIds of the outputs in the withdrawal transactions","txIds":"the txIds of the withdrawal transactions on Bitcoin"}},"declareWithdrawFiller((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256),uint256,uint256)":{"params":{"inputIndex":"Index of the input that is the withdrawal UTXO (withdrawing user's ANYONECANPAY)","withdrawId":"ID of the withdrawal action","withdrawTp":"Transaction parameters of the withdrawal transaction on Bitcoin"}},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"params":{"moveTp":"Transaction parameters of the move transaction on Bitcoin"}},"getWithdrawalCount()":{"returns":{"_0":"The count of withdrawals happened so far"}},"initialize(bytes,bytes,uint256)":{"params":{"_depositAmount":"The CBTC amount that can be deposited and withdrawn","_scriptPrefix":"First part of the deposit script expected in the witness field for all L1 deposits ","_scriptSuffix":"The suffix of the deposit script that follows the receiver address"}},"markMaliciousOperator((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"params":{"slashOrTakeTp":"Transaction parameters of the slashOrTake transaction on Bitcoin"}},"owner()":{"details":"Returns the address of the current owner."},"pendingOwner()":{"details":"Returns the address of the pending owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setDepositScript(bytes,bytes)":{"details":"Deposit script contains a fixed script that checks signatures of verifiers and pushes EVM address of the receiver","params":{"_scriptPrefix":"The new deposit script prefix","_scriptSuffix":"The part of the deposit script that succeeds the receiver address"}},"setOperator(address)":{"params":{"_operator":"Address of the privileged operator"}},"setSlashOrTakeScript(bytes)":{"params":{"_slashOrTakeScript":"The slashOrTake script"}},"transferOwnership(address)":{"details":"Starts the ownership transfer of the contract to a new account. Replaces the pending transfer if there is one. Can only be called by the current owner."},"withdraw(bytes32,bytes4)":{"params":{"outputId":"The outputId of the output in the withdrawal transaction","txId":"The txId of the withdrawal transaction on Bitcoin"}}},"version":1},"userdoc":{"kind":"user","methods":{"batchWithdraw(bytes32[],bytes4[])":{"notice":"Batch version of `withdraw` that can accept multiple cBTC"},"declareWithdrawFiller((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256),uint256,uint256)":{"notice":"Stores the filler of a certain withdrawal after the a user's withdrawal is covered on Bitcoin side"},"deposit((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"notice":"Checks if the deposit amount is sent to the bridge multisig on Bitcoin, and if so, sends the deposit amount to the receiver"},"initialize(bytes,bytes,uint256)":{"notice":"Initializes the bridge contract and sets the deposit script"},"markMaliciousOperator((bytes4,bytes2,bytes,bytes,bytes,bytes4,bytes,uint256,uint256))":{"notice":"Marks an operator as malicious if the operator burned their slashOrTake transaction as if they filled a withdrawal even though they didn't fill a withdrawal"},"setDepositScript(bytes,bytes)":{"notice":"Sets the expected deposit script of the deposit transaction on Bitcoin, contained in the witness"},"setOperator(address)":{"notice":"Sets the operator address that can process user deposits"},"setSlashOrTakeScript(bytes)":{"notice":"Sets the slashOrTake script that is expected in the witness field of the slashOrTake transaction on Bitcoin"},"withdraw(bytes32,bytes4)":{"notice":"Accepts 1 cBTC from the sender and inserts this withdrawal request of 1 BTC on Bitcoin into the withdrawals array so that later on can be processed by the operator "}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","bitcoin-spv/=lib/bitcoin-spv/","ds-test/=lib/openzeppelin-contracts-upgradeable/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin/=lib/openzeppelin-contracts/contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"none","appendCBOR":false},"compilationTarget":{"src/Bridge.sol":"Bridge"},"evmVersion":"paris","libraries":{}},"sources":{"lib/WitnessUtils.sol":{"keccak256":"0x0b0d59b4e73d6f5b4bbf1032f72bb15c2f1548c2ee319b80ae9e4c22576a70af","urls":["bzz-raw://8499a5fc520941cb1b970637850cabfbc2d5a51abed824886063420c686b57de","dweb:/ipfs/QmaLYLJ36PyFAaP3MgvFWW3knDsSUtVfCfs7Lp7oYFPZ1w"],"license":"LGPL-3.0-or-later"},"lib/bitcoin-spv/solidity/contracts/BTCUtils.sol":{"keccak256":"0x439eaa97e9239705f3d31e8d39dccbad32311f1f119e295d53c65e0ae3c5a5fc","urls":["bzz-raw://976a361a89c21afc44b5e0a552271d9288b12cf34a9925c25f3c6975ece4e667","dweb:/ipfs/QmNTb4eJyxV5iZj8RJGFBGSKXWsuvoMYqLLBgk16dhWePH"],"license":null},"lib/bitcoin-spv/solidity/contracts/BytesLib.sol":{"keccak256":"0x43e0f3b3b23c861bd031588bf410dfdd02e2af17941a89aa38d70e534e0380d1","urls":["bzz-raw://76011d699a8b229dbfdc698b3ece658daad9d96778e86d679aa576bc966209d6","dweb:/ipfs/QmRZEWAeRQtsTUvfzEd1jb2wAqpTNR5KAme92gBRn4SYiT"],"license":null},"lib/bitcoin-spv/solidity/contracts/SafeMath.sol":{"keccak256":"0x35930d982394c7ffde439b82e5e696c5b21a6f09699d44861dfe409ef64084a3","urls":["bzz-raw://090e9d78755d4916fa2f5f5d8f9fd2fc59bfc5a25a5e91636a92c4c07aee9c6b","dweb:/ipfs/QmXfz4TPDvgnuYz9eS5AL87GfCLxHQZJV1Y8ieJU9M8yTe"],"license":null},"lib/bitcoin-spv/solidity/contracts/ValidateSPV.sol":{"keccak256":"0xce3febbf3ad3a7ff8a8effd0c7ccaf7ccfa2719578b537d49ea196f0bae8062b","urls":["bzz-raw://5f18942483bf20507ae6c0abb5421df96b1aebb7af15f541bda8470f6277312a","dweb:/ipfs/QmPzEpA8w5k6pVFadm3UCLqNdxFAjPwP9Lpi5HMQsQg52J"],"license":null},"lib/openzeppelin-contracts-upgradeable/contracts/access/Ownable2StepUpgradeable.sol":{"keccak256":"0xbca4a4f66d98028293dba695851d1b20d3e0ba2fff7453fb241f192fa3fc6b6f","urls":["bzz-raw://013b3cfd9d1e34dad409c3b9a340860e8651e61cda509de33599fb5102f62fe7","dweb:/ipfs/QmTVjDKofM9Nst8w8LAA3HHgi1eCnGYBpFb7Nbat71e2xz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xdbef5f0c787055227243a7318ef74c8a5a1108ca3a07f2b3a00ef67769e1e397","urls":["bzz-raw://08e39f23d5b4692f9a40803e53a8156b72b4c1f9902a88cd65ba964db103dab9","dweb:/ipfs/QmPKn6EYDgpga7KtpkA8wV2yJCYGMtc9K4LkJfhKX2RVSV"],"license":"MIT"},"src/BitcoinLightClient.sol":{"keccak256":"0xddfe39aa55912ca37e57d5bc3a5ddea5b18c12980e03c16d0149e0ed8a49fca1","urls":["bzz-raw://3c0f5bd6cbcdaeb577bdad15a63f96c21ecadc32d171de0e9d0c205635ff292e","dweb:/ipfs/QmYhvEgXLoHque74UvHVGkARMptehwX5ekUEUcaZJuo3H2"],"license":"MIT"},"src/Bridge.sol":{"keccak256":"0xb9c48d4e58cab14b0cbb4932234c1e84143ca3bdf67ba1b985af4b26de8e845e","urls":["bzz-raw://b25ff320f3e6becded6328f05027344197ead447f2ea5bcb060e795ae5999069","dweb:/ipfs/QmaK736wv3SRmHkEJowc1jy9vhVkUeGtqG5oUugCf3dHPb"],"license":"UNLICENSED"},"src/interfaces/IBitcoinLightClient.sol":{"keccak256":"0xd299a79b3aec00e07839b7dcbed21d3d7d50e26c0149e730170f7761202552ca","urls":["bzz-raw://d8cfcbc8fe666020b8a707d062e296dcf159737645a8c677975bad71b456b4ad","dweb:/ipfs/QmSuDCXJFYpRpTXdiWVVwvm69yzmTZj7zMLmRPNazRR4dj"],"license":"MIT"}},"version":1},"id":46} \ No newline at end of file diff --git a/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol b/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol index 71ac95a47..26b7d3b9f 100644 --- a/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol +++ b/crates/evm/src/evm/system_contracts/src/BitcoinLightClient.sol @@ -43,7 +43,7 @@ contract BitcoinLightClient is IBitcoinLightClient { blockHashes[_blockNumber] = _blockHash; blockNumber = _blockNumber + 1; witnessRoots[_blockHash] = _witnessRoot; - emit BlockInfoAdded(blockNumber, _blockHash, _witnessRoot); + emit BlockInfoAdded(_blockNumber, _blockHash, _witnessRoot); } /// @param _blockNumber Number of the block to get the hash for diff --git a/crates/evm/src/tests/sys_tx_tests.rs b/crates/evm/src/tests/sys_tx_tests.rs index 55da804f7..57cfc2e6c 100644 --- a/crates/evm/src/tests/sys_tx_tests.rs +++ b/crates/evm/src/tests/sys_tx_tests.rs @@ -57,18 +57,18 @@ fn test_sys_bitcoin_light_client() { receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 131471, + cumulative_gas_used: 131371, logs: vec![ Log { address: BitcoinLightClient::address(), data: LogData::new( vec![b256!("32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f")], - Bytes::from_static(&hex!("000000000000000000000000000000000000000000000000000000000000000201010101010101010101010101010101010101010101010101010101010101010202020202020202020202020202020202020202020202020202020202020202")), + Bytes::from_static(&hex!("000000000000000000000000000000000000000000000000000000000000000101010101010101010101010101010101010101010101010101010101010101010202020202020202020202020202020202020202020202020202020202020202")), ).unwrap(), } ] }, - gas_used: 80720, + gas_used: 80620, log_index_start: 0, l1_diff_size: 561, }, @@ -76,7 +76,7 @@ fn test_sys_bitcoin_light_client() { receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 300621, + cumulative_gas_used: 300521, logs: vec![ Log { address: Bridge::address(), @@ -215,18 +215,18 @@ fn test_sys_bitcoin_light_client() { receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 80720, + cumulative_gas_used: 80620, logs: vec![ Log { address: BitcoinLightClient::address(), data: LogData::new( vec![b256!("32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f")], - Bytes::from_static(&hex!("000000000000000000000000000000000000000000000000000000000000000302020202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030303030303030303030303030303030303")), + Bytes::from_static(&hex!("000000000000000000000000000000000000000000000000000000000000000202020202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030303030303030303030303030303030303")), ).unwrap(), } ] }, - gas_used: 80720, + gas_used: 80620, log_index_start: 0, l1_diff_size: 561, }, @@ -234,7 +234,7 @@ fn test_sys_bitcoin_light_client() { receipt: reth_primitives::Receipt { tx_type: reth_primitives::TxType::Eip1559, success: true, - cumulative_gas_used: 194955, + cumulative_gas_used: 194855, logs: vec![] }, gas_used: 114235, @@ -364,16 +364,16 @@ fn test_sys_tx_gas_usage_effect_on_block_gas_limit() { ); let sys_tx_gas_usage = evm.get_pending_txs_cumulative_gas_used(&mut working_set); - assert_eq!(sys_tx_gas_usage, 80720); + assert_eq!(sys_tx_gas_usage, 80620); let mut rlp_transactions = Vec::new(); // Check: Given now we also push bridge contract, is the following calculation correct? - // the amount of gas left is 30_000_000 - 80720 = 29_919_280 + // the amount of gas left is 30_000_000 - 80620 = 29_919_380 // send barely enough gas to reach the limit // one publish event message is 26388 gas - // 29919280 / 26388 = 1133.82 + // 29919380 / 26388 = 1133.82 // so there cannot be more than 1133 messages for i in 0..11350 { rlp_transactions.push(publish_event_message( @@ -828,7 +828,7 @@ fn config_push_contracts(config: &mut EvmConfig) { config.data.push(AccountData::new( address!("3200000000000000000000000000000000000001"), U256::ZERO, - Bytes::from_static(&hex!("608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056")), + Bytes::from_static(&hex!("608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056")), 0, HashMap::new() )); diff --git a/resources/genesis/bitcoin-regtest/evm.json b/resources/genesis/bitcoin-regtest/evm.json index 7e6e7d354..4e4670b88 100644 --- a/resources/genesis/bitcoin-regtest/evm.json +++ b/resources/genesis/bitcoin-regtest/evm.json @@ -71,7 +71,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056" + "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056" }, { "address": "0x3200000000000000000000000000000000000002", diff --git a/resources/genesis/mock-dockerized/evm.json b/resources/genesis/mock-dockerized/evm.json index 7e6e7d354..4e4670b88 100644 --- a/resources/genesis/mock-dockerized/evm.json +++ b/resources/genesis/mock-dockerized/evm.json @@ -71,7 +71,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056" + "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056" }, { "address": "0x3200000000000000000000000000000000000002", diff --git a/resources/genesis/mock/evm.json b/resources/genesis/mock/evm.json index 7e6e7d354..4e4670b88 100644 --- a/resources/genesis/mock/evm.json +++ b/resources/genesis/mock/evm.json @@ -71,7 +71,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056" + "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056" }, { "address": "0x3200000000000000000000000000000000000002", diff --git a/resources/test-data/demo-tests/bitcoin-regtest/evm.json b/resources/test-data/demo-tests/bitcoin-regtest/evm.json index 7e6e7d354..4e4670b88 100644 --- a/resources/test-data/demo-tests/bitcoin-regtest/evm.json +++ b/resources/test-data/demo-tests/bitcoin-regtest/evm.json @@ -71,7 +71,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056" + "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056" }, { "address": "0x3200000000000000000000000000000000000002", diff --git a/resources/test-data/demo-tests/mock/evm.json b/resources/test-data/demo-tests/mock/evm.json index 7e6e7d354..4e4670b88 100644 --- a/resources/test-data/demo-tests/mock/evm.json +++ b/resources/test-data/demo-tests/mock/evm.json @@ -71,7 +71,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056" + "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056" }, { "address": "0x3200000000000000000000000000000000000002", diff --git a/resources/test-data/integration-tests-low-block-gas-limit/evm.json b/resources/test-data/integration-tests-low-block-gas-limit/evm.json index 091d186f5..3dc77fbcb 100644 --- a/resources/test-data/integration-tests-low-block-gas-limit/evm.json +++ b/resources/test-data/integration-tests-low-block-gas-limit/evm.json @@ -71,7 +71,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056" + "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056" }, { "address": "0x3200000000000000000000000000000000000002", diff --git a/resources/test-data/integration-tests-low-max-l2-blocks-per-l1/evm.json b/resources/test-data/integration-tests-low-max-l2-blocks-per-l1/evm.json index 7e6e7d354..4e4670b88 100644 --- a/resources/test-data/integration-tests-low-max-l2-blocks-per-l1/evm.json +++ b/resources/test-data/integration-tests-low-max-l2-blocks-per-l1/evm.json @@ -71,7 +71,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056" + "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056" }, { "address": "0x3200000000000000000000000000000000000002", diff --git a/resources/test-data/integration-tests/evm.json b/resources/test-data/integration-tests/evm.json index 7e6e7d354..4e4670b88 100644 --- a/resources/test-data/integration-tests/evm.json +++ b/resources/test-data/integration-tests/evm.json @@ -71,7 +71,7 @@ { "address": "0x3200000000000000000000000000000000000001", "balance": "0x0", - "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610599565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b2565b610208565b005b6100f4610104366004610599565b610331565b6100ce610117366004610599565b60016020526000908152604090205481565b61013c61013736600461061d565b6103df565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610599565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610599565b60026020526000908152604090205481565b61013c6101b036600461061d565b610405565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610599565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610678565b6000908155838152600260209081526040808320859055915482519081529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103945760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103da5760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fb9086868686610410565b9695505050505050565b60006103fb86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610463918891849190899089908190840183828082843760009201919091525089925061046e915050565b979650505050505050565b6000838514801561047d575081155b801561048857508251155b15610495575060016104a4565b6104a1858486856104ac565b90505b949350505050565b6000602084516104bc9190610699565b156104c9575060006104a4565b83516000036104da575060006104a4565b818560005b8651811015610549576104f3600284610699565b6001036105175761051061050a8883016020015190565b83610556565b9150610530565b61052d826105288984016020015190565b610556565b91505b60019290921c91610542602082610678565b90506104df565b5090931495945050505050565b6000610562838361056b565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105ab57600080fd5b5035919050565b600080604083850312156105c557600080fd5b50508035926020909101359150565b60008083601f8401126105e657600080fd5b50813567ffffffffffffffff8111156105fe57600080fd5b60208301915083602082850101111561061657600080fd5b9250929050565b60008060008060006080868803121561063557600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065a57600080fd5b610666888289016105d4565b96999598509660600135949350505050565b8082018082111561056557634e487b7160e01b600052601160045260246000fd5b6000826106b657634e487b7160e01b600052601260045260246000fd5b50069056" + "code": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c806357e871e71161007157806357e871e71461014c57806361b207e214610155578063a91d8b3d14610182578063d269a03e146101a2578063d761753e146101b5578063ee82ac5e146101e857600080fd5b80630466efc4146100ae5780630e27bc11146100e15780631f578333146100f657806334cdf78d146101095780634ffd344a14610129575b600080fd5b6100ce6100bc366004610598565b60009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100f46100ef3660046105b1565b610208565b005b6100f4610104366004610598565b610330565b6100ce610117366004610598565b60016020526000908152604090205481565b61013c61013736600461061c565b6103de565b60405190151581526020016100d8565b6100ce60005481565b6100ce610163366004610598565b6000908152600160209081526040808320548352600290915290205490565b6100ce610190366004610598565b60026020526000908152604090205481565b61013c6101b036600461061c565b610404565b6101d073deaddeaddeaddeaddeaddeaddeaddeaddeaddead81565b6040516001600160a01b0390911681526020016100d8565b6100ce6101f6366004610598565b60009081526001602052604090205490565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146102705760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c65720060448201526064015b60405180910390fd5b60008054908190036102b65760405162461bcd60e51b815260206004820152600f60248201526e139bdd081a5b9a5d1a585b1a5e9959608a1b6044820152606401610267565b60008181526001602081905260409091208490556102d5908290610677565b60009081558381526002602090815260409182902084905581518381529081018590529081018390527f32eff959e2e8d1609edc4b39ccf75900aa6c1da5719f8432752963fdf008234f9060600160405180910390a1505050565b3373deaddeaddeaddeaddeaddeaddeaddeaddeaddead146103935760405162461bcd60e51b815260206004820152601f60248201527f63616c6c6572206973206e6f74207468652073797374656d2063616c6c6572006044820152606401610267565b600054156103d95760405162461bcd60e51b8152602060048201526013602482015272105b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606401610267565b600055565b6000858152600160205260408120546103fa908686868661040f565b9695505050505050565b60006103fa86868686865b6000858152600260209081526040808320548151601f870184900484028101840190925285825291610462918891849190899089908190840183828082843760009201919091525089925061046d915050565b979650505050505050565b6000838514801561047c575081155b801561048757508251155b15610494575060016104a3565b6104a0858486856104ab565b90505b949350505050565b6000602084516104bb9190610698565b156104c8575060006104a3565b83516000036104d9575060006104a3565b818560005b8651811015610548576104f2600284610698565b6001036105165761050f6105098883016020015190565b83610555565b915061052f565b61052c826105278984016020015190565b610555565b91505b60019290921c91610541602082610677565b90506104de565b5090931495945050505050565b6000610561838361056a565b90505b92915050565b60008260005281602052602060006040600060025afa50602060006020600060025afa505060005192915050565b6000602082840312156105aa57600080fd5b5035919050565b600080604083850312156105c457600080fd5b50508035926020909101359150565b60008083601f8401126105e557600080fd5b50813567ffffffffffffffff8111156105fd57600080fd5b60208301915083602082850101111561061557600080fd5b9250929050565b60008060008060006080868803121561063457600080fd5b8535945060208601359350604086013567ffffffffffffffff81111561065957600080fd5b610665888289016105d3565b96999598509660600135949350505050565b8082018082111561056457634e487b7160e01b600052601160045260246000fd5b6000826106b557634e487b7160e01b600052601260045260246000fd5b50069056" }, { "address": "0x3200000000000000000000000000000000000002",